Anthony Liguori wrote: > Jan Kiszka wrote: >> Andrzej Zaborowski wrote: >> >>> Revision: 6684 >>> http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=6684 >>> Author: balrog >>> Date: 2009-03-04 21:00:07 +0000 (Wed, 04 Mar 2009) >>> Log Message: >>> ----------- >>> Fix "info registers" under kvm. >>> >>> Modified Paths: >>> -------------- >>> trunk/target-i386/helper.c >>> >>> Modified: trunk/target-i386/helper.c >>> =================================================================== >>> --- trunk/target-i386/helper.c 2009-03-04 19:25:22 UTC (rev 6683) >>> +++ trunk/target-i386/helper.c 2009-03-04 21:00:07 UTC (rev 6684) >>> @@ -578,6 +578,9 @@ >>> char cc_op_name[32]; >>> static const char *seg_name[6] = { "ES", "CS", "SS", "DS", "FS", >>> "GS" }; >>> >>> + if (kvm_enabled()) >>> + kvm_arch_get_registers(env); >>> + >>> eflags = env->eflags; >>> #ifdef TARGET_X86_64 >>> if (env->hflags & HF_CS64_MASK) { >>> >>> >> >> On the one hand, this patch also takes care of sync'ing with KVM in case >> of cpu_dump_state on fatal exists. On the other hand, it only solves one >> part of monitor issue. See [1] for a more complete sync. >> >> I'm just still waiting for a reply from Anthony on how to embed best all >> the "if (kvm_enabled()) foo();" patterns [2]. That would also allow us >> to merge gdbstub support for upstream kvm. >> > > I really don't have a great suggestion. I've been hoping we could come > up with something better than if (kvm_enabled()) foo(). If we can't, we > can't. We could do static inline void kvm_get_registers(CPUState *env) { if (kvm_enabled()) kvm_arch_get_registers(env); } in kvm.h (and kvm_put_registers analogously). That would still be kvm-specific, though, but it would reduce the impact on the code that has to be extended this way. Generic hooks is something I would really like to postpone here until we start working on some accelerator abstraction. Jan