From: Zhenzhong Duan <[email protected]> VFIO device will check flag VIOMMU_FLAG_PASID_SUPPORTED and expose PASID capability, also check VIOMMU_FLAG_WANT_PASID_ATTACH to enable pasid attachment, without those guest could not enable PASID of this device even if vIOMMU's pasid is configured.
We don't expose the two flags when fist stage translation is not configured as we don't support shadow page table on a PASID. This is the final knob to enable PASID. Signed-off-by: Zhenzhong Duan <[email protected]> Reviewed-by: Yi Liu <[email protected]> Reviewed-by: Clement Mathieu--Drif <[email protected]> Tested-by: Xudong Hao <[email protected]> Reviewed-by: Michael S. Tsirkin <[email protected]> Signed-off-by: Michael S. Tsirkin <[email protected]> Message-Id: <[email protected]> --- hw/i386/intel_iommu.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 31addb98e4..8bb2a1e339 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -4788,6 +4788,11 @@ static uint64_t vtd_get_viommu_flags(void *opaque) if (s->fsts) { flags = VIOMMU_FLAG_WANT_NESTING_PARENT | VIOMMU_FLAG_WANT_NESTING_DIRTY_TRACKING; + + if (s->pasid) { + flags |= VIOMMU_FLAG_PASID_SUPPORTED | + VIOMMU_FLAG_WANT_PASID_ATTACH; + } } return flags; -- MST
