* [Qemu-devel] [PATCH] Fix the -accel parameter and the documentation for 'hax'
@ 2017-05-02 9:52 Thomas Huth
2017-05-02 12:58 ` Paolo Bonzini
0 siblings, 1 reply; 3+ messages in thread
From: Thomas Huth @ 2017-05-02 9:52 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, Vincent Palatin
Since 'hax' is a possible accelerator nowadays, too, the '-accel'
option should support it and we should mention it in the documentation,
too.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
qemu-options.hx | 8 ++++----
vl.c | 24 ++++++++++--------------
2 files changed, 14 insertions(+), 18 deletions(-)
diff --git a/qemu-options.hx b/qemu-options.hx
index 787b9c3..c7b1d2d 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -31,7 +31,7 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \
"-machine [type=]name[,prop[=value][,...]]\n"
" selects emulated machine ('-machine help' for list)\n"
" property accel=accel1[:accel2[:...]] selects accelerator\n"
- " supported accelerators are kvm, xen, tcg (default: tcg)\n"
+ " supported accelerators are kvm, xen, hax or tcg (default: tcg)\n"
" kernel_irqchip=on|off|split controls accelerated irqchip support (default=off)\n"
" vmport=on|off|auto controls emulation of vmport (default: auto)\n"
" kvm_shadow_mem=size of KVM shadow MMU in bytes\n"
@@ -52,9 +52,9 @@ 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.
+kvm, xen, hax 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.
@item kernel_irqchip=on|off
Controls in-kernel irqchip support for the chosen accelerator when available.
@item gfx_passthru=on|off
diff --git a/vl.c b/vl.c
index f46e070..d5e88fb 100644
--- a/vl.c
+++ b/vl.c
@@ -3725,26 +3725,22 @@ int main(int argc, char **argv, char **envp)
qdev_prop_register_global(&kvm_pit_lost_tick_policy);
break;
}
- case QEMU_OPTION_accel:
+ case QEMU_OPTION_accel: {
+ char *mstr;
+
accel_opts = qemu_opts_parse_noisily(qemu_find_opts("accel"),
optarg, true);
optarg = qemu_opt_get(accel_opts, "accel");
-
- olist = qemu_find_opts("machine");
- if (strcmp("kvm", optarg) == 0) {
- qemu_opts_parse_noisily(olist, "accel=kvm", false);
- } else if (strcmp("xen", optarg) == 0) {
- qemu_opts_parse_noisily(olist, "accel=xen", false);
- } else if (strcmp("tcg", optarg) == 0) {
- qemu_opts_parse_noisily(olist, "accel=tcg", false);
- } else {
- if (!is_help_option(optarg)) {
- error_printf("Unknown accelerator: %s", optarg);
- }
- error_printf("Supported accelerators: kvm, xen, tcg\n");
+ if (is_help_option(optarg)) {
+ error_printf("Possible accelerators: kvm, xen, hax, tcg\n");
exit(1);
}
+ mstr = g_strdup_printf("accel=%s", optarg);
+ olist = qemu_find_opts("machine");
+ qemu_opts_parse_noisily(olist, mstr, false);
+ g_free(mstr);
break;
+ }
case QEMU_OPTION_usb:
olist = qemu_find_opts("machine");
qemu_opts_parse_noisily(olist, "usb=on", false);
--
1.8.3.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PATCH] Fix the -accel parameter and the documentation for 'hax'
2017-05-02 9:52 [Qemu-devel] [PATCH] Fix the -accel parameter and the documentation for 'hax' Thomas Huth
@ 2017-05-02 12:58 ` Paolo Bonzini
2017-05-02 13:45 ` Eduardo Habkost
0 siblings, 1 reply; 3+ messages in thread
From: Paolo Bonzini @ 2017-05-02 12:58 UTC (permalink / raw)
To: Thomas Huth, qemu-devel; +Cc: Vincent Palatin, Eduardo Habkost
On 02/05/2017 11:52, Thomas Huth wrote:
> Since 'hax' is a possible accelerator nowadays, too, the '-accel'
> option should support it and we should mention it in the documentation,
> too.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> qemu-options.hx | 8 ++++----
> vl.c | 24 ++++++++++--------------
> 2 files changed, 14 insertions(+), 18 deletions(-)
>
> diff --git a/qemu-options.hx b/qemu-options.hx
> index 787b9c3..c7b1d2d 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -31,7 +31,7 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \
> "-machine [type=]name[,prop[=value][,...]]\n"
> " selects emulated machine ('-machine help' for list)\n"
> " property accel=accel1[:accel2[:...]] selects accelerator\n"
> - " supported accelerators are kvm, xen, tcg (default: tcg)\n"
> + " supported accelerators are kvm, xen, hax or tcg (default: tcg)\n"
> " kernel_irqchip=on|off|split controls accelerated irqchip support (default=off)\n"
> " vmport=on|off|auto controls emulation of vmport (default: auto)\n"
> " kvm_shadow_mem=size of KVM shadow MMU in bytes\n"
> @@ -52,9 +52,9 @@ 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.
> +kvm, xen, hax 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.
> @item kernel_irqchip=on|off
> Controls in-kernel irqchip support for the chosen accelerator when available.
> @item gfx_passthru=on|off
> diff --git a/vl.c b/vl.c
> index f46e070..d5e88fb 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -3725,26 +3725,22 @@ int main(int argc, char **argv, char **envp)
> qdev_prop_register_global(&kvm_pit_lost_tick_policy);
> break;
> }
> - case QEMU_OPTION_accel:
> + case QEMU_OPTION_accel: {
> + char *mstr;
> +
> accel_opts = qemu_opts_parse_noisily(qemu_find_opts("accel"),
> optarg, true);
> optarg = qemu_opt_get(accel_opts, "accel");
> -
> - olist = qemu_find_opts("machine");
> - if (strcmp("kvm", optarg) == 0) {
> - qemu_opts_parse_noisily(olist, "accel=kvm", false);
> - } else if (strcmp("xen", optarg) == 0) {
> - qemu_opts_parse_noisily(olist, "accel=xen", false);
> - } else if (strcmp("tcg", optarg) == 0) {
> - qemu_opts_parse_noisily(olist, "accel=tcg", false);
> - } else {
> - if (!is_help_option(optarg)) {
> - error_printf("Unknown accelerator: %s", optarg);
> - }
> - error_printf("Supported accelerators: kvm, xen, tcg\n");
> + if (is_help_option(optarg)) {
> + error_printf("Possible accelerators: kvm, xen, hax, tcg\n");
> exit(1);
> }
> + mstr = g_strdup_printf("accel=%s", optarg);
> + olist = qemu_find_opts("machine");
> + qemu_opts_parse_noisily(olist, mstr, false);
Thanks for the report. I think this has bad side effects when one
specifies an invalid accelerator such as -accel tcg,,usb=on. Eduardo
has more plans for -accel, I think.
Paolo
> + g_free(mstr);
> break;
> + }
> case QEMU_OPTION_usb:
> olist = qemu_find_opts("machine");
> qemu_opts_parse_noisily(olist, "usb=on", false);
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PATCH] Fix the -accel parameter and the documentation for 'hax'
2017-05-02 12:58 ` Paolo Bonzini
@ 2017-05-02 13:45 ` Eduardo Habkost
0 siblings, 0 replies; 3+ messages in thread
From: Eduardo Habkost @ 2017-05-02 13:45 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: Thomas Huth, qemu-devel, Vincent Palatin
On Tue, May 02, 2017 at 02:58:35PM +0200, Paolo Bonzini wrote:
>
>
> On 02/05/2017 11:52, Thomas Huth wrote:
> > Since 'hax' is a possible accelerator nowadays, too, the '-accel'
> > option should support it and we should mention it in the documentation,
> > too.
> >
> > Signed-off-by: Thomas Huth <thuth@redhat.com>
> > ---
> > qemu-options.hx | 8 ++++----
> > vl.c | 24 ++++++++++--------------
> > 2 files changed, 14 insertions(+), 18 deletions(-)
> >
> > diff --git a/qemu-options.hx b/qemu-options.hx
> > index 787b9c3..c7b1d2d 100644
> > --- a/qemu-options.hx
> > +++ b/qemu-options.hx
> > @@ -31,7 +31,7 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \
> > "-machine [type=]name[,prop[=value][,...]]\n"
> > " selects emulated machine ('-machine help' for list)\n"
> > " property accel=accel1[:accel2[:...]] selects accelerator\n"
> > - " supported accelerators are kvm, xen, tcg (default: tcg)\n"
> > + " supported accelerators are kvm, xen, hax or tcg (default: tcg)\n"
> > " kernel_irqchip=on|off|split controls accelerated irqchip support (default=off)\n"
> > " vmport=on|off|auto controls emulation of vmport (default: auto)\n"
> > " kvm_shadow_mem=size of KVM shadow MMU in bytes\n"
> > @@ -52,9 +52,9 @@ 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.
> > +kvm, xen, hax 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.
> > @item kernel_irqchip=on|off
> > Controls in-kernel irqchip support for the chosen accelerator when available.
> > @item gfx_passthru=on|off
> > diff --git a/vl.c b/vl.c
> > index f46e070..d5e88fb 100644
> > --- a/vl.c
> > +++ b/vl.c
> > @@ -3725,26 +3725,22 @@ int main(int argc, char **argv, char **envp)
> > qdev_prop_register_global(&kvm_pit_lost_tick_policy);
> > break;
> > }
> > - case QEMU_OPTION_accel:
> > + case QEMU_OPTION_accel: {
> > + char *mstr;
> > +
> > accel_opts = qemu_opts_parse_noisily(qemu_find_opts("accel"),
> > optarg, true);
> > optarg = qemu_opt_get(accel_opts, "accel");
> > -
> > - olist = qemu_find_opts("machine");
> > - if (strcmp("kvm", optarg) == 0) {
> > - qemu_opts_parse_noisily(olist, "accel=kvm", false);
> > - } else if (strcmp("xen", optarg) == 0) {
> > - qemu_opts_parse_noisily(olist, "accel=xen", false);
> > - } else if (strcmp("tcg", optarg) == 0) {
> > - qemu_opts_parse_noisily(olist, "accel=tcg", false);
> > - } else {
Getting rid of this hardcoded list is welcome.
> > - if (!is_help_option(optarg)) {
> > - error_printf("Unknown accelerator: %s", optarg);
> > - }
> > - error_printf("Supported accelerators: kvm, xen, tcg\n");
> > + if (is_help_option(optarg)) {
> > + error_printf("Possible accelerators: kvm, xen, hax, tcg\n");
This should be replaced by object_class_get_list()- or
object_class_for_each()-based loop, so we don't need to maintain
the list manually. But that's for a follow-up patch.
> > exit(1);
> > }
> > + mstr = g_strdup_printf("accel=%s", optarg);
> > + olist = qemu_find_opts("machine");
> > + qemu_opts_parse_noisily(olist, mstr, false);
>
> Thanks for the report. I think this has bad side effects when one
> specifies an invalid accelerator such as -accel tcg,,usb=on. Eduardo
> has more plans for -accel, I think.
We can use qemu_opt_set() here to avoid this problem.
I wasn't even aware that we had a new -accel option. Thanks for
CCing me. I believe -accel should be mapped to
"-object ...-accel" eventually, but that's for the future.
>
> Paolo
>
> > + g_free(mstr);
> > break;
> > + }
> > case QEMU_OPTION_usb:
> > olist = qemu_find_opts("machine");
> > qemu_opts_parse_noisily(olist, "usb=on", false);
> >
--
Eduardo
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-05-02 13:45 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-05-02 9:52 [Qemu-devel] [PATCH] Fix the -accel parameter and the documentation for 'hax' Thomas Huth
2017-05-02 12:58 ` Paolo Bonzini
2017-05-02 13:45 ` Eduardo Habkost
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).