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>
parent
823353b7
Please register or sign in to comment