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 <dnibade@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2405406
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
Reviewed-by: svc-mobile-misra <svc-mobile-misra@nvidia.com>
Reviewed-by: svc-mobile-cert <svc-mobile-cert@nvidia.com>
Reviewed-by: Lakshmanan M <lm@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
This commit is contained in:
Deepak Nibade
2020-08-27 11:39:09 +05:30
committed by Alex Waterman
parent 6745b0685e
commit ebb65b6eae

View File

@@ -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;