On 2023-04-27 12:35, Felix Kuehling wrote:
On 2023-04-24 14:38, Philip Yang wrote:
With XNACK on if svm_range_set_attr set the range access or
access_in_place attribute, we don't call svm_range_validate_and_map to
update GPU mapping. This avoids prefaulting the range pages on system
memory if the range is not prefetch to VRAM and not mapped to GPUs.
Signed-off-by: Philip Yang <Philip.Yang@xxxxxxx>
---
drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
index 129ef44f41e9..af7594b1b4c6 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
@@ -734,7 +734,9 @@ svm_range_apply_attrs(struct kfd_process *p,
struct svm_range *prange,
case KFD_IOCTL_SVM_ATTR_ACCESS:
case KFD_IOCTL_SVM_ATTR_ACCESS_IN_PLACE:
case KFD_IOCTL_SVM_ATTR_NO_ACCESS:
- *update_mapping = true;
+ if (!p->xnack_enabled)
+ *update_mapping = true;
+
For NO_ACCESS we need to update the mapping to ensure that the PTEs
are invalidated. For ACCESS or ACCESS_IN_PLACE we can leave it for a
page fault.
For NO_ACCESS, there is todo comment "TODO: unmap ranges from GPU that
lost access", this should be handled by another patch. This patch only
address that for XNACK ON, we can setup GPU mapping after page fault,
without prefaulting and mapping to GPU for ACCESS or ACCESS_IN_PLACE.
Regards,
Philip
Regards,
Felix
gpuidx = kfd_process_gpuidx_from_gpuid(p,
attrs[i].value);
if (attrs[i].type == KFD_IOCTL_SVM_ATTR_NO_ACCESS) {