On 12/10/2013 07:02 AM, Li Zhang wrote:
From: Li Zhang <zhlcindy(a)linux.vnet.ibm.com>
PS2 device only works for X86 platform, other platforms may need
USB mouse. Athough it doesn't influence the QEMU command line, but
It's not right to add one PS2 mouse for non-X86 platform.
This patch is to remove PS2 device definition from other platforms.
Add one default USB mouse for PPC64. It can be also added for other
platforms if necessary.
Signed-off-by: Li Zhang <zhlcindy(a)linux.vnet.ibm.com>
---
src/conf/domain_conf.c | 59 ++++++++--------------
src/qemu/qemu_domain.c | 20 +++++++-
src/util/virarch.h | 2 +
.../qemuxml2argvdata/qemuxml2argv-pseries-disk.xml | 2 +-
4 files changed, 42 insertions(+), 41 deletions(-)
@@ -12260,30 +12263,6 @@ virDomainDefParseXML(xmlDocPtr xml,
}
VIR_FREE(nodes);
- /* If graphics are enabled, there's an implicit PS2 mouse */
- if (def->ngraphics > 0) {
- virDomainInputDefPtr input;
-
- if (VIR_ALLOC(input) < 0) {
- goto error;
- }
- if (STREQ(def->os.type, "hvm")) {
- input->type = VIR_DOMAIN_INPUT_TYPE_MOUSE;
- input->bus = VIR_DOMAIN_INPUT_BUS_PS2;
- } else {
- input->type = VIR_DOMAIN_INPUT_TYPE_MOUSE;
- input->bus = VIR_DOMAIN_INPUT_BUS_XEN;
- }
-
- if (VIR_REALLOC_N(def->inputs, def->ninputs + 1) < 0) {
- virDomainInputDefFree(input);
- goto error;
- }
- def->inputs[def->ninputs] = input;
- def->ninputs++;
- }
-
-
Here you remove auto-adding of the mouse for all drivers, but only re-add it
to the QEMU driver, leading to failures in sexpr2xmltest.
/* analysis of the sound devices */
if ((n = virXPathNodeSet("./devices/sound", ctxt, &nodes)) < 0) {
goto error;
@@ -17201,15 +17180,17 @@ virDomainDefFormatInternal(virDomainDefPtr def,
if (def->ngraphics > 0) {
/* If graphics is enabled, add the implicit mouse */
- virDomainInputDef autoInput = {
- VIR_DOMAIN_INPUT_TYPE_MOUSE,
- STREQ(def->os.type, "hvm") ?
- VIR_DOMAIN_INPUT_BUS_PS2 : VIR_DOMAIN_INPUT_BUS_XEN,
- { .alias = NULL },
- };
-
- if (virDomainInputDefFormat(buf, &autoInput, flags) < 0)
- goto error;
+ if (ARCH_IS_X86(def->os.arch)) {
+ virDomainInputDef autoInput = {
+ VIR_DOMAIN_INPUT_TYPE_MOUSE,
+ STREQ(def->os.type, "hvm") ?
+ VIR_DOMAIN_INPUT_BUS_PS2 : VIR_DOMAIN_INPUT_BUS_XEN,
+ { .alias = NULL },
+ };
+ if (virDomainInputDefFormat(buf, &autoInput, flags) < 0)
+ goto error;
+ }
+
for (n = 0; n < def->ngraphics; n++)
if (virDomainGraphicsDefFormat(buf, def->graphics[n], flags) < 0)
Hmm, if non-USB input devices get skipped when generating the command line and
when formatting the XML, I wonder why are we adding it there in the first place.
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 346fec3..75e615a 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -691,6 +691,8 @@ qemuDomainDefPostParse(virDomainDefPtr def,
bool addPCIRoot = false;
bool addPCIeRoot = false;
bool addDefaultMemballoon = true;
+ bool addDefaultMouse = false;
+ int mouse_bus = VIR_DOMAIN_INPUT_BUS_XEN;
/* check for emulator and create a default one if needed */
if (!def->emulator &&
@@ -721,6 +723,9 @@ qemuDomainDefPostParse(virDomainDefPtr def,
!STRPREFIX(def->os.machine, "rhel"))
break;
addPCIRoot = true;
+ addDefaultMouse = true;
+ if (STREQ(def->os.type, "hvm"))
+ mouse_bus = VIR_DOMAIN_INPUT_BUS_PS2;
os.type has to be "hvm" in the qemu driver.
break;
case VIR_ARCH_ARMV7L:
Jan