All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eduardo Habkost <ehabkost@redhat.com>
To: Claudio Fontana <cfontana@suse.de>
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: Thu, 19 Nov 2020 14:23:05 -0500	[thread overview]
Message-ID: <20201119192305.GB1509407@habkost.net> (raw)
In-Reply-To: <5f6c7b5c-a48a-019d-2646-d0670aeb46e1@suse.de>

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.

> 
> > 
> >> +}
> > [...]
> >> +static void kvm_cpu_common_class_init(X86CPUClass *xcc)
> >> +{
> >> +    host_cpu_class_init(xcc);
> >> +}
> > 
> > Same question as above.
> > 
> 
> Ciao,
> 
> Claudio
> 

-- 
Eduardo



  reply	other threads:[~2020-11-19 19:24 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 [this message]
2020-11-20  9:08         ` Claudio Fontana
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=20201119192305.GB1509407@habkost.net \
    --to=ehabkost@redhat.com \
    --cc=anthony.perard@citrix.com \
    --cc=brogers@suse.com \
    --cc=cfontana@suse.de \
    --cc=colin.xu@intel.com \
    --cc=dfaggioli@suse.com \
    --cc=dirty@apple.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.