gpu: nvgpu: use instance specific runlist id

In __gk20a_channel_open(), if runlist_id is provided as -1,
pick up correct GPU instance sprcific default runlist id using
nvgpu_grmgr_get_gpu_instance_runlist_id().
Also, get GPU instance is using nvgpu_get_gpu_instance_id_from_cdev()

If runlist_id is received as input, check if it is valid for given
GPU instance with nvgpu_grmgr_is_valid_runlist_id()

Jira NVGPU-5648

Change-Id: I69303a3dd81f28f474b40564da51254bcaa1ed15
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2435467
Reviewed-by: automaticguardword <automaticguardword@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-10-22 13:13:47 +05:30
committed by Alex Waterman
parent be9271d721
commit 179e04b442

View File

@@ -473,14 +473,22 @@ static int __gk20a_channel_open(struct gk20a *g, struct nvgpu_cdev *cdev,
struct nvgpu_channel *ch;
struct channel_priv *priv;
u32 tmp_runlist_id;
u32 gpu_instance_id;
nvgpu_log_fn(g, " ");
gpu_instance_id = nvgpu_get_gpu_instance_id_from_cdev(g, cdev);
nvgpu_assert(gpu_instance_id < g->mig.num_gpu_instances);
nvgpu_assert(runlist_id >= -1);
if (runlist_id == -1) {
tmp_runlist_id = NVGPU_ENGINE_GR;
tmp_runlist_id = nvgpu_grmgr_get_gpu_instance_runlist_id(g, gpu_instance_id);
} else {
tmp_runlist_id = runlist_id;
if (nvgpu_grmgr_is_valid_runlist_id(g, gpu_instance_id, runlist_id)) {
tmp_runlist_id = runlist_id;
} else {
return -EINVAL;
}
}
g = nvgpu_get(g);