lpfc_pci_probe_one(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… lpfc_pci_probe_one(9) β€” like, the whole Kernel API Manual moment ✨

okay so bestie, buckle up β€” this is lpfc_pci_probe_one, straight out of the Kernel API Manual, and it's genuinely the main character of getting an Emulex HBA noticed by your kernel. no cap. πŸŽ€


✨ NAME ✨

lpfc_pci_probe_one β€” the lpfc PCI probe func that registers the device with the PCI subsystem, iykyk πŸ¦‹


🌸 SYNOPSIS 🌸

int lpfc_pci_probe_one (struct pci_dev *pdev , const struct
       pci_device_id *pid );

literally just that. two args, one int coming back at you. periodt. πŸ’…


🫢 ARGUMENTS 🫢

  • pdev β€” pointer to PCI device πŸ’– (yes, the actual device, she's the whole point)
  • pid β€” pointer to PCI device identifier ⭐ (the little ID card the device shows at the door)

🌈 DESCRIPTION 🌈

okay so here's the vibe: this routine is to be registered to the kernel's PCI subsystem. think of it as dropping your number in the group chat so the kernel knows who to text. πŸ“±

When an Emulex HBA device shows up on the PCI bus, the kernel PCI subsystem looks at the PCI device-specific information of the device and the driver to see if the driver states that it can support this kind of device. it's giving vibe check, but for hardware. πŸ‘‘

If the match is successful β€” slay β€” the driver core invokes this routine. πŸ’«

And then this routine dispatches the action to the proper SLI-3 or SLI-4 device probing routine, which will do all the initialization that it needs to do to handle the HBA device properly. no shortcuts, she does the full routine. ✨

Return code 0 β€” driver can claim the device. negative value β€” driver can not claim the device. 😭 that's the whole verdict, bestie, don't overthink it.

πŸ”₯ SEE ALSO πŸ”₯

Kernel file ./drivers/scsi/lpfc/lpfc_init.c β€” and honestly, the entire extended family shows up here. like, everyone. no skips, no "and friends", I'm giving you the whole list fr fr: 🧚

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_remove_one(9),
lpfc_pci_suspend_one(9), lpfc_pci_resume_one(9),
lpfc_io_error_detected(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)

she ate and left absolutely no crumbs. πŸ’€πŸ“


and that's the page, bestie!! 🫢 this little icon lives in ./drivers/scsi/lpfc, and it's dated October 2026 β€” so yeah, future girl summer. go read your kernel source, ily, bye!! πŸŒΈβœ¨πŸ’œ

πŸ“¦ where this page comes from