mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 08:33:17 +02:00
xen: swiotlb: Use swiotlb bouncing if kmalloc allocation demands it
Xen swiotlb support was missed when the patch set starting with4ab5f8ec7d("mm/slab: decouple ARCH_KMALLOC_MINALIGN from ARCH_DMA_MINALIGN") was merged. When running Xen on iMX8QXP, a SoC without IOMMU, the effect was that USB transfers ended up corrupted when there was more than one URB inflight at the same time. Add a call to dma_kmalloc_needs_bounce() to make sure that allocations too small for DMA get bounced via swiotlb. Closes: https://lore.kernel.org/linux-usb/ab2776f0-b838-4cf6-a12a-c208eb6aad59@actia.se/ Fixes:4ab5f8ec7d("mm/slab: decouple ARCH_KMALLOC_MINALIGN from ARCH_DMA_MINALIGN") Cc: stable@kernel.org # v6.5+ Signed-off-by: John Ernberg <john.ernberg@actia.se> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> Signed-off-by: Juergen Gross <jgross@suse.com> Message-ID: <20250502114043.1968976-2-john.ernberg@actia.se>
This commit is contained in:
parent
715ad3e0ec
commit
cd9c058489
|
|
@ -217,6 +217,7 @@ static dma_addr_t xen_swiotlb_map_page(struct device *dev, struct page *page,
|
|||
* buffering it.
|
||||
*/
|
||||
if (dma_capable(dev, dev_addr, size, true) &&
|
||||
!dma_kmalloc_needs_bounce(dev, size, dir) &&
|
||||
!range_straddles_page_boundary(phys, size) &&
|
||||
!xen_arch_need_swiotlb(dev, phys, dev_addr) &&
|
||||
!is_swiotlb_force_bounce(dev))
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user