UPSTREAM: swiotlb: Honour dma_alloc_coherent() alignment in swiotlb_alloc()
core-api/dma-api-howto.rst states the following properties of dma_alloc_coherent(): | The CPU virtual address and the DMA address are both guaranteed to | be aligned to the smallest PAGE_SIZE order which is greater than or | equal to the requested size. However, swiotlb_alloc() passes zero for the 'alloc_align_mask' parameter of swiotlb_find_slots() and so this property is not upheld. Instead, allocations larger than a page are aligned to PAGE_SIZE, Calculate the mask corresponding to the page order suitable for holding the allocation and pass that to swiotlb_find_slots(). Fixes: e81e99ba ("swiotlb: Support aligned swiotlb buffers") Signed-off-by:Will Deacon <will@kernel.org> Reviewed-by:
Michael Kelley <mhklinux@outlook.com> Reviewed-by:
Petr Tesarik <petr.tesarik1@huawei-partners.com> Tested-by:
Nicolin Chen <nicolinc@nvidia.com> Tested-by:
Michael Kelley <mhklinux@outlook.com> Signed-off-by:
Christoph Hellwig <hch@lst.de> (cherry picked from commit cbf53074) Bug: 326179884 Signed-off-by:
Will Deacon <willdeacon@google.com> Change-Id: I6166fb84fdb458480309c6eb607ad778cf0710d4
Loading
Please sign in to comment