Messages in this thread | | | Subject | Re: [PATCH 5.16 0702/1039] drm/amdgpu: Dont inherit GEM object VMAs in child process | From | Christian König <> | Date | Tue, 25 Jan 2022 08:26:20 +0100 |
| |
Hi Greg,
Am 24.01.22 um 19:41 schrieb Greg Kroah-Hartman: > From: Rajneesh Bhardwaj <rajneesh.bhardwaj@amd.com> > > [ Upstream commit fbcdbfde87509d523132b59f661a355c731139d0 ] > > When an application having open file access to a node forks, its shared > mappings also get reflected in the address space of child process even > though it cannot access them with the object permissions applied. With the > existing permission checks on the gem objects, it might be reasonable to > also create the VMAs with VM_DONTCOPY flag so a user space application > doesn't need to explicitly call the madvise(addr, len, MADV_DONTFORK) > system call to prevent the pages in the mapped range to appear in the > address space of the child process. It also prevents the memory leaks > due to additional reference counts on the mapped BOs in the child > process that prevented freeing the memory in the parent for which we had > worked around earlier in the user space inside the thunk library. > > Additionally, we faced this issue when using CRIU to checkpoint restore > an application that had such inherited mappings in the child which > confuse CRIU when it mmaps on restore. Having this flag set for the > render node VMAs helps. VMAs mapped via KFD already take care of this so > this is needed only for the render nodes. > > To limit the impact of the change to user space consumers such as OpenGL > etc, limit it to KFD BOs only. > > Acked-by: Felix Kuehling <Felix.Kuehling@amd.com> > Reviewed-by: Christian König <christian.koenig@amd.com> > Signed-off-by: David Yat Sin <david.yatsin@amd.com> > Signed-off-by: Rajneesh Bhardwaj <rajneesh.bhardwaj@amd.com> > Signed-off-by: Alex Deucher <alexander.deucher@amd.com> > Signed-off-by: Sasha Levin <sashal@kernel.org>
Please drop this patch from all stable versions since it was reverted from upstream later on.
Regards, Christian.
> --- > drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > index a1e63ba4c54a5..630dc99e49086 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > @@ -264,6 +264,9 @@ static int amdgpu_gem_object_mmap(struct drm_gem_object *obj, struct vm_area_str > !(vma->vm_flags & (VM_READ | VM_WRITE | VM_EXEC))) > vma->vm_flags &= ~VM_MAYWRITE; > > + if (bo->kfd_bo) > + vma->vm_flags |= VM_DONTCOPY; > + > return drm_gem_ttm_mmap(obj, vma); > } >
| |