X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2Fswiotlb.c;h=93ca08b8a451411c3c4ac18f1f9525637e4a7140;hb=8d082f8f3fb89e8a1fcb5120ad98cd9860c8a3e8;hp=c47bbe11b804e1aa9e0084eeb73e402cbaea04b9;hpb=97eb3f24352ec6632c2127b35d8087d2a809a9b9;p=firefly-linux-kernel-4.4.55.git diff --git a/lib/swiotlb.c b/lib/swiotlb.c index c47bbe11b804..93ca08b8a451 100644 --- a/lib/swiotlb.c +++ b/lib/swiotlb.c @@ -686,8 +686,10 @@ dma_addr_t 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 = swiotlb_virt_to_bus(dev, io_tlb_overflow_buffer); + } return dev_addr; }