Patchwork Unlike real hardware, vmport needs access to the CPU registers to handle iomem read and writes. So add an explicit cpu_synchronize_state call, otherwise vmmouse can not work with KVM.

login
register
mail settings
Submitter Reimar Döffinger
Date Sept. 12, 2009, 2:11 p.m.
Message ID <20090912141128.GA15236@1und1.de>
Download mbox | patch
Permalink /patch/33528/
State Superseded
Headers show

Comments

Reimar Döffinger - Sept. 12, 2009, 2:11 p.m.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
---
 hw/vmport.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
Jan Kiszka - Sept. 12, 2009, 2:46 p.m.
=?UTF-8?q?Reimar=20D=C3=B6ffinger?= wrote:
> Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
> ---
>  hw/vmport.c |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
> 
> diff --git a/hw/vmport.c b/hw/vmport.c
> index 884af3f..9a942ee 100644
> --- a/hw/vmport.c
> +++ b/hw/vmport.c
> @@ -25,6 +25,7 @@
>  #include "isa.h"
>  #include "pc.h"
>  #include "sysemu.h"
> +#include "kvm.h"
>  
>  //#define VMPORT_DEBUG
>  
> @@ -58,6 +59,7 @@ static uint32_t vmport_ioport_read(void *opaque, uint32_t addr)
>      unsigned char command;
>      uint32_t eax;
>  
> +    cpu_synchronize_state(env);
>      eax = env->regs[R_EAX];
>      if (eax != VMPORT_MAGIC)
>          return eax;

Ack (qemu-kvm carries a similar patch).

But please grant your patches some proper titles.

Jan
Reimar Döffinger - Sept. 12, 2009, 3:34 p.m.
On Sat, Sep 12, 2009 at 04:46:04PM +0200, Jan Kiszka wrote:
> =?UTF-8?q?Reimar=20D=C3=B6ffinger?= wrote:
> > Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
> > ---
> >  hw/vmport.c |    2 ++
> >  1 files changed, 2 insertions(+), 0 deletions(-)
> > 
> > diff --git a/hw/vmport.c b/hw/vmport.c
> > index 884af3f..9a942ee 100644
> > --- a/hw/vmport.c
> > +++ b/hw/vmport.c
> > @@ -25,6 +25,7 @@
> >  #include "isa.h"
> >  #include "pc.h"
> >  #include "sysemu.h"
> > +#include "kvm.h"
> >  
> >  //#define VMPORT_DEBUG
> >  
> > @@ -58,6 +59,7 @@ static uint32_t vmport_ioport_read(void *opaque, uint32_t addr)
> >      unsigned char command;
> >      uint32_t eax;
> >  
> > +    cpu_synchronize_state(env);
> >      eax = env->regs[R_EAX];
> >      if (eax != VMPORT_MAGIC)
> >          return eax;
> 
> Ack (qemu-kvm carries a similar patch).

Now that I look at it... yes.
Except that it does not yet have cpu_synchronize_state and thus is broken for
vmport_ioport_write, the return value written to EAX is lost.

> But please grant your patches some proper titles.

Sorry, I am still figuring out how to write commit messages that git format-patch
handles in a good way (as well as the most sane way to use it in
general).
Jan Kiszka - Sept. 12, 2009, 3:47 p.m.
Reimar Döffinger wrote:
> On Sat, Sep 12, 2009 at 04:46:04PM +0200, Jan Kiszka wrote:
>> =?UTF-8?q?Reimar=20D=C3=B6ffinger?= wrote:
>>> Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
>>> ---
>>>  hw/vmport.c |    2 ++
>>>  1 files changed, 2 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/hw/vmport.c b/hw/vmport.c
>>> index 884af3f..9a942ee 100644
>>> --- a/hw/vmport.c
>>> +++ b/hw/vmport.c
>>> @@ -25,6 +25,7 @@
>>>  #include "isa.h"
>>>  #include "pc.h"
>>>  #include "sysemu.h"
>>> +#include "kvm.h"
>>>  
>>>  //#define VMPORT_DEBUG
>>>  
>>> @@ -58,6 +59,7 @@ static uint32_t vmport_ioport_read(void *opaque, uint32_t addr)
>>>      unsigned char command;
>>>      uint32_t eax;
>>>  
>>> +    cpu_synchronize_state(env);
>>>      eax = env->regs[R_EAX];
>>>      if (eax != VMPORT_MAGIC)
>>>          return eax;
>> Ack (qemu-kvm carries a similar patch).
> 
> Now that I look at it... yes.
> Except that it does not yet have cpu_synchronize_state and thus is broken for
> vmport_ioport_write, the return value written to EAX is lost.

Normally qemu-kvm catches such things when merging from upstream.

> 
>> But please grant your patches some proper titles.
> 
> Sorry, I am still figuring out how to write commit messages that git format-patch
> handles in a good way (as well as the most sane way to use it in
> general).

This rule is simple, just write your commit messages in the form

Title
<blank line>
Description...


Moreover, your mail client is configured to inject "Mail-Followup-To"
into your postings. This quickly causes troubles. E.g., it suggested my
client to send myself a mail when replying to yours.

Jan

Patch

diff --git a/hw/vmport.c b/hw/vmport.c
index 884af3f..9a942ee 100644
--- a/hw/vmport.c
+++ b/hw/vmport.c
@@ -25,6 +25,7 @@ 
 #include "isa.h"
 #include "pc.h"
 #include "sysemu.h"
+#include "kvm.h"
 
 //#define VMPORT_DEBUG
 
@@ -58,6 +59,7 @@  static uint32_t vmport_ioport_read(void *opaque, uint32_t addr)
     unsigned char command;
     uint32_t eax;
 
+    cpu_synchronize_state(env);
     eax = env->regs[R_EAX];
     if (eax != VMPORT_MAGIC)
         return eax;