From 652da8116966af2a8438a9a9f135a11b4e5c6c7b Mon Sep 17 00:00:00 2001 From: Alex Waterman Date: Fri, 20 Jul 2018 11:12:19 -0700 Subject: gpu: nvgpu: Force the PMU VM to use 128K large pages (gm20b) Add a WAR for gm20b that allows us to force the PMU VM to use 128K large pages. For some reason setting the small page size to 64K breaks the PMU boot. Unclear why. Bug needs to be filed and fixed. Once fixed this patch can and should be reverted. Bug 200105199 Change-Id: I2b4c9e214e2a6dff33bea18bd2359c33364ba03f Signed-off-by: Alex Waterman Reviewed-on: https://git-master.nvidia.com/r/1782769 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/os/linux/driver_common.c | 2 ++ drivers/gpu/nvgpu/os/linux/platform_gk20a.h | 2 ++ drivers/gpu/nvgpu/os/linux/platform_gk20a_tegra.c | 1 + 3 files changed, 5 insertions(+) (limited to 'drivers/gpu/nvgpu/os') diff --git a/drivers/gpu/nvgpu/os/linux/driver_common.c b/drivers/gpu/nvgpu/os/linux/driver_common.c index c651e394..f1eccd06 100644 --- a/drivers/gpu/nvgpu/os/linux/driver_common.c +++ b/drivers/gpu/nvgpu/os/linux/driver_common.c @@ -215,6 +215,8 @@ static void nvgpu_init_mm_vars(struct gk20a *g) platform->unified_memory); __nvgpu_set_enabled(g, NVGPU_MM_UNIFY_ADDRESS_SPACES, platform->unify_address_spaces); + __nvgpu_set_enabled(g, NVGPU_MM_FORCE_128K_PMU_VM, + platform->force_128K_pmu_vm); nvgpu_mutex_init(&g->mm.tlb_lock); nvgpu_mutex_init(&g->mm.priv_lock); diff --git a/drivers/gpu/nvgpu/os/linux/platform_gk20a.h b/drivers/gpu/nvgpu/os/linux/platform_gk20a.h index a4c3eca3..f3e80b8c 100644 --- a/drivers/gpu/nvgpu/os/linux/platform_gk20a.h +++ b/drivers/gpu/nvgpu/os/linux/platform_gk20a.h @@ -244,6 +244,8 @@ struct gk20a_platform { bool honors_aperture; /* unified or split memory with separate vidmem? */ bool unified_memory; + /* WAR for gm20b chips. */ + bool force_128K_pmu_vm; /* * DMA mask for Linux (both coh and non-coh). If not set defaults to diff --git a/drivers/gpu/nvgpu/os/linux/platform_gk20a_tegra.c b/drivers/gpu/nvgpu/os/linux/platform_gk20a_tegra.c index 432af108..033563dc 100644 --- a/drivers/gpu/nvgpu/os/linux/platform_gk20a_tegra.c +++ b/drivers/gpu/nvgpu/os/linux/platform_gk20a_tegra.c @@ -952,6 +952,7 @@ struct gk20a_platform gm20b_tegra_platform = { .unified_memory = true, .dma_mask = DMA_BIT_MASK(34), + .force_128K_pmu_vm = true, .secure_buffer_size = 335872, }; -- cgit v1.2.2