On 2019-02-21 12:48 p.m., Yang, Philip wrote: > 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. > > Change-Id: I1b44a0b5285bbef5e98bfb045d1d82c167af1cb8 > Signed-off-by: Philip Yang <Philip.Yang@xxxxxxx> Reviewed-by: Felix Kuehling <Felix.Kuehling@xxxxxxx> See one semi-related comment inline ... > --- > drivers/gpu/drm/amd/amdgpu/Kconfig | 1 + > drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 6 ++++++ > drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h | 12 ++++++++++++ > 3 files changed, 19 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/Kconfig b/drivers/gpu/drm/amd/amdgpu/Kconfig > index 960a63355705..67553effb649 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 1e675048f790..c1dbca14dce5 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c > @@ -712,7 +712,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 > }; > > /** > @@ -722,6 +724,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; > @@ -804,6 +807,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. > @@ -904,9 +908,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 8988c87fff9d..c9d87271a4cb 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h > @@ -101,8 +101,20 @@ 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); mark_user_pages isn't used any more. This function could be removed. Regards, Felix > int amdgpu_ttm_tt_set_userptr(struct ttm_tt *ttm, uint64_t addr, _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx