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
|