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 :|