Claudio Fontana <cfont...@suse.de> writes:

> move the call to qemu_init_vcpu inside cpu_common_realizefn,
> so it does not need to be done explicitly in each target cpu.
>
> Despite this, the way cpu realize is done continues to be not ideal;
>
> ideally the cpu_list_add would be done in common_cpu,
> and in this case we could avoid even more redundant open coded
> additional calls in target/xxx/cpu.c,
>
> but this cannot happen because target cpu code, plugins, etc
> now all came to rely on cpu->index
> (which is updated in cpu_list_add), since no particular order
> was defined previously, so we are stuck with the freak call
> order for the target cpu realizefn.
>
> After this patch the target/xxx/cpu.c realizefn body becomes:
>
> void mycpu_realizefn(DeviceState *dev, Error **errp)
> {
>     /* ... */
>     cpu_exec_realizefn(CPU_STATE(dev), errp);
>
>     /* ... anything that needs done pre-qemu_vcpu_init */
>
>     xcc->parent_realize(dev, errp); /* does qemu_vcpu_init */
>
>     /* ... anything that needs to be done after qemu_vcpu_init */
> }

Uggh, introducing a magic order seems like inviting trouble for later
on. Is there anyway we can improve things? Paolo?

-- 
Alex Bennée

Reply via email to