lpfc_io_error_detected(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

Okay bestie, welcome to the lpfc_io_error_detected(9) page from the Kernel API Manual β€” manual-name shoutout folded in up top, no copied header line, we love to see it. πŸ’–

πŸ’– NAME πŸ’–

lpfc_io_error_detected β€” the lpfc method for handling PCI I/O error. That’s the whole vibe: PCI I/O error handling, but make it lpfc. 😭πŸ”₯

✨ SYNOPSIS ✨

pci_ers_result_t lpfc_io_error_detected (struct pci_dev *pdev ,
pci_channel_state_t state );

So she takes a struct pci_dev *pdev and a pci_channel_state_t state, and returns a pci_ers_result_t. Obsessed with a clean signature, ngl. πŸ’…

πŸŽ€ ARGUMENTS πŸŽ€

  • pdev β€” pointer to PCI device. Your device bestie, basically. 🫢
  • state β€” the current PCI connection state. Vibe check on the PCI connection, fr fr. πŸ’«

πŸ¦‹ DESCRIPTION πŸ¦‹

This routine is registered to the PCI subsystem for error handling. Like, the PCI subsystem knows to call her when things go sideways. 😭

She gets called by the PCI subsystem after a PCI bus error affecting this device has been detected. So the error already happened β€” now it’s time to handle it. πŸ”₯

When this routine is invoked, it dispatches the action to the proper SLI-3 or SLI-4 device error detected handling routine, and that routine will perform the proper error detected operation. SLI-3 vs SLI-4, she picks the right lane and ate. πŸ’…βœ¨

Return codes:

  • PCI_ERS_RESULT_NEED_RESET β€” need to reset before recovery.
  • PCI_ERS_RESULT_DISCONNECT β€” device could not be recovered.

So yeah: reset before recovery, or disconnect if the device is not recoverable. No cap. πŸ’€

🌈 SEE ALSO 🌈

Kernel file ./drivers/scsi/lpfc/lpfc_init.c β€” the source file bestie. And not me about to list the entire function family reunion, but every single one is here, no skips, iykyk:

lpfc_config_port_prep(9),
lpfc_config_async_cmpl(9),
lpfc_dump_wakeup_param_cmpl(9),
lpfc_update_vport_wwn(9),
lpfc_config_port_post(9),
lpfc_sli4_refresh_params(9),
lpfc_hba_init_link(9),
lpfc_hba_init_link_fc_topology(9),
lpfc_hba_down_link(9),
lpfc_hba_down_prep(9),
lpfc_sli4_free_sp_events(9),
lpfc_hba_free_post_buf(9),
lpfc_hba_clean_txcmplq(9),
lpfc_hba_down_post_s3(9),
lpfc_hba_down_post_s4(9),
lpfc_hba_down_post(9),
lpfc_hb_timeout(9),
lpfc_rrq_timeout(9),
lpfc_hb_mbox_cmpl(9),
lpfc_hb_mxp_handler(9),
lpfc_issue_hb_mbox(9),
lpfc_issue_hb_tmo(9),
lpfc_hb_timeout_handler(9),
lpfc_offline_eratt(9),
lpfc_sli4_offline_eratt(9),
lpfc_handle_deferred_eratt(9),
lpfc_handle_eratt_s3(9),
lpfc_sli4_port_sta_fn_reset(9),
lpfc_handle_eratt_s4(9),
lpfc_handle_eratt(9),
lpfc_handle_latt(9),
lpfc_parse_vpd(9),
lpfc_get_atto_model_desc(9),
lpfc_get_hba_model_desc(9),
lpfc_sli3_post_buffer(9),
lpfc_post_rcv_buf(9),
lpfc_sha_init(9),
lpfc_sha_iterate(9),
lpfc_challenge_key(9),
lpfc_hba_init(9),
lpfc_cleanup(9),
lpfc_stop_vport_timers(9),
__lpfc_sli4_stop_fcf_redisc_wait_timer(9),
lpfc_sli4_stop_fcf_redisc_wait_timer(9),
lpfc_cmf_stop(9),
lpfc_cmf_start(9),
lpfc_stop_hba_timers(9),
lpfc_block_mgmt_io(9),
lpfc_sli4_node_rpi_restore(9),
lpfc_create_expedite_pool(9),
lpfc_destroy_expedite_pool(9),
lpfc_create_multixri_pools(9),
lpfc_destroy_multixri_pools(9),
lpfc_online(9),
lpfc_unblock_mgmt_io(9),
lpfc_offline_prep(9),
lpfc_offline(9),
lpfc_scsi_free(9),
lpfc_io_free(9),
lpfc_sli4_els_sgl_update(9),
lpfc_sli4_nvmet_sgl_update(9),
lpfc_sli4_io_sgl_update(9),
lpfc_new_io_buf(9),
lpfc_vmid_res_alloc(9),
lpfc_create_port(9),
destroy_port(9),
lpfc_get_instance(9),
lpfc_scan_finished(9),
lpfc_host_attrib_init(9),
lpfc_stop_port_s3(9),
lpfc_stop_port_s4(9),
lpfc_stop_port(9),
lpfc_fcf_redisc_wait_start_timer(9),
lpfc_sli4_fcf_redisc_wait_tmo(9),
lpfc_vmid_poll(9),
lpfc_sli4_parse_latt_fault(9),
lpfc_sli4_parse_latt_type(9),
lpfc_sli_port_speed_get(9),
lpfc_sli4_port_speed_parse(9),
lpfc_sli4_async_link_evt(9),
lpfc_async_link_speed_to_read_top(9),
lpfc_cgn_update_stat(9),
lpfc_cgn_update_tstamp(9),
lpfc_cmf_stats_timer(9),
lpfc_calc_cmf_latency(9),
lpfc_cmf_timer(9),
lpfc_sli4_async_fc_evt(9),
lpfc_sli4_async_sli_evt(9),
lpfc_sli4_perform_vport_cvl(9),
lpfc_sli4_perform_all_vport_cvl(9),
lpfc_sli4_async_fip_evt(9),
lpfc_sli4_async_dcbx_evt(9),
lpfc_sli4_async_grp5_evt(9),
lpfc_sli4_async_cmstat_evt(9),
lpfc_cgn_params_val(9),
lpfc_cgn_params_parse(9),
lpfc_sli4_cgn_params_read(9),
lpfc_sli4_cgn_parm_chg_evt(9),
lpfc_sli4_async_event_proc(9),
lpfc_sli4_fcf_redisc_event_proc(9),
lpfc_api_table_setup(9),
lpfc_log_intr_mode(9),
lpfc_enable_pci_dev(9),
lpfc_disable_pci_dev(9),
lpfc_reset_hba(9),
lpfc_sli_sriov_nr_virtfn_get(9),
lpfc_sli_probe_sriov_nr_virtfn(9),
lpfc_setup_driver_resource_phase1(9),
lpfc_sli_driver_resource_setup(9),
lpfc_sli_driver_resource_unset(9),
lpfc_sli4_driver_resource_setup(9),
lpfc_sli4_driver_resource_unset(9),
lpfc_init_api_table_setup(9),
lpfc_setup_driver_resource_phase2(9),
lpfc_unset_driver_resource_phase2(9),
lpfc_free_iocb_list(9),
lpfc_init_iocb_list(9),
lpfc_free_sgl_list(9),
lpfc_free_els_sgl_list(9),
lpfc_free_nvmet_sgl_list(9),
lpfc_init_active_sgl_array(9),
lpfc_free_active_sgl(9),
lpfc_init_sgl_list(9),
lpfc_sli4_init_rpi_hdrs(9),
lpfc_sli4_create_rpi_hdr(9),
lpfc_sli4_remove_rpi_hdrs(9),
lpfc_hba_alloc(9),
lpfc_hba_free(9),
lpfc_setup_fdmi_mask(9),
lpfc_create_shost(9),
lpfc_destroy_shost(9),
lpfc_setup_bg(9),
lpfc_post_init_setup(9),
lpfc_sli_pci_mem_setup(9),
lpfc_sli_pci_mem_unset(9),
lpfc_sli4_post_status_check(9),
lpfc_sli4_bar0_register_memmap(9),
lpfc_sli4_bar1_register_memmap(9),
lpfc_sli4_bar2_register_memmap(9),
lpfc_create_bootstrap_mbox(9),
lpfc_destroy_bootstrap_mbox(9),
lpfc_map_topology(9),
lpfc_sli4_read_config(9),
lpfc_setup_endian_order(9),
lpfc_sli4_queue_verify(9),
lpfc_sli4_queue_create(9),
lpfc_sli4_queue_destroy(9),
lpfc_setup_cq_lookup(9),
lpfc_sli4_queue_setup(9),
lpfc_sli4_queue_unset(9),
lpfc_sli4_cq_event_pool_create(9),
lpfc_sli4_cq_event_pool_destroy(9),
__lpfc_sli4_cq_event_alloc(9),
lpfc_sli4_cq_event_alloc(9),
__lpfc_sli4_cq_event_release(9),
lpfc_sli4_cq_event_release(9),
lpfc_sli4_cq_event_release_all(9),
lpfc_pci_function_reset(9),
lpfc_sli4_pci_mem_setup(9),
lpfc_sli4_pci_mem_unset(9),
lpfc_sli_enable_msix(9),
lpfc_sli_enable_msi(9),
lpfc_sli_enable_intr(9),
lpfc_sli_disable_intr(9),
lpfc_find_cpu_handle(9),
lpfc_find_hyper(9),
lpfc_cpu_map_array_init(9),
lpfc_hba_eq_hdl_array_init(9),
lpfc_cpu_affinity_check(9),
lpfc_cpuhp_get_eq(9),
lpfc_irq_set_aff(9),
lpfc_irq_clear_aff(9),
lpfc_irq_rebalance(9),
lpfc_sli4_enable_msix(9),
lpfc_sli4_enable_msi(9),
lpfc_sli4_enable_intr(9),
lpfc_sli4_disable_intr(9),
lpfc_unset_hba(9),
lpfc_sli4_xri_exchange_busy_wait(9),
lpfc_sli4_hba_unset(9),
__lpfc_reg_congestion_buf(9),
lpfc_get_sli4_parameters(9),
lpfc_pci_probe_one_s3(9),
lpfc_pci_remove_one_s3(9),
lpfc_pci_suspend_one_s3(9),
lpfc_pci_resume_one_s3(9),
lpfc_sli_prep_dev_for_recover(9),
lpfc_sli_prep_dev_for_reset(9),
lpfc_sli_prep_dev_for_perm_failure(9),
lpfc_io_error_detected_s3(9),
lpfc_io_slot_reset_s3(9),
lpfc_io_resume_s3(9),
lpfc_sli4_get_els_iocb_cnt(9),
lpfc_sli4_get_iocb_cnt(9),
lpfc_write_firmware(9),
lpfc_sli4_request_firmware_update(9),
lpfc_pci_probe_one_s4(9),
lpfc_pci_remove_one_s4(9),
lpfc_pci_suspend_one_s4(9),
lpfc_pci_resume_one_s4(9),
lpfc_sli4_prep_dev_for_recover(9),
lpfc_sli4_prep_dev_for_reset(9),
lpfc_sli4_prep_dev_for_perm_failure(9),
lpfc_io_error_detected_s4(9),
lpfc_io_slot_reset_s4(9),
lpfc_io_resume_s4(9),
lpfc_pci_probe_one(9),
lpfc_pci_remove_one(9),
lpfc_pci_suspend_one(9),
lpfc_pci_resume_one(9),
lpfc_io_slot_reset(9),
lpfc_io_resume(9),
lpfc_sli4_oas_verify(9),
lpfc_sli4_ras_init(9),
lpfc_init(9),
lpfc_exit(9)

Signed off from ./drivers/scsi/lpfc with an October 2026 timestamp for lpfc_io_error_detected(9) β€” byeee bestie, go handle those PCI I/O errors with main character energy. πŸ’…πŸŽ€βœ¨

πŸ“¦ where this page comes from