On Fri, Feb 28, 2014 at 09:10:47AM +0000, Hong-Hua.Yin(a)freescale.com wrote:
Hi Daniel,
Refer to libvirt/src/qemu/qemu_capabilities.c, only x86_64/i686 support PCI_MULTIBUS.
/* Currently only x86_64 and i686 support PCI-multibus. */
if (qemuCaps->arch == VIR_ARCH_X86_64 ||
qemuCaps->arch == VIR_ARCH_I686) {
virQEMUCapsSet(qemuCaps, QEMU_CAPS_PCI_MULTIBUS);
libvirt/src/qemu/qemu_capabilities.h:
QEMU_CAPS_PCI_MULTIBUS = 52, /* bus=pci.0 vs bus=pci */
Exactly there're several PowerPC platforms also use pci.0 as PCI bus name.
$ grep -r "pci\.0" qemu/hw/
qemu/hw/ppc/prep.c: pci_bus = (PCIBus *)qdev_get_child_bus(dev, "pci.0");
qemu/hw/ppc/e500.c: pci_bus = (PCIBus *)qdev_get_child_bus(dev, "pci.0");
qemu/hw/ppc/ppc440_bamboo.c: pcibus = (PCIBus *)qdev_get_child_bus(dev,
"pci.0");
There's no much platform specific code in libvirt.
How can we get the exact PCI bus name and make "pci.0" work on the above
PowerPC platforms?
As I said in my previous comments, if PPC is now using 'pci.0' as the
bus name, this is a change from previous QEMU behaviour. If you just
make libvirt use 'pci.0' for all PPC arches you will be breaking
compatibility with old QEMU versions. You must therefore do proper
version detection for this.
Regards,
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|