pm8001_get_a...hed_sas_addr(9)
π pm8001_get_attached_sas_addr(9) β the kernel API manual, bestie edition π
okay so before we even start: this page lives in the Kernel API Manual, section 9, and the function's full government name is pm8001_get_attached_sas_addr. it's a whole mouthful, i know. buckle up π¦
β¨ NAME β¨
pm8001_get_attached_sas_addr β literally just extract/generate attached SAS address. that's the whole vibe. π
πΈ SYNOPSIS πΈ
void pm8001_get_attached_sas_addr (struct pm8001_phy *phy , u8 *sas_addr );
no cap, that's it. returns void, so likeβ¦ it doesn't hand you anything back, it just does the thing. girlboss behavior π«Ά
π ARGUMENTS π
phyβ pointer toasd_phy. yes bestie, that's what it says. we don't question it, we just pass the pointer. π§sas_addrβ pointer to the buffer where the SAS address is gonna be written. this is the destination, the main character slot β¨
π₯ DESCRIPTION π₯
so what this function actually does: it extracts the SAS address from an IDENTIFY frame that's been received. iconic. π
but here's the plot twist β if OOB is SATA, then a SAS address gets generated from the HA tables instead of being pulled out of a frame. so it's giving "extract or generate," depending on the situation. iykyk π
LOCKING (read this, fr fr): the frame_rcvd_lock needs to be held while you're in here, because this parses the frame buffer. not optional, not a suggestion, not a "we'll fix it later." hold the lock or things get messy π π
π SEE ALSO π
the kernel file where all this lives, in all its glory:
./drivers/scsi/pm8001/pm8001_hwi.c
and the whole friend group of related functions β every single one, because we don't leave anyone out π:
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_build_cmd(9)pm8001_mpi_msg_consume(9)mpi_ssp_completion(9)pm8001_bytes_dmaed(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)
that's the whole page, bestie, you ate it up π
and yes β the source path is ./drivers/scsi/pm8001, the date on this lil masterpiece is October 2026, and it's filed under pm8001_get_a...hed_sas_addr(9). 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