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.