Hi all,

The issue occurs when I started a virtual machine in UEFI way by libvirt on 
qemu-kvm platform, the vm is configured with 8 pci-bridges on root bus0. I 
hotplug a device like virtual nic to an empty pci-bridge which has no device 
connected. Login the vm, I can see the device by "lspci"", but it didn't show 
by "ifconfig -a". Dmesg shows like below:
pci 0000:04:01.0: BAR 0: no space for [mem size 0x00010000 64bit pref] pci 
0000:04:01.0: BAR 0: failed to assign [mem size 0x00010000 64bit pref] pci 
0000:04:01.0: BAR 3: no space for [mem size 0x00004000 64bit pref] pci 
0000:04:01.0: BAR 3: failed to assign [mem size 0x00004000 64bit pref]

Reboot the vm, everything turns back to normal and I can see the new hotplugged 
nic by "ifconfig -a".

Use the OVMF compiling from latest edk2 source code, the same problem arises.

So, my questions are:
1) the generic PCI bus driver in edk2 does not allocate IO and/or MMIO for a 
bridge if there is no device behind the bridge that consume that kind of 
resource?
2) What's the purpose of this strategy?
3) Why don't allocate resource to all bridges like seabios?
4) Is there any switch for me to turn off this constraint so that every 
pci-bridge including empty ones can be assigned IO and memory window? 
Otherwise, each time I hotplug a device to empty pci-bridge, a reboot operation 
should be implemented to use the device?

Any help will be appreciated, Thanks!
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to