- some configure updates (HAX/NetBSD, remove "wav", -Waddress-of-packed-member)

- remove deprecated options
 - some trace and error cleanup
 - typo fixes
 -----BEGIN PGP SIGNATURE-----
 
 iQIcBAABAgAGBQJcZUcaAAoJEPMMOL0/L748qYwP/0UBn4AzGXGmdiwYivVMxMN7
 I/wZWYiiZia9IvEb+g4BH+af16bz6W1V/P0tzscy5y3A6UbOY2v6mDCcma69CzOR
 4AYAKhxuVn3KwEeX5Mbp3ZO/REGBWt8KgGtD59gxauZ9tkHaIaHmgbOna9SJ++pR
 huWZURwIWCOdk+vp7a3rfElgMGsI0dSarh0jTcPJdoIZakcUXysBj/iTDOgaKWOh
 Z/ViRPvIAD2S1AzRFThDjt2vEeJsrP4Y2bvvAaBwxMSQEWFz5svQ2sNbP1y3gxuy
 5Z6C/How3uNX5Miwb0UsrEZeOjym099GyJ4p3zhI8SH1VS2u9D8SEJG1JKhhN2Oj
 s0GrGOOlRosYjJ6fioe1F65Y80bCokLaONykQFi7Loww0QJc4QRLqSNg6phHp+2j
 nXpkgKFd6HQkvXfCiRKFkUAAAqPKaXJmCIGmZOZeDaX87j5sD16XWtTWlKVCx4zO
 oNiTSRIxU9aIQ3BpWiqz3hwKT2ZpR7Aqy94aX+Yrk0SkVSQzA4deAK1gINA8q2e/
 SxeflY844yfLgfgN+pzE2nB2YHANS7vDBWlNJT720lik+bqrlnHhcbKeGlNhxHhX
 8Da3XqExWeakt7MNPh9lAPz82DwV0IdjDixsWRrOZWaP5vePkSdvJ3VCMC4weNnt
 nhhGfegUwABkpYZUZ41h
 =xYS2
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/vivier2/tags/trivial-branch-pull-request' into staging

- some configure updates (HAX/NetBSD, remove "wav", -Waddress-of-packed-member)
- remove deprecated options
- some trace and error cleanup
- typo fixes

# gpg: Signature made Thu 14 Feb 2019 10:46:50 GMT
# gpg:                using RSA key F30C38BD3F2FBE3C
# gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>" [full]
# gpg:                 aka "Laurent Vivier <laurent@vivier.eu>" [full]
# gpg:                 aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>" [full]
# Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F  5173 F30C 38BD 3F2F BE3C

* remotes/vivier2/tags/trivial-branch-pull-request:
  configure: improve usbfs check
  hw/sparc64: Explicitly set default_display = "std"
  hw/dma/i8257: Use qemu_log_mask(UNIMP) instead of fprintf
  wavcapture: Convert to error_report
  kvm: Add kvm_set_ioeventfd* traces
  HMP: Prepend errors with 'Error:'
  pckbd: Convert DPRINTF->trace
  configure: Make -Waddress-of-packed-member warnings be errors
  configure: Add HAX support in NetBSD
  configure: fix qemu-img name
  configure: remove handling of "wav" audio driver
  qemu-options: Remove deprecated option -clock
  qemu-deprecated: Remove -virtioconsole and -no-frame for good
  qapi: Fix qcow2 encryption doc typo

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2019-02-14 17:42:25 +00:00
commit 0d3e41d5ef
13 changed files with 61 additions and 72 deletions

View File

@ -657,6 +657,8 @@ static int kvm_set_ioeventfd_mmio(int fd, hwaddr addr, uint32_t val,
.fd = fd, .fd = fd,
}; };
trace_kvm_set_ioeventfd_mmio(fd, (uint64_t)addr, val, assign, size,
datamatch);
if (!kvm_enabled()) { if (!kvm_enabled()) {
return -ENOSYS; return -ENOSYS;
} }
@ -688,6 +690,7 @@ static int kvm_set_ioeventfd_pio(int fd, uint16_t addr, uint16_t val,
.fd = fd, .fd = fd,
}; };
int r; int r;
trace_kvm_set_ioeventfd_pio(fd, addr, val, assign, size, datamatch);
if (!kvm_enabled()) { if (!kvm_enabled()) {
return -ENOSYS; return -ENOSYS;
} }

View File

@ -12,5 +12,7 @@ kvm_irqchip_commit_routes(void) ""
kvm_irqchip_add_msi_route(char *name, int vector, int virq) "dev %s vector %d virq %d" kvm_irqchip_add_msi_route(char *name, int vector, int virq) "dev %s vector %d virq %d"
kvm_irqchip_update_msi_route(int virq) "Updating MSI route virq=%d" kvm_irqchip_update_msi_route(int virq) "Updating MSI route virq=%d"
kvm_irqchip_release_virq(int virq) "virq %d" kvm_irqchip_release_virq(int virq) "virq %d"
kvm_set_ioeventfd_mmio(int fd, uint64_t addr, uint32_t val, bool assign, uint32_t size, bool datamatch) "fd: %d @0x%" PRIx64 " val=0x%x assign: %d size: %d match: %d"
kvm_set_ioeventfd_pio(int fd, uint16_t addr, uint32_t val, bool assign, uint32_t size, bool datamatch) "fd: %d @0x%x val=0x%x assign: %d size: %d match: %d"
kvm_set_user_memory(uint32_t slot, uint32_t flags, uint64_t guest_phys_addr, uint64_t memory_size, uint64_t userspace_addr, int ret) "Slot#%d flags=0x%x gpa=0x%"PRIx64 " size=0x%"PRIx64 " ua=0x%"PRIx64 " ret=%d" kvm_set_user_memory(uint32_t slot, uint32_t flags, uint64_t guest_phys_addr, uint64_t memory_size, uint64_t userspace_addr, int ret) "Slot#%d flags=0x%x gpa=0x%"PRIx64 " size=0x%"PRIx64 " ua=0x%"PRIx64 " ret=%d"

View File

@ -38,30 +38,29 @@ static void wav_destroy (void *opaque)
uint8_t dlen[4]; uint8_t dlen[4];
uint32_t datalen = wav->bytes; uint32_t datalen = wav->bytes;
uint32_t rifflen = datalen + 36; uint32_t rifflen = datalen + 36;
Monitor *mon = cur_mon;
if (wav->f) { if (wav->f) {
le_store (rlen, rifflen, 4); le_store (rlen, rifflen, 4);
le_store (dlen, datalen, 4); le_store (dlen, datalen, 4);
if (fseek (wav->f, 4, SEEK_SET)) { if (fseek (wav->f, 4, SEEK_SET)) {
monitor_printf (mon, "wav_destroy: rlen fseek failed\nReason: %s\n", error_report("wav_destroy: rlen fseek failed: %s",
strerror (errno)); strerror(errno));
goto doclose; goto doclose;
} }
if (fwrite (rlen, 4, 1, wav->f) != 1) { if (fwrite (rlen, 4, 1, wav->f) != 1) {
monitor_printf (mon, "wav_destroy: rlen fwrite failed\nReason %s\n", error_report("wav_destroy: rlen fwrite failed: %s",
strerror (errno)); strerror(errno));
goto doclose; goto doclose;
} }
if (fseek (wav->f, 32, SEEK_CUR)) { if (fseek (wav->f, 32, SEEK_CUR)) {
monitor_printf (mon, "wav_destroy: dlen fseek failed\nReason %s\n", error_report("wav_destroy: dlen fseek failed: %s",
strerror (errno)); strerror(errno));
goto doclose; goto doclose;
} }
if (fwrite (dlen, 1, 4, wav->f) != 4) { if (fwrite (dlen, 1, 4, wav->f) != 4) {
monitor_printf (mon, "wav_destroy: dlen fwrite failed\nReason %s\n", error_report("wav_destroy: dlen fwrite failed: %s",
strerror (errno)); strerror(errno));
goto doclose; goto doclose;
} }
doclose: doclose:
@ -78,8 +77,7 @@ static void wav_capture (void *opaque, void *buf, int size)
WAVState *wav = opaque; WAVState *wav = opaque;
if (fwrite (buf, size, 1, wav->f) != 1) { if (fwrite (buf, size, 1, wav->f) != 1) {
monitor_printf (cur_mon, "wav_capture: fwrite error\nReason: %s", error_report("wav_capture: fwrite error: %s", strerror(errno));
strerror (errno));
} }
wav->bytes += size; wav->bytes += size;
} }
@ -110,7 +108,6 @@ static struct capture_ops wav_capture_ops = {
int wav_start_capture (CaptureState *s, const char *path, int freq, int wav_start_capture (CaptureState *s, const char *path, int freq,
int bits, int nchannels) int bits, int nchannels)
{ {
Monitor *mon = cur_mon;
WAVState *wav; WAVState *wav;
uint8_t hdr[] = { uint8_t hdr[] = {
0x52, 0x49, 0x46, 0x46, 0x00, 0x00, 0x00, 0x00, 0x57, 0x41, 0x56, 0x52, 0x49, 0x46, 0x46, 0x00, 0x00, 0x00, 0x00, 0x57, 0x41, 0x56,
@ -124,13 +121,13 @@ int wav_start_capture (CaptureState *s, const char *path, int freq,
CaptureVoiceOut *cap; CaptureVoiceOut *cap;
if (bits != 8 && bits != 16) { if (bits != 8 && bits != 16) {
monitor_printf (mon, "incorrect bit count %d, must be 8 or 16\n", bits); error_report("incorrect bit count %d, must be 8 or 16", bits);
return -1; return -1;
} }
if (nchannels != 1 && nchannels != 2) { if (nchannels != 1 && nchannels != 2) {
monitor_printf (mon, "incorrect channel count %d, must be 1 or 2\n", error_report("incorrect channel count %d, must be 1 or 2",
nchannels); nchannels);
return -1; return -1;
} }
@ -158,8 +155,8 @@ int wav_start_capture (CaptureState *s, const char *path, int freq,
wav->f = fopen (path, "wb"); wav->f = fopen (path, "wb");
if (!wav->f) { if (!wav->f) {
monitor_printf (mon, "Failed to open wave file `%s'\nReason: %s\n", error_report("Failed to open wave file `%s': %s",
path, strerror (errno)); path, strerror(errno));
g_free (wav); g_free (wav);
return -1; return -1;
} }
@ -170,14 +167,13 @@ int wav_start_capture (CaptureState *s, const char *path, int freq,
wav->freq = freq; wav->freq = freq;
if (fwrite (hdr, sizeof (hdr), 1, wav->f) != 1) { if (fwrite (hdr, sizeof (hdr), 1, wav->f) != 1) {
monitor_printf (mon, "Failed to write header\nReason: %s\n", error_report("Failed to write header: %s", strerror(errno));
strerror (errno));
goto error_free; goto error_free;
} }
cap = AUD_add_capture (&as, &ops, wav); cap = AUD_add_capture (&as, &ops, wav);
if (!cap) { if (!cap) {
monitor_printf (mon, "Failed to add audio capture\n"); error_report("Failed to add audio capture");
goto error_free; goto error_free;
} }
@ -189,8 +185,7 @@ int wav_start_capture (CaptureState *s, const char *path, int freq,
error_free: error_free:
g_free (wav->path); g_free (wav->path);
if (fclose (wav->f)) { if (fclose (wav->f)) {
monitor_printf (mon, "Failed to close wave file\nReason: %s\n", error_report("Failed to close wave file: %s", strerror(errno));
strerror (errno));
} }
g_free (wav); g_free (wav);
return -1; return -1;

27
configure vendored
View File

@ -817,6 +817,7 @@ DragonFly)
;; ;;
NetBSD) NetBSD)
bsd="yes" bsd="yes"
hax="yes"
make="${MAKE-gmake}" make="${MAKE-gmake}"
audio_drv_list="oss try-sdl" audio_drv_list="oss try-sdl"
audio_possible_drivers="oss sdl" audio_possible_drivers="oss sdl"
@ -1768,7 +1769,7 @@ disabled with --disable-FEATURE, default is enabled if available:
virglrenderer virgl rendering support virglrenderer virgl rendering support
xfsctl xfsctl support xfsctl xfsctl support
qom-cast-debug cast debugging support qom-cast-debug cast debugging support
tools build qemu-io, qemu-nbd and qemu-image tools tools build qemu-io, qemu-nbd and qemu-img tools
vxhs Veritas HyperScale vDisk backend support vxhs Veritas HyperScale vDisk backend support
bochs bochs image format support bochs bochs image format support
cloop cloop image format support cloop cloop image format support
@ -1881,7 +1882,6 @@ gcc_flags="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
gcc_flags="-Wendif-labels -Wno-shift-negative-value $gcc_flags" gcc_flags="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
gcc_flags="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags" gcc_flags="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags"
gcc_flags="-Wno-string-plus-int $gcc_flags" gcc_flags="-Wno-string-plus-int $gcc_flags"
gcc_flags="-Wno-error=address-of-packed-member $gcc_flags"
# Note that we do not add -Werror to gcc_flags here, because that would # Note that we do not add -Werror to gcc_flags here, because that would
# enable it for all configure tests. If a configure test failed due # enable it for all configure tests. If a configure test failed due
# to -Werror this would just silently disable some features, # to -Werror this would just silently disable some features,
@ -3350,10 +3350,6 @@ for drv in $audio_drv_list; do
oss_libs="$oss_lib" oss_libs="$oss_lib"
;; ;;
wav)
# XXX: Probes for CoreAudio, DirectSound
;;
*) *)
echo "$audio_possible_drivers" | grep -q "\<$drv\>" || { echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
error_exit "Unknown driver '$drv' selected" \ error_exit "Unknown driver '$drv' selected" \
@ -4266,10 +4262,25 @@ fi
# check for usbfs # check for usbfs
have_usbfs=no have_usbfs=no
if test "$linux_user" = "yes"; then if test "$linux_user" = "yes"; then
if check_include linux/usbdevice_fs.h; then cat > $TMPC << EOF
#include <linux/usbdevice_fs.h>
#ifndef USBDEVFS_GET_CAPABILITIES
#error "USBDEVFS_GET_CAPABILITIES undefined"
#endif
#ifndef USBDEVFS_DISCONNECT_CLAIM
#error "USBDEVFS_DISCONNECT_CLAIM undefined"
#endif
int main(void)
{
return 0;
}
EOF
if compile_prog "" ""; then
have_usbfs=yes have_usbfs=yes
fi fi
have_usbfs=yes
fi fi
# check for fallocate # check for fallocate

2
hmp.c
View File

@ -62,7 +62,7 @@ static void hmp_handle_error(Monitor *mon, Error **errp)
{ {
assert(errp); assert(errp);
if (*errp) { if (*errp) {
error_report_err(*errp); error_reportf_err(*errp, "Error: ");
} }
} }

View File

@ -26,6 +26,7 @@
#include "hw/isa/isa.h" #include "hw/isa/isa.h"
#include "hw/dma/i8257.h" #include "hw/dma/i8257.h"
#include "qemu/main-loop.h" #include "qemu/main-loop.h"
#include "qemu/log.h"
#include "trace.h" #include "trace.h"
#define I8257(obj) \ #define I8257(obj) \
@ -185,7 +186,8 @@ static void i8257_write_cont(void *opaque, hwaddr nport, uint64_t data,
switch (iport) { switch (iport) {
case 0x00: /* command */ case 0x00: /* command */
if ((data != 0) && (data & CMD_NOT_SUPPORTED)) { if ((data != 0) && (data & CMD_NOT_SUPPORTED)) {
dolog("command %"PRIx64" not supported\n", data); qemu_log_mask(LOG_UNIMP, "%s: cmd 0x%02"PRIx64" not supported\n",
__func__, data);
return; return;
} }
d->command = data; d->command = data;

View File

@ -30,14 +30,7 @@
#include "hw/input/i8042.h" #include "hw/input/i8042.h"
#include "sysemu/sysemu.h" #include "sysemu/sysemu.h"
/* debug PC keyboard */ #include "trace.h"
//#define DEBUG_KBD
#ifdef DEBUG_KBD
#define DPRINTF(fmt, ...) \
do { printf("KBD: " fmt , ## __VA_ARGS__); } while (0)
#else
#define DPRINTF(fmt, ...)
#endif
/* Keyboard Controller Commands */ /* Keyboard Controller Commands */
#define KBD_CCMD_READ_MODE 0x20 /* Read mode bits */ #define KBD_CCMD_READ_MODE 0x20 /* Read mode bits */
@ -210,7 +203,7 @@ static uint64_t kbd_read_status(void *opaque, hwaddr addr,
KBDState *s = opaque; KBDState *s = opaque;
int val; int val;
val = s->status; val = s->status;
DPRINTF("kbd: read status=0x%02x\n", val); trace_pckbd_kbd_read_status(val);
return val; return val;
} }
@ -224,7 +217,7 @@ static void kbd_queue(KBDState *s, int b, int aux)
static void outport_write(KBDState *s, uint32_t val) static void outport_write(KBDState *s, uint32_t val)
{ {
DPRINTF("kbd: write outport=0x%02x\n", val); trace_pckbd_outport_write(val);
s->outport = val; s->outport = val;
qemu_set_irq(s->a20_out, (val >> 1) & 1); qemu_set_irq(s->a20_out, (val >> 1) & 1);
if (!(val & 1)) { if (!(val & 1)) {
@ -237,7 +230,7 @@ static void kbd_write_command(void *opaque, hwaddr addr,
{ {
KBDState *s = opaque; KBDState *s = opaque;
DPRINTF("kbd: write cmd=0x%02" PRIx64 "\n", val); trace_pckbd_kbd_write_command(val);
/* Bits 3-0 of the output port P2 of the keyboard controller may be pulsed /* Bits 3-0 of the output port P2 of the keyboard controller may be pulsed
* low for approximately 6 micro seconds. Bits 3-0 of the KBD_CCMD_PULSE * low for approximately 6 micro seconds. Bits 3-0 of the KBD_CCMD_PULSE
@ -326,7 +319,7 @@ static uint64_t kbd_read_data(void *opaque, hwaddr addr,
else else
val = ps2_read_data(s->kbd); val = ps2_read_data(s->kbd);
DPRINTF("kbd: read data=0x%02x\n", val); trace_pckbd_kbd_read_data(val);
return val; return val;
} }
@ -335,7 +328,7 @@ static void kbd_write_data(void *opaque, hwaddr addr,
{ {
KBDState *s = opaque; KBDState *s = opaque;
DPRINTF("kbd: write data=0x%02" PRIx64 "\n", val); trace_pckbd_kbd_write_data(val);
switch(s->write_cmd) { switch(s->write_cmd) {
case 0: case 0:

View File

@ -14,6 +14,13 @@ adb_mouse_readreg(int reg, uint8_t val0, uint8_t val1) "reg %d obuf[0] 0x%2.2x o
adb_mouse_request_change_addr(int devaddr) "change addr to 0x%x" adb_mouse_request_change_addr(int devaddr) "change addr to 0x%x"
adb_mouse_request_change_addr_and_handler(int devaddr, int handler) "change addr and handler to 0x%x, 0x%x" adb_mouse_request_change_addr_and_handler(int devaddr, int handler) "change addr and handler to 0x%x, 0x%x"
# hw/input/pckbd.c
pckbd_kbd_read_data(uint32_t val) "0x%02x"
pckbd_kbd_read_status(int status) "0x%02x"
pckbd_outport_write(uint32_t val) "0x%02x"
pckbd_kbd_write_command(uint64_t val) "0x%02"PRIx64
pckbd_kbd_write_data(uint64_t val) "0x%02"PRIx64
# hw/input/ps2.c # hw/input/ps2.c
ps2_put_keycode(void *opaque, int keycode) "%p keycode 0x%02x" ps2_put_keycode(void *opaque, int keycode) "%p keycode 0x%02x"
ps2_keyboard_event(void *opaque, int qcode, int down, unsigned int modifier, unsigned int modifiers) "%p qcode %d down %d modifier 0x%x modifiers 0x%x" ps2_keyboard_event(void *opaque, int qcode, int down, unsigned int modifier, unsigned int modifiers) "%p qcode %d down %d modifier 0x%x modifiers 0x%x"

View File

@ -797,6 +797,7 @@ static void sun4u_class_init(ObjectClass *oc, void *data)
mc->default_boot_order = "c"; mc->default_boot_order = "c";
mc->default_cpu_type = SPARC_CPU_TYPE_NAME("TI-UltraSparc-IIi"); mc->default_cpu_type = SPARC_CPU_TYPE_NAME("TI-UltraSparc-IIi");
mc->ignore_boot_device_suffixes = true; mc->ignore_boot_device_suffixes = true;
mc->default_display = "std";
fwc->get_dev_path = sun4u_fw_dev_path; fwc->get_dev_path = sun4u_fw_dev_path;
} }
@ -820,6 +821,7 @@ static void sun4v_class_init(ObjectClass *oc, void *data)
mc->max_cpus = 1; /* XXX for now */ mc->max_cpus = 1; /* XXX for now */
mc->default_boot_order = "c"; mc->default_boot_order = "c";
mc->default_cpu_type = SPARC_CPU_TYPE_NAME("Sun-UltraSparc-T1"); mc->default_cpu_type = SPARC_CPU_TYPE_NAME("Sun-UltraSparc-T1");
mc->default_display = "std";
} }
static const TypeInfo sun4v_type = { static const TypeInfo sun4v_type = {

View File

@ -2998,7 +2998,7 @@
## ##
# @BlockdevQcow2EncryptionFormat: # @BlockdevQcow2EncryptionFormat:
# @aes: AES-CBC with plain64 initialization venctors # @aes: AES-CBC with plain64 initialization vectors
# #
# Since: 2.10 # Since: 2.10
## ##

View File

@ -37,23 +37,6 @@ would automatically enable USB support on the machine type.
If using the new syntax, USB support must be explicitly If using the new syntax, USB support must be explicitly
enabled via the ``-machine usb=on'' argument. enabled via the ``-machine usb=on'' argument.
@subsection -virtioconsole (since 3.0.0)
Option @option{-virtioconsole} has been replaced by
@option{-device virtconsole}.
@subsection -no-frame (since 2.12.0)
The @code{--no-frame} argument works with SDL 1.2 only. The other user
interfaces never implemented this in the first place. So this will be
removed together with SDL 1.2 support.
>>>>>>> remotes/bonzini/tags/for-upstream
@subsection -clock (since 3.0.0)
The @code{-clock} option is ignored since QEMU version 1.7.0. There is no
replacement since it is not needed anymore.
@subsection -drive file=json:@{...@{'driver':'file'@}@} (since 3.0) @subsection -drive file=json:@{...@{'driver':'file'@}@} (since 3.0)
The 'file' driver for drives is no longer appropriate for character or host The 'file' driver for drives is no longer appropriate for character or host

View File

@ -3444,9 +3444,6 @@ Load the contents of @var{file} as an option ROM.
This option is useful to load things like EtherBoot. This option is useful to load things like EtherBoot.
ETEXI ETEXI
HXCOMM Silently ignored for compatibility
DEF("clock", HAS_ARG, QEMU_OPTION_clock, "", QEMU_ARCH_ALL)
DEF("rtc", HAS_ARG, QEMU_OPTION_rtc, \ DEF("rtc", HAS_ARG, QEMU_OPTION_rtc, \
"-rtc [base=utc|localtime|<datetime>][,clock=host|rt|vm][,driftfix=none|slew]\n" \ "-rtc [base=utc|localtime|<datetime>][,clock=host|rt|vm][,driftfix=none|slew]\n" \
" set the RTC base and clock, enable drift fix for clock ticks (x86 only)\n", " set the RTC base and clock, enable drift fix for clock ticks (x86 only)\n",

6
vl.c
View File

@ -3735,12 +3735,6 @@ int main(int argc, char **argv, char **envp)
case QEMU_OPTION_old_param: case QEMU_OPTION_old_param:
old_param = 1; old_param = 1;
break; break;
case QEMU_OPTION_clock:
/* Clock options no longer exist. Keep this option for
* backward compatibility.
*/
warn_report("This option is ignored and will be removed soon");
break;
case QEMU_OPTION_rtc: case QEMU_OPTION_rtc:
opts = qemu_opts_parse_noisily(qemu_find_opts("rtc"), optarg, opts = qemu_opts_parse_noisily(qemu_find_opts("rtc"), optarg,
false); false);