mpt3sas_bas...unit_control(9)
π¦ mpt3sas_bas...unit_control(9) π¦
okay so this page lives in the Kernel API Manual, section 9, and it is genuinely one of those "we're talking straight to the firmware now" moments. bestie, we are going in π
β¨ NAME β¨
mpt3sas_base_sas_iounit_control β send sas iounit control to FW
π SYNOPSIS π
int mpt3sas_base_sas_iounit_control (struct MPT3SAS_ADAPTER *ioc ,
Mpi2SasIoUnitControlReply_t *mpi_reply , Mpi2SasIoUnitControlRequest_t
*mpi_request );
π ARGUMENTS π
iocβ per adapter object. one of these per adapter, it's basically the controller's whole identity π«Άmpi_replyβ the reply payload from FW. this is where firmware's answer landsmpi_requestβ the request payload sent to FW. and this is the thing you're firing off at it β
πΈ DESCRIPTION πΈ
so the SAS IO Unit Control Request message is your all-access pass to the low-level stuff π it lets the host perform low-level operations β think resets on the PHYs of the IO Unit.
it also lets the host obtain the IOC assigned device handles for a device, as long as it's got some other identifying information about that device π
and on top of all of that, it also lets the host remove the IOC resources associated with the device. three whole powers in one message, iconic.
β RETURN β
0 for success, non-zero for failure. that's the whole vibe check, no cap π«Ά
π₯ SEE ALSO π₯
first up, the actual home of this thing:
Kernel file ./drivers/scsi/mpt3sas/mpt3sas_base.c
and now the extended fam, in exactly the order the page hands them to you, zero edits, zero skipping β yes it's long, yes we're doing all of them π
mpt3sas_base_check_cmd_timeout(9)_scsih_set_fwfault_debug(9)_base_readl_aero(9)_base_clone_reply_to_sys_mem(9)_base_clone_mpi_to_sys_mem(9)_base_clone_to_sys_mem(9)_base_get_chain(9)_base_get_chain_phys(9)_base_get_buffer_bar0(9)_base_get_buffer_phys_bar0(9)_base_get_chain_buffer_dma_to_chain_buffer(9)_clone_sg_entries(9)mpt3sas_remove_dead_ioc_func(9)_base_sync_drv_fw_timestamp(9)_base_fault_reset_work(9)mpt3sas_base_start_watchdog(9)mpt3sas_base_stop_watchdog(9)mpt3sas_base_fault_info(9)mpt3sas_base_coredump_info(9)mpt3sas_base_wait_for_coredump_completion(9)mpt3sas_halt_firmware(9)_base_sas_ioc_info(9)_base_display_event_data(9)_base_sas_log_info(9)_base_display_reply_info(9)mpt3sas_base_done(9)_base_async_event(9)_base_get_cb_idx(9)mpt3sas_base_pause_mq_polling(9)mpt3sas_base_resume_mq_polling(9)mpt3sas_base_mask_interrupts(9)mpt3sas_base_unmask_interrupts(9)_base_process_reply_queue(9)mpt3sas_blk_mq_poll(9)_base_interrupt(9)_base_irqpoll(9)_base_init_irqpolls(9)_base_is_controller_msix_enabled(9)mpt3sas_base_sync_reply_irqs(9)mpt3sas_base_release_callback_handler(9)mpt3sas_base_register_callback_handler(9)mpt3sas_base_initialize_callback_handler(9)_base_build_zero_len_sge(9)_base_add_sg_single_32(9)_base_add_sg_single_64(9)_base_get_chain_buffer_tracker(9)_base_build_sg(9)_base_build_nvme_prp(9)base_make_prp_nvme(9)_base_check_pcie_native_sgl(9)_base_add_sg_single_ieee(9)_base_build_zero_len_sge_ieee(9)_base_build_sg_scmd(9)_base_build_sg_scmd_ieee(9)_base_build_sg_ieee(9)_base_config_dma_addressing(9)_base_check_enable_msix(9)mpt3sas_base_free_irq(9)_base_request_irq(9)_base_assign_reply_queues(9)_base_check_and_enable_high_iops_queues(9)mpt3sas_base_disable_msix(9)_base_alloc_irq_vectors(9)_base_enable_msix(9)mpt3sas_base_unmap_resources(9)mpt3sas_base_check_for_fault_and_issue_reset(9)mpt3sas_base_map_resources(9)mpt3sas_base_get_msg_frame(9)mpt3sas_base_get_sense_buffer(9)mpt3sas_base_get_sense_buffer_dma(9)mpt3sas_base_get_pcie_sgl(9)mpt3sas_base_get_pcie_sgl_dma(9)mpt3sas_base_get_reply_virt_addr(9)_base_get_msix_index(9)_base_get_high_iops_msix_index(9)mpt3sas_base_get_smid(9)mpt3sas_base_get_smid_scsiio(9)mpt3sas_base_get_smid_hpr(9)mpt3sas_base_free_smid(9)_base_mpi_ep_writeq(9)_base_writeq(9)_base_set_and_get_msix_index(9)_base_put_smid_mpi_ep_scsi_io(9)_base_put_smid_scsi_io(9)_base_put_smid_fast_path(9)_base_put_smid_hi_priority(9)mpt3sas_base_put_smid_nvme_encap(9)_base_put_smid_default(9)_base_put_smid_scsi_io_atomic(9)_base_put_smid_fast_path_atomic(9)_base_put_smid_hi_priority_atomic(9)_base_put_smid_default_atomic(9)_base_display_OEMs_branding(9)_base_display_fwpkg_version(9)_base_display_ioc_capabilities(9)mpt3sas_base_update_missing_delay(9)_base_update_ioc_page1_inlinewith_perf_mode(9)_base_get_event_diag_triggers(9)_base_get_scsi_diag_triggers(9)_base_get_mpi_diag_triggers(9)_base_get_master_diag_triggers(9)_base_check_for_trigger_pages_support(9)_base_get_diag_triggers(9)_base_update_diag_trigger_pages(9)_base_assign_fw_reported_qd(9)mpt3sas_atto_validate_nvram(9)mpt3sas_atto_get_sas_addr(9)mpt3sas_atto_init(9)_base_static_config_pages(9)mpt3sas_free_enclosure_list(9)_base_release_memory_pools(9)mpt3sas_check_same_4gb_region(9)_base_reduce_hba_queue_depth(9)_base_allocate_pcie_sgl_pool(9)_base_allocate_chain_dma_pool(9)_base_allocate_sense_dma_pool(9)_base_allocate_reply_pool(9)_base_allocate_reply_free_dma_pool(9)_base_allocate_reply_post_free_array(9)base_alloc_rdpq_dma_pool(9)_base_allocate_memory_pools(9)mpt3sas_base_get_iocstate(9)_base_wait_on_iocstate(9)_base_dump_reg_set(9)_base_wait_for_doorbell_int(9)_base_wait_for_doorbell_ack(9)_base_wait_for_doorbell_not_used(9)_base_send_ioc_reset(9)mpt3sas_wait_for_ioc(9)_base_handshake_req_reply_wait(9)mpt3sas_base_scsi_enclosure_processor(9)_base_get_port_facts(9)_base_wait_for_iocstate(9)_base_get_ioc_facts(9)_base_send_ioc_init(9)mpt3sas_port_enable_done(9)_base_send_port_enable(9)mpt3sas_port_enable(9)_base_determine_wait_on_discovery(9)_base_unmask_events(9)_base_event_notification(9)mpt3sas_base_validate_event_type(9)mpt3sas_base_unlock_and_get_host_diagnostic(9)mpt3sas_base_lock_host_diagnostic(9)_base_diag_reset(9)mpt3sas_base_make_ioc_ready(9)_base_make_ioc_operational(9)mpt3sas_base_free_resources(9)mpt3sas_base_attach(9)mpt3sas_base_detach(9)_base_pre_reset_handler(9)_base_clear_outstanding_mpt_commands(9)_base_clear_outstanding_commands(9)_base_reset_done_handler(9)mpt3sas_wait_for_commands_to_complete(9)_base_check_ioc_facts_changes(9)mpt3sas_base_hard_reset_handler(9)
π«Ά tiny heads up:_base_wait_for_iocstate(9)genuinely shows up twice in that list β that's just how the page gives it to us, so we're keeping both, don't come for me π (and don't confuse her with_base_wait_on_iocstate(9), they are two different girlies β¨)
and that's the whole thing!! slay π this page comes to you from ./drivers/scsi/mpt3sas, dated October 2026 β go forth and control that IO unit responsibly, bestie π
π¦ 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