@@ -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;
@@ -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
@@ -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"
@@ -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;
@@ -3144,6 +3145,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;
@@ -4023,7 +4028,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;
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 accelerators 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(-)