mpi3mr_process_cfg_req(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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 itself
  • cfg_hdr β€” the configuration page header
  • timeout β€” timeout, in seconds ⏳
  • ioc_status β€” pointer where the ioc status gets returned 🫢
  • cfg_buf β€” memory pointer used to copy the config page or header
  • cfg_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 spelled mpimr_initialize_reply_sbuf_queues(9) in the original β€” like, yes, mpimr, not mpi3mr. 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