summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorMukul Joshi <mukul.joshi@amd.com>2023-01-31 11:23:50 -0500
committerAlex Deucher <alexander.deucher@amd.com>2023-06-09 09:55:35 -0400
commitf4d8b6f5c61ab5e98258bd0072d733741c76bd8d (patch)
tree13a16b9f3250d473d739c42af7139786bf3e53bf /drivers/gpu
parent01ef47477d05b784ab6ac26fa6878987eda436f1 (diff)
downloadlwn-f4d8b6f5c61ab5e98258bd0072d733741c76bd8d.tar.gz
lwn-f4d8b6f5c61ab5e98258bd0072d733741c76bd8d.zip
drm/amdkfd: Enable SVM on Native mode
This patch enables SVM capability on GFX9.4.3 when run in Native mode. It also sets best_prefetch and best_restore locations to CPU as there is no VRAM. Signed-off-by: Mukul Joshi <mukul.joshi@amd.com> Acked-by: Rajneesh Bhardwaj <rajneesh.bhardwaj@amd.com> Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_svm.c8
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_svm.h3
2 files changed, 10 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
index 2b79849ddd30..cf354f9e4285 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
@@ -2543,6 +2543,9 @@ svm_range_best_restore_location(struct svm_range *prange,
return -1;
}
+ if (node->adev->gmc.is_app_apu)
+ return 0;
+
if (prange->preferred_loc == gpuid ||
prange->preferred_loc == KFD_IOCTL_SVM_LOCATION_SYSMEM) {
return prange->preferred_loc;
@@ -3256,6 +3259,11 @@ svm_range_best_prefetch_location(struct svm_range *prange)
goto out;
}
+ if (bo_node->adev->gmc.is_app_apu) {
+ best_loc = 0;
+ goto out;
+ }
+
if (p->xnack_enabled)
bitmap_copy(bitmap, prange->bitmap_aip, MAX_GPU_INSTANCE);
else
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.h b/drivers/gpu/drm/amd/amdkfd/kfd_svm.h
index 5116786718b6..7515ddade3ae 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.h
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.h
@@ -200,7 +200,8 @@ void svm_range_list_lock_and_flush_work(struct svm_range_list *svms, struct mm_s
/* SVM API and HMM page migration work together, device memory type
* is initialized to not 0 when page migration register device memory.
*/
-#define KFD_IS_SVM_API_SUPPORTED(dev) ((dev)->pgmap.type != 0)
+#define KFD_IS_SVM_API_SUPPORTED(dev) ((dev)->pgmap.type != 0 ||\
+ (dev)->adev->gmc.is_app_apu)
void svm_range_bo_unref_async(struct svm_range_bo *svm_bo);