qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Claudio Fontana <cfontana@suse.de>
To: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: "Laurent Vivier" <lvivier@redhat.com>,
	"Thomas Huth" <thuth@redhat.com>,
	"Stefano Stabellini" <sstabellini@kernel.org>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	"Paul Durrant" <paul@xen.org>, "Jason Wang" <jasowang@redhat.com>,
	"Marcelo Tosatti" <mtosatti@redhat.com>,
	qemu-devel@nongnu.org, "Peter Xu" <peterx@redhat.com>,
	"Dario Faggioli" <dfaggioli@suse.com>,
	"Roman Bolshakov" <r.bolshakov@yadro.com>,
	"Cameron Esfahani" <dirty@apple.com>,
	haxm-team@intel.com, "Colin Xu" <colin.xu@intel.com>,
	"Anthony Perard" <anthony.perard@citrix.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Sunil Muthuswamy" <sunilmut@microsoft.com>,
	"Bruce Rogers" <brogers@suse.com>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	"Richard Henderson" <rth@twiddle.net>,
	"Wenchao Wang" <wenchao.wang@intel.com>
Subject: Re: [RFC v1 09/10] i386: split cpu.c and defer x86 models registration
Date: Tue, 10 Nov 2020 10:40:04 +0100	[thread overview]
Message-ID: <971cfde9-d24e-a3dc-6389-8a7c9e477f63@suse.de> (raw)
In-Reply-To: <20201109180302.GB814975@redhat.com>

On 11/9/20 7:03 PM, Daniel P. Berrangé wrote:
> On Mon, Nov 09, 2020 at 06:27:54PM +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-type.c   KVM x86 cpu type
>> hvf-cpu-type.c   HVF x86 cpu type
>> tcg-cpu-type.c   TCG x86 cpu type
>>
>> Defer the x86 models registration to MODULE_INIT_ACCEL_CPU,
>> so that accel-specific types can be used as parent types for all
>> cpu models. Use the generic TYPE_X86_CPU only if no
>> accel-specific specialization is enabled.
> 
> Can you give more info on why this is needed and/or desirable ?

Hello Daniel, there is a pointer to the overall higher level motivation in the cover letter.

But I am not pushing for this specific mechanism to be used, as mentioned in the cover letter.

If we need another mechanism to achieve that (not delaying the x86 model registration and make them inherit from the specialized class), but something else,
I would be happy to get additional ideas.

> 
> Dynamically changing the class hierarchy of CPUs at runtime feels
> like a rather suspicious approach to me

TYPE_X86_CPU is base type is registered as usual.
New accel-specialized types are defined (TYPE_TCG_CPU, TYPE_KVM_CPU, TYPE_HVF_CPU), also using normal type registration.

The missing step is how to adapt all the cpu models to use the functionality.

The accelerator that is finally chosen to be used is only known at a specific point in the qemu initialization.
This point of time I defined as MODULE_INIT_ACCEL_CPU.

That is the time when we know how the CPU should actually really behave (how it should be realized, etc).

In this series I realized this by registering the cpu models only at MODULE_INIT_ACCEL_CPU time, and not earlier.
But maybe there is a better idea on how to do it, and I am all ears.

.
> 
> It is contrary to work we've been doing recently to try to make all
> classes be fully statically defined by getting rid of dynamic properties,
> such that introspection of classes does not depend on other CLI flags
> you might have passed.

Understood, this goes against other requirements.

The dynamism introduced here is to register the cpu models at MODULE_INIT_ACCEL_CPU time instead of MODULE_INIT_QOM time.
As a result, for any chosen accelerator, the type tree and class tree is identical.

So maybe there is a way to leverage this to accommodate both needs?

> 
> 
> Regards,
> Daniel
> 



  reply	other threads:[~2020-11-10  9:41 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-09 17:27 [RFC v1 00/10] i386 cleanup Claudio Fontana
2020-11-09 17:27 ` [RFC v1 01/10] i386: move kvm accel files into accel/kvm/ Claudio Fontana
2020-11-09 17:27 ` [RFC v1 02/10] i386: move whpx accel files to accel/whpx/ Claudio Fontana
2020-11-09 17:27 ` [RFC v1 03/10] i386: move hax accel files to accel/hax/ Claudio Fontana
2020-11-09 17:27 ` [RFC v1 04/10] i386: move hvf accel files into accel/hvf/ Claudio Fontana
2020-11-09 17:27 ` [RFC v1 05/10] i386: move TCG accel files into accel/tcg/ Claudio Fontana
2020-11-09 17:27 ` [RFC v1 06/10] i386: move cpu dump out of helper.c into cpu-dump.c Claudio Fontana
2020-11-09 17:27 ` [RFC v1 07/10] i386: move TCG cpu class initialization out of helper.c Claudio Fontana
2020-11-09 17:39   ` Paolo Bonzini
2020-11-10 10:05     ` Claudio Fontana
2020-11-10 10:42       ` Paolo Bonzini
2020-11-09 17:27 ` [RFC v1 08/10] module: introduce MODULE_INIT_ACCEL_CPU Claudio Fontana
2020-11-09 17:27 ` [RFC v1 09/10] i386: split cpu.c and defer x86 models registration Claudio Fontana
2020-11-09 17:34   ` Paolo Bonzini
2020-11-09 17:37   ` Paolo Bonzini
2020-11-09 18:03   ` Daniel P. Berrangé
2020-11-10  9:40     ` Claudio Fontana [this message]
2020-11-10 10:04       ` Daniel P. Berrangé
2020-11-10 10:13         ` Claudio Fontana
2020-11-10 10:41         ` Paolo Bonzini
2020-11-10 15:23           ` Eduardo Habkost
2020-11-10 16:05             ` Paolo Bonzini
2020-11-10 17:55               ` Eduardo Habkost
2020-11-10 20:39                 ` Paolo Bonzini
2020-11-10 20:45                   ` Eduardo Habkost
2020-11-10 17:38             ` Claudio Fontana
2020-11-10 18:14               ` Eduardo Habkost
2020-11-11 12:59                 ` Claudio Fontana
2020-11-16 17:53             ` Claudio Fontana
2020-11-09 19:04   ` Eduardo Habkost
2020-11-10  9:49     ` Claudio Fontana
2020-11-09 17:27 ` [RFC v1 10/10] module: add priority to module_init Claudio Fontana
2020-11-09 17:45 ` [RFC v1 00/10] 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=971cfde9-d24e-a3dc-6389-8a7c9e477f63@suse.de \
    --to=cfontana@suse.de \
    --cc=anthony.perard@citrix.com \
    --cc=berrange@redhat.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=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=rth@twiddle.net \
    --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).