dma-mapping: provide a better default ->get_required_mask
Most dma_map_ops instances are IOMMUs that work perfectly fine in 32-bits of IOVA space, and the generic direct mapping code already provides its own routines that is intelligent based on the amount of memory actually present. Wire up the dma-direct routine for the ARM direct mapping code as well, and otherwise default to the constant 32-bit mask. This way we only need to override it for the occasional odd IOMMU that requires 64-bit IOVA support, or IOMMU drivers that are more efficient if they can fall back to the direct mapping. Signed-off-by: Christoph Hellwig <hch@lst.de>
Dieser Commit ist enthalten in:
@@ -686,18 +686,12 @@ static int ps3_dma_supported(struct device *_dev, u64 mask)
|
||||
return mask >= DMA_BIT_MASK(32);
|
||||
}
|
||||
|
||||
static u64 ps3_dma_get_required_mask(struct device *_dev)
|
||||
{
|
||||
return DMA_BIT_MASK(32);
|
||||
}
|
||||
|
||||
static const struct dma_map_ops ps3_sb_dma_ops = {
|
||||
.alloc = ps3_alloc_coherent,
|
||||
.free = ps3_free_coherent,
|
||||
.map_sg = ps3_sb_map_sg,
|
||||
.unmap_sg = ps3_sb_unmap_sg,
|
||||
.dma_supported = ps3_dma_supported,
|
||||
.get_required_mask = ps3_dma_get_required_mask,
|
||||
.map_page = ps3_sb_map_page,
|
||||
.unmap_page = ps3_unmap_page,
|
||||
.mmap = dma_common_mmap,
|
||||
@@ -710,7 +704,6 @@ static const struct dma_map_ops ps3_ioc0_dma_ops = {
|
||||
.map_sg = ps3_ioc0_map_sg,
|
||||
.unmap_sg = ps3_ioc0_unmap_sg,
|
||||
.dma_supported = ps3_dma_supported,
|
||||
.get_required_mask = ps3_dma_get_required_mask,
|
||||
.map_page = ps3_ioc0_map_page,
|
||||
.unmap_page = ps3_unmap_page,
|
||||
.mmap = dma_common_mmap,
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren