xgene_ahci_qc_issue(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– xgene_ahci_qc_issue(9) πŸ’–

okay so this is a page from the Kernel API Manual bestie, and it's literally all about xgene_ahci_qc_issue β€” no cap, we're getting into it πŸŽ€


✨ NAME ✨

xgene_ahci_qc_issue β€” issue commands to the device, fr fr πŸ’…


🌸 SYNOPSIS 🌸

unsigned int xgene_ahci_qc_issue (struct ata_queued_cmd *qc );

πŸ¦‹ ARGUMENTS πŸ¦‹

  • qc β€” the command you wanna issue πŸ‘‘ that's it, that's the whole argument

πŸ”₯ DESCRIPTION πŸ”₯

ngl, this controller has hardware errata and we're all just living with it 😭 so let's break it down πŸ“

πŸ’€ the IDENTIFY DEVICE situation

So, due to hardware errata for the IDENTIFY DEVICE command, the controller literally cannot clear the BSY bit after receiving the PIO setup FIS. And the way that this plays out? The dma state machine goes into the CMFatalErrorUpdate state and locks up. πŸ’€

The fix is iconic actually: by restarting the dma engine, it removes the controller out of lock up state. slay πŸŽ€

🧚 the PMP situation

Also due to H/W errata, the controller is unable to save the PMP field fetched from command header before sending the H2D FIS. So when the device returns the PMP port field in the D2H FIS, there's a mismatch, and that results in command completion failure πŸ™ˆ

The workaround, bestie? Write the pmp value to the PxFBS.DEV field before issuing any command to PMP. periodt ✨


πŸ‘‘ SEE ALSO πŸ‘‘

Kernel file ./drivers/ata/ahci_xgene.c β€” and all the sister functions you should lowkey go read:


πŸ’… friendly reminder from the manpage: those errata are real hardware behaviour, not a vibe. Handle them exactly like it says.

🌈 and that's the page!! this little gem lives in ./drivers/ata, dated October 2026 β€” mwah, go touch some registers bestie πŸ«ΆπŸ’œ

πŸ“¦ where this page comes from