Fix the -accel parameter and the documentation for 'hax'

Since 'hax' is a possible accelerator nowadays, too, the '-accel'
option should support it and we should mention this accelerator
in the documentation, too.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-Id: <1493875481-16388-1-git-send-email-thuth@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Thomas Huth 2017-05-04 07:24:41 +02:00 committed by Paolo Bonzini
parent 6796b4008b
commit bde4d9205e
2 changed files with 18 additions and 23 deletions

View File

@ -31,7 +31,7 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \
"-machine [type=]name[,prop[=value][,...]]\n" "-machine [type=]name[,prop[=value][,...]]\n"
" selects emulated machine ('-machine help' for list)\n" " selects emulated machine ('-machine help' for list)\n"
" property accel=accel1[:accel2[:...]] selects accelerator\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" " kernel_irqchip=on|off|split controls accelerated irqchip support (default=off)\n"
" vmport=on|off|auto controls emulation of vmport (default: auto)\n" " vmport=on|off|auto controls emulation of vmport (default: auto)\n"
" kvm_shadow_mem=size of KVM shadow MMU in bytes\n" " kvm_shadow_mem=size of KVM shadow MMU in bytes\n"
@ -52,9 +52,9 @@ available machines. Supported machine properties are:
@table @option @table @option
@item accel=@var{accels1}[:@var{accels2}[:...]] @item accel=@var{accels1}[:@var{accels2}[:...]]
This is used to enable an accelerator. Depending on the target architecture, 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 kvm, xen, hax or tcg can be available. By default, tcg is used. If there is
than one accelerator specified, the next one is used if the previous one fails more than one accelerator specified, the next one is used if the previous one
to initialize. fails to initialize.
@item kernel_irqchip=on|off @item kernel_irqchip=on|off
Controls in-kernel irqchip support for the chosen accelerator when available. Controls in-kernel irqchip support for the chosen accelerator when available.
@item gfx_passthru=on|off @item gfx_passthru=on|off
@ -97,15 +97,15 @@ ETEXI
DEF("accel", HAS_ARG, QEMU_OPTION_accel, DEF("accel", HAS_ARG, QEMU_OPTION_accel,
"-accel [accel=]accelerator[,thread=single|multi]\n" "-accel [accel=]accelerator[,thread=single|multi]\n"
" select accelerator ('-accel help for list')\n" " select accelerator (kvm, xen, hax or tcg; use 'help' for a list)\n"
" thread=single|multi (enable multi-threaded TCG)", QEMU_ARCH_ALL) " thread=single|multi (enable multi-threaded TCG)", QEMU_ARCH_ALL)
STEXI STEXI
@item -accel @var{name}[,prop=@var{value}[,...]] @item -accel @var{name}[,prop=@var{value}[,...]]
@findex -accel @findex -accel
This is used to enable an accelerator. Depending on the target architecture, 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 kvm, xen, hax or tcg can be available. By default, tcg is used. If there is
than one accelerator specified, the next one is used if the previous one fails more than one accelerator specified, the next one is used if the previous one
to initialize. fails to initialize.
@table @option @table @option
@item thread=single|multi @item thread=single|multi
Controls number of TCG threads. When the TCG is multi-threaded there will be one Controls number of TCG threads. When the TCG is multi-threaded there will be one

23
vl.c
View File

@ -3727,26 +3727,21 @@ int main(int argc, char **argv, char **envp)
qdev_prop_register_global(&kvm_pit_lost_tick_policy); qdev_prop_register_global(&kvm_pit_lost_tick_policy);
break; break;
} }
case QEMU_OPTION_accel: case QEMU_OPTION_accel: {
QemuOpts *accel_opts;
accel_opts = qemu_opts_parse_noisily(qemu_find_opts("accel"), accel_opts = qemu_opts_parse_noisily(qemu_find_opts("accel"),
optarg, true); optarg, true);
optarg = qemu_opt_get(accel_opts, "accel"); optarg = qemu_opt_get(accel_opts, "accel");
if (!optarg || is_help_option(optarg)) {
olist = qemu_find_opts("machine"); error_printf("Possible accelerators: kvm, xen, hax, tcg\n");
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");
exit(1); exit(1);
} }
accel_opts = qemu_opts_create(qemu_find_opts("machine"), NULL,
false, &error_abort);
qemu_opt_set(accel_opts, "accel", optarg, &error_abort);
break; break;
}
case QEMU_OPTION_usb: case QEMU_OPTION_usb:
olist = qemu_find_opts("machine"); olist = qemu_find_opts("machine");
qemu_opts_parse_noisily(olist, "usb=on", false); qemu_opts_parse_noisily(olist, "usb=on", false);