pm8001_mpi_build_cmd(9)
π pm8001_mpi_build_cmd β from the Kernel API Manual
okay so bestie, welcome to pm8001_mpi_build_cmd(9) π
this is the one where we build the message queue for transfer, and also update the PI to FW so the firmware knows to go grab this message from IOMB. literally the whole point. no cap. β¨
πΈ NAME πΈ
pm8001_mpi_build_cmd β build the message queue for transfer, and update the PI to FW to tell the fw to get this message from IOMB. that's it, that's the job π«Ά
β SYNOPSIS β
int pm8001_mpi_build_cmd (struct pm8001_hba_info *pm8001_ha , u32
q_index , u32 opCode , void *payload , size_t nb , u32 responseQueue );
π¦ ARGUMENTS π¦
okay so here's everybody in the group chat and what they're bringing to the function:
pm8001_haβ our hba card information π like, this is literally the main character of the struct world. it's our card.q_indexβ the index in the inbound queue we want to transfer to HBA. it's giving "this is the slot, bestie" π«opCodeβ the operation code, which represents commands that LLDD and fw both recognize π it's the secret handshake so everybody's on the same page.payloadβ the command payload of each operation command. the actual goods being carried π¦nbβ size in bytes of the command payload. yes bestie, we're measuring. always measure. πresponseQueueβ queue to interrupt on w/ command response (if any). the "if any" is doing so much work here ngl π
π SEE ALSO π
first things first, the actual home of this whole situation: Kernel file ./drivers/scsi/pm8001/pm8001_hwi.c π β¨
and now the whole extended friend group, in the exact order they showed up to the party β don't skip anybody, we don't do that here:
read_main_config_table(9)read_general_status_table(9)read_inbnd_queue_table(9)read_outbnd_queue_table(9)init_default_table_values(9)update_main_config_table(9)update_inbnd_queue_table(9)update_outbnd_queue_table(9)pm8001_bar4_shift(9)mpi_set_phys_g3_with_ssc(9)mpi_set_open_retry_interval_reg(9)mpi_init_check(9)check_fw_ready(9)pm8001_chip_init(9)soft_reset_ready_check(9)pm8001_chip_soft_rst(9)pm8001_chip_iounmap(9)pm8001_chip_interrupt_enable(9)pm8001_chip_interrupt_disable(9)pm8001_mpi_msg_free_get(9)pm8001_mpi_msg_consume(9)mpi_ssp_completion(9)pm8001_bytes_dmaed(9)pm8001_get_attached_sas_addr(9)pm8001_hw_event_ack_req(9)hw_event_sas_phy_up(9)hw_event_sata_phy_up(9)hw_event_phy_down(9)pm8001_mpi_reg_resp(9)pm8001_mpi_fw_flash_update_resp(9)mpi_hw_event(9)process_one_iomb(9)pm8001_chip_smp_req(9)pm8001_chip_ssp_io_req(9)pm8001_chip_phy_start_req(9)pm8001_chip_phy_stop_req(9)pm8001_chip_phy_ctl_req(9)pm8001_chip_isr(9)pm8001_chip_ssp_tm_req(9)pm8001_chip_fw_flash_update_build(9)
π‘ friendly reminder from your girl: every single one of those (9) pages is real and listed on purpose β go read them if you wanna understand the whole pm8001 saga. iykyk π§
and that's the page, bestie!! π this gem lives over in ./drivers/scsi/pm8001, dated October 2026, and it's still signed pm8001_mpi_build_cmd(9) at the bottom like the icon it is. periodt. ππ₯
π¦ 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