mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
drm/amdkfd: fix vram allocation failure for a special case
[ Upstream commit 93aa919ca0 ]
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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
d367caca4a
commit
01ffa1ba69
@@ -1069,7 +1069,12 @@ static int kfd_ioctl_alloc_memory_of_gpu(struct file *filep,
|
|||||||
svm_range_list_lock_and_flush_work(&p->svms, current->mm);
|
svm_range_list_lock_and_flush_work(&p->svms, current->mm);
|
||||||
mutex_lock(&p->svms.lock);
|
mutex_lock(&p->svms.lock);
|
||||||
mmap_write_unlock(current->mm);
|
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 >> PAGE_SHIFT,
|
||||||
(args->va_addr + args->size - 1) >> PAGE_SHIFT)) {
|
(args->va_addr + args->size - 1) >> PAGE_SHIFT)) {
|
||||||
pr_err("Address: 0x%llx already allocated by SVM\n",
|
pr_err("Address: 0x%llx already allocated by SVM\n",
|
||||||
|
|||||||
Reference in New Issue
Block a user