qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Michael Mueller <mimu@linux.vnet.ibm.com>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: Cornelia Huck <cornelia.huck@de.ibm.com>,
	Gleb Natapov <gleb@kernel.org>,
	qemu-devel@nongnu.org, Alexander Graf <agraf@suse.de>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	"Jason J. Herne" <jjherne@linux.vnet.ibm.com>,
	Daniel Hansel <daniel.hansel@linux.vnet.ibm.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Andreas Faerber <afaerber@suse.de>,
	Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH v6 01/17] Introduce stub routine cpu_desc_avail
Date: Wed, 6 May 2015 11:17:20 +0200	[thread overview]
Message-ID: <20150506111720.46e93edd@bee> (raw)
In-Reply-To: <20150505174101.GV17796@thinpad.lan.raisama.net>

On Tue, 5 May 2015 14:41:01 -0300
Eduardo Habkost <ehabkost@redhat.com> wrote:

> On Tue, May 05, 2015 at 06:12:16PM +0200, Michael Mueller wrote:
> > On Tue, 5 May 2015 10:55:47 -0300
> > Eduardo Habkost <ehabkost@redhat.com> wrote:
> > 
> > > On Mon, Apr 27, 2015 at 04:53:15PM +0200, Michael Mueller wrote:
> > > > This patch introduces the function cpu_desc_avail() which returns by
> > > > default true if not architecture specific implemented. Its intention
> > > > is to indicate if the cpu model description is available for display
> > > > by list_cpus(). This change allows cpu model descriptions to become
> > > > dynamically created by evaluating the runtime context instead of
> > > > putting static cpu model information at display.
> > > 
> > > Why are you deliberately breaking "-cpu ?" when cpu_desc_avail() is
> > > false?
> > 
> > In the s390x case cpu_desc_avail() is per se false in this code section of vl.c:
> > 
> >   /* Init CPU def lists, based on config                         
> >    * - Must be called after all the qemu_read_config_file() calls
> >    * - Must be called before list_cpu()
> >    * - Must be called before machine->init()
> >    */
> 
> (Side note: I believe the above outdated, I will send a patch to update
> it.)

Will be interesting to see what the change is, master is currently showing this code.

> 
> >    cpudef_init();
> > 
> >    if (cpu_model && cpu_desc_avail() && is_help_option(cpu_model)) {
> >        list_cpus(stdout, &fprintf, cpu_model);
> >        exit(0);
> >    }
> > 
> > That is because the output does not solely depend on static definitions
> > but also on runtime context. Here the host machine type this instance of
> > QEMU is running on, at least for the KVM case.
> 
> Is this a required feature? I would prefer to have the main() code
> simple even if it means not having runnable information in "-cpu ?" by
> now (about possible ways to implement this without cpu_desc_avail(), see
> below).

I think it is more than a desired feature because one might end up with a failed
CPU object instantiation although the help screen claims to CPU model to be valid. 

> 
> 
> > 
> > Once the accelerator has been initialized AND the S390 cpu classes have
> > been setup by means of the following code:
> > 
> > static void kvm_setup_cpu_classes(KVMState *s)
> > {
> >     S390MachineProps mach;
> > 
> >     if (!kvm_s390_get_machine_props(s, &mach)) {
> >         s390_setup_cpu_classes(ACCEL_CURRENT, &mach,
> >                                s390_current_fac_list_mask());
> > 	s390_setup_cpu_aliases();
> >         cpu_classes_initialized = true;
> >     }
> > }
> > 
> > cpu_desc_avail() becomes true. In case the selceted mode was "?"
> > the list_cpu() is now done right before the cpu model is used as part
> > of the cpu initialization (hw/s390-virtio.c):
> > 
> > void s390_init_cpus(const char *cpu_model, uint8_t *storage_keys)
> > {
> >     int i;
> > 
> >     if (cpu_model == NULL) {
> >         cpu_model = "none";
> >     }
> > 
> >     if (is_help_option(cpu_model)) {
> >         list_cpus(stdout, &fprintf, cpu_model);
> >         exit(0);
> >     }
> > 
> >     ...
> >     for (i = 0; i < smp_cpus; i++) {
> >         ...
> >         cpu = cpu_s390x_init(cpu_model);
> >         ...
> >     }
> > }
> 
> 
> In other words, you just need to ensure that s390_cpu_list() run after
> kvm_setup_cpu_classes().

... which is part of the KVM/accel init process but it could of course make use
of the ACCEL_TMP use case as query-cpu-definitions does.

> 
> Can't you simply call s390_setup_cpu_classes(ACCEL_TEMP) inside
> s390_init_cpus(), just like arch_query_cpu_definitions()? You could even
> share code between both functions.

That would not help with the current placement of list_cpus() in main() as it happens
way to early. Not s390_init_cpus() is the issue, the context information has been
processed already at that time. Currently I just kind of delay the list_cpus() until
all required information is available.

> 
> (In the future, we should be able to implement "-cpu ?" by simply
> calling the query-cpu-definitions implementation.)

Right but the -machine <name>,accel=<accel> options have to be processed already.

> 
> > 
> > > 
> > > What exactly could cause cpu_desc_avail() to be false? If CPU model
> > > information is not yet available when cpu_list() is called, it is a bug.
> > > 
> > 
> > Here an example output that shows only runnable cpu models:
> > 
> > $ ./s390x-softmmu/qemu-system-s390x -machine s390,accel=kvm -cpu ?
> > s390 none       
> > s390 2064-ga1   IBM zSeries 900 GA1
> > s390 2064-ga2   IBM zSeries 900 GA2
> > s390 2064-ga3   IBM zSeries 900 GA3
> > s390 2064       (alias for 2064-ga3)
> > s390 z900       (alias for 2064-ga3)
> > s390 2066-ga1   IBM zSeries 800 GA1
> > s390 2066       (alias for 2066-ga1)
> > s390 z800       (alias for 2066-ga1)
> > s390 2084-ga1   IBM zSeries 990 GA1
> > s390 2084-ga2   IBM zSeries 990 GA2
> > s390 2084-ga3   IBM zSeries 990 GA3
> > s390 2084-ga4   IBM zSeries 990 GA4
> > s390 2084-ga5   IBM zSeries 990 GA5
> > s390 2084       (alias for 2084-ga5)
> > s390 z990       (alias for 2084-ga5)
> > s390 2086-ga1   IBM zSeries 890 GA1
> > s390 2086-ga2   IBM zSeries 890 GA2
> > s390 2086-ga3   IBM zSeries 890 GA3
> > s390 2086       (alias for 2086-ga3)
> > s390 z890       (alias for 2086-ga3)
> > s390 2094-ga1   IBM System z9 EC GA1
> > s390 z9-109     (alias for 2094-ga1)
> > s390 2094-ga2   IBM System z9 EC GA2
> > s390 2094-ga3   IBM System z9 EC GA3
> > s390 2094       (alias for 2094-ga3)
> > s390 z9         (alias for 2094-ga3)
> > s390 z9-ec      (alias for 2094-ga3)
> > s390 2096-ga1   IBM System z9 BC GA1
> > s390 2096-ga2   IBM System z9 BC GA2
> > s390 2096       (alias for 2096-ga2)
> > s390 z9-bc      (alias for 2096-ga2)
> > s390 2097-ga1   IBM System z10 EC GA1
> > s390 2097-ga2   IBM System z10 EC GA2
> > s390 2097-ga3   IBM System z10 EC GA3
> > s390 2097       (alias for 2097-ga3)
> > s390 z10        (alias for 2097-ga3)
> > s390 z10-ec     (alias for 2097-ga3)
> > s390 2098-ga1   IBM System z10 BC GA1
> > s390 2098-ga2   IBM System z10 BC GA2
> > s390 2098       (alias for 2098-ga2)
> > s390 z10-bc     (alias for 2098-ga2)
> > s390 2817-ga1   IBM zEnterprise 196 GA1
> > s390 2817-ga2   IBM zEnterprise 196 GA2
> > s390 2817       (alias for 2817-ga2)
> > s390 z196       (alias for 2817-ga2)
> > s390 2818-ga1   IBM zEnterprise 114 GA1
> > s390 2818       (alias for 2818-ga1)
> > s390 z114       (alias for 2818-ga1)
> > s390 2827-ga1   IBM zEnterprise EC12 GA1
> > s390 2827-ga2   IBM zEnterprise EC12 GA2
> > s390 2827       (alias for 2827-ga2)
> > s390 zEC12      (alias for 2827-ga2)
> > s390 host       (alias for 2827-ga2)
> > s390 2828-ga1   IBM zEnterprise BC12 GA1
> > s390 2828       (alias for 2828-ga1)
> > s390 zBC12      (alias for 2828-ga1)
> > 
> > 
> [...]
> 

  reply	other threads:[~2015-05-06  9:17 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-27 14:53 [Qemu-devel] [PATCH v6 00/17] s390 cpu model implementation Michael Mueller
2015-04-27 14:53 ` [Qemu-devel] [PATCH v6 01/17] Introduce stub routine cpu_desc_avail Michael Mueller
2015-05-05 13:55   ` Eduardo Habkost
2015-05-05 16:12     ` Michael Mueller
2015-05-05 17:41       ` Eduardo Habkost
2015-05-06  9:17         ` Michael Mueller [this message]
2015-05-06 11:23           ` Eduardo Habkost
2015-05-06 16:23             ` Michael Mueller
2015-05-06 17:06               ` Eduardo Habkost
2015-05-07  7:35                 ` Michael Mueller
2015-04-27 14:53 ` [Qemu-devel] [PATCH v6 02/17] Add accelerator id and model name to CPUState Michael Mueller
2015-05-05 13:26   ` Eduardo Habkost
2015-05-05 14:36     ` Eric Blake
2015-05-05 14:46       ` Eduardo Habkost
2015-05-06  9:28         ` Michael Mueller
2015-05-06  9:59     ` Michael Mueller
2015-05-06 11:41       ` Eduardo Habkost
2015-05-07  7:55         ` Michael Mueller
2015-05-07 15:04           ` Eduardo Habkost
2015-04-27 14:53 ` [Qemu-devel] [PATCH v6 03/17] Extend QMP command query-cpus to return accelerator id and model name Michael Mueller
2015-05-05 13:11   ` Eduardo Habkost
2015-05-06  9:49     ` Michael Mueller
2015-05-06 11:33       ` Eduardo Habkost
2015-04-27 14:53 ` [Qemu-devel] [PATCH v6 04/17] Extend HMP command info cpus to display " Michael Mueller
2015-05-05 13:14   ` Eduardo Habkost
2015-05-06  7:32     ` Michael Mueller
2015-05-06 10:38       ` Eduardo Habkost
2015-05-06 12:59         ` Luiz Capitulino
2015-05-06 13:33           ` Eduardo Habkost
2015-05-06 13:44             ` Michael Mueller
2015-04-27 14:53 ` [Qemu-devel] [PATCH v6 05/17] Add optional parameters to QMP command query-cpu-definitions Michael Mueller
2015-05-06 12:42   ` Eduardo Habkost
2015-05-07  7:37     ` Michael Mueller
2015-04-27 14:53 ` [Qemu-devel] [PATCH v6 06/17] target-s390x: Introduce S390 CPU facilities Michael Mueller
2015-04-27 14:53 ` [Qemu-devel] [PATCH v6 07/17] target-s390x: Generate facility defines per S390 CPU model Michael Mueller
2015-04-27 14:53 ` [Qemu-devel] [PATCH v6 08/17] target-s390x: Introduce S390 CPU models Michael Mueller
2015-04-27 14:53 ` [Qemu-devel] [PATCH v6 09/17] target-s390x: Define S390 CPU model specific facility lists Michael Mueller
2015-04-27 14:53 ` [Qemu-devel] [PATCH v6 10/17] target-s390x: Add S390 CPU model alias definition routines Michael Mueller
2015-04-27 14:53 ` [Qemu-devel] [PATCH v6 11/17] target-s390x: Add KVM VM attribute interface for S390 CPU models Michael Mueller
2015-04-27 14:53 ` [Qemu-devel] [PATCH v6 12/17] target-s390x: Add S390 CPU class initialization routines Michael Mueller
2015-05-05 14:34   ` Eduardo Habkost
2015-05-06  8:02     ` Michael Mueller
2015-05-06 12:20       ` Eduardo Habkost
2015-04-27 14:53 ` [Qemu-devel] [PATCH v6 13/17] target-s390x: Prepare accelerator during S390 CPU object realization Michael Mueller
2015-04-27 14:53 ` [Qemu-devel] [PATCH v6 14/17] target-s390x: Initialize S390 CPU model name in CPUState Michael Mueller
2015-04-27 14:53 ` [Qemu-devel] [PATCH v6 15/17] target-s390x: Extend arch specific QMP command query-cpu-definitions Michael Mueller
2015-05-05 18:40   ` Eduardo Habkost
2015-05-06 15:31     ` Michael Mueller
2015-05-06 16:00       ` Eduardo Habkost
2015-05-06 16:27         ` Michael Mueller
2015-05-06 12:37   ` Eduardo Habkost
2015-05-06 14:48     ` Michael Mueller
2015-05-11 16:59       ` Eduardo Habkost
2015-04-27 14:53 ` [Qemu-devel] [PATCH v6 16/17] target-s390x: Introduce S390 CPU facility test routine Michael Mueller
2015-04-27 14:53 ` [Qemu-devel] [PATCH v6 17/17] target-s390x: Enable S390 CPU model usage Michael Mueller

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=20150506111720.46e93edd@bee \
    --to=mimu@linux.vnet.ibm.com \
    --cc=afaerber@suse.de \
    --cc=agraf@suse.de \
    --cc=borntraeger@de.ibm.com \
    --cc=cornelia.huck@de.ibm.com \
    --cc=daniel.hansel@linux.vnet.ibm.com \
    --cc=ehabkost@redhat.com \
    --cc=gleb@kernel.org \
    --cc=jjherne@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /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).