mpi3mr_process_cfg_req(9)
π mpi3mr_process_cfg_req β config page request processor π
okay so bestie, this is a page from the Kernel API Manual (section 9, iykyk) and honestly? it's kind of a baddie. it's all about mpi3mr_process_cfg_req, the config page request processor. let's get into it π
πΈ SYNOPSIS πΈ
int mpi3mr_process_cfg_req (struct mpi3mr_ioc *mrioc , struct
mpi3_config_request *cfg_req , struct mpi3_config_page_header *cfg_hdr ,
int timeout , u16 *ioc_status , void *cfg_buf , u32 cfg_buf_sz );
like, write it exactly like that, no cap. β¨
π¦ ARGUMENTS π¦
mriocβ the adapter instance reference, aka which controller we're talking to πcfg_reqβ the configuration request itselfcfg_hdrβ the configuration page headertimeoutβ timeout, in seconds β³ioc_statusβ pointer where the ioc status gets returned π«Άcfg_bufβ memory pointer used to copy the config page or headercfg_buf_szβ size of the memory you get for the config page or header
β¨ DESCRIPTION β¨
so this function is the handler for config page read, write, and config page header read operations. that's its whole main character thing π
it expects cfg_req to already be populated β and like, specifically:
- with page type, page number, and the action for the header read
- and with page address for all the other operations
cfg_hdr can be passed as null when you just wanna read the required header details. but for read/write pages? highkey, cfg_hdr needs to point at a valid configuration page header. no shortcuts there π«
then it allocates dmaable memory based on the size of the config buffer and sets the SGE of the cfg_req. iconic behavior honestly.
for write actions, the config page data has to be passed in cfg_buf, and the size of that data has to be mentioned in cfg_buf_sz. periodt. π
for read/header actions β on successful completion of the request with a successful ioc_status β the data gets copied into cfg_buf, limited to a minimum of the actual page size and cfg_buf_sz. so whichever is smaller, bestie π
β RETURN β
0 on success, non-zero on failure. that's it, that's the vibe. π
π SEE ALSO π
Kernel file ./drivers/scsi/mpi3mr/mpi3mr_fw.c β plus the whole friend group, and yes, we're listing every single one because nobody gets left out at this sleepover:
mpi3mr_get_reply_desc(9), mpi3mr_process_op_reply_q(9), mpi3mr_blk_mq_poll(9), mpi3mr_isr_poll(9), mpi3mr_request_irq(9), mpi3mr_setup_isr(9), mpi3mr_reset_rc_name(9), mpi3mr_reset_type_name(9), mpi3mr_is_fault_recoverable(9), mpi3mr_print_fault_info(9), mpi3mr_save_fault_info(9), mpi3mr_get_iocstate(9), mpi3mr_free_ioctl_dma_memory(9), mpi3mr_alloc_ioctl_dma_memory(9), mpi3mr_fault_uevent_emit(9), mpi3mr_clear_reset_history(9), mpi3mr_issue_and_process_mur(9), mpi3mr_revalidate_factsdata(9), mpi3mr_bring_ioc_ready(9), mpi3mr_soft_reset_success(9), mpi3mr_diagfault_success(9), mpi3mr_set_diagsave(9), mpi3mr_issue_reset(9), mpi3mr_admin_request_post(9), mpi3mr_free_op_req_q_segments(9), mpi3mr_free_op_reply_q_segments(9), mpi3mr_delete_op_reply_q(9), mpi3mr_alloc_op_reply_q_segments(9), mpi3mr_alloc_op_req_q_segments(9), mpi3mr_create_op_reply_q(9), mpi3mr_create_op_req_q(9), mpi3mr_create_op_queues(9), mpi3mr_op_request_post(9), mpi3mr_check_rh_fault_ioc(9), mpi3mr_sync_timestamp(9), mpi3mr_print_pkg_ver(9), mpi3mr_watchdog_work(9), mpi3mr_start_watchdog(9), mpi3mr_stop_watchdog(9), mpi3mr_setup_admin_qpair(9), mpi3mr_issue_iocfacts(9), mpi3mr_check_reset_dma_mask(9), mpi3mr_process_factsdata(9), mpi3mr_alloc_reply_sense_bufs(9), mpimr_initialize_reply_sbuf_queues(9), mpi3mr_issue_iocinit(9), mpi3mr_unmask_events(9), mpi3mr_issue_event_notification(9), mpi3mr_process_event_ack(9), mpi3mr_alloc_chain_bufs(9), mpi3mr_port_enable_complete(9), mpi3mr_issue_port_enable(9), mpi3mr_repost_diag_bufs(9), mpi3mr_read_tsu_interval(9), mpi3mr_print_ioc_info(9), mpi3mr_cleanup_resources(9), mpi3mr_setup_resources(9), mpi3mr_enable_events(9), mpi3mr_init_ioc(9), mpi3mr_reinit_ioc(9), mpi3mr_memset_op_reply_q_buffers(9), mpi3mr_memset_op_req_q_buffers(9), mpi3mr_memset_buffers(9), mpi3mr_free_mem(9), mpi3mr_issue_ioc_shutdown(9), mpi3mr_cleanup_ioc(9), mpi3mr_drv_cmd_comp_reset(9), mpi3mr_flush_drv_cmds(9), mpi3mr_pel_wait_post(9), mpi3mr_pel_get_seqnum_post(9), mpi3mr_pel_wait_complete(9), mpi3mr_pel_get_seqnum_complete(9), mpi3mr_check_op_admin_proc(9), mpi3mr_soft_reset_handler(9), mpi3mr_post_cfg_req(9), mpi3mr_cfg_get_dev_pg0(9), mpi3mr_cfg_get_sas_phy_pg0(9), mpi3mr_cfg_get_sas_phy_pg1(9), mpi3mr_cfg_get_sas_exp_pg0(9), mpi3mr_cfg_get_sas_exp_pg1(9), mpi3mr_cfg_get_enclosure_pg0(9), mpi3mr_cfg_get_sas_io_unit_pg0(9), mpi3mr_cfg_get_sas_io_unit_pg1(9), mpi3mr_cfg_set_sas_io_unit_pg1(9), mpi3mr_cfg_get_driver_pg1(9), mpi3mr_cfg_get_driver_pg2(9)
quick note bestie: that one entry is literally spelledmpimr_initialize_reply_sbuf_queues(9)in the original β like, yes,mpimr, notmpi3mr. it's giving typo but we do NOT fix it, we preserve it π slay for accuracy.
π§ cute little sign-off π§
and that's the whole page, bestie!! it lives in ./drivers/scsi/mpi3mr, the version on this one is dated October 2026, and it's filed under the Kernel API Manual, section 9. take care of her πβ¨π
π¦ 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