All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eduardo Habkost <ehabkost@redhat.com>
To: Michael Mueller <mimu@linux.vnet.ibm.com>
Cc: "Andreas Färber" <afaerber@suse.de>,
	linux-s390@vger.kernel.org,
	"Peter Crosthwaite" <peter.crosthwaite@xilinx.com>,
	kvm@vger.kernel.org, "Gleb Natapov" <gleb@kernel.org>,
	linux-kernel@vger.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>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Cornelia Huck" <cornelia.huck@de.ibm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	"Alistair Francis" <alistair.francis@xilinx.com>,
	"Richard Henderson" <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH v3 01/16] Introduce probe mode for machine type none
Date: Wed, 4 Mar 2015 16:19:25 -0300	[thread overview]
Message-ID: <20150304191925.GD13041@thinpad.lan.raisama.net> (raw)
In-Reply-To: <20150303115524.40bd40b0@bee>

On Tue, Mar 03, 2015 at 11:55:24AM +0100, Michael Mueller wrote:
> On Mon, 02 Mar 2015 17:57:01 +0100
> Andreas Färber <afaerber@suse.de> wrote:
> 
> > Am 02.03.2015 um 17:43 schrieb Michael Mueller:
> > > On Mon, 02 Mar 2015 14:57:21 +0100
> > > Andreas Färber <afaerber@suse.de> wrote:
> > > 
> > >>>  int configure_accelerator(MachineState *ms)
> > >>>  {
> > >>> -    const char *p;
> > >>> +    const char *p, *name;
> > >>>      char buf[10];
> > >>>      int ret;
> > >>>      bool accel_initialised = false;
> > >>>      bool init_failed = false;
> > >>>      AccelClass *acc = NULL;
> > >>> +    ObjectClass *oc;
> > >>> +    bool probe_mode = false;
> > >>>  
> > >>>      p = qemu_opt_get(qemu_get_machine_opts(), "accel");
> > >>>      if (p == NULL) {
> > >>> -        /* Use the default "accelerator", tcg */
> > >>> -        p = "tcg";
> > >>> +        oc = (ObjectClass *) MACHINE_GET_CLASS(current_machine);
> > >>> +        name = object_class_get_name(oc);
> > >>> +        probe_mode = !strcmp(name, "none" TYPE_MACHINE_SUFFIX);
> > >>> +        if (probe_mode) {
> > >>> +            /* Use these accelerators in probe mode, tcg should be last */
> > >>> +            p = probe_mode_accels;
> > >>> +        } else {
> > >>> +            /* Use the default "accelerator", tcg */
> > >>> +            p = "tcg";
> > >>> +        }
> > >>>      }  
> > >>
> > >> Can't we instead use an explicit ,accel=probe or ,accel=auto?
> > >> That would then obsolete the next patch.
> > > 
> > > How would you express the following with the accel=<pseudo-accel> approach?
> > > 
> > > -probe -machine s390-ccw,accel=kvm 
> > > 
> > > Using machine "none" as default with tcg as last accelerator initialized should not break
> > > anything.
> > > 
> > > -M none
> > 
> > Let me ask differently: What does -machine none or -M none have to do
> > with probing? It reads as if you are introducing two probe modes. Why do
> 
> The machine none? nothing directly, I guess. What are real world use cases for that
> machine type?
> 
> > you need both? If we have -probe, isn't that independent of which
> 
> It is just two different means to switch on the same mode.
> 
> > machine we specify? Who is going to call either, with which respective goal?
> 
> -probe itself would be sufficient but I currently do not want to enforce the use of
> a new parameter. Best would be not to have that mode at all if possible. 
> 
> The intended use case is driven by management interfaces that need to draw decisions
> on, in this particular case runnable cpu models, with information originated by qemu.
> 
> Let me walk through Eduardo's suggestion first and crosscheck it with my requirements
> before we enter in a maybe afterwards obsolete discussion.

I have been working on some changes to implement x86 CPU probing code
that creates accel objects on the fly, that may be useful. See:
  https://github.com/ehabkost/qemu-hacks/tree/work/user-accel-init

Especially the commit:
  kvm: Move /dev/kvm opening/closing to open/close methods

The next steps I plan are:
 * Create AccelState object on TCG too, and somehow pass it as argument
   to cpu_x86_init()
 * Change all kvm_enabled() occurrences on target-i386/cpu.c to use
   the provided accel object (including
   x86_cpu_get_supported_feature_word() and x86_cpu_filter_features())
 * Use the new
   x86_cpu_get_supported_feature_word()/x86_cpu_filter_features() code
   to implement a is_runnable(X86CPUClass*, AccelState*) check
 * Use the new is_runnable() check to extend query-cpu-definitions for x86 too
 * Add -cpu string and machine-type arguments to the is_runnable() check

-- 
Eduardo

WARNING: multiple messages have this Message-ID (diff)
From: Eduardo Habkost <ehabkost@redhat.com>
To: Michael Mueller <mimu@linux.vnet.ibm.com>
Cc: linux-s390@vger.kernel.org,
	"Peter Crosthwaite" <peter.crosthwaite@xilinx.com>,
	kvm@vger.kernel.org, "Gleb Natapov" <gleb@kernel.org>,
	linux-kernel@vger.kernel.org, qemu-devel@nongnu.org,
	"Christian Borntraeger" <borntraeger@de.ibm.com>,
	"Alexander Graf" <agraf@suse.de>,
	"Jason J. Herne" <jjherne@linux.vnet.ibm.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	"Cornelia Huck" <cornelia.huck@de.ibm.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Alistair Francis" <alistair.francis@xilinx.com>,
	"Andreas Färber" <afaerber@suse.de>,
	"Richard Henderson" <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH v3 01/16] Introduce probe mode for machine type none
Date: Wed, 4 Mar 2015 16:19:25 -0300	[thread overview]
Message-ID: <20150304191925.GD13041@thinpad.lan.raisama.net> (raw)
In-Reply-To: <20150303115524.40bd40b0@bee>

On Tue, Mar 03, 2015 at 11:55:24AM +0100, Michael Mueller wrote:
> On Mon, 02 Mar 2015 17:57:01 +0100
> Andreas Färber <afaerber@suse.de> wrote:
> 
> > Am 02.03.2015 um 17:43 schrieb Michael Mueller:
> > > On Mon, 02 Mar 2015 14:57:21 +0100
> > > Andreas Färber <afaerber@suse.de> wrote:
> > > 
> > >>>  int configure_accelerator(MachineState *ms)
> > >>>  {
> > >>> -    const char *p;
> > >>> +    const char *p, *name;
> > >>>      char buf[10];
> > >>>      int ret;
> > >>>      bool accel_initialised = false;
> > >>>      bool init_failed = false;
> > >>>      AccelClass *acc = NULL;
> > >>> +    ObjectClass *oc;
> > >>> +    bool probe_mode = false;
> > >>>  
> > >>>      p = qemu_opt_get(qemu_get_machine_opts(), "accel");
> > >>>      if (p == NULL) {
> > >>> -        /* Use the default "accelerator", tcg */
> > >>> -        p = "tcg";
> > >>> +        oc = (ObjectClass *) MACHINE_GET_CLASS(current_machine);
> > >>> +        name = object_class_get_name(oc);
> > >>> +        probe_mode = !strcmp(name, "none" TYPE_MACHINE_SUFFIX);
> > >>> +        if (probe_mode) {
> > >>> +            /* Use these accelerators in probe mode, tcg should be last */
> > >>> +            p = probe_mode_accels;
> > >>> +        } else {
> > >>> +            /* Use the default "accelerator", tcg */
> > >>> +            p = "tcg";
> > >>> +        }
> > >>>      }  
> > >>
> > >> Can't we instead use an explicit ,accel=probe or ,accel=auto?
> > >> That would then obsolete the next patch.
> > > 
> > > How would you express the following with the accel=<pseudo-accel> approach?
> > > 
> > > -probe -machine s390-ccw,accel=kvm 
> > > 
> > > Using machine "none" as default with tcg as last accelerator initialized should not break
> > > anything.
> > > 
> > > -M none
> > 
> > Let me ask differently: What does -machine none or -M none have to do
> > with probing? It reads as if you are introducing two probe modes. Why do
> 
> The machine none? nothing directly, I guess. What are real world use cases for that
> machine type?
> 
> > you need both? If we have -probe, isn't that independent of which
> 
> It is just two different means to switch on the same mode.
> 
> > machine we specify? Who is going to call either, with which respective goal?
> 
> -probe itself would be sufficient but I currently do not want to enforce the use of
> a new parameter. Best would be not to have that mode at all if possible. 
> 
> The intended use case is driven by management interfaces that need to draw decisions
> on, in this particular case runnable cpu models, with information originated by qemu.
> 
> Let me walk through Eduardo's suggestion first and crosscheck it with my requirements
> before we enter in a maybe afterwards obsolete discussion.

I have been working on some changes to implement x86 CPU probing code
that creates accel objects on the fly, that may be useful. See:
  https://github.com/ehabkost/qemu-hacks/tree/work/user-accel-init

Especially the commit:
  kvm: Move /dev/kvm opening/closing to open/close methods

The next steps I plan are:
 * Create AccelState object on TCG too, and somehow pass it as argument
   to cpu_x86_init()
 * Change all kvm_enabled() occurrences on target-i386/cpu.c to use
   the provided accel object (including
   x86_cpu_get_supported_feature_word() and x86_cpu_filter_features())
 * Use the new
   x86_cpu_get_supported_feature_word()/x86_cpu_filter_features() code
   to implement a is_runnable(X86CPUClass*, AccelState*) check
 * Use the new is_runnable() check to extend query-cpu-definitions for x86 too
 * Add -cpu string and machine-type arguments to the is_runnable() check

-- 
Eduardo

  reply	other threads:[~2015-03-04 19:19 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-02 12:43 [PATCH v3 00/16] s390x cpu model implementation Michael Mueller
2015-03-02 12:43 ` [Qemu-devel] " Michael Mueller
2015-03-02 12:43 ` [PATCH v3 01/16] Introduce probe mode for machine type none Michael Mueller
2015-03-02 12:43   ` [Qemu-devel] " Michael Mueller
2015-03-02 12:43   ` Michael Mueller
2015-03-02 13:57   ` Andreas Färber
2015-03-02 13:57     ` [Qemu-devel] " Andreas Färber
2015-03-02 16:43     ` Michael Mueller
2015-03-02 16:43       ` Michael Mueller
2015-03-02 16:57       ` Andreas Färber
2015-03-02 16:57         ` Andreas Färber
2015-03-03 10:55         ` Michael Mueller
2015-03-03 10:55           ` Michael Mueller
2015-03-04 19:19           ` Eduardo Habkost [this message]
2015-03-04 19:19             ` Eduardo Habkost
2015-03-05 14:56             ` Michael Mueller
2015-03-05 14:56               ` Michael Mueller
2015-03-05 15:07               ` Eduardo Habkost
2015-03-05 15:07                 ` Eduardo Habkost
2015-03-02 19:17   ` Eduardo Habkost
2015-03-02 19:17     ` [Qemu-devel] " Eduardo Habkost
2015-03-03 10:23     ` Michael Mueller
2015-03-03 10:23       ` Michael Mueller
2015-03-03 10:23       ` Michael Mueller
2015-03-02 12:43 ` [PATCH v3 02/16] Introduce option --probe to switch into probe mode Michael Mueller
2015-03-02 12:43   ` [Qemu-devel] " Michael Mueller
2015-03-02 12:43 ` [PATCH v3 03/16] Introduce stub routine cpu_desc_avail Michael Mueller
2015-03-02 12:43   ` [Qemu-devel] " Michael Mueller
2015-03-02 12:43 ` [PATCH v3 04/16] target-s390x: Introduce cpu facilities Michael Mueller
2015-03-02 12:43   ` [Qemu-devel] " Michael Mueller
2015-03-02 12:43   ` Michael Mueller
2015-03-02 12:43 ` [PATCH v3 05/16] target-s390x: Generate facility defines per cpu model Michael Mueller
2015-03-02 12:43   ` [Qemu-devel] " Michael Mueller
2015-03-02 12:43 ` [PATCH v3 06/16] target-s390x: Introduce cpu models Michael Mueller
2015-03-02 12:43   ` [Qemu-devel] " Michael Mueller
2015-03-02 12:43 ` [PATCH v3 07/16] target-s390x: Define cpu model specific facility lists Michael Mueller
2015-03-02 12:43   ` [Qemu-devel] " Michael Mueller
2015-03-02 12:43   ` Michael Mueller
2015-03-02 12:44 ` [PATCH v3 08/16] target-s390x: Add cpu model alias definition routines Michael Mueller
2015-03-02 12:44   ` [Qemu-devel] " Michael Mueller
2015-03-02 12:44 ` [PATCH v3 09/16] target-s390x: Update linux-headers/asm-s390/kvm.h Michael Mueller
2015-03-02 12:44   ` [Qemu-devel] " Michael Mueller
2015-03-02 12:44 ` [PATCH v3 10/16] target-s390x: Add KVM VM attribute interface for cpu models Michael Mueller
2015-03-02 12:44   ` [Qemu-devel] " Michael Mueller
2015-03-02 12:44 ` [PATCH v3 11/16] target-s390x: Add cpu class initialization routines Michael Mueller
2015-03-02 12:44   ` [Qemu-devel] " Michael Mueller
2015-03-02 12:44   ` Michael Mueller
2015-03-02 12:44 ` [PATCH v3 12/16] target-s390x: Prepare accelerator during cpu object realization Michael Mueller
2015-03-02 12:44   ` [Qemu-devel] " Michael Mueller
2015-03-02 12:44   ` Michael Mueller
2015-03-02 12:44 ` [PATCH v3 13/16] target-s390x: New QMP command query-cpu-model Michael Mueller
2015-03-02 12:44   ` [Qemu-devel] " Michael Mueller
2015-03-02 12:44   ` Michael Mueller
2015-03-02 12:44 ` [PATCH v3 14/16] target-s390x: Extend QMP command query-cpu-definitions Michael Mueller
2015-03-02 12:44   ` [Qemu-devel] " Michael Mueller
2015-03-02 19:11   ` Eduardo Habkost
2015-03-02 19:11     ` [Qemu-devel] " Eduardo Habkost
2015-03-04  9:00     ` Michael Mueller
2015-03-04  9:00       ` Michael Mueller
2015-03-02 12:44 ` [PATCH v3 15/16] target-s390x: Introduce facility test routine Michael Mueller
2015-03-02 12:44   ` [Qemu-devel] " Michael Mueller
2015-03-02 12:44 ` [PATCH v3 16/16] target-s390x: Enable cpu model usage Michael Mueller
2015-03-02 12:44   ` [Qemu-devel] " Michael Mueller
2015-03-02 19:25 ` [PATCH v3 00/16] s390x cpu model implementation Eduardo Habkost
2015-03-02 19:25   ` [Qemu-devel] " Eduardo Habkost

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=20150304191925.GD13041@thinpad.lan.raisama.net \
    --to=ehabkost@redhat.com \
    --cc=afaerber@suse.de \
    --cc=agraf@suse.de \
    --cc=alistair.francis@xilinx.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cornelia.huck@de.ibm.com \
    --cc=edgar.iglesias@gmail.com \
    --cc=gleb@kernel.org \
    --cc=jjherne@linux.vnet.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=mimu@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.crosthwaite@xilinx.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 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.