On Tue, 30 Jun 2026 at 18:33, Cédric Le Goater <[email protected]> wrote: > > On aarch64 hosts with 64K pages, the platform bus MMIO allocator can > place device regions (such as the 1KB "tpm-ppi" region) at offsets > that are not aligned to the host page size. This causes unnecessary > and noisy VFIO IOMMU warnings when starting VMs configured with > passed-through PCI devices: > > vfio_listener_valid_section received unaligned region tpm-ppi > iova=0xc005000 offset_within_region=0x0 > qemu_real_host_page_size=0x10000
Why does vfio care about the tpm-ppi region? I thought vfio was only for passthrough devices, not for normal ones. > Fix this by ensuring the alignment used by the platform bus allocator > is at least qemu_real_host_page_size(). > > Signed-off-by: Cédric Le Goater <[email protected]> > --- > hw/core/platform-bus.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/hw/core/platform-bus.c b/hw/core/platform-bus.c > index > a2217a2deec7ab0f49b211c6658db02d13c319df..a17a38c1ba5491e2001fec5a29c188de67e93d11 > 100644 > --- a/hw/core/platform-bus.c > +++ b/hw/core/platform-bus.c > @@ -140,6 +140,13 @@ static void platform_bus_map_mmio(PlatformBusDevice > *pbus, SysBusDevice *sbdev, > return; > } > > + /* > + * Ensure alignment is at least the host page size so that IOMMU > + * mappings (e.g. VFIO) work on hosts with large pages such as > + * aarch64 with 64K pages. > + */ > + alignment = MAX(alignment, qemu_real_host_page_size()); Do we need to tie this to machine versions? Otherwise I think the memory layout can change underfoot which would break a guest migrated from an old QEMU to new. -- PMM
