From: Jan Kiszka <jan.kiszka@web.de>
To: Anthony Liguori <aliguori@us.ibm.com>,
qemu-devel <qemu-devel@nongnu.org>
Cc: Anthony PERARD <anthony.perard@citrix.com>
Subject: [Qemu-devel] [PATCH v2 1/2] Generalize -machine command line option
Date: Sun, 22 May 2011 13:00:00 +0200 [thread overview]
Message-ID: <4DD8ECB0.9050803@web.de> (raw)
In-Reply-To: <4DD64E1F.8020603@siemens.com>
From: Jan Kiszka <jan.kiszka@siemens.com>
-machine somehow suggests that it selects the machine, but it doesn't.
Fix that before this command is set in stone.
Actually, -machine should supersede -M and allow to introduce arbitrary
per-machine options to the command line. That will change the internal
realization again, but we will be able to keep the user interface
stable.
CC: Anthony PERARD <anthony.perard@citrix.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
Changes in v2:
- fix regression of -M my factoring out machine_parse and using it for
both old and new command.
qemu-config.c | 5 +++++
qemu-options.hx | 20 +++++++++++++++-----
vl.c | 39 ++++++++++++++++++++++++---------------
3 files changed, 44 insertions(+), 20 deletions(-)
diff --git a/qemu-config.c b/qemu-config.c
index 5d7ffa2..01751b4 100644
--- a/qemu-config.c
+++ b/qemu-config.c
@@ -452,9 +452,14 @@ QemuOptsList qemu_option_rom_opts = {
static QemuOptsList qemu_machine_opts = {
.name = "machine",
+ .implied_opt_name = "type",
.head = QTAILQ_HEAD_INITIALIZER(qemu_machine_opts.head),
.desc = {
{
+ .name = "type",
+ .type = QEMU_OPT_STRING,
+ .help = "emulated machine"
+ }, {
.name = "accel",
.type = QEMU_OPT_STRING,
.help = "accelerator list",
diff --git a/qemu-options.hx b/qemu-options.hx
index 82e085a..0dbc028 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -2033,13 +2033,23 @@ if KVM support is enabled when compiling.
ETEXI
DEF("machine", HAS_ARG, QEMU_OPTION_machine, \
- "-machine accel=accel1[:accel2] use an accelerator (kvm,xen,tcg), default is tcg\n", QEMU_ARCH_ALL)
+ "-machine [type=]name[,prop[=value][,...]]\n"
+ " selects emulated machine (-machine ? for list)\n"
+ " property accel=accel1[:accel2[:...]] selects accelerator\n"
+ " supported accelerators are kvm, xen, tcg (default: tcg)\n",
+ QEMU_ARCH_ALL)
STEXI
-@item -machine accel=@var{accels}
+@item -machine [type=]@var{name}[,prop=@var{value}[,...]]
@findex -machine
-This is use to enable an accelerator, in kvm,xen,tcg.
-By default, it use only tcg. If there a more than one accelerator
-specified, the next one is used if the first don't work.
+Select the emulated machine by @var{name}. Use @code{-machine ?} to list
+available machines. Supported machine properties are:
+@table @option
+@item accel=@var{accels1}[:@var{accels2}[:...]]
+This is used to enable an accelerator. Depending on the target architecture,
+kvm, xen, or tcg can be available. By default, tcg is used. If there is more
+than one accelerator specified, the next one is used if the previous one fails
+to initialize.
+@end table
ETEXI
DEF("xen-domid", HAS_ARG, QEMU_OPTION_xen_domid,
diff --git a/vl.c b/vl.c
index b362871..a346c1e 100644
--- a/vl.c
+++ b/vl.c
@@ -1891,6 +1891,27 @@ static int debugcon_parse(const char *devname)
return 0;
}
+static QEMUMachine *machine_parse(const char *name)
+{
+ QEMUMachine *m, *machine = NULL;
+
+ if (name) {
+ machine = find_machine(name);
+ }
+ if (machine) {
+ return machine;
+ }
+ printf("Supported machines are:\n");
+ for (m = first_machine; m != NULL; m = m->next) {
+ if (m->alias) {
+ printf("%-10s %s (alias of %s)\n", m->alias, m->desc, m->name);
+ }
+ printf("%-10s %s%s\n", m->name, m->desc,
+ m->is_default ? " (default)" : "");
+ }
+ exit(!name || *name != '?');
+}
+
static int tcg_init(void)
{
return 0;
@@ -2144,20 +2165,7 @@ int main(int argc, char **argv, char **envp)
}
switch(popt->index) {
case QEMU_OPTION_M:
- machine = find_machine(optarg);
- if (!machine) {
- QEMUMachine *m;
- printf("Supported machines are:\n");
- for(m = first_machine; m != NULL; m = m->next) {
- if (m->alias)
- printf("%-10s %s (alias of %s)\n",
- m->alias, m->desc, m->name);
- printf("%-10s %s%s\n",
- m->name, m->desc,
- m->is_default ? " (default)" : "");
- }
- exit(*optarg != '?');
- }
+ machine = machine_parse(optarg);
break;
case QEMU_OPTION_cpu:
/* hw initialization will check this */
@@ -2675,11 +2683,12 @@ int main(int argc, char **argv, char **envp)
case QEMU_OPTION_machine:
olist = qemu_find_opts("machine");
qemu_opts_reset(olist);
- opts = qemu_opts_parse(olist, optarg, 0);
+ opts = qemu_opts_parse(olist, optarg, 1);
if (!opts) {
fprintf(stderr, "parse error: %s\n", optarg);
exit(1);
}
+ machine = machine_parse(qemu_opt_get(opts, "type"));
break;
case QEMU_OPTION_usb:
usb_enabled = 1;
--
1.7.1
next prev parent reply other threads:[~2011-05-22 11:00 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-20 11:18 [Qemu-devel] [PATCH 1/2] Generalize -machine command line option Jan Kiszka
2011-05-22 11:00 ` Jan Kiszka [this message]
2011-05-24 16:06 ` [Qemu-devel] [PATCH v2 " Ian Campbell
2011-05-24 16:18 ` Jan Kiszka
2011-05-25 7:03 ` [Qemu-devel] [PATCH v3 " Jan Kiszka
2011-05-25 8:17 ` Ian Campbell
2011-06-07 15:58 ` Jan Kiszka
2011-05-25 8:13 ` [Qemu-devel] [PATCH v2 " Ian Campbell
2011-05-25 8:23 ` Jan Kiszka
2011-05-25 8:34 ` Ian Campbell
2011-05-25 10:54 ` Anthony PERARD
2011-05-26 9:04 ` Ian Campbell
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=4DD8ECB0.9050803@web.de \
--to=jan.kiszka@web.de \
--cc=aliguori@us.ibm.com \
--cc=anthony.perard@citrix.com \
--cc=qemu-devel@nongnu.org \
/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).