mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-22 09:12:24 +03:00
gpu: nvgpu: fix deinit of GR
Existing implementation of GR de-init doesn't account for multiple instances of struct nvgpu_gr. As a fix, below changes are added. 1) nvgpu_gr_free is unified for VGPU as well as native. 2) All the GR instances are freed. 3) Appropriate NULL checks are added when freeing GR memories. 4) 2D, 3D, I2M and ZBC etc are explicitely disabled when MIG is set. 5) In ioctl_ctrl, checks are added to not return error when zbc is NULL for VGPU as requests are rerouted to RMserver. Jira NVGPU-6920 Change-Id: Icaa40f88f523c2cdbfe3a4fd6a55681ea7a83d12 Signed-off-by: Debarshi Dutta <ddutta@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2578500 Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com> Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com> Reviewed-by: Dinesh T <dt@nvidia.com> Reviewed-by: Seshendra Gadagottu <sgadagottu@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: Antony Clince Alex <aalex@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com> GVS: Gerrit_Virtual_Submit
This commit is contained in:
committed by
mobile promotions
parent
b9696ee643
commit
2e3c3aada6
@@ -1951,12 +1951,18 @@ long gk20a_ctrl_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg
|
||||
switch (cmd) {
|
||||
#ifdef CONFIG_NVGPU_GRAPHICS
|
||||
case NVGPU_GPU_IOCTL_ZCULL_GET_CTX_SIZE:
|
||||
if (gr_zcull == NULL)
|
||||
return -ENODEV;
|
||||
|
||||
get_ctx_size_args = (struct nvgpu_gpu_zcull_get_ctx_size_args *)buf;
|
||||
|
||||
get_ctx_size_args->size = nvgpu_gr_get_ctxsw_zcull_size(g, gr_zcull);
|
||||
|
||||
break;
|
||||
case NVGPU_GPU_IOCTL_ZCULL_GET_INFO:
|
||||
if (gr_zcull == NULL)
|
||||
return -ENODEV;
|
||||
|
||||
get_info_args = (struct nvgpu_gpu_zcull_get_info_args *)buf;
|
||||
|
||||
(void) memset(get_info_args, 0,
|
||||
@@ -1987,6 +1993,9 @@ long gk20a_ctrl_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg
|
||||
nvgpu_kfree(g, zcull_info);
|
||||
break;
|
||||
case NVGPU_GPU_IOCTL_ZBC_SET_TABLE:
|
||||
if (!nvgpu_is_enabled(g, NVGPU_SUPPORT_ZBC))
|
||||
return -ENODEV;
|
||||
|
||||
set_table_args = (struct nvgpu_gpu_zbc_set_table_args *)buf;
|
||||
|
||||
zbc_val = nvgpu_gr_zbc_entry_alloc(g);
|
||||
@@ -2027,6 +2036,9 @@ long gk20a_ctrl_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg
|
||||
nvgpu_gr_zbc_entry_free(g, zbc_val);
|
||||
break;
|
||||
case NVGPU_GPU_IOCTL_ZBC_QUERY_TABLE:
|
||||
if (!nvgpu_is_enabled(g, NVGPU_SUPPORT_ZBC))
|
||||
return -ENODEV;
|
||||
|
||||
query_table_args = (struct nvgpu_gpu_zbc_query_table_args *)buf;
|
||||
|
||||
zbc_tbl = nvgpu_kzalloc(g, sizeof(struct nvgpu_gr_zbc_query_params));
|
||||
|
||||
Reference in New Issue
Block a user