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: Thu, 7 May 2015 09:35:01 +0200 [thread overview]
Message-ID: <20150507093501.1ac2f993@bee> (raw)
In-Reply-To: <20150506170616.GF17796@thinpad.lan.raisama.net>
On Wed, 6 May 2015 14:06:16 -0300
Eduardo Habkost <ehabkost@redhat.com> wrote:
> On Wed, May 06, 2015 at 06:23:05PM +0200, Michael Mueller wrote:
> > On Wed, 6 May 2015 08:23:32 -0300
> > Eduardo Habkost <ehabkost@redhat.com> wrote:
> [...]
> > > > > > 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.
> > >
> > > I think you are more likely to confuse users by not showing information
> > > on "-cpu ?" when -machine is not present. I believe most people use
> > > "-cpu ?" with no other arguments, to see what the QEMU binary is capable
> > > of.
> >
> > I don't disagree with that, both cases are to some extend confusing...
> > But the accelerator makes a big difference and a tended user should really be aware
> > of that.
> >
> > Also that TCG is the default:
> >
> > $ ./s390x-softmmu/qemu-system-s390x -cpu ?
> > s390 host
> >
> > And I don't see a way to make a user belief that all the defined CPU models are available to
> > a TCG user in the S390 case where most of the CPU facilities are not implemented.
>
> Well, we could simply add a "KVM required" note (maybe just an asterisk beside
> the CPU model description). But maybe we have a reasonable alternative below:
>
> >
> > >
> > > Anyway, whatever we decide to do, I believe we should start with
> > > something simple to get things working, and after that we can look for
> > > ways improve the help output with "runnable" info.
> >
> > I don't see how to solve this without cpu_desc_avail() or some other comparable mechanism, the
> > aliases e.g. are also dynamic...
>
> What bothers me in cpu_desc_avail() is that it depends on global state that is
> non-trivial (one needs to follow the whole KVM initialization path to find out
> if cpu_desc_avail() will be true or false).
>
> We could instead simply skip the cpu_list() call unconditionally on s390. e.g.:
>
> target-s390x/cpu.h:
> /* Delete the existing cpu_list macro */
>
> cpus.c:
> int list_cpus(FILE *f, fprintf_function cpu_fprintf, const char *optarg)
> {
> #if defined(cpu_list)
> cpu_list(f, cpu_fprintf);
> return 1;
> #else
> return 0;
> #endif
> }
>
> vl.c:
> if (cpu_model && is_help_option(cpu_model)) {
> /* zero list_cpus() return value means "-cpu ?" will be
> * handled later by machine initialization code */
> if (list_cpus(stdout, &fprintf, cpu_model)) {
> exit(0);
> }
> }
That approach is will do the job as well. I will prepare a patch for the next version.
Thanks!
>
> [...]
> > >
> > > About "-cpu ?": do we really want it to depend on -machine processing?
> > > Today, help output shows what the QEMU binary is capable of, not just
> > > what the host system and -machine option are capable of.
> >
> > I think we have to take it into account because the available CPU models might
> > deviate substantially as in the case for S390 for KVM and TCG.
>
> That's true, on s390 the set of available CPU models is very different on both
> cases. It breaks assumptions in the existing "-cpu ?" handling code in main().
>
> >
> > >
> > > If we decide to change that assumption, let's do it in a generic way and
> > > not as a arch-specific hack. The options I see are:
> >
> > welcome
> >
> > >
> > > 1) Continue with the current policy where "-cpu ?" does not depend on
> > > -machine arguments, and show all CPU models on "-cpu ?".
> > > 2) Deciding that, yes, it is OK to make "-cpu ?" depend on -machine
> > > arguments, and move the list_cpus() call after machine initialization
> > > inside generic main() code for all arches.
> > > 2.1) We could delay the list_cpus() call inside main() on all cases.
> > > 2.2) We could delay the list_cpus() call inside main() only if
> > > an explicit -machine option is present.
> > >
> > > I prefer (1) and my second choice would be (2.2), but the main point is
> > > that none of the options above require making s390 special and
> > > introducing cpu_desc_avail().
> >
> > My take here is 2.1 because omitting option -machine is a decision to some
> > defaults for machine type and accelerator type already.
>
> The problem with 2.1 is that some machine init functions require that
> additional command-line parameters are set and will abort (e.g. mips machines).
> So we can't do that unconditionally for all architectures.
>
> The proposal above is like 2.1, but conditional: it will delay "-cpu ?"
> handling only on architectures that don't define cpu_list().
perfect.
Michael
>
next prev parent reply other threads:[~2015-05-07 7:35 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
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 [this message]
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=20150507093501.1ac2f993@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).