Skip to content

Commit

Permalink
drm/ttm, drm/vmwgfx: Use a configuration option for the TTM dma page …
Browse files Browse the repository at this point in the history
…pool

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 <[email protected]>
Signed-off-by: Thomas Hellstrom <[email protected]>
Reviewed-by: Christian König <[email protected]>
  • Loading branch information
thomashvmw committed Nov 14, 2019
1 parent 3ca3a9e commit e2e9666
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 8 deletions.
7 changes: 7 additions & 0 deletions drivers/gpu/drm/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,13 @@ 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
help
Choose this if you need the TTM dma page pool

config DRM_VRAM_HELPER
tristate
depends on DRM
Expand Down
4 changes: 2 additions & 2 deletions drivers/gpu/drm/ttm/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
3 changes: 0 additions & 3 deletions drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down Expand Up @@ -1238,5 +1237,3 @@ int ttm_dma_page_alloc_debugfs(struct seq_file *m, void *data)
return 0;
}
EXPORT_SYMBOL_GPL(ttm_dma_page_alloc_debugfs);

#endif
3 changes: 1 addition & 2 deletions drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -576,8 +576,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;

Expand Down
2 changes: 1 addition & 1 deletion include/drm/ttm/ttm_page_alloc.h
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*/
Expand Down

0 comments on commit e2e9666

Please sign in to comment.