qemu/hw
Markus Armbruster 25f8dd9659 qdev: Don't exit when running into bad -global
-global lets you set a nice booby-trap for yourself:

    $ qemu-system-x86_64 -nodefaults -S -display none -usb -monitor stdio -global usb-mouse.usb_version=l
    QEMU 2.1.94 monitor - type 'help' for more information
    (qemu) device_add usb-mouse
    Parameter 'usb_version' expects an int64 value or range
    $ echo $?
    1

Not nice.  Until commit 3196270 we even abort()ed.

The same error triggers if you manage to screw up a machine type's
compat_props.  To demonstrate, change HW_COMPAT_2_1's entry to

            .driver   = "usb-mouse",\
            .property = "usb_version",\
            .value    = "1", \

Then run

    $ qemu-system-x86_64 -usb -M pc-i440fx-2.1 -device usb-mouse
    upstream-qemu: -device usb-mouse: Parameter 'usb_version' expects an int64 value or range
    $ echo $?
    1

One of our creatively cruel error messages.

Since this is actually a coding error, we *should* abort() here.
Replace the error by an assertion failure in this case.

But turn the fatal error into a mere warning when the faulty
GlobalProperty comes from the user.  Looks like this:

    $ qemu-system-x86_64 -nodefaults -S -display none -usb -monitor stdio -global usb-mouse.usb_version=l
    QEMU 2.1.94 monitor - type 'help' for more information
    (qemu) device_add usb-mouse
    Warning: global usb-mouse.usb_version=l ignored (Parameter 'usb_version' expects an int64 value or range)
    (qemu)

This is consistent with how we handle similarly unusable -global in
qdev_prop_check_globals().

You could argue that the error should make device_add fail.  Would be
harder, because we're running within TypeInfo's instance_post_init()
method device_post_init(), which can't fail.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
2015-02-26 12:42:18 +01:00
..
9pfs rcu: introduce RCU-enabled QLIST 2015-02-16 17:30:19 +01:00
acpi pci: Trivial device model conversions to realize 2015-02-26 12:42:16 +01:00
alpha isa: add memory space parameter to isa_bus_new 2015-02-13 14:09:27 +00:00
arm error: Use error_report_err() where appropriate 2015-02-18 10:51:09 +01:00
audio pci: Trivial device model conversions to realize 2015-02-26 12:42:16 +01:00
block Clean up around error_get_pretty(), qerror_report_err() 2015-02-26 07:01:08 +00:00
bt l2cap: fix access to freed memory 2014-08-15 19:12:48 +04:00
char serial-pci: Convert to realize 2015-02-26 12:42:17 +01:00
core qdev: Don't exit when running into bad -global 2015-02-26 12:42:18 +01:00
cpu icc_bus: fix typo ICC_BRIGDE -> ICC_BRIDGE 2014-11-03 19:51:56 +03:00
cris hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
display qxl: Convert to realize 2015-02-26 12:42:17 +01:00
dma vmstate: accept QEMUTimer in VMSTATE_TIMER*, add VMSTATE_TIMER_PTR* 2015-01-26 12:22:44 +01:00
gpio PPC: Add MPC8XXX gpio controller 2014-11-04 23:26:12 +01:00
i2c pci: Trivial device model conversions to realize 2015-02-26 12:42:16 +01:00
i386 pci-assign: Convert to realize 2015-02-26 12:42:17 +01:00
ide ide/ich: Convert to realize 2015-02-26 12:42:17 +01:00
input Add trace to ps2.c. 2015-02-10 09:27:20 +03:00
intc hmp: Name HMP info handler functions hmp_info_SUBCOMMAND() 2015-02-18 11:58:50 +01:00
ipack pci: Trivial device model conversions to realize 2015-02-26 12:42:16 +01:00
isa pci: Trivial device model conversions to realize 2015-02-26 12:42:16 +01:00
lm32 acpi-build: make ROMs RAM blocks resizeable 2015-01-08 13:17:55 +02:00
m68k hw/core/loader: implement address translation in uimage loader 2014-11-03 00:59:10 +03:00
mem pc-dimm: Add Error argument to pc_existing_dimms_capacity 2015-01-27 14:46:18 +02:00
microblaze hw/core/loader: implement address translation in uimage loader 2014-11-03 00:59:10 +03:00
mips gt64xxx: remove isa_mem_base usage 2015-02-13 14:09:27 +00:00
misc pci: Trivial device model conversions to realize 2015-02-26 12:42:16 +01:00
moxie memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
net pcnet: Convert to realize 2015-02-26 12:42:17 +01:00
nvram fw_cfg: fix endianness in fw_cfg_data_mem_read() / _write() 2015-01-16 11:54:30 +00:00
openrisc hw/core/loader: implement address translation in uimage loader 2014-11-03 00:59:10 +03:00
pci pci: Permit incremental conversion of device models to realize 2015-02-26 12:42:16 +01:00
pci-bridge pci: Trivial device model conversions to realize 2015-02-26 12:42:16 +01:00
pci-host pci: Trivial device model conversions to realize 2015-02-26 12:42:16 +01:00
pcmcia hmp: Remove "info pcmcia" 2014-10-24 12:19:11 +01:00
ppc usb: error handling fixes from Markus, make sysbus ehci arm-only. 2015-02-25 11:54:15 +00:00
s390x s390x/pci: Rework memory access in zpci instruction 2015-02-18 09:37:15 +01:00
scsi Clean up around error_get_pretty(), qerror_report_err() 2015-02-26 07:01:08 +00:00
sd pci: Trivial device model conversions to realize 2015-02-26 12:42:16 +01:00
sh4 r2d: Don't use legacy -usbdevice support for setting up board 2015-02-18 10:53:10 +01:00
sparc hmp: Name HMP info handler functions hmp_info_SUBCOMMAND() 2015-02-18 11:58:50 +01:00
sparc64 isa: add memory space parameter to isa_bus_new 2015-02-13 14:09:27 +00:00
ssi ssi: xilinx_spi: Initialise CS GPIOs as NULL 2014-08-15 18:54:40 +04:00
timer fix mc146818rtc wrong subsection name to avoid vmstate_subsection_load() fail 2015-02-05 17:16:14 +01:00
tpm Drop superfluous conditionals around g_strdup() 2014-12-10 11:30:55 +03:00
tricore target-tricore: check return value before using it 2014-11-02 10:04:34 +03:00
unicore32 memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
usb pci: Trivial device model conversions to realize 2015-02-26 12:42:16 +01:00
vfio vfio: Fix debug message compile error 2015-02-10 10:25:44 -07:00
virtio - vhost-scsi: add bootindex property 2015-02-24 13:58:18 +00:00
watchdog pci: Trivial device model conversions to realize 2015-02-26 12:42:16 +01:00
xen xen-pt: Fix PCI devices re-attach failed 2015-01-13 11:49:46 +00:00
xenpv hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
xtensa hw/xtensa/xtfpga: treat uImage load address as virtual 2014-11-03 01:00:37 +03:00
Makefile.objs vfio: move hw/misc/vfio.c to hw/vfio/pci.c Move vfio.h into include/hw/vfio 2014-12-19 15:24:06 -07:00