Bug 877330
| Summary: | Can not only use ich9-uhci1/2/3 model as usb controller model | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | weizhang <weizhan> |
| Component: | libvirt | Assignee: | Michal Privoznik <mprivozn> |
| Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> |
| Severity: | medium | Docs Contact: | |
| Priority: | medium | ||
| Version: | 7.0 | CC: | cwei, dyuan, honzhang, jdenemar, jsuchane, lsu, mprivozn, mzhan, pzhang, rbalakri, xuzhang |
| Target Milestone: | rc | ||
| Target Release: | --- | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | libvirt-1.2.17-1.el7 | Doc Type: | Bug Fix |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2015-11-19 05:36:10 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: | |||
This bug was not selected to be addressed in Red Hat Enterprise Linux 6. We will look at it again within the Red Hat Enterprise Linux 7 product. The patches that implement the feature are pushed for a while now:
commit 22c0d433ab848b9518f3d5015587beaec50290e1
Author: Marc-André Lureau <marcandre.lureau>
AuthorDate: Fri Sep 2 21:28:27 2011 +0800
Commit: Daniel Veillard <veillard>
CommitDate: Fri Sep 2 23:22:56 2011 +0800
USB devices gain a new USB address child element
Expand the domain and the QEmu driver code
Adds a couple of tests
commit 33d11150b78eeaaaa10e2dc885de569221786617
Author: Marc-André Lureau <marcandre.lureau>
AuthorDate: Fri Sep 2 21:26:55 2011 +0800
Commit: Daniel Veillard <veillard>
CommitDate: Fri Sep 2 23:22:56 2011 +0800
test: USB controller can have a PCI address child element
add a few tests for the new constructs
commit d6d54cd19ebb24bfc75a2ab379864cf6002a33aa
Author: Marc-André Lureau <marcandre.lureau>
AuthorDate: Fri Sep 2 21:21:23 2011 +0800
Commit: Daniel Veillard <veillard>
CommitDate: Fri Sep 2 23:22:56 2011 +0800
Add a new controller type 'usb' with optionnal 'model'
The model by default is piix3-uchi.
Example:
<controller type='usb' index='0' model='ich9-ehci'/>
commit 2e4b5243b273f9c5904e17a37b38e7391592490b
Author: Marc-André Lureau <marcandre.lureau>
AuthorDate: Fri Sep 2 21:14:29 2011 +0800
Commit: Daniel Veillard <veillard>
CommitDate: Fri Sep 2 23:22:56 2011 +0800
Add USB controller models
List is: piix3-uhci piix4-uhci ehci ich9-ehci1 ich9-uhci1 ich9-uhci2
ich9-uhci3 vt82c686b-uhci pci-ohci
And of course plenty of other commits that reworked the way we parse USB controllers.
verify version :
libvirt-1.2.17-5.el7.x86_64
qemu-kvm-rhev-2.3.0-18.el7.x86_64
steps :
1.define or create a guest like following :
......
<controller type='usb' index='0' model='ich9-uhci1'/>
<hub type='usb'>
<address type='usb' bus='0' port='1'/>
</hub>
......
# virsh define r70806.qcow2.xml
error: Failed to define domain from r70806.qcow2.xml
error: No master USB controller specified
# virsh create r70806.qcow2.xml
error: Failed to create domain from r70806.qcow2.xml
error: No master USB controller specified
Fail to define or start a guest with only ich9-uhci1 usb controller.
It has a clear error message.
Hi, Michal
I was wondering what the expected result is. Should it support only using one of ich9-uhci[1-3] usb controller, or these controllers must be used as companion controllers ,it will give clear error message if only use one of them.
Thanks a lot.
(In reply to Pei Zhang from comment #12) > <snip/> > > Hi, Michal > I was wondering what the expected result is. Should it support only using > one of ich9-uhci[1-3] usb controller, or these controllers must be used as > companion controllers ,it will give clear error message if only use one of > them. Yeah, there are a companion controllers. We are aiming on clear error message here. > > Thanks a lot. Verified version:
libvirt-1.2.17-6.el7.x86_64
qemu-kvm-rhev-2.3.0-18.el7.x86_64
steps :
1.only use one usb controller in domain xml:
<controller type='usb' index='0' model='ich9-uhci1'/>
# virsh define r72.xml
error: Failed to define domain from r72.xml
error: No master USB controller specified
start a healthy guest , edit usb controller.
#virsh edit r72
<controller type='usb' index='0' model='ich9-uhci1'/>
......
try to save.
error: No master USB controller specified
Failed. Try again? [y,n,i,f,?]:
Fail to define / create / edit.
2. use ich9-echi1 + ich9-uhci but using diff index .
#virsh edit r72
......
<controller type='usb' index='0' model='ich9-ehci1'/>
<controller type='usb' index='1' model='ich9-uhci1'/>
......
saved domain xml , then dumpxml to check.
# virsh dumpxml r72 | grep usb -A 3
<controller type='usb' index='0' model='ich9-ehci1'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x7'/>
</controller>
<controller type='usb' index='1' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0' multifunction='on'/>
</controller>
try to start it.
# virsh start r72
error: Failed to start domain r72
error: internal error: process exited while connecting to monitor: libust[21159/21159]: Warning: HOME environment variable not set. Disabling LTTng-UST per-user tracing. (in setup_local_apps() at lttng-ust-comm.c:305)
2015-09-01T02:09:19.740992Z qemu-kvm: -device ich9-usb-uhci1,masterbus=usb1.0,firstport=0,bus=pci.0,multifunction=on,addr=0xb: USB bus 'usb1.0' not found
2015-09-01T02:09:19.741030Z qemu-kvm: -device ich9-usb-uhci1,masterbus=usb1.0,firstport=0,bus=pci.0,multifunction=on,addr=0xb: Device 'ich9-usb-uhci1' could not be initialized
3.using piix4-uhci /piix4 + ich9-uhci1 with diff index.
<controller type='usb' index='0' model='piix3-uhci'/>
<controller type='usb' index='1' model='ich9-uhci3'/>
can define / edit ; fail to create / start , error as step2.
3.using ehci + ich9-uhci1 with diff index.
<controller type='usb' index='0' model='ehci'/>
<controller type='usb' index='1' model='ich9-uhci1'/>
can define / edit ; fail to create / start , error as step2.
4.using nec-xhci + ich9-uhci1 with diff index.
<controller type='usb' index='0' model='nec-xhci'/>
<controller type='usb' index='1' model='ich9-uhci1'/>
can define / edit ; fail to create / start , error as step2.
Hi, Michal
Now, the error message looks like these :
1.if I only use one usb controller of ich9-uhci[1-3] in domain xml , it always gives an error message :
error: No master USB controller specified.
2.if I use other USB controllers together but the controller index is different.
It will be OK when define /edit. and will give error when I try to start guest:
2015-09-01T02:09:19.740992Z qemu-kvm: -device ich9-usb-uhci1,masterbus=usb1.0,firstport=0,bus=pci.0,multifunction=on,addr=0xb: USB bus 'usb1.0' not found
2015-09-01T02:09:19.741030Z qemu-kvm: -device ich9-usb-uhci1,masterbus=usb1.0,firstport=0,bus=pci.0,multifunction=on,addr=0xb: Device 'ich9-usb-uhci1' could not be initialized
I was wondering if this is an expected result.
Thanks a lot.
pzhang
(In reply to Pei Zhang from comment #14) > Verified version: > libvirt-1.2.17-6.el7.x86_64 > qemu-kvm-rhev-2.3.0-18.el7.x86_64 > > steps : > 1.only use one usb controller in domain xml: > <controller type='usb' index='0' model='ich9-uhci1'/> > > # virsh define r72.xml > error: Failed to define domain from r72.xml > error: No master USB controller specified > > start a healthy guest , edit usb controller. > #virsh edit r72 > <controller type='usb' index='0' model='ich9-uhci1'/> > ...... > try to save. > error: No master USB controller specified > Failed. Try again? [y,n,i,f,?]: > > Fail to define / create / edit. > > 2. use ich9-echi1 + ich9-uhci but using diff index . > #virsh edit r72 > ...... > <controller type='usb' index='0' model='ich9-ehci1'/> > <controller type='usb' index='1' model='ich9-uhci1'/> > ...... > > saved domain xml , then dumpxml to check. > > # virsh dumpxml r72 | grep usb -A 3 > <controller type='usb' index='0' model='ich9-ehci1'> > <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' > function='0x7'/> > </controller> > <controller type='usb' index='1' model='ich9-uhci1'> > <master startport='0'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x0b' > function='0x0' multifunction='on'/> > </controller> > > try to start it. > # virsh start r72 > error: Failed to start domain r72 > error: internal error: process exited while connecting to monitor: > libust[21159/21159]: Warning: HOME environment variable not set. Disabling > LTTng-UST per-user tracing. (in setup_local_apps() at lttng-ust-comm.c:305) > 2015-09-01T02:09:19.740992Z qemu-kvm: -device > ich9-usb-uhci1,masterbus=usb1.0,firstport=0,bus=pci.0,multifunction=on, > addr=0xb: USB bus 'usb1.0' not found > 2015-09-01T02:09:19.741030Z qemu-kvm: -device > ich9-usb-uhci1,masterbus=usb1.0,firstport=0,bus=pci.0,multifunction=on, > addr=0xb: Device 'ich9-usb-uhci1' could not be initialized > > > 3.using piix4-uhci /piix4 + ich9-uhci1 with diff index. > <controller type='usb' index='0' model='piix3-uhci'/> > <controller type='usb' index='1' model='ich9-uhci3'/> > > can define / edit ; fail to create / start , error as step2. > > 3.using ehci + ich9-uhci1 with diff index. > <controller type='usb' index='0' model='ehci'/> > <controller type='usb' index='1' model='ich9-uhci1'/> > > can define / edit ; fail to create / start , error as step2. > > 4.using nec-xhci + ich9-uhci1 with diff index. > <controller type='usb' index='0' model='nec-xhci'/> > <controller type='usb' index='1' model='ich9-uhci1'/> > > can define / edit ; fail to create / start , error as step2. > > Hi, Michal > > Now, the error message looks like these : > 1.if I only use one usb controller of ich9-uhci[1-3] in domain xml , it > always gives an error message : > > error: No master USB controller specified. > > 2.if I use other USB controllers together but the controller index is > different. > It will be OK when define /edit. and will give error when I try to start > guest: > > 2015-09-01T02:09:19.740992Z qemu-kvm: -device > ich9-usb-uhci1,masterbus=usb1.0,firstport=0,bus=pci.0,multifunction=on, > addr=0xb: USB bus 'usb1.0' not found > 2015-09-01T02:09:19.741030Z qemu-kvm: -device > ich9-usb-uhci1,masterbus=usb1.0,firstport=0,bus=pci.0,multifunction=on, > addr=0xb: Device 'ich9-usb-uhci1' could not be initialized > > I was wondering if this is an expected result. I think it is, because in qemu ehci and uhci are companion controllers. Therefore you need to add an ehci1 controller with index=1 to be able to boot. Michal Thanks for your info. According to comment 12 and comment 14 , ich9-uhci[1-3] as a companion controllers cannot only use one of them. it has clear error message now. move this bug to verified. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2015-2202.html |
Description of problem: When I want to use a usb1.1 device only with model ich9-uhci1/2/3, it report error virsh create test1.xml error: Failed to create domain from test.xml error: internal error process exited while connecting to monitor: qemu-kvm: -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,addr=0x2: Parameter 'masterbus' expects an USB masterbus qemu-kvm: -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,addr=0x2: Device 'ich9-usb-uhci1' could not be initialized Seems libvirt will automatically add masterbus for this model If this model can only used with masterbus, then it should report error when edit/define xml. Version-Release number of selected component (if applicable): libvirt-0.10.2-8.el6.x86_64 qemu-kvm-0.12.1.2-2.323.el6.x86_64 kernel-2.6.32-329.el6.x86_64 How reproducible: 100% Steps to Reproduce: # cat test.xml <domain type='kvm' id='20'> <name>test</name> <uuid>c631184e-3027-0edd-48be-8798c9c64682</uuid> <memory unit='KiB'>524288</memory> <currentMemory unit='KiB'>524288</currentMemory> <vcpu placement='static'>1</vcpu> <os> <type arch='x86_64' machine='rhel6.2.0'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='none'/> <source file='/var/lib/libvirt/images/test.img'/> <target dev='hda' bus='ide'/> <alias name='ide0-0-0'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> <controller type='ide' index='0'> <alias name='ide0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <controller type='usb' index='0' model='ich9-uhci1'> <alias name='usb0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </controller> <hub type='usb'> <address type='usb' bus='0' port='1'/> </hub> <memballoon model='none'> <alias name='balloon0'/> </memballoon> </devices> </domain> # virsh create test.xml Actual result report error error: Failed to create domain from test.xml error: internal error process exited while connecting to monitor: qemu-kvm: -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,addr=0x2: Parameter 'masterbus' expects an USB masterbus qemu-kvm: -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,addr=0x2: Device 'ich9-usb-uhci1' could not be initialized Actual results: Report error Expected results: Succeed or report error when define/edit xml Additional info: with qemu-command line, /usr/libexec/qemu-kvm -name test -M rhel6.2.0 -enable-kvm -m 512 -smp 1,sockets=1,cores=1,threads=1 -uuid c631184e-3027-0edd-48be-8798c9c64682 -nographic -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/test.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -device ich9-usb-uhci1,id=usb,bus=pci.0,addr=0xa -drive file=/var/lib/libvirt/images/kvm-rhel6u3-i386.img,if=none,id=drive-ide0-0-0,format=raw,cache=none -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -device usb-hub,id=hub0,bus=usb.0,port=1 -vnc 127.0.0.1:1 -k en-us -vga cirrus guest can be started successfully without error