All of lore.kernel.org
 help / color / mirror / Atom feed
From: Igor Mammedov <imammedo@redhat.com>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: peter.maydell@linaro.org, qemu-devel@nongnu.org, agraf@suse.de,
	borntraeger@de.ibm.com,
	Bharata B Rao <bharata@linux.vnet.ibm.com>,
	pbonzini@redhat.com, afaerber@suse.de,
	david@gibson.dropbear.id.au
Subject: Re: [Qemu-devel] [RFC PATCH v0 2/9] cpu: Store CPU typename in MachineState
Date: Fri, 18 Dec 2015 17:01:27 +0100	[thread overview]
Message-ID: <20151218170127.67a9e20c@nial.brq.redhat.com> (raw)
In-Reply-To: <20151218155149.GU3774@thinpad.lan.raisama.net>

On Fri, 18 Dec 2015 13:51:49 -0200
Eduardo Habkost <ehabkost@redhat.com> wrote:

> On Fri, Dec 18, 2015 at 11:46:05AM +0100, Igor Mammedov wrote:
> > On Thu, 17 Dec 2015 16:09:23 -0200
> > Eduardo Habkost <ehabkost@redhat.com> wrote:
> > 
> > > On Wed, Dec 16, 2015 at 11:26:20PM +0100, Igor Mammedov wrote:
> > > > On Wed, 16 Dec 2015 17:39:02 -0200
> > > > Eduardo Habkost <ehabkost@redhat.com> wrote:
> > > > 
> > > > > On Wed, Dec 16, 2015 at 05:54:25PM +0100, Igor Mammedov wrote:
> > > > > > On Tue, 15 Dec 2015 14:08:09 +0530
> > > > > > Bharata B Rao <bharata@linux.vnet.ibm.com> wrote:
> > > > > > 
> > > > > > > On Mon, Dec 14, 2015 at 03:29:49PM -0200, Eduardo Habkost wrote:
> > > > > > > > On Thu, Dec 10, 2015 at 11:45:37AM +0530, Bharata B Rao wrote:
> > > > > > > > > Storing CPU typename in MachineState lets us to create CPU
> > > > > > > > > threads for all architectures in uniform manner from
> > > > > > > > > arch-neutral code.
> > > > > > > > > 
> > > > > > > > > TODO: Touching only i386 and spapr targets for now
> > > > > > > > > 
> > > > > > > > > Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
> > > > > > > > 
> > > > > > > > Suggestions:
> > > > > > > > 
> > > > > > > > * Name the field "cpu_base_type" to indicate it is the base CPU
> > > > > > > >   class name, not the actual CPU class name used when creating
> > > > > > > >   CPUs.
> > > > > > > > * Put it in MachineClass, as it may be useful for code that
> > > > > > > >   runs before machine->init(), in the future.
> > > > > > > 
> > > > > > > Ok.
> > > > > > > 
> > > > > > > > * Maybe make it a CPUClass* field instead of a string?
> > > > > > > 
> > > > > > > In the current use case, this base cpu type string is being passed
> > > > > > > to cpu_generic_init(const char *typename, const char *cpu_model)
> > > > > > > to create boot time CPUs with given typename and cpu_mode. So for
> > > > > > > now the string makes sense for use case.
> > > > > > > 
> > > > > > > Making it CPUClass* would necessiate more changes to
> > > > > > > cpu_generic_init().
> > > > > > how about actually leaving it as "cpu_type" and putting in it
> > > > > > actual cpu type that could be used with device_add().
> > > > > > 
> > > > > > that would get rid of keeping and passing around intermediate
> > > > > > cpu_model.
> > > > > 
> > > > > Makes sense. We only need to save both typename and cpu_model
> > > > > today because cpu_generic_init() currently encapsulates three
> > > > > steps: CPU class lookup + CPU creation + CPU feature parsing. But
> > > > > we shouldn't need to redo CPU class lookup every time.
> > > > BTW: Eduardo do you know if QEMU could somehow provide a list of
> > > > supported CPU types (i.e. not cpumodels) to libvirt?
> > > 
> > > Not sure I understand the question. Could you clarify what you
> > > mean by "supported CPU types", and what's the problem it would
> > > solve?
> > device_add TYPE, takes only type name so I'd like to kep it that way
> > and make sure that libvirt/user can list cpu types that hi would
> > be able to use with device_add/-device.
> > 
> > for PC they are generated from cpu_model with help of x86_cpu_type_name()
> 
> What about adding a "qom-type" field to query-cpu-definitions?
Sounds like good idea to me.

> 
> > 
> > > > 
> > > > > 
> > > > > We could just split cpu_model once, and save the resulting
> > > > > CPUClass* + featurestr, instead of saving the full cpu_model
> > > > > string and parsing it again every time.
> > > > isn't featurestr as x86/sparc specific?
> > > > 
> > > > Could we have field in  x86_cpu_class/sparc_cpu_class for it and set it
> > > > when cpu_model is parsed?
> > > > That way generic cpu_model parser would handle only cpu names and
> > > > target specific overrides would handle both.
> > > 
> > > I always assumed we want to have a generic CPU model + featurestr
> > > mechanism that could be reused by multiple architectures.
> > 
> > I've thought the opposite way, that we wanted to faze out featurestr
> > in favor of generic option parsing of generic device, i.e.
> >  -device TYPE,option=X,...
> > but we would have to keep compatibility with old CLI
> > that supplies cpu definition via -cpu cpu_model,featurestr
> > so cpu_model translated into "cpu_type" field make sense for every
> > target but featurestr is x86/sparc specific and I'd prefer to
> > keep it that way and do not introduce it to other targets.
> 
> I see, and it may make sense long term. But do you really think
> we will be able to deprecate "-cpu" and "-smp" soon?
> 
> We already have CPUClass::parse_features, and cpu_generic_init()
> already makes the model/featurestr split. Do you propose we
> remove that generic code and move it back to x86/sparc?
> 
> Also, are you sure no other architectures support options in
> "-cpu"? cpu_common_parse_features() already supports setting QOM
> properties, and it is already available on every architecture
> that calls CPUClass::parse_features or uses cpu_generic_init(). I
> see that both ARM and PPC have properties available in their CPU
> classes, and call parse_features() too.
Well if generic handlers already exist and spread to other targets
then there isn't much point in pushing it into arch specific
code, sorry for noise.

  reply	other threads:[~2015-12-18 16:01 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-10  6:15 [Qemu-devel] [RFC PATCH v0 0/9] Generic cpu-core device Bharata B Rao
2015-12-10  6:15 ` [Qemu-devel] [RFC PATCH v0 1/9] vl: Don't allow CPU toplogies with partially filled cores Bharata B Rao
2015-12-10 10:25   ` Daniel P. Berrange
2015-12-11  3:24     ` Bharata B Rao
2015-12-14 17:37       ` Eduardo Habkost
2015-12-15  8:41         ` Bharata B Rao
2015-12-10  6:15 ` [Qemu-devel] [RFC PATCH v0 2/9] cpu: Store CPU typename in MachineState Bharata B Rao
2015-12-14 17:29   ` Eduardo Habkost
2015-12-15  8:38     ` Bharata B Rao
2015-12-15 15:31       ` Eduardo Habkost
2015-12-16 16:54       ` Igor Mammedov
2015-12-16 19:39         ` Eduardo Habkost
2015-12-16 22:26           ` Igor Mammedov
2015-12-17 18:09             ` Eduardo Habkost
2015-12-18 10:46               ` Igor Mammedov
2015-12-18 15:51                 ` Eduardo Habkost
2015-12-18 16:01                   ` Igor Mammedov [this message]
2015-12-10  6:15 ` [Qemu-devel] [RFC PATCH v0 3/9] cpu: Don't realize CPU from cpu_generic_init() Bharata B Rao
2015-12-10  6:15 ` [Qemu-devel] [RFC PATCH v0 4/9] cpu: CPU socket backend Bharata B Rao
2015-12-10  6:15 ` [Qemu-devel] [RFC PATCH v0 5/9] vl: Create CPU socket backend objects Bharata B Rao
2015-12-10  6:15 ` [Qemu-devel] [RFC PATCH v0 6/9] cpu: Introduce CPU core device Bharata B Rao
2015-12-10  6:15 ` [Qemu-devel] [RFC PATCH v0 7/9] spapr: Convert boot CPUs into CPU core device initialization Bharata B Rao
2015-12-10  6:15 ` [Qemu-devel] [RFC PATCH v0 8/9] target-i386: Set apic_id during CPU initfn Bharata B Rao
2015-12-14 17:44   ` Eduardo Habkost
2015-12-15  8:14     ` Bharata B Rao
2015-12-10  6:15 ` [Qemu-devel] [RFC PATCH v0 9/9] pc: Convert boot CPUs into CPU core device initialization Bharata B Rao
2015-12-10 12:35 ` [Qemu-devel] [RFC PATCH v0 0/9] Generic cpu-core device Igor Mammedov
2015-12-11  3:57   ` Bharata B Rao
2015-12-15  5:27     ` Zhu Guihua
2015-12-16 15:16       ` Andreas Färber
2015-12-16 15:11     ` Igor Mammedov
2015-12-17  9:19       ` Peter Krempa
2015-12-16 15:46   ` Andreas Färber
2015-12-16 21:58     ` Igor Mammedov
2015-12-24  1:59       ` Zhu Guihua
2015-12-29 13:52         ` Igor Mammedov
2016-01-01  3:47     ` Bharata B Rao
2016-01-04 12:52       ` Igor Mammedov
2015-12-10 20:25 ` Matthew Rosato
2015-12-14  6:25   ` Bharata B Rao
2015-12-16 15:19 ` Andreas Färber
2015-12-16 15:44   ` Igor Mammedov
2015-12-16 15:57     ` Andreas Färber
2015-12-16 17:22       ` Igor Mammedov
2015-12-16 22:37         ` Igor Mammedov
2016-01-12  3:54         ` David Gibson

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=20151218170127.67a9e20c@nial.brq.redhat.com \
    --to=imammedo@redhat.com \
    --cc=afaerber@suse.de \
    --cc=agraf@suse.de \
    --cc=bharata@linux.vnet.ibm.com \
    --cc=borntraeger@de.ibm.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=ehabkost@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /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.