This patch doesn't apply to the .36 stable tree If someone wants it applied there, please email the backport to [email protected]
thanks, greg k-h > commit: 93225b0d7bc030f4a93165347a65893685822d70 > From: Jerome Glisse <[email protected]> > Date: Fri, 3 Dec 2010 16:38:19 -0500 > Subject: [PATCH] drm/radeon/kms: forbid big bo allocation (fdo 31708) v3 > > 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 <[email protected]> > > Signed-off-by: Jerome Glisse <[email protected]> > Signed-off-by: Dave Airlie <[email protected]> > --- > 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 > @@ -69,7 +69,7 @@ void radeon_ttm_placement_from_domain(struct radeon_bo > *rbo, u32 domain) > u32 c = 0; > > rbo->placement.fpfn = 0; > - rbo->placement.lpfn = rbo->rdev->mc.active_vram_size >> PAGE_SHIFT; > + rbo->placement.lpfn = 0; > rbo->placement.placement = rbo->placements; > rbo->placement.busy_placement = rbo->placements; > if (domain & RADEON_GEM_DOMAIN_VRAM) > @@ -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; > int r; > > if (unlikely(rdev->mman.bdev.dev_mapping == NULL)) { > @@ -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; > + } > + > retry: > bo = kzalloc(sizeof(struct radeon_bo), GFP_KERNEL); > if (bo == NULL) > > _______________________________________________ > stable mailing list > [email protected] > http://linux.kernel.org/mailman/listinfo/stable _______________________________________________ stable mailing list [email protected] http://linux.kernel.org/mailman/listinfo/stable
