On 18/06/2015 11:08, Aurelien Jarno wrote: > For an i386 guest still on an x86 host, I get a 4% slower boot time by > not using retranslation (see patch below). This is not that much > compared to the complexity retranslation bring us.
QEMU could just always compute and store the restore_state information. TCG needs to help filling it in (a new TCG opcode?), but it should be easy. Paolo > diff --git a/target-i386/translate.c b/target-i386/translate.c > index 58b1959..de65bba 100644 > --- a/target-i386/translate.c > +++ b/target-i386/translate.c > @@ -8001,6 +8001,9 @@ static inline void > gen_intermediate_code_internal(X86CPU *cpu, > > gen_tb_start(tb); > for(;;) { > + gen_update_cc_op(dc); > + gen_jmp_im(pc_ptr - dc->cs_base); > + > if (unlikely(!QTAILQ_EMPTY(&cs->breakpoints))) { > QTAILQ_FOREACH(bp, &cs->breakpoints, entry) { > if (bp->pc == pc_ptr && > diff --git a/translate-all.c b/translate-all.c > index b6b0e1c..3d4c017 100644 > --- a/translate-all.c > +++ b/translate-all.c > @@ -212,6 +212,8 @@ static int cpu_restore_state_from_tb(CPUState *cpu, > TranslationBlock *tb, > int64_t ti; > #endif > > + return -1; > + > #ifdef CONFIG_PROFILER > ti = profile_getclock(); > #endif