mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 17:54:13 +08: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 radeon_bo *robj;
|
||||
unsigned long max_size;
|
||||
int r;
|
||||
|
||||
*obj = NULL;
|
||||
@ -60,6 +61,15 @@ int radeon_gem_object_create(struct radeon_device *rdev, int size,
|
||||
if (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);
|
||||
if (r) {
|
||||
if (r != -ERESTARTSYS)
|
||||
|
@ -105,7 +105,6 @@ int radeon_bo_create(struct radeon_device *rdev,
|
||||
struct radeon_bo *bo;
|
||||
enum ttm_bo_type type;
|
||||
unsigned long page_align = roundup(byte_align, PAGE_SIZE) >> PAGE_SHIFT;
|
||||
unsigned long max_size = 0;
|
||||
size_t acc_size;
|
||||
int r;
|
||||
|
||||
@ -121,14 +120,6 @@ int radeon_bo_create(struct radeon_device *rdev,
|
||||
}
|
||||
*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,
|
||||
sizeof(struct radeon_bo));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user