From ebb65b6eae4a9a23dd967fa116e9789758ebe21f Mon Sep 17 00:00:00 2001 From: Deepak Nibade Date: Thu, 27 Aug 2020 11:39:09 +0530 Subject: [PATCH] gpu: nvgpu: fix nvgpu_grmgr_get_gr_syspipe_id API nvgpu_grmgr_get_gr_syspipe_id() right now traverses all the GPU instances to find requested gr_instance_id. But logically, gr_instance_id is always going to be same as gpu_instance_id since nvgpu only supports one GR engine instace per GPU instance. Fix this function by extracting GPU instance based on gr_instance_id and then fetching syspipe_id stored for that GPU instance. Jira NVGPU-5648 Change-Id: Ie7b86d765006353d0571e786a8089e7f75f779c3 Signed-off-by: Deepak Nibade Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2405406 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: svc-mobile-coverity Reviewed-by: svc-mobile-misra Reviewed-by: svc-mobile-cert Reviewed-by: Lakshmanan M Reviewed-by: mobile promotions Tested-by: mobile promotions GVS: Gerrit_Virtual_Submit --- drivers/gpu/nvgpu/common/grmgr/grmgr.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/nvgpu/common/grmgr/grmgr.c b/drivers/gpu/nvgpu/common/grmgr/grmgr.c index a1ea605a2..12c157b83 100644 --- a/drivers/gpu/nvgpu/common/grmgr/grmgr.c +++ b/drivers/gpu/nvgpu/common/grmgr/grmgr.c @@ -254,14 +254,12 @@ u32 nvgpu_grmgr_get_gr_syspipe_id(struct gk20a *g, u32 gr_instance_id) { struct nvgpu_gpu_instance *gpu_instance; struct nvgpu_gr_syspipe *gr_syspipe; - u32 i; - for (i = 0U; i < g->mig.num_gpu_instances; i++) { - gpu_instance = &g->mig.gpu_instance[i]; + if (gr_instance_id < g->mig.num_gpu_instances) { + gpu_instance = &g->mig.gpu_instance[gr_instance_id]; gr_syspipe = &gpu_instance->gr_syspipe; - if (gr_instance_id == gr_syspipe->gr_instance_id) { - return gr_syspipe->gr_syspipe_id; - } + + return gr_syspipe->gr_syspipe_id; } return U32_MAX;