diff --git a/drivers/gpu/nvgpu/os/linux/vgpu/gv11b/platform_gv11b_vgpu_tegra.c b/drivers/gpu/nvgpu/os/linux/vgpu/gv11b/platform_gv11b_vgpu_tegra.c index 0304bccbe..fa060847d 100644 --- a/drivers/gpu/nvgpu/os/linux/vgpu/gv11b/platform_gv11b_vgpu_tegra.c +++ b/drivers/gpu/nvgpu/os/linux/vgpu/gv11b/platform_gv11b_vgpu_tegra.c @@ -16,6 +16,8 @@ #include +#include + #include #include @@ -100,4 +102,6 @@ struct gk20a_platform gv11b_vgpu_tegra_platform = { /* power management callbacks */ .suspend = vgpu_tegra_suspend, .resume = vgpu_tegra_resume, + + .dma_mask = DMA_BIT_MASK(36), }; diff --git a/drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c b/drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c index aa2fa998e..d5c6f3d4c 100644 --- a/drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c +++ b/drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c @@ -453,6 +453,16 @@ int vgpu_probe(struct platform_device *pdev) dev->dma_parms = &l->dma_parms; dma_set_max_seg_size(dev, UINT_MAX); + /* + * A default of 16GB is the largest supported DMA size that is + * acceptable to all currently supported Tegra SoCs. + */ + if (!platform->dma_mask) + platform->dma_mask = DMA_BIT_MASK(34); + + dma_set_mask(dev, platform->dma_mask); + dma_set_coherent_mask(dev, platform->dma_mask); + gk20a->gr_idle_timeout_default = NVGPU_DEFAULT_GR_IDLE_TIMEOUT; gk20a->timeouts_disabled_by_user = false; nvgpu_atomic_set(&gk20a->timeouts_disabled_refcount, 0);