dma: Introduce dma_aligned_pow2_mask()
commitf14fb6c2db961c3665a61b342ab329b7bd20d1e7
authorEric Auger <eric.auger@redhat.com>
Tue, 9 Mar 2021 10:27:37 +0000 (9 11:27 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 12 Mar 2021 12:40:10 +0000 (12 12:40 +0000)
tree57f311ed8f4d445ad5c1474751e76206e25bf972
parent41ce9a912641cd7f820bcfccea15e30efc32104e
dma: Introduce dma_aligned_pow2_mask()

Currently get_naturally_aligned_size() is used by the intel iommu
to compute the maximum invalidation range based on @size which is
a power of 2 while being aligned with the @start address and less
than the maximum range defined by @gaw.

This helper is also useful for other iommu devices (virtio-iommu,
SMMUv3) to make sure IOMMU UNMAP notifiers only are called with
power of 2 range sizes.

Let's move this latter into dma-helpers.c and rename it into
dma_aligned_pow2_mask(). Also rewrite the helper so that it
accomodates UINT64_MAX values for the size mask and max mask.
It now returns a mask instead of a size. Change the caller.

Signed-off-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Message-id: 20210309102742.30442-3-eric.auger@redhat.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
hw/i386/intel_iommu.c
include/sysemu/dma.h
softmmu/dma-helpers.c