[PATCH] drm/ttm, drm/vmwgfx: Use a configuration option for the TTM dma page pool
Christian König
ckoenig.leichtzumerken at gmail.com
Thu May 16 10:05:18 UTC 2019
Am 16.05.19 um 11:23 schrieb Thomas Hellstrom:
> Drivers like vmwgfx may want to test whether the dma page pool is present
> or not. Since it's activated by default by TTM if compiled-in, define a
> hidden configuration option that the driver can test for.
>
> Cc: Christian König <christian.koenig at amd.com>
> Signed-off-by: Thomas Hellstrom <thellstrom at vmware.com>
There are at least also occasions of this in radeon and amdgpu, but
those can be cleaned up later on.
Reviewed-by: Christian König <christian.koenig at amd.com> for now.
Which tree should we use for merging?
Thanks,
Christian.
> ---
> drivers/gpu/drm/Kconfig | 5 +++++
> drivers/gpu/drm/ttm/Makefile | 4 ++--
> drivers/gpu/drm/ttm/ttm_page_alloc_dma.c | 3 ---
> drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 3 +--
> include/drm/ttm/ttm_page_alloc.h | 2 +-
> 5 files changed, 9 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
> index 2267e84d5cb4..f733a9273b3f 100644
> --- a/drivers/gpu/drm/Kconfig
> +++ b/drivers/gpu/drm/Kconfig
> @@ -160,6 +160,11 @@ config DRM_TTM
> GPU memory types. Will be enabled automatically if a device driver
> uses it.
>
> +config DRM_TTM_DMA_PAGE_POOL
> + bool
> + depends on DRM_TTM && (SWIOTLB || INTEL_IOMMU)
> + default y
> +
> config DRM_GEM_CMA_HELPER
> bool
> depends on DRM
> diff --git a/drivers/gpu/drm/ttm/Makefile b/drivers/gpu/drm/ttm/Makefile
> index 01fc670ce7a2..caea2a099496 100644
> --- a/drivers/gpu/drm/ttm/Makefile
> +++ b/drivers/gpu/drm/ttm/Makefile
> @@ -4,8 +4,8 @@
>
> ttm-y := ttm_memory.o ttm_tt.o ttm_bo.o \
> ttm_bo_util.o ttm_bo_vm.o ttm_module.o \
> - ttm_execbuf_util.o ttm_page_alloc.o ttm_bo_manager.o \
> - ttm_page_alloc_dma.o
> + ttm_execbuf_util.o ttm_page_alloc.o ttm_bo_manager.o
> ttm-$(CONFIG_AGP) += ttm_agp_backend.o
> +ttm-$(CONFIG_DRM_TTM_DMA_PAGE_POOL) += ttm_page_alloc_dma.o
>
> obj-$(CONFIG_DRM_TTM) += ttm.o
> diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
> index d594f7520b7b..98d100fd1599 100644
> --- a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
> +++ b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
> @@ -33,7 +33,6 @@
> * when freed).
> */
>
> -#if defined(CONFIG_SWIOTLB) || defined(CONFIG_INTEL_IOMMU)
> #define pr_fmt(fmt) "[TTM] " fmt
>
> #include <linux/dma-mapping.h>
> @@ -1234,5 +1233,3 @@ int ttm_dma_page_alloc_debugfs(struct seq_file *m, void *data)
> return 0;
> }
> EXPORT_SYMBOL_GPL(ttm_dma_page_alloc_debugfs);
> -
> -#endif
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> index d59c474be38e..bc259d4df1cb 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> @@ -572,8 +572,7 @@ static int vmw_dma_select_mode(struct vmw_private *dev_priv)
> else
> dev_priv->map_mode = vmw_dma_map_populate;
>
> - /* No TTM coherent page pool? FIXME: Ask TTM instead! */
> - if (!(IS_ENABLED(CONFIG_SWIOTLB) || IS_ENABLED(CONFIG_INTEL_IOMMU)) &&
> + if (!IS_ENABLED(CONFIG_DRM_TTM_DMA_PAGE_POOL) &&
> (dev_priv->map_mode == vmw_dma_alloc_coherent))
> return -EINVAL;
>
> diff --git a/include/drm/ttm/ttm_page_alloc.h b/include/drm/ttm/ttm_page_alloc.h
> index 4d9b019d253c..a6b6ef5f9bf4 100644
> --- a/include/drm/ttm/ttm_page_alloc.h
> +++ b/include/drm/ttm/ttm_page_alloc.h
> @@ -74,7 +74,7 @@ void ttm_unmap_and_unpopulate_pages(struct device *dev, struct ttm_dma_tt *tt);
> */
> int ttm_page_alloc_debugfs(struct seq_file *m, void *data);
>
> -#if defined(CONFIG_SWIOTLB) || defined(CONFIG_INTEL_IOMMU)
> +#if defined(CONFIG_DRM_TTM_DMA_PAGE_POOL)
> /**
> * Initialize pool allocator.
> */
More information about the dri-devel
mailing list