]> www.infradead.org Git - users/hch/misc.git/commitdiff
drm/amdkfd: fix vram allocation failure for a special case
authorEric Huang <jinhuieric.huang@amd.com>
Mon, 18 Aug 2025 18:22:53 +0000 (14:22 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 27 Aug 2025 17:57:48 +0000 (13:57 -0400)
When it only allocates vram without va, which is 0, and a
SVM range allocated stays in this range, the vram allocation
returns failure. It should be skipped for this case from
SVM usage check.

Signed-off-by: Eric Huang <jinhuieric.huang@amd.com>
Reviewed-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdkfd/kfd_chardev.c

index 79ed3be63d0dd291cf383c62e9ec83c2bf13d767..43115a3744694337204b9a1dbc7a769de7195833 100644 (file)
@@ -1070,7 +1070,12 @@ static int kfd_ioctl_alloc_memory_of_gpu(struct file *filep,
        svm_range_list_lock_and_flush_work(&p->svms, current->mm);
        mutex_lock(&p->svms.lock);
        mmap_write_unlock(current->mm);
-       if (interval_tree_iter_first(&p->svms.objects,
+
+       /* Skip a special case that allocates VRAM without VA,
+        * VA will be invalid of 0.
+        */
+       if (!(!args->va_addr && (flags & KFD_IOC_ALLOC_MEM_FLAGS_VRAM)) &&
+           interval_tree_iter_first(&p->svms.objects,
                                     args->va_addr >> PAGE_SHIFT,
                                     (args->va_addr + args->size - 1) >> PAGE_SHIFT)) {
                pr_err("Address: 0x%llx already allocated by SVM\n",