From: Claudio Fontana <cfontana@suse.de>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: "Laurent Vivier" <lvivier@redhat.com>,
"Thomas Huth" <thuth@redhat.com>,
"Stefano Stabellini" <sstabellini@kernel.org>,
"Paul Durrant" <paul@xen.org>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>,
"Jason Wang" <jasowang@redhat.com>,
"Marcelo Tosatti" <mtosatti@redhat.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
qemu-devel@nongnu.org, "Peter Xu" <peterx@redhat.com>,
"Dario Faggioli" <dfaggioli@suse.com>,
"Roman Bolshakov" <r.bolshakov@yadro.com>,
"Wenchao Wang" <wenchao.wang@intel.com>,
haxm-team@intel.com, "Cameron Esfahani" <dirty@apple.com>,
"Anthony Perard" <anthony.perard@citrix.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Sunil Muthuswamy" <sunilmut@microsoft.com>,
"Bruce Rogers" <brogers@suse.com>,
"Olaf Hering" <ohering@suse.de>, "Colin Xu" <colin.xu@intel.com>
Subject: Re: [RFC v3 9/9] i386: split cpu accelerators from cpu.c
Date: Fri, 20 Nov 2020 10:08:46 +0100 [thread overview]
Message-ID: <eb8a316c-4c29-69ea-82b4-f00a53218e11@suse.de> (raw)
In-Reply-To: <20201119192305.GB1509407@habkost.net>
On 11/19/20 8:23 PM, Eduardo Habkost wrote:
> On Thu, Nov 19, 2020 at 09:53:09AM +0100, Claudio Fontana wrote:
>> Hi,
>>
>> On 11/18/20 7:28 PM, Eduardo Habkost wrote:
>>> On Wed, Nov 18, 2020 at 11:29:36AM +0100, Claudio Fontana wrote:
>>>> split cpu.c into:
>>>>
>>>> cpu.c cpuid and common x86 cpu functionality
>>>> host-cpu.c host x86 cpu functions and "host" cpu type
>>>> kvm/cpu.c KVM x86 cpu type
>>>> hvf/cpu.c HVF x86 cpu type
>>>> tcg/cpu.c TCG x86 cpu type
>>>>
>>>> The accel interface of the X86CPUClass is set at MODULE_INIT_ACCEL_CPU
>>>> time, when the accelerator is known.
>>>>
>>>> Signed-off-by: Claudio Fontana <cfontana@suse.de>
>>>> ---
>>> [...]
>>>> +/**
>>>> + * X86CPUAccel:
>>>> + * @name: string name of the X86 CPU Accelerator
>>>> + *
>>>> + * @common_class_init: initializer for the common cpu
>>>
>>> So this will be called for every single CPU class.
>>
>> Not really, it's called for every TYPE_X86_CPU cpu class (if an accel interface is registered).
>
> This means every single non-abstract CPU class in
> qemu-system-x86_64, correct?
>
>>
>> This function extends the existing x86_cpu_common_class_init (target/i386/cpu.c),
>> where some methods of the base class CPUClass are set.
>>
>>>
>>>> + * @instance_init: cpu instance initialization
>>>> + * @realizefn: realize function, called first in x86 cpu realize
>>>> + *
>>>> + * X86 CPU accelerator-specific CPU initializations
>>>> + */
>>>> +
>>>> +struct X86CPUAccel {
>>>> + const char *name;
>>>> +
>>>> + void (*common_class_init)(X86CPUClass *xcc);
>>>> + void (*instance_init)(X86CPU *cpu);
>>>> + void (*realizefn)(X86CPU *cpu, Error **errp);
>>>> };
>>>>
>>>> +void x86_cpu_accel_init(const X86CPUAccel *accel);
>>> [...]
>>>> +static void x86_cpu_accel_init_aux(ObjectClass *klass, void *opaque)
>>>> +{
>>>> + X86CPUClass *xcc = X86_CPU_CLASS(klass);
>>>> + const X86CPUAccel **accel = opaque;
>>>> +
>>>> + xcc->accel = *accel;
>>>> + xcc->accel->common_class_init(xcc);
>>>> +}
>>>> +
>>>> +void x86_cpu_accel_init(const X86CPUAccel *accel)
>>>> +{
>>>> + object_class_foreach(x86_cpu_accel_init_aux, TYPE_X86_CPU, false, &accel);
>>>> +}
>>>
>>> This matches the documented behavior.
>>>
>>> [...]
>>>> +void host_cpu_class_init(X86CPUClass *xcc)
>>>> +{
>>>> + xcc->host_cpuid_required = true;
>>>> + xcc->ordering = 8;
>>>> + xcc->model_description =
>>>> + g_strdup_printf("%s processor with all supported host features ",
>>>> + xcc->accel->name);
>>>> +}
>>> [...]
>>>> +static void hvf_cpu_common_class_init(X86CPUClass *xcc)
>>>> +{
>>>> + host_cpu_class_init(xcc);
>>>
>>> Why are you calling host_cpu_class_init() for all CPU types?
>>
>> I am not..
>
> I don't get it. You are calling host_cpu_class_init() for every
> single non-abstract TYPE_X86_CPU subclass (which includes all CPU
> models in qemu-system-x86_64), and I don't understand why, or if
> this is really intentional.
It is really intentional what is done here,
when HVF accelerator is enabled, and only when the HVF accelerator is enabled,
all X86 CPU classes and subclasses (cpu models, which have been implemented as subclasses of TYPE_X86_CPU), are updated with a link to the accelerator-specific HVF interface.
>
>>
>>>
>>>> +}
>>> [...]
>>>> +static void kvm_cpu_common_class_init(X86CPUClass *xcc)
>>>> +{
>>>> + host_cpu_class_init(xcc);
>>>> +}
>>>
>>> Same question as above.
>>>
>>
>> Ciao,
>>
>> Claudio
>>
>
next prev parent reply other threads:[~2020-11-20 9:10 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-18 10:29 [RFC v3 0/9] i386 cleanup Claudio Fontana
2020-11-18 10:29 ` [RFC v3 1/9] i386: move kvm accel files into kvm/ Claudio Fontana
2020-11-18 10:29 ` [RFC v3 2/9] i386: move whpx accel files into whpx/ Claudio Fontana
2020-11-18 10:29 ` [RFC v3 3/9] i386: move hax accel files into hax/ Claudio Fontana
2020-11-18 10:29 ` [RFC v3 4/9] i386: hvf: remove stale MAINTAINERS entry for old hvf stubs Claudio Fontana
2020-11-18 16:09 ` Roman Bolshakov
2020-11-18 10:29 ` [RFC v3 5/9] i386: move TCG accel files into tcg/ Claudio Fontana
2020-11-18 10:29 ` [RFC v3 6/9] i386: move cpu dump out of helper.c into cpu-dump.c Claudio Fontana
2020-11-18 10:29 ` [RFC v3 7/9] i386: move TCG cpu class initialization out of helper.c Claudio Fontana
2020-11-18 10:29 ` [RFC v3 8/9] module: introduce MODULE_INIT_ACCEL_CPU Claudio Fontana
2020-11-18 12:38 ` Claudio Fontana
2020-11-18 12:48 ` Eduardo Habkost
2020-11-18 13:48 ` Claudio Fontana
2020-11-18 14:05 ` Paolo Bonzini
2020-11-18 14:36 ` Eduardo Habkost
2020-11-18 14:51 ` Paolo Bonzini
2020-11-18 15:25 ` Eduardo Habkost
2020-11-18 15:43 ` Paolo Bonzini
2020-11-18 16:11 ` Eduardo Habkost
2020-11-18 16:22 ` Paolo Bonzini
2020-11-18 17:30 ` Eduardo Habkost
2020-11-18 19:13 ` Paolo Bonzini
2020-11-18 22:07 ` Eduardo Habkost
2020-11-20 12:13 ` Claudio Fontana
2020-11-20 17:19 ` Eduardo Habkost
2020-11-20 17:41 ` Claudio Fontana
2020-11-20 18:09 ` Eduardo Habkost
2020-11-23 9:29 ` Claudio Fontana
2020-11-23 9:55 ` Claudio Fontana
2020-11-23 13:18 ` Paolo Bonzini
2020-11-23 15:02 ` Claudio Fontana
2020-11-23 15:14 ` Paolo Bonzini
2020-11-23 18:20 ` Eduardo Habkost
2020-11-18 10:29 ` [RFC v3 9/9] i386: split cpu accelerators from cpu.c Claudio Fontana
2020-11-18 18:28 ` Eduardo Habkost
2020-11-19 8:53 ` Claudio Fontana
2020-11-19 19:23 ` Eduardo Habkost
2020-11-20 9:08 ` Claudio Fontana [this message]
2020-11-23 18:24 ` Eduardo Habkost
2020-11-23 18:34 ` Claudio Fontana
2020-11-18 11:00 ` [RFC v3 0/9] i386 cleanup no-reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=eb8a316c-4c29-69ea-82b4-f00a53218e11@suse.de \
--to=cfontana@suse.de \
--cc=anthony.perard@citrix.com \
--cc=brogers@suse.com \
--cc=colin.xu@intel.com \
--cc=dfaggioli@suse.com \
--cc=dirty@apple.com \
--cc=ehabkost@redhat.com \
--cc=haxm-team@intel.com \
--cc=jasowang@redhat.com \
--cc=lvivier@redhat.com \
--cc=mtosatti@redhat.com \
--cc=ohering@suse.de \
--cc=paul@xen.org \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=philmd@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=r.bolshakov@yadro.com \
--cc=richard.henderson@linaro.org \
--cc=sstabellini@kernel.org \
--cc=sunilmut@microsoft.com \
--cc=thuth@redhat.com \
--cc=wenchao.wang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).