Patchwork hw/vmmouse.c: Disable vmmouse after reboot

login
register
mail settings
Submitter Gerhard Wiesinger
Date Jan. 25, 2012, 8:04 p.m.
Message ID <alpine.LFD.2.02.1201252103080.21459@bbs.intern>
Download mbox | patch
Permalink /patch/137852/
State New
Headers show

Comments

Gerhard Wiesinger - Jan. 25, 2012, 8:04 p.m.
Bugfix after reboot when vmmouse was enabled and another OS which uses e.g. PS/2
mouse.

Details:
When a guest activated the vmmouse followed by a reboot the vmmouse was still
enabled and the PS/2 mouse was therefore unsusable. When another guest is then
booted without vmmouse support (e.g. PS/2 mouse) the mouse is not working.

Reason is that VMMouse has priority and disables all other mouse entities
and therefore must be disabled on reset.

Testscenario:
1.) Boot e.g. OS with VMMouse support (e.g. Windows with VMMouse tools)
2.) reboot
3.) Boot e.g. OS without VMMouse support (e.g. DOS) => PS/2 mouse doesn't work
     any more. Fixes that issue.

Testscenario 2 by Jan Kiszka <jan.kiszka@siemens.com>:
Confirm that this patch fixes a real issue. Setup: qemu.git,
opensuse 11.4 guest, SDL graphic, system_reset while guest is using the
vmmouse. Without the patch, the vmmouse become unusable after the
reboot. Also, the mouse stays in absolute mode even before X starts again.

Fixed by:
Disabling the vmmouse in its reset handler.

Signed-off-by: Gerhard Wiesinger <lists@wiesinger.com>
---
  hw/vmmouse.c |    2 ++
  1 files changed, 2 insertions(+), 0 deletions(-)
Andreas Färber - Jan. 26, 2012, 8:26 a.m.
Am 25.01.2012 21:04, schrieb Gerhard Wiesinger:
> Bugfix after reboot when vmmouse was enabled and another OS which uses
> e.g. PS/2
> mouse.
> 
> Details:
> When a guest activated the vmmouse followed by a reboot the vmmouse was
> still
> enabled and the PS/2 mouse was therefore unsusable. When another guest
> is then
> booted without vmmouse support (e.g. PS/2 mouse) the mouse is not working.
> 
> Reason is that VMMouse has priority and disables all other mouse entities
> and therefore must be disabled on reset.
> 
> Testscenario:
> 1.) Boot e.g. OS with VMMouse support (e.g. Windows with VMMouse tools)
> 2.) reboot
> 3.) Boot e.g. OS without VMMouse support (e.g. DOS) => PS/2 mouse
> doesn't work
>     any more. Fixes that issue.
> 
> Testscenario 2 by Jan Kiszka <jan.kiszka@siemens.com>:
> Confirm that this patch fixes a real issue. Setup: qemu.git,
> opensuse 11.4 guest, SDL graphic, system_reset while guest is using the
> vmmouse. Without the patch, the vmmouse become unusable after the
> reboot. Also, the mouse stays in absolute mode even before X starts again.
> 
> Fixed by:
> Disabling the vmmouse in its reset handler.
> 
> Signed-off-by: Gerhard Wiesinger <lists@wiesinger.com>

I've been able to reproduce this the day before yesterday, on my version
of qemu-kvm 0.15.1 with this patch apparently fixing the mouse after a
kdump.

Yesterday however the reporter applied the patch himself to qemu.git and
reported this patch not to fix it on their side.

We boot into the desktop, then do:
# echo 1 > /proc/sys/kernel/sysrq
# echo c > /proc/sysrq-trigger
System then reboots after a while and at login mouse does or does not work.

I had originally tried to kdump with just a virtio drive w/ default
settings; then I tried with the reporter's setting of -smp 4 (and
cache=unsafe) and was able to reproduce it. Afterwards I was able to
reproduce without -smp 4 as well; no recompilation occurred. Guest was
the same SLES11 SP2 RC2 all the time.

So, is there any indeterminism involved? I.e. is the mouse unusability
maybe not 100% reproducible? Anything else that may need to be fixed
beyond this patch?

Patch does not break anything, so for now:

Tested-by: Andreas Färber <afaerber@suse.de>

Thanks,
Andreas
Gerhard Wiesinger - Jan. 27, 2012, 6:53 a.m.
On Thu, 26 Jan 2012, Andreas Färber wrote:

> Am 25.01.2012 21:04, schrieb Gerhard Wiesinger:
>> Bugfix after reboot when vmmouse was enabled and another OS which uses
>> e.g. PS/2
>> mouse.
>>
>> Details:
>> When a guest activated the vmmouse followed by a reboot the vmmouse was
>> still
>> enabled and the PS/2 mouse was therefore unsusable. When another guest
>> is then
>> booted without vmmouse support (e.g. PS/2 mouse) the mouse is not working.
>>
>> Reason is that VMMouse has priority and disables all other mouse entities
>> and therefore must be disabled on reset.
>>
>> Testscenario:
>> 1.) Boot e.g. OS with VMMouse support (e.g. Windows with VMMouse tools)
>> 2.) reboot
>> 3.) Boot e.g. OS without VMMouse support (e.g. DOS) => PS/2 mouse
>> doesn't work
>>     any more. Fixes that issue.
>>
>> Testscenario 2 by Jan Kiszka <jan.kiszka@siemens.com>:
>> Confirm that this patch fixes a real issue. Setup: qemu.git,
>> opensuse 11.4 guest, SDL graphic, system_reset while guest is using the
>> vmmouse. Without the patch, the vmmouse become unusable after the
>> reboot. Also, the mouse stays in absolute mode even before X starts again.
>>
>> Fixed by:
>> Disabling the vmmouse in its reset handler.
>>
>> Signed-off-by: Gerhard Wiesinger <lists@wiesinger.com>
>
> I've been able to reproduce this the day before yesterday, on my version
> of qemu-kvm 0.15.1 with this patch apparently fixing the mouse after a
> kdump.
>
> Yesterday however the reporter applied the patch himself to qemu.git and
> reported this patch not to fix it on their side.
>
> We boot into the desktop, then do:
> # echo 1 > /proc/sys/kernel/sysrq
> # echo c > /proc/sysrq-trigger
> System then reboots after a while and at login mouse does or does not work.
>
> I had originally tried to kdump with just a virtio drive w/ default
> settings; then I tried with the reporter's setting of -smp 4 (and
> cache=unsafe) and was able to reproduce it. Afterwards I was able to
> reproduce without -smp 4 as well; no recompilation occurred. Guest was
> the same SLES11 SP2 RC2 all the time.
>
> So, is there any indeterminism involved? I.e. is the mouse unusability
> maybe not 100% reproducible? Anything else that may need to be fixed
> beyond this patch?
>
> Patch does not break anything, so for now:
>
> Tested-by: Andreas Färber <afaerber@suse.de>

All known issues I detected were fixed with the patch for me reproducable 
at least for now.

Ciao,
Gerhard

--
http://www.wiesinger.com/
Anthony Liguori - Feb. 3, 2012, 5:21 p.m.
On 01/25/2012 02:04 PM, Gerhard Wiesinger wrote:
> Bugfix after reboot when vmmouse was enabled and another OS which uses e.g. PS/2
> mouse.
>
> Details:
> When a guest activated the vmmouse followed by a reboot the vmmouse was still
> enabled and the PS/2 mouse was therefore unsusable. When another guest is then
> booted without vmmouse support (e.g. PS/2 mouse) the mouse is not working.
>
> Reason is that VMMouse has priority and disables all other mouse entities
> and therefore must be disabled on reset.
>
> Testscenario:
> 1.) Boot e.g. OS with VMMouse support (e.g. Windows with VMMouse tools)
> 2.) reboot
> 3.) Boot e.g. OS without VMMouse support (e.g. DOS) => PS/2 mouse doesn't work
> any more. Fixes that issue.
>
> Testscenario 2 by Jan Kiszka <jan.kiszka@siemens.com>:
> Confirm that this patch fixes a real issue. Setup: qemu.git,
> opensuse 11.4 guest, SDL graphic, system_reset while guest is using the
> vmmouse. Without the patch, the vmmouse become unusable after the
> reboot. Also, the mouse stays in absolute mode even before X starts again.
>
> Fixed by:
> Disabling the vmmouse in its reset handler.
>
> Signed-off-by: Gerhard Wiesinger <lists@wiesinger.com>

Applied.  Thanks.

Regards,

Anthony Liguori

> ---
> hw/vmmouse.c | 2 ++
> 1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/hw/vmmouse.c b/hw/vmmouse.c
> index 1113f33..f9f5b53 100644
> --- a/hw/vmmouse.c
> +++ b/hw/vmmouse.c
> @@ -254,6 +254,8 @@ static void vmmouse_reset(DeviceState *d)
>
> s->status = 0xffff;
> s->queue_size = VMMOUSE_QUEUE_SIZE;
> +
> + vmmouse_disable(s);
> }
>
> static int vmmouse_initfn(ISADevice *dev)
Gerhard Wiesinger - Feb. 3, 2012, 5:57 p.m.
On Fri, 3 Feb 2012, Anthony Liguori wrote:

> On 01/25/2012 02:04 PM, Gerhard Wiesinger wrote:
>> Bugfix after reboot when vmmouse was enabled and another OS which uses e.g. 
>> PS/2
>> mouse.
>> 
>> Details:
>> When a guest activated the vmmouse followed by a reboot the vmmouse was 
>> still
>> enabled and the PS/2 mouse was therefore unsusable. When another guest is 
>> then
>> booted without vmmouse support (e.g. PS/2 mouse) the mouse is not working.
>> 
>> Reason is that VMMouse has priority and disables all other mouse entities
>> and therefore must be disabled on reset.
>> 
>> Testscenario:
>> 1.) Boot e.g. OS with VMMouse support (e.g. Windows with VMMouse tools)
>> 2.) reboot
>> 3.) Boot e.g. OS without VMMouse support (e.g. DOS) => PS/2 mouse doesn't 
>> work
>> any more. Fixes that issue.
>> 
>> Testscenario 2 by Jan Kiszka <jan.kiszka@siemens.com>:
>> Confirm that this patch fixes a real issue. Setup: qemu.git,
>> opensuse 11.4 guest, SDL graphic, system_reset while guest is using the
>> vmmouse. Without the patch, the vmmouse become unusable after the
>> reboot. Also, the mouse stays in absolute mode even before X starts again.
>> 
>> Fixed by:
>> Disabling the vmmouse in its reset handler.
>> 
>> Signed-off-by: Gerhard Wiesinger <lists@wiesinger.com>
>
> Applied.  Thanks.
>
> Regards,
>
> Anthony Liguori

Thanks.

BTW: Why are always "signed offs" generated when a maintainer commits?
e.g. 069ab0eb8a46bc4ff6f4d4d81bf037d3441347da
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>

Ciao,
Gerhard

--
http://www.wiesinger.com/
Andreas Färber - Aug. 22, 2012, 4:54 p.m.
Am 03.02.2012 18:21, schrieb Anthony Liguori:
> On 01/25/2012 02:04 PM, Gerhard Wiesinger wrote:
>> Bugfix after reboot when vmmouse was enabled and another OS which uses
>> e.g. PS/2
>> mouse.
>>
>> Details:
>> When a guest activated the vmmouse followed by a reboot the vmmouse
>> was still
>> enabled and the PS/2 mouse was therefore unsusable. When another guest
>> is then
>> booted without vmmouse support (e.g. PS/2 mouse) the mouse is not
>> working.
>>
>> Reason is that VMMouse has priority and disables all other mouse entities
>> and therefore must be disabled on reset.
>>
>> Testscenario:
>> 1.) Boot e.g. OS with VMMouse support (e.g. Windows with VMMouse tools)
>> 2.) reboot
>> 3.) Boot e.g. OS without VMMouse support (e.g. DOS) => PS/2 mouse
>> doesn't work
>> any more. Fixes that issue.
>>
>> Testscenario 2 by Jan Kiszka <jan.kiszka@siemens.com>:
>> Confirm that this patch fixes a real issue. Setup: qemu.git,
>> opensuse 11.4 guest, SDL graphic, system_reset while guest is using the
>> vmmouse. Without the patch, the vmmouse become unusable after the
>> reboot. Also, the mouse stays in absolute mode even before X starts
>> again.
>>
>> Fixed by:
>> Disabling the vmmouse in its reset handler.
>>
>> Signed-off-by: Gerhard Wiesinger <lists@wiesinger.com>
> 
> Applied.  Thanks.

Applied to stable-0.15. Thanks again,

Andreas

> Regards,
> 
> Anthony Liguori
> 
>> ---
>> hw/vmmouse.c | 2 ++
>> 1 files changed, 2 insertions(+), 0 deletions(-)
>>
>> diff --git a/hw/vmmouse.c b/hw/vmmouse.c
>> index 1113f33..f9f5b53 100644
>> --- a/hw/vmmouse.c
>> +++ b/hw/vmmouse.c
>> @@ -254,6 +254,8 @@ static void vmmouse_reset(DeviceState *d)
>>
>> s->status = 0xffff;
>> s->queue_size = VMMOUSE_QUEUE_SIZE;
>> +
>> + vmmouse_disable(s);
>> }
>>
>> static int vmmouse_initfn(ISADevice *dev)
Andreas Färber - Aug. 22, 2012, 5:01 p.m.
Am 03.02.2012 18:57, schrieb Gerhard Wiesinger:
> BTW: Why are always "signed offs" generated when a maintainer commits?
> e.g. 069ab0eb8a46bc4ff6f4d4d81bf037d3441347da
> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>

It documents who touched the patch (possibly including resolving minor
merge conflicts or changing the commit message) and builds a chain of
certifications that the origin and contents are okay:

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/SubmittingPatches

Cheers,
Andreas

Patch

diff --git a/hw/vmmouse.c b/hw/vmmouse.c
index 1113f33..f9f5b53 100644
--- a/hw/vmmouse.c
+++ b/hw/vmmouse.c
@@ -254,6 +254,8 @@  static void vmmouse_reset(DeviceState *d)

      s->status = 0xffff;
      s->queue_size = VMMOUSE_QUEUE_SIZE;
+
+    vmmouse_disable(s);
  }

  static int vmmouse_initfn(ISADevice *dev)