Copying Marcel for PCI expertise. Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> writes:
> Hi all, > > I've been working on a patchset that brings the sun4u machine on > qemu-system-sparc64 much closer to a real Ultra 5, however due to > various design restrictions I need to be able to restrict how devices > are added to the machine with -device. > > On a real Ultra 5, the root PCI bus (sabre) has 2 PCI bridges (simba A > and simba B) with the onboard devices attached to simba A with 2 free > slots, and an initially empty simba B. > > Firstly, is it possible to restrict the machine so that devices cannot > be directly plugged into the root PCI bus, but only behind one of the > PCI bridges? There is also an additional restriction in that slot 0 > behind simba A must be left empty to ensure that the ebus (containing > the onboard devices) is the first device allocated. I figure sabre, simba A, simba B and the onboard devices attached to simba A are all created by MachineClass init(). What device provides "the ebus", and how is it created? Can you provide a list of all onboard PCI devices and how they are connected? Diagram would be best. The real sabre has two slots, and doesn't support hot (un)plug. Can we simply model that? If yes, the root PCI bus is full after init(), and remains full. Takes care of "cannot directly plugged into the root PCI bus". > Secondly, how does libvirt handle these type of restrictions? Is it able > to get the information from QEMU or is there some kind of libvirt > profile that needs to be updated? And do newer versions of libvirt have > the ability to attach devices behind PCI bridges using a GUI such as > virt-manager, or is that only something that can only be done by > directly editing the domain XML? Got nothing to add to Dan's reply.