Re: [PATCH 1/2] KVM: x86 emulator: commit rflags as part of registers commit.
On 03/21/2010 04:35 PM, Gleb Natapov wrote: On Sun, Mar 21, 2010 at 04:32:42PM +0200, Avi Kivity wrote: On 03/21/2010 01:09 PM, Gleb Natapov wrote: Wrong To: header. Ignore please. See sendemail.aliasesfile in 'git help send-email'. I use alisesfile, but unfortunately if alias is not found there git does not complain, just pass it as is to sendmail and sendmail adds part after @ by itself. Ah. Then don't use sendmail. -- error compiling committee.c: too many arguments to function -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/2] KVM: x86 emulator: commit rflags as part of registers commit.
On Sun, Mar 21, 2010 at 04:32:42PM +0200, Avi Kivity wrote: > On 03/21/2010 01:09 PM, Gleb Natapov wrote: > >Wrong To: header. Ignore please. > > See sendemail.aliasesfile in 'git help send-email'. > I use alisesfile, but unfortunately if alias is not found there git does not complain, just pass it as is to sendmail and sendmail adds part after @ by itself. -- Gleb. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/2] KVM: x86 emulator: commit rflags as part of registers commit.
On 03/21/2010 01:09 PM, Gleb Natapov wrote: Wrong To: header. Ignore please. See sendemail.aliasesfile in 'git help send-email'. -- error compiling committee.c: too many arguments to function -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/2] KVM: x86 emulator: commit rflags as part of registers commit.
Wrong To: header. Ignore please. On Sun, Mar 21, 2010 at 01:06:02PM +0200, Gleb Natapov wrote: > Make sure that rflags is committed only after successful instruction > emulation. > > Signed-off-by: Gleb Natapov > --- > arch/x86/include/asm/kvm_emulate.h |1 + > arch/x86/kvm/emulate.c |1 + > arch/x86/kvm/x86.c |8 ++-- > 3 files changed, 8 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/include/asm/kvm_emulate.h > b/arch/x86/include/asm/kvm_emulate.h > index b5e12c5..a1319c8 100644 > --- a/arch/x86/include/asm/kvm_emulate.h > +++ b/arch/x86/include/asm/kvm_emulate.h > @@ -136,6 +136,7 @@ struct x86_emulate_ops { > ulong (*get_cr)(int cr, struct kvm_vcpu *vcpu); > void (*set_cr)(int cr, ulong val, struct kvm_vcpu *vcpu); > int (*cpl)(struct kvm_vcpu *vcpu); > + void (*set_rflags)(struct kvm_vcpu *vcpu, unsigned long rflags); > }; > > /* Type, address-of, and value of an instruction's operand. */ > diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c > index 266576c..c1aa983 100644 > --- a/arch/x86/kvm/emulate.c > +++ b/arch/x86/kvm/emulate.c > @@ -2968,6 +2968,7 @@ writeback: > /* Commit shadow register state. */ > memcpy(ctxt->vcpu->arch.regs, c->regs, sizeof c->regs); > kvm_rip_write(ctxt->vcpu, c->eip); > + ops->set_rflags(ctxt->vcpu, ctxt->eflags); > > done: > return (rc == X86EMUL_UNHANDLEABLE) ? -1 : 0; > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index bb9a24a..3fa70b3 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -3643,6 +3643,11 @@ static void emulator_set_segment_selector(u16 sel, int > seg, > kvm_set_segment(vcpu, &kvm_seg, seg); > } > > +static void emulator_set_rflags(struct kvm_vcpu *vcpu, unsigned long rflags) > +{ > + kvm_x86_ops->set_rflags(vcpu, rflags); > +} > + > static struct x86_emulate_ops emulate_ops = { > .read_std= kvm_read_guest_virt_system, > .write_std = kvm_write_guest_virt_system, > @@ -3660,6 +3665,7 @@ static struct x86_emulate_ops emulate_ops = { > .get_cr = emulator_get_cr, > .set_cr = emulator_set_cr, > .cpl = emulator_get_cpl, > + .set_rflags = emulator_set_rflags, > }; > > static void cache_all_regs(struct kvm_vcpu *vcpu) > @@ -3780,8 +3786,6 @@ restart: > return EMULATE_DO_MMIO; > } > > - kvm_x86_ops->set_rflags(vcpu, vcpu->arch.emulate_ctxt.eflags); > - > if (vcpu->mmio_is_write) { > vcpu->mmio_needed = 0; > return EMULATE_DO_MMIO; > -- > 1.6.5 > > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majord...@vger.kernel.org > 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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 1/2] KVM: x86 emulator: commit rflags as part of registers commit.
Make sure that rflags is committed only after successful instruction emulation. Signed-off-by: Gleb Natapov --- arch/x86/include/asm/kvm_emulate.h |1 + arch/x86/kvm/emulate.c |1 + arch/x86/kvm/x86.c |8 ++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/arch/x86/include/asm/kvm_emulate.h b/arch/x86/include/asm/kvm_emulate.h index b5e12c5..a1319c8 100644 --- a/arch/x86/include/asm/kvm_emulate.h +++ b/arch/x86/include/asm/kvm_emulate.h @@ -136,6 +136,7 @@ struct x86_emulate_ops { ulong (*get_cr)(int cr, struct kvm_vcpu *vcpu); void (*set_cr)(int cr, ulong val, struct kvm_vcpu *vcpu); int (*cpl)(struct kvm_vcpu *vcpu); + void (*set_rflags)(struct kvm_vcpu *vcpu, unsigned long rflags); }; /* Type, address-of, and value of an instruction's operand. */ diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c index 266576c..c1aa983 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c @@ -2968,6 +2968,7 @@ writeback: /* Commit shadow register state. */ memcpy(ctxt->vcpu->arch.regs, c->regs, sizeof c->regs); kvm_rip_write(ctxt->vcpu, c->eip); + ops->set_rflags(ctxt->vcpu, ctxt->eflags); done: return (rc == X86EMUL_UNHANDLEABLE) ? -1 : 0; diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index bb9a24a..3fa70b3 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -3643,6 +3643,11 @@ static void emulator_set_segment_selector(u16 sel, int seg, kvm_set_segment(vcpu, &kvm_seg, seg); } +static void emulator_set_rflags(struct kvm_vcpu *vcpu, unsigned long rflags) +{ + kvm_x86_ops->set_rflags(vcpu, rflags); +} + static struct x86_emulate_ops emulate_ops = { .read_std= kvm_read_guest_virt_system, .write_std = kvm_write_guest_virt_system, @@ -3660,6 +3665,7 @@ static struct x86_emulate_ops emulate_ops = { .get_cr = emulator_get_cr, .set_cr = emulator_set_cr, .cpl = emulator_get_cpl, + .set_rflags = emulator_set_rflags, }; static void cache_all_regs(struct kvm_vcpu *vcpu) @@ -3780,8 +3786,6 @@ restart: return EMULATE_DO_MMIO; } - kvm_x86_ops->set_rflags(vcpu, vcpu->arch.emulate_ctxt.eflags); - if (vcpu->mmio_is_write) { vcpu->mmio_needed = 0; return EMULATE_DO_MMIO; -- 1.6.5 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 1/2] KVM: x86 emulator: commit rflags as part of registers commit.
Make sure that rflags is committed only after successful instruction emulation. Signed-off-by: Gleb Natapov --- arch/x86/include/asm/kvm_emulate.h |1 + arch/x86/kvm/emulate.c |1 + arch/x86/kvm/x86.c |8 ++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/arch/x86/include/asm/kvm_emulate.h b/arch/x86/include/asm/kvm_emulate.h index b5e12c5..a1319c8 100644 --- a/arch/x86/include/asm/kvm_emulate.h +++ b/arch/x86/include/asm/kvm_emulate.h @@ -136,6 +136,7 @@ struct x86_emulate_ops { ulong (*get_cr)(int cr, struct kvm_vcpu *vcpu); void (*set_cr)(int cr, ulong val, struct kvm_vcpu *vcpu); int (*cpl)(struct kvm_vcpu *vcpu); + void (*set_rflags)(struct kvm_vcpu *vcpu, unsigned long rflags); }; /* Type, address-of, and value of an instruction's operand. */ diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c index 266576c..c1aa983 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c @@ -2968,6 +2968,7 @@ writeback: /* Commit shadow register state. */ memcpy(ctxt->vcpu->arch.regs, c->regs, sizeof c->regs); kvm_rip_write(ctxt->vcpu, c->eip); + ops->set_rflags(ctxt->vcpu, ctxt->eflags); done: return (rc == X86EMUL_UNHANDLEABLE) ? -1 : 0; diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index bb9a24a..3fa70b3 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -3643,6 +3643,11 @@ static void emulator_set_segment_selector(u16 sel, int seg, kvm_set_segment(vcpu, &kvm_seg, seg); } +static void emulator_set_rflags(struct kvm_vcpu *vcpu, unsigned long rflags) +{ + kvm_x86_ops->set_rflags(vcpu, rflags); +} + static struct x86_emulate_ops emulate_ops = { .read_std= kvm_read_guest_virt_system, .write_std = kvm_write_guest_virt_system, @@ -3660,6 +3665,7 @@ static struct x86_emulate_ops emulate_ops = { .get_cr = emulator_get_cr, .set_cr = emulator_set_cr, .cpl = emulator_get_cpl, + .set_rflags = emulator_set_rflags, }; static void cache_all_regs(struct kvm_vcpu *vcpu) @@ -3780,8 +3786,6 @@ restart: return EMULATE_DO_MMIO; } - kvm_x86_ops->set_rflags(vcpu, vcpu->arch.emulate_ctxt.eflags); - if (vcpu->mmio_is_write) { vcpu->mmio_needed = 0; return EMULATE_DO_MMIO; -- 1.6.5 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html