[2/4] drm/vmwgfx: remove CONFIG_INTEL_IOMMU ifdefs v2
diff mbox series

Message ID 20190125081215.4622-3-thellstrom@vmware.com
State New
Headers show
Series
  • Fix DMA ops layering violations in vmwgfx v2
Related show

Commit Message

Thomas Hellstrom Jan. 25, 2019, 8:12 a.m. UTC
From: Christoph Hellwig <hch@lst.de>

intel_iommu_enabled is defined as always false for !CONFIG_INTEL_IOMMU,
so remove the ifdefs around it.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
---
v2: Retain the check for TTM dma page pool presence.
---
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 21 ++++-----------------
 1 file changed, 4 insertions(+), 17 deletions(-)

Comments

Thomas Hellstrom Feb. 4, 2019, 12:11 p.m. UTC | #1
On Mon, 2019-02-04 at 09:19 +0100, Christoph Hellwig wrote:
> On Fri, Jan 25, 2019 at 09:12:13AM +0100, Thomas Hellstrom wrote:
> > -#if !defined(CONFIG_SWIOTLB) && !defined(CONFIG_INTEL_IOMMU)
> > -	/*
> > -	 * No coherent page pool
> > -	 */
> > -	if (dev_priv->map_mode == vmw_dma_alloc_coherent)
> > +	/* No TTM coherent page pool? FIXME: Ask TTM instead! */
> > +	if (!(IS_ENABLED(CONFIG_SWIOTLB) ||
> > IS_ENABLED(CONFIG_INTEL_IOMMU)) &&
> > +	    (dev_priv->map_mode == vmw_dma_alloc_coherent))
> >  		return -EINVAL;
> > -#endif
> > +
> 
> I don't think this edited in change makes any sense.  The swiotlb vs
> dma-direct versions of dma_alloc_coherent are the same, so this check
> seems very obsfucating.

So this part of code is identical in functionality to the previous
version. It checks whether the TTM module has the coherent page pool
enabled. (an identical test is present in TTM). What we *really* need
to do here instead is to ask TTM whether it has enabled its coherent
page pool instead of trying to mimic TTM's test, and I have a changeset
under review for that. But as mentioned previously, I don't want to
change the TTM interface outside of a merge window, so we either have
to live with the above for 5.0 or keep the old defines. I'd prefer the
former so I don't have to respin the patch series once more.

Thanks,
Thoams

Patch
diff mbox series

diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index 69e325b2d954..b7777b5b4a81 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -567,12 +567,10 @@  static int vmw_dma_select_mode(struct vmw_private *dev_priv)
 		[vmw_dma_map_bind] = "Giving up DMA mappings early."};
 	const struct dma_map_ops *dma_ops = get_dma_ops(dev_priv->dev->dev);
 
-#ifdef CONFIG_INTEL_IOMMU
 	if (intel_iommu_enabled) {
 		dev_priv->map_mode = vmw_dma_map_populate;
 		goto out_fixup;
 	}
-#endif
 
 	if (!(vmw_force_iommu || vmw_force_coherent)) {
 		dev_priv->map_mode = vmw_dma_phys;
@@ -589,9 +587,7 @@  static int vmw_dma_select_mode(struct vmw_private *dev_priv)
 		dev_priv->map_mode = vmw_dma_map_populate;
 #endif
 
-#ifdef CONFIG_INTEL_IOMMU
 out_fixup:
-#endif
 	if (dev_priv->map_mode == vmw_dma_map_populate &&
 	    vmw_restrict_iommu)
 		dev_priv->map_mode = vmw_dma_map_bind;
@@ -599,13 +595,11 @@  static int vmw_dma_select_mode(struct vmw_private *dev_priv)
 	if (vmw_force_coherent)
 		dev_priv->map_mode = vmw_dma_alloc_coherent;
 
-#if !defined(CONFIG_SWIOTLB) && !defined(CONFIG_INTEL_IOMMU)
-	/*
-	 * No coherent page pool
-	 */
-	if (dev_priv->map_mode == vmw_dma_alloc_coherent)
+	/* No TTM coherent page pool? FIXME: Ask TTM instead! */
+	if (!(IS_ENABLED(CONFIG_SWIOTLB) || IS_ENABLED(CONFIG_INTEL_IOMMU)) &&
+	    (dev_priv->map_mode == vmw_dma_alloc_coherent))
 		return -EINVAL;
-#endif
+
 	DRM_INFO("DMA map mode: %s\n", names[dev_priv->map_mode]);
 
 	return 0;
@@ -619,7 +613,6 @@  static int vmw_dma_select_mode(struct vmw_private *dev_priv)
  * With 32-bit we can only handle 32 bit PFNs. Optionally set that
  * restriction also for 64-bit systems.
  */
-#ifdef CONFIG_INTEL_IOMMU
 static int vmw_dma_masks(struct vmw_private *dev_priv)
 {
 	struct drm_device *dev = dev_priv->dev;
@@ -631,12 +624,6 @@  static int vmw_dma_masks(struct vmw_private *dev_priv)
 	}
 	return 0;
 }
-#else
-static int vmw_dma_masks(struct vmw_private *dev_priv)
-{
-	return 0;
-}
-#endif
 
 static int vmw_driver_load(struct drm_device *dev, unsigned long chipset)
 {