Commit 05f9467e authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Thomas Hellstrom
Browse files

drm/vmwgfx: unwind spaghetti code in vmw_dma_select_mode



Just use a simple if/else chain to select the DMA mode.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarThomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: default avatarThomas Hellstrom <thellstrom@vmware.com>
parent 2b3cd624
Loading
Loading
Loading
Loading
+6 −19
Original line number Diff line number Diff line
@@ -566,39 +566,26 @@ static int vmw_dma_select_mode(struct vmw_private *dev_priv)
		[vmw_dma_map_populate] = "Keeping DMA mappings.",
		[vmw_dma_map_bind] = "Giving up DMA mappings early."};

	if (intel_iommu_enabled) {
	if (vmw_force_coherent)
		dev_priv->map_mode = vmw_dma_alloc_coherent;
	else if (intel_iommu_enabled)
		dev_priv->map_mode = vmw_dma_map_populate;
		goto out_fixup;
	}

	if (!(vmw_force_iommu || vmw_force_coherent)) {
	else if (!vmw_force_iommu)
		dev_priv->map_mode = vmw_dma_phys;
		DRM_INFO("DMA map mode: %s\n", names[dev_priv->map_mode]);
		return 0;
	}

#ifdef CONFIG_SWIOTLB
	if (swiotlb_nr_tbl())
	else if (IS_ENABLED(CONFIG_SWIOTLB) && swiotlb_nr_tbl())
		dev_priv->map_mode = vmw_dma_alloc_coherent;
	else
#endif
		dev_priv->map_mode = vmw_dma_map_populate;

out_fixup:
	if (dev_priv->map_mode == vmw_dma_map_populate &&
	    vmw_restrict_iommu)
	if (dev_priv->map_mode == vmw_dma_map_populate && vmw_restrict_iommu)
		dev_priv->map_mode = vmw_dma_map_bind;

	if (vmw_force_coherent)
		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;

	DRM_INFO("DMA map mode: %s\n", names[dev_priv->map_mode]);

	return 0;
}