Alexandre Courbot
2016-Feb-25 06:08 UTC
[Nouveau] [PATCH v2] instmem/gk20a: set DMA mask early
DMA mask is typically set in nouveau_ttm_init(), but this function is called late during initialization and GK20A's instmem will have called DMA functions before this happens. Having a wrongly set DMA mask can result in the use of unneeded bounce buffers. Set it early to avoid this. Signed-off-by: Alexandre Courbot <acourbot at nvidia.com> --- Changes since v1: - Set mask in tegra.c instead of instmem, as suggested by Ben. drm/nouveau/nvkm/engine/device/tegra.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drm/nouveau/nvkm/engine/device/tegra.c b/drm/nouveau/nvkm/engine/device/tegra.c index 6d89416f0bc1..e1cd665aee2c 100644 --- a/drm/nouveau/nvkm/engine/device/tegra.c +++ b/drm/nouveau/nvkm/engine/device/tegra.c @@ -272,6 +272,15 @@ nvkm_device_tegra_new(const struct nvkm_device_tegra_func *func, if (IS_ERR(tdev->clk_pwr)) return PTR_ERR(tdev->clk_pwr); + /** + * The IOMMU bit defines the upper limit of the GPU-addressable space. + * This will be refined in nouveau_ttm_init but we need to do it early + * for instmem to behave properly + */ + ret = dma_set_mask(&pdev->dev, DMA_BIT_MASK(tdev->func->iommu_bit)); + if (ret) + return ret; + nvkm_device_tegra_probe_iommu(tdev); ret = nvkm_device_tegra_power_up(tdev); -- 2.7.1
Apparently Analagous Threads
- [PATCH] tegra: acquire and enable reference clock if needed
- [PATCH] instmem/gk20a: set DMA mask early
- [PATCH] drm: remove NULL pointer check for clk_disable_unprepare
- [PATCH 08/11] drm/nouveau: tegra: Skip IOMMU initialization if already attached
- [PATCH v4 2/2] drm/nouveau: tegra: Detach from ARM DMA/IOMMU mapping