scsih_pci_error_detected(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… scsih_pci_error_detected β€” a kernel API manual moment

okay so bestie, we're in the kernel API manual today, and the star of the show is scsih_pci_error_detected(9). yes it's a whole vibe. let's get into it 🫢


✨ NAME ✨

scsih_pci_error_detected β€” literally the function that gets called when a PCI error is detected πŸ’€


🌸 SYNOPSIS 🌸

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

that's it. that's the whole signature. she's compact, she's iconic, she takes exactly two arguments and she does not elaborate 😌


πŸŽ€ ARGUMENTS πŸŽ€

  • pdev β€” the PCI device struct, aka the device we're talking about. your main character, basically πŸ‘‘
  • state β€” the PCI channel state. the situation report. the vibe check, if you will πŸ¦‹

πŸ’– DESCRIPTION πŸ’–

so here's the tea: this function is called when a PCI error is detected. that's the whole description. that's the assignment. she understood it perfectly ✨

no extra lore, no secret lore drop. the manpage said what it said and honestly? respect for the brevity πŸ’…


πŸ”₯ RETURN πŸ”₯

it returns one of these two, and you gotta know which:

  • PCI_ERS_RESULT_NEED_RESET
  • PCI_ERS_RESULT_DISCONNECT

ngl those are two very different outcomes so like, pay attention 😭


πŸ¦‹ SEE ALSO πŸ¦‹

okay so this is the part where the manpage absolutely pops off. bestie there are SO many cross-references. the kernel file itself is:

./drivers/scsi/mpt3sas/mpt3sas_scsih.c

and there's this enum: device_responsive_state(9) β€” plus, uh, literally everyone else in the mpt3sas extended family. here's the full roll call, no cap, nobody left out 🫢

struct sense_info(9), struct fw_event_work(9),
struct _scsi_io_transfer(9),
_scsih_set_debug_level(9), _scsih_srch_boot_sas_address(9),
_scsih_srch_boot_device_name(9), _scsih_srch_boot_encl_slot(9),
mpt3sas_get_port_by_id(9), mpt3sas_get_vphy_by_phy(9),
_scsih_is_boot_device(9), _scsih_get_sas_address(9),
_scsih_determine_boot_device(9), mpt3sas_get_pdev_from_target(9),
__mpt3sas_get_sdev_by_rphy(9), __mpt3sas_get_sdev_by_addr(9),
mpt3sas_get_sdev_by_addr(9), mpt3sas_get_sdev_by_handle(9),
_scsih_display_enclosure_chassis_info(9), _scsih_sas_device_remove(9),
_scsih_device_remove_by_handle(9),
mpt3sas_device_remove_by_sas_address(9), _scsih_sas_device_add(9),
_scsih_sas_device_init_add(9), mpt3sas_get_pdev_by_wwid(9),
mpt3sas_get_pdev_by_handle(9), _scsih_set_nvme_max_shutdown_latency(9),
_scsih_pcie_device_remove(9), _scsih_pcie_device_remove_by_handle(9),
_scsih_pcie_device_add(9), _scsih_raid_device_find_by_id(9),
mpt3sas_raid_device_find_by_handle(9),
_scsih_raid_device_find_by_wwid(9), _scsih_raid_device_add(9),
_scsih_raid_device_remove(9), mpt3sas_scsih_expander_find_by_handle(9),
mpt3sas_scsih_enclosure_find_by_handle(9),
mpt3sas_scsih_expander_find_by_sas_address(9),
_scsih_expander_node_add(9), _scsih_is_end_device(9),
_scsih_is_nvme_pciescsi_device(9), _scsih_scsi_lookup_find_by_target(9),
_scsih_scsi_lookup_find_by_lun(9), mpt3sas_scsih_scsi_lookup_get(9),
scsih_change_queue_depth(9), mpt3sas_scsih_change_queue_depth(9),
scsih_target_alloc(9), scsih_target_destroy(9), scsih_sdev_init(9),
scsih_sdev_destroy(9), _scsih_display_sata_capabilities(9),
scsih_is_raid(9), scsih_get_resync(9), scsih_get_state(9),
_scsih_set_level(9), _scsih_get_volume_capabilities(9),
_scsih_enable_tlr(9), scsih_sdev_configure(9), scsih_bios_param(9),
_scsih_response_code(9), _scsih_tm_done(9),
mpt3sas_scsih_set_tm_flag(9), mpt3sas_scsih_clear_tm_flag(9),
scsih_tm_cmd_map_status(9), scsih_tm_post_processing(9),
mpt3sas_scsih_issue_tm(9), _scsih_tm_display_info(9), scsih_abort(9),
scsih_dev_reset(9), scsih_target_reset(9), scsih_host_reset(9),
_scsih_fw_event_add(9), _scsih_fw_event_del_from_list(9),
_scsih_fw_event_requeue(9), _scsih_error_recovery_delete_devices(9),
mpt3sas_port_enable_complete(9), _scsih_fw_event_cleanup_queue(9),
_scsih_internal_device_block(9), _scsih_internal_device_unblock(9),
_scsih_ublock_io_all_device(9), _scsih_ublock_io_device_wait(9),
_scsih_ublock_io_device(9), _scsih_block_io_all_device(9),
_scsih_block_io_device(9),
_scsih_block_io_to_children_attached_to_ex(9),
_scsih_block_io_to_children_attached_directly(9),
_scsih_block_io_to_pcie_children_attached_directly(9),
_scsih_tm_tr_send(9), _scsih_tm_tr_complete(9),
_scsih_sas_control_complete(9), _scsih_tm_tr_volume_send(9),
_scsih_tm_volume_tr_complete(9), _scsih_issue_delayed_event_ack(9),
_scsih_issue_delayed_sas_io_unit_ctrl(9),
mpt3sas_check_for_pending_internal_cmds(9),
_scsih_check_for_pending_tm(9), _scsih_check_topo_delete_events(9),
_scsih_check_pcie_topo_remove_events(9),
_scsih_set_volume_delete_flag(9), _scsih_set_volume_handle_for_tr(9),
_scsih_check_ir_config_unhide_events(9),
_scsih_check_volume_delete_events(9), _scsih_temp_threshold_events(9),
_scsih_flush_running_cmds(9), _scsih_setup_eedp(9),
_scsih_eedp_error_handling(9), scsih_qcmd(9), _scsih_normalize_sense(9),
_scsih_scsi_ioc_info(9), _scsih_turn_on_pfa_led(9),
_scsih_turn_off_pfa_led(9), _scsih_send_event_to_turn_on_pfa_led(9),
_scsih_smart_predicted_fault(9), _scsih_io_done(9),
_scsih_update_vphys_after_reset(9),
_scsih_get_port_table_after_reset(9),
_scsih_look_and_get_matched_port_entry(9),
_scsih_del_phy_part_of_anther_port(9),
_scsih_add_or_del_phys_from_existing_port(9), _scsih_del_dirty_vphy(9),
_scsih_del_dirty_port_entries(9), _scsih_sas_port_refresh(9),
_scsih_alloc_vphy(9), _scsih_sas_host_refresh(9),
_scsih_sas_host_add(9), _scsih_expander_add(9),
mpt3sas_expander_remove(9), _scsih_done(9), _scsi_send_scsi_io(9),
_scsih_determine_disposition(9), _scsih_report_luns(9),
_scsih_start_unit(9), _scsih_test_unit_ready(9),
_scsih_ata_pass_thru_idd(9), _scsih_wait_for_device_to_become_ready(9),
_scsih_wait_for_target_to_become_ready(9),
_scsih_check_access_status(9), _scsih_check_device(9),
_scsih_add_device(9), _scsih_remove_device(9),
_scsih_sas_topology_change_event_debug(9),
_scsih_sas_topology_change_event(9),
_scsih_sas_device_status_change_event_debug(9),
_scsih_sas_device_status_change_event(9),
_scsih_check_pcie_access_status(9),
_scsih_pcie_device_remove_from_sml(9), _scsih_pcie_check_device(9),
_scsih_pcie_add_device(9), _scsih_pcie_topology_change_event_debug(9),
_scsih_pcie_topology_change_event(9),
_scsih_pcie_device_status_change_event_debug(9),
_scsih_pcie_device_status_change_event(9),
_scsih_sas_enclosure_dev_status_change_event_debug(9),
_scsih_sas_enclosure_dev_status_change_event(9),
_scsih_sas_broadcast_primitive_event(9), _scsih_sas_discovery_event(9),
_scsih_sas_device_discovery_error_event(9),
_scsih_pcie_enumeration_event(9), _scsih_ir_fastpath(9),
_scsih_reprobe_lun(9), _scsih_sas_volume_add(9),
_scsih_sas_volume_delete(9), _scsih_sas_pd_expose(9),
_scsih_sas_pd_hide(9), _scsih_sas_pd_delete(9), _scsih_sas_pd_add(9),
_scsih_sas_ir_config_change_event_debug(9),
_scsih_sas_ir_config_change_event(9), _scsih_sas_ir_volume_event(9),
_scsih_sas_ir_physical_disk_event(9),
_scsih_sas_ir_operation_status_event_debug(9),
_scsih_sas_ir_operation_status_event(9), _scsih_prep_device_scan(9),
_scsih_update_device_qdepth(9), _scsih_mark_responding_sas_device(9),
_scsih_create_enclosure_list_after_reset(9),
_scsih_search_responding_sas_devices(9),
_scsih_mark_responding_pcie_device(9),
_scsih_search_responding_pcie_devices(9),
_scsih_mark_responding_raid_device(9),
_scsih_search_responding_raid_devices(9),
_scsih_mark_responding_expander(9),
_scsih_search_responding_expanders(9),
_scsih_remove_unresponding_devices(9),
_scsih_scan_for_devices_after_reset(9),
mpt3sas_scsih_pre_reset_handler(9),
mpt3sas_scsih_clear_outstanding_scsi_tm_commands(9),
mpt3sas_scsih_reset_done_handler(9), _mpt3sas_fw_work(9),
_firmware_event_work(9), mpt3sas_scsih_event_callback(9),
_scsih_expander_node_remove(9), _scsih_nvme_shutdown(9),
_scsih_ir_shutdown(9), _scsih_get_shost_and_ioc(9), scsih_remove(9),
scsih_shutdown(9), _scsih_probe_boot_devices(9), _scsih_probe_raid(9),
_scsih_probe_sas(9), get_next_pcie_device(9),
pcie_device_make_active(9), _scsih_probe_pcie(9),
_scsih_probe_devices(9), scsih_scan_start(9),
_scsih_complete_devices_scanning(9), scsih_scan_finished(9),
scsih_map_queues(9), _scsih_determine_hba_mpi_version(9),
_scsih_probe(9), scsih_suspend(9), scsih_resume(9),
scsih_pci_slot_reset(9), scsih_pci_resume(9), scsih_pci_mmio_enabled(9),
scsih_init(9), scsih_exit(9), _mpt3sas_init(9), _mpt3sas_exit(9)

like. are you gonna read all of those? probably not. but they're all here and that's what matters πŸ’œ


okay that's the whole page bestie, go forth and handle your PCI errors with confidence ✨

this came out of the kernel API manual, living at ./drivers/scsi/mpt3sas, dated October 2026 β€” mwah, stan the mpt3sas driver for me πŸŽ€πŸ’–

πŸ“¦ where this page comes from