intel_iommu_drain_pasid_prq(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ intel_iommu_drain_pasid_prq ✨

okay bestie, so this is a page straight out of the Kernel API Manual β€” it's intel_iommu_drain_pasid_prq(9), and no cap, the name says it all. πŸ’…


πŸ’– NAME πŸ’–

intel_iommu_drain_pasid_prq β€” drain page requests and page responses for a pasid. that's the whole vibe. πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

void intel_iommu_drain_pasid_prq (struct device *dev , u32 pasid );

like, it returns nothing (void β€” she's not here to give you a value, she's here to do the work), and she takes two args. periodt. ✨


🌸 ARGUMENTS 🌸

  • dev β€” the target device. the one we're draining stuff for, iykyk. 🫢
  • pasid β€” the pasid we're draining. this is the main character of the whole operation, fr fr. πŸ‘‘

πŸ’œ DESCRIPTION πŸ’œ

okay so here's the tea β˜• β€” this function drains all pending page requests and page responses that relate to pasid, in both software and hardware. like, full sweep, no crumbs left. πŸ”₯

bestie, listen β€” this is supposed to be called after a very specific sequence. do not freestyle this: - the device driver has stopped DMA - the pasid entry has been cleared - both the IOTLB and the DevTLB have been invalidated get those done first, or you're gonna have a bad time. 😭

so what does it actually do, you ask? she waits until all the pending page requests for pasid sitting in the page fault queue are completed by the prq handling thread. then β€” and only then β€” she follows the steps described in VT-d spec CH7.10 to drain all page requests and page responses that are still pending in the hardware. iconic behavior, honestly. 🌈


🧚 SEE ALSO 🧚

  • Kernel file ./drivers/iommu/intel/prq.c β€” go read it, it's giving source of truth. πŸ’€

and that's the whole page, bestie! πŸ’– this gem lives in ./drivers/iommu/intel, and the version vibes are dated October 2026. go drain those page requests responsibly, mwah πŸ«Άβœ¨πŸŽ€

πŸ“¦ where this page comes from