x86: remove arch specific dma_supported implementation
And instead wire it up as method for all the dma_map_ops instances. Note that this also means the arch specific check will be fully instead of partially applied in the AMD iommu driver. Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
@ -704,6 +704,7 @@ static const struct dma_map_ops gart_dma_ops = {
|
||||
.alloc = gart_alloc_coherent,
|
||||
.free = gart_free_coherent,
|
||||
.mapping_error = gart_mapping_error,
|
||||
.dma_supported = x86_dma_supported,
|
||||
};
|
||||
|
||||
static void gart_iommu_shutdown(void)
|
||||
|
@ -493,6 +493,7 @@ static const struct dma_map_ops calgary_dma_ops = {
|
||||
.map_page = calgary_map_page,
|
||||
.unmap_page = calgary_unmap_page,
|
||||
.mapping_error = calgary_mapping_error,
|
||||
.dma_supported = x86_dma_supported,
|
||||
};
|
||||
|
||||
static inline void __iomem * busno_to_bbar(unsigned char num)
|
||||
|
@ -213,10 +213,8 @@ static __init int iommu_setup(char *p)
|
||||
}
|
||||
early_param("iommu", iommu_setup);
|
||||
|
||||
int dma_supported(struct device *dev, u64 mask)
|
||||
int x86_dma_supported(struct device *dev, u64 mask)
|
||||
{
|
||||
const struct dma_map_ops *ops = get_dma_ops(dev);
|
||||
|
||||
#ifdef CONFIG_PCI
|
||||
if (mask > 0xffffffff && forbid_dac > 0) {
|
||||
dev_info(dev, "PCI: Disallowing DAC for device\n");
|
||||
@ -224,9 +222,6 @@ int dma_supported(struct device *dev, u64 mask)
|
||||
}
|
||||
#endif
|
||||
|
||||
if (ops->dma_supported)
|
||||
return ops->dma_supported(dev, mask);
|
||||
|
||||
/* Copied from i386. Doesn't make much sense, because it will
|
||||
only work for pci_alloc_coherent.
|
||||
The caller just has to use GFP_DMA in this case. */
|
||||
@ -252,7 +247,6 @@ int dma_supported(struct device *dev, u64 mask)
|
||||
|
||||
return 1;
|
||||
}
|
||||
EXPORT_SYMBOL(dma_supported);
|
||||
|
||||
static int __init pci_iommu_init(void)
|
||||
{
|
||||
|
@ -104,4 +104,5 @@ const struct dma_map_ops nommu_dma_ops = {
|
||||
.sync_sg_for_device = nommu_sync_sg_for_device,
|
||||
.is_phys = 1,
|
||||
.mapping_error = nommu_mapping_error,
|
||||
.dma_supported = x86_dma_supported,
|
||||
};
|
||||
|
Reference in New Issue
Block a user