On Mon, Mar 01, 2010 at 10:50:53PM +0900, Takuya Yoshikawa wrote:
> Cannot_emulate includes "c->eip = saved_eip". So the execution
> of this after kvm_emulate_pio() is redundant. Let's remove this.
> Others are trivial cleanups.
> 
I am looking into this now. Emulation of in/out is completely broken
(usually their emulation doesn't go through emulator.c so nobody notice)

> Signed-off-by: Takuya Yoshikawa <[email protected]>
> ---
>  arch/x86/kvm/emulate.c |   13 +++++--------
>  1 files changed, 5 insertions(+), 8 deletions(-)
> 
> diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
> index 5b6794a..a27cc3d 100644
> --- a/arch/x86/kvm/emulate.c
> +++ b/arch/x86/kvm/emulate.c
> @@ -2344,19 +2344,16 @@ special_insn:
>       case 0xef: /* out (e/r)ax,dx */
>               port = c->regs[VCPU_REGS_RDX];
>               io_dir_in = 0;
> -     do_io:
> -             if (!emulator_io_permited(ctxt, ops, port,
> -                                       (c->d & ByteOp) ? 1 : c->op_bytes)) {
> +     do_io: {
> +             int len = (c->d & ByteOp) ? 1 : c->op_bytes;
> +             if (!emulator_io_permited(ctxt, ops, port, len)) {
>                       kvm_inject_gp(ctxt->vcpu, 0);
>                       goto done;
>               }
> -             if (kvm_emulate_pio(ctxt->vcpu, io_dir_in,
> -                                (c->d & ByteOp) ? 1 : c->op_bytes,
> -                                port) != 0) {
> -                     c->eip = saved_eip;
> +             if (kvm_emulate_pio(ctxt->vcpu, io_dir_in, len, port))
For instance here kvm_emulate_pio() can never fail. Both return values
indicate success the only difference is that if 0 is returned exit to
userspace is needed.

>                       goto cannot_emulate;
> -             }
>               break;
> +     }
>       case 0xf4:              /* hlt */
>               ctxt->vcpu->arch.halt_request = 1;
>               break;
> -- 
> 1.6.3.3
> 
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to [email protected]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
                        Gleb.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to