Bug 1003983
| Summary: | q35 chipset support should mimic real hardware better | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Gerd Hoffmann <kraxel> |
| Component: | libvirt | Assignee: | Laine Stump <laine> |
| Status: | CLOSED CURRENTRELEASE | QA Contact: | Virtualization Bugs <virt-bugs> |
| Severity: | unspecified | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 7.0 | CC: | acathrow, ajia, bili, chhu, dyuan, honzhang, jdenemar, juzhang, xuzhang |
| Target Milestone: | rc | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | libvirt-1.1.1-8.el7 | Doc Type: | Bug Fix |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2014-06-13 11:58:44 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
|
Description
Gerd Hoffmann
2013-09-03 16:09:59 UTC
Patches to address the 3 issues you list above have been posted to libvir-list for review: https://www.redhat.com/archives/libvir-list/2013-September/msg01458.html I just pushed the following 6 commits upstream:
commit fbd9be484c3b1891412e9409d0133a07bbc3fc2b
Date: Tue Sep 24 06:49:26 2013 -0400
qemu: eliminate redundant if clauses in qemuCollectPCIAddress
commit 07af519298996f4341f62542c31c1c01969eeceb
Date: Tue Sep 24 09:16:25 2013 -0400
qemu: allow some PCI devices to be attached to PCIe slots
commit 8e0dab3a8e2e4b0c580739587fa4a474c7a4afc8
Date: Tue Sep 24 09:38:32 2013 -0400
qemu: replace multiple strcmps with a switch on an enum
commit b83d26f6c434f80c71a2a7a0823b1ec16b798ca3
Date: Tue Sep 24 10:17:38 2013 -0400
qemu: support ich9-intel-hda audio device
commit c484fe16cb58174b9ea1c532eeea70be5893ca3c
Date: Wed Sep 25 06:59:46 2013 -0400
qemu: turn if into switch in qemuDomainValidateDevicePCISlotsQ35
commit 386ebb47a5d707829edf0dccf4d80056ca199e63
Date: Wed Sep 25 08:02:19 2013 -0400
qemu: prefer to put a Q35 machine's dmi-to-pci-bridge at 00:1E.0
Verifying this bug with libvirt-1.1.1-8.el7:
Steps:
For the first problem:
* The pci bridge (dmi-to-pci-bridge) is at 00:1e.0.
libvirt picks another slot when auto-adding the device while
creating the machine. It is possible to move it though.
1. Add 'dmi-to-pci-bridge' to a q35 guest, and do not specify the address for it:
# virsh edit test
"
<controller type='pci' index='1' model='dmi-to-pci-bridge'>
</controller>
"
save.
# virsh dumpxml test
.....
<controller type='pci' index='1' model='dmi-to-pci-bridge'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/>
</controller>
.....
libvirt will add address: 00:1e.0 to it automatically.
2. Change the address for 'dmi-to-pci-bridge' to 00:02.0
# virsh edit test
"
<controller type='pci' index='1' model='dmi-to-pci-bridge'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</controller>
"
save.
# virsh dumpxml test
....
<controller type='pci' index='1' model='dmi-to-pci-bridge'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</controller>
....
it is not changed to 00:1e.0, and start guest will work.
For second problem:
* The ehci+uhci controllers are in slot 00:1d (ehci1 + uhci1,2,3)
and in 00:1a (ehci2 + uhci4,5,6).
libvirt doesn't allow me to add the devices to bus 0.
1. Add 'ehci' + 'ich9-uhci1' to guest and do not add addresses to them:
# virsh edit test
"
<controller type='usb' index='0' model='ehci'>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
</controller>
"
save
# virsh dumpxml test
....
<controller type='usb' index='0' model='ehci'>
<address type='pci' domain='0x0000' bus='0x02' slot='0x02' function='0x0'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x02' slot='0x03' function='0x0' multifunction='on'/>
</controller>
....
libvirt add addresses to them and attach to PCI automatically.
2. Modify addresses for 'ehci' and 'ich9-uhci1' :
# virsh edit test
<controller type='usb' index='0' model='ehci'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0' multifunction='on'/>
</controller>
save
# virsh dumpxml test
will see it works, libvirt support to specify the bus to 0, and can be started normally.
3. Repeat above steps for "ehci + ich9-uhci1, ich9-uhci2, ich9-uhci3, vt82c686b-uhci" and "ich9-ehci1 + ich9-uhci1, ich9-uhci2, ich9-uhci3, vt82c686b-uhci" all works well.
For the third problem:
* The hda audio controller is at 00:1b.0.
libvirt doesn't allow me to add the device to bus 0.
qemu also provides a ich9-intel-hda device (identical to
intel-hda except that it has ich9 pci ids). Adding support
for this device would be nice.
1. Add 'ich9-intel-hda' to guest:
# virsh edit test
"
<sound model='ich9'>
</sound>
"
save.
# virsh dumpxml test
....
<sound model='ich9'>
<address type='pci' domain='0x0000' bus='0x02' slot='0x02' function='0x0'/>
</sound>
....
libvirt will add address and attach to PCI automatically.
# ps aux | grep qemu
... -device ich9-intel-hda,id=sound0,bus=pci.2,addr=0x2 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 ....
2. Modify the address of ich9 device:
# virsh edit test
<sound model='ich9'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</sound>
save.
# virsh dumpxml test
will see it works, libvirt support to specify the bus to 0, and can be started normally.
# ps aux | grep qemu
... -device ich9-intel-hda,id=sound0,bus=pcie.0,addr=0x7 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 ...
So setting VERIFIED.
This request was resolved in Red Hat Enterprise Linux 7.0. Contact your manager or support representative in case you have further questions about the request. |