Message ID | 20180110064706.49777-1-lepton@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 10/01/2018 07:47, Tao Wu wrote: > hax_setup_qemu_emulator reference env->efer which is updated in > hax_get_msrs, so it has to be called after hax_get_msrs. This fix > the bug that sometimes dump_state show 32 bits regs even in 64 bits > mode. > > Signed-off-by: Tao Wu <lepton@google.com> > --- > target/i386/hax-all.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/target/i386/hax-all.c b/target/i386/hax-all.c > index 3ce6950296..a933bd462d 100644 > --- a/target/i386/hax-all.c > +++ b/target/i386/hax-all.c > @@ -887,9 +887,6 @@ static int hax_sync_vcpu_register(CPUArchState *env, int set) > return -1; > } > } > - if (!set) { > - hax_setup_qemu_emulator(env); > - } > return 0; > } > > @@ -1070,6 +1067,7 @@ static int hax_arch_get_registers(CPUArchState *env) > return ret; > } > > + hax_setup_qemu_emulator(env); > return 0; > } > > Queued, thanks. Please look into sharing the similar code in target/i386/kvm.c (kvm_get_sregs), since the HAX code has some bugs (for example, HF_CPL_MASK should be SS.DPL, not CS.DPL). Paolo
Thanks. Then it seems I should put this piece of code in a common function first and then update this CL. On Wed, Jan 10, 2018 at 5:27 AM, Paolo Bonzini <pbonzini@redhat.com> wrote: > On 10/01/2018 07:47, Tao Wu wrote: >> hax_setup_qemu_emulator reference env->efer which is updated in >> hax_get_msrs, so it has to be called after hax_get_msrs. This fix >> the bug that sometimes dump_state show 32 bits regs even in 64 bits >> mode. >> >> Signed-off-by: Tao Wu <lepton@google.com> >> --- >> target/i386/hax-all.c | 4 +--- >> 1 file changed, 1 insertion(+), 3 deletions(-) >> >> diff --git a/target/i386/hax-all.c b/target/i386/hax-all.c >> index 3ce6950296..a933bd462d 100644 >> --- a/target/i386/hax-all.c >> +++ b/target/i386/hax-all.c >> @@ -887,9 +887,6 @@ static int hax_sync_vcpu_register(CPUArchState *env, int set) >> return -1; >> } >> } >> - if (!set) { >> - hax_setup_qemu_emulator(env); >> - } >> return 0; >> } >> >> @@ -1070,6 +1067,7 @@ static int hax_arch_get_registers(CPUArchState *env) >> return ret; >> } >> >> + hax_setup_qemu_emulator(env); >> return 0; >> } >> >> > > Queued, thanks. > > Please look into sharing the similar code in target/i386/kvm.c > (kvm_get_sregs), since the HAX code has some bugs (for example, > HF_CPL_MASK should be SS.DPL, not CS.DPL). > > Paolo
diff --git a/target/i386/hax-all.c b/target/i386/hax-all.c index 3ce6950296..a933bd462d 100644 --- a/target/i386/hax-all.c +++ b/target/i386/hax-all.c @@ -887,9 +887,6 @@ static int hax_sync_vcpu_register(CPUArchState *env, int set) return -1; } } - if (!set) { - hax_setup_qemu_emulator(env); - } return 0; } @@ -1070,6 +1067,7 @@ static int hax_arch_get_registers(CPUArchState *env) return ret; } + hax_setup_qemu_emulator(env); return 0; }
hax_setup_qemu_emulator reference env->efer which is updated in hax_get_msrs, so it has to be called after hax_get_msrs. This fix the bug that sometimes dump_state show 32 bits regs even in 64 bits mode. Signed-off-by: Tao Wu <lepton@google.com> --- target/i386/hax-all.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)