From 002edb782aae8b47d62e5e4df1dc999f3ce773e9 Mon Sep 17 00:00:00 2001 From: Deepak Nibade Date: Mon, 31 Aug 2020 11:35:16 +0530 Subject: [PATCH] gpu: nvgpu: move cur_gr_instance tracking to MIG infra Move cur_gr_instance from struct gk20a to struct nvgpu_mig since this tracking is really MIG specific. Jira NVGPU-5648 Change-Id: I27b124925c2291e352ef9456c7189da0bc447a42 Signed-off-by: Deepak Nibade Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2406389 Reviewed-by: svc-mobile-coverity Reviewed-by: svc-mobile-misra Reviewed-by: svc-mobile-cert Reviewed-by: Alex Waterman Reviewed-by: Lakshmanan M Reviewed-by: automaticguardword Reviewed-by: mobile promotions GVS: Gerrit_Virtual_Submit Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/gr/gr.c | 4 ++-- drivers/gpu/nvgpu/include/nvgpu/gk20a.h | 1 - drivers/gpu/nvgpu/include/nvgpu/gr/gr_instances.h | 10 +++++----- drivers/gpu/nvgpu/include/nvgpu/mig.h | 6 ++++++ 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/nvgpu/common/gr/gr.c b/drivers/gpu/nvgpu/common/gr/gr.c index 256181c75..23f3d2ad2 100644 --- a/drivers/gpu/nvgpu/common/gr/gr.c +++ b/drivers/gpu/nvgpu/common/gr/gr.c @@ -614,7 +614,7 @@ static int gr_reset_engine(struct gk20a *g) if (g->ops.gr.init.reset_gpcs != NULL) { const struct nvgpu_device *dev = nvgpu_device_get(g, NVGPU_DEVTYPE_GRAPHICS, - nvgpu_gr_get_syspipe_id(g, g->cur_gr_instance)); + nvgpu_gr_get_syspipe_id(g, g->mig.cur_gr_instance)); g->ops.mc.reset(g, g->ops.mc.reset_mask(g, NVGPU_UNIT_PERFMON)); @@ -841,7 +841,7 @@ int nvgpu_gr_alloc(struct gk20a *g) return -ENOMEM; } - g->cur_gr_instance = 0U; /* default */ + g->mig.cur_gr_instance = 0U; /* default */ for (i = 0U; i < g->num_gr_instances; i++) { gr = &g->gr[i]; diff --git a/drivers/gpu/nvgpu/include/nvgpu/gk20a.h b/drivers/gpu/nvgpu/include/nvgpu/gk20a.h index e28ca1bac..0edd01e81 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/gk20a.h +++ b/drivers/gpu/nvgpu/include/nvgpu/gk20a.h @@ -335,7 +335,6 @@ struct gk20a { struct nvgpu_gr *gr; u32 num_gr_instances; - u32 cur_gr_instance; struct nvgpu_fbp *fbp; #ifdef CONFIG_NVGPU_SIM diff --git a/drivers/gpu/nvgpu/include/nvgpu/gr/gr_instances.h b/drivers/gpu/nvgpu/include/nvgpu/gr/gr_instances.h index eb97e8c56..dae92b2d1 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/gr/gr_instances.h +++ b/drivers/gpu/nvgpu/include/nvgpu/gr/gr_instances.h @@ -35,7 +35,7 @@ while (gr_instance_id < g->num_gr_instances) { \ u32 gr_syspipe_id = nvgpu_gr_get_syspipe_id(g, gr_instance_id); \ nvgpu_grmgr_config_gr_remap_window(g, gr_syspipe_id, true); \ - g->cur_gr_instance = gr_instance_id; \ + g->mig.cur_gr_instance = gr_instance_id; \ (func); \ nvgpu_grmgr_config_gr_remap_window(g, gr_syspipe_id, false); \ } \ @@ -56,7 +56,7 @@ while (gr_instance_id < g->num_gr_instances) { \ u32 gr_syspipe_id = nvgpu_gr_get_syspipe_id(g, gr_instance_id); \ nvgpu_grmgr_config_gr_remap_window(g, gr_syspipe_id, true); \ - g->cur_gr_instance = gr_instance_id; \ + g->mig.cur_gr_instance = gr_instance_id; \ err = (func); \ if (err != 0) { \ break; \ @@ -77,7 +77,7 @@ ({ \ if (nvgpu_is_enabled(g, NVGPU_SUPPORT_MIG)) { \ nvgpu_grmgr_config_gr_remap_window(g, NVGPU_MIG_INVALID_GR_SYSPIPE_ID, false); \ - g->cur_gr_instance = 0; \ + g->mig.cur_gr_instance = 0; \ (func); \ nvgpu_grmgr_config_gr_remap_window(g, NVGPU_MIG_INVALID_GR_SYSPIPE_ID, true); \ } else { \ @@ -94,7 +94,7 @@ if (nvgpu_is_enabled(g, NVGPU_SUPPORT_MIG)) { \ u32 gr_syspipe_id = nvgpu_gr_get_syspipe_id(g, gr_instance_id); \ nvgpu_grmgr_config_gr_remap_window(g, gr_syspipe_id, true); \ - g->cur_gr_instance = gr_instance_id; \ + g->mig.cur_gr_instance = gr_instance_id; \ (func); \ nvgpu_grmgr_config_gr_remap_window(g, gr_syspipe_id, false); \ } else { \ @@ -112,7 +112,7 @@ if (nvgpu_is_enabled(g, NVGPU_SUPPORT_MIG)) { \ u32 gr_syspipe_id = nvgpu_gr_get_syspipe_id(g, gr_instance_id); \ nvgpu_grmgr_config_gr_remap_window(g, gr_syspipe_id, true); \ - g->cur_gr_instance = gr_instance_id; \ + g->mig.cur_gr_instance = gr_instance_id; \ err = (func); \ nvgpu_grmgr_config_gr_remap_window(g, gr_syspipe_id, false); \ } else { \ diff --git a/drivers/gpu/nvgpu/include/nvgpu/mig.h b/drivers/gpu/nvgpu/include/nvgpu/mig.h index 1de8ba759..b9874eff1 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/mig.h +++ b/drivers/gpu/nvgpu/include/nvgpu/mig.h @@ -196,6 +196,12 @@ struct nvgpu_mig { * It is valid if num_gr_sys_pipes_enabled > 1. */ u32 current_gr_syspipe_id; + /* + * Current GR instance being programmed. + * Defaults to zero for non-MIG cases. Respective GR instance id in + * case MIG support is enabled. + */ + u32 cur_gr_instance; /** * GR syspipe acquire lock. * It is valid lock if num_gr_sys_pipes_enabled > 1.