[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v2 10/16] xen: swiotlb: Open code map_resource callback



From: Leon Romanovsky <leonro@xxxxxxxxxx>

General dma_direct_map_resource() is going to be removed
in next patch, so simply open-code it in xen driver.

Reviewed-by: Juergen Gross <jgross@xxxxxxxx>
Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxx>
---
 drivers/xen/swiotlb-xen.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
index da1a7d3d377c..dd7747a2de87 100644
--- a/drivers/xen/swiotlb-xen.c
+++ b/drivers/xen/swiotlb-xen.c
@@ -392,6 +392,25 @@ xen_swiotlb_sync_sg_for_device(struct device *dev, struct 
scatterlist *sgl,
        }
 }
 
+static dma_addr_t xen_swiotlb_direct_map_resource(struct device *dev,
+                                                 phys_addr_t paddr,
+                                                 size_t size,
+                                                 enum dma_data_direction dir,
+                                                 unsigned long attrs)
+{
+       dma_addr_t dma_addr = paddr;
+
+       if (unlikely(!dma_capable(dev, dma_addr, size, false))) {
+               dev_err_once(dev,
+                            "DMA addr %pad+%zu overflow (mask %llx, bus limit 
%llx).\n",
+                            &dma_addr, size, *dev->dma_mask, 
dev->bus_dma_limit);
+               WARN_ON_ONCE(1);
+               return DMA_MAPPING_ERROR;
+       }
+
+       return dma_addr;
+}
+
 /*
  * Return whether the given device DMA address mask can be supported
  * properly.  For example, if your device can only drive the low 24-bits
@@ -426,5 +445,5 @@ const struct dma_map_ops xen_swiotlb_dma_ops = {
        .alloc_pages_op = dma_common_alloc_pages,
        .free_pages = dma_common_free_pages,
        .max_mapping_size = swiotlb_max_mapping_size,
-       .map_resource = dma_direct_map_resource,
+       .map_resource = xen_swiotlb_direct_map_resource,
 };
-- 
2.50.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.