ipr_reset_wa...o_start_bist(9)
β¨ ipr_reset_wait_to_start_bist(9) β¨
okay bestie, welcome to the Kernel API Manual, section 9 β yes we're in the kernel docs, put your hair up, we're getting technical π
πΈ NAME πΈ
ipr_reset_wait_to_start_bist β lowkey just sitting there waiting for permission to reset the IOA π«Ά
π¦ SYNOPSIS π¦
int ipr_reset_wait_to_start_bist (struct ipr_cmnd *ipr_cmd );
π ARGUMENTS π
ipr_cmdβ the ipr command struct. that's it, that's the whole vibe β¨
π DESCRIPTION π
okay so here's the tea β β this function waits for the adapter to give permission to run BIST, and then it runs BIST. periodt.
but here's where it gets a little dramatic π if the adapter does not give permission after a reasonable time, we will reset the adapter anyway. no cap. and the impact of resetting the adapter without warning the adapter is β and I need you to sit down for this β the risk of losing the persistent error log on the adapter π
and it gets worse bestie π if the adapter is reset while it is writing to the flash on the adapter, the flash segment will have bad ECC and be zeroed. not iconic. not slay. we do not want that.
fr fr, those two consequences are the whole reason this wait exists β quote them back to anyone who asks why we're sitting here being patient π§
Return value: IPR_RC_JOB_CONTINUE / IPR_RC_JOB_RETURN β yeah, one of those two, bestie β
π₯ SEE ALSO π₯
the main character of this whole story lives right here in the Kernel file ./drivers/scsi/ipr.c, and honestly the supporting cast is huge π
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)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)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)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)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)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)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)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)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)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)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_alert(9)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)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_test_msi(9)ipr_initiate_ioa_bringdown(9)__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)
like, that's the whole friend group, iykyk π anyway that's the page! huge shoutout to the source over at ./drivers/scsi and to October 2026 for the timestamp β mwah, bye bestie, go wait for permission responsibly ππ
π¦ 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