> Memory accesses must go through the IOMMU layer. No. Devices should not know or care whether an IOMMU is present.
You should be adding a DeviceState argument to cpu_physical_memory_{rw,map}. This should then handle IOMMU translation transparently. You also need to accomodate the the case where multiple IOMMU are present. Paul