mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-29 23:26:44 +07:00
drm/radeon: move size limits to gem_object_create.
Driver internal users shouldn't be limited in their allocation size. Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
59240ee3e8
commit
6c0d112f1f
@ -53,6 +53,7 @@ int radeon_gem_object_create(struct radeon_device *rdev, int size,
|
|||||||
struct drm_gem_object **obj)
|
struct drm_gem_object **obj)
|
||||||
{
|
{
|
||||||
struct radeon_bo *robj;
|
struct radeon_bo *robj;
|
||||||
|
unsigned long max_size;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
*obj = NULL;
|
*obj = NULL;
|
||||||
@ -60,6 +61,15 @@ int radeon_gem_object_create(struct radeon_device *rdev, int size,
|
|||||||
if (alignment < PAGE_SIZE) {
|
if (alignment < PAGE_SIZE) {
|
||||||
alignment = PAGE_SIZE;
|
alignment = PAGE_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* maximun bo size is the minimun btw visible vram and gtt size */
|
||||||
|
max_size = min(rdev->mc.visible_vram_size, rdev->mc.gtt_size);
|
||||||
|
if (size > max_size) {
|
||||||
|
printk(KERN_WARNING "%s:%d alloc size %dMb bigger than %ldMb limit\n",
|
||||||
|
__func__, __LINE__, size >> 20, max_size >> 20);
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
r = radeon_bo_create(rdev, size, alignment, kernel, initial_domain, NULL, &robj);
|
r = radeon_bo_create(rdev, size, alignment, kernel, initial_domain, NULL, &robj);
|
||||||
if (r) {
|
if (r) {
|
||||||
if (r != -ERESTARTSYS)
|
if (r != -ERESTARTSYS)
|
||||||
|
@ -105,7 +105,6 @@ int radeon_bo_create(struct radeon_device *rdev,
|
|||||||
struct radeon_bo *bo;
|
struct radeon_bo *bo;
|
||||||
enum ttm_bo_type type;
|
enum ttm_bo_type type;
|
||||||
unsigned long page_align = roundup(byte_align, PAGE_SIZE) >> PAGE_SHIFT;
|
unsigned long page_align = roundup(byte_align, PAGE_SIZE) >> PAGE_SHIFT;
|
||||||
unsigned long max_size = 0;
|
|
||||||
size_t acc_size;
|
size_t acc_size;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
@ -121,14 +120,6 @@ int radeon_bo_create(struct radeon_device *rdev,
|
|||||||
}
|
}
|
||||||
*bo_ptr = NULL;
|
*bo_ptr = NULL;
|
||||||
|
|
||||||
/* maximun bo size is the minimun btw visible vram and gtt size */
|
|
||||||
max_size = min(rdev->mc.visible_vram_size, rdev->mc.gtt_size);
|
|
||||||
if ((page_align << PAGE_SHIFT) >= max_size) {
|
|
||||||
printk(KERN_WARNING "%s:%d alloc size %ldM bigger than %ldMb limit\n",
|
|
||||||
__func__, __LINE__, page_align >> (20 - PAGE_SHIFT), max_size >> 20);
|
|
||||||
return -ENOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
acc_size = ttm_bo_dma_acc_size(&rdev->mman.bdev, size,
|
acc_size = ttm_bo_dma_acc_size(&rdev->mman.bdev, size,
|
||||||
sizeof(struct radeon_bo));
|
sizeof(struct radeon_bo));
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user