diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 75b87d11ba..2826847a0c 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -7839,10 +7839,12 @@ virDomainInputDefParseXML(const virDomainDef *dom,
} else {
if (STREQ(dom->os.type, "hvm")) {
if ((def->type == VIR_DOMAIN_INPUT_TYPE_MOUSE ||
- def->type == VIR_DOMAIN_INPUT_TYPE_KBD))
+ def->type == VIR_DOMAIN_INPUT_TYPE_KBD) &&
+ (ARCH_IS_X86(dom->os.arch) || dom->os.arch == VIR_ARCH_NONE)) {
def->bus = VIR_DOMAIN_INPUT_BUS_PS2;
- else
+ } else {
def->bus = VIR_DOMAIN_INPUT_BUS_USB;
+ }
} else {
def->bus = VIR_DOMAIN_INPUT_BUS_XEN;
}
@@ -12498,7 +12500,8 @@ virDomainDefParseXML(xmlDocPtr xml,
VIR_FREE(nodes);
/* If graphics are enabled, there's an implicit PS2 mouse */
- if (def->ngraphics > 0) {
+ if (def->ngraphics > 0 &&
+ (ARCH_IS_X86(def->os.arch) || def->os.arch == VIR_ARCH_NONE)) {
int input_bus = VIR_DOMAIN_INPUT_BUS_XEN;
if (STREQ(def->os.type, "hvm"))
@@ -17531,20 +17534,22 @@ virDomainDefFormatInternal(virDomainDefPtr def,
if (def->ngraphics > 0) {
/* If graphics is enabled, add the implicit mouse/keyboard */
- 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 ((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 (!(flags & VIR_DOMAIN_XML_MIGRATABLE)) {
- autoInput.type = VIR_DOMAIN_INPUT_TYPE_KBD;
if (virDomainInputDefFormat(buf, &autoInput, flags) < 0)
goto error;
+
+ if (!(flags & VIR_DOMAIN_XML_MIGRATABLE)) {
+ autoInput.type = VIR_DOMAIN_INPUT_TYPE_KBD;
+ if (virDomainInputDefFormat(buf, &autoInput, flags) < 0)
+ goto error;
+ }
}
for (n = 0; n < def->ngraphics; n++)
diff --git a/src/util/virarch.h b/src/util/virarch.h
index b180400de3..c4d67cee32 100644
--- a/src/util/virarch.h
+++ b/src/util/virarch.h
@@ -70,6 +70,8 @@ typedef enum {
VIR_ARCH_LAST,
} virArch;
+# define ARCH_IS_X86(arch) ((arch) == VIR_ARCH_X86_64 ||\
+ (arch) == VIR_ARCH_I686)
typedef enum {
VIR_ARCH_LITTLE_ENDIAN,
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-disk.xml b/tests/qemuxml2argvdata/qemuxml2argv-pseries-disk.xml
index 05e0f63968..8dde776a08 100644
--- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-disk.xml
+++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-disk.xml
@@ -30,8 +30,6 @@
-
-