diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1318-drm-amdgpu-fix-HMM-config-dependency-issue.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/1318-drm-amdgpu-fix-HMM-config-dependency-issue.patch | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1318-drm-amdgpu-fix-HMM-config-dependency-issue.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1318-drm-amdgpu-fix-HMM-config-dependency-issue.patch new file mode 100644 index 00000000..6269da7b --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1318-drm-amdgpu-fix-HMM-config-dependency-issue.patch @@ -0,0 +1,137 @@ +From aece3aa4fafa69b06c61097f61649543caf8994f Mon Sep 17 00:00:00 2001 +From: Philip Yang <Philip.Yang@amd.com> +Date: Thu, 21 Feb 2019 12:39:21 -0500 +Subject: [PATCH 1318/2940] drm/amdgpu: fix HMM config dependency issue + +Only select HMM_MIRROR will get kernel config dependency warnings +if CONFIG_HMM is missing in the config. Add depends on HMM will +solve the issue. + +Add conditional compilation to fix compilation errors if HMM_MIRROR +is not enabled as HMM config is not enabled. + +Remove unused function amdgpu_ttm_tt_mark_user_pages. + +Change-Id: I1b44a0b5285bbef5e98bfb045d1d82c167af1cb8 +Signed-off-by: Philip Yang <Philip.Yang@amd.com> +Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/Kconfig | 1 + + drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 29 +++++-------------------- + drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h | 13 ++++++++++- + 3 files changed, 19 insertions(+), 24 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/Kconfig b/drivers/gpu/drm/amd/amdgpu/Kconfig +index 16f08654f59b..3cdee30995a1 100644 +--- a/drivers/gpu/drm/amd/amdgpu/Kconfig ++++ b/drivers/gpu/drm/amd/amdgpu/Kconfig +@@ -26,6 +26,7 @@ config DRM_AMDGPU_CIK + config DRM_AMDGPU_USERPTR + bool "Always enable userptr write support" + depends on DRM_AMDGPU ++ depends on ARCH_HAS_HMM + select HMM_MIRROR + help + This option selects CONFIG_HMM and CONFIG_HMM_MIRROR if it +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +index d587b374665e..ac54a750fe3b 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +@@ -845,7 +845,9 @@ struct amdgpu_ttm_tt { + uint64_t userptr; + struct task_struct *usertask; + uint32_t userflags; ++#if IS_ENABLED(CONFIG_DRM_AMDGPU_USERPTR) + struct hmm_range range; ++#endif + }; + + /** +@@ -855,6 +857,7 @@ struct amdgpu_ttm_tt { + * Calling function must call amdgpu_ttm_tt_userptr_range_done() once and only + * once afterwards to stop HMM tracking + */ ++#if IS_ENABLED(CONFIG_DRM_AMDGPU_USERPTR) + int amdgpu_ttm_tt_get_user_pages(struct ttm_tt *ttm, struct page **pages) + { + struct amdgpu_ttm_tt *gtt = (void *)ttm; +@@ -937,6 +940,7 @@ bool amdgpu_ttm_tt_get_user_pages_done(struct ttm_tt *ttm) + + return r; + } ++#endif + + /** + * amdgpu_ttm_tt_set_user_pages - Copy pages in, putting old pages as necessary. +@@ -953,29 +957,6 @@ void amdgpu_ttm_tt_set_user_pages(struct ttm_tt *ttm, struct page **pages) + ttm->pages[i] = pages ? pages[i] : NULL; + } + +-/** +- * amdgpu_ttm_tt_mark_user_page - Mark pages as dirty +- * +- * Called while unpinning userptr pages +- */ +-void amdgpu_ttm_tt_mark_user_pages(struct ttm_tt *ttm) +-{ +- struct amdgpu_ttm_tt *gtt = (void *)ttm; +- unsigned i; +- +- for (i = 0; i < ttm->num_pages; ++i) { +- struct page *page = ttm->pages[i]; +- +- if (!page) +- continue; +- +- if (!(gtt->userflags & AMDGPU_GEM_USERPTR_READONLY)) +- set_page_dirty(page); +- +- mark_page_accessed(page); +- } +-} +- + /** + * amdgpu_ttm_tt_pin_userptr - prepare the sg table with the user pages + * +@@ -1037,9 +1018,11 @@ static void amdgpu_ttm_tt_unpin_userptr(struct ttm_tt *ttm) + + sg_free_table(ttm->sg); + ++#if IS_ENABLED(CONFIG_DRM_AMDGPU_USERPTR) + if (gtt->range.pfns && + ttm->pages[0] == hmm_pfn_to_page(>t->range, gtt->range.pfns[0])) + WARN_ONCE(1, "Missing get_user_page_done\n"); ++#endif + } + + int amdgpu_ttm_gart_bind(struct amdgpu_device *adev, +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h +index 9afdf06717f7..6b93fcb0b12e 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h +@@ -107,10 +107,21 @@ int amdgpu_mmap(struct file *filp, struct vm_area_struct *vma); + int amdgpu_ttm_alloc_gart(struct ttm_buffer_object *bo); + int amdgpu_ttm_recover_gart(struct ttm_buffer_object *tbo); + ++#if IS_ENABLED(CONFIG_DRM_AMDGPU_USERPTR) + int amdgpu_ttm_tt_get_user_pages(struct ttm_tt *ttm, struct page **pages); + bool amdgpu_ttm_tt_get_user_pages_done(struct ttm_tt *ttm); ++#else ++static inline int amdgpu_ttm_tt_get_user_pages(struct ttm_tt *ttm, struct page **pages) ++{ ++ return -EPERM; ++} ++static inline bool amdgpu_ttm_tt_get_user_pages_done(struct ttm_tt *ttm) ++{ ++ return false; ++} ++#endif ++ + void amdgpu_ttm_tt_set_user_pages(struct ttm_tt *ttm, struct page **pages); +-void amdgpu_ttm_tt_mark_user_pages(struct ttm_tt *ttm); + int amdgpu_ttm_tt_set_userptr(struct ttm_tt *ttm, uint64_t addr, + uint32_t flags); + bool amdgpu_ttm_tt_has_userptr(struct ttm_tt *ttm); +-- +2.17.1 + |