diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2031-drm-amdgpu-linear-validate-first-then-bind-to-GART.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2031-drm-amdgpu-linear-validate-first-then-bind-to-GART.patch | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2031-drm-amdgpu-linear-validate-first-then-bind-to-GART.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2031-drm-amdgpu-linear-validate-first-then-bind-to-GART.patch new file mode 100644 index 00000000..06cb71f3 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2031-drm-amdgpu-linear-validate-first-then-bind-to-GART.patch @@ -0,0 +1,52 @@ +From fcb98f216a4fc03328c7abf79084acffb6a0bcb8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> +Date: Mon, 16 Oct 2017 10:32:04 +0200 +Subject: [PATCH 2031/4131] drm/amdgpu: linear validate first then bind to GART +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +For VM emulation for old UVD/VCE we need to validate the BO with linear +VRAM flag set first and then eventually bind it to GART. + +Validating with linear VRAM flag set can move the BO to GART making +UVD/VCE read/write from an unbound GART BO. + +Signed-off-by: Christian König <christian.koenig@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +CC: stable@vger.kernel.org +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +index 6794670..e84b63a 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +@@ -1631,14 +1631,14 @@ int amdgpu_cs_find_mapping(struct amdgpu_cs_parser *parser, + if (READ_ONCE((*bo)->tbo.resv->lock.ctx) != &parser->ticket) + return -EINVAL; + +- r = amdgpu_ttm_bind(&(*bo)->tbo, &(*bo)->tbo.mem); +- if (unlikely(r)) +- return r; +- +- if ((*bo)->flags & AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS) +- return 0; ++ if (!((*bo)->flags & AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS)) { ++ (*bo)->flags |= AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS; ++ amdgpu_ttm_placement_from_domain(*bo, (*bo)->allowed_domains); ++ r = ttm_bo_validate(&(*bo)->tbo, &(*bo)->placement, false, ++ false); ++ if (r) ++ return r; ++ } + +- (*bo)->flags |= AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS; +- amdgpu_ttm_placement_from_domain(*bo, (*bo)->allowed_domains); +- return ttm_bo_validate(&(*bo)->tbo, &(*bo)->placement, false, false); ++ return amdgpu_ttm_bind(&(*bo)->tbo, &(*bo)->tbo.mem); + } +-- +2.7.4 + |