[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: all class init functions for all types in QEMU are called in select_
From: |
Claudio Fontana |
Subject: |
Re: all class init functions for all types in QEMU are called in select_machine(). Expected? |
Date: |
Fri, 12 Mar 2021 15:00:18 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 |
On 3/12/21 2:40 PM, Claudio Fontana wrote:
> On 3/12/21 1:02 PM, Paolo Bonzini wrote:
>> On 12/03/21 12:51, Claudio Fontana wrote:
>>> seems to me we already have, as the accel class init, fe, for x86/tcg:
>>>
>>> static void tcg_cpu_accel_class_init(ObjectClass *oc, void *data)
>>> {
>>> AccelCPUClass *acc = ACCEL_CPU_CLASS(oc);
>>>
>>> #ifndef CONFIG_USER_ONLY
>>> acc->cpu_realizefn = tcg_cpu_realizefn;
>>> #endif /* CONFIG_USER_ONLY */
>>>
>>> acc->cpu_class_init = tcg_cpu_class_init;
>>> acc->cpu_instance_init = tcg_cpu_instance_init;
>>> }
>>>
>>> acc->cpu_class_init() call would then be the acc->init_cpu call you mention.
>>>
>>> The only thing we seem to be missing is the cc->init_tcg_ops(cc)..
>>
>> Yes, called by tcg_cpu_class_init or tcg_cpu_instance_init.
>>
>> Paolo
>>
>>
>
> .. I wonder if we should make it a bit more general like:
>
> static void accel_init_cpu_int_aux(ObjectClass *klass, void *opaque)
> {
> CPUClass *cc = CPU_CLASS(klass);
> AccelCPUClass *accel_cpu = opaque;
>
> /*
>
> * double dispatch. The first callback allows the accel cpu
>
> * to run initializations for the CPU,
>
> * the second one allows the CPU to customize the accel cpu
>
> * behavior according to the CPU.
>
> *
>
> * The second is currently only used by TCG, to specialize the
>
> * TCGCPUOps depending on the CPU type.
>
> */
> cc->accel_cpu = accel_cpu;
> if (accel_cpu->cpu_class_init) {
> accel_cpu->cpu_class_init(cc);
> }
> if (cc->init_accel_cpu) {
> cc->init_accel_cpu(accel_cpu, cc);
> }
> }
>
> .. but maybe this is premature, and should wait for actual users of this
> beyond TCG on ARM?
>
> Ciao,
>
> C
>
I'll put my experiment in the ARM cleanup series.
Ciao and thanks,
Claudio
- all class init functions for all types in QEMU are called in select_machine(). Expected?, Claudio Fontana, 2021/03/12
- Re: all class init functions for all types in QEMU are called in select_machine(). Expected?, Philippe Mathieu-Daudé, 2021/03/12
- Re: all class init functions for all types in QEMU are called in select_machine(). Expected?, Claudio Fontana, 2021/03/12
- Re: all class init functions for all types in QEMU are called in select_machine(). Expected?, Paolo Bonzini, 2021/03/12
- Re: all class init functions for all types in QEMU are called in select_machine(). Expected?, Claudio Fontana, 2021/03/12
- Re: all class init functions for all types in QEMU are called in select_machine(). Expected?, Paolo Bonzini, 2021/03/12
- Re: all class init functions for all types in QEMU are called in select_machine(). Expected?, Claudio Fontana, 2021/03/12
- Re: all class init functions for all types in QEMU are called in select_machine(). Expected?, Paolo Bonzini, 2021/03/12
- Re: all class init functions for all types in QEMU are called in select_machine(). Expected?, Claudio Fontana, 2021/03/12
- Re: all class init functions for all types in QEMU are called in select_machine(). Expected?,
Claudio Fontana <=
- Re: all class init functions for all types in QEMU are called in select_machine(). Expected?, Paolo Bonzini, 2021/03/12
- Re: all class init functions for all types in QEMU are called in select_machine(). Expected?, Claudio Fontana, 2021/03/12
- Re: all class init functions for all types in QEMU are called in select_machine(). Expected?, Paolo Bonzini, 2021/03/12
Re: all class init functions for all types in QEMU are called in select_machine(). Expected?, Paolo Bonzini, 2021/03/12