From 179e04b442d6388f5ee52b2db25ba806ebbff1c3 Mon Sep 17 00:00:00 2001 From: Deepak Nibade Date: Thu, 22 Oct 2020 13:13:47 +0530 Subject: [PATCH] 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 Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2435467 Reviewed-by: automaticguardword Reviewed-by: Lakshmanan M Reviewed-by: mobile promotions Tested-by: mobile promotions GVS: Gerrit_Virtual_Submit --- drivers/gpu/nvgpu/os/linux/ioctl_channel.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/nvgpu/os/linux/ioctl_channel.c b/drivers/gpu/nvgpu/os/linux/ioctl_channel.c index f4b5b6e5f..261c88156 100644 --- a/drivers/gpu/nvgpu/os/linux/ioctl_channel.c +++ b/drivers/gpu/nvgpu/os/linux/ioctl_channel.c @@ -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);