Re: [PATCH V3 1/2] ACPI / scan: Support multiple dma windows with different offsets

From: Jianmin Lv
Date: Tue Sep 06 2022 - 08:41:06 EST




On 2022/9/5 下午8:20, Robin Murphy wrote:
On 2022-08-30 04:01, Jianmin Lv wrote:
For DT, of_dma_get_range returns bus_dma_region typed dma regions,
which makes multiple dma windows with different offset available
for translation between dma address and cpu address.

But for ACPI, acpi_dma_get_range doesn't return similar dma regions,
causing no path for setting dev->dma_range_map conveniently. So the
patch changes acpi_dma_get_range and returns bus_dma_region typed
dma regions according to of_dma_get_range.

After changing acpi_dma_get_range, acpi_arch_dma_setup is changed for
ARM64, where original dma_addr and size are removed as these
arguments are now redundant, and pass 0 and U64_MAX for dma_base
and size of arch_setup_dma_ops, so this is a simplification consistent
with what other ACPI architectures also pass to iommu_setup_dma_ops().

Other than a micro-nit that acpi_dma_get_range() could probably use resource_size(),


Ok, thanks, I'll use resource_size() in acpi_dma_get_range().

Reviewed-by: Robin Murphy <robin.murphy@xxxxxxx>

It took me longer than I care to admit to figure out where the implicit declaration of struct bus_dma_region in the scope of acpi.h and acpi_bus.h comes from, but in the end I guess it's sufficiently well-defined by the C spec to be reliable.

Thanks for getting this done!


It's a pleasure!


Robin.


[...]