Commit 8c45b319 authored by Philip Yang's avatar Philip Yang Committed by Alex Deucher

drm/amdkfd: Skip handle mapping SVM range with no GPU access

If the SVM range has no GPU access nor access-in-place attribute,
validate and map to GPU should skip the range.

Add NULL pointer check if find_first_bit(ctx->bitmap, MAX_GPU_INSTANCE)
returns MAX_GPU_INSTANCE as gpuidx if ctx->bitmap is empty.
Signed-off-by: default avatarPhilip Yang <Philip.Yang@amd.com>
Reviewed-by: default avatarAlex Sierra <alex.sierra@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent c4cde735
...@@ -1522,6 +1522,8 @@ static void *kfd_svm_page_owner(struct kfd_process *p, int32_t gpuidx) ...@@ -1522,6 +1522,8 @@ static void *kfd_svm_page_owner(struct kfd_process *p, int32_t gpuidx)
struct kfd_process_device *pdd; struct kfd_process_device *pdd;
pdd = kfd_process_device_from_gpuidx(p, gpuidx); pdd = kfd_process_device_from_gpuidx(p, gpuidx);
if (!pdd)
return NULL;
return SVM_ADEV_PGMAP_OWNER(pdd->dev->adev); return SVM_ADEV_PGMAP_OWNER(pdd->dev->adev);
} }
...@@ -1596,12 +1598,12 @@ static int svm_range_validate_and_map(struct mm_struct *mm, ...@@ -1596,12 +1598,12 @@ static int svm_range_validate_and_map(struct mm_struct *mm,
} }
if (bitmap_empty(ctx->bitmap, MAX_GPU_INSTANCE)) { if (bitmap_empty(ctx->bitmap, MAX_GPU_INSTANCE)) {
if (!prange->mapped_to_gpu) { bitmap_copy(ctx->bitmap, prange->bitmap_access, MAX_GPU_INSTANCE);
if (!prange->mapped_to_gpu ||
bitmap_empty(ctx->bitmap, MAX_GPU_INSTANCE)) {
r = 0; r = 0;
goto free_ctx; goto free_ctx;
} }
bitmap_copy(ctx->bitmap, prange->bitmap_access, MAX_GPU_INSTANCE);
} }
if (prange->actual_loc && !prange->ttm_res) { if (prange->actual_loc && !prange->ttm_res) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment