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

[Xen-devel] [PATCH 06/15] [swiotlb] In 'swiotlb_init' take advantage of the default swiotlb_engine support.



For baselevel support we define required functions and fill out
variables.

Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
---
 lib/swiotlb.c |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/lib/swiotlb.c b/lib/swiotlb.c
index cf29f03..3c7bd4e 100644
--- a/lib/swiotlb.c
+++ b/lib/swiotlb.c
@@ -132,6 +132,11 @@ static dma_addr_t swiotlb_virt_to_bus(struct device *hwdev,
        return phys_to_dma(hwdev, virt_to_phys(address));
 }
 
+static void *swiotlb_bus_to_virt(struct device *hwdev, dma_addr_t dev_addr)
+{
+       return phys_to_virt(dma_to_phys(hwdev, dev_addr));
+};
+
 /*
  * Register a software IO TLB engine.
  *
@@ -236,9 +241,26 @@ swiotlb_init_with_default_size(size_t default_size, int 
verbose)
                swiotlb_print_info();
 }
 
+static int swiotlb_release(struct swiotlb_engine *iotlb)
+{
+       swiotlb_free();
+       return 0;
+}
+
+static struct swiotlb_engine swiotlb_ops = {
+       .name = "software IO TLB",
+       .overflow = 32 * 1024,
+       .release = swiotlb_release,
+       .phys_to_bus =  phys_to_dma,
+       .bus_to_phys = dma_to_phys,
+       .virt_to_bus = swiotlb_virt_to_bus,
+       .bus_to_virt = swiotlb_bus_to_virt,
+};
+
 void __init
 swiotlb_init(int verbose)
 {
+       swiotlb_register_engine(&swiotlb_ops);
        swiotlb_init_with_default_size(64 * (1<<20), verbose);  /* default to 
64MB */
 }
 
-- 
1.6.2.5


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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