• Robin Murphy's avatar
    dma-mapping: tidy up dma_parms default handling · 002edb6f
    Robin Murphy authored
    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.
    
    [akpm@linux-foundation.org: dma-mapping.h needs sizes.h for SZ_64K]
    Signed-off-by: default avatarRobin Murphy <robin.murphy@arm.com>
    Reviewed-by: default avatarSumit Semwal <sumit.semwal@linaro.org>
    Acked-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Sakari Ailus <sakari.ailus@iki.fi>
    Cc: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    002edb6f
dma-mapping.h 9.41 KB