On 2012年12月26日 09:00, liguang wrote:
Now, it's unnecessary to arrange devices into multi-pci-bus,
for example:
<sound model='ac97'>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x04' function='0x0'/>
</sound>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x1'
slot='0x02' function='0x0'/>
</video>
libvirt will complain about "bus != 0",
fortunately, qemu supports pci-to-pci bridge,
if we want to use multi-pci-bus, we can define
2 pci bridge devices then attach 1 to the other
as a subordinate pci-bus, so, 2 pci-buses appear.
for example:
<pci-bridge type='root'/>
<pci-bridge type='subordinate'>
<address type='pci-bridge' domain='0x0000' bus='0x00'
slot='0x04' function='0x0'/>
</pci-bridge>
<sound model='ac97'>
<address type='pci-bridge' domain='0x0000' bus='0x01'
slot='0x02' function='0x0'/>
</sound>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<address type='pci-bridge' domain='0x0000' bus='0x00'
slot='0x02' function='0x0'/>
</video>
I think this is rather not workable, E.g. how to known the video device
attached to which pci bridge if there are multiple pci bridges? And the
new address type "pci-bridge" looks bogus, as the address properties of
a pci bridge are exactly same with a normal pci device.
From the qemu patch:
-device pci-bridge,id=bridge1 \
-netdev user,id=u \
-device ne2k_pci,id=net2,bus=bridge1,netdev=u
I think what we only need is to describe the relapship between pci
bridge and pci bridge (if it's supported, the two types "root" and
"subordinate" are not enough to describe the relatioship), also pci
device and pci bridge.
To describe the relationship between bridges, perhaps we will need
"parent" and "child" properties for <pcibridge> device.
To describe the relatioship between a pci device and a pci bridge,
a property like "bridge" for general pci device should be enough.
In this case, another property for <pcibridge> is needed, to
indentify it, such as "id" or "name".
Regards,
Osier