From: Thomas Hellstrom Date: Thu, 11 Feb 2010 23:18:00 +0000 (+0100) Subject: drm/ttm: Fix a bug occuring when validating a buffer object in a range. X-Git-Tag: v2.6.33~49^2~2 X-Git-Url: https://bbs.cooldavid.org/git/?a=commitdiff_plain;h=e22238ea37a870f70e34668a4992bde0c92bba8d;p=net-next-2.6.git drm/ttm: Fix a bug occuring when validating a buffer object in a range. If the buffer object was already in the requested memory type, but outside of the requested range it was never moved into the requested range. Signed-off-by: Thomas Hellstrom Signed-off-by: Dave Airlie --- diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index 1a3e909b7bb..c7320ce4567 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c @@ -1020,6 +1020,12 @@ static int ttm_bo_mem_compat(struct ttm_placement *placement, struct ttm_mem_reg *mem) { int i; + struct drm_mm_node *node = mem->mm_node; + + if (node && placement->lpfn != 0 && + (node->start < placement->fpfn || + node->start + node->size > placement->lpfn)) + return -1; for (i = 0; i < placement->num_placement; i++) { if ((placement->placement[i] & mem->placement &