aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3733-drm-ttm-use-an-operation-ctx-for-ttm_tt_populate-in-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3733-drm-ttm-use-an-operation-ctx-for-ttm_tt_populate-in-.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3733-drm-ttm-use-an-operation-ctx-for-ttm_tt_populate-in-.patch519
1 files changed, 519 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3733-drm-ttm-use-an-operation-ctx-for-ttm_tt_populate-in-.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3733-drm-ttm-use-an-operation-ctx-for-ttm_tt_populate-in-.patch
new file mode 100644
index 00000000..19c64da8
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3733-drm-ttm-use-an-operation-ctx-for-ttm_tt_populate-in-.patch
@@ -0,0 +1,519 @@
+From 8932e0ab61727aafc66c092d4037ccefab7a3be6 Mon Sep 17 00:00:00 2001
+From: Roger He <Hongbo.He@amd.com>
+Date: Thu, 21 Dec 2017 17:42:50 +0800
+Subject: [PATCH 3733/4131] drm/ttm: use an operation ctx for ttm_tt_populate
+ in ttm_bo_driver (v2)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+forward the operation context to ttm_tt_populate as well,
+and the ultimate goal is swapout enablement for reserved BOs.
+
+v2: squash in fix for vboxvideo
+
+Reviewed-by: Christian König <christian.koenig@amd.com>
+Signed-off-by: Roger He <Hongbo.He@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 5 +++--
+ drivers/gpu/drm/ast/ast_ttm.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/qxl/qxl_ttm.c | 5 +++--
+ drivers/gpu/drm/radeon/radeon_ttm.c | 9 +++++----
+ drivers/gpu/drm/ttm/ttm_agp_backend.c | 4 ++--
+ drivers/gpu/drm/ttm/ttm_bo_util.c | 11 ++++++++---
+ drivers/gpu/drm/ttm/ttm_bo_vm.c | 7 ++++++-
+ drivers/gpu/drm/ttm/ttm_page_alloc.c | 13 +++++--------
+ drivers/gpu/drm/ttm/ttm_page_alloc_dma.c | 9 +++------
+ drivers/gpu/drm/ttm/ttm_tt.c | 6 +++++-
+ drivers/gpu/drm/virtio/virtgpu_object.c | 6 +++++-
+ drivers/gpu/drm/virtio/virtgpu_ttm.c | 5 +++--
+ drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c | 13 +++++--------
+ drivers/gpu/drm/vmwgfx/vmwgfx_mob.c | 13 +++++++++++--
+ 18 files changed, 79 insertions(+), 53 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+index c98cfd4..0e96eff 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+@@ -1056,7 +1056,8 @@ static struct ttm_tt *amdgpu_ttm_tt_create(struct ttm_buffer_object *bo,
+ return &gtt->ttm.ttm;
+ }
+
+-static int amdgpu_ttm_tt_populate(struct ttm_tt *ttm)
++static int amdgpu_ttm_tt_populate(struct ttm_tt *ttm,
++ struct ttm_operation_ctx *ctx)
+ {
+ struct amdgpu_device *adev = amdgpu_ttm_adev(ttm->bdev);
+ struct amdgpu_ttm_tt *gtt = (void *)ttm;
+@@ -1080,7 +1081,7 @@ static int amdgpu_ttm_tt_populate(struct ttm_tt *ttm)
+ return 0;
+ }
+
+- return ttm_populate_and_map_pages(adev->dev, &gtt->ttm);
++ return ttm_populate_and_map_pages(adev->dev, &gtt->ttm, ctx);
+ }
+
+ static void amdgpu_ttm_tt_unpopulate(struct ttm_tt *ttm)
+diff --git a/drivers/gpu/drm/ast/ast_ttm.c b/drivers/gpu/drm/ast/ast_ttm.c
+index c864bb4..9733f47 100644
+--- a/drivers/gpu/drm/ast/ast_ttm.c
++++ b/drivers/gpu/drm/ast/ast_ttm.c
+@@ -215,9 +215,10 @@ static struct ttm_tt *ast_ttm_tt_create(struct ttm_buffer_object *bo,
+ return tt;
+ }
+
+-static int ast_ttm_tt_populate(struct ttm_tt *ttm)
++static int ast_ttm_tt_populate(struct ttm_tt *ttm,
++ struct ttm_operation_ctx *ctx)
+ {
+- return ttm_pool_populate(ttm);
++ return ttm_pool_populate(ttm, ctx);
+ }
+
+ static void ast_ttm_tt_unpopulate(struct ttm_tt *ttm)
+diff --git a/drivers/gpu/drm/cirrus/cirrus_ttm.c b/drivers/gpu/drm/cirrus/cirrus_ttm.c
+index cafa62d..d732086 100644
+--- a/drivers/gpu/drm/cirrus/cirrus_ttm.c
++++ b/drivers/gpu/drm/cirrus/cirrus_ttm.c
+@@ -215,9 +215,10 @@ static struct ttm_tt *cirrus_ttm_tt_create(struct ttm_buffer_object *bo,
+ return tt;
+ }
+
+-static int cirrus_ttm_tt_populate(struct ttm_tt *ttm)
++static int cirrus_ttm_tt_populate(struct ttm_tt *ttm,
++ struct ttm_operation_ctx *ctx)
+ {
+- return ttm_pool_populate(ttm);
++ return ttm_pool_populate(ttm, ctx);
+ }
+
+ static void cirrus_ttm_tt_unpopulate(struct ttm_tt *ttm)
+diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_ttm.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_ttm.c
+index 327d86e..f024349 100644
+--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_ttm.c
++++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_ttm.c
+@@ -221,9 +221,10 @@ static struct ttm_tt *hibmc_ttm_tt_create(struct ttm_buffer_object *bo,
+ return tt;
+ }
+
+-static int hibmc_ttm_tt_populate(struct ttm_tt *ttm)
++static int hibmc_ttm_tt_populate(struct ttm_tt *ttm,
++ struct ttm_operation_ctx *ctx)
+ {
+- return ttm_pool_populate(ttm);
++ return ttm_pool_populate(ttm, ctx);
+ }
+
+ static void hibmc_ttm_tt_unpopulate(struct ttm_tt *ttm)
+diff --git a/drivers/gpu/drm/mgag200/mgag200_ttm.c b/drivers/gpu/drm/mgag200/mgag200_ttm.c
+index 5120715..229366b 100644
+--- a/drivers/gpu/drm/mgag200/mgag200_ttm.c
++++ b/drivers/gpu/drm/mgag200/mgag200_ttm.c
+@@ -215,9 +215,10 @@ static struct ttm_tt *mgag200_ttm_tt_create(struct ttm_buffer_object *bo,
+ return tt;
+ }
+
+-static int mgag200_ttm_tt_populate(struct ttm_tt *ttm)
++static int mgag200_ttm_tt_populate(struct ttm_tt *ttm,
++ struct ttm_operation_ctx *ctx)
+ {
+- return ttm_pool_populate(ttm);
++ return ttm_pool_populate(ttm, ctx);
+ }
+
+ static void mgag200_ttm_tt_unpopulate(struct ttm_tt *ttm)
+diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
+index e5406e0..8ac03fc 100644
+--- a/drivers/gpu/drm/nouveau/nouveau_bo.c
++++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
+@@ -1475,17 +1475,17 @@ nouveau_ttm_tt_populate(struct ttm_tt *ttm)
+
+ #if IS_ENABLED(CONFIG_AGP)
+ if (drm->agp.bridge) {
+- return ttm_agp_tt_populate(ttm);
++ return ttm_agp_tt_populate(ttm, ctx);
+ }
+ #endif
+
+ #if IS_ENABLED(CONFIG_SWIOTLB) && IS_ENABLED(CONFIG_X86)
+ if (swiotlb_nr_tbl()) {
+- return ttm_dma_populate((void *)ttm, dev->dev);
++ return ttm_dma_populate((void *)ttm, dev->dev, ctx);
+ }
+ #endif
+
+- r = ttm_pool_populate(ttm);
++ r = ttm_pool_populate(ttm, ctx);
+ if (r) {
+ return r;
+ }
+diff --git a/drivers/gpu/drm/qxl/qxl_ttm.c b/drivers/gpu/drm/qxl/qxl_ttm.c
+index a4fcc59..a283352 100644
+--- a/drivers/gpu/drm/qxl/qxl_ttm.c
++++ b/drivers/gpu/drm/qxl/qxl_ttm.c
+@@ -294,14 +294,15 @@ static struct ttm_backend_func qxl_backend_func = {
+ .destroy = &qxl_ttm_backend_destroy,
+ };
+
+-static int qxl_ttm_tt_populate(struct ttm_tt *ttm)
++static int qxl_ttm_tt_populate(struct ttm_tt *ttm,
++ struct ttm_operation_ctx *ctx)
+ {
+ int r;
+
+ if (ttm->state != tt_unpopulated)
+ return 0;
+
+- r = ttm_pool_populate(ttm);
++ r = ttm_pool_populate(ttm, ctx);
+ if (r)
+ return r;
+
+diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
+index 2be5d99..d00a1ff 100644
+--- a/drivers/gpu/drm/radeon/radeon_ttm.c
++++ b/drivers/gpu/drm/radeon/radeon_ttm.c
+@@ -721,7 +721,8 @@ static struct radeon_ttm_tt *radeon_ttm_tt_to_gtt(struct ttm_tt *ttm)
+ return (struct radeon_ttm_tt *)ttm;
+ }
+
+-static int radeon_ttm_tt_populate(struct ttm_tt *ttm)
++static int radeon_ttm_tt_populate(struct ttm_tt *ttm,
++ struct ttm_operation_ctx *ctx)
+ {
+ struct radeon_ttm_tt *gtt = radeon_ttm_tt_to_gtt(ttm);
+ struct radeon_device *rdev;
+@@ -750,17 +751,17 @@ static int radeon_ttm_tt_populate(struct ttm_tt *ttm)
+ rdev = radeon_get_rdev(ttm->bdev);
+ #if IS_ENABLED(CONFIG_AGP)
+ if (rdev->flags & RADEON_IS_AGP) {
+- return ttm_agp_tt_populate(ttm);
++ return ttm_agp_tt_populate(ttm, ctx);
+ }
+ #endif
+
+ #ifdef CONFIG_SWIOTLB
+ if (swiotlb_nr_tbl()) {
+- return ttm_dma_populate(&gtt->ttm, rdev->dev);
++ return ttm_dma_populate(&gtt->ttm, rdev->dev, ctx);
+ }
+ #endif
+
+- return ttm_populate_and_map_pages(rdev->dev, &gtt->ttm);
++ return ttm_populate_and_map_pages(rdev->dev, &gtt->ttm, ctx);
+ }
+
+ static void radeon_ttm_tt_unpopulate(struct ttm_tt *ttm)
+diff --git a/drivers/gpu/drm/ttm/ttm_agp_backend.c b/drivers/gpu/drm/ttm/ttm_agp_backend.c
+index 7222017..7c2485f 100644
+--- a/drivers/gpu/drm/ttm/ttm_agp_backend.c
++++ b/drivers/gpu/drm/ttm/ttm_agp_backend.c
+@@ -133,12 +133,12 @@ struct ttm_tt *ttm_agp_tt_create(struct ttm_buffer_object *bo,
+ }
+ EXPORT_SYMBOL(ttm_agp_tt_create);
+
+-int ttm_agp_tt_populate(struct ttm_tt *ttm)
++int ttm_agp_tt_populate(struct ttm_tt *ttm, struct ttm_operation_ctx *ctx)
+ {
+ if (ttm->state != tt_unpopulated)
+ return 0;
+
+- return ttm_pool_populate(ttm);
++ return ttm_pool_populate(ttm, ctx);
+ }
+ EXPORT_SYMBOL(ttm_agp_tt_populate);
+
+diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c
+index 7c2fbdb..174ef9a 100644
+--- a/drivers/gpu/drm/ttm/ttm_bo_util.c
++++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
+@@ -376,7 +376,7 @@ int ttm_bo_move_memcpy(struct ttm_buffer_object *bo,
+ * TTM might be null for moves within the same region.
+ */
+ if (ttm && ttm->state == tt_unpopulated) {
+- ret = ttm->bdev->driver->ttm_tt_populate(ttm);
++ ret = ttm->bdev->driver->ttm_tt_populate(ttm, ctx);
+ if (ret)
+ goto out1;
+ }
+@@ -545,14 +545,19 @@ static int ttm_bo_kmap_ttm(struct ttm_buffer_object *bo,
+ unsigned long num_pages,
+ struct ttm_bo_kmap_obj *map)
+ {
+- struct ttm_mem_reg *mem = &bo->mem; pgprot_t prot;
++ struct ttm_mem_reg *mem = &bo->mem;
++ struct ttm_operation_ctx ctx = {
++ .interruptible = false,
++ .no_wait_gpu = false
++ };
+ struct ttm_tt *ttm = bo->ttm;
++ pgprot_t prot;
+ int ret;
+
+ BUG_ON(!ttm);
+
+ if (ttm->state == tt_unpopulated) {
+- ret = ttm->bdev->driver->ttm_tt_populate(ttm);
++ ret = ttm->bdev->driver->ttm_tt_populate(ttm, &ctx);
+ if (ret)
+ return ret;
+ }
+diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c
+index b17d0d3..77e6577 100644
+--- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
++++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
+@@ -215,12 +215,17 @@ static int ttm_bo_vm_fault(struct vm_fault *vmf)
+ cvma.vm_page_prot = ttm_io_prot(bo->mem.placement,
+ cvma.vm_page_prot);
+ } else {
++ struct ttm_operation_ctx ctx = {
++ .interruptible = false,
++ .no_wait_gpu = false
++ };
++
+ ttm = bo->ttm;
+ cvma.vm_page_prot = ttm_io_prot(bo->mem.placement,
+ cvma.vm_page_prot);
+
+ /* Allocate all page at once, most common usage */
+- if (ttm->bdev->driver->ttm_tt_populate(ttm)) {
++ if (ttm->bdev->driver->ttm_tt_populate(ttm, &ctx)) {
+ retval = VM_FAULT_OOM;
+ goto out_io_unlock;
+ }
+diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc.c b/drivers/gpu/drm/ttm/ttm_page_alloc.c
+index ae8ec03..55c9a90 100644
+--- a/drivers/gpu/drm/ttm/ttm_page_alloc.c
++++ b/drivers/gpu/drm/ttm/ttm_page_alloc.c
+@@ -866,13 +866,9 @@ void ttm_page_alloc_fini(void)
+ _manager = NULL;
+ }
+
+-int ttm_pool_populate(struct ttm_tt *ttm)
++int ttm_pool_populate(struct ttm_tt *ttm, struct ttm_operation_ctx *ctx)
+ {
+ struct ttm_mem_global *mem_glob = ttm->glob->mem_glob;
+- struct ttm_operation_ctx ctx = {
+- .interruptible = false,
+- .no_wait_gpu = false
+- };
+ unsigned i;
+ int ret;
+
+@@ -889,7 +885,7 @@ int ttm_pool_populate(struct ttm_tt *ttm)
+ }
+
+ ret = ttm_mem_global_alloc_page(mem_glob, ttm->pages[i],
+- PAGE_SIZE, &ctx);
++ PAGE_SIZE, ctx);
+ if (unlikely(ret != 0)) {
+ ttm_pool_unpopulate(ttm);
+ return -ENOMEM;
+@@ -926,12 +922,13 @@ void ttm_pool_unpopulate(struct ttm_tt *ttm)
+ }
+ EXPORT_SYMBOL(ttm_pool_unpopulate);
+
+-int ttm_populate_and_map_pages(struct device *dev, struct ttm_dma_tt *tt)
++int ttm_populate_and_map_pages(struct device *dev, struct ttm_dma_tt *tt,
++ struct ttm_operation_ctx *ctx)
+ {
+ unsigned i;
+ int r;
+
+- r = ttm_pool_populate(&tt->ttm);
++ r = ttm_pool_populate(&tt->ttm, ctx);
+ if (r)
+ return r;
+
+diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
+index f9e8307..47ba7be 100644
+--- a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
++++ b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
+@@ -875,14 +875,11 @@ static int ttm_dma_pool_get_pages(struct dma_pool *pool,
+ * On success pages list will hold count number of correctly
+ * cached pages. On failure will hold the negative return value (-ENOMEM, etc).
+ */
+-int ttm_dma_populate(struct ttm_dma_tt *ttm_dma, struct device *dev)
++int ttm_dma_populate(struct ttm_dma_tt *ttm_dma, struct device *dev,
++ struct ttm_operation_ctx *ctx)
+ {
+ struct ttm_tt *ttm = &ttm_dma->ttm;
+ struct ttm_mem_global *mem_glob = ttm->glob->mem_glob;
+- struct ttm_operation_ctx ctx = {
+- .interruptible = false,
+- .no_wait_gpu = false
+- };
+ unsigned long num_pages = ttm->num_pages;
+ struct dma_pool *pool;
+ enum pool_type type;
+@@ -918,7 +915,7 @@ int ttm_dma_populate(struct ttm_dma_tt *ttm_dma, struct device *dev)
+ }
+
+ ret = ttm_mem_global_alloc_page(mem_glob, ttm->pages[i],
+- pool->size, &ctx);
++ pool->size, ctx);
+ if (unlikely(ret != 0)) {
+ ttm_dma_unpopulate(ttm_dma, dev);
+ return -ENOMEM;
+diff --git a/drivers/gpu/drm/ttm/ttm_tt.c b/drivers/gpu/drm/ttm/ttm_tt.c
+index 5155acc..0ce3e54 100644
+--- a/drivers/gpu/drm/ttm/ttm_tt.c
++++ b/drivers/gpu/drm/ttm/ttm_tt.c
+@@ -333,6 +333,10 @@ void ttm_tt_unbind(struct ttm_tt *ttm)
+
+ int ttm_tt_bind(struct ttm_tt *ttm, struct ttm_mem_reg *bo_mem)
+ {
++ struct ttm_operation_ctx ctx = {
++ .interruptible = false,
++ .no_wait_gpu = false
++ };
+ int ret = 0;
+
+ if (!ttm)
+@@ -341,7 +345,7 @@ int ttm_tt_bind(struct ttm_tt *ttm, struct ttm_mem_reg *bo_mem)
+ if (ttm->state == tt_bound)
+ return 0;
+
+- ret = ttm->bdev->driver->ttm_tt_populate(ttm);
++ ret = ttm->bdev->driver->ttm_tt_populate(ttm, &ctx);
+ if (ret)
+ return ret;
+
+diff --git a/drivers/gpu/drm/virtio/virtgpu_object.c b/drivers/gpu/drm/virtio/virtgpu_object.c
+index 6f66b73..0b90cdb 100644
+--- a/drivers/gpu/drm/virtio/virtgpu_object.c
++++ b/drivers/gpu/drm/virtio/virtgpu_object.c
+@@ -124,13 +124,17 @@ int virtio_gpu_object_get_sg_table(struct virtio_gpu_device *qdev,
+ int ret;
+ struct page **pages = bo->tbo.ttm->pages;
+ int nr_pages = bo->tbo.num_pages;
++ struct ttm_operation_ctx ctx = {
++ .interruptible = false,
++ .no_wait_gpu = false
++ };
+
+ /* wtf swapping */
+ if (bo->pages)
+ return 0;
+
+ if (bo->tbo.ttm->state == tt_unpopulated)
+- bo->tbo.ttm->bdev->driver->ttm_tt_populate(bo->tbo.ttm);
++ bo->tbo.ttm->bdev->driver->ttm_tt_populate(bo->tbo.ttm, &ctx);
+ bo->pages = kmalloc(sizeof(struct sg_table), GFP_KERNEL);
+ if (!bo->pages)
+ goto out;
+diff --git a/drivers/gpu/drm/virtio/virtgpu_ttm.c b/drivers/gpu/drm/virtio/virtgpu_ttm.c
+index 9113f2e..a9f2fb0 100644
+--- a/drivers/gpu/drm/virtio/virtgpu_ttm.c
++++ b/drivers/gpu/drm/virtio/virtgpu_ttm.c
+@@ -324,12 +324,13 @@ static struct ttm_backend_func virtio_gpu_backend_func = {
+ .destroy = &virtio_gpu_ttm_backend_destroy,
+ };
+
+-static int virtio_gpu_ttm_tt_populate(struct ttm_tt *ttm)
++static int virtio_gpu_ttm_tt_populate(struct ttm_tt *ttm,
++ struct ttm_operation_ctx *ctx)
+ {
+ if (ttm->state != tt_unpopulated)
+ return 0;
+
+- return ttm_pool_populate(ttm);
++ return ttm_pool_populate(ttm, ctx);
+ }
+
+ static void virtio_gpu_ttm_tt_unpopulate(struct ttm_tt *ttm)
+diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c b/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c
+index 7ea1c85..bab10e3 100644
+--- a/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c
++++ b/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c
+@@ -635,16 +635,12 @@ static void vmw_ttm_destroy(struct ttm_tt *ttm)
+ }
+
+
+-static int vmw_ttm_populate(struct ttm_tt *ttm)
++static int vmw_ttm_populate(struct ttm_tt *ttm, struct ttm_operation_ctx *ctx)
+ {
+ struct vmw_ttm_tt *vmw_tt =
+ container_of(ttm, struct vmw_ttm_tt, dma_ttm.ttm);
+ struct vmw_private *dev_priv = vmw_tt->dev_priv;
+ struct ttm_mem_global *glob = vmw_mem_glob(dev_priv);
+- struct ttm_operation_ctx ctx = {
+- .interruptible = true,
+- .no_wait_gpu = false
+- };
+ int ret;
+
+ if (ttm->state != tt_unpopulated)
+@@ -653,15 +649,16 @@ static int vmw_ttm_populate(struct ttm_tt *ttm)
+ if (dev_priv->map_mode == vmw_dma_alloc_coherent) {
+ size_t size =
+ ttm_round_pot(ttm->num_pages * sizeof(dma_addr_t));
+- ret = ttm_mem_global_alloc(glob, size, &ctx);
++ ret = ttm_mem_global_alloc(glob, size, ctx);
+ if (unlikely(ret != 0))
+ return ret;
+
+- ret = ttm_dma_populate(&vmw_tt->dma_ttm, dev_priv->dev->dev);
++ ret = ttm_dma_populate(&vmw_tt->dma_ttm, dev_priv->dev->dev,
++ ctx);
+ if (unlikely(ret != 0))
+ ttm_mem_global_free(glob, size);
+ } else
+- ret = ttm_pool_populate(ttm);
++ ret = ttm_pool_populate(ttm, ctx);
+
+ return ret;
+ }
+diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c b/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c
+index b17f08f..736ca47 100644
+--- a/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c
++++ b/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c
+@@ -240,6 +240,10 @@ static int vmw_otable_batch_setup(struct vmw_private *dev_priv,
+ unsigned long offset;
+ unsigned long bo_size;
+ struct vmw_otable *otables = batch->otables;
++ struct ttm_operation_ctx ctx = {
++ .interruptible = false,
++ .no_wait_gpu = false
++ };
+ SVGAOTableType i;
+ int ret;
+
+@@ -264,7 +268,7 @@ static int vmw_otable_batch_setup(struct vmw_private *dev_priv,
+
+ ret = ttm_bo_reserve(batch->otable_bo, false, true, NULL);
+ BUG_ON(ret != 0);
+- ret = vmw_bo_driver.ttm_tt_populate(batch->otable_bo->ttm);
++ ret = vmw_bo_driver.ttm_tt_populate(batch->otable_bo->ttm, &ctx);
+ if (unlikely(ret != 0))
+ goto out_unreserve;
+ ret = vmw_bo_map_dma(batch->otable_bo);
+@@ -430,6 +434,11 @@ static int vmw_mob_pt_populate(struct vmw_private *dev_priv,
+ struct vmw_mob *mob)
+ {
+ int ret;
++ struct ttm_operation_ctx ctx = {
++ .interruptible = false,
++ .no_wait_gpu = false
++ };
++
+ BUG_ON(mob->pt_bo != NULL);
+
+ ret = ttm_bo_create(&dev_priv->bdev, mob->num_pages * PAGE_SIZE,
+@@ -442,7 +451,7 @@ static int vmw_mob_pt_populate(struct vmw_private *dev_priv,
+ ret = ttm_bo_reserve(mob->pt_bo, false, true, NULL);
+
+ BUG_ON(ret != 0);
+- ret = vmw_bo_driver.ttm_tt_populate(mob->pt_bo->ttm);
++ ret = vmw_bo_driver.ttm_tt_populate(mob->pt_bo->ttm, &ctx);
+ if (unlikely(ret != 0))
+ goto out_unreserve;
+ ret = vmw_bo_map_dma(mob->pt_bo);
+--
+2.7.4
+