> This is exactly how dma_map_sg() works. Which dma_map_sg? swiotlb handling is implemented in the underlying ops, dma-direct and dma-iommu specifically. dma-direct just iterates over the entries and calls dma_direct_map_page, which does a per-entry decision to bounce based on is_swiotlb_force_bounce, dma_capable and dma_kmalloc_needs_bounce.