[PATCH] drm/radeon/kms: forbid big bo allocation (fdo 31708) v3

Dave Airlie airlied at gmail.com
Thu Dec 9 02:19:06 PST 2010


2010/12/9 Michel Dänzer <michel at daenzer.net>:
> On Fre, 2010-12-03 at 16:38 -0500, jglisse at redhat.com wrote:
>> From: Jerome Glisse <jglisse at redhat.com>
>>
>> Forbid allocating buffer bigger than visible VRAM or GTT, also
>> properly set lpfn field.
>>
>> v2 - use max macro
>>    - silence warning
>> v3 - don't explicitly set range limit
>>    - use min macro
>>
>> Cc: stable <stable at kernel.org>
>>
>> Signed-off-by: Jerome Glisse <jglisse at redhat.com>
>> ---
>>  drivers/gpu/drm/radeon/radeon_object.c |   13 +++++++++++--
>>  1 files changed, 11 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c
>> index 1d06774..a598d00 100644
>> --- a/drivers/gpu/drm/radeon/radeon_object.c
>> +++ b/drivers/gpu/drm/radeon/radeon_object.c
>> @@ -91,7 +91,8 @@ int radeon_bo_create(struct radeon_device *rdev, struct drm_gem_object *gobj,
>>  {
>>       struct radeon_bo *bo;
>>       enum ttm_bo_type type;
>> -     int 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;
>
> The initialization of max_size is superfluous.
>
>
>> @@ -104,6 +105,14 @@ int radeon_bo_create(struct radeon_device *rdev, struct drm_gem_object *gobj,
>>       }
>>       *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;
>> +     }
>
> Still not sure this simple minimum is quite the right solution... e.g.
> if GTT is larger than visible VRAM, what's the problem with having a BO
> that fits in GTT but not in visible VRAM? On systems with 8 MB of VRAM,
> this will effectively limit the maximum texture size to 2048x1024.

Just wondering if such a card exists, the only 8MB cards I know are
pre-r100, I think a 16MB M6 is the lowest one I can find.

and yeah no cc'ing just leave it in the patch, though Itihnk git send
email can do it automagically.

Dave.


More information about the dri-devel mailing list