|
@@ -293,9 +293,10 @@ dma_addr_t xen_swiotlb_map_page(struct device *dev, struct page *page,
|
|
|
/*
|
|
|
* Ensure that the address returned is DMA'ble
|
|
|
*/
|
|
|
- if (!dma_capable(dev, dev_addr, size))
|
|
|
- panic("map_single: bounce buffer is not DMA'ble");
|
|
|
-
|
|
|
+ if (!dma_capable(dev, dev_addr, size)) {
|
|
|
+ swiotlb_tbl_unmap_single(dev, map, size, dir);
|
|
|
+ dev_addr = 0;
|
|
|
+ }
|
|
|
return dev_addr;
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(xen_swiotlb_map_page);
|