Xen-swiotlb hooks into the arm/arm64 arch code through a copy of the DMA
DMA mapping operations stored in the struct device arch data.
Switching arm64 to use the direct calls for the merged DMA direct /
swiotlb code broke this scheme.  Replace the indirect calls with
direct-calls in xen-swiotlb as well to fix this problem.
Fixes: 356da6d0cd ("dma-mapping: bypass indirect calls for dma-direct")
Reported-by: Julien Grall <julien.grall@arm.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
		
	
		
			
				
	
	
		
			17 lines
		
	
	
		
			709 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			17 lines
		
	
	
		
			709 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| #ifndef _XEN_ARM_PAGE_COHERENT_H
 | |
| #define _XEN_ARM_PAGE_COHERENT_H
 | |
| 
 | |
| void __xen_dma_map_page(struct device *hwdev, struct page *page,
 | |
| 	     dma_addr_t dev_addr, unsigned long offset, size_t size,
 | |
| 	     enum dma_data_direction dir, unsigned long attrs);
 | |
| void __xen_dma_unmap_page(struct device *hwdev, dma_addr_t handle,
 | |
| 		size_t size, enum dma_data_direction dir,
 | |
| 		unsigned long attrs);
 | |
| void __xen_dma_sync_single_for_cpu(struct device *hwdev,
 | |
| 		dma_addr_t handle, size_t size, enum dma_data_direction dir);
 | |
| void __xen_dma_sync_single_for_device(struct device *hwdev,
 | |
| 		dma_addr_t handle, size_t size, enum dma_data_direction dir);
 | |
| 
 | |
| #endif /* _XEN_ARM_PAGE_COHERENT_H */
 |