diff options
| author | Mario Limonciello <mario.limonciello@amd.com> | 2026-09-07 23:12:07 -0500 |
|---|---|---|
| committer | Joerg Roedel <joerg.roedel@amd.com> | 2026-09-25 08:41:44 +0200 |
| commit | e74db71a3530740bb783e3a01420f6af245630b4 (patch) | |
| tree | 3e042292ad9279e2835104216fee8b7aa83c91b3 /scripts/basic/split-include.c | |
| parent | 6e87850d1a8f32c1d91cce32c0d92b20f86689ed (diff) | |
| download | linux-e74db71a3530740bb783e3a01420f6af245630b4.tar.gz linux-e74db71a3530740bb783e3a01420f6af245630b4.zip | |
drm/amdgpu: Enable PerfOpt IOMMU perf optimization when GPU in identity domain
Enable PerfOpt via amd_iommu_enable_perfopt() when the GPU's
iommu_perfopt module parameter is enabled (default 1) and the GPU
resides in the identity domain. The identity domain means the GPU is
already performing direct DMA with the IOMMU only enforcing IR/IW
permission bits -- no GPA->SPA translations.
amd_iommu_enable_perfopt() clears ATS, PRI, PASID and SVA for the
device. This is safe in identity domain because DTE[I]=0 means the
IOMMU already returns target abort for ATS requests from this
peripheral and the GPU manages its own TLB.
PerfOpt is a soft, optional latency optimization: failing to arm it (for
example on an IOMMU that does not implement the feature, which returns
-ENODEV) must not be fatal, so probe and resume warn and continue rather
than aborting.
PERF_OPT_EN is a per-IOMMU control shared by all devices behind that
IOMMU; the IOMMU driver reference counts it so that on systems where
multiple devices share one IOMMU, one GPU's teardown does not clear the
bit while a peer still requires it.
Arming PerfOpt trades IOMMU DMA containment for lower DMA latency. This
is enabled by default for GPUs in the identity domain as a deliberate,
documented policy and can be disabled with iommu_perfopt=0.
The AMD IOMMU spec indicates this is only supported on integrated GPUs
so check explicitly for AMD_IS_APU (which is set by
amdgpu_device_ip_early_init()).
PerfOpt is disabled during GPU init teardown and restored on resume.
Tested-by: Derek J. Clark <derekjohn.clark@gmail.com>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Tested-by: Boqun Feng (Netflix) <boqun@kernel.org>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Diffstat (limited to 'scripts/basic/split-include.c')
0 files changed, 0 insertions, 0 deletions
