On 02/17/2014 08:33 AM, Li Zhang wrote: > From: Li Zhang <zhlcindy@xxxxxxxxxxxxxxxxxx> > > 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. > > What's more, PS2 keyboard can be supported for X86. > > So, this patch is to remove PS2 mouse for non-x86 platforms and also add > an implicit PS2 keyboard device for X86. > > Signed-off-by: Li Zhang <zhlcindy@xxxxxxxxxxxxxxxxxx> > --- > > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > index 3301398..10c753c 100644 > --- a/src/conf/domain_conf.c > +++ b/src/conf/domain_conf.c > @@ -12495,29 +12496,27 @@ virDomainDefParseXML(xmlDocPtr xml, > VIR_FREE(nodes); > > /* If graphics are enabled, there's an implicit PS2 mouse */ > - if (def->ngraphics > 0) { > - virDomainInputDefPtr input; > + if (def->ngraphics > 0 && > + ARCH_IS_X86(def->os.arch)) { > + int input_bus = VIR_DOMAIN_INPUT_BUS_XEN; > > - 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 (STREQ(def->os.type, "hvm")) > + input_bus = VIR_DOMAIN_INPUT_BUS_PS2; > > - if (VIR_REALLOC_N(def->inputs, def->ninputs + 1) < 0) { > - virDomainInputDefFree(input); > + if (virDomainDefMaybeAddInput(def, > + VIR_DOMAIN_INPUT_TYPE_MOUSE, > + input_bus) < 0) > goto error; > + > + /*Ignore keyboard for XEN, only add a PS2 keyboard device for hvm*/ > + if (STREQ(def->os.type, "hvm")) { > + if (virDomainDefMaybeAddInput(def, > + VIR_DOMAIN_INPUT_TYPE_KBD, > + input_bus) < 0) > + goto error; > } Adding the default keyboard should be in the patch that adds it to the parser according to https://www.redhat.com/archives/libvir-list/2014-February/msg00889.html > - def->inputs[def->ninputs] = input; > - def->ninputs++; > } > > - > /* analysis of the sound devices */ > if ((n = virXPathNodeSet("./devices/sound", ctxt, &nodes)) < 0) { > goto error; > @@ -17533,16 +17532,24 @@ 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 graphics is enabled, add the implicit mouse/keyboard */ > + if ((ARCH_IS_X86(def->os.arch)) || > + def->os.arch == VIR_ARCH_NONE) { > + 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 (virDomainInputDefFormat(buf, &autoInput, flags) < 0) > - goto error; > + if (flags & ~VIR_DOMAIN_XML_MIGRATABLE) { This condition is true, if any other flag than MIGRATABLE is true. It should be if (!(flags & VIR_DOMAIN_XML_MIGRATABLE)) and also a part fo the patch adding 'keyboard' to the parser. > + autoInput.type = VIR_DOMAIN_INPUT_TYPE_KBD; > + if (virDomainInputDefFormat(buf, &autoInput, flags) < 0) > + goto error; > + } > + } > > for (n = 0; n < def->ngraphics; n++) > if (virDomainGraphicsDefFormat(buf, def->graphics[n], flags) < 0) Jan
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list