diff mbox

[RFC,v2,02/15] cpu-model: Introduce option --probe to switch into probe mode

Message ID 1424183053-4310-3-git-send-email-mimu@linux.vnet.ibm.com
State New
Headers show

Commit Message

Michael Mueller Feb. 17, 2015, 2:24 p.m. UTC
The option --probe allows to switch into probe mode also for machines
different from none. If one or more accelerators are specified these
accelerators are used to provide probable properties. If no accelerator
is given a list of accellerators that support probing is used.

Signed-off-by: Michael Mueller <mimu@linux.vnet.ibm.com>
---
 accel.c                | 13 ++++++++-----
 include/sysemu/accel.h |  2 +-
 qemu-options.hx        |  8 ++++++++
 vl.c                   |  7 ++++++-
 4 files changed, 23 insertions(+), 7 deletions(-)

Comments

Eric Blake Feb. 17, 2015, 7:16 p.m. UTC | #1
On 02/17/2015 07:24 AM, Michael Mueller wrote:
> The option --probe allows to switch into probe mode also for machines
> different from none. If one or more accelerators are specified these
> accelerators are used to provide probable properties. If no accelerator
> is given a list of accellerators that support probing is used.

s/accellerators/accelerators/

> 
> Signed-off-by: Michael Mueller <mimu@linux.vnet.ibm.com>
> ---
>  accel.c                | 13 ++++++++-----
>  include/sysemu/accel.h |  2 +-
>  qemu-options.hx        |  8 ++++++++
>  vl.c                   |  7 ++++++-
>  4 files changed, 23 insertions(+), 7 deletions(-)
>
Michael Mueller Feb. 18, 2015, 9:08 a.m. UTC | #2
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Tue, 17 Feb 2015 12:16:20 -0700
Eric Blake <eblake@redhat.com> wrote:

> On 02/17/2015 07:24 AM, Michael Mueller wrote:

> > The option --probe allows to switch into probe mode also for machines

> > different from none. If one or more accelerators are specified these

> > accelerators are used to provide probable properties. If no accelerator

> > is given a list of accellerators that support probing is used.

> 

> s/accellerators/accelerators/


ups

> 

> > 

> > Signed-off-by: Michael Mueller <mimu@linux.vnet.ibm.com>

> > ---

> >  accel.c                | 13 ++++++++-----

> >  include/sysemu/accel.h |  2 +-

> >  qemu-options.hx        |  8 ++++++++

> >  vl.c                   |  7 ++++++-

> >  4 files changed, 23 insertions(+), 7 deletions(-)

> > 

> 


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIcBAEBAgAGBQJU5FZ/AAoJELPcPLQSJsKQxGMP/0MnqhT4bAL98hgRnhPZyoEt
wGSB4zoBQ0VnhQ7XiXe2HhVn2y8I9XI2pn/GpQgDInlMQ7HYhM7UtWD3/Wlrp0ky
MyCNrsD0/cT3bjAhZ0OlGC3fqujVLVmxGc5wQrmymYKKNaWMoDNQt3PFYk6ZKHSh
2RzLFkWSzx3iWKcsZ5aA0Sxms21L0c+TPx9/EAvUohyul5tyGe0Sf7TleS0YBjLH
O4y1QmiXaFdGLag/wp535bSG1s4JkOxYgWKWohxVs7qwl0NNMbQPiL1Z9NO3ushs
5J9BjLD54fhmXnHEFHBaS1o//hL12wkssyUBdiCObpANltGZN23qvsh5zh2Rv/Sb
QqYDCBimqxn5Y4J9xUIzONNmrQ3y5jyJTuNK0Q9Wd9lEklgs9r5Bn/ro0/zKSCVH
zgLsjFqS6Rh2MZnu8Vvi8bEtle7zwYiQ0TfpFn1oaGJlzO7+9S6RbLIAO0XQlDxT
0R097n3D0VtLVznyHvJuRdyO4fdNuy4joo03Oej0/8HpKqaQxZhUSP7ReaIvcqyw
kqM2q0wPyIemFrg6WrNb2pVAqljSFOHNl0dNQPuoprWP3M6cXVWfE8IO01kjNIiy
muR2dh2w03JiPm3jwNEe+bEsw3lx7cLYx5fxh/8A7VD5Fh9nIVEawJXG5359hUiV
etSL5sdva53IUMkxWetu
=FFkJ
-----END PGP SIGNATURE-----
diff mbox

Patch

diff --git a/accel.c b/accel.c
index 260b009..4ed6df8 100644
--- a/accel.c
+++ b/accel.c
@@ -81,7 +81,7 @@  static int accel_init_machine(AccelClass *acc, MachineState *ms,
     return ret;
 }
 
-int configure_accelerator(MachineState *ms)
+int configure_accelerator(MachineState *ms, int probe)
 {
     const char *p, *name;
     char buf[10];
@@ -90,13 +90,16 @@  int configure_accelerator(MachineState *ms)
     bool init_failed = false;
     AccelClass *acc = NULL;
     ObjectClass *oc;
-    bool probe_mode = false;
+    bool probe_mode;
 
+    probe_mode = probe != 0;
     p = qemu_opt_get(qemu_get_machine_opts(), "accel");
     if (p == NULL) {
-        oc = (ObjectClass *) MACHINE_GET_CLASS(current_machine);
-        name = object_class_get_name(oc);
-        probe_mode = !strcmp(name, "none" TYPE_MACHINE_SUFFIX);
+        if (!probe_mode) {
+            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;
diff --git a/include/sysemu/accel.h b/include/sysemu/accel.h
index 997720f..3adb6ba 100644
--- a/include/sysemu/accel.h
+++ b/include/sysemu/accel.h
@@ -57,6 +57,6 @@  typedef struct AccelClass {
 
 extern int tcg_tb_size;
 
-int configure_accelerator(MachineState *ms);
+int configure_accelerator(MachineState *ms, int probe);
 
 #endif
diff --git a/qemu-options.hx b/qemu-options.hx
index 85ca3ad..22e7544 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -2847,6 +2847,14 @@  STEXI
 Do not start CPU at startup (you must type 'c' in the monitor).
 ETEXI
 
+DEF("probe", 0, QEMU_OPTION_probe, \
+    "-probe          startup in probe mode, option -S is selected as well\n", QEMU_ARCH_ALL)
+STEXI
+@item -probe
+@findex -probe
+Startup in probe mode.
+ETEXI
+
 DEF("realtime", HAS_ARG, QEMU_OPTION_realtime,
     "-realtime [mlock=on|off]\n"
     "                run qemu with realtime features\n"
diff --git a/vl.c b/vl.c
index 8c8f142..0fabc0b 100644
--- a/vl.c
+++ b/vl.c
@@ -138,6 +138,7 @@  bool enable_mlock = false;
 int nb_nics;
 NICInfo nd_table[MAX_NICS];
 int autostart;
+int probe;
 static int rtc_utc = 1;
 static int rtc_date_offset = -1; /* -1 means no change */
 QEMUClockType rtc_clock;
@@ -3148,6 +3149,10 @@  int main(int argc, char **argv, char **envp)
             case QEMU_OPTION_S:
                 autostart = 0;
                 break;
+            case QEMU_OPTION_probe:
+                probe = 1;
+                autostart = 0;
+                break;
             case QEMU_OPTION_k:
                 keyboard_layout = optarg;
                 break;
@@ -4027,7 +4032,7 @@  int main(int argc, char **argv, char **envp)
         exit(1);
     }
 
-    configure_accelerator(current_machine);
+    configure_accelerator(current_machine, probe);
 
     if (qtest_chrdev) {
         Error *local_err = NULL;