PCIe ATS may be disabled by platform firmware, root complex limitations,
or host kernel policy, even when a device advertises the ATS capability
in its PCI config space.
Userspace currently cannot determine whether ATS is effectively supported
for a device. This may lead to incorrect assumptions when ATS appears
present in PCI config space but is disabled by the platform, e.g., in use
cases such as VFIO device pass-through.
This series introduces IOMMU_CAP_PCI_ATS_NOT_SUPPORTED to allow drivers to
report when ATS is not supported for a device, and extends iommufd to
expose this information via IOMMU_GET_HW_INFO.
The negative capability is chosen for backward compatibility: on older
kernels the flag will be absent and userspace will retain the existing
behaviour (i.e. assume ATS is usable if advertised).
Please see the related QEMU discussion for SMMUv3 accelerator use case
here[0].
Please take a look and let me know.
Thanks,
Shameer
[0] https://lore.kernel.org/qemu-devel/CH3PR12MB7548515EDA96BD03F64DCAA2AB62A@CH3PR12MB7548.namprd12.prod.outlook.com/
Shameer Kolothum (2):
iommu: Add device ATS not supported capability
iommufd: Report ATS not supported status via IOMMU_GET_HW_INFO
include/linux/iommu.h | 2 ++
include/uapi/linux/iommufd.h | 3 +++
drivers/iommu/amd/iommu.c | 6 ++++++
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 3 +++
drivers/iommu/intel/iommu.c | 2 ++
drivers/iommu/iommufd/device.c | 3 +++
6 files changed, 19 insertions(+)
--
2.43.0