mpi3mr_cfg_get_dev_pg0(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… mpi3mr_cfg_get_dev_pg0 β€” a Kernel API Manual moment (section 9, bestie)

okay so this is mpi3mr_cfg_get_dev_pg0, and it lives in the Kernel API Manual, section 9. If you're here you're probably deep in mpi3mr driver land, and honestly? iconic of you. πŸŽ€


✨ NAME ✨

mpi3mr_cfg_get_dev_pg0 β€” read current device page0. that's it, that's the whole vibe. it reads page0 for a device. slay. 🌸


πŸ¦‹ SYNOPSIS πŸ¦‹

int mpi3mr_cfg_get_dev_pg0 (struct mpi3mr_ioc *mrioc , u16 *ioc_status ,
struct mpi3_device_page0 *dev_pg0 , u16 pg_sz , u32 form , u32 form_spec
);

πŸ’– ARGUMENTS πŸ’–

  • mrioc β€” your adapter instance reference, aka the whole personality of the controller you're talking to. 🫢
  • ioc_status β€” pointer where the ioc status gets returned. this is gonna matter later, trust. πŸ‘€
  • dev_pg0 β€” pointer to return device page 0. the main character of this function, no cap. πŸ‘‘
  • pg_sz β€” the size of the memory allocated to the page pointer. gotta know how much room you've got, periodt. 🧚
  • form β€” the form to be used for addressing the page. 🌈
  • form_spec β€” form-specific info, like the device handle. iykyk. πŸ’…

πŸ”₯ DESCRIPTION πŸ”₯

okay so this is the handler for a config page read for a specific device page0. lowkey important.

the ioc_status gets the controller-returned ioc status. but β€” and this is the part you cannot skip, bestie β€” this routine doesn't check ioc_status to decide whether the page read was a success or not. it's literally the caller's responsibility. not mine, not yours-if-you're-the-caller... wait, actually yes, yours. πŸ™ˆ

⚠️ don't be out here assuming success just because the function returned. you have to look at ioc_status. the routine will not do the vibe check for you. πŸ’€

⭐ RETURN ⭐

0 on success, non-zero on failure. simple. clean. iconic. ✨


🌸 SEE ALSO 🌸

first up, the kernel file itself: Kernel file ./drivers/scsi/mpi3mr/mpi3mr_fw.c. go read it, it's giving main character energy. πŸ“–

and then the whole extended friend group of functions, in order, exactly as the page lists them β€” don't @ me, there are SO many and they're all here:

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_process_cfg_req(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)

(and yes, mpimr_initialize_reply_sbuf_queues(9) is spelled exactly like that in the source page β€” not my typo, bestie, i would never. πŸ’€)


that's the whole page, mwah. 🫢 this little beauty ships from ./drivers/scsi/mpi3mr, dated October 2026 β€” so go forth, read your page0, and check that ioc_status yourself like the responsible icon you are. πŸ¦‹βœ¨πŸ’œ

πŸ“¦ where this page comes from