mirror of https://github.com/xemu-project/xemu.git
HMP pull 2018-06-21
Minor fixes and reenable preconfig -----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJbK9WdAAoJEAUWMx68W/3njg0P/0qdP1TctuwwikSbRuEPLVCa nwqfsEMomiukC9wD4DR4opsupY+e5Ugeje+TTK8oF+CzamD70XXtLoeR2JSXEon2 ZlN3MxOv/4ibP3f5pjgJc0skzhD3y/FAD3qzBkaaHwsudBSjZ7rlOGS3E5U3tOxy JLKrotjV9W6qtwO6DNKE7+DcnJPbb6zNtKjt00BuYghVn8K5zXyTKOsxK6QLH9b3 txdeVmqMnIhpFavLESMOgE3HicTATLJsRREqmnZz+fPPP0Yiz/2tyLXEV64v9BLu G99/FeqtLVvxyeKCAn/dWbbLqrsAV7pgnyaQfE55EzjpSO2xl8hayNUUqbgqsNwW nKSQO0P2iFU1zQTHs5hJyBaqjdlOOsPdM6tO9UywSERiyAlxosVr0K+gFYVcQi56 2BelxNeAvqIDrWPPvaSLZhNXGUxpk3LwSzS9Ma5KqHFb+MaW++hZhkVy4exRm+NN OIk+Em5QCBMp0AoNaVsf+qGpy0wkfUDB4OVycDscr1dRx5uKmgMl6qDh1nwg3a73 527ui0+qpI2/3zLlG6ohazGiVLwio005MJkYG2dAvobwZC0p5MnbFkjPML444EDj 3QAFzzUHJkFusmsNl1Jkgf1Uh1mXCwovE6fU/fa/I0HxS/M7lJob0NLRMctL60Q7 O9R6jhRh0vsCHepCYOH6 =Gxyi -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/dgilbert/tags/pull-hmp-20180621' into staging HMP pull 2018-06-21 Minor fixes and reenable preconfig # gpg: Signature made Thu 21 Jun 2018 17:43:09 BST # gpg: using RSA key 0516331EBC5BFDE7 # gpg: Good signature from "Dr. David Alan Gilbert (RH2) <dgilbert@redhat.com>" # Primary key fingerprint: 45F5 C71B 4A0C B7FB 977A 9FA9 0516 331E BC5B FDE7 * remotes/dgilbert/tags/pull-hmp-20180621: hmp: Allow HMP in preconfig state again hmp: add exit_preconfig hmp: Add commands for preconfig qmp: Enable a few commands in preconfig state hmp: Restrict auto-complete in preconfig hmp: Allow help on preconfig commands hmp: Add flag for preconfig commands hmp-commands: use long for begin and length in dump-guest-memory monitor: report entirety of hmp command on error Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
c74b91ac1c
|
@ -19,6 +19,7 @@ ETEXI
|
||||||
.params = "",
|
.params = "",
|
||||||
.help = "show the version of QEMU",
|
.help = "show the version of QEMU",
|
||||||
.cmd = hmp_info_version,
|
.cmd = hmp_info_version,
|
||||||
|
.flags = "p",
|
||||||
},
|
},
|
||||||
|
|
||||||
STEXI
|
STEXI
|
||||||
|
@ -47,6 +48,7 @@ ETEXI
|
||||||
.params = "",
|
.params = "",
|
||||||
.help = "show the character devices",
|
.help = "show the character devices",
|
||||||
.cmd = hmp_info_chardev,
|
.cmd = hmp_info_chardev,
|
||||||
|
.flags = "p",
|
||||||
},
|
},
|
||||||
|
|
||||||
STEXI
|
STEXI
|
||||||
|
@ -165,6 +167,7 @@ ETEXI
|
||||||
.params = "",
|
.params = "",
|
||||||
.help = "show the command line history",
|
.help = "show the command line history",
|
||||||
.cmd = hmp_info_history,
|
.cmd = hmp_info_history,
|
||||||
|
.flags = "p",
|
||||||
},
|
},
|
||||||
|
|
||||||
STEXI
|
STEXI
|
||||||
|
@ -399,6 +402,7 @@ ETEXI
|
||||||
.params = "",
|
.params = "",
|
||||||
.help = "show the current VM status (running|paused)",
|
.help = "show the current VM status (running|paused)",
|
||||||
.cmd = hmp_info_status,
|
.cmd = hmp_info_status,
|
||||||
|
.flags = "p",
|
||||||
},
|
},
|
||||||
|
|
||||||
STEXI
|
STEXI
|
||||||
|
@ -457,6 +461,7 @@ ETEXI
|
||||||
.params = "",
|
.params = "",
|
||||||
.help = "show the current VM name",
|
.help = "show the current VM name",
|
||||||
.cmd = hmp_info_name,
|
.cmd = hmp_info_name,
|
||||||
|
.flags = "p",
|
||||||
},
|
},
|
||||||
|
|
||||||
STEXI
|
STEXI
|
||||||
|
@ -471,6 +476,7 @@ ETEXI
|
||||||
.params = "",
|
.params = "",
|
||||||
.help = "show the current VM UUID",
|
.help = "show the current VM UUID",
|
||||||
.cmd = hmp_info_uuid,
|
.cmd = hmp_info_uuid,
|
||||||
|
.flags = "p",
|
||||||
},
|
},
|
||||||
|
|
||||||
STEXI
|
STEXI
|
||||||
|
@ -613,6 +619,7 @@ ETEXI
|
||||||
.params = "[path]",
|
.params = "[path]",
|
||||||
.help = "show QOM composition tree",
|
.help = "show QOM composition tree",
|
||||||
.cmd = hmp_info_qom_tree,
|
.cmd = hmp_info_qom_tree,
|
||||||
|
.flags = "p",
|
||||||
},
|
},
|
||||||
|
|
||||||
STEXI
|
STEXI
|
||||||
|
@ -671,6 +678,7 @@ ETEXI
|
||||||
.params = "",
|
.params = "",
|
||||||
.help = "show memory backends",
|
.help = "show memory backends",
|
||||||
.cmd = hmp_info_memdev,
|
.cmd = hmp_info_memdev,
|
||||||
|
.flags = "p",
|
||||||
},
|
},
|
||||||
|
|
||||||
STEXI
|
STEXI
|
||||||
|
@ -699,6 +707,7 @@ ETEXI
|
||||||
.params = "",
|
.params = "",
|
||||||
.help = "show iothreads",
|
.help = "show iothreads",
|
||||||
.cmd = hmp_info_iothreads,
|
.cmd = hmp_info_iothreads,
|
||||||
|
.flags = "p",
|
||||||
},
|
},
|
||||||
|
|
||||||
STEXI
|
STEXI
|
||||||
|
@ -829,6 +838,7 @@ ETEXI
|
||||||
.params = "",
|
.params = "",
|
||||||
.help = "Show information about hotpluggable CPUs",
|
.help = "Show information about hotpluggable CPUs",
|
||||||
.cmd = hmp_hotpluggable_cpus,
|
.cmd = hmp_hotpluggable_cpus,
|
||||||
|
.flags = "p",
|
||||||
},
|
},
|
||||||
|
|
||||||
STEXI
|
STEXI
|
||||||
|
|
|
@ -15,6 +15,7 @@ ETEXI
|
||||||
.params = "[cmd]",
|
.params = "[cmd]",
|
||||||
.help = "show the help",
|
.help = "show the help",
|
||||||
.cmd = do_help_cmd,
|
.cmd = do_help_cmd,
|
||||||
|
.flags = "p",
|
||||||
},
|
},
|
||||||
|
|
||||||
STEXI
|
STEXI
|
||||||
|
@ -54,6 +55,25 @@ STEXI
|
||||||
@item q or quit
|
@item q or quit
|
||||||
@findex quit
|
@findex quit
|
||||||
Quit the emulator.
|
Quit the emulator.
|
||||||
|
ETEXI
|
||||||
|
|
||||||
|
{
|
||||||
|
.name = "exit_preconfig",
|
||||||
|
.args_type = "",
|
||||||
|
.params = "",
|
||||||
|
.help = "exit the preconfig state",
|
||||||
|
.cmd = hmp_exit_preconfig,
|
||||||
|
.flags = "p",
|
||||||
|
},
|
||||||
|
|
||||||
|
STEXI
|
||||||
|
@item exit_preconfig
|
||||||
|
@findex exit_preconfig
|
||||||
|
This command makes QEMU exit the preconfig state and proceed with
|
||||||
|
VM initialization using configuration data provided on the command line
|
||||||
|
and via the QMP monitor during the preconfig state. The command is only
|
||||||
|
available during the preconfig state (i.e. when the --preconfig command
|
||||||
|
line option was in use).
|
||||||
ETEXI
|
ETEXI
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -1116,7 +1136,7 @@ ETEXI
|
||||||
|
|
||||||
{
|
{
|
||||||
.name = "dump-guest-memory",
|
.name = "dump-guest-memory",
|
||||||
.args_type = "paging:-p,detach:-d,zlib:-z,lzo:-l,snappy:-s,filename:F,begin:i?,length:i?",
|
.args_type = "paging:-p,detach:-d,zlib:-z,lzo:-l,snappy:-s,filename:F,begin:l?,length:l?",
|
||||||
.params = "[-p] [-d] [-z|-l|-s] filename [begin length]",
|
.params = "[-p] [-d] [-z|-l|-s] filename [begin length]",
|
||||||
.help = "dump guest memory into file 'filename'.\n\t\t\t"
|
.help = "dump guest memory into file 'filename'.\n\t\t\t"
|
||||||
"-p: do paging to get guest's memory mapping.\n\t\t\t"
|
"-p: do paging to get guest's memory mapping.\n\t\t\t"
|
||||||
|
@ -1827,6 +1847,7 @@ ETEXI
|
||||||
.params = "path",
|
.params = "path",
|
||||||
.help = "list QOM properties",
|
.help = "list QOM properties",
|
||||||
.cmd = hmp_qom_list,
|
.cmd = hmp_qom_list,
|
||||||
|
.flags = "p",
|
||||||
},
|
},
|
||||||
|
|
||||||
STEXI
|
STEXI
|
||||||
|
@ -1840,6 +1861,7 @@ ETEXI
|
||||||
.params = "path property value",
|
.params = "path property value",
|
||||||
.help = "set QOM property",
|
.help = "set QOM property",
|
||||||
.cmd = hmp_qom_set,
|
.cmd = hmp_qom_set,
|
||||||
|
.flags = "p",
|
||||||
},
|
},
|
||||||
|
|
||||||
STEXI
|
STEXI
|
||||||
|
@ -1854,6 +1876,7 @@ ETEXI
|
||||||
.help = "show various information about the system state",
|
.help = "show various information about the system state",
|
||||||
.cmd = hmp_info_help,
|
.cmd = hmp_info_help,
|
||||||
.sub_table = info_cmds,
|
.sub_table = info_cmds,
|
||||||
|
.flags = "p",
|
||||||
},
|
},
|
||||||
|
|
||||||
STEXI
|
STEXI
|
||||||
|
|
8
hmp.c
8
hmp.c
|
@ -1068,6 +1068,14 @@ void hmp_system_powerdown(Monitor *mon, const QDict *qdict)
|
||||||
qmp_system_powerdown(NULL);
|
qmp_system_powerdown(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void hmp_exit_preconfig(Monitor *mon, const QDict *qdict)
|
||||||
|
{
|
||||||
|
Error *err = NULL;
|
||||||
|
|
||||||
|
qmp_exit_preconfig(&err);
|
||||||
|
hmp_handle_error(mon, &err);
|
||||||
|
}
|
||||||
|
|
||||||
void hmp_cpu(Monitor *mon, const QDict *qdict)
|
void hmp_cpu(Monitor *mon, const QDict *qdict)
|
||||||
{
|
{
|
||||||
int64_t cpu_index;
|
int64_t cpu_index;
|
||||||
|
|
1
hmp.h
1
hmp.h
|
@ -44,6 +44,7 @@ void hmp_quit(Monitor *mon, const QDict *qdict);
|
||||||
void hmp_stop(Monitor *mon, const QDict *qdict);
|
void hmp_stop(Monitor *mon, const QDict *qdict);
|
||||||
void hmp_system_reset(Monitor *mon, const QDict *qdict);
|
void hmp_system_reset(Monitor *mon, const QDict *qdict);
|
||||||
void hmp_system_powerdown(Monitor *mon, const QDict *qdict);
|
void hmp_system_powerdown(Monitor *mon, const QDict *qdict);
|
||||||
|
void hmp_exit_preconfig(Monitor *mon, const QDict *qdict);
|
||||||
void hmp_cpu(Monitor *mon, const QDict *qdict);
|
void hmp_cpu(Monitor *mon, const QDict *qdict);
|
||||||
void hmp_memsave(Monitor *mon, const QDict *qdict);
|
void hmp_memsave(Monitor *mon, const QDict *qdict);
|
||||||
void hmp_pmemsave(Monitor *mon, const QDict *qdict);
|
void hmp_pmemsave(Monitor *mon, const QDict *qdict);
|
||||||
|
|
49
monitor.c
49
monitor.c
|
@ -128,6 +128,7 @@ typedef struct mon_cmd_t {
|
||||||
const char *args_type;
|
const char *args_type;
|
||||||
const char *params;
|
const char *params;
|
||||||
const char *help;
|
const char *help;
|
||||||
|
const char *flags; /* p=preconfig */
|
||||||
void (*cmd)(Monitor *mon, const QDict *qdict);
|
void (*cmd)(Monitor *mon, const QDict *qdict);
|
||||||
/* @sub_table is a list of 2nd level of commands. If it does not exist,
|
/* @sub_table is a list of 2nd level of commands. If it does not exist,
|
||||||
* cmd should be used. If it exists, sub_table[?].cmd should be
|
* cmd should be used. If it exists, sub_table[?].cmd should be
|
||||||
|
@ -958,6 +959,19 @@ static int parse_cmdline(const char *cmdline,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns true if the command can be executed in preconfig mode
|
||||||
|
* i.e. it has the 'p' flag.
|
||||||
|
*/
|
||||||
|
static bool cmd_can_preconfig(const mon_cmd_t *cmd)
|
||||||
|
{
|
||||||
|
if (!cmd->flags) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return strchr(cmd->flags, 'p');
|
||||||
|
}
|
||||||
|
|
||||||
static void help_cmd_dump_one(Monitor *mon,
|
static void help_cmd_dump_one(Monitor *mon,
|
||||||
const mon_cmd_t *cmd,
|
const mon_cmd_t *cmd,
|
||||||
char **prefix_args,
|
char **prefix_args,
|
||||||
|
@ -965,6 +979,10 @@ static void help_cmd_dump_one(Monitor *mon,
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (runstate_check(RUN_STATE_PRECONFIG) && !cmd_can_preconfig(cmd)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < prefix_args_nb; i++) {
|
for (i = 0; i < prefix_args_nb; i++) {
|
||||||
monitor_printf(mon, "%s ", prefix_args[i]);
|
monitor_printf(mon, "%s ", prefix_args[i]);
|
||||||
}
|
}
|
||||||
|
@ -987,7 +1005,9 @@ static void help_cmd_dump(Monitor *mon, const mon_cmd_t *cmds,
|
||||||
|
|
||||||
/* Find one entry to dump */
|
/* Find one entry to dump */
|
||||||
for (cmd = cmds; cmd->name != NULL; cmd++) {
|
for (cmd = cmds; cmd->name != NULL; cmd++) {
|
||||||
if (compare_cmd(args[arg_index], cmd->name)) {
|
if (compare_cmd(args[arg_index], cmd->name) &&
|
||||||
|
((!runstate_check(RUN_STATE_PRECONFIG) ||
|
||||||
|
cmd_can_preconfig(cmd)))) {
|
||||||
if (cmd->sub_table) {
|
if (cmd->sub_table) {
|
||||||
/* continue with next arg */
|
/* continue with next arg */
|
||||||
help_cmd_dump(mon, cmd->sub_table,
|
help_cmd_dump(mon, cmd->sub_table,
|
||||||
|
@ -3041,6 +3061,12 @@ static const mon_cmd_t *monitor_parse_command(Monitor *mon,
|
||||||
(int)(p - cmdp_start), cmdp_start);
|
(int)(p - cmdp_start), cmdp_start);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
if (runstate_check(RUN_STATE_PRECONFIG) && !cmd_can_preconfig(cmd)) {
|
||||||
|
monitor_printf(mon, "Command '%.*s' not available with -preconfig "
|
||||||
|
"until after exit_preconfig.\n",
|
||||||
|
(int)(p - cmdp_start), cmdp_start);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* filter out following useless space */
|
/* filter out following useless space */
|
||||||
while (qemu_isspace(*p)) {
|
while (qemu_isspace(*p)) {
|
||||||
|
@ -3431,15 +3457,10 @@ static void handle_hmp_command(Monitor *mon, const char *cmdline)
|
||||||
{
|
{
|
||||||
QDict *qdict;
|
QDict *qdict;
|
||||||
const mon_cmd_t *cmd;
|
const mon_cmd_t *cmd;
|
||||||
|
const char *cmd_start = cmdline;
|
||||||
|
|
||||||
trace_handle_hmp_command(mon, cmdline);
|
trace_handle_hmp_command(mon, cmdline);
|
||||||
|
|
||||||
if (runstate_check(RUN_STATE_PRECONFIG)) {
|
|
||||||
monitor_printf(mon, "HMP not available in preconfig state, "
|
|
||||||
"use QMP instead\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd = monitor_parse_command(mon, cmdline, &cmdline, mon->cmd_table);
|
cmd = monitor_parse_command(mon, cmdline, &cmdline, mon->cmd_table);
|
||||||
if (!cmd) {
|
if (!cmd) {
|
||||||
return;
|
return;
|
||||||
|
@ -3447,8 +3468,11 @@ static void handle_hmp_command(Monitor *mon, const char *cmdline)
|
||||||
|
|
||||||
qdict = monitor_parse_arguments(mon, &cmdline, cmd);
|
qdict = monitor_parse_arguments(mon, &cmdline, cmd);
|
||||||
if (!qdict) {
|
if (!qdict) {
|
||||||
monitor_printf(mon, "Try \"help %s\" for more information\n",
|
while (cmdline > cmd_start && qemu_isspace(cmdline[-1])) {
|
||||||
cmd->name);
|
cmdline--;
|
||||||
|
}
|
||||||
|
monitor_printf(mon, "Try \"help %.*s\" for more information\n",
|
||||||
|
(int)(cmdline - cmd_start), cmd_start);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3990,12 +4014,17 @@ static void monitor_find_completion_by_table(Monitor *mon,
|
||||||
cmdname = args[0];
|
cmdname = args[0];
|
||||||
readline_set_completion_index(mon->rs, strlen(cmdname));
|
readline_set_completion_index(mon->rs, strlen(cmdname));
|
||||||
for (cmd = cmd_table; cmd->name != NULL; cmd++) {
|
for (cmd = cmd_table; cmd->name != NULL; cmd++) {
|
||||||
|
if (!runstate_check(RUN_STATE_PRECONFIG) ||
|
||||||
|
cmd_can_preconfig(cmd)) {
|
||||||
cmd_completion(mon, cmdname, cmd->name);
|
cmd_completion(mon, cmdname, cmd->name);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
/* find the command */
|
/* find the command */
|
||||||
for (cmd = cmd_table; cmd->name != NULL; cmd++) {
|
for (cmd = cmd_table; cmd->name != NULL; cmd++) {
|
||||||
if (compare_cmd(args[0], cmd->name)) {
|
if (compare_cmd(args[0], cmd->name) &&
|
||||||
|
(!runstate_check(RUN_STATE_PRECONFIG) ||
|
||||||
|
cmd_can_preconfig(cmd))) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,8 @@
|
||||||
# }
|
# }
|
||||||
#
|
#
|
||||||
##
|
##
|
||||||
{ 'command': 'query-chardev', 'returns': ['ChardevInfo'] }
|
{ 'command': 'query-chardev', 'returns': ['ChardevInfo'],
|
||||||
|
'allow-preconfig': true }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @ChardevBackendInfo:
|
# @ChardevBackendInfo:
|
||||||
|
|
|
@ -117,7 +117,8 @@
|
||||||
# }
|
# }
|
||||||
#
|
#
|
||||||
##
|
##
|
||||||
{ 'command': 'query-version', 'returns': 'VersionInfo' }
|
{ 'command': 'query-version', 'returns': 'VersionInfo',
|
||||||
|
'allow-preconfig': true }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @CommandInfo:
|
# @CommandInfo:
|
||||||
|
@ -241,7 +242,7 @@
|
||||||
# <- { "return": { "name": "qemu-name" } }
|
# <- { "return": { "name": "qemu-name" } }
|
||||||
#
|
#
|
||||||
##
|
##
|
||||||
{ 'command': 'query-name', 'returns': 'NameInfo' }
|
{ 'command': 'query-name', 'returns': 'NameInfo', 'allow-preconfig': true }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @KvmInfo:
|
# @KvmInfo:
|
||||||
|
@ -301,7 +302,7 @@
|
||||||
# <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
|
# <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
|
||||||
#
|
#
|
||||||
##
|
##
|
||||||
{ 'command': 'query-uuid', 'returns': 'UuidInfo' }
|
{ 'command': 'query-uuid', 'returns': 'UuidInfo', 'allow-preconfig': true }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @EventInfo:
|
# @EventInfo:
|
||||||
|
@ -710,7 +711,8 @@
|
||||||
# }
|
# }
|
||||||
#
|
#
|
||||||
##
|
##
|
||||||
{ 'command': 'query-iothreads', 'returns': ['IOThreadInfo'] }
|
{ 'command': 'query-iothreads', 'returns': ['IOThreadInfo'],
|
||||||
|
'allow-preconfig': true }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @BalloonInfo:
|
# @BalloonInfo:
|
||||||
|
@ -1408,7 +1410,8 @@
|
||||||
##
|
##
|
||||||
{ 'command': 'qom-list',
|
{ 'command': 'qom-list',
|
||||||
'data': { 'path': 'str' },
|
'data': { 'path': 'str' },
|
||||||
'returns': [ 'ObjectPropertyInfo' ] }
|
'returns': [ 'ObjectPropertyInfo' ],
|
||||||
|
'allow-preconfig': true }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @qom-get:
|
# @qom-get:
|
||||||
|
@ -1444,7 +1447,8 @@
|
||||||
##
|
##
|
||||||
{ 'command': 'qom-get',
|
{ 'command': 'qom-get',
|
||||||
'data': { 'path': 'str', 'property': 'str' },
|
'data': { 'path': 'str', 'property': 'str' },
|
||||||
'returns': 'any' }
|
'returns': 'any',
|
||||||
|
'allow-preconfig': true }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @qom-set:
|
# @qom-set:
|
||||||
|
@ -1461,7 +1465,8 @@
|
||||||
# Since: 1.2
|
# Since: 1.2
|
||||||
##
|
##
|
||||||
{ 'command': 'qom-set',
|
{ 'command': 'qom-set',
|
||||||
'data': { 'path': 'str', 'property': 'str', 'value': 'any' } }
|
'data': { 'path': 'str', 'property': 'str', 'value': 'any' },
|
||||||
|
'allow-preconfig': true }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @change:
|
# @change:
|
||||||
|
@ -1543,7 +1548,8 @@
|
||||||
##
|
##
|
||||||
{ 'command': 'qom-list-types',
|
{ 'command': 'qom-list-types',
|
||||||
'data': { '*implements': 'str', '*abstract': 'bool' },
|
'data': { '*implements': 'str', '*abstract': 'bool' },
|
||||||
'returns': [ 'ObjectTypeInfo' ] }
|
'returns': [ 'ObjectTypeInfo' ],
|
||||||
|
'allow-preconfig': true }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @device-list-properties:
|
# @device-list-properties:
|
||||||
|
@ -1581,7 +1587,8 @@
|
||||||
##
|
##
|
||||||
{ 'command': 'qom-list-properties',
|
{ 'command': 'qom-list-properties',
|
||||||
'data': { 'typename': 'str'},
|
'data': { 'typename': 'str'},
|
||||||
'returns': [ 'ObjectPropertyInfo' ] }
|
'returns': [ 'ObjectPropertyInfo' ],
|
||||||
|
'allow-preconfig': true }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @xen-set-global-dirty-log:
|
# @xen-set-global-dirty-log:
|
||||||
|
@ -2902,7 +2909,7 @@
|
||||||
# }
|
# }
|
||||||
#
|
#
|
||||||
##
|
##
|
||||||
{ 'command': 'query-memdev', 'returns': ['Memdev'] }
|
{ 'command': 'query-memdev', 'returns': ['Memdev'], 'allow-preconfig': true }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @PCDIMMDeviceInfo:
|
# @PCDIMMDeviceInfo:
|
||||||
|
|
Loading…
Reference in New Issue