On Tue, Apr 09, 2013 at 04:06:06PM -0400, Laine Stump wrote: > On 04/09/2013 04:58 AM, Daniel P. Berrange wrote: > > On Mon, Apr 08, 2013 at 03:32:07PM -0400, Laine Stump wrote: > > Actually I do wonder if we should reprent a PCI root as two > > <controller> elements, one representing the actual PCI root > > device, and the other representing the host bridge that is > > built-in. > > > > Also we should use the actual model names, not 'pci-root' or > > 'pcie-root' but rather i440FX for "pc" machine type, and whatever > > the q35 model name is. > > > > - One PCI root with built-in PCI bus (ie todays' setup) > > > > <controller type="pci-root" index="0"> > > <model name="i440FX"/> > > </controller> > > <controller type="pci" index="0"> <!-- Host bridge --> > > <address type='pci' domain='0' bus='0' slot='0''/> > > Isn't this saying that the bridge connects to itself? (since bus 0 is > this bus) > > I understand (again, possibly wrongly) that the builtin PCI bus connects > to the chipset using its own slot 0 (that's why it's reserved), but > that's its address on itself. How is this bridge associated with the > pci-root? > > Ah, I *think* I see it - the domain attribute of the pci controller is > matched to the index of the pci-root controller, correct? But there's > still something strange about the <address> of the pci controller being > self-referential. Yes, the index of the pci-root matches the 'domain' of <address> > > </controller> > > <interface type='direct'> > > ... > > <address type='pci' domain='0' bus='0' slot='3'/> > > </controller> > > > > - One PCI root with built-in PCI bus and extra PCI bridge > > > > <controller type="pci-root" index="0"> > > <model name="i440FX"/> > > </controller> > > <controller type="pci" index="0"> <!-- Host bridge --> > > <address type='pci' domain='0' bus='0' slot='0'/> > > </controller> > > <controller type="pci" index="1"> <!-- Additional bridge --> > > <address type='pci' domain='0' bus='0' slot='1'/> > > </controller> > > <interface type='direct'> > > ... > > <address type='pci' domain='0' bus='1' slot='3'/> > > </controller> > > > > - One PCI root with built-in PCI bus, PCI-E bus and and extra PCI bridge > > (ie possible q35 setup) > > Why would a q35 machine have an i440FX pci-root? It shouldn't, that's a typo > > > > > <controller type="pci-root" index="0"> > > <model name="i440FX"/> > > </controller> > > <controller type="pci" index="0"> <!-- Host bridge --> > > <address type='pci' domain='0' bus='0' slot='0'/> > > </controller> > > <controller type="pci" index="1"> <!-- Additional bridge --> > > <address type='pci' domain='0' bus='0' slot='1'/> > > </controller> > > <controller type="pci" index="1"> <!-- Additional bridge --> > > <address type='pci' domain='0' bus='0' slot='1'/> > > </controller> > > I think you did a cut-paste here and intended to change something, but > didn't - those two bridges are identical. Yep, the slot should be 2 in the second one > > > <interface type='direct'> > > ... > > <address type='pci' domain='0' bus='1' slot='3'/> > > </controller> > > > > So if we later allowed for mutiple PCI roots, then we'd have something > > like > > > > <controller type="pci-root" index="0"> > > <model name="i440FX"/> > > </controller> > > <controller type="pci-root" index="1"> > > <model name="i440FX"/> > > </controller> > > <controller type="pci" index="0"> <!-- Host bridge 1 --> > > <address type='pci' domain='0' bus='0' slot='0''/> > > </controller> > > <controller type="pci" index="0"> <!-- Host bridge 2 --> > > <address type='pci' domain='1' bus='0' slot='0''/> > > </controller> > > <interface type='direct'> <!-- NIC on host bridge 2 --> > > ... > > <address type='pci' domain='1' bus='0' slot='3'/> > > </controller> > > > > > > NB this means that 'index' values can be reused against the > > <controller>, provided they are setup on different pci-roots. > > > >> (also note that it might happen that the bus number in libvirt's config > >> will correspond to the bus numbering that shows up in the guest OS, but > >> that will just be a happy coincidence) > >> > >> Does this make sense? > > Yep, I think we're fairly close. > > What about the other types of pci controllers that are used by PCIe? We > should make sure they fit in this model before we settle on it. What do they do ? 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 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list