From 1c58390619bfdd6174b1d24bc5b64caae45487b0 Mon Sep 17 00:00:00 2001
Message-Id: <1c58390619bfdd6174b1d24bc5b64caae45487b0@dist-git>
From: Andrea Bolognani <abologna@redhat.com>
Date: Wed, 17 Apr 2019 11:21:25 +0200
Subject: [PATCH] qemu: Allow creating ppc64 guests with graphics and no USB
mouse
The existing behavior for ppc64 guests is to always add a USB
keyboard and mouse combo if graphics are present; unfortunately,
this means any attempt to use a USB tablet will cause both pointing
devices to show up in the guest, which in turn will result in poor
user experience.
We can't just stop adding the USB mouse or start adding a USB tablet
instead, because existing applications and users might rely on the
current behavior; however, we can avoid adding the USB mouse if a USB
tablet is already present, thus allowing users and applications to
create guests that contain a single pointing device.
https://bugzilla.redhat.com/show_bug.cgi?id=1683681
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
(cherry picked from commit 186bb479d0f409dc75175bea48a760838c479a6c)
Conflicts:
* src/qemu/qemu_domain.c
+ context in qemuDomainDefAddDefaultDevices()
- missing 6427bfc8b3bb
Deleted:
* tests/qemuxml2argvdata/ppc64-pseries-graphics.ppc64-latest.args
+ doesn't exist downstream
- missing 4d7ea75e1e73
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Message-Id: <20190417092125.10277-2-abologna@redhat.com>
---
src/qemu/qemu_domain.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index be3477bf8a..cc2a896a07 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -3323,6 +3323,26 @@ qemuDomainDefAddDefaultDevices(virDomainDefPtr def,
def->memballoon = memballoon;
}
+ if (addDefaultUSBMouse) {
+ bool hasUSBTablet = false;
+ size_t j;
+
+ for (j = 0; j < def->ninputs; j++) {
+ if (def->inputs[j]->type == VIR_DOMAIN_INPUT_TYPE_TABLET &&
+ def->inputs[j]->bus == VIR_DOMAIN_INPUT_BUS_USB) {
+ hasUSBTablet = true;
+ break;
+ }
+ }
+
+ /* Historically, we have automatically added USB keyboard and
+ * mouse to some guests. While the former device is generally
+ * safe to have, adding the latter is undesiderable if a USB
+ * tablet is already present in the guest */
+ if (hasUSBTablet)
+ addDefaultUSBMouse = false;
+ }
+
if (addDefaultUSBKBD &&
def->ngraphics > 0 &&
virDomainDefMaybeAddInput(def,
--
2.21.0