]> git.dujemihanovic.xyz Git - linux.git/commit
drm/amdkfd: Change kfd/svm page fault drain handling
authorXiaogang Chen <xiaogang.chen@amd.com>
Fri, 23 Aug 2024 07:04:09 +0000 (02:04 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 23 Aug 2024 14:55:13 +0000 (10:55 -0400)
commit6ef29715ac06fad7b3e43086cb4df97952c3a4de
tree95f930c9d35a0a6a040a2a7d45a34d2aeb4b2a0f
parent010cc730ace807c6d267481b5fb6ff99acc35c46
drm/amdkfd: Change kfd/svm page fault drain handling

When app unmap vm ranges(munmap) kfd/svm starts drain pending page fault and
not handle any incoming pages fault of this process until a deferred work item
got executed by default system wq. The time period of "not handle page fault"
can be long and is unpredicable. That is advese to kfd performance on page
faults recovery.

This patch uses time stamp of incoming page fault to decide to drop or recover
page fault. When app unmap vm ranges kfd records each gpu device's ih ring
current time stamp. These time stamps are used at kfd page fault recovery
routine.

Any page fault happened on unmapped ranges after unmap events is application
bug that accesses vm range after unmap. It is not driver work to cover that.

By using time stamp of page fault do not need drain page faults at deferred
work. So, the time period that kfd does not handle page faults is reduced
and can be controlled.

Signed-off-by: Xiaogang.Chen <Xiaogang.Chen@amd.com>
Reviewed-by: Philip Yang <Philip.Yang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
drivers/gpu/drm/amd/amdkfd/kfd_priv.h
drivers/gpu/drm/amd/amdkfd/kfd_svm.c
drivers/gpu/drm/amd/amdkfd/kfd_svm.h