ipr_test_msi(9)
π ipr_test_msi β Kernel API Manual π
Okay so, bestie, welcome to the Kernel API Manual β this page is all about ipr_test_msi(9), and honestly? It's giving "small function, big responsibility." π Let's get into it.
β¨ NAME β¨
ipr_test_msi β Test for Message Signaled Interrupt (MSI) support. π
β¨ SYNOPSIS β¨
int ipr_test_msi (struct ipr_ioa_cfg *ioa_cfg , struct pci_dev *pdev );
β¨ ARGUMENTS β¨
ioa_cfgβ the ioa config struct π«Ά literally the whole config situation for the ioa, handed to you.pdevβ the PCI device struct πΈ the PCI device itself, right there in your hands.
β¨ DESCRIPTION β¨
So what does this icon actually do? This routine sets up and initiates a test interrupt π₯ β yes, a whole test interrupt β to determine if the interrupt is received via the ipr_test_intr service routine. It's like sending a little "u up? π" to the hardware and waiting to see if the callback picks up.
And if the test fails? Not the end of the world, bestie β the driver will fall back to LSI. No cap. π
Return value: 0 on success / non-zero on failure. Periodt. β
π¦ SEE ALSO π¦
Kernel file ./drivers/scsi/ipr.c β and okay, the friend group here is huge, so buckle up. Like, the entire ipr extended universe shows up for this one:
ipr_trc_hook(9), ipr_lock_and_done(9), ipr_reinit_ipr_cmnd(9), ipr_init_ipr_cmnd(9), __ipr_get_free_ipr_cmnd(9), ipr_get_free_ipr_cmnd(9), ipr_mask_and_clear_interrupts(9), ipr_save_pcix_cmd_reg(9), ipr_set_pcix_cmd_reg(9), __ipr_scsi_eh_done(9), ipr_scsi_eh_done(9), ipr_fail_all_ops(9), ipr_send_command(9), ipr_do_req(9), ipr_internal_cmd_done(9), ipr_init_ioadl(9), ipr_send_blocking_cmd(9), ipr_send_hcam(9), ipr_init_res_entry(9), ipr_is_same_device(9), __ipr_format_res_path(9), ipr_format_res_path(9).
Still going, because of course we are: ipr_update_res_entry(9), ipr_clear_res_target(9), ipr_handle_config_change(9), ipr_process_ccn(9), strip_whitespace(9), ipr_log_vpd_compact(9), ipr_log_vpd(9), ipr_log_ext_vpd_compact(9), ipr_log_ext_vpd(9), ipr_log_enhanced_cache_error(9), ipr_log_cache_error(9), ipr_log_enhanced_config_error(9), ipr_log_sis64_config_error(9), ipr_log_config_error(9), ipr_log_enhanced_array_error(9), ipr_log_array_error(9), ipr_log_hex_data(9), ipr_log_enhanced_dual_ioa_error(9), ipr_log_dual_ioa_error(9), ipr_log_fabric_path(9), ipr_log64_fabric_path(9), ipr_log_path_elem(9), ipr_log64_path_elem(9), ipr_log_fabric_error(9), ipr_log_sis64_array_error(9), ipr_log_sis64_fabric_error(9), ipr_log_sis64_service_required_error(9), ipr_log_generic_error(9), ipr_log_sis64_device_error(9).
The error-path girlies: ipr_get_error(9), ipr_handle_log_data(9), ipr_process_error(9), ipr_timeout(9), ipr_oper_timeout(9), ipr_find_ses_entry(9), ipr_get_max_scsi_speed(9), ipr_wait_iodbg_ack(9). Then the dump squad π«Ά β ipr_get_sis64_dump_data_section(9), ipr_get_ldump_data_section(9), ipr_sdt_copy(9), ipr_init_dump_entry_hdr(9), ipr_dump_ioa_type_data(9), ipr_dump_version_data(9), ipr_dump_trace_data(9), ipr_dump_location_data(9), ipr_get_ioa_dump(9), ipr_release_dump(9).
Sysfs-adjacent icons, lowkey iconic: ipr_worker_thread(9), ipr_read_trace(9), ipr_show_fw_version(9), ipr_show_log_level(9), ipr_store_log_level(9), ipr_store_diagnostics(9), ipr_show_adapter_state(9), ipr_store_adapter_state(9), ipr_store_reset_adapter(9), ipr_store_iopoll_weight(9). Microcode crew β¨ β ipr_alloc_ucode_buffer(9), ipr_free_ucode_buffer(9), ipr_copy_ucode_buffer(9), ipr_build_ucode_ioadl64(9), ipr_build_ucode_ioadl(9), ipr_update_ioa_ucode(9), ipr_store_update_fw(9), ipr_show_fw_type(9), ipr_read_dump(9), ipr_alloc_dump(9), ipr_free_dump(9), ipr_write_dump(9), ipr_change_queue_depth(9), ipr_show_adapter_handle(9), ipr_show_resource_path(9), ipr_show_device_id(9), ipr_show_resource_type(9), ipr_show_raw_mode(9), ipr_store_raw_mode(9).
The SCSI device part of the group chat: ipr_biosparam(9), ipr_find_starget(9), ipr_target_destroy(9), ipr_find_sdev(9), ipr_sdev_destroy(9), ipr_sdev_configure(9), ipr_sdev_init(9), ipr_match_lun(9), ipr_cmnd_is_free(9), ipr_wait_for_ops(9), ipr_device_reset(9), __ipr_eh_dev_reset(9), ipr_bus_reset_done(9), ipr_abort_timeout(9), ipr_cancel_op(9), ipr_scan_finished(9), ipr_eh_abort(9).
Interrupt main characters β‘ ipr_handle_other_interrupt(9), ipr_isr_eh(9), ipr_isr(9), ipr_isr_mhrrq(9), ipr_build_ioadl64(9), ipr_build_ioadl(9), __ipr_erp_done(9), ipr_erp_done(9), ipr_reinit_ipr_cmnd_for_erp(9), __ipr_erp_request_sense(9), ipr_erp_request_sense(9), ipr_erp_cancel_all(9), ipr_dump_ioasa(9), ipr_gen_sense(9), ipr_get_autosense(9), ipr_erp_start(9), ipr_scsi_done(9), ipr_queuecommand(9), ipr_ioa_info(9).
Bringdown/reset besties: ipr_ioa_bringdown_done(9), ipr_ioa_reset_done(9), ipr_set_sup_dev_dflt(9), ipr_set_supported_devs(9), ipr_get_mode_page(9), ipr_check_term_power(9), ipr_scsi_bus_speed_limit(9), ipr_modify_ioafp_mode_page_28(9), ipr_build_mode_select(9), ipr_ioafp_mode_select_page28(9), ipr_build_mode_sense(9), ipr_reset_cmd_failed(9), ipr_reset_mode_sense_failed(9), ipr_ioafp_mode_sense_page28(9), ipr_ioafp_mode_select_page24(9), ipr_reset_mode_sense_page24_failed(9), ipr_ioafp_mode_sense_page24(9), ipr_init_res_table(9).
Mode page / inquiry legends π β ipr_ioafp_query_ioa_cfg(9), ipr_ioafp_set_caching_parameters(9), ipr_ioafp_inquiry(9), ipr_inquiry_page_supported(9), ipr_ioafp_pageC4_inquiry(9), ipr_ioafp_cap_inquiry(9), ipr_ioafp_page3_inquiry(9), ipr_ioafp_page0_inquiry(9), ipr_ioafp_std_inquiry(9), ipr_ioafp_identify_hrrq(9).
The reset cinematic universe, part one: ipr_reset_timer_done(9), ipr_reset_start_timer(9), ipr_init_ioa_mem(9), ipr_reset_next_stage(9), ipr_reset_enable_ioa(9), ipr_reset_wait_for_dump(9), ipr_unit_check_no_data(9), ipr_get_unit_check_buffer(9), ipr_reset_get_unit_check_job(9), ipr_set_affinity_nobalance(9), ipr_reset_restore_cfg_space(9), ipr_reset_bist_done(9), ipr_reset_start_bist(9), ipr_reset_slot_reset_done(9), ipr_reset_reset_work(9), ipr_reset_slot_reset(9), ipr_reset_block_config_access_wait(9), ipr_reset_block_config_access(9), ipr_reset_allowed(9), ipr_reset_wait_to_start_bist(9), ipr_reset_alert(9).
Part two, because there are so many: ipr_reset_quiesce_done(9), ipr_reset_cancel_hcam_done(9), ipr_reset_cancel_hcam(9), ipr_reset_ucode_download_done(9), ipr_reset_ucode_download(9), ipr_reset_shutdown_ioa(9), ipr_reset_ioa_job(9), _ipr_initiate_ioa_reset(9), ipr_initiate_ioa_reset(9), ipr_reset_freeze(9), ipr_pci_mmio_enabled(9), ipr_pci_frozen(9), ipr_pci_slot_reset(9), ipr_pci_perm_failure(9), ipr_pci_error_detected(9), ipr_probe_ioa_part2(9).
Teardown & bring-up squad π§ β ipr_free_cmd_blks(9), ipr_free_mem(9), ipr_free_irqs(9), ipr_free_all_resources(9), ipr_alloc_cmd_blks(9), ipr_alloc_mem(9), ipr_initialize_bus_attr(9), ipr_init_regs(9), ipr_init_ioa_cfg(9), ipr_get_chip_info(9), ipr_wait_for_pci_err_recovery(9), ipr_test_intr(9), ipr_initiate_ioa_bringdown(9).
And finally, the whole module lifecycle, no notes π: __ipr_remove(9), ipr_remove(9), ipr_probe(9), ipr_shutdown(9), ipr_halt_done(9), ipr_halt(9), ipr_init(9), ipr_exit(9).
And that's the page, bestie! π Cute little sign-off from the source: this one lives under the ./drivers/scsi directory, dated October 2026, and it's filed as ipr_test_msi(9). Go forth and test those interrupts. π
π¦ 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