'why 32bit msi pci device can work with arm64 64bit msi controller without iommu?

I have a marvell sata card,which support 32bit-msi only and without msix capability. It works well in system where msi controller(gic its translater) address is 64bit,os is linux,kernel version 4.4.65.

No matter I enable iommu or not,it always works,my method to disable iommu is remove all the iommu and smmu config in os and then remake os.

I cannot understand this,when sata controller send a memory write tlp to trigger interrupt,address within tlp is incomplete becase it only support 32bit-msi.During init stage,only lo 32 bit of msi controller address stored in sata card reg.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source