Re: [PATCH 1/1] iommu/vt-d: Avoid WARNING in sva unbind path

From: Yi Liu

Date: Wed May 20 2026 - 09:04:29 EST


On 5/19/26 13:29, Lu Baolu wrote:
The Intel IOMMU driver allows SVA on devices even if they do not support
PCI/PRI. Commit 39c20c4e83b9 ("iommu/vt-d: Only handle IOPF for SVA when
PRI is supported") modified the SVA bind path to allow this configuration
by skipping IOPF enablement when PRI is missing. However, it failed to
update the unbind path.

This creates an imbalance: the unbind path attempts to disable IOPF for
a device that never had it enabled, triggering a WARNING in
intel_iommu_disable_iopf():

WARNING: drivers/iommu/intel/iommu.c:3475 at intel_iommu_disable_iopf+0x4f/0x90d
Call Trace:
<TASK>
blocking_domain_set_dev_pasid+0x50/0x70
iommu_detach_device_pasid+0x89/0xc0
iommu_sva_unbind_device+0x73/0x150
xe_vm_close_and_put+0x4d2/0x1200 [xe]

Fix this by bypassing IOPF operations for SVA domains on non-PRI hardware
in both the bind and unbind paths.

Fixes: 39c20c4e83b9 ("iommu/vt-d: Only handle IOPF for SVA when PRI is supported")
Cc: stable@xxxxxxxxxxxxxxx
Reported-by: Nareshkumar Gollakoti <naresh.kumar.g@xxxxxxxxx>
Signed-off-by: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx>
---
drivers/iommu/intel/iommu.h | 11 +++++++++++
drivers/iommu/intel/svm.c | 12 ++++--------
2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/drivers/iommu/intel/iommu.h b/drivers/iommu/intel/iommu.h
index ef145560aa98..775f1c4ae346 100644
--- a/drivers/iommu/intel/iommu.h
+++ b/drivers/iommu/intel/iommu.h
@@ -1254,18 +1254,29 @@ void intel_iommu_disable_iopf(struct device *dev);
static inline int iopf_for_domain_set(struct iommu_domain *domain,
struct device *dev)
{
+ struct device_domain_info *info = dev_iommu_priv_get(dev);
+
if (!domain || !domain->iopf_handler)
return 0;
+ /* SVA with non-IOMMU/PRI IOPF handling is allowed. */
+ if (domain->type == IOMMU_DOMAIN_SVA && !info->pri_supported)
+ return 0;
+

Looked into the history a bit, and this story begins with commit
a86fb7717320 ("iommu/vt-d: Allow SVA with device-specific IOPF"). This
commit enabled devices that support their own IOPF mechanism to use SVA
even when the platform IOMMU doesn't support IOPF.

However, SVA isn't the only fault-capable domain type. Other fault-capable
domain types (e.g., paging domains) should also be able to leverage
device-specific IOPF capabilities.

My question is: can we drop the domain type check to support other types
of fault-capable domains that rely on device-specific IOPF?

Regards,
Yi Liu