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

Alex Deucher alexdeucher at gmail.com
Thu Dec 9 04:57:31 PST 2010


2010/12/9 Dave Airlie <airlied at gmail.com>:
> 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.
>

I have an 8 MB M6.

Alex


> and yeah no cc'ing just leave it in the patch, though Itihnk git send
> email can do it automagically.
>
> Dave.
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>


More information about the dri-devel mailing list