[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