Skip to content

Commit

Permalink
drm/vmwgfx: unwind spaghetti code in vmw_dma_select_mode
Browse files Browse the repository at this point in the history
Just use a simple if/else chain to select the DMA mode.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
  • Loading branch information
Christoph Hellwig authored and Thomas Hellstrom committed Jan 29, 2019
1 parent 2b3cd62 commit 05f9467
Showing 1 changed file with 6 additions and 19 deletions.
25 changes: 6 additions & 19 deletions drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down

0 comments on commit 05f9467

Please sign in to comment.