|
@@ -157,13 +157,6 @@ unsigned long swiotlb_size_or_default(void)
|
|
|
return size ? size : (IO_TLB_DEFAULT_SIZE);
|
|
|
}
|
|
|
|
|
|
-/* Note that this doesn't work with highmem page */
|
|
|
-static dma_addr_t swiotlb_virt_to_bus(struct device *hwdev,
|
|
|
- volatile void *address)
|
|
|
-{
|
|
|
- return phys_to_dma(hwdev, virt_to_phys(address));
|
|
|
-}
|
|
|
-
|
|
|
static bool no_iotlb_memory;
|
|
|
|
|
|
void swiotlb_print_info(void)
|
|
@@ -752,28 +745,6 @@ out_warn:
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
-void *
|
|
|
-swiotlb_alloc_coherent(struct device *hwdev, size_t size,
|
|
|
- dma_addr_t *dma_handle, gfp_t flags)
|
|
|
-{
|
|
|
- int order = get_order(size);
|
|
|
- unsigned long attrs = (flags & __GFP_NOWARN) ? DMA_ATTR_NO_WARN : 0;
|
|
|
- void *ret;
|
|
|
-
|
|
|
- ret = (void *)__get_free_pages(flags, order);
|
|
|
- if (ret) {
|
|
|
- *dma_handle = swiotlb_virt_to_bus(hwdev, ret);
|
|
|
- if (dma_coherent_ok(hwdev, *dma_handle, size)) {
|
|
|
- memset(ret, 0, size);
|
|
|
- return ret;
|
|
|
- }
|
|
|
- free_pages((unsigned long)ret, order);
|
|
|
- }
|
|
|
-
|
|
|
- return swiotlb_alloc_buffer(hwdev, size, dma_handle, attrs);
|
|
|
-}
|
|
|
-EXPORT_SYMBOL(swiotlb_alloc_coherent);
|
|
|
-
|
|
|
static bool swiotlb_free_buffer(struct device *dev, size_t size,
|
|
|
dma_addr_t dma_addr)
|
|
|
{
|
|
@@ -793,15 +764,6 @@ static bool swiotlb_free_buffer(struct device *dev, size_t size,
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-void
|
|
|
-swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
|
|
|
- dma_addr_t dev_addr)
|
|
|
-{
|
|
|
- if (!swiotlb_free_buffer(hwdev, size, dev_addr))
|
|
|
- free_pages((unsigned long)vaddr, get_order(size));
|
|
|
-}
|
|
|
-EXPORT_SYMBOL(swiotlb_free_coherent);
|
|
|
-
|
|
|
static void
|
|
|
swiotlb_full(struct device *dev, size_t size, enum dma_data_direction dir,
|
|
|
int do_panic)
|