mirror of
https://github.com/torvalds/linux.git
synced 2026-10-07 05:31:08 -04:00
Many DMA controllers and other devices set max_segment_size to indicate their scatter-gather capability, but have no interest in segment_boundary_mask. However, the existence of a dma_parms structure precludes the use of any default value, leaving them as zeros (assuming a properly kzalloc'ed structure). If a well-behaved IOMMU (or SWIOTLB) then tries to respect this by ensuring a mapped segment does not cross a zero-byte boundary, hilarity ensues. Since zero is a nonsensical value for either parameter, treat it as an indicator for "default", as might be expected. In the process, clean up a bit by replacing the bare constants with slightly more meaningful macros and removing the superfluous "else" statements. [[email protected]: dma-mapping.h needs sizes.h for SZ_64K] Signed-off-by: Robin Murphy <[email protected]> Reviewed-by: Sumit Semwal <[email protected]> Acked-by: Marek Szyprowski <[email protected]> Cc: Arnd Bergmann <[email protected]> Cc: Sakari Ailus <[email protected]> Cc: Russell King <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>