| From ecaac1c866bcda4780a963b3d18cd310d971aea3 Mon Sep 17 00:00:00 2001 |
| From: Egbert Eich <eich@suse.com> |
| Date: Wed, 17 Jul 2013 17:40:56 +0200 |
| Subject: drm/mgag200: Invalidate page tables when pinning a BO |
| |
| From: Egbert Eich <eich@suse.com> |
| |
| commit ecaac1c866bcda4780a963b3d18cd310d971aea3 upstream. |
| |
| When a BO gets pinned the placement may get changed. If the memory is |
| mapped into user space and user space has already accessed the mapped |
| range the page tables are set up but now point to the wrong memory. |
| Set bo.mdev->dev_mapping in mgag200_bo_create() to make sure that |
| ttm_bo_unmap_virtual() called from ttm_bo_handle_move_mem() will take |
| care of this. |
| |
| v2: Don't call ttm_bo_unmap_virtual() in mgag200_bo_pin(), fix comment. |
| |
| Signed-off-by: Egbert Eich <eich@suse.com> |
| Signed-off-by: Dave Airlie <airlied@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/gpu/drm/mgag200/mgag200_ttm.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/drivers/gpu/drm/mgag200/mgag200_ttm.c |
| +++ b/drivers/gpu/drm/mgag200/mgag200_ttm.c |
| @@ -347,6 +347,7 @@ int mgag200_bo_create(struct drm_device |
| |
| mgabo->gem.driver_private = NULL; |
| mgabo->bo.bdev = &mdev->ttm.bdev; |
| + mgabo->bo.bdev->dev_mapping = dev->dev_mapping; |
| |
| mgag200_ttm_placement(mgabo, TTM_PL_FLAG_VRAM | TTM_PL_FLAG_SYSTEM); |
| |