* [Qemu-devel] [PATCH v2 0/2] Use error_fatal to simplify obvious fatal errors
@ 2015-12-10 16:29 Markus Armbruster
2015-12-10 16:29 ` [Qemu-devel] [PATCH v2 1/2] " Markus Armbruster
2015-12-10 16:29 ` [Qemu-devel] [PATCH v2 2/2] hw: Inline the qdev_prop_set_drive_nofail() wrapper Markus Armbruster
0 siblings, 2 replies; 9+ messages in thread
From: Markus Armbruster @ 2015-12-10 16:29 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini
v2:
* PATCH 1: Don't mess up formatting of zynq_init() [Paolo]
* PATCH 2: New [Paolo]
Markus Armbruster (2):
Use error_fatal to simplify obvious fatal errors
hw: Inline the qdev_prop_set_drive_nofail() wrapper
hw/arm/exynos4210.c | 13 ++----------
hw/arm/highbank.c | 7 +------
hw/arm/integratorcp.c | 13 ++----------
hw/arm/nseries.c | 4 ++--
hw/arm/realview.c | 20 ++++---------------
hw/arm/versatilepb.c | 13 ++----------
hw/arm/vexpress.c | 7 +------
hw/arm/xilinx_zynq.c | 28 ++++++--------------------
hw/block/fdc.c | 15 +++++++++-----
hw/block/nand.c | 2 +-
hw/char/serial.c | 14 ++-----------
hw/core/qdev-properties-system.c | 12 -----------
hw/i386/pc.c | 14 ++-----------
hw/ide/qdev.c | 3 ++-
hw/isa/pc87312.c | 8 ++++----
hw/ppc/spapr.c | 3 ++-
hw/smbios/smbios.c | 43 +++++++---------------------------------
include/hw/qdev-properties.h | 2 --
numa.c | 8 ++------
vl.c | 21 +++-----------------
20 files changed, 55 insertions(+), 195 deletions(-)
--
2.4.3
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH v2 1/2] Use error_fatal to simplify obvious fatal errors
2015-12-10 16:29 [Qemu-devel] [PATCH v2 0/2] Use error_fatal to simplify obvious fatal errors Markus Armbruster
@ 2015-12-10 16:29 ` Markus Armbruster
2015-12-14 16:55 ` Eduardo Habkost
2015-12-10 16:29 ` [Qemu-devel] [PATCH v2 2/2] hw: Inline the qdev_prop_set_drive_nofail() wrapper Markus Armbruster
1 sibling, 1 reply; 9+ messages in thread
From: Markus Armbruster @ 2015-12-10 16:29 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini, qemu-arm, Eduardo Habkost, Michael S. Tsirkin
Done with this admittedly crude Coccinelle semantic patch:
@@
identifier FUN;
expression ERR, EC;
@@
- FUN(&ERR);
- if (ERR != NULL) {
- error_report_err(ERR);
- exit(EC);
- }
+ FUN(&error_fatal);
@@
identifier FUN;
expression ARG1, ERR, EC;
@@
- FUN(ARG1, &ERR);
- if (ERR != NULL) {
- error_report_err(ERR);
- exit(EC);
- }
+ FUN(ARG1, &error_fatal);
@@
identifier FUN;
expression ARG1, ARG2, ERR, EC;
@@
- FUN(ARG1, ARG2, &ERR);
- if (ERR != NULL) {
- error_report_err(ERR);
- exit(EC);
- }
+ FUN(ARG1, ARG2, &error_fatal);
@@
identifier FUN;
expression ARG1, ARG2, ARG3, ERR, EC;
@@
- FUN(ARG1, ARG2, ARG3, &ERR);
- if (ERR != NULL) {
- error_report_err(ERR);
- exit(EC);
- }
+ FUN(ARG1, ARG2, ARG3, &error_fatal);
@@
identifier FUN;
expression RET, ERR, EC;
@@
- RET = FUN(&ERR);
- if (ERR != NULL) {
- error_report_err(ERR);
- exit(EC);
- }
+ RET = FUN(&error_fatal);
@@
identifier FUN;
expression RET, ARG1, ERR, EC;
@@
- RET = FUN(ARG1, &ERR);
- if (ERR != NULL) {
- error_report_err(ERR);
- exit(EC);
- }
+ RET = FUN(ARG1, &error_fatal);
@@
identifier FUN;
expression RET, ARG1, ARG2, ERR, EC;
@@
- RET = FUN(ARG1, ARG2, &ERR);
- if (ERR != NULL) {
- error_report_err(ERR);
- exit(EC);
- }
+ RET = FUN(ARG1, ARG2, &error_fatal);
@@
identifier FUN;
expression RET, ARG1, ARG2, ARG3, ERR, EC;
@@
- RET = FUN(ARG1, ARG2, ARG3, &ERR);
- if (ERR != NULL) {
- error_report_err(ERR);
- exit(EC);
- }
+ RET = FUN(ARG1, ARG2, ARG3, &error_fatal);
@@
type T;
identifier FUN, RET;
expression ERR, EC;
@@
- T RET = FUN(&ERR);
- if (ERR != NULL) {
- error_report_err(ERR);
- exit(EC);
- }
+ T RET = FUN(&error_fatal);
@@
type T;
identifier FUN, RET;
expression ARG1, ERR, EC;
@@
- T RET = FUN(ARG1, &ERR);
- if (ERR != NULL) {
- error_report_err(ERR);
- exit(EC);
- }
+ T RET = FUN(ARG1, &error_fatal);
@@
type T;
identifier FUN, RET;
expression ARG1, ARG2, ERR, EC;
@@
- T RET = FUN(ARG1, ARG2, &ERR);
- if (ERR != NULL) {
- error_report_err(ERR);
- exit(EC);
- }
+ T RET = FUN(ARG1, ARG2, &error_fatal);
@@
type T;
identifier FUN, RET;
expression ARG1, ARG2, ARG3, ERR, EC;
@@
- T RET = FUN(ARG1, ARG2, ARG3, &ERR);
- if (ERR != NULL) {
- error_report_err(ERR);
- exit(EC);
- }
+ T RET = FUN(ARG1, ARG2, ARG3, &error_fatal);
This leaves dead Error * variables behind, cleaned up manually.
My version of spatch messes up formatting of zynq_init(), also cleaned
up manually.
Cc: qemu-arm@nongnu.org
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
hw/arm/exynos4210.c | 13 ++----------
hw/arm/highbank.c | 7 +------
hw/arm/integratorcp.c | 13 ++----------
hw/arm/realview.c | 20 ++++---------------
hw/arm/versatilepb.c | 13 ++----------
hw/arm/vexpress.c | 7 +------
hw/arm/xilinx_zynq.c | 28 ++++++--------------------
hw/char/serial.c | 14 ++-----------
hw/core/qdev-properties-system.c | 8 +-------
hw/i386/pc.c | 14 ++-----------
hw/smbios/smbios.c | 43 +++++++---------------------------------
numa.c | 8 ++------
vl.c | 21 +++-----------------
13 files changed, 35 insertions(+), 174 deletions(-)
diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c
index d934980..79b7c5a 100644
--- a/hw/arm/exynos4210.c
+++ b/hw/arm/exynos4210.c
@@ -150,27 +150,18 @@ Exynos4210State *exynos4210_init(MemoryRegion *system_mem,
for (n = 0; n < EXYNOS4210_NCPUS; n++) {
Object *cpuobj = object_new(object_class_get_name(cpu_oc));
- Error *err = NULL;
/* By default A9 CPUs have EL3 enabled. This board does not currently
* support EL3 so the CPU EL3 property is disabled before realization.
*/
if (object_property_find(cpuobj, "has_el3", NULL)) {
- object_property_set_bool(cpuobj, false, "has_el3", &err);
- if (err) {
- error_report_err(err);
- exit(1);
- }
+ object_property_set_bool(cpuobj, false, "has_el3", &error_fatal);
}
s->cpu[n] = ARM_CPU(cpuobj);
object_property_set_int(cpuobj, EXYNOS4210_SMP_PRIVATE_BASE_ADDR,
"reset-cbar", &error_abort);
- object_property_set_bool(cpuobj, true, "realized", &err);
- if (err) {
- error_report_err(err);
- exit(1);
- }
+ object_property_set_bool(cpuobj, true, "realized", &error_fatal);
}
/*** IRQs ***/
diff --git a/hw/arm/highbank.c b/hw/arm/highbank.c
index 85ae69e..a0a5a06 100644
--- a/hw/arm/highbank.c
+++ b/hw/arm/highbank.c
@@ -279,7 +279,6 @@ static void calxeda_init(MachineState *machine, enum cxmachines machine_id)
ObjectClass *oc = cpu_class_by_name(TYPE_ARM_CPU, cpu_model);
Object *cpuobj;
ARMCPU *cpu;
- Error *err = NULL;
cpuobj = object_new(object_class_get_name(oc));
cpu = ARM_CPU(cpuobj);
@@ -297,11 +296,7 @@ static void calxeda_init(MachineState *machine, enum cxmachines machine_id)
object_property_set_int(cpuobj, MPCORE_PERIPHBASE,
"reset-cbar", &error_abort);
}
- object_property_set_bool(cpuobj, true, "realized", &err);
- if (err) {
- error_report_err(err);
- exit(1);
- }
+ object_property_set_bool(cpuobj, true, "realized", &error_fatal);
cpu_irq[n] = qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_IRQ);
cpu_fiq[n] = qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_FIQ);
}
diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c
index 421bde9..96dedce 100644
--- a/hw/arm/integratorcp.c
+++ b/hw/arm/integratorcp.c
@@ -533,7 +533,6 @@ static void integratorcp_init(MachineState *machine)
qemu_irq pic[32];
DeviceState *dev, *sic, *icp;
int i;
- Error *err = NULL;
if (!cpu_model) {
cpu_model = "arm926";
@@ -552,18 +551,10 @@ static void integratorcp_init(MachineState *machine)
* realization.
*/
if (object_property_find(cpuobj, "has_el3", NULL)) {
- object_property_set_bool(cpuobj, false, "has_el3", &err);
- if (err) {
- error_report_err(err);
- exit(1);
- }
+ object_property_set_bool(cpuobj, false, "has_el3", &error_fatal);
}
- object_property_set_bool(cpuobj, true, "realized", &err);
- if (err) {
- error_report_err(err);
- exit(1);
- }
+ object_property_set_bool(cpuobj, true, "realized", &error_fatal);
cpu = ARM_CPU(cpuobj);
diff --git a/hw/arm/realview.c b/hw/arm/realview.c
index e14828d..2d6952c 100644
--- a/hw/arm/realview.c
+++ b/hw/arm/realview.c
@@ -99,33 +99,21 @@ static void realview_init(MachineState *machine,
for (n = 0; n < smp_cpus; n++) {
Object *cpuobj = object_new(object_class_get_name(cpu_oc));
- Error *err = NULL;
/* By default A9,A15 and ARM1176 CPUs have EL3 enabled. This board
* does not currently support EL3 so the CPU EL3 property is disabled
* before realization.
*/
if (object_property_find(cpuobj, "has_el3", NULL)) {
- object_property_set_bool(cpuobj, false, "has_el3", &err);
- if (err) {
- error_report_err(err);
- exit(1);
- }
+ object_property_set_bool(cpuobj, false, "has_el3", &error_fatal);
}
if (is_pb && is_mpcore) {
- object_property_set_int(cpuobj, periphbase, "reset-cbar", &err);
- if (err) {
- error_report_err(err);
- exit(1);
- }
+ object_property_set_int(cpuobj, periphbase, "reset-cbar",
+ &error_fatal);
}
- object_property_set_bool(cpuobj, true, "realized", &err);
- if (err) {
- error_report_err(err);
- exit(1);
- }
+ object_property_set_bool(cpuobj, true, "realized", &error_fatal);
cpu_irq[n] = qdev_get_gpio_in(DEVICE(cpuobj), ARM_CPU_IRQ);
}
diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c
index 912c290..70eefe9 100644
--- a/hw/arm/versatilepb.c
+++ b/hw/arm/versatilepb.c
@@ -192,7 +192,6 @@ static void versatile_init(MachineState *machine, int board_id)
int n;
int done_smc = 0;
DriveInfo *dinfo;
- Error *err = NULL;
if (!machine->cpu_model) {
machine->cpu_model = "arm926";
@@ -211,18 +210,10 @@ static void versatile_init(MachineState *machine, int board_id)
* realization.
*/
if (object_property_find(cpuobj, "has_el3", NULL)) {
- object_property_set_bool(cpuobj, false, "has_el3", &err);
- if (err) {
- error_report_err(err);
- exit(1);
- }
+ object_property_set_bool(cpuobj, false, "has_el3", &error_fatal);
}
- object_property_set_bool(cpuobj, true, "realized", &err);
- if (err) {
- error_report_err(err);
- exit(1);
- }
+ object_property_set_bool(cpuobj, true, "realized", &error_fatal);
cpu = ARM_CPU(cpuobj);
diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c
index 058abbd..ea9a984 100644
--- a/hw/arm/vexpress.c
+++ b/hw/arm/vexpress.c
@@ -211,7 +211,6 @@ static void init_cpus(const char *cpu_model, const char *privdev,
/* Create the actual CPUs */
for (n = 0; n < smp_cpus; n++) {
Object *cpuobj = object_new(object_class_get_name(cpu_oc));
- Error *err = NULL;
if (!secure) {
object_property_set_bool(cpuobj, false, "has_el3", NULL);
@@ -221,11 +220,7 @@ static void init_cpus(const char *cpu_model, const char *privdev,
object_property_set_int(cpuobj, periphbase,
"reset-cbar", &error_abort);
}
- object_property_set_bool(cpuobj, true, "realized", &err);
- if (err) {
- error_report_err(err);
- exit(1);
- }
+ object_property_set_bool(cpuobj, true, "realized", &error_fatal);
}
/* Create the private peripheral devices (including the GIC);
diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c
index 1c1a445..65e92e1 100644
--- a/hw/arm/xilinx_zynq.c
+++ b/hw/arm/xilinx_zynq.c
@@ -156,7 +156,6 @@ static void zynq_init(MachineState *machine)
DeviceState *dev;
SysBusDevice *busdev;
qemu_irq pic[64];
- Error *err = NULL;
int n;
if (!cpu_model) {
@@ -171,29 +170,14 @@ static void zynq_init(MachineState *machine)
* realization.
*/
if (object_property_find(OBJECT(cpu), "has_el3", NULL)) {
- object_property_set_bool(OBJECT(cpu), false, "has_el3", &err);
- if (err) {
- error_report_err(err);
- exit(1);
- }
+ object_property_set_bool(OBJECT(cpu), false, "has_el3", &error_fatal);
}
- object_property_set_int(OBJECT(cpu), ZYNQ_BOARD_MIDR, "midr", &err);
- if (err) {
- error_report_err(err);
- exit(1);
- }
-
- object_property_set_int(OBJECT(cpu), MPCORE_PERIPHBASE, "reset-cbar", &err);
- if (err) {
- error_report_err(err);
- exit(1);
- }
- object_property_set_bool(OBJECT(cpu), true, "realized", &err);
- if (err) {
- error_report_err(err);
- exit(1);
- }
+ object_property_set_int(OBJECT(cpu), ZYNQ_BOARD_MIDR, "midr",
+ &error_fatal);
+ object_property_set_int(OBJECT(cpu), MPCORE_PERIPHBASE, "reset-cbar",
+ &error_fatal);
+ object_property_set_bool(OBJECT(cpu), true, "realized", &error_fatal);
/* max 2GB ram */
if (ram_size > 0x80000000) {
diff --git a/hw/char/serial.c b/hw/char/serial.c
index 513d73c..566e9ef 100644
--- a/hw/char/serial.c
+++ b/hw/char/serial.c
@@ -888,18 +888,13 @@ SerialState *serial_init(int base, qemu_irq irq, int baudbase,
CharDriverState *chr, MemoryRegion *system_io)
{
SerialState *s;
- Error *err = NULL;
s = g_malloc0(sizeof(SerialState));
s->irq = irq;
s->baudbase = baudbase;
s->chr = chr;
- serial_realize_core(s, &err);
- if (err != NULL) {
- error_report_err(err);
- exit(1);
- }
+ serial_realize_core(s, &error_fatal);
vmstate_register(NULL, base, &vmstate_serial, s);
@@ -949,7 +944,6 @@ SerialState *serial_mm_init(MemoryRegion *address_space,
CharDriverState *chr, enum device_endian end)
{
SerialState *s;
- Error *err = NULL;
s = g_malloc0(sizeof(SerialState));
@@ -958,11 +952,7 @@ SerialState *serial_mm_init(MemoryRegion *address_space,
s->baudbase = baudbase;
s->chr = chr;
- serial_realize_core(s, &err);
- if (err != NULL) {
- error_report_err(err);
- exit(1);
- }
+ serial_realize_core(s, &error_fatal);
vmstate_register(NULL, base, &vmstate_serial, s);
memory_region_init_io(&s->io, NULL, &serial_mm_ops[end], s,
diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-system.c
index 921e799..d515e99 100644
--- a/hw/core/qdev-properties-system.c
+++ b/hw/core/qdev-properties-system.c
@@ -367,13 +367,7 @@ void qdev_prop_set_drive(DeviceState *dev, const char *name,
void qdev_prop_set_drive_nofail(DeviceState *dev, const char *name,
BlockBackend *value)
{
- Error *err = NULL;
-
- qdev_prop_set_drive(dev, name, value, &err);
- if (err) {
- error_report_err(err);
- exit(1);
- }
+ qdev_prop_set_drive(dev, name, value, &error_fatal);
}
void qdev_prop_set_chr(DeviceState *dev, const char *name,
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 5e20e07..3025ca5 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -433,7 +433,6 @@ void pc_cmos_init(PCMachineState *pcms,
{
int val;
static pc_cmos_init_late_arg arg;
- Error *local_err = NULL;
/* various important CMOS locations needed by PC/Bochs bios */
@@ -481,11 +480,7 @@ void pc_cmos_init(PCMachineState *pcms,
object_property_set_link(OBJECT(pcms), OBJECT(s),
"rtc_state", &error_abort);
- set_boot_dev(s, MACHINE(pcms)->boot_order, &local_err);
- if (local_err) {
- error_report_err(local_err);
- exit(1);
- }
+ set_boot_dev(s, MACHINE(pcms)->boot_order, &error_fatal);
val = 0;
val |= 0x02; /* FPU is there */
@@ -1122,7 +1117,6 @@ void pc_cpus_init(PCMachineState *pcms)
int i;
X86CPU *cpu = NULL;
MachineState *machine = MACHINE(pcms);
- Error *error = NULL;
unsigned long apic_id_limit;
/* init CPUs */
@@ -1143,11 +1137,7 @@ void pc_cpus_init(PCMachineState *pcms)
for (i = 0; i < smp_cpus; i++) {
cpu = pc_new_cpu(machine->cpu_model, x86_cpu_apic_id_from_index(i),
- &error);
- if (error) {
- error_report_err(error);
- exit(1);
- }
+ &error_fatal);
object_unref(OBJECT(cpu));
}
diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c
index b81a1d3..a3e575a 100644
--- a/hw/smbios/smbios.c
+++ b/hw/smbios/smbios.c
@@ -937,7 +937,6 @@ static void save_opt(const char **dest, QemuOpts *opts, const char *name)
void smbios_entry_add(QemuOpts *opts)
{
- Error *local_err = NULL;
const char *val;
assert(!smbios_immutable);
@@ -948,11 +947,7 @@ void smbios_entry_add(QemuOpts *opts)
int size;
struct smbios_table *table; /* legacy mode only */
- qemu_opts_validate(opts, qemu_smbios_file_opts, &local_err);
- if (local_err) {
- error_report_err(local_err);
- exit(1);
- }
+ qemu_opts_validate(opts, qemu_smbios_file_opts, &error_fatal);
size = get_image_size(val);
if (size == -1 || size < sizeof(struct smbios_structure_header)) {
@@ -1034,11 +1029,7 @@ void smbios_entry_add(QemuOpts *opts)
switch (type) {
case 0:
- qemu_opts_validate(opts, qemu_smbios_type0_opts, &local_err);
- if (local_err) {
- error_report_err(local_err);
- exit(1);
- }
+ qemu_opts_validate(opts, qemu_smbios_type0_opts, &error_fatal);
save_opt(&type0.vendor, opts, "vendor");
save_opt(&type0.version, opts, "version");
save_opt(&type0.date, opts, "date");
@@ -1054,11 +1045,7 @@ void smbios_entry_add(QemuOpts *opts)
}
return;
case 1:
- qemu_opts_validate(opts, qemu_smbios_type1_opts, &local_err);
- if (local_err) {
- error_report_err(local_err);
- exit(1);
- }
+ qemu_opts_validate(opts, qemu_smbios_type1_opts, &error_fatal);
save_opt(&type1.manufacturer, opts, "manufacturer");
save_opt(&type1.product, opts, "product");
save_opt(&type1.version, opts, "version");
@@ -1076,11 +1063,7 @@ void smbios_entry_add(QemuOpts *opts)
}
return;
case 2:
- qemu_opts_validate(opts, qemu_smbios_type2_opts, &local_err);
- if (local_err) {
- error_report_err(local_err);
- exit(1);
- }
+ qemu_opts_validate(opts, qemu_smbios_type2_opts, &error_fatal);
save_opt(&type2.manufacturer, opts, "manufacturer");
save_opt(&type2.product, opts, "product");
save_opt(&type2.version, opts, "version");
@@ -1089,11 +1072,7 @@ void smbios_entry_add(QemuOpts *opts)
save_opt(&type2.location, opts, "location");
return;
case 3:
- qemu_opts_validate(opts, qemu_smbios_type3_opts, &local_err);
- if (local_err) {
- error_report_err(local_err);
- exit(1);
- }
+ qemu_opts_validate(opts, qemu_smbios_type3_opts, &error_fatal);
save_opt(&type3.manufacturer, opts, "manufacturer");
save_opt(&type3.version, opts, "version");
save_opt(&type3.serial, opts, "serial");
@@ -1101,11 +1080,7 @@ void smbios_entry_add(QemuOpts *opts)
save_opt(&type3.sku, opts, "sku");
return;
case 4:
- qemu_opts_validate(opts, qemu_smbios_type4_opts, &local_err);
- if (local_err) {
- error_report_err(local_err);
- exit(1);
- }
+ qemu_opts_validate(opts, qemu_smbios_type4_opts, &error_fatal);
save_opt(&type4.sock_pfx, opts, "sock_pfx");
save_opt(&type4.manufacturer, opts, "manufacturer");
save_opt(&type4.version, opts, "version");
@@ -1114,11 +1089,7 @@ void smbios_entry_add(QemuOpts *opts)
save_opt(&type4.part, opts, "part");
return;
case 17:
- qemu_opts_validate(opts, qemu_smbios_type17_opts, &local_err);
- if (local_err) {
- error_report_err(local_err);
- exit(1);
- }
+ qemu_opts_validate(opts, qemu_smbios_type17_opts, &error_fatal);
save_opt(&type17.loc_pfx, opts, "loc_pfx");
save_opt(&type17.bank, opts, "bank");
save_opt(&type17.manufacturer, opts, "manufacturer");
diff --git a/numa.c b/numa.c
index fdfe294..bbdf5b8 100644
--- a/numa.c
+++ b/numa.c
@@ -450,17 +450,13 @@ void memory_region_allocate_system_memory(MemoryRegion *mr, Object *owner,
memory_region_init(mr, owner, name, ram_size);
for (i = 0; i < MAX_NODES; i++) {
- Error *local_err = NULL;
uint64_t size = numa_info[i].node_mem;
HostMemoryBackend *backend = numa_info[i].node_memdev;
if (!backend) {
continue;
}
- MemoryRegion *seg = host_memory_backend_get_memory(backend, &local_err);
- if (local_err) {
- error_report_err(local_err);
- exit(1);
- }
+ MemoryRegion *seg = host_memory_backend_get_memory(backend,
+ &error_fatal);
if (memory_region_is_mapped(seg)) {
char *path = object_get_canonical_path_component(OBJECT(backend));
diff --git a/vl.c b/vl.c
index 4211ff1..5cc6bfd 100644
--- a/vl.c
+++ b/vl.c
@@ -4329,12 +4329,7 @@ int main(int argc, char **argv, char **envp)
configure_accelerator(current_machine);
if (qtest_chrdev) {
- Error *local_err = NULL;
- qtest_init(qtest_chrdev, qtest_log, &local_err);
- if (local_err) {
- error_report_err(local_err);
- exit(1);
- }
+ qtest_init(qtest_chrdev, qtest_log, &error_fatal);
}
machine_opts = qemu_get_machine_opts();
@@ -4345,24 +4340,14 @@ int main(int argc, char **argv, char **envp)
opts = qemu_opts_find(qemu_find_opts("boot-opts"), NULL);
if (opts) {
- Error *local_err = NULL;
-
boot_order = qemu_opt_get(opts, "order");
if (boot_order) {
- validate_bootdevices(boot_order, &local_err);
- if (local_err) {
- error_report_err(local_err);
- exit(1);
- }
+ validate_bootdevices(boot_order, &error_fatal);
}
boot_once = qemu_opt_get(opts, "once");
if (boot_once) {
- validate_bootdevices(boot_once, &local_err);
- if (local_err) {
- error_report_err(local_err);
- exit(1);
- }
+ validate_bootdevices(boot_once, &error_fatal);
}
boot_menu = qemu_opt_get_bool(opts, "menu", boot_menu);
--
2.4.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH v2 2/2] hw: Inline the qdev_prop_set_drive_nofail() wrapper
2015-12-10 16:29 [Qemu-devel] [PATCH v2 0/2] Use error_fatal to simplify obvious fatal errors Markus Armbruster
2015-12-10 16:29 ` [Qemu-devel] [PATCH v2 1/2] " Markus Armbruster
@ 2015-12-10 16:29 ` Markus Armbruster
2015-12-10 16:50 ` Peter Maydell
1 sibling, 1 reply; 9+ messages in thread
From: Markus Armbruster @ 2015-12-10 16:29 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
hw/arm/nseries.c | 4 ++--
hw/block/fdc.c | 15 ++++++++++-----
hw/block/nand.c | 2 +-
hw/core/qdev-properties-system.c | 6 ------
hw/ide/qdev.c | 3 ++-
hw/isa/pc87312.c | 8 ++++----
hw/ppc/spapr.c | 3 ++-
include/hw/qdev-properties.h | 2 --
8 files changed, 21 insertions(+), 22 deletions(-)
diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
index 2a8835e..57170ae 100644
--- a/hw/arm/nseries.c
+++ b/hw/arm/nseries.c
@@ -172,8 +172,8 @@ static void n8x0_nand_setup(struct n800_s *s)
qdev_prop_set_int32(s->nand, "shift", 1);
dinfo = drive_get(IF_MTD, 0, 0);
if (dinfo) {
- qdev_prop_set_drive_nofail(s->nand, "drive",
- blk_by_legacy_dinfo(dinfo));
+ qdev_prop_set_drive(s->nand, "drive", blk_by_legacy_dinfo(dinfo),
+ &error_fatal);
}
qdev_init_nofail(s->nand);
sysbus_connect_irq(SYS_BUS_DEVICE(s->nand), 0,
diff --git a/hw/block/fdc.c b/hw/block/fdc.c
index 4292ece..858f5f7 100644
--- a/hw/block/fdc.c
+++ b/hw/block/fdc.c
@@ -2245,10 +2245,12 @@ ISADevice *fdctrl_init_isa(ISABus *bus, DriveInfo **fds)
dev = DEVICE(isadev);
if (fds[0]) {
- qdev_prop_set_drive_nofail(dev, "driveA", blk_by_legacy_dinfo(fds[0]));
+ qdev_prop_set_drive(dev, "driveA", blk_by_legacy_dinfo(fds[0]),
+ &error_fatal);
}
if (fds[1]) {
- qdev_prop_set_drive_nofail(dev, "driveB", blk_by_legacy_dinfo(fds[1]));
+ qdev_prop_set_drive(dev, "driveB", blk_by_legacy_dinfo(fds[1]),
+ &error_fatal);
}
qdev_init_nofail(dev);
@@ -2268,10 +2270,12 @@ void fdctrl_init_sysbus(qemu_irq irq, int dma_chann,
fdctrl = &sys->state;
fdctrl->dma_chann = dma_chann; /* FIXME */
if (fds[0]) {
- qdev_prop_set_drive_nofail(dev, "driveA", blk_by_legacy_dinfo(fds[0]));
+ qdev_prop_set_drive(dev, "driveA", blk_by_legacy_dinfo(fds[0]),
+ &error_fatal);
}
if (fds[1]) {
- qdev_prop_set_drive_nofail(dev, "driveB", blk_by_legacy_dinfo(fds[1]));
+ qdev_prop_set_drive(dev, "driveB", blk_by_legacy_dinfo(fds[1]),
+ &error_fatal);
}
qdev_init_nofail(dev);
sbd = SYS_BUS_DEVICE(dev);
@@ -2287,7 +2291,8 @@ void sun4m_fdctrl_init(qemu_irq irq, hwaddr io_base,
dev = qdev_create(NULL, "SUNW,fdtwo");
if (fds[0]) {
- qdev_prop_set_drive_nofail(dev, "drive", blk_by_legacy_dinfo(fds[0]));
+ qdev_prop_set_drive(dev, "drive", blk_by_legacy_dinfo(fds[0]),
+ &error_fatal);
}
qdev_init_nofail(dev);
sys = SYSBUS_FDC(dev);
diff --git a/hw/block/nand.c b/hw/block/nand.c
index f0e3413..478e1a6 100644
--- a/hw/block/nand.c
+++ b/hw/block/nand.c
@@ -635,7 +635,7 @@ DeviceState *nand_init(BlockBackend *blk, int manf_id, int chip_id)
qdev_prop_set_uint8(dev, "manufacturer_id", manf_id);
qdev_prop_set_uint8(dev, "chip_id", chip_id);
if (blk) {
- qdev_prop_set_drive_nofail(dev, "drive", blk);
+ qdev_prop_set_drive(dev, "drive", blk, &error_fatal);
}
qdev_init_nofail(dev);
diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-system.c
index d515e99..1589aba 100644
--- a/hw/core/qdev-properties-system.c
+++ b/hw/core/qdev-properties-system.c
@@ -364,12 +364,6 @@ void qdev_prop_set_drive(DeviceState *dev, const char *name,
name, errp);
}
-void qdev_prop_set_drive_nofail(DeviceState *dev, const char *name,
- BlockBackend *value)
-{
- qdev_prop_set_drive(dev, name, value, &error_fatal);
-}
-
void qdev_prop_set_chr(DeviceState *dev, const char *name,
CharDriverState *value)
{
diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
index 788b361..1f83109 100644
--- a/hw/ide/qdev.c
+++ b/hw/ide/qdev.c
@@ -118,7 +118,8 @@ IDEDevice *ide_create_drive(IDEBus *bus, int unit, DriveInfo *drive)
dev = qdev_create(&bus->qbus, drive->media_cd ? "ide-cd" : "ide-hd");
qdev_prop_set_uint32(dev, "unit", unit);
- qdev_prop_set_drive_nofail(dev, "drive", blk_by_legacy_dinfo(drive));
+ qdev_prop_set_drive(dev, "drive", blk_by_legacy_dinfo(drive),
+ &error_fatal);
qdev_init_nofail(dev);
return DO_UPCAST(IDEDevice, qdev, dev);
}
diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c
index 3b1fcec..3803065 100644
--- a/hw/isa/pc87312.c
+++ b/hw/isa/pc87312.c
@@ -324,14 +324,14 @@ static void pc87312_realize(DeviceState *dev, Error **errp)
/* FIXME use a qdev drive property instead of drive_get() */
drive = drive_get(IF_FLOPPY, 0, 0);
if (drive != NULL) {
- qdev_prop_set_drive_nofail(d, "driveA",
- blk_by_legacy_dinfo(drive));
+ qdev_prop_set_drive(d, "driveA", blk_by_legacy_dinfo(drive),
+ &error_fatal);
}
/* FIXME use a qdev drive property instead of drive_get() */
drive = drive_get(IF_FLOPPY, 0, 1);
if (drive != NULL) {
- qdev_prop_set_drive_nofail(d, "driveB",
- blk_by_legacy_dinfo(drive));
+ qdev_prop_set_drive(d, "driveB", blk_by_legacy_dinfo(drive),
+ &error_fatal);
}
qdev_init_nofail(d);
s->fdc.dev = isa;
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 6bfb908..addb9fc 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1213,7 +1213,8 @@ static void spapr_create_nvram(sPAPRMachineState *spapr)
DriveInfo *dinfo = drive_get(IF_PFLASH, 0, 0);
if (dinfo) {
- qdev_prop_set_drive_nofail(dev, "drive", blk_by_legacy_dinfo(dinfo));
+ qdev_prop_set_drive(dev, "drive", blk_by_legacy_dinfo(dinfo),
+ &error_fatal);
}
qdev_init_nofail(dev);
diff --git a/include/hw/qdev-properties.h b/include/hw/qdev-properties.h
index 77538a8..254afd8 100644
--- a/include/hw/qdev-properties.h
+++ b/include/hw/qdev-properties.h
@@ -180,8 +180,6 @@ void qdev_prop_set_chr(DeviceState *dev, const char *name, CharDriverState *valu
void qdev_prop_set_netdev(DeviceState *dev, const char *name, NetClientState *value);
void qdev_prop_set_drive(DeviceState *dev, const char *name,
BlockBackend *value, Error **errp);
-void qdev_prop_set_drive_nofail(DeviceState *dev, const char *name,
- BlockBackend *value);
void qdev_prop_set_macaddr(DeviceState *dev, const char *name, uint8_t *value);
void qdev_prop_set_enum(DeviceState *dev, const char *name, int value);
/* FIXME: Remove opaque pointer properties. */
--
2.4.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH v2 2/2] hw: Inline the qdev_prop_set_drive_nofail() wrapper
2015-12-10 16:29 ` [Qemu-devel] [PATCH v2 2/2] hw: Inline the qdev_prop_set_drive_nofail() wrapper Markus Armbruster
@ 2015-12-10 16:50 ` Peter Maydell
0 siblings, 0 replies; 9+ messages in thread
From: Peter Maydell @ 2015-12-10 16:50 UTC (permalink / raw)
To: Markus Armbruster; +Cc: Paolo Bonzini, QEMU Developers
On 10 December 2015 at 16:29, Markus Armbruster <armbru@redhat.com> wrote:
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
> hw/arm/nseries.c | 4 ++--
> hw/block/fdc.c | 15 ++++++++++-----
> hw/block/nand.c | 2 +-
> hw/core/qdev-properties-system.c | 6 ------
> hw/ide/qdev.c | 3 ++-
> hw/isa/pc87312.c | 8 ++++----
> hw/ppc/spapr.c | 3 ++-
> include/hw/qdev-properties.h | 2 --
> 8 files changed, 21 insertions(+), 22 deletions(-)
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
thanks
-- PMM
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/2] Use error_fatal to simplify obvious fatal errors
2015-12-10 16:29 ` [Qemu-devel] [PATCH v2 1/2] " Markus Armbruster
@ 2015-12-14 16:55 ` Eduardo Habkost
2015-12-14 19:25 ` Markus Armbruster
0 siblings, 1 reply; 9+ messages in thread
From: Eduardo Habkost @ 2015-12-14 16:55 UTC (permalink / raw)
To: Markus Armbruster; +Cc: pbonzini, qemu-arm, qemu-devel, Michael S. Tsirkin
On Thu, Dec 10, 2015 at 05:29:14PM +0100, Markus Armbruster wrote:
> Done with this admittedly crude Coccinelle semantic patch:
>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
You can rewrite the semantic patch as:
@@
type T;
identifier FUN, RET;
expression list ARGS;
expression ERR, EC;
@@
(
- T RET = FUN(ARGS, &ERR);
+ T RET = FUN(ARGS, &error_fatal);
|
- RET = FUN(ARGS, &ERR);
+ RET = FUN(ARGS, &error_fatal);
|
- FUN(ARGS, &ERR);
+ FUN(ARGS, &error_fatal);
)
- if (ERR != NULL) {
- error_report_err(ERR);
- exit(EC);
- }
Coccinelle seems to have some magic to make "LIST," also match
with an empty list.
> @@
> identifier FUN;
> expression ERR, EC;
> @@
> - FUN(&ERR);
> - if (ERR != NULL) {
> - error_report_err(ERR);
> - exit(EC);
> - }
> + FUN(&error_fatal);
> @@
> identifier FUN;
> expression ARG1, ERR, EC;
> @@
> - FUN(ARG1, &ERR);
> - if (ERR != NULL) {
> - error_report_err(ERR);
> - exit(EC);
> - }
> + FUN(ARG1, &error_fatal);
> @@
> identifier FUN;
> expression ARG1, ARG2, ERR, EC;
> @@
> - FUN(ARG1, ARG2, &ERR);
> - if (ERR != NULL) {
> - error_report_err(ERR);
> - exit(EC);
> - }
> + FUN(ARG1, ARG2, &error_fatal);
> @@
> identifier FUN;
> expression ARG1, ARG2, ARG3, ERR, EC;
> @@
> - FUN(ARG1, ARG2, ARG3, &ERR);
> - if (ERR != NULL) {
> - error_report_err(ERR);
> - exit(EC);
> - }
> + FUN(ARG1, ARG2, ARG3, &error_fatal);
> @@
> identifier FUN;
> expression RET, ERR, EC;
> @@
> - RET = FUN(&ERR);
> - if (ERR != NULL) {
> - error_report_err(ERR);
> - exit(EC);
> - }
> + RET = FUN(&error_fatal);
> @@
> identifier FUN;
> expression RET, ARG1, ERR, EC;
> @@
> - RET = FUN(ARG1, &ERR);
> - if (ERR != NULL) {
> - error_report_err(ERR);
> - exit(EC);
> - }
> + RET = FUN(ARG1, &error_fatal);
> @@
> identifier FUN;
> expression RET, ARG1, ARG2, ERR, EC;
> @@
> - RET = FUN(ARG1, ARG2, &ERR);
> - if (ERR != NULL) {
> - error_report_err(ERR);
> - exit(EC);
> - }
> + RET = FUN(ARG1, ARG2, &error_fatal);
> @@
> identifier FUN;
> expression RET, ARG1, ARG2, ARG3, ERR, EC;
> @@
> - RET = FUN(ARG1, ARG2, ARG3, &ERR);
> - if (ERR != NULL) {
> - error_report_err(ERR);
> - exit(EC);
> - }
> + RET = FUN(ARG1, ARG2, ARG3, &error_fatal);
> @@
> type T;
> identifier FUN, RET;
> expression ERR, EC;
> @@
> - T RET = FUN(&ERR);
> - if (ERR != NULL) {
> - error_report_err(ERR);
> - exit(EC);
> - }
> + T RET = FUN(&error_fatal);
> @@
> type T;
> identifier FUN, RET;
> expression ARG1, ERR, EC;
> @@
> - T RET = FUN(ARG1, &ERR);
> - if (ERR != NULL) {
> - error_report_err(ERR);
> - exit(EC);
> - }
> + T RET = FUN(ARG1, &error_fatal);
> @@
> type T;
> identifier FUN, RET;
> expression ARG1, ARG2, ERR, EC;
> @@
> - T RET = FUN(ARG1, ARG2, &ERR);
> - if (ERR != NULL) {
> - error_report_err(ERR);
> - exit(EC);
> - }
> + T RET = FUN(ARG1, ARG2, &error_fatal);
> @@
> type T;
> identifier FUN, RET;
> expression ARG1, ARG2, ARG3, ERR, EC;
> @@
> - T RET = FUN(ARG1, ARG2, ARG3, &ERR);
> - if (ERR != NULL) {
> - error_report_err(ERR);
> - exit(EC);
> - }
> + T RET = FUN(ARG1, ARG2, ARG3, &error_fatal);
>
> This leaves dead Error * variables behind, cleaned up manually.
>
--
Eduardo
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/2] Use error_fatal to simplify obvious fatal errors
2015-12-14 16:55 ` Eduardo Habkost
@ 2015-12-14 19:25 ` Markus Armbruster
2015-12-15 18:41 ` [Qemu-devel] [Qemu-arm] " Peter Maydell
0 siblings, 1 reply; 9+ messages in thread
From: Markus Armbruster @ 2015-12-14 19:25 UTC (permalink / raw)
To: Eduardo Habkost; +Cc: pbonzini, qemu-arm, qemu-devel, Michael S. Tsirkin
Eduardo Habkost <ehabkost@redhat.com> writes:
> On Thu, Dec 10, 2015 at 05:29:14PM +0100, Markus Armbruster wrote:
>> Done with this admittedly crude Coccinelle semantic patch:
>>
>
> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
>
> You can rewrite the semantic patch as:
>
> @@
> type T;
> identifier FUN, RET;
> expression list ARGS;
> expression ERR, EC;
> @@
> (
> - T RET = FUN(ARGS, &ERR);
> + T RET = FUN(ARGS, &error_fatal);
> |
> - RET = FUN(ARGS, &ERR);
> + RET = FUN(ARGS, &error_fatal);
> |
> - FUN(ARGS, &ERR);
> + FUN(ARGS, &error_fatal);
> )
> - if (ERR != NULL) {
> - error_report_err(ERR);
> - exit(EC);
> - }
>
>
> Coccinelle seems to have some magic to make "LIST," also match
> with an empty list.
Same output as my script, except it doesn't mess up zynq_init(). Sold!
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [Qemu-arm] [PATCH v2 1/2] Use error_fatal to simplify obvious fatal errors
2015-12-14 19:25 ` Markus Armbruster
@ 2015-12-15 18:41 ` Peter Maydell
2015-12-16 7:43 ` Markus Armbruster
0 siblings, 1 reply; 9+ messages in thread
From: Peter Maydell @ 2015-12-15 18:41 UTC (permalink / raw)
To: Markus Armbruster
Cc: Paolo Bonzini, qemu-arm, Michael S. Tsirkin, Eduardo Habkost,
QEMU Developers
On 14 December 2015 at 19:25, Markus Armbruster <armbru@redhat.com> wrote:
> Eduardo Habkost <ehabkost@redhat.com> writes:
>
>> On Thu, Dec 10, 2015 at 05:29:14PM +0100, Markus Armbruster wrote:
>>> Done with this admittedly crude Coccinelle semantic patch:
>>>
>>
>> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
>>
>> You can rewrite the semantic patch as:
[...]
>> Coccinelle seems to have some magic to make "LIST," also match
>> with an empty list.
>
> Same output as my script, except it doesn't mess up zynq_init(). Sold!
Do you mean by this that you're planning to send a v3, or would you
like me to apply v2 to target-arm.next?
thanks
-- PMM
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [Qemu-arm] [PATCH v2 1/2] Use error_fatal to simplify obvious fatal errors
2015-12-15 18:41 ` [Qemu-devel] [Qemu-arm] " Peter Maydell
@ 2015-12-16 7:43 ` Markus Armbruster
2015-12-16 11:17 ` Peter Maydell
0 siblings, 1 reply; 9+ messages in thread
From: Markus Armbruster @ 2015-12-16 7:43 UTC (permalink / raw)
To: Peter Maydell
Cc: QEMU Developers, Paolo Bonzini, qemu-arm, Eduardo Habkost,
Michael S. Tsirkin
Peter Maydell <peter.maydell@linaro.org> writes:
> On 14 December 2015 at 19:25, Markus Armbruster <armbru@redhat.com> wrote:
>> Eduardo Habkost <ehabkost@redhat.com> writes:
>>
>>> On Thu, Dec 10, 2015 at 05:29:14PM +0100, Markus Armbruster wrote:
>>>> Done with this admittedly crude Coccinelle semantic patch:
>>>>
>>>
>>> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
>>>
>>> You can rewrite the semantic patch as:
> [...]
>>> Coccinelle seems to have some magic to make "LIST," also match
>>> with an empty list.
>>
>> Same output as my script, except it doesn't mess up zynq_init(). Sold!
>
> Do you mean by this that you're planning to send a v3, or would you
> like me to apply v2 to target-arm.next?
I only changed PATCH 1's commit message since v2 (current version
appended). I plan to include the series in a pull request in my role as
error reporting maintainer, but I don't mind "losing" patches to other
maintainers on the way.
Use error_fatal to simplify obvious fatal errors
Done with this Coccinelle semantic patch:
@@
type T;
identifier FUN, RET;
expression list ARGS;
expression ERR, EC;
@@
(
- T RET = FUN(ARGS, &ERR);
+ T RET = FUN(ARGS, &error_fatal);
|
- RET = FUN(ARGS, &ERR);
+ RET = FUN(ARGS, &error_fatal);
|
- FUN(ARGS, &ERR);
+ FUN(ARGS, &error_fatal);
)
- if (ERR != NULL) {
- error_report_err(ERR);
- exit(EC);
- }
This is actually a more elegant version of my initial semantic patch
by courtesy of Eduardo.
It leaves dead Error * variables behind, cleaned up manually.
Cc: qemu-arm@nongnu.org
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [Qemu-arm] [PATCH v2 1/2] Use error_fatal to simplify obvious fatal errors
2015-12-16 7:43 ` Markus Armbruster
@ 2015-12-16 11:17 ` Peter Maydell
0 siblings, 0 replies; 9+ messages in thread
From: Peter Maydell @ 2015-12-16 11:17 UTC (permalink / raw)
To: Markus Armbruster
Cc: QEMU Developers, Paolo Bonzini, qemu-arm, Eduardo Habkost,
Michael S. Tsirkin
On 16 December 2015 at 07:43, Markus Armbruster <armbru@redhat.com> wrote:
> Peter Maydell <peter.maydell@linaro.org> writes:
>> Do you mean by this that you're planning to send a v3, or would you
>> like me to apply v2 to target-arm.next?
>
> I only changed PATCH 1's commit message since v2 (current version
> appended). I plan to include the series in a pull request in my role as
> error reporting maintainer, but I don't mind "losing" patches to other
> maintainers on the way.
OK, I'm happy to let you take it via your tree.
thanks
-- PMM
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2015-12-16 11:17 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-10 16:29 [Qemu-devel] [PATCH v2 0/2] Use error_fatal to simplify obvious fatal errors Markus Armbruster
2015-12-10 16:29 ` [Qemu-devel] [PATCH v2 1/2] " Markus Armbruster
2015-12-14 16:55 ` Eduardo Habkost
2015-12-14 19:25 ` Markus Armbruster
2015-12-15 18:41 ` [Qemu-devel] [Qemu-arm] " Peter Maydell
2015-12-16 7:43 ` Markus Armbruster
2015-12-16 11:17 ` Peter Maydell
2015-12-10 16:29 ` [Qemu-devel] [PATCH v2 2/2] hw: Inline the qdev_prop_set_drive_nofail() wrapper Markus Armbruster
2015-12-10 16:50 ` Peter Maydell
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.