From 19cd7ffb5def933db323fe682ec4a263eb1923f9 Mon Sep 17 00:00:00 2001 From: Nicolin Chen Date: Tue, 21 Aug 2018 13:20:49 -0700 Subject: gpu: nvgpu: Allow comptag to deduct occupied memory by the system The comptag allocates memory based on the available total RAM, which theoretically should be the MAX physical RAM size however practically should deduct the part being taken by the running system. Otherwise, the taken memory part will never get used and wasted. This change adds a comptag_mem_deduct to each platform and to allow them to assign the deductible value based on their own use cases so as to save memory. Bug 2327574 Bug 2284925 Change-Id: I124e20a66183c22723c34a7ec6ce34832c12f02e Signed-off-by: Nicolin Chen Reviewed-on: https://git-master.nvidia.com/r/1804157 Reviewed-by: svc-misra-checker GVS: Gerrit_Virtual_Submit Reviewed-by: Sachin Nikam Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/os/linux/driver_common.c | 9 +++++++++ drivers/gpu/nvgpu/os/linux/platform_gk20a.h | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/drivers/gpu/nvgpu/os/linux/driver_common.c b/drivers/gpu/nvgpu/os/linux/driver_common.c index f1eccd06..16af2cb0 100644 --- a/drivers/gpu/nvgpu/os/linux/driver_common.c +++ b/drivers/gpu/nvgpu/os/linux/driver_common.c @@ -93,11 +93,20 @@ static void nvgpu_init_vars(struct gk20a *g) static void nvgpu_init_gr_vars(struct gk20a *g) { + struct gk20a_platform *platform = dev_get_drvdata(dev_from_gk20a(g)); gk20a_init_gr(g); nvgpu_log_info(g, "total ram pages : %lu", totalram_pages); g->gr.max_comptag_mem = totalram_pages >> (10 - (PAGE_SHIFT - 10)); + + /* Deduct the part taken by the running system */ + if (platform->comptag_mem_deduct && + g->gr.max_comptag_mem > platform->comptag_mem_deduct) { + g->gr.max_comptag_mem -= platform->comptag_mem_deduct; + nvgpu_log_info(g, "deducted max memory for comptag: %u", + g->gr.max_comptag_mem); + } } static void nvgpu_init_timeout(struct gk20a *g) diff --git a/drivers/gpu/nvgpu/os/linux/platform_gk20a.h b/drivers/gpu/nvgpu/os/linux/platform_gk20a.h index f3e80b8c..5848a5ef 100644 --- a/drivers/gpu/nvgpu/os/linux/platform_gk20a.h +++ b/drivers/gpu/nvgpu/os/linux/platform_gk20a.h @@ -272,6 +272,12 @@ struct gk20a_platform { /* stream id to use */ u32 ltc_streamid; + /* + * The deductible memory size for max_comptag_mem (in MBytes) + * Usually close to memory size that running system is taking + */ + u32 comptag_mem_deduct; + /* scaling rate */ unsigned long cached_rate; }; -- cgit v1.2.2