aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3603-drm-ttm-drop-ttm-dummy_read_page.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3603-drm-ttm-drop-ttm-dummy_read_page.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3603-drm-ttm-drop-ttm-dummy_read_page.patch502
1 files changed, 502 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3603-drm-ttm-drop-ttm-dummy_read_page.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3603-drm-ttm-drop-ttm-dummy_read_page.patch
new file mode 100644
index 00000000..2f483884
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3603-drm-ttm-drop-ttm-dummy_read_page.patch
@@ -0,0 +1,502 @@
+From df190e632b8ceb70d03cc30d69892763e5df3071 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
+Date: Wed, 21 Feb 2018 20:34:13 +0100
+Subject: [PATCH 3603/4131] drm/ttm: drop ttm->dummy_read_page
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Only used by the AGP backend and there it can be easily accessed using
+ttm->bdev->glob.
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Kalyan Alle <kalyan.alle@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 5 ++---
+ drivers/gpu/drm/ast/ast_ttm.c | 5 ++---
+ drivers/gpu/drm/bochs/bochs_mm.c | 5 ++---
+ drivers/gpu/drm/cirrus/cirrus_ttm.c | 5 ++---
+ drivers/gpu/drm/hisilicon/hibmc/hibmc_ttm.c | 5 ++---
+ drivers/gpu/drm/mgag200/mgag200_ttm.c | 5 ++---
+ drivers/gpu/drm/nouveau/nouveau_bo.c | 6 +++---
+ drivers/gpu/drm/nouveau/nouveau_sgdma.c | 5 ++---
+ drivers/gpu/drm/nouveau/nouveau_ttm.h | 3 +--
+ drivers/gpu/drm/qxl/qxl_ttm.c | 6 ++----
+ drivers/gpu/drm/radeon/radeon_ttm.c | 7 +++----
+ drivers/gpu/drm/ttm/ttm_agp_backend.c | 8 ++++----
+ drivers/gpu/drm/ttm/ttm_bo.c | 6 ++----
+ drivers/gpu/drm/ttm/ttm_tt.c | 8 ++------
+ drivers/gpu/drm/virtio/virtgpu_ttm.c | 6 ++----
+ drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c | 9 +++------
+ include/drm/ttm/ttm_bo_driver.h | 21 ++++++++-------------
+ 17 files changed, 44 insertions(+), 71 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+index 8412f6d..36a3d7e 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+@@ -1043,8 +1043,7 @@ static struct ttm_backend_func amdgpu_backend_func = {
+ };
+
+ static struct ttm_tt *amdgpu_ttm_tt_create(struct ttm_bo_device *bdev,
+- unsigned long size, uint32_t page_flags,
+- struct page *dummy_read_page)
++ unsigned long size, uint32_t page_flags)
+ {
+ struct amdgpu_device *adev;
+ struct amdgpu_ttm_tt *gtt;
+@@ -1057,7 +1056,7 @@ static struct ttm_tt *amdgpu_ttm_tt_create(struct ttm_bo_device *bdev,
+ }
+ gtt->ttm.ttm.func = &amdgpu_backend_func;
+ gtt->adev = adev;
+- if (ttm_dma_tt_init(&gtt->ttm, bdev, size, page_flags, dummy_read_page)) {
++ if (ttm_dma_tt_init(&gtt->ttm, bdev, size, page_flags)) {
+ kfree(gtt);
+ return NULL;
+ }
+diff --git a/drivers/gpu/drm/ast/ast_ttm.c b/drivers/gpu/drm/ast/ast_ttm.c
+index 696a15d..9c0c44b 100644
+--- a/drivers/gpu/drm/ast/ast_ttm.c
++++ b/drivers/gpu/drm/ast/ast_ttm.c
+@@ -200,8 +200,7 @@ static struct ttm_backend_func ast_tt_backend_func = {
+
+
+ static struct ttm_tt *ast_ttm_tt_create(struct ttm_bo_device *bdev,
+- unsigned long size, uint32_t page_flags,
+- struct page *dummy_read_page)
++ unsigned long size, uint32_t page_flags)
+ {
+ struct ttm_tt *tt;
+
+@@ -209,7 +208,7 @@ static struct ttm_tt *ast_ttm_tt_create(struct ttm_bo_device *bdev,
+ if (tt == NULL)
+ return NULL;
+ tt->func = &ast_tt_backend_func;
+- if (ttm_tt_init(tt, bdev, size, page_flags, dummy_read_page)) {
++ if (ttm_tt_init(tt, bdev, size, page_flags)) {
+ kfree(tt);
+ return NULL;
+ }
+diff --git a/drivers/gpu/drm/bochs/bochs_mm.c b/drivers/gpu/drm/bochs/bochs_mm.c
+index c4cadb6..7b48dda 100644
+--- a/drivers/gpu/drm/bochs/bochs_mm.c
++++ b/drivers/gpu/drm/bochs/bochs_mm.c
+@@ -178,8 +178,7 @@ static struct ttm_backend_func bochs_tt_backend_func = {
+
+ static struct ttm_tt *bochs_ttm_tt_create(struct ttm_bo_device *bdev,
+ unsigned long size,
+- uint32_t page_flags,
+- struct page *dummy_read_page)
++ uint32_t page_flags)
+ {
+ struct ttm_tt *tt;
+
+@@ -187,7 +186,7 @@ static struct ttm_tt *bochs_ttm_tt_create(struct ttm_bo_device *bdev,
+ if (tt == NULL)
+ return NULL;
+ tt->func = &bochs_tt_backend_func;
+- if (ttm_tt_init(tt, bdev, size, page_flags, dummy_read_page)) {
++ if (ttm_tt_init(tt, bdev, size, page_flags)) {
+ kfree(tt);
+ return NULL;
+ }
+diff --git a/drivers/gpu/drm/cirrus/cirrus_ttm.c b/drivers/gpu/drm/cirrus/cirrus_ttm.c
+index 1ff1838..1546efb 100644
+--- a/drivers/gpu/drm/cirrus/cirrus_ttm.c
++++ b/drivers/gpu/drm/cirrus/cirrus_ttm.c
+@@ -200,8 +200,7 @@ static struct ttm_backend_func cirrus_tt_backend_func = {
+
+
+ static struct ttm_tt *cirrus_ttm_tt_create(struct ttm_bo_device *bdev,
+- unsigned long size, uint32_t page_flags,
+- struct page *dummy_read_page)
++ unsigned long size, uint32_t page_flags)
+ {
+ struct ttm_tt *tt;
+
+@@ -209,7 +208,7 @@ static struct ttm_tt *cirrus_ttm_tt_create(struct ttm_bo_device *bdev,
+ if (tt == NULL)
+ return NULL;
+ tt->func = &cirrus_tt_backend_func;
+- if (ttm_tt_init(tt, bdev, size, page_flags, dummy_read_page)) {
++ if (ttm_tt_init(tt, bdev, size, page_flags)) {
+ kfree(tt);
+ return NULL;
+ }
+diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_ttm.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_ttm.c
+index 3518167..8cf4f3c 100644
+--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_ttm.c
++++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_ttm.c
+@@ -202,8 +202,7 @@ static struct ttm_backend_func hibmc_tt_backend_func = {
+
+ static struct ttm_tt *hibmc_ttm_tt_create(struct ttm_bo_device *bdev,
+ unsigned long size,
+- u32 page_flags,
+- struct page *dummy_read_page)
++ u32 page_flags)
+ {
+ struct ttm_tt *tt;
+ int ret;
+@@ -214,7 +213,7 @@ static struct ttm_tt *hibmc_ttm_tt_create(struct ttm_bo_device *bdev,
+ return NULL;
+ }
+ tt->func = &hibmc_tt_backend_func;
+- ret = ttm_tt_init(tt, bdev, size, page_flags, dummy_read_page);
++ ret = ttm_tt_init(tt, bdev, size, page_flags);
+ if (ret) {
+ DRM_ERROR("failed to initialize ttm_tt: %d\n", ret);
+ kfree(tt);
+diff --git a/drivers/gpu/drm/mgag200/mgag200_ttm.c b/drivers/gpu/drm/mgag200/mgag200_ttm.c
+index 3e7e1cd..54703b9 100644
+--- a/drivers/gpu/drm/mgag200/mgag200_ttm.c
++++ b/drivers/gpu/drm/mgag200/mgag200_ttm.c
+@@ -200,8 +200,7 @@ static struct ttm_backend_func mgag200_tt_backend_func = {
+
+
+ static struct ttm_tt *mgag200_ttm_tt_create(struct ttm_bo_device *bdev,
+- unsigned long size, uint32_t page_flags,
+- struct page *dummy_read_page)
++ unsigned long size, uint32_t page_flags)
+ {
+ struct ttm_tt *tt;
+
+@@ -209,7 +208,7 @@ static struct ttm_tt *mgag200_ttm_tt_create(struct ttm_bo_device *bdev,
+ if (tt == NULL)
+ return NULL;
+ tt->func = &mgag200_tt_backend_func;
+- if (ttm_tt_init(tt, bdev, size, page_flags, dummy_read_page)) {
++ if (ttm_tt_init(tt, bdev, size, page_flags)) {
+ kfree(tt);
+ return NULL;
+ }
+diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
+index e427f80..77c9571 100644
+--- a/drivers/gpu/drm/nouveau/nouveau_bo.c
++++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
+@@ -542,18 +542,18 @@ nouveau_bo_wr32(struct nouveau_bo *nvbo, unsigned index, u32 val)
+
+ static struct ttm_tt *
+ nouveau_ttm_tt_create(struct ttm_bo_device *bdev, unsigned long size,
+- uint32_t page_flags, struct page *dummy_read)
++ uint32_t page_flags)
+ {
+ #if IS_ENABLED(CONFIG_AGP)
+ struct nouveau_drm *drm = nouveau_bdev(bdev);
+
+ if (drm->agp.bridge) {
+ return ttm_agp_tt_create(bdev, drm->agp.bridge, size,
+- page_flags, dummy_read);
++ page_flags);
+ }
+ #endif
+
+- return nouveau_sgdma_create_ttm(bdev, size, page_flags, dummy_read);
++ return nouveau_sgdma_create_ttm(bdev, size, page_flags);
+ }
+
+ static int
+diff --git a/drivers/gpu/drm/nouveau/nouveau_sgdma.c b/drivers/gpu/drm/nouveau/nouveau_sgdma.c
+index fde11ce..99511b6 100644
+--- a/drivers/gpu/drm/nouveau/nouveau_sgdma.c
++++ b/drivers/gpu/drm/nouveau/nouveau_sgdma.c
+@@ -91,8 +91,7 @@ static struct ttm_backend_func nv50_sgdma_backend = {
+
+ struct ttm_tt *
+ nouveau_sgdma_create_ttm(struct ttm_bo_device *bdev,
+- unsigned long size, uint32_t page_flags,
+- struct page *dummy_read_page)
++ unsigned long size, uint32_t page_flags)
+ {
+ struct nouveau_drm *drm = nouveau_bdev(bdev);
+ struct nouveau_sgdma_be *nvbe;
+@@ -106,7 +105,7 @@ nouveau_sgdma_create_ttm(struct ttm_bo_device *bdev,
+ else
+ nvbe->ttm.ttm.func = &nv50_sgdma_backend;
+
+- if (ttm_dma_tt_init(&nvbe->ttm, bdev, size, page_flags, dummy_read_page))
++ if (ttm_dma_tt_init(&nvbe->ttm, bdev, size, page_flags))
+ /*
+ * A failing ttm_dma_tt_init() will call ttm_tt_destroy()
+ * and thus our nouveau_sgdma_destroy() hook, so we don't need
+diff --git a/drivers/gpu/drm/nouveau/nouveau_ttm.h b/drivers/gpu/drm/nouveau/nouveau_ttm.h
+index 96082b6..64e484e 100644
+--- a/drivers/gpu/drm/nouveau/nouveau_ttm.h
++++ b/drivers/gpu/drm/nouveau/nouveau_ttm.h
+@@ -13,8 +13,7 @@ extern const struct ttm_mem_type_manager_func nouveau_gart_manager;
+ extern const struct ttm_mem_type_manager_func nv04_gart_manager;
+
+ struct ttm_tt *nouveau_sgdma_create_ttm(struct ttm_bo_device *,
+- unsigned long size, u32 page_flags,
+- struct page *dummy_read_page);
++ unsigned long size, u32 page_flags);
+
+ int nouveau_ttm_init(struct nouveau_drm *drm);
+ void nouveau_ttm_fini(struct nouveau_drm *drm);
+diff --git a/drivers/gpu/drm/qxl/qxl_ttm.c b/drivers/gpu/drm/qxl/qxl_ttm.c
+index 7ecf8a4..955cd45 100644
+--- a/drivers/gpu/drm/qxl/qxl_ttm.c
++++ b/drivers/gpu/drm/qxl/qxl_ttm.c
+@@ -314,8 +314,7 @@ static void qxl_ttm_tt_unpopulate(struct ttm_tt *ttm)
+ }
+
+ static struct ttm_tt *qxl_ttm_tt_create(struct ttm_bo_device *bdev,
+- unsigned long size, uint32_t page_flags,
+- struct page *dummy_read_page)
++ unsigned long size, uint32_t page_flags)
+ {
+ struct qxl_device *qdev;
+ struct qxl_ttm_tt *gtt;
+@@ -326,8 +325,7 @@ static struct ttm_tt *qxl_ttm_tt_create(struct ttm_bo_device *bdev,
+ return NULL;
+ gtt->ttm.ttm.func = &qxl_backend_func;
+ gtt->qdev = qdev;
+- if (ttm_dma_tt_init(&gtt->ttm, bdev, size, page_flags,
+- dummy_read_page)) {
++ if (ttm_dma_tt_init(&gtt->ttm, bdev, size, page_flags)) {
+ kfree(gtt);
+ return NULL;
+ }
+diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
+index 8032da5..7bc0b61 100644
+--- a/drivers/gpu/drm/radeon/radeon_ttm.c
++++ b/drivers/gpu/drm/radeon/radeon_ttm.c
+@@ -687,8 +687,7 @@ static struct ttm_backend_func radeon_backend_func = {
+ };
+
+ static struct ttm_tt *radeon_ttm_tt_create(struct ttm_bo_device *bdev,
+- unsigned long size, uint32_t page_flags,
+- struct page *dummy_read_page)
++ unsigned long size, uint32_t page_flags)
+ {
+ struct radeon_device *rdev;
+ struct radeon_ttm_tt *gtt;
+@@ -697,7 +696,7 @@ static struct ttm_tt *radeon_ttm_tt_create(struct ttm_bo_device *bdev,
+ #if IS_ENABLED(CONFIG_AGP)
+ if (rdev->flags & RADEON_IS_AGP) {
+ return ttm_agp_tt_create(bdev, rdev->ddev->agp->bridge,
+- size, page_flags, dummy_read_page);
++ size, page_flags);
+ }
+ #endif
+
+@@ -707,7 +706,7 @@ static struct ttm_tt *radeon_ttm_tt_create(struct ttm_bo_device *bdev,
+ }
+ gtt->ttm.ttm.func = &radeon_backend_func;
+ gtt->rdev = rdev;
+- if (ttm_dma_tt_init(&gtt->ttm, bdev, size, page_flags, dummy_read_page)) {
++ if (ttm_dma_tt_init(&gtt->ttm, bdev, size, page_flags)) {
+ kfree(gtt);
+ return NULL;
+ }
+diff --git a/drivers/gpu/drm/ttm/ttm_agp_backend.c b/drivers/gpu/drm/ttm/ttm_agp_backend.c
+index 028ab60..cfd1931 100644
+--- a/drivers/gpu/drm/ttm/ttm_agp_backend.c
++++ b/drivers/gpu/drm/ttm/ttm_agp_backend.c
+@@ -50,6 +50,7 @@ struct ttm_agp_backend {
+ static int ttm_agp_bind(struct ttm_tt *ttm, struct ttm_mem_reg *bo_mem)
+ {
+ struct ttm_agp_backend *agp_be = container_of(ttm, struct ttm_agp_backend, ttm);
++ struct page *dummy_read_page = ttm->bdev->glob->dummy_read_page;
+ struct drm_mm_node *node = bo_mem->mm_node;
+ struct agp_memory *mem;
+ int ret, cached = (bo_mem->placement & TTM_PL_FLAG_CACHED);
+@@ -64,7 +65,7 @@ static int ttm_agp_bind(struct ttm_tt *ttm, struct ttm_mem_reg *bo_mem)
+ struct page *page = ttm->pages[i];
+
+ if (!page)
+- page = ttm->dummy_read_page;
++ page = dummy_read_page;
+
+ mem->pages[mem->page_count++] = page;
+ }
+@@ -111,8 +112,7 @@ static struct ttm_backend_func ttm_agp_func = {
+
+ struct ttm_tt *ttm_agp_tt_create(struct ttm_bo_device *bdev,
+ struct agp_bridge_data *bridge,
+- unsigned long size, uint32_t page_flags,
+- struct page *dummy_read_page)
++ unsigned long size, uint32_t page_flags)
+ {
+ struct ttm_agp_backend *agp_be;
+
+@@ -124,7 +124,7 @@ struct ttm_tt *ttm_agp_tt_create(struct ttm_bo_device *bdev,
+ agp_be->bridge = bridge;
+ agp_be->ttm.func = &ttm_agp_func;
+
+- if (ttm_tt_init(&agp_be->ttm, bdev, size, page_flags, dummy_read_page)) {
++ if (ttm_tt_init(&agp_be->ttm, bdev, size, page_flags)) {
+ kfree(agp_be);
+ return NULL;
+ }
+diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
+index 68eed68..0e9b255 100644
+--- a/drivers/gpu/drm/ttm/ttm_bo.c
++++ b/drivers/gpu/drm/ttm/ttm_bo.c
+@@ -230,7 +230,6 @@ EXPORT_SYMBOL(ttm_bo_move_to_lru_tail);
+ static int ttm_bo_add_ttm(struct ttm_buffer_object *bo, bool zero_alloc)
+ {
+ struct ttm_bo_device *bdev = bo->bdev;
+- struct ttm_bo_global *glob = bo->glob;
+ int ret = 0;
+ uint32_t page_flags = 0;
+
+@@ -246,14 +245,13 @@ static int ttm_bo_add_ttm(struct ttm_buffer_object *bo, bool zero_alloc)
+ page_flags |= TTM_PAGE_FLAG_ZERO_ALLOC;
+ case ttm_bo_type_kernel:
+ bo->ttm = bdev->driver->ttm_tt_create(bdev, bo->num_pages << PAGE_SHIFT,
+- page_flags, glob->dummy_read_page);
++ page_flags);
+ if (unlikely(bo->ttm == NULL))
+ ret = -ENOMEM;
+ break;
+ case ttm_bo_type_sg:
+ bo->ttm = bdev->driver->ttm_tt_create(bdev, bo->num_pages << PAGE_SHIFT,
+- page_flags | TTM_PAGE_FLAG_SG,
+- glob->dummy_read_page);
++ page_flags | TTM_PAGE_FLAG_SG);
+ if (unlikely(bo->ttm == NULL)) {
+ ret = -ENOMEM;
+ break;
+diff --git a/drivers/gpu/drm/ttm/ttm_tt.c b/drivers/gpu/drm/ttm/ttm_tt.c
+index 8ebc8d3..52ef502 100644
+--- a/drivers/gpu/drm/ttm/ttm_tt.c
++++ b/drivers/gpu/drm/ttm/ttm_tt.c
+@@ -185,15 +185,13 @@ void ttm_tt_destroy(struct ttm_tt *ttm)
+ }
+
+ int ttm_tt_init(struct ttm_tt *ttm, struct ttm_bo_device *bdev,
+- unsigned long size, uint32_t page_flags,
+- struct page *dummy_read_page)
++ unsigned long size, uint32_t page_flags)
+ {
+ ttm->bdev = bdev;
+ ttm->glob = bdev->glob;
+ ttm->num_pages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT;
+ ttm->caching_state = tt_cached;
+ ttm->page_flags = page_flags;
+- ttm->dummy_read_page = dummy_read_page;
+ ttm->state = tt_unpopulated;
+ ttm->swap_storage = NULL;
+
+@@ -215,8 +213,7 @@ void ttm_tt_fini(struct ttm_tt *ttm)
+ EXPORT_SYMBOL(ttm_tt_fini);
+
+ int ttm_dma_tt_init(struct ttm_dma_tt *ttm_dma, struct ttm_bo_device *bdev,
+- unsigned long size, uint32_t page_flags,
+- struct page *dummy_read_page)
++ unsigned long size, uint32_t page_flags)
+ {
+ struct ttm_tt *ttm = &ttm_dma->ttm;
+
+@@ -225,7 +222,6 @@ int ttm_dma_tt_init(struct ttm_dma_tt *ttm_dma, struct ttm_bo_device *bdev,
+ ttm->num_pages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT;
+ ttm->caching_state = tt_cached;
+ ttm->page_flags = page_flags;
+- ttm->dummy_read_page = dummy_read_page;
+ ttm->state = tt_unpopulated;
+ ttm->swap_storage = NULL;
+
+diff --git a/drivers/gpu/drm/virtio/virtgpu_ttm.c b/drivers/gpu/drm/virtio/virtgpu_ttm.c
+index cd389c5..f94becd 100644
+--- a/drivers/gpu/drm/virtio/virtgpu_ttm.c
++++ b/drivers/gpu/drm/virtio/virtgpu_ttm.c
+@@ -339,8 +339,7 @@ static void virtio_gpu_ttm_tt_unpopulate(struct ttm_tt *ttm)
+
+ static struct ttm_tt *virtio_gpu_ttm_tt_create(struct ttm_bo_device *bdev,
+ unsigned long size,
+- uint32_t page_flags,
+- struct page *dummy_read_page)
++ uint32_t page_flags)
+ {
+ struct virtio_gpu_device *vgdev;
+ struct virtio_gpu_ttm_tt *gtt;
+@@ -351,8 +350,7 @@ static struct ttm_tt *virtio_gpu_ttm_tt_create(struct ttm_bo_device *bdev,
+ return NULL;
+ gtt->ttm.ttm.func = &virtio_gpu_backend_func;
+ gtt->vgdev = vgdev;
+- if (ttm_dma_tt_init(&gtt->ttm, bdev, size, page_flags,
+- dummy_read_page)) {
++ if (ttm_dma_tt_init(&gtt->ttm, bdev, size, page_flags)) {
+ kfree(gtt);
+ return NULL;
+ }
+diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c b/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c
+index c705632..c762686 100644
+--- a/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c
++++ b/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c
+@@ -690,8 +690,7 @@ static struct ttm_backend_func vmw_ttm_func = {
+ };
+
+ static struct ttm_tt *vmw_ttm_tt_create(struct ttm_bo_device *bdev,
+- unsigned long size, uint32_t page_flags,
+- struct page *dummy_read_page)
++ unsigned long size, uint32_t page_flags)
+ {
+ struct vmw_ttm_tt *vmw_be;
+ int ret;
+@@ -705,11 +704,9 @@ static struct ttm_tt *vmw_ttm_tt_create(struct ttm_bo_device *bdev,
+ vmw_be->mob = NULL;
+
+ if (vmw_be->dev_priv->map_mode == vmw_dma_alloc_coherent)
+- ret = ttm_dma_tt_init(&vmw_be->dma_ttm, bdev, size, page_flags,
+- dummy_read_page);
++ ret = ttm_dma_tt_init(&vmw_be->dma_ttm, bdev, size, page_flags);
+ else
+- ret = ttm_tt_init(&vmw_be->dma_ttm.ttm, bdev, size, page_flags,
+- dummy_read_page);
++ ret = ttm_tt_init(&vmw_be->dma_ttm.ttm, bdev, size, page_flags);
+ if (unlikely(ret != 0))
+ goto out_no_init;
+
+diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h
+index b980ed8..0a3b1bf 100644
+--- a/include/drm/ttm/ttm_bo_driver.h
++++ b/include/drm/ttm/ttm_bo_driver.h
+@@ -338,11 +338,9 @@ struct ttm_bo_driver {
+ * Returns:
+ * NULL: Out of memory.
+ */
+- struct ttm_tt *(*ttm_tt_create)(struct ttm_bo_device *bdev,
+- unsigned long size,
+- uint32_t page_flags,
+- struct page *dummy_read_page);
+-
++ struct ttm_tt *(*ttm_tt_create)(struct ttm_bo_device *bdev,
++ unsigned long size,
++ uint32_t page_flags);
+ /**
+ * ttm_tt_populate
+ *
+@@ -630,11 +628,9 @@ ttm_flag_masked(uint32_t *old, uint32_t new, uint32_t mask)
+ * NULL: Out of memory.
+ */
+ extern int ttm_tt_init(struct ttm_tt *ttm, struct ttm_bo_device *bdev,
+- unsigned long size, uint32_t page_flags,
+- struct page *dummy_read_page);
++ unsigned long size, uint32_t page_flags);
+ extern int ttm_dma_tt_init(struct ttm_dma_tt *ttm_dma, struct ttm_bo_device *bdev,
+- unsigned long size, uint32_t page_flags,
+- struct page *dummy_read_page);
++ unsigned long size, uint32_t page_flags);
+
+ /**
+ * ttm_tt_fini
+@@ -1110,10 +1106,9 @@ extern const struct ttm_mem_type_manager_func ttm_bo_manager_func;
+ * for TT memory. This function uses the linux agpgart interface to
+ * bind and unbind memory backing a ttm_tt.
+ */
+-extern struct ttm_tt *ttm_agp_tt_create(struct ttm_bo_device *bdev,
+- struct agp_bridge_data *bridge,
+- unsigned long size, uint32_t page_flags,
+- struct page *dummy_read_page);
++struct ttm_tt *ttm_agp_tt_create(struct ttm_bo_device *bdev,
++ struct agp_bridge_data *bridge,
++ unsigned long size, uint32_t page_flags);
+ int ttm_agp_tt_populate(struct ttm_tt *ttm);
+ void ttm_agp_tt_unpopulate(struct ttm_tt *ttm);
+ #endif
+--
+2.7.4
+