Re: [PATCH 3/8] iommu/vt-d: Require CMPXCHG16B for PASID support
From: Baolu Lu
Date: Thu Mar 12 2026 - 04:00:37 EST
On 3/9/26 21:42, Jason Gunthorpe wrote:
On Mon, Mar 09, 2026 at 02:06:43PM +0800, Lu Baolu wrote:
The Intel IOMMU driver is moving toward using the generic entry_syncThis is fine, but it also occured to me that we could change the
library for PASID table entry updates. This library requires 128-bit
atomic write operations (cmpxchg128) to update 512-bit PASID entries in
atomic quanta, ensuring the hardware never observes a torn entry.
On x86_64, 128-bit atomicity is provided by the CMPXCHG16B instruction.
Update the driver to:
1. Limit INTEL_IOMMU to X86_64, as 128-bit atomic operations are not
available on 32-bit x86.
2. Gate pasid_supported() on the presence of X86_FEATURE_CX16.
3. Provide a boot-time warning if a PASID-capable IOMMU is detected on
a CPU lacking the required instruction.
writer somewhat to just detect what the update granual is and fall
back to 64 bit in this case. So everything still works, it just does
non-present alot more often.
That's a good point. Though I don't expect many real-world use cases for
PASID on platforms lacking CX16, making the entry_sync library and the
driver adaptive would make the infrastructure more robust. I will look
into supporting a 64-bit fallback.
Thanks,
baolu