Re: [PATCH] drm/amdkfd: Optimize svm range map to GPU with XNACK on

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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.

Regards,
  Felix


  			gpuidx = kfd_process_gpuidx_from_gpuid(p,
  							       attrs[i].value);
  			if (attrs[i].type == KFD_IOCTL_SVM_ATTR_NO_ACCESS) {



[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux