| From 8d3bb23609d4ae22803a15d232289fc09a7b61c4 Mon Sep 17 00:00:00 2001 |
| From: Ben Skeggs <bskeggs@redhat.com> |
| Date: Mon, 22 Aug 2011 03:15:05 +0000 |
| Subject: drm/ttm: ensure ttm for new node is bound before calling move_notify() |
| |
| From: Ben Skeggs <bskeggs@redhat.com> |
| |
| 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 <bskeggs@redhat.com> |
| Signed-off-by: Dave Airlie <airlied@redhat.com> |
| Cc: Josh Boyer <jwboyer@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/gpu/drm/ttm/ttm_bo.c | 10 ++++++---- |
| 1 file changed, 6 insertions(+), 4 deletions(-) |
| |
| --- 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 |
| * 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) |