drm/amdkfd: Use kvmalloc instead of kmalloc for VCRAT
Since we're dynamically allocating the CPU VCRAT, use kvmalloc in case the allocation size is huge. Signed-off-by: Kent Russell <kent.russell@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
e8f58ee143
commit
d0e63b343e
@ -797,7 +797,8 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
|
||||
return -ENODATA;
|
||||
}
|
||||
|
||||
pcrat_image = kmemdup(crat_table, crat_table->length, GFP_KERNEL);
|
||||
pcrat_image = kvmalloc(crat_table->length, GFP_KERNEL);
|
||||
memcpy(pcrat_image, crat_table, crat_table->length);
|
||||
if (!pcrat_image)
|
||||
return -ENOMEM;
|
||||
|
||||
@ -1383,7 +1384,7 @@ int kfd_create_crat_image_virtual(void **crat_image, size_t *size,
|
||||
num_nodes * (sizeof(struct crat_subtype_computeunit) +
|
||||
sizeof(struct crat_subtype_memory) +
|
||||
(num_nodes - 1) * sizeof(struct crat_subtype_iolink));
|
||||
pcrat_image = kmalloc(dyn_size, GFP_KERNEL);
|
||||
pcrat_image = kvmalloc(dyn_size, GFP_KERNEL);
|
||||
if (!pcrat_image)
|
||||
return -ENOMEM;
|
||||
*size = dyn_size;
|
||||
@ -1393,7 +1394,7 @@ int kfd_create_crat_image_virtual(void **crat_image, size_t *size,
|
||||
case COMPUTE_UNIT_GPU:
|
||||
if (!kdev)
|
||||
return -EINVAL;
|
||||
pcrat_image = kmalloc(VCRAT_SIZE_FOR_GPU, GFP_KERNEL);
|
||||
pcrat_image = kvmalloc(VCRAT_SIZE_FOR_GPU, GFP_KERNEL);
|
||||
if (!pcrat_image)
|
||||
return -ENOMEM;
|
||||
*size = VCRAT_SIZE_FOR_GPU;
|
||||
@ -1412,7 +1413,7 @@ int kfd_create_crat_image_virtual(void **crat_image, size_t *size,
|
||||
if (!ret)
|
||||
*crat_image = pcrat_image;
|
||||
else
|
||||
kfree(pcrat_image);
|
||||
kvfree(pcrat_image);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user