diff options
author | Alexandre Courbot <acourbot@nvidia.com> | 2015-02-20 18:23:03 +0900 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2015-04-14 17:00:44 +1000 |
commit | 58fd9375c2c5344e8ab6ef9971635bc59cd39658 (patch) | |
tree | 85727259dfb9e87703762bcfc5f110c96c4b554c /drivers/gpu/drm/nouveau/nouveau_platform.h | |
parent | 5dc240bcfe9a8d30b151be58b174261ba388cb01 (diff) | |
download | linux-58fd9375c2c5344e8ab6ef9971635bc59cd39658.tar.gz linux-58fd9375c2c5344e8ab6ef9971635bc59cd39658.tar.bz2 linux-58fd9375c2c5344e8ab6ef9971635bc59cd39658.zip |
drm/nouveau/platform: probe IOMMU if present
Tegra SoCs have an IOMMU that can be used to present non-contiguous
physical memory as contiguous to the GPU and maximize the use of large
pages in the GPU MMU, leading to performance gains. This patch adds
support for probing such a IOMMU if present and make its properties
available in the nouveau_platform_gpu structure so subsystems can take
advantage of it.
Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_platform.h')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_platform.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_platform.h b/drivers/gpu/drm/nouveau/nouveau_platform.h index 268bb7213681..392874cf4725 100644 --- a/drivers/gpu/drm/nouveau/nouveau_platform.h +++ b/drivers/gpu/drm/nouveau/nouveau_platform.h @@ -24,10 +24,12 @@ #define __NOUVEAU_PLATFORM_H__ #include "core/device.h" +#include "core/mm.h" struct reset_control; struct clk; struct regulator; +struct iommu_domain; struct platform_driver; struct nouveau_platform_gpu { @@ -36,6 +38,22 @@ struct nouveau_platform_gpu { struct clk *clk_pwr; struct regulator *vdd; + + struct { + /* + * Protects accesses to mm from subsystems + */ + struct mutex mutex; + + struct nvkm_mm _mm; + /* + * Just points to _mm. We need this to avoid embedding + * struct nvkm_mm in os.h + */ + struct nvkm_mm *mm; + struct iommu_domain *domain; + unsigned long pgshift; + } iommu; }; struct nouveau_platform_device { |