From 7b6b9d3863769df521dc2530651ffa41deb255ca Mon Sep 17 00:00:00 2001 From: Li Zhang Date: Wed, 23 Apr 2014 12:30:42 +0100 Subject: [PATCH] PPC64 prefers to set pci-ohci controller as default USB controller. Currently, libvirt is using legacy USB controller as default. There are problems with VGA which can't work correctly with USB Keyboard and USB Mouse. While providing -nodefaults, ppc64 should be specifying the usb controller explicitly in place of using the legacy controller(-usb). Qemu spapr initialization code when sees "-usb" adds a USB Keyboard and USB Mouse by default. And libvirt has added a USB keyboard and USB mouse. A recent fix in the in qemu VGA code uncoverd this problem, which resulted in addition of extra keyboard and mouse to the qemu machine. This patch is to set pci-ohci as USB default controller. Signed-off-by: Li Zhang --- src/qemu/qemu_command.c | 3 ++- tests/qemuxml2argvdata/qemuxml2argv-pseries-usb-default.args | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 8b4a57a43a..91367ab38f 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -8453,7 +8453,8 @@ qemuBuildCommandLine(virConnectPtr conn, cont->model == -1 && !qemuDomainMachineIsQ35(def) && (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_PIIX3_USB_UHCI) || - def->os.arch == VIR_ARCH_PPC64)) { + (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_PCI_OHCI) && + def->os.arch == VIR_ARCH_PPC64))) { if (usblegacy) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("Multiple legacy USB controllers are " diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-usb-default.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-usb-default.args index 3a21b76833..eac7c56b9d 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-usb-default.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-usb-default.args @@ -3,5 +3,5 @@ LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \ -nographic -nodefconfig -nodefaults \ -chardev socket,id=charmonitor,path=/tmp/test-monitor,server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline -no-acpi -boot c \ --usb -chardev pty,id=charserial0 \ +-device pci-ohci,id=usb,bus=pci,addr=0x1 -chardev pty,id=charserial0 \ -device spapr-vty,chardev=charserial0,reg=0x30000000