Jeff Dike wrote:
> There are a bunch of missing initializations of run->exit_reason and
> associated data.
>
> kvm_hypercall wasn't setting exit_reason at all.
>
> When exit_reason is KVM_EXIT_MMIO, the mmio data isn't initialized.  I
> don't know what it should be, so I just stuck a FIXME in there.
>
> There were some missing initializations of hardware_exit_reason with
> KVM_EXIT_UNKNOWN, so I added those.  One case had exit_reason = 0,
> which I changed to KVM_EXIT_UNKNOWN.
>
> I did a pass over all of the return 0 paths in the exit handler
> callbacks, so this should cover everything.
>
> Signed-off-by: Jeff Dike <[EMAIL PROTECTED]>
> --
>  drivers/kvm/kvm_main.c |    3 +++
>  drivers/kvm/svm.c      |    3 +++
>  drivers/kvm/vmx.c      |    4 +++-
>  3 files changed, 9 insertions(+), 1 deletion(-)
>
> Index: kvm/drivers/kvm/kvm_main.c
> ===================================================================
> --- kvm.orig/drivers/kvm/kvm_main.c
> +++ kvm/drivers/kvm/kvm_main.c
> @@ -1370,6 +1370,7 @@ int kvm_hypercall(struct kvm_vcpu *vcpu,
>               run->hypercall.ret = ret;
>               run->hypercall.longmode = is_long_mode(vcpu);
>               kvm_arch_ops->decache_regs(vcpu);
> +             run->exit_reason = KVM_EXIT_HYPERCALL;
>               return 0;
>       }
>   

Aye. (And: aiiieee)

>       vcpu->regs[VCPU_REGS_RAX] = ret;
> @@ -1928,6 +1929,8 @@ static int kvm_vcpu_ioctl_run(struct kvm
>               if (r == EMULATE_DO_MMIO) {
>                       /*
>                        * Read-modify-write.  Back to userspace.
> +                      *
> +                      * FIXME - kvm_run->mmio not initialized
>                        */
>                       kvm_run->exit_reason = KVM_EXIT_MMIO;
>                       r = 0;
>   

I believe that emulate_instruction will set run->mmio if it returns 
EMULATE_DO_MMIO.

> Index: kvm/drivers/kvm/svm.c
> ===================================================================
> --- kvm.orig/drivers/kvm/svm.c
> +++ kvm/drivers/kvm/svm.c
> @@ -929,6 +929,7 @@ static int pf_interception(struct kvm_vc
>               return 1;
>       case EMULATE_DO_MMIO:
>               ++vcpu->stat.mmio_exits;
> +             /* FIXME - kvm_run->mmio not initialized */
>               kvm_run->exit_reason = KVM_EXIT_MMIO;
>   

Ditto.

The rest are all good.

-- 
error compiling committee.c: too many arguments to function


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to