Skip to content

Commit a9a76be

Browse files
PhilipYangAalexdeucher
authored andcommitted
drm/amdkfd: new range accessible by all GPUs
If xnack is on, new range is created to recover retry vm fault or created by SVM API calls, set all GPUs have access to the range. Signed-off-by: Philip Yang <[email protected]> Reviewed-by: Felix Kuehling <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent 6e6fe7c commit a9a76be

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

drivers/gpu/drm/amd/amdkfd/kfd_svm.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ svm_range *svm_range_new(struct svm_range_list *svms, uint64_t start,
258258
{
259259
uint64_t size = last - start + 1;
260260
struct svm_range *prange;
261+
struct kfd_process *p;
261262

262263
prange = kzalloc(sizeof(*prange), GFP_KERNEL);
263264
if (!prange)
@@ -277,6 +278,11 @@ svm_range *svm_range_new(struct svm_range_list *svms, uint64_t start,
277278
prange->validate_timestamp = 0;
278279
mutex_init(&prange->migrate_mutex);
279280
mutex_init(&prange->lock);
281+
282+
p = container_of(svms, struct kfd_process, svms);
283+
if (p->xnack_enabled)
284+
bitmap_fill(prange->bitmap_access, MAX_GPU_INSTANCE);
285+
280286
svm_range_set_default_attributes(&prange->preferred_loc,
281287
&prange->prefetch_loc,
282288
&prange->granularity, &prange->flags);
@@ -2246,17 +2252,15 @@ svm_range *svm_range_create_unregistered_range(struct amdgpu_device *adev,
22462252

22472253
prange = svm_range_new(&p->svms, start, last);
22482254
if (!prange) {
2249-
pr_debug("Failed to create prange in address [0x%llx]\\n", addr);
2255+
pr_debug("Failed to create prange in address [0x%llx]\n", addr);
22502256
return NULL;
22512257
}
22522258
if (kfd_process_gpuid_from_kgd(p, adev, &gpuid, &gpuidx)) {
22532259
pr_debug("failed to get gpuid from kgd\n");
22542260
svm_range_free(prange);
22552261
return NULL;
22562262
}
2257-
prange->preferred_loc = gpuid;
2258-
prange->actual_loc = 0;
2259-
/* Gurantee prange is migrate it */
2263+
22602264
svm_range_add_to_svms(prange);
22612265
svm_range_add_notifier_locked(mm, prange);
22622266

0 commit comments

Comments
 (0)