On Thu, Jan 07, 2016 at 07:44:13PM +0100, Lluís Vilanova wrote:
> Stefan Hajnoczi writes:
>
> > On Tue, Nov 24, 2015 at 06:09:36PM +0100, Lluís Vilanova wrote:
> >> @@ -227,6 +228,17 @@ void cpu_dump_statistics(CPUState *cpu, FILE *f,
> >> fprintf_function cpu_fprintf,
> >> void cpu_reset(CPUState *cpu)
> >> {
> >> CPUClass *klass = CPU_GET_CLASS(cpu);
> >> + TraceEvent *ev = NULL;
> >> +
> >> + if (!qemu_initialized) {
>
> > Is there a cleaner place to do this without introducing the
> > qemu_initialized global?
>
> > I guess the problem is that tracing itself is initialized before the
> > vcpus are set up. Is qemu_add_machine_init_done_notifier() sufficient
> > for this purpose?
>
> Right, tracing must be initialized early, while vCPUs do so much later. Also,
> the hook I took for initialization is also called by regular vCPU resets and
> hotplugs. The problem with machine_init is that it only works in full-system
> (softmmu) mode, so it would require a separate initialization call for the
> user
> mode variants (e.g., linux-user).
>
> It would be much cleaner to add a trace post-initialization routine right
> before
> main_loop/cpu_loop (doing the per-vCPU tracing state initialization). I'll
> re-check the code to see if there was any other condition that made me take
> 'cpu_reset' instead.Okay, great. Stefan
signature.asc
Description: PGP signature
