lpfc_check_pci_resettable(9)
β¨ lpfc_check_pci_resettable β¨
okay so this is a page straight out of the Kernel API Manual (that's the manual name btw, in case you were wondering π
) and it's all about one lil function called lpfc_check_pci_resettable. buckle up bestie, it's a vibe check for your PCI bus π¦
π NAME π
lpfc_check_pci_resettable β walks the list of devices on the pci_dev's bus to check if issuing a pci_bus_reset is possibly unsafe
like, it's literally going door to door on the bus asking "hey are you gonna be chill if we reset" π
πΈ SYNOPSIS πΈ
int lpfc_check_pci_resettable (struct lpfc_hba *phba );
one function, one argument, no cap π₯
π ARGUMENTS π
phbaβ anlpfc_hbapointer. that's it. that's the whole argument. she's low maintenance β¨
π«Ά DESCRIPTION π«Ά
so what does it actually do? it walks the bus_list to make sure of three things, and honestly the way it's so picky is iconic π
- only PCI devices with Emulex vendor id are allowed on the bus, no randos π
- the device ids have to be ones that support hot reset
- and there can be only one occurrence of function
0β one, singular, don't test her π
if all of that checks out, then a pci_bus_reset is possibly not unsafe. "possibly" is doing a lot of work in that sentence ngl, but that's what the page says so that's what we're saying π§
β RETURN β
-EBADSLTβ detected invalid device0- successful
so like, you either get the success vibe or you get -EBADSLT because device 0 was out of pocket π
π¦ SEE ALSO π¦
first up, the kernel file this lives near:
./drivers/scsi/lpfc/lpfc_scsi.c
and now the entire friend group β literally everyone in lpfc_scsi, no one got left out π«Ά
lpfc_sli4_set_rsp_sgl_last(9),lpfc_rampdown_queue_depth(9),lpfc_ramp_down_queue_handler(9),lpfc_scsi_dev_block(9),lpfc_new_scsi_buf_s3(9)lpfc_sli4_vport_delete_fcp_xri_aborted(9),lpfc_sli4_io_xri_aborted(9),lpfc_get_scsi_buf_s3(9),lpfc_get_scsi_buf_s4(9),lpfc_get_scsi_buf(9)lpfc_release_scsi_buf_s3(9),lpfc_release_scsi_buf_s4(9),lpfc_release_scsi_buf(9),lpfc_fcpcmd_to_iocb(9),lpfc_scsi_prep_dma_buf_s3(9)lpfc_bg_err_inject(9),lpfc_sc_to_bg_opcodes(9),lpfc_bg_err_opcodes(9),lpfc_bg_setup_bpl(9),lpfc_bg_setup_bpl_prot(9)lpfc_bg_setup_sgl(9),lpfc_bg_setup_sgl_prot(9),lpfc_prot_group_type(9),lpfc_bg_scsi_adjust_dl(9),lpfc_bg_scsi_prep_dma_buf_s3(9)lpfc_scsi_prep_dma_buf_s4(9),lpfc_bg_scsi_prep_dma_buf_s4(9),lpfc_scsi_prep_dma_buf(9),lpfc_bg_scsi_prep_dma_buf(9),lpfc_scsi_prep_cmnd_buf(9)lpfc_send_scsi_error_event(9),lpfc_scsi_unprep_dma_buf(9),lpfc_unblock_requests(9),lpfc_block_requests(9),lpfc_update_cmf_cmpl(9)lpfc_update_cmf_cmd(9),lpfc_handle_fcp_err(9),lpfc_fcp_io_cmd_wqe_cmpl(9),lpfc_scsi_cmd_iocb_cmpl(9),lpfc_scsi_prep_cmnd_buf_s3(9)lpfc_scsi_prep_cmnd_buf_s4(9),lpfc_scsi_prep_cmnd(9),lpfc_scsi_prep_task_mgmt_cmd_s3(9),lpfc_scsi_prep_task_mgmt_cmd_s4(9),lpfc_scsi_api_table_setup(9)lpfc_tskmgmt_def_cmpl(9),lpfc_info(9),lpfc_poll_rearm_timer(9),lpfc_poll_start_timer(9),lpfc_poll_timeout(9)lpfc_queuecommand(9),lpfc_abort_handler(9),lpfc_check_fcp_rsp(9),lpfc_send_taskmgmt(9),lpfc_chk_tgt_mapped(9)lpfc_reset_flush_io_context(9),lpfc_device_reset_handler(9),lpfc_target_reset_handler(9),lpfc_host_reset_handler(9),lpfc_sdev_init(9)lpfc_sdev_configure(9),lpfc_sdev_destroy(9),lpfc_create_device_data(9),lpfc_delete_device_data(9),__lpfc_get_device_data(9)lpfc_find_next_oas_lun(9),lpfc_enable_oas_lun(9),lpfc_disable_oas_lun(9)
fr fr go read those if you want the full lore, this one function is just the entry point to a whole saga π
π the sign-off π
this page lives in ./drivers/scsi/lpfc, and the version stamp on it is October 2026 β so like, mark your calendar bestie ποΈβ¨
anyway that's the whole page, lpfc_check_pci_resettable(9) explained, no details harmed in the making of this rewrite. slay, go reset some buses (responsibly) π
π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms