Paolo Bonzini writes:
> On 11/03/19 14:48, Sergio Lopez wrote: >>> The initialization is O(n^2) because the guest initializes one device at >>> a time, so you rebuild the FlatView first with 0 devices, then 1, then >>> 2, etc. This is very hard to fix, if at all possible. >>> >>> However, each FlatView creation should be O(n) where n is the number of >>> devices currently configured. Please check with "info mtree -f" that >>> you only have a fixed number of FlatViews. Old versions had one per device. >> I'm seeing 9 FVs with 1 PCI, and 119 with 100 PCIs. > > With > > $ eval qemu-system-x86_64 -M q35 \ > -device\ e1000,id=n{1,2,3,4,5,6,7,8}{1,2,3} > > I only see 4 flat views ("system", "io", "memory", "(none)"). > > Probably you are using intel-iommu? Peter, it should be possible to > reorganize the VT-d memory regions like this: You're right, the number of FVs goes down drastically after removing intel-iommu, and the slowness during Guest PCI initialization disappears with it. Thanks, Sergio.