From 2c441a83d44857b71a599acfe76395942ea936bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konsta=20H=C3=B6ltt=C3=A4?= Date: Wed, 2 Jun 2021 17:33:38 +0300 Subject: gpu: nvgpu: keep usermode region flags on railgate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the gpu is railgated, the usermode region mappings must be cleared. This is already done with zap_vma_ptes() but as an extra measure the vm flags are also zeroed. That is an oversight, so delete that code; in particular the VM_DONTCOPY flag is important so that the mapping does not follow fork, as the design does not allow that. Bug 200726443 Change-Id: I84ed4e38b7de1f0c8cbf4cca6276abfa2409ac3b Signed-off-by: Konsta Hölttä Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2538481 (cherry picked from commit e44ece25ba405505b7fd537b41bd0ad52f1250ce) Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2548631 Reviewed-by: svc-mobile-coverity Reviewed-by: Debarshi Dutta Reviewed-by: Sagar Kamble Reviewed-by: Bibek Basu Reviewed-by: mobile promotions GVS: Gerrit_Virtual_Submit Tested-by: mobile promotions --- drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c b/drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c index b6cdffcb..841d345b 100644 --- a/drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c +++ b/drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c @@ -60,7 +60,6 @@ struct gk20a_ctrl_priv { struct nvgpu_list_node list; struct { struct vm_area_struct *vma; - unsigned long flags; bool vma_mapped; } usermode_vma; }; @@ -2040,7 +2039,6 @@ int gk20a_ctrl_dev_mmap(struct file *filp, struct vm_area_struct *vma) vma->vm_end - vma->vm_start, vma->vm_page_prot); if (!err) { priv->usermode_vma.vma = vma; - priv->usermode_vma.flags = vma->vm_flags; vma->vm_private_data = priv; priv->usermode_vma.vma_mapped = true; } @@ -2089,19 +2087,16 @@ static int alter_usermode_mapping(struct gk20a *g, if (poweroff) { err = zap_vma_ptes(vma, vma->vm_start, SZ_4K); if (err == 0) { - vma->vm_flags = VM_NONE; priv->usermode_vma.vma_mapped = false; } else { nvgpu_err(g, "can't remove usermode mapping"); } } else { - vma->vm_flags = priv->usermode_vma.flags; err = io_remap_pfn_range(vma, vma->vm_start, addr >> PAGE_SHIFT, SZ_4K, vma->vm_page_prot); if (err != 0) { nvgpu_err(g, "can't restore usermode mapping"); - vma->vm_flags = VM_NONE; } else { priv->usermode_vma.vma_mapped = true; } -- cgit v1.2.2