diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0798-drm-amdgpu-fix-direct-gma-failure.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0798-drm-amdgpu-fix-direct-gma-failure.patch | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0798-drm-amdgpu-fix-direct-gma-failure.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0798-drm-amdgpu-fix-direct-gma-failure.patch new file mode 100644 index 00000000..03232694 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0798-drm-amdgpu-fix-direct-gma-failure.patch @@ -0,0 +1,62 @@ +From 2874e02efe84b9cb56d61ac11c584311e53495f9 Mon Sep 17 00:00:00 2001 +From: Flora Cui <Flora.Cui@amd.com> +Date: Wed, 19 Apr 2017 17:48:45 +0800 +Subject: [PATCH 0798/4131] drm/amdgpu: fix direct gma failure + +direct gma is broken on current code base + +Change-Id: Ic3f8b3f738b8cce226041bde47212a6043e5451f +Signed-off-by: Flora Cui <Flora.Cui@amd.com> +Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> + + Conflicts: + drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 1 + + drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 17 +++++++++++------ + 2 files changed, 12 insertions(+), 6 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +index 3ffe412b..20db263 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +@@ -202,6 +202,7 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data, + if (args->in.domains & ~(AMDGPU_GEM_DOMAIN_CPU | + AMDGPU_GEM_DOMAIN_GTT | + AMDGPU_GEM_DOMAIN_VRAM | ++ AMDGPU_GEM_DOMAIN_DGMA | + AMDGPU_GEM_DOMAIN_GDS | + AMDGPU_GEM_DOMAIN_GWS | + AMDGPU_GEM_DOMAIN_OA)) +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +index e150097..42d6512 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +@@ -616,13 +616,18 @@ static void amdgpu_ttm_io_mem_free(struct ttm_bo_device *bdev, struct ttm_mem_re + static unsigned long amdgpu_ttm_io_mem_pfn(struct ttm_buffer_object *bo, + unsigned long page_offset) + { +- struct drm_mm_node *mm = bo->mem.mm_node; +- uint64_t size = mm->size; +- uint64_t offset = page_offset; ++ if (bo->mem.mem_type != AMDGPU_PL_DGMA && ++ bo->mem.mem_type != AMDGPU_PL_DGMA_IMPORT) { ++ struct drm_mm_node *mm = bo->mem.mm_node; ++ uint64_t size = mm->size; ++ uint64_t offset = page_offset; ++ ++ page_offset = do_div(offset, size); ++ mm += offset; ++ return (bo->mem.bus.base >> PAGE_SHIFT) + mm->start + page_offset; ++ } + +- page_offset = do_div(offset, size); +- mm += offset; +- return (bo->mem.bus.base >> PAGE_SHIFT) + mm->start + page_offset; ++ return ttm_bo_default_io_mem_pfn(bo, page_offset); + } + + /* +-- +2.7.4 + |