Instead of sprinkling the device's DMA tag, always return a new DMA tag
authorpatrick <patrick@openbsd.org>
Mon, 1 Mar 2021 21:35:03 +0000 (21:35 +0000)
committerpatrick <patrick@openbsd.org>
Mon, 1 Mar 2021 21:35:03 +0000 (21:35 +0000)
commitc6c0a1de1ef15d80b49009845c192a0732f6167f
treefd927da4dee9b9074e0823a091a93ed7a842368d
parenteae9bc5e7a21f75a2d4ea8b5d01861b291ab1002
Instead of sprinkling the device's DMA tag, always return a new DMA tag
which is based on the IOMMU's.  If you think about it, using the IOMMU's
DMA tag makes more sense because it is the IOMMU that does the actual DMA.
Noticed while debugging, since the SMMU's map function was called twice:
once for the PCI device, and once for its ppb(4).  As the transaction has
the PCI device's Stream ID, not the ppb(4)'s, this would be useless work.

Suggested by kettenis@
sys/arch/arm64/dev/smmu.c
sys/arch/arm64/dev/smmu_fdt.c
sys/arch/arm64/dev/smmuvar.h