|
@@ -35,29 +35,12 @@ phys_addr_t swiotlb_bus_to_phys(struct device *hwdev, dma_addr_t baddr)
|
|
|
return baddr - get_dma_direct_offset(hwdev);
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * Determine if an address needs bounce buffering via swiotlb.
|
|
|
- * Going forward I expect the swiotlb code to generalize on using
|
|
|
- * a dma_ops->addr_needs_map, and this function will move from here to the
|
|
|
- * generic swiotlb code.
|
|
|
- */
|
|
|
-int
|
|
|
-swiotlb_arch_address_needs_mapping(struct device *hwdev, dma_addr_t addr,
|
|
|
- size_t size)
|
|
|
-{
|
|
|
- struct dma_mapping_ops *dma_ops = get_dma_ops(hwdev);
|
|
|
-
|
|
|
- BUG_ON(!dma_ops);
|
|
|
- return dma_ops->addr_needs_map(hwdev, addr, size);
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* Determine if an address is reachable by a pci device, or if we must bounce.
|
|
|
*/
|
|
|
static int
|
|
|
swiotlb_pci_addr_needs_map(struct device *hwdev, dma_addr_t addr, size_t size)
|
|
|
{
|
|
|
- u64 mask = dma_get_mask(hwdev);
|
|
|
dma_addr_t max;
|
|
|
struct pci_controller *hose;
|
|
|
struct pci_dev *pdev = to_pci_dev(hwdev);
|
|
@@ -69,16 +52,9 @@ swiotlb_pci_addr_needs_map(struct device *hwdev, dma_addr_t addr, size_t size)
|
|
|
if ((addr + size > max) | (addr < hose->dma_window_base_cur))
|
|
|
return 1;
|
|
|
|
|
|
- return !is_buffer_dma_capable(mask, addr, size);
|
|
|
-}
|
|
|
-
|
|
|
-static int
|
|
|
-swiotlb_addr_needs_map(struct device *hwdev, dma_addr_t addr, size_t size)
|
|
|
-{
|
|
|
- return !is_buffer_dma_capable(dma_get_mask(hwdev), addr, size);
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/*
|
|
|
* At the moment, all platforms that use this code only require
|
|
|
* swiotlb to be used if we're operating on HIGHMEM. Since
|
|
@@ -94,7 +70,6 @@ struct dma_mapping_ops swiotlb_dma_ops = {
|
|
|
.dma_supported = swiotlb_dma_supported,
|
|
|
.map_page = swiotlb_map_page,
|
|
|
.unmap_page = swiotlb_unmap_page,
|
|
|
- .addr_needs_map = swiotlb_addr_needs_map,
|
|
|
.sync_single_range_for_cpu = swiotlb_sync_single_range_for_cpu,
|
|
|
.sync_single_range_for_device = swiotlb_sync_single_range_for_device,
|
|
|
.sync_sg_for_cpu = swiotlb_sync_sg_for_cpu,
|