From: Ben Skeggs Date: Mon, 22 Aug 2011 03:15:05 +0000 (+0000) Subject: drm/ttm: ensure ttm for new node is bound before calling move_notify() X-Git-Tag: firefly_0821_release~7541^2~2580 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=379791a66688385cf75c8aece1a81fc68f536cd4;p=firefly-linux-kernel-4.4.55.git drm/ttm: ensure ttm for new node is bound before calling move_notify() commit 8d3bb23609d4ae22803a15d232289fc09a7b61c4 upstream. This was true for new TTM_PL_SYSTEM and new TTM_PL_TT cases, but wasn't the case on TTM_PL_SYSTEM<->TTM_PL_TT moves, which causes trouble on some paths as nouveau's move_notify() hook requires that the dma addresses be valid at this point. Signed-off-by: Ben Skeggs Signed-off-by: Dave Airlie Cc: Josh Boyer Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index b7f0726645ad..e2b2d7866877 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c @@ -392,10 +392,12 @@ static int ttm_bo_handle_move_mem(struct ttm_buffer_object *bo, * Create and bind a ttm if required. */ - if (!(new_man->flags & TTM_MEMTYPE_FLAG_FIXED) && (bo->ttm == NULL)) { - ret = ttm_bo_add_ttm(bo, false); - if (ret) - goto out_err; + if (!(new_man->flags & TTM_MEMTYPE_FLAG_FIXED)) { + if (bo->ttm == NULL) { + ret = ttm_bo_add_ttm(bo, false); + if (ret) + goto out_err; + } ret = ttm_tt_set_placement_caching(bo->ttm, mem->placement); if (ret)