lpfc_irq_rebalance(9)
π lpfc_irq_rebalance(9) β like, the Kernel API Manual page, bestie π
okay so this is lpfc_irq_rebalance(9) straight out of the Kernel API Manual, and it's lowkey the most unhinged little function because all it does is⦠shuffle IRQs around when a CPU ghosts you or comes back. iconic behavior honestly.
β¨ NAME β¨
lpfc_irq_rebalance β rebalances IRQ affinity according to cpuhp event π
like yes queen, rearrange the interrupt vibes when the CPU situation changes.
π¦ SYNOPSIS π¦
void lpfc_irq_rebalance (struct lpfc_hba *phba , unsigned int cpu , bool
offline );
that's it. that's the whole signature. no return value, no drama, just vibes and three arguments π
πΈ ARGUMENTS πΈ
phbaβ pointer to HBA context object. your main character struct fr fr, everything hangs off this.cpuβ cpu going offline/online. the CPU in question, the one having a moment.offlineβtrue, cpu is going offline.false, cpu is coming online. literally just a bool telling us which direction this is going π«Ά
π DESCRIPTION π
okay so here's the tea β
If cpu is going offline, we'll try our best effort to find the next online cpu on the phba's original_mask and migrate all offlining IRQ affinities. like, no cap, best effort β we're doing our best, we're not promising miracles, we're finding that next online cpu and moving the interrupt affinities over there. slay.
If cpu is coming online, reaffinitize the IRQ back to the onlining cpu. welcome back bestie, here's your IRQ again β¨
π NOTE π
Call only if NUMA or NHT mode is enabled, otherwise rely on PCI_IRQ_AFFINITY to auto-manage IRQ affinity.
π¨ real talk: do not call this when neither NUMA nor NHT mode is on. in that case, PCI_IRQ_AFFINITY handles the auto-managing and you should just let it cook. periodt.
π₯ SEE ALSO π₯
It's in the kernel file ./drivers/scsi/lpfc/lpfc_init.c and honestly the friend group is HUGE, so buckle up π’ β every single one of these:
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_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_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)
that's the whole squad π and bestie, that's literally the entire page. ok bye, go rebalance those IRQs ππ
π this cutie lives in./drivers/scsi/lpfc, dated October 2026, and it'slpfc_irq_rebalance(9)from the Kernel API Manual. mwah πβ¨
π¦ 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