[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC v3 7/8] memory: extend memory_region_add_subregion() t
From: |
Igor Mammedov |
Subject: |
[Qemu-devel] [RFC v3 7/8] memory: extend memory_region_add_subregion() to support error reporting |
Date: |
Wed, 8 Jul 2015 11:46:47 +0200 |
extends memory_region_add_subregion() by adding Error**
argument to allow t fail and return a error from it.
Signed-off-by: Igor Mammedov <address@hidden>
---
hw/acpi/core.c | 6 ++--
hw/acpi/cpu_hotplug.c | 2 +-
hw/acpi/ich9.c | 8 +++--
hw/acpi/memory_hotplug.c | 3 +-
hw/acpi/pcihp.c | 3 +-
hw/acpi/piix4.c | 6 ++--
hw/alpha/typhoon.c | 16 ++++-----
hw/arm/armv7m.c | 2 +-
hw/arm/cubieboard.c | 2 +-
hw/arm/digic_boards.c | 2 +-
hw/arm/exynos4210.c | 12 +++----
hw/arm/highbank.c | 4 +--
hw/arm/integratorcp.c | 5 +--
hw/arm/kzm.c | 9 +++--
hw/arm/mainstone.c | 2 +-
hw/arm/musicpal.c | 5 +--
hw/arm/omap1.c | 59 ++++++++++++++++++--------------
hw/arm/omap2.c | 8 +++--
hw/arm/omap_sx1.c | 19 ++++++----
hw/arm/palm.c | 14 +++++---
hw/arm/pxa2xx.c | 30 ++++++++++------
hw/arm/realview.c | 8 ++---
hw/arm/spitz.c | 2 +-
hw/arm/stellaris.c | 7 ++--
hw/arm/stm32f205_soc.c | 8 +++--
hw/arm/strongarm.c | 2 +-
hw/arm/tosa.c | 2 +-
hw/arm/versatilepb.c | 2 +-
hw/arm/vexpress.c | 15 ++++----
hw/arm/virt.c | 12 ++++---
hw/arm/xilinx_zynq.c | 5 +--
hw/arm/xlnx-ep108.c | 3 +-
hw/arm/xlnx-zynqmp.c | 3 +-
hw/block/onenand.c | 2 +-
hw/block/pflash_cfi02.c | 3 +-
hw/char/debugcon.c | 2 +-
hw/char/mcf_uart.c | 2 +-
hw/char/omap_uart.c | 2 +-
hw/char/parallel.c | 2 +-
hw/char/serial-pci.c | 2 +-
hw/char/serial.c | 4 +--
hw/char/sh_serial.c | 6 ++--
hw/core/platform-bus.c | 2 +-
hw/core/sysbus.c | 4 +--
hw/cpu/a15mpcore.c | 6 ++--
hw/cpu/a9mpcore.c | 18 ++++++----
hw/cpu/arm11mpcore.c | 15 +++++---
hw/cris/axis_dev88.c | 10 +++---
hw/display/cirrus_vga.c | 11 +++---
hw/display/omap_dss.c | 2 +-
hw/display/omap_lcdc.c | 2 +-
hw/display/pxa2xx_lcd.c | 2 +-
hw/display/sm501.c | 9 ++---
hw/display/tc6393xb.c | 5 +--
hw/display/vga-isa-mm.c | 6 ++--
hw/display/vga-pci.c | 6 ++--
hw/display/vga.c | 3 +-
hw/dma/etraxfs_dma.c | 3 +-
hw/dma/i8257.c | 5 +--
hw/dma/omap_dma.c | 4 +--
hw/dma/rc4030.c | 4 +--
hw/i386/kvm/pci-assign.c | 6 ++--
hw/i386/pc.c | 12 ++++---
hw/i386/pc_sysfw.c | 2 +-
hw/ide/cmd646.c | 6 ++--
hw/ide/piix.c | 6 ++--
hw/ide/via.c | 6 ++--
hw/input/pxa2xx_keypad.c | 2 +-
hw/intc/apic_common.c | 3 +-
hw/intc/armv7m_nvic.c | 5 +--
hw/intc/exynos4210_gic.c | 6 ++--
hw/intc/openpic.c | 2 +-
hw/intc/realview_gic.c | 6 ++--
hw/intc/sh_intc.c | 6 ++--
hw/isa/apm.c | 2 +-
hw/isa/isa-bus.c | 3 +-
hw/isa/vt82c686.c | 7 ++--
hw/lm32/lm32_boards.c | 6 ++--
hw/lm32/milkymist.c | 3 +-
hw/m68k/an5206.c | 5 +--
hw/m68k/dummy_m68k.c | 2 +-
hw/m68k/mcf5206.c | 2 +-
hw/m68k/mcf5208.c | 10 +++---
hw/m68k/mcf_intc.c | 2 +-
hw/mem/pc-dimm.c | 2 +-
hw/microblaze/petalogix_ml605_mmu.c | 6 ++--
hw/microblaze/petalogix_s3adsp1800_mmu.c | 5 +--
hw/mips/gt64xxx_pci.c | 9 ++---
hw/mips/mips_fulong2e.c | 5 +--
hw/mips/mips_jazz.c | 30 ++++++++++------
hw/mips/mips_malta.c | 17 +++++----
hw/mips/mips_mipssim.c | 11 +++---
hw/mips/mips_r4k.c | 14 +++++---
hw/misc/debugexit.c | 2 +-
hw/misc/ivshmem.c | 4 +--
hw/misc/macio/macio.c | 24 +++++++------
hw/misc/omap_gpmc.c | 7 ++--
hw/misc/omap_l4.c | 3 +-
hw/misc/omap_sdrc.c | 2 +-
hw/misc/pc-testdev.c | 11 +++---
hw/moxie/moxiesim.c | 4 +--
hw/net/fsl_etsec/etsec.c | 3 +-
hw/net/mcf_fec.c | 2 +-
hw/openrisc/openrisc_sim.c | 6 ++--
hw/pci-host/apb.c | 3 +-
hw/pci-host/grackle.c | 2 +-
hw/pci-host/piix.c | 3 +-
hw/pci-host/ppce500.c | 13 ++++---
hw/pci-host/prep.c | 24 ++++++++-----
hw/pci-host/q35.c | 8 +++--
hw/pci-host/uninorth.c | 4 +--
hw/pci/msix.c | 6 ++--
hw/pci/pcie_host.c | 3 +-
hw/pci/shpc.c | 2 +-
hw/pcmcia/pxa2xx.c | 6 ++--
hw/ppc/e500.c | 14 ++++----
hw/ppc/mac_newworld.c | 14 +++++---
hw/ppc/mac_oldworld.c | 6 ++--
hw/ppc/ppc405_boards.c | 12 ++++---
hw/ppc/ppc405_uc.c | 16 +++++----
hw/ppc/ppc440_bamboo.c | 3 +-
hw/ppc/ppc4xx_devs.c | 4 +--
hw/ppc/ppc4xx_pci.c | 9 +++--
hw/ppc/prep.c | 4 +--
hw/ppc/spapr.c | 4 +--
hw/ppc/spapr_pci.c | 8 ++---
hw/ppc/spapr_pci_vfio.c | 2 +-
hw/ppc/virtex_ml507.c | 3 +-
hw/s390x/s390-virtio-ccw.c | 2 +-
hw/s390x/s390-virtio.c | 2 +-
hw/s390x/sclp.c | 3 +-
hw/sd/omap_mmc.c | 2 +-
hw/sd/pxa2xx_mmci.c | 2 +-
hw/sh4/r2d.c | 5 +--
hw/sh4/sh7750.c | 21 ++++++++----
hw/sh4/sh_pci.c | 6 ++--
hw/sh4/shix.c | 6 ++--
hw/sparc/leon3.c | 6 ++--
hw/sparc64/sun4u.c | 2 +-
hw/timer/m48t59.c | 3 +-
hw/timer/sh_timer.c | 6 ++--
hw/tpm/tpm_tis.c | 2 +-
hw/tricore/tricore_testboard.c | 12 +++----
hw/unicore32/puv3.c | 6 ++--
hw/usb/hcd-ehci-sysbus.c | 2 +-
hw/usb/hcd-ehci.c | 8 +++--
hw/usb/hcd-xhci.c | 15 +++++---
hw/vfio/common.c | 2 +-
hw/vfio/pci.c | 6 ++--
hw/virtio/virtio-pci.c | 3 +-
hw/xtensa/sim.c | 5 +--
hw/xtensa/xtfpga.c | 18 +++++-----
include/exec/memory.h | 3 +-
ioport.c | 2 +-
memory.c | 9 ++---
numa.c | 2 +-
156 files changed, 619 insertions(+), 420 deletions(-)
diff --git a/hw/acpi/core.c b/hw/acpi/core.c
index fe6215a..4269240 100644
--- a/hw/acpi/core.c
+++ b/hw/acpi/core.c
@@ -465,7 +465,7 @@ void acpi_pm1_evt_init(ACPIREGS *ar, acpi_update_sci_fn
update_sci,
ar->pm1.evt.update_sci = update_sci;
memory_region_init_io(&ar->pm1.evt.io, memory_region_owner(parent),
&acpi_pm_evt_ops, ar, "acpi-evt", 4);
- memory_region_add_subregion(parent, 0, &ar->pm1.evt.io);
+ memory_region_add_subregion(parent, 0, &ar->pm1.evt.io, &error_abort);
}
/* ACPI PM_TMR */
@@ -529,7 +529,7 @@ void acpi_pm_tmr_init(ACPIREGS *ar, acpi_update_sci_fn
update_sci,
memory_region_init_io(&ar->tmr.io, memory_region_owner(parent),
&acpi_pm_tmr_ops, ar, "acpi-tmr", 4);
memory_region_clear_global_locking(&ar->tmr.io);
- memory_region_add_subregion(parent, 8, &ar->tmr.io);
+ memory_region_add_subregion(parent, 8, &ar->tmr.io, &error_abort);
}
void acpi_pm_tmr_reset(ACPIREGS *ar)
@@ -604,7 +604,7 @@ void acpi_pm1_cnt_init(ACPIREGS *ar, MemoryRegion *parent,
qemu_register_wakeup_notifier(&ar->wakeup);
memory_region_init_io(&ar->pm1.cnt.io, memory_region_owner(parent),
&acpi_pm_cnt_ops, ar, "acpi-cnt", 2);
- memory_region_add_subregion(parent, 4, &ar->pm1.cnt.io);
+ memory_region_add_subregion(parent, 4, &ar->pm1.cnt.io, &error_abort);
fw_cfg = fw_cfg_find();
if (fw_cfg) {
diff --git a/hw/acpi/cpu_hotplug.c b/hw/acpi/cpu_hotplug.c
index f5b9972..7678fec 100644
--- a/hw/acpi/cpu_hotplug.c
+++ b/hw/acpi/cpu_hotplug.c
@@ -72,5 +72,5 @@ void acpi_cpu_hotplug_init(MemoryRegion *parent, Object
*owner,
}
memory_region_init_io(&gpe_cpu->io, owner, &AcpiCpuHotplug_ops,
gpe_cpu, "acpi-cpu-hotplug", ACPI_GPE_PROC_LEN);
- memory_region_add_subregion(parent, base, &gpe_cpu->io);
+ memory_region_add_subregion(parent, base, &gpe_cpu->io, &error_abort);
}
diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c
index f4dc7a8..daf5a28 100644
--- a/hw/acpi/ich9.c
+++ b/hw/acpi/ich9.c
@@ -215,7 +215,7 @@ void ich9_pm_init(PCIDevice *lpc_pci, ICH9LPCPMRegs *pm,
bool smm_enabled,
memory_region_init(&pm->io, OBJECT(lpc_pci), "ich9-pm", ICH9_PMIO_SIZE);
memory_region_set_enabled(&pm->io, false);
memory_region_add_subregion(pci_address_space_io(lpc_pci),
- 0, &pm->io);
+ 0, &pm->io, &error_abort);
acpi_pm_tmr_init(&pm->acpi_regs, ich9_pm_update_sci_fn, &pm->io);
acpi_pm1_evt_init(&pm->acpi_regs, ich9_pm_update_sci_fn, &pm->io);
@@ -225,11 +225,13 @@ void ich9_pm_init(PCIDevice *lpc_pci, ICH9LPCPMRegs *pm,
bool smm_enabled,
acpi_gpe_init(&pm->acpi_regs, ICH9_PMIO_GPE0_LEN);
memory_region_init_io(&pm->io_gpe, OBJECT(lpc_pci), &ich9_gpe_ops, pm,
"acpi-gpe0", ICH9_PMIO_GPE0_LEN);
- memory_region_add_subregion(&pm->io, ICH9_PMIO_GPE0_STS, &pm->io_gpe);
+ memory_region_add_subregion(&pm->io, ICH9_PMIO_GPE0_STS, &pm->io_gpe,
+ &error_abort);
memory_region_init_io(&pm->io_smi, OBJECT(lpc_pci), &ich9_smi_ops, pm,
"acpi-smi", 8);
- memory_region_add_subregion(&pm->io, ICH9_PMIO_SMI_EN, &pm->io_smi);
+ memory_region_add_subregion(&pm->io, ICH9_PMIO_SMI_EN, &pm->io_smi,
+ &error_abort);
pm->smm_enabled = smm_enabled;
pm->irq = sci_irq;
diff --git a/hw/acpi/memory_hotplug.c b/hw/acpi/memory_hotplug.c
index 2ff0d5c..81695cc 100644
--- a/hw/acpi/memory_hotplug.c
+++ b/hw/acpi/memory_hotplug.c
@@ -188,7 +188,8 @@ void acpi_memory_hotplug_init(MemoryRegion *as, Object
*owner,
state->devs = g_malloc0(sizeof(*state->devs) * state->dev_count);
memory_region_init_io(&state->io, owner, &acpi_memory_hotplug_ops, state,
"acpi-mem-hotplug", ACPI_MEMORY_HOTPLUG_IO_LEN);
- memory_region_add_subregion(as, ACPI_MEMORY_HOTPLUG_BASE, &state->io);
+ memory_region_add_subregion(as, ACPI_MEMORY_HOTPLUG_BASE, &state->io,
+ &error_abort);
}
/**
diff --git a/hw/acpi/pcihp.c b/hw/acpi/pcihp.c
index fbbc4dd..e1b804a 100644
--- a/hw/acpi/pcihp.c
+++ b/hw/acpi/pcihp.c
@@ -314,7 +314,8 @@ void acpi_pcihp_init(Object *owner, AcpiPciHpState *s,
PCIBus *root_bus,
memory_region_init_io(&s->io, owner, &acpi_pcihp_io_ops, s,
"acpi-pci-hotplug", s->io_len);
- memory_region_add_subregion(address_space_io, s->io_base, &s->io);
+ memory_region_add_subregion(address_space_io, s->io_base, &s->io,
+ &error_abort);
object_property_add_uint16_ptr(owner, ACPI_PCIHP_IO_BASE_PROP, &s->io_base,
&error_abort);
diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c
index 2cd2fee..634986c 100644
--- a/hw/acpi/piix4.c
+++ b/hw/acpi/piix4.c
@@ -467,12 +467,12 @@ static void piix4_pm_realize(PCIDevice *dev, Error **errp)
pm_smbus_init(DEVICE(dev), &s->smb);
memory_region_set_enabled(&s->smb.io, pci_conf[0xd2] & 1);
memory_region_add_subregion(pci_address_space_io(dev),
- s->smb_io_base, &s->smb.io);
+ s->smb_io_base, &s->smb.io, &error_abort);
memory_region_init(&s->io, OBJECT(s), "piix4-pm", 64);
memory_region_set_enabled(&s->io, false);
memory_region_add_subregion(pci_address_space_io(dev),
- 0, &s->io);
+ 0, &s->io, &error_abort);
acpi_pm_tmr_init(&s->ar, pm_tmr_timer, &s->io);
acpi_pm1_evt_init(&s->ar, pm_tmr_timer, &s->io);
@@ -563,7 +563,7 @@ static void piix4_acpi_system_hot_add_init(MemoryRegion
*parent,
{
memory_region_init_io(&s->io_gpe, OBJECT(s), &piix4_gpe_ops, s,
"acpi-gpe0", GPE_LEN);
- memory_region_add_subregion(parent, GPE_BASE, &s->io_gpe);
+ memory_region_add_subregion(parent, GPE_BASE, &s->io_gpe, &error_abort);
acpi_pcihp_init(OBJECT(s), &s->acpi_pci_hotplug, bus, parent,
s->use_acpi_pci_hotplug);
diff --git a/hw/alpha/typhoon.c b/hw/alpha/typhoon.c
index 421162e..4881491 100644
--- a/hw/alpha/typhoon.c
+++ b/hw/alpha/typhoon.c
@@ -847,7 +847,7 @@ PCIBus *typhoon_init(ram_addr_t ram_size, ISABus **isa_bus,
but the address space hole reserved at this point is 8TB. */
memory_region_allocate_system_memory(&s->ram_region, OBJECT(s), "ram",
ram_size);
- memory_region_add_subregion(addr_space, 0, &s->ram_region);
+ memory_region_add_subregion(addr_space, 0, &s->ram_region, &error_abort);
/* TIGbus, 0x801.0000.0000, 1GB. */
/* ??? The TIGbus is used for delivering interrupts, and access to
@@ -857,30 +857,30 @@ PCIBus *typhoon_init(ram_addr_t ram_size, ISABus
**isa_bus,
memory_region_init_io(&s->pchip.region, OBJECT(s), &pchip_ops, s, "pchip0",
256*MB);
memory_region_add_subregion(addr_space, 0x80180000000ULL,
- &s->pchip.region);
+ &s->pchip.region, &error_abort);
/* Cchip CSRs, 0x801.A000.0000, 256MB. */
memory_region_init_io(&s->cchip.region, OBJECT(s), &cchip_ops, s, "cchip0",
256*MB);
memory_region_add_subregion(addr_space, 0x801a0000000ULL,
- &s->cchip.region);
+ &s->cchip.region, &error_abort);
/* Dchip CSRs, 0x801.B000.0000, 256MB. */
memory_region_init_io(&s->dchip_region, OBJECT(s), &dchip_ops, s, "dchip0",
256*MB);
memory_region_add_subregion(addr_space, 0x801b0000000ULL,
- &s->dchip_region);
+ &s->dchip_region, &error_abort);
/* Pchip0 PCI memory, 0x800.0000.0000, 4GB. */
memory_region_init(&s->pchip.reg_mem, OBJECT(s), "pci0-mem", 4*GB);
memory_region_add_subregion(addr_space, 0x80000000000ULL,
- &s->pchip.reg_mem);
+ &s->pchip.reg_mem, &error_abort);
/* Pchip0 PCI I/O, 0x801.FC00.0000, 32MB. */
memory_region_init_io(&s->pchip.reg_io, OBJECT(s), &alpha_pci_ignore_ops,
NULL, "pci0-io", 32*MB);
memory_region_add_subregion(addr_space, 0x801fc000000ULL,
- &s->pchip.reg_io);
+ &s->pchip.reg_io, &error_abort);
b = pci_register_bus(dev, "pci",
typhoon_set_irq, sys_map_irq, s,
@@ -898,13 +898,13 @@ PCIBus *typhoon_init(ram_addr_t ram_size, ISABus
**isa_bus,
memory_region_init_io(&s->pchip.reg_iack, OBJECT(s), &alpha_pci_iack_ops,
b, "pci0-iack", 64*MB);
memory_region_add_subregion(addr_space, 0x801f8000000ULL,
- &s->pchip.reg_iack);
+ &s->pchip.reg_iack, &error_abort);
/* Pchip0 PCI configuration, 0x801.FE00.0000, 16MB. */
memory_region_init_io(&s->pchip.reg_conf, OBJECT(s), &alpha_pci_conf1_ops,
b, "pci0-conf", 16*MB);
memory_region_add_subregion(addr_space, 0x801fe000000ULL,
- &s->pchip.reg_conf);
+ &s->pchip.reg_conf, &error_abort);
/* For the record, these are the mappings for the second PCI bus.
We can get away with not implementing them because we indicate
diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c
index c6eab6d..e4739fb 100644
--- a/hw/arm/armv7m.c
+++ b/hw/arm/armv7m.c
@@ -231,7 +231,7 @@ qemu_irq *armv7m_init(MemoryRegion *system_memory, int
mem_size, int num_irq,
when returning from an exception. */
memory_region_init_ram(hack, NULL, "armv7m.hack", 0x1000, &error_abort);
vmstate_register_ram_global(hack);
- memory_region_add_subregion(system_memory, 0xfffff000, hack);
+ memory_region_add_subregion(system_memory, 0xfffff000, hack, &error_abort);
qemu_register_reset(armv7m_reset, cpu);
return pic;
diff --git a/hw/arm/cubieboard.c b/hw/arm/cubieboard.c
index 1582250..d02bdfa 100644
--- a/hw/arm/cubieboard.c
+++ b/hw/arm/cubieboard.c
@@ -66,7 +66,7 @@ static void cubieboard_init(MachineState *machine)
memory_region_allocate_system_memory(&s->sdram, NULL, "cubieboard.ram",
machine->ram_size);
memory_region_add_subregion(get_system_memory(), AW_A10_SDRAM_BASE,
- &s->sdram);
+ &s->sdram, &error_abort);
cubieboard_binfo.ram_size = machine->ram_size;
cubieboard_binfo.kernel_filename = machine->kernel_filename;
diff --git a/hw/arm/digic_boards.c b/hw/arm/digic_boards.c
index f8ba9e5..7d212d7 100644
--- a/hw/arm/digic_boards.c
+++ b/hw/arm/digic_boards.c
@@ -52,7 +52,7 @@ typedef struct DigicBoard {
static void digic4_board_setup_ram(DigicBoardState *s, hwaddr ram_size)
{
memory_region_allocate_system_memory(&s->ram, NULL, "ram", ram_size);
- memory_region_add_subregion(get_system_memory(), 0, &s->ram);
+ memory_region_add_subregion(get_system_memory(), 0, &s->ram, &error_abort);
}
static void digic4_board_init(DigicBoard *board)
diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c
index c55fab8..d9f01cf 100644
--- a/hw/arm/exynos4210.c
+++ b/hw/arm/exynos4210.c
@@ -255,7 +255,7 @@ Exynos4210State *exynos4210_init(MemoryRegion *system_mem,
memory_region_init_io(&s->chipid_mem, NULL, &exynos4210_chipid_and_omr_ops,
NULL, "exynos4210.chipid", sizeof(chipid_and_omr));
memory_region_add_subregion(system_mem, EXYNOS4210_CHIPID_ADDR,
- &s->chipid_mem);
+ &s->chipid_mem, &error_abort);
/* Internal ROM */
memory_region_init_ram(&s->irom_mem, NULL, "exynos4210.irom",
@@ -263,7 +263,7 @@ Exynos4210State *exynos4210_init(MemoryRegion *system_mem,
vmstate_register_ram_global(&s->irom_mem);
memory_region_set_readonly(&s->irom_mem, true);
memory_region_add_subregion(system_mem, EXYNOS4210_IROM_BASE_ADDR,
- &s->irom_mem);
+ &s->irom_mem, &error_abort);
/* mirror of iROM */
memory_region_init_alias(&s->irom_alias_mem, NULL, "exynos4210.irom_alias",
&s->irom_mem,
@@ -271,14 +271,14 @@ Exynos4210State *exynos4210_init(MemoryRegion *system_mem,
EXYNOS4210_IROM_SIZE);
memory_region_set_readonly(&s->irom_alias_mem, true);
memory_region_add_subregion(system_mem, EXYNOS4210_IROM_MIRROR_BASE_ADDR,
- &s->irom_alias_mem);
+ &s->irom_alias_mem, &error_abort);
/* Internal RAM */
memory_region_init_ram(&s->iram_mem, NULL, "exynos4210.iram",
EXYNOS4210_IRAM_SIZE, &error_abort);
vmstate_register_ram_global(&s->iram_mem);
memory_region_add_subregion(system_mem, EXYNOS4210_IRAM_BASE_ADDR,
- &s->iram_mem);
+ &s->iram_mem, &error_abort);
/* DRAM */
mem_size = ram_size;
@@ -287,14 +287,14 @@ Exynos4210State *exynos4210_init(MemoryRegion *system_mem,
mem_size - EXYNOS4210_DRAM_MAX_SIZE, &error_abort);
vmstate_register_ram_global(&s->dram1_mem);
memory_region_add_subregion(system_mem, EXYNOS4210_DRAM1_BASE_ADDR,
- &s->dram1_mem);
+ &s->dram1_mem, &error_abort);
mem_size = EXYNOS4210_DRAM_MAX_SIZE;
}
memory_region_init_ram(&s->dram0_mem, NULL, "exynos4210.dram0", mem_size,
&error_abort);
vmstate_register_ram_global(&s->dram0_mem);
memory_region_add_subregion(system_mem, EXYNOS4210_DRAM0_BASE_ADDR,
- &s->dram0_mem);
+ &s->dram0_mem, &error_abort);
/* PMU.
* The only reason of existence at the moment is that secondary CPU boot
diff --git a/hw/arm/highbank.c b/hw/arm/highbank.c
index f8353a7..aff14d5 100644
--- a/hw/arm/highbank.c
+++ b/hw/arm/highbank.c
@@ -277,12 +277,12 @@ static void calxeda_init(MachineState *machine, enum
cxmachines machine_id)
dram = g_new(MemoryRegion, 1);
memory_region_allocate_system_memory(dram, NULL, "highbank.dram",
ram_size);
/* SDRAM at address zero. */
- memory_region_add_subregion(sysmem, 0, dram);
+ memory_region_add_subregion(sysmem, 0, dram, &error_abort);
sysram = g_new(MemoryRegion, 1);
memory_region_init_ram(sysram, NULL, "highbank.sysram", 0x8000,
&error_abort);
- memory_region_add_subregion(sysmem, 0xfff88000, sysram);
+ memory_region_add_subregion(sysmem, 0xfff88000, sysram, &error_abort);
if (bios_name != NULL) {
sysboot_filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
if (sysboot_filename != NULL) {
diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c
index 0fbbf99..5a2094e 100644
--- a/hw/arm/integratorcp.c
+++ b/hw/arm/integratorcp.c
@@ -572,10 +572,11 @@ static void integratorcp_init(MachineState *machine)
/* ??? On a real system the first 1Mb is mapped as SSRAM or boot flash. */
/* ??? RAM should repeat to fill physical memory space. */
/* SDRAM at address zero*/
- memory_region_add_subregion(address_space_mem, 0, ram);
+ memory_region_add_subregion(address_space_mem, 0, ram, &error_abort);
/* And again at address 0x80000000 */
memory_region_init_alias(ram_alias, NULL, "ram.alias", ram, 0, ram_size);
- memory_region_add_subregion(address_space_mem, 0x80000000, ram_alias);
+ memory_region_add_subregion(address_space_mem, 0x80000000, ram_alias,
+ &error_abort);
dev = qdev_create(NULL, TYPE_INTEGRATOR_CM);
qdev_prop_set_uint32(dev, "memsz", ram_size >> 20);
diff --git a/hw/arm/kzm.c b/hw/arm/kzm.c
index 5be0369..5999585 100644
--- a/hw/arm/kzm.c
+++ b/hw/arm/kzm.c
@@ -98,13 +98,16 @@ static void kzm_init(MachineState *machine)
/* On a real system, the first 16k is a `secure boot rom' */
memory_region_allocate_system_memory(ram, NULL, "kzm.ram", ram_size);
- memory_region_add_subregion(address_space_mem, KZM_RAMADDRESS, ram);
+ memory_region_add_subregion(address_space_mem, KZM_RAMADDRESS, ram,
+ &error_abort);
memory_region_init_alias(ram_alias, NULL, "ram.alias", ram, 0, ram_size);
- memory_region_add_subregion(address_space_mem, 0x88000000, ram_alias);
+ memory_region_add_subregion(address_space_mem, 0x88000000, ram_alias,
+ &error_abort);
memory_region_init_ram(sram, NULL, "kzm.sram", 0x4000, &error_abort);
- memory_region_add_subregion(address_space_mem, 0x1FFFC000, sram);
+ memory_region_add_subregion(address_space_mem, 0x1FFFC000, sram,
+ &error_abort);
dev = sysbus_create_varargs("imx_avic", 0x68000000,
qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_IRQ),
diff --git a/hw/arm/mainstone.c b/hw/arm/mainstone.c
index 0da02a6..49850d5 100644
--- a/hw/arm/mainstone.c
+++ b/hw/arm/mainstone.c
@@ -127,7 +127,7 @@ static void mainstone_common_init(MemoryRegion
*address_space_mem,
&error_abort);
vmstate_register_ram_global(rom);
memory_region_set_readonly(rom, true);
- memory_region_add_subregion(address_space_mem, 0, rom);
+ memory_region_add_subregion(address_space_mem, 0, rom, &error_abort);
#ifdef TARGET_WORDS_BIGENDIAN
be = 1;
diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c
index a3b1314..2456767 100644
--- a/hw/arm/musicpal.c
+++ b/hw/arm/musicpal.c
@@ -1602,12 +1602,13 @@ static void musicpal_init(MachineState *machine)
/* For now we use a fixed - the original - RAM size */
memory_region_allocate_system_memory(ram, NULL, "musicpal.ram",
MP_RAM_DEFAULT_SIZE);
- memory_region_add_subregion(address_space_mem, 0, ram);
+ memory_region_add_subregion(address_space_mem, 0, ram, &error_abort);
memory_region_init_ram(sram, NULL, "musicpal.sram", MP_SRAM_SIZE,
&error_abort);
vmstate_register_ram_global(sram);
- memory_region_add_subregion(address_space_mem, MP_SRAM_BASE, sram);
+ memory_region_add_subregion(address_space_mem, MP_SRAM_BASE, sram,
+ &error_abort);
dev = sysbus_create_simple(TYPE_MV88W8618_PIC, MP_PIC_BASE,
qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_IRQ));
diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c
index de2b289..8014014 100644
--- a/hw/arm/omap1.c
+++ b/hw/arm/omap1.c
@@ -271,7 +271,7 @@ static struct omap_mpu_timer_s
*omap_mpu_timer_init(MemoryRegion *system_memory,
memory_region_init_io(&s->iomem, NULL, &omap_mpu_timer_ops, s,
"omap-mpu-timer", 0x100);
- memory_region_add_subregion(system_memory, base, &s->iomem);
+ memory_region_add_subregion(system_memory, base, &s->iomem, &error_abort);
return s;
}
@@ -399,7 +399,7 @@ static struct omap_watchdog_timer_s
*omap_wd_timer_init(MemoryRegion *memory,
memory_region_init_io(&s->iomem, NULL, &omap_wd_timer_ops, s,
"omap-wd-timer", 0x100);
- memory_region_add_subregion(memory, base, &s->iomem);
+ memory_region_add_subregion(memory, base, &s->iomem, &error_abort);
return s;
}
@@ -506,7 +506,7 @@ static struct omap_32khz_timer_s
*omap_os_timer_init(MemoryRegion *memory,
memory_region_init_io(&s->iomem, NULL, &omap_os_timer_ops, s,
"omap-os-timer", 0x800);
- memory_region_add_subregion(memory, base, &s->iomem);
+ memory_region_add_subregion(memory, base, &s->iomem, &error_abort);
return s;
}
@@ -740,7 +740,8 @@ static void omap_ulpd_pm_init(MemoryRegion *system_memory,
{
memory_region_init_io(&mpu->ulpd_pm_iomem, NULL, &omap_ulpd_pm_ops, mpu,
"omap-ulpd-pm", 0x800);
- memory_region_add_subregion(system_memory, base, &mpu->ulpd_pm_iomem);
+ memory_region_add_subregion(system_memory, base, &mpu->ulpd_pm_iomem,
+ &error_abort);
omap_ulpd_pm_reset(mpu);
}
@@ -963,7 +964,8 @@ static void omap_pin_cfg_init(MemoryRegion *system_memory,
{
memory_region_init_io(&mpu->pin_cfg_iomem, NULL, &omap_pin_cfg_ops, mpu,
"omap-pin-cfg", 0x800);
- memory_region_add_subregion(system_memory, base, &mpu->pin_cfg_iomem);
+ memory_region_add_subregion(system_memory, base, &mpu->pin_cfg_iomem,
+ &error_abort);
omap_pin_cfg_reset(mpu);
}
@@ -1038,14 +1040,17 @@ static void omap_id_init(MemoryRegion *memory, struct
omap_mpu_state_s *mpu)
"omap-id", 0x100000000ULL);
memory_region_init_alias(&mpu->id_iomem_e18, NULL, "omap-id-e18",
&mpu->id_iomem,
0xfffe1800, 0x800);
- memory_region_add_subregion(memory, 0xfffe1800, &mpu->id_iomem_e18);
+ memory_region_add_subregion(memory, 0xfffe1800, &mpu->id_iomem_e18,
+ &error_abort);
memory_region_init_alias(&mpu->id_iomem_ed4, NULL, "omap-id-ed4",
&mpu->id_iomem,
0xfffed400, 0x100);
- memory_region_add_subregion(memory, 0xfffed400, &mpu->id_iomem_ed4);
+ memory_region_add_subregion(memory, 0xfffed400, &mpu->id_iomem_ed4,
+ &error_abort);
if (!cpu_is_omap15xx(mpu)) {
memory_region_init_alias(&mpu->id_iomem_ed4, NULL, "omap-id-e20",
&mpu->id_iomem, 0xfffe2000, 0x800);
- memory_region_add_subregion(memory, 0xfffe2000, &mpu->id_iomem_e20);
+ memory_region_add_subregion(memory, 0xfffe2000, &mpu->id_iomem_e20,
+ &error_abort);
}
}
@@ -1131,7 +1136,7 @@ static void omap_mpui_init(MemoryRegion *memory, hwaddr
base,
{
memory_region_init_io(&mpu->mpui_iomem, NULL, &omap_mpui_ops, mpu,
"omap-mpui", 0x100);
- memory_region_add_subregion(memory, base, &mpu->mpui_iomem);
+ memory_region_add_subregion(memory, base, &mpu->mpui_iomem, &error_abort);
omap_mpui_reset(mpu);
}
@@ -1244,7 +1249,7 @@ static struct omap_tipb_bridge_s *omap_tipb_bridge_init(
memory_region_init_io(&s->iomem, NULL, &omap_tipb_bridge_ops, s,
"omap-tipb-bridge", 0x100);
- memory_region_add_subregion(memory, base, &s->iomem);
+ memory_region_add_subregion(memory, base, &s->iomem, &error_abort);
return s;
}
@@ -1354,7 +1359,7 @@ static void omap_tcmi_init(MemoryRegion *memory, hwaddr
base,
{
memory_region_init_io(&mpu->tcmi_iomem, NULL, &omap_tcmi_ops, mpu,
"omap-tcmi", 0x100);
- memory_region_add_subregion(memory, base, &mpu->tcmi_iomem);
+ memory_region_add_subregion(memory, base, &mpu->tcmi_iomem, &error_abort);
omap_tcmi_reset(mpu);
}
@@ -1440,7 +1445,7 @@ static struct dpll_ctl_s *omap_dpll_init(MemoryRegion
*memory,
s->dpll = clk;
omap_dpll_reset(s);
- memory_region_add_subregion(memory, base, &s->iomem);
+ memory_region_add_subregion(memory, base, &s->iomem, &error_abort);
return s;
}
@@ -1861,8 +1866,9 @@ static void omap_clkm_init(MemoryRegion *memory, hwaddr
mpu_base,
omap_clkm_reset(s);
s->clkm.cold_start = 0x3a;
- memory_region_add_subregion(memory, mpu_base, &s->clkm_iomem);
- memory_region_add_subregion(memory, dsp_base, &s->clkdsp_iomem);
+ memory_region_add_subregion(memory, mpu_base, &s->clkm_iomem,
&error_abort);
+ memory_region_add_subregion(memory, dsp_base, &s->clkdsp_iomem,
+ &error_abort);
}
/* MPU I/O */
@@ -2110,7 +2116,7 @@ static struct omap_mpuio_s *omap_mpuio_init(MemoryRegion
*memory,
memory_region_init_io(&s->iomem, NULL, &omap_mpuio_ops, s,
"omap-mpuio", 0x800);
- memory_region_add_subregion(memory, base, &s->iomem);
+ memory_region_add_subregion(memory, base, &s->iomem, &error_abort);
omap_clk_adduser(clk, qemu_allocate_irq(omap_mpuio_onoff, s, 0));
@@ -2301,7 +2307,7 @@ static struct omap_uwire_s *omap_uwire_init(MemoryRegion
*system_memory,
omap_uwire_reset(s);
memory_region_init_io(&s->iomem, NULL, &omap_uwire_ops, s, "omap-uwire",
0x800);
- memory_region_add_subregion(system_memory, base, &s->iomem);
+ memory_region_add_subregion(system_memory, base, &s->iomem, &error_abort);
return s;
}
@@ -2415,7 +2421,7 @@ static struct omap_pwl_s *omap_pwl_init(MemoryRegion
*system_memory,
memory_region_init_io(&s->iomem, NULL, &omap_pwl_ops, s,
"omap-pwl", 0x800);
- memory_region_add_subregion(system_memory, base, &s->iomem);
+ memory_region_add_subregion(system_memory, base, &s->iomem, &error_abort);
omap_clk_adduser(clk, qemu_allocate_irq(omap_pwl_clk_update, s, 0));
return s;
@@ -2523,7 +2529,7 @@ static struct omap_pwt_s *omap_pwt_init(MemoryRegion
*system_memory,
memory_region_init_io(&s->iomem, NULL, &omap_pwt_ops, s,
"omap-pwt", 0x800);
- memory_region_add_subregion(system_memory, base, &s->iomem);
+ memory_region_add_subregion(system_memory, base, &s->iomem, &error_abort);
return s;
}
@@ -2943,7 +2949,7 @@ static struct omap_rtc_s *omap_rtc_init(MemoryRegion
*system_memory,
memory_region_init_io(&s->iomem, NULL, &omap_rtc_ops, s,
"omap-rtc", 0x800);
- memory_region_add_subregion(system_memory, base, &s->iomem);
+ memory_region_add_subregion(system_memory, base, &s->iomem, &error_abort);
return s;
}
@@ -3480,7 +3486,7 @@ static struct omap_mcbsp_s *omap_mcbsp_init(MemoryRegion
*system_memory,
omap_mcbsp_reset(s);
memory_region_init_io(&s->iomem, NULL, &omap_mcbsp_ops, s, "omap-mcbsp",
0x800);
- memory_region_add_subregion(system_memory, base, &s->iomem);
+ memory_region_add_subregion(system_memory, base, &s->iomem, &error_abort);
return s;
}
@@ -3656,7 +3662,7 @@ static struct omap_lpg_s *omap_lpg_init(MemoryRegion
*system_memory,
omap_lpg_reset(s);
memory_region_init_io(&s->iomem, NULL, &omap_lpg_ops, s, "omap-lpg",
0x800);
- memory_region_add_subregion(system_memory, base, &s->iomem);
+ memory_region_add_subregion(system_memory, base, &s->iomem, &error_abort);
omap_clk_adduser(clk, qemu_allocate_irq(omap_lpg_clk_update, s, 0));
@@ -3697,7 +3703,7 @@ static void omap_setup_mpui_io(MemoryRegion
*system_memory,
memory_region_init_io(&mpu->mpui_io_iomem, NULL, &omap_mpui_io_ops, mpu,
"omap-mpui-io", 0x7fff);
memory_region_add_subregion(system_memory, OMAP_MPUI_BASE,
- &mpu->mpui_io_iomem);
+ &mpu->mpui_io_iomem, &error_abort);
}
/* General chip reset */
@@ -3777,7 +3783,8 @@ static void omap_setup_dsp_mapping(MemoryRegion
*system_memory,
io = g_new(MemoryRegion, 1);
memory_region_init_alias(io, NULL, map->name,
system_memory, map->phys_mpu, map->size);
- memory_region_add_subregion(system_memory, map->phys_dsp, io);
+ memory_region_add_subregion(system_memory, map->phys_dsp, io,
+ &error_abort);
}
}
@@ -3880,11 +3887,13 @@ struct omap_mpu_state_s *omap310_mpu_init(MemoryRegion
*system_memory,
/* Memory-mapped stuff */
memory_region_allocate_system_memory(&s->emiff_ram, NULL, "omap1.dram",
s->sdram_size);
- memory_region_add_subregion(system_memory, OMAP_EMIFF_BASE, &s->emiff_ram);
+ memory_region_add_subregion(system_memory, OMAP_EMIFF_BASE, &s->emiff_ram,
+ &error_abort);
memory_region_init_ram(&s->imif_ram, NULL, "omap1.sram", s->sram_size,
&error_abort);
vmstate_register_ram_global(&s->imif_ram);
- memory_region_add_subregion(system_memory, OMAP_IMIF_BASE, &s->imif_ram);
+ memory_region_add_subregion(system_memory, OMAP_IMIF_BASE, &s->imif_ram,
+ &error_abort);
omap_clkm_init(system_memory, 0xfffece00, 0xe1008000, s);
diff --git a/hw/arm/omap2.c b/hw/arm/omap2.c
index e39b317..6d70831 100644
--- a/hw/arm/omap2.c
+++ b/hw/arm/omap2.c
@@ -802,7 +802,8 @@ static struct omap_sti_s *omap_sti_init(struct
omap_target_agent_s *ta,
memory_region_init_io(&s->iomem_fifo, NULL, &omap_sti_fifo_ops, s,
"omap.sti.fifo", 0x10000);
- memory_region_add_subregion(sysmem, channel_base, &s->iomem_fifo);
+ memory_region_add_subregion(sysmem, channel_base, &s->iomem_fifo,
+ &error_abort);
return s;
}
@@ -2274,11 +2275,12 @@ struct omap_mpu_state_s *omap2420_mpu_init(MemoryRegion
*sysmem,
/* Memory-mapped stuff */
memory_region_allocate_system_memory(&s->sdram, NULL, "omap2.dram",
s->sdram_size);
- memory_region_add_subregion(sysmem, OMAP2_Q2_BASE, &s->sdram);
+ memory_region_add_subregion(sysmem, OMAP2_Q2_BASE, &s->sdram,
&error_abort);
memory_region_init_ram(&s->sram, NULL, "omap2.sram", s->sram_size,
&error_abort);
vmstate_register_ram_global(&s->sram);
- memory_region_add_subregion(sysmem, OMAP2_SRAM_BASE, &s->sram);
+ memory_region_add_subregion(sysmem, OMAP2_SRAM_BASE, &s->sram,
+ &error_abort);
s->l4 = omap_l4_init(sysmem, OMAP2_L4_BASE, 54);
diff --git a/hw/arm/omap_sx1.c b/hw/arm/omap_sx1.c
index 4b0f7f9..93be711 100644
--- a/hw/arm/omap_sx1.c
+++ b/hw/arm/omap_sx1.c
@@ -125,23 +125,25 @@ static void sx1_init(MachineState *machine, const int
version)
&error_abort);
vmstate_register_ram_global(flash);
memory_region_set_readonly(flash, true);
- memory_region_add_subregion(address_space, OMAP_CS0_BASE, flash);
+ memory_region_add_subregion(address_space, OMAP_CS0_BASE, flash,
+ &error_abort);
memory_region_init_io(&cs[0], NULL, &static_ops, &cs0val,
"sx1.cs0", OMAP_CS0_SIZE - flash_size);
memory_region_add_subregion(address_space,
- OMAP_CS0_BASE + flash_size, &cs[0]);
+ OMAP_CS0_BASE + flash_size, &cs[0],
+ &error_abort);
memory_region_init_io(&cs[2], NULL, &static_ops, &cs2val,
"sx1.cs2", OMAP_CS2_SIZE);
memory_region_add_subregion(address_space,
- OMAP_CS2_BASE, &cs[2]);
+ OMAP_CS2_BASE, &cs[2], &error_abort);
memory_region_init_io(&cs[3], NULL, &static_ops, &cs3val,
"sx1.cs3", OMAP_CS3_SIZE);
memory_region_add_subregion(address_space,
- OMAP_CS2_BASE, &cs[3]);
+ OMAP_CS2_BASE, &cs[3], &error_abort);
fl_idx = 0;
#ifdef TARGET_WORDS_BIGENDIAN
@@ -169,12 +171,14 @@ static void sx1_init(MachineState *machine, const int
version)
&error_abort);
vmstate_register_ram_global(flash_1);
memory_region_set_readonly(flash_1, true);
- memory_region_add_subregion(address_space, OMAP_CS1_BASE, flash_1);
+ memory_region_add_subregion(address_space, OMAP_CS1_BASE, flash_1,
+ &error_abort);
memory_region_init_io(&cs[1], NULL, &static_ops, &cs1val,
"sx1.cs1", OMAP_CS1_SIZE - flash1_size);
memory_region_add_subregion(address_space,
- OMAP_CS1_BASE + flash1_size, &cs[1]);
+ OMAP_CS1_BASE + flash1_size, &cs[1],
+ &error_abort);
if (!pflash_cfi01_register(OMAP_CS1_BASE, NULL,
"omap_sx1.flash1-1", flash1_size,
@@ -189,7 +193,8 @@ static void sx1_init(MachineState *machine, const int
version)
memory_region_init_io(&cs[1], NULL, &static_ops, &cs1val,
"sx1.cs1", OMAP_CS1_SIZE);
memory_region_add_subregion(address_space,
- OMAP_CS1_BASE, &cs[1]);
+ OMAP_CS1_BASE, &cs[1],
+ &error_abort);
}
if (!machine->kernel_filename && !fl_idx && !qtest_enabled()) {
diff --git a/hw/arm/palm.c b/hw/arm/palm.c
index 7f1cfb8..7b34ba4 100644
--- a/hw/arm/palm.c
+++ b/hw/arm/palm.c
@@ -216,21 +216,25 @@ static void palmte_init(MachineState *machine)
&error_abort);
vmstate_register_ram_global(flash);
memory_region_set_readonly(flash, true);
- memory_region_add_subregion(address_space_mem, OMAP_CS0_BASE, flash);
+ memory_region_add_subregion(address_space_mem, OMAP_CS0_BASE, flash,
+ &error_abort);
memory_region_init_io(&cs[0], NULL, &static_ops, &cs0val, "palmte-cs0",
OMAP_CS0_SIZE - flash_size);
memory_region_add_subregion(address_space_mem, OMAP_CS0_BASE + flash_size,
- &cs[0]);
+ &cs[0], &error_abort);
memory_region_init_io(&cs[1], NULL, &static_ops, &cs1val, "palmte-cs1",
OMAP_CS1_SIZE);
- memory_region_add_subregion(address_space_mem, OMAP_CS1_BASE, &cs[1]);
+ memory_region_add_subregion(address_space_mem, OMAP_CS1_BASE, &cs[1],
+ &error_abort);
memory_region_init_io(&cs[2], NULL, &static_ops, &cs2val, "palmte-cs2",
OMAP_CS2_SIZE);
- memory_region_add_subregion(address_space_mem, OMAP_CS2_BASE, &cs[2]);
+ memory_region_add_subregion(address_space_mem, OMAP_CS2_BASE, &cs[2],
+ &error_abort);
memory_region_init_io(&cs[3], NULL, &static_ops, &cs3val, "palmte-cs3",
OMAP_CS3_SIZE);
- memory_region_add_subregion(address_space_mem, OMAP_CS3_BASE, &cs[3]);
+ memory_region_add_subregion(address_space_mem, OMAP_CS3_BASE, &cs[3],
+ &error_abort);
palmte_microwire_setup(mpu);
diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c
index ec353f7..8c38a57 100644
--- a/hw/arm/pxa2xx.c
+++ b/hw/arm/pxa2xx.c
@@ -1743,7 +1743,7 @@ static PXA2xxI2SState *pxa2xx_i2s_init(MemoryRegion
*sysmem,
memory_region_init_io(&s->iomem, NULL, &pxa2xx_i2s_ops, s,
"pxa2xx-i2s", 0x100000);
- memory_region_add_subregion(sysmem, base, &s->iomem);
+ memory_region_add_subregion(sysmem, base, &s->iomem, &error_abort);
vmstate_register(NULL, base, &vmstate_pxa2xx_i2s, s);
@@ -2081,12 +2081,13 @@ PXA2xxState *pxa270_init(MemoryRegion *address_space,
memory_region_init_ram(&s->sdram, NULL, "pxa270.sdram", sdram_size,
&error_abort);
vmstate_register_ram_global(&s->sdram);
- memory_region_add_subregion(address_space, PXA2XX_SDRAM_BASE, &s->sdram);
+ memory_region_add_subregion(address_space, PXA2XX_SDRAM_BASE, &s->sdram,
+ &error_abort);
memory_region_init_ram(&s->internal, NULL, "pxa270.internal", 0x40000,
&error_abort);
vmstate_register_ram_global(&s->internal);
memory_region_add_subregion(address_space, PXA2XX_INTERNAL_BASE,
- &s->internal);
+ &s->internal, &error_abort);
s->pic = pxa2xx_pic_init(0x40d00000, s->cpu);
@@ -2138,7 +2139,8 @@ PXA2xxState *pxa270_init(MemoryRegion *address_space,
s->cm_regs[CCCR >> 2] = 0x02000210; /* 416.0 MHz */
s->clkcfg = 0x00000009; /* Turbo mode active */
memory_region_init_io(&s->cm_iomem, NULL, &pxa2xx_cm_ops, s, "pxa2xx-cm",
0x1000);
- memory_region_add_subregion(address_space, s->cm_base, &s->cm_iomem);
+ memory_region_add_subregion(address_space, s->cm_base, &s->cm_iomem,
+ &error_abort);
vmstate_register(NULL, 0, &vmstate_pxa2xx_cm, s);
pxa2xx_setup_cp14(s);
@@ -2148,12 +2150,14 @@ PXA2xxState *pxa270_init(MemoryRegion *address_space,
s->mm_regs[MDREFR >> 2] = 0x03ca4000;
s->mm_regs[MECR >> 2] = 0x00000001; /* Two PC Card sockets */
memory_region_init_io(&s->mm_iomem, NULL, &pxa2xx_mm_ops, s, "pxa2xx-mm",
0x1000);
- memory_region_add_subregion(address_space, s->mm_base, &s->mm_iomem);
+ memory_region_add_subregion(address_space, s->mm_base, &s->mm_iomem,
+ &error_abort);
vmstate_register(NULL, 0, &vmstate_pxa2xx_mm, s);
s->pm_base = 0x40f00000;
memory_region_init_io(&s->pm_iomem, NULL, &pxa2xx_pm_ops, s, "pxa2xx-pm",
0x100);
- memory_region_add_subregion(address_space, s->pm_base, &s->pm_iomem);
+ memory_region_add_subregion(address_space, s->pm_base, &s->pm_iomem,
+ &error_abort);
vmstate_register(NULL, 0, &vmstate_pxa2xx_pm, s);
for (i = 0; pxa27x_ssp[i].io_base; i ++);
@@ -2215,12 +2219,13 @@ PXA2xxState *pxa255_init(MemoryRegion *address_space,
unsigned int sdram_size)
memory_region_init_ram(&s->sdram, NULL, "pxa255.sdram", sdram_size,
&error_abort);
vmstate_register_ram_global(&s->sdram);
- memory_region_add_subregion(address_space, PXA2XX_SDRAM_BASE, &s->sdram);
+ memory_region_add_subregion(address_space, PXA2XX_SDRAM_BASE, &s->sdram,
+ &error_abort);
memory_region_init_ram(&s->internal, NULL, "pxa255.internal",
PXA2XX_INTERNAL_SIZE, &error_abort);
vmstate_register_ram_global(&s->internal);
memory_region_add_subregion(address_space, PXA2XX_INTERNAL_BASE,
- &s->internal);
+ &s->internal, &error_abort);
s->pic = pxa2xx_pic_init(0x40d00000, s->cpu);
@@ -2271,7 +2276,8 @@ PXA2xxState *pxa255_init(MemoryRegion *address_space,
unsigned int sdram_size)
s->cm_regs[CCCR >> 2] = 0x02000210; /* 416.0 MHz */
s->clkcfg = 0x00000009; /* Turbo mode active */
memory_region_init_io(&s->cm_iomem, NULL, &pxa2xx_cm_ops, s, "pxa2xx-cm",
0x1000);
- memory_region_add_subregion(address_space, s->cm_base, &s->cm_iomem);
+ memory_region_add_subregion(address_space, s->cm_base, &s->cm_iomem,
+ &error_abort);
vmstate_register(NULL, 0, &vmstate_pxa2xx_cm, s);
pxa2xx_setup_cp14(s);
@@ -2281,12 +2287,14 @@ PXA2xxState *pxa255_init(MemoryRegion *address_space,
unsigned int sdram_size)
s->mm_regs[MDREFR >> 2] = 0x03ca4000;
s->mm_regs[MECR >> 2] = 0x00000001; /* Two PC Card sockets */
memory_region_init_io(&s->mm_iomem, NULL, &pxa2xx_mm_ops, s, "pxa2xx-mm",
0x1000);
- memory_region_add_subregion(address_space, s->mm_base, &s->mm_iomem);
+ memory_region_add_subregion(address_space, s->mm_base, &s->mm_iomem,
+ &error_abort);
vmstate_register(NULL, 0, &vmstate_pxa2xx_mm, s);
s->pm_base = 0x40f00000;
memory_region_init_io(&s->pm_iomem, NULL, &pxa2xx_pm_ops, s, "pxa2xx-pm",
0x100);
- memory_region_add_subregion(address_space, s->pm_base, &s->pm_iomem);
+ memory_region_add_subregion(address_space, s->pm_base, &s->pm_iomem,
+ &error_abort);
vmstate_register(NULL, 0, &vmstate_pxa2xx_pm, s);
for (i = 0; pxa255_ssp[i].io_base; i ++);
diff --git a/hw/arm/realview.c b/hw/arm/realview.c
index ef2788d..b16c8ae 100644
--- a/hw/arm/realview.c
+++ b/hw/arm/realview.c
@@ -153,7 +153,7 @@ static void realview_init(MachineState *machine,
memory_region_init_ram(ram_lo, NULL, "realview.lowmem", low_ram_size,
&error_abort);
vmstate_register_ram_global(ram_lo);
- memory_region_add_subregion(sysmem, 0x20000000, ram_lo);
+ memory_region_add_subregion(sysmem, 0x20000000, ram_lo, &error_abort);
}
memory_region_init_ram(ram_hi, NULL, "realview.highmem", ram_size,
@@ -165,10 +165,10 @@ static void realview_init(MachineState *machine,
/* SDRAM at address zero. */
memory_region_init_alias(ram_alias, NULL, "realview.alias",
ram_hi, 0, low_ram_size);
- memory_region_add_subregion(sysmem, 0, ram_alias);
+ memory_region_add_subregion(sysmem, 0, ram_alias, &error_abort);
if (is_pb) {
/* And again at a high address. */
- memory_region_add_subregion(sysmem, 0x70000000, ram_hi);
+ memory_region_add_subregion(sysmem, 0x70000000, ram_hi, &error_abort);
} else {
ram_size = low_ram_size;
}
@@ -355,7 +355,7 @@ static void realview_init(MachineState *machine,
memory_region_init_ram(ram_hack, NULL, "realview.hack", 0x1000,
&error_abort);
vmstate_register_ram_global(ram_hack);
- memory_region_add_subregion(sysmem, SMP_BOOT_ADDR, ram_hack);
+ memory_region_add_subregion(sysmem, SMP_BOOT_ADDR, ram_hack, &error_abort);
realview_binfo.ram_size = ram_size;
realview_binfo.kernel_filename = machine->kernel_filename;
diff --git a/hw/arm/spitz.c b/hw/arm/spitz.c
index 5bf032a..5e6ac91 100644
--- a/hw/arm/spitz.c
+++ b/hw/arm/spitz.c
@@ -916,7 +916,7 @@ static void spitz_common_init(MachineState *machine,
memory_region_init_ram(rom, NULL, "spitz.rom", SPITZ_ROM, &error_abort);
vmstate_register_ram_global(rom);
memory_region_set_readonly(rom, true);
- memory_region_add_subregion(address_space_mem, 0, rom);
+ memory_region_add_subregion(address_space_mem, 0, rom, &error_abort);
/* Setup peripherals */
spitz_keyboard_register(mpu);
diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c
index cb515ec..51c3bb9 100644
--- a/hw/arm/stellaris.c
+++ b/hw/arm/stellaris.c
@@ -683,7 +683,8 @@ static int stellaris_sys_init(uint32_t base, qemu_irq irq,
s->user1 = macaddr[3] | (macaddr[4] << 8) | (macaddr[5] << 16);
memory_region_init_io(&s->iomem, NULL, &ssys_ops, s, "ssys", 0x00001000);
- memory_region_add_subregion(get_system_memory(), base, &s->iomem);
+ memory_region_add_subregion(get_system_memory(), base, &s->iomem,
+ &error_abort);
ssys_reset(s);
vmstate_register(NULL, -1, &vmstate_stellaris_sys, s);
return 0;
@@ -1234,12 +1235,12 @@ static void stellaris_init(const char *kernel_filename,
const char *cpu_model,
&error_abort);
vmstate_register_ram_global(flash);
memory_region_set_readonly(flash, true);
- memory_region_add_subregion(system_memory, 0, flash);
+ memory_region_add_subregion(system_memory, 0, flash, &error_abort);
memory_region_init_ram(sram, NULL, "stellaris.sram", sram_size,
&error_abort);
vmstate_register_ram_global(sram);
- memory_region_add_subregion(system_memory, 0x20000000, sram);
+ memory_region_add_subregion(system_memory, 0x20000000, sram, &error_abort);
pic = armv7m_init(system_memory, flash_size, NUM_IRQ_LINES,
kernel_filename, cpu_model);
diff --git a/hw/arm/stm32f205_soc.c b/hw/arm/stm32f205_soc.c
index 0f3bdc7..996538f 100644
--- a/hw/arm/stm32f205_soc.c
+++ b/hw/arm/stm32f205_soc.c
@@ -80,13 +80,15 @@ static void stm32f205_soc_realize(DeviceState *dev_soc,
Error **errp)
memory_region_set_readonly(flash, true);
memory_region_set_readonly(flash_alias, true);
- memory_region_add_subregion(system_memory, FLASH_BASE_ADDRESS, flash);
- memory_region_add_subregion(system_memory, 0, flash_alias);
+ memory_region_add_subregion(system_memory, FLASH_BASE_ADDRESS, flash,
+ &error_abort);
+ memory_region_add_subregion(system_memory, 0, flash_alias, &error_abort);
memory_region_init_ram(sram, NULL, "STM32F205.sram", SRAM_SIZE,
&error_abort);
vmstate_register_ram_global(sram);
- memory_region_add_subregion(system_memory, SRAM_BASE_ADDRESS, sram);
+ memory_region_add_subregion(system_memory, SRAM_BASE_ADDRESS, sram,
+ &error_abort);
pic = armv7m_init(get_system_memory(), FLASH_SIZE, 96,
s->kernel_filename, s->cpu_model);
diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c
index da9fc1d..7b2b970 100644
--- a/hw/arm/strongarm.c
+++ b/hw/arm/strongarm.c
@@ -1608,7 +1608,7 @@ StrongARMState *sa1110_init(MemoryRegion *sysmem,
memory_region_allocate_system_memory(&s->sdram, NULL, "strongarm.sdram",
sdram_size);
- memory_region_add_subregion(sysmem, SA_SDCS0, &s->sdram);
+ memory_region_add_subregion(sysmem, SA_SDCS0, &s->sdram, &error_abort);
s->pic = sysbus_create_varargs("strongarm_pic", 0x90050000,
qdev_get_gpio_in(DEVICE(s->cpu), ARM_CPU_IRQ),
diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c
index 73572eb..bc56ae0 100644
--- a/hw/arm/tosa.c
+++ b/hw/arm/tosa.c
@@ -230,7 +230,7 @@ static void tosa_init(MachineState *machine)
memory_region_init_ram(rom, NULL, "tosa.rom", TOSA_ROM, &error_abort);
vmstate_register_ram_global(rom);
memory_region_set_readonly(rom, true);
- memory_region_add_subregion(address_space_mem, 0, rom);
+ memory_region_add_subregion(address_space_mem, 0, rom, &error_abort);
tmio = tc6393xb_init(address_space_mem, 0x10000000,
qdev_get_gpio_in(mpu->gpio, TOSA_GPIO_TC6393XB_INT));
diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c
index 6c69f4e..82358eb 100644
--- a/hw/arm/versatilepb.c
+++ b/hw/arm/versatilepb.c
@@ -230,7 +230,7 @@ static void versatile_init(MachineState *machine, int
board_id)
machine->ram_size);
/* ??? RAM should repeat to fill physical memory space. */
/* SDRAM at address zero. */
- memory_region_add_subregion(sysmem, 0, ram);
+ memory_region_add_subregion(sysmem, 0, ram, &error_abort);
sysctl = qdev_create(NULL, "realview_sysctl");
qdev_prop_set_uint32(sysctl, "sys_id", 0x41007004);
diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c
index da21788..20cd79b 100644
--- a/hw/arm/vexpress.c
+++ b/hw/arm/vexpress.c
@@ -289,8 +289,8 @@ static void a9_daughterboard_init(const
VexpressMachineState *vms,
* things including ROM or RAM; we always map the RAM there.
*/
memory_region_init_alias(lowram, NULL, "vexpress.lowmem", ram, 0,
low_ram_size);
- memory_region_add_subregion(sysmem, 0x0, lowram);
- memory_region_add_subregion(sysmem, 0x60000000, ram);
+ memory_region_add_subregion(sysmem, 0x0, lowram, &error_abort);
+ memory_region_add_subregion(sysmem, 0x60000000, ram, &error_abort);
/* 0x1e000000 A9MPCore (SCU) private memory region */
init_cpus(cpu_model, "a9mpcore_priv", 0x1e000000, pic, vms->secure);
@@ -375,7 +375,7 @@ static void a15_daughterboard_init(const
VexpressMachineState *vms,
memory_region_allocate_system_memory(ram, NULL, "vexpress.highmem",
ram_size);
/* RAM is from 0x80000000 upwards; there is no low-memory alias for it. */
- memory_region_add_subregion(sysmem, 0x80000000, ram);
+ memory_region_add_subregion(sysmem, 0x80000000, ram, &error_abort);
/* 0x2c000000 A15MPCore private memory region (GIC) */
init_cpus(cpu_model, "a15mpcore_priv", 0x2c000000, pic, vms->secure);
@@ -393,7 +393,7 @@ static void a15_daughterboard_init(const
VexpressMachineState *vms,
memory_region_init_ram(sram, NULL, "vexpress.a15sram", 0x10000,
&error_abort);
vmstate_register_ram_global(sram);
- memory_region_add_subregion(sysmem, 0x2e000000, sram);
+ memory_region_add_subregion(sysmem, 0x2e000000, sram, &error_abort);
/* 0x7ffb0000: DMA330 DMA controller: not modelled */
/* 0x7ffd0000: PL354 static memory controller: not modelled */
@@ -659,7 +659,8 @@ static void vexpress_common_init(MachineState *machine)
flash0mem = sysbus_mmio_get_region(SYS_BUS_DEVICE(pflash0), 0);
memory_region_init_alias(flashalias, NULL, "vexpress.flashalias",
flash0mem, 0, VEXPRESS_FLASH_SIZE);
- memory_region_add_subregion(sysmem, map[VE_NORFLASHALIAS], flashalias);
+ memory_region_add_subregion(sysmem, map[VE_NORFLASHALIAS], flashalias,
+ &error_abort);
}
dinfo = drive_get_next(IF_PFLASH);
@@ -673,13 +674,13 @@ static void vexpress_common_init(MachineState *machine)
memory_region_init_ram(sram, NULL, "vexpress.sram", sram_size,
&error_abort);
vmstate_register_ram_global(sram);
- memory_region_add_subregion(sysmem, map[VE_SRAM], sram);
+ memory_region_add_subregion(sysmem, map[VE_SRAM], sram, &error_abort);
vram_size = 0x800000;
memory_region_init_ram(vram, NULL, "vexpress.vram", vram_size,
&error_abort);
vmstate_register_ram_global(vram);
- memory_region_add_subregion(sysmem, map[VE_VIDEORAM], vram);
+ memory_region_add_subregion(sysmem, map[VE_VIDEORAM], vram, &error_abort);
/* 0x4e000000 LAN9118 Ethernet */
if (nd_table[0].used) {
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 4846892..8ed9c05 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -685,7 +685,8 @@ static void create_pcie(const VirtBoardInfo *vbi, qemu_irq
*pic)
ecam_reg = sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0);
memory_region_init_alias(ecam_alias, OBJECT(dev), "pcie-ecam",
ecam_reg, 0, size_ecam);
- memory_region_add_subregion(get_system_memory(), base_ecam, ecam_alias);
+ memory_region_add_subregion(get_system_memory(), base_ecam, ecam_alias,
+ &error_abort);
/* Map the MMIO window into system address space so as to expose
* the section of PCI MMIO space which starts at the same base address
@@ -696,7 +697,8 @@ static void create_pcie(const VirtBoardInfo *vbi, qemu_irq
*pic)
mmio_reg = sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 1);
memory_region_init_alias(mmio_alias, OBJECT(dev), "pcie-mmio",
mmio_reg, base_mmio, size_mmio);
- memory_region_add_subregion(get_system_memory(), base_mmio, mmio_alias);
+ memory_region_add_subregion(get_system_memory(), base_mmio, mmio_alias,
+ &error_abort);
/* Map IO port space */
sysbus_mmio_map(SYS_BUS_DEVICE(dev), 2, base_pio);
@@ -769,7 +771,8 @@ static void create_platform_bus(VirtBoardInfo *vbi,
qemu_irq *pic)
memory_region_add_subregion(sysmem,
platform_bus_params.platform_bus_base,
- sysbus_mmio_get_region(s, 0));
+ sysbus_mmio_get_region(s, 0),
+ &error_abort);
}
static void *machvirt_dtb(const struct arm_boot_info *binfo, int *fdt_size)
@@ -871,7 +874,8 @@ static void machvirt_init(MachineState *machine)
memory_region_allocate_system_memory(ram, NULL, "mach-virt.ram",
machine->ram_size);
- memory_region_add_subregion(sysmem, vbi->memmap[VIRT_MEM].base, ram);
+ memory_region_add_subregion(sysmem, vbi->memmap[VIRT_MEM].base, ram,
+ &error_abort);
create_flash(vbi);
diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c
index a4e7b5c..8cbce61 100644
--- a/hw/arm/xilinx_zynq.c
+++ b/hw/arm/xilinx_zynq.c
@@ -163,13 +163,14 @@ static void zynq_init(MachineState *machine)
/* DDR remapped to address zero. */
memory_region_allocate_system_memory(ext_ram, NULL, "zynq.ext_ram",
ram_size);
- memory_region_add_subregion(address_space_mem, 0, ext_ram);
+ memory_region_add_subregion(address_space_mem, 0, ext_ram, &error_abort);
/* 256K of on-chip memory */
memory_region_init_ram(ocm_ram, NULL, "zynq.ocm_ram", 256 << 10,
&error_abort);
vmstate_register_ram_global(ocm_ram);
- memory_region_add_subregion(address_space_mem, 0xFFFC0000, ocm_ram);
+ memory_region_add_subregion(address_space_mem, 0xFFFC0000, ocm_ram,
+ &error_abort);
DriveInfo *dinfo = drive_get(IF_PFLASH, 0, 0);
diff --git a/hw/arm/xlnx-ep108.c b/hw/arm/xlnx-ep108.c
index f94da86..ab4dc21 100644
--- a/hw/arm/xlnx-ep108.c
+++ b/hw/arm/xlnx-ep108.c
@@ -58,7 +58,8 @@ static void xlnx_ep108_init(MachineState *machine)
memory_region_allocate_system_memory(&s->ddr_ram, NULL, "ddr-ram",
machine->ram_size);
- memory_region_add_subregion(get_system_memory(), 0, &s->ddr_ram);
+ memory_region_add_subregion(get_system_memory(), 0, &s->ddr_ram,
+ &error_abort);
xlnx_ep108_binfo.ram_size = machine->ram_size;
xlnx_ep108_binfo.kernel_filename = machine->kernel_filename;
diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c
index 5e72078..c6e6b0a 100644
--- a/hw/arm/xlnx-zynqmp.c
+++ b/hw/arm/xlnx-zynqmp.c
@@ -125,7 +125,8 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error
**errp)
addr += XLNX_ZYNQMP_GIC_REGION_SIZE;
memory_region_init_alias(alias, OBJECT(s), "zynqmp-gic-alias", mr,
0, XLNX_ZYNQMP_GIC_REGION_SIZE);
- memory_region_add_subregion(system_memory, addr, alias);
+ memory_region_add_subregion(system_memory, addr, alias,
+ &error_abort);
}
}
diff --git a/hw/block/onenand.c b/hw/block/onenand.c
index 1b2c893..d8a5897 100644
--- a/hw/block/onenand.c
+++ b/hw/block/onenand.c
@@ -120,7 +120,7 @@ static void onenand_mem_setup(OneNANDState *s)
* write boot commands. Also take note of the BWPS bit. */
memory_region_init(&s->container, OBJECT(s), "onenand",
0x10000 << s->shift);
- memory_region_add_subregion(&s->container, 0, &s->iomem);
+ memory_region_add_subregion(&s->container, 0, &s->iomem, &error_abort);
memory_region_init_alias(&s->mapped_ram, OBJECT(s), "onenand-mapped-ram",
&s->ram, 0x0200 << s->shift,
0xbe00 << s->shift);
diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c
index 074a005..100e07c 100644
--- a/hw/block/pflash_cfi02.c
+++ b/hw/block/pflash_cfi02.c
@@ -111,7 +111,8 @@ static void pflash_setup_mappings(pflash_t *pfl)
for (i = 0; i < pfl->mappings; ++i) {
memory_region_init_alias(&pfl->mem_mappings[i], OBJECT(pfl),
"pflash-alias", &pfl->orig_mem, 0, size);
- memory_region_add_subregion(&pfl->mem, i * size,
&pfl->mem_mappings[i]);
+ memory_region_add_subregion(&pfl->mem, i * size, &pfl->mem_mappings[i],
+ &error_abort);
}
}
diff --git a/hw/char/debugcon.c b/hw/char/debugcon.c
index 36f1c4a..1c0a04d 100644
--- a/hw/char/debugcon.c
+++ b/hw/char/debugcon.c
@@ -106,7 +106,7 @@ static void debugcon_isa_realizefn(DeviceState *dev, Error
**errp)
memory_region_init_io(&s->io, OBJECT(dev), &debugcon_ops, s,
TYPE_ISA_DEBUGCON_DEVICE, 1);
memory_region_add_subregion(isa_address_space_io(d),
- isa->iobase, &s->io);
+ isa->iobase, &s->io, &error_abort);
}
static Property debugcon_isa_properties[] = {
diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c
index 98fd44e..ecb31a0 100644
--- a/hw/char/mcf_uart.c
+++ b/hw/char/mcf_uart.c
@@ -303,5 +303,5 @@ void mcf_uart_mm_init(MemoryRegion *sysmem,
s = mcf_uart_init(irq, chr);
memory_region_init_io(&s->iomem, NULL, &mcf_uart_ops, s, "uart", 0x40);
- memory_region_add_subregion(sysmem, base, &s->iomem);
+ memory_region_add_subregion(sysmem, base, &s->iomem, &error_abort);
}
diff --git a/hw/char/omap_uart.c b/hw/char/omap_uart.c
index 88f2094..1beb0f3 100644
--- a/hw/char/omap_uart.c
+++ b/hw/char/omap_uart.c
@@ -173,7 +173,7 @@ struct omap_uart_s *omap2_uart_init(MemoryRegion *sysmem,
s->ta = ta;
- memory_region_add_subregion(sysmem, base + 0x20, &s->iomem);
+ memory_region_add_subregion(sysmem, base + 0x20, &s->iomem, &error_abort);
return s;
}
diff --git a/hw/char/parallel.c b/hw/char/parallel.c
index c2b553f..72f4ef8 100644
--- a/hw/char/parallel.c
+++ b/hw/char/parallel.c
@@ -606,7 +606,7 @@ bool parallel_mm_init(MemoryRegion *address_space,
memory_region_init_io(&s->iomem, NULL, ¶llel_mm_ops, s,
"parallel", 8 << it_shift);
- memory_region_add_subregion(address_space, base, &s->iomem);
+ memory_region_add_subregion(address_space, base, &s->iomem, &error_abort);
return true;
}
diff --git a/hw/char/serial-pci.c b/hw/char/serial-pci.c
index 1c8b9be..751979b 100644
--- a/hw/char/serial-pci.c
+++ b/hw/char/serial-pci.c
@@ -123,7 +123,7 @@ static void multi_serial_pci_realize(PCIDevice *dev, Error
**errp)
pci->name[i] = g_strdup_printf("uart #%d", i+1);
memory_region_init_io(&s->io, OBJECT(pci), &serial_io_ops, s,
pci->name[i], 8);
- memory_region_add_subregion(&pci->iobar, 8 * i, &s->io);
+ memory_region_add_subregion(&pci->iobar, 8 * i, &s->io, &error_abort);
pci->ports++;
}
}
diff --git a/hw/char/serial.c b/hw/char/serial.c
index 513d73c..a1cedca 100644
--- a/hw/char/serial.c
+++ b/hw/char/serial.c
@@ -904,7 +904,7 @@ SerialState *serial_init(int base, qemu_irq irq, int
baudbase,
vmstate_register(NULL, base, &vmstate_serial, s);
memory_region_init_io(&s->io, NULL, &serial_io_ops, s, "serial", 8);
- memory_region_add_subregion(system_io, base, &s->io);
+ memory_region_add_subregion(system_io, base, &s->io, &error_abort);
return s;
}
@@ -967,6 +967,6 @@ SerialState *serial_mm_init(MemoryRegion *address_space,
memory_region_init_io(&s->io, NULL, &serial_mm_ops[end], s,
"serial", 8 << it_shift);
- memory_region_add_subregion(address_space, base, &s->io);
+ memory_region_add_subregion(address_space, base, &s->io, &error_abort);
return s;
}
diff --git a/hw/char/sh_serial.c b/hw/char/sh_serial.c
index 9328dd1..45dee7b 100644
--- a/hw/char/sh_serial.c
+++ b/hw/char/sh_serial.c
@@ -386,11 +386,13 @@ void sh_serial_init(MemoryRegion *sysmem,
memory_region_init_alias(&s->iomem_p4, NULL, "serial-p4", &s->iomem,
0, 0x28);
- memory_region_add_subregion(sysmem, P4ADDR(base), &s->iomem_p4);
+ memory_region_add_subregion(sysmem, P4ADDR(base), &s->iomem_p4,
+ &error_abort);
memory_region_init_alias(&s->iomem_a7, NULL, "serial-a7", &s->iomem,
0, 0x28);
- memory_region_add_subregion(sysmem, A7ADDR(base), &s->iomem_a7);
+ memory_region_add_subregion(sysmem, A7ADDR(base), &s->iomem_a7,
+ &error_abort);
s->chr = chr;
diff --git a/hw/core/platform-bus.c b/hw/core/platform-bus.c
index 70e0518..025af03 100644
--- a/hw/core/platform-bus.c
+++ b/hw/core/platform-bus.c
@@ -159,7 +159,7 @@ static int platform_bus_map_mmio(PlatformBusDevice *pbus,
SysBusDevice *sbdev,
}
/* Map the device's region into our Platform Bus MMIO space */
- memory_region_add_subregion(&pbus->mmio, off, sbdev_mr);
+ memory_region_add_subregion(&pbus->mmio, off, sbdev_mr, &error_abort);
return 0;
}
diff --git a/hw/core/sysbus.c b/hw/core/sysbus.c
index 3c58629..d7d2dc3 100644
--- a/hw/core/sysbus.c
+++ b/hw/core/sysbus.c
@@ -147,7 +147,7 @@ static void sysbus_mmio_map_common(SysBusDevice *dev, int
n, hwaddr addr,
else {
memory_region_add_subregion(get_system_memory(),
addr,
- dev->mmio[n].memory);
+ dev->mmio[n].memory, &error_abort);
}
}
@@ -312,7 +312,7 @@ static char *sysbus_get_fw_dev_path(DeviceState *dev)
void sysbus_add_io(SysBusDevice *dev, hwaddr addr,
MemoryRegion *mem)
{
- memory_region_add_subregion(get_system_io(), addr, mem);
+ memory_region_add_subregion(get_system_io(), addr, mem, &error_abort);
}
MemoryRegion *sysbus_address_space(SysBusDevice *dev)
diff --git a/hw/cpu/a15mpcore.c b/hw/cpu/a15mpcore.c
index acc419e..7f4d179 100644
--- a/hw/cpu/a15mpcore.c
+++ b/hw/cpu/a15mpcore.c
@@ -98,9 +98,11 @@ static void a15mp_priv_realize(DeviceState *dev, Error
**errp)
* 0x6000-0x7fff -- GIC virtual CPU interface (not modelled)
*/
memory_region_add_subregion(&s->container, 0x1000,
- sysbus_mmio_get_region(busdev, 0));
+ sysbus_mmio_get_region(busdev, 0),
+ &error_abort);
memory_region_add_subregion(&s->container, 0x2000,
- sysbus_mmio_get_region(busdev, 1));
+ sysbus_mmio_get_region(busdev, 1),
+ &error_abort);
}
static Property a15mp_priv_properties[] = {
diff --git a/hw/cpu/a9mpcore.c b/hw/cpu/a9mpcore.c
index c09358c..bb63075 100644
--- a/hw/cpu/a9mpcore.c
+++ b/hw/cpu/a9mpcore.c
@@ -112,21 +112,27 @@ static void a9mp_priv_realize(DeviceState *dev, Error
**errp)
* 0x1000-0x1fff -- GIC Distributor
*/
memory_region_add_subregion(&s->container, 0,
- sysbus_mmio_get_region(scubusdev, 0));
+ sysbus_mmio_get_region(scubusdev, 0),
+ &error_abort);
/* GIC CPU interface */
memory_region_add_subregion(&s->container, 0x100,
- sysbus_mmio_get_region(gicbusdev, 1));
+ sysbus_mmio_get_region(gicbusdev, 1),
+ &error_abort);
memory_region_add_subregion(&s->container, 0x200,
- sysbus_mmio_get_region(gtimerbusdev, 0));
+ sysbus_mmio_get_region(gtimerbusdev, 0),
+ &error_abort);
/* Note that the A9 exposes only the "timer/watchdog for this core"
* memory region, not the "timer/watchdog for core X" ones 11MPcore has.
*/
memory_region_add_subregion(&s->container, 0x600,
- sysbus_mmio_get_region(mptimerbusdev, 0));
+ sysbus_mmio_get_region(mptimerbusdev, 0),
+ &error_abort);
memory_region_add_subregion(&s->container, 0x620,
- sysbus_mmio_get_region(wdtbusdev, 0));
+ sysbus_mmio_get_region(wdtbusdev, 0),
+ &error_abort);
memory_region_add_subregion(&s->container, 0x1000,
- sysbus_mmio_get_region(gicbusdev, 0));
+ sysbus_mmio_get_region(gicbusdev, 0),
+ &error_abort);
/* Wire up the interrupt from each watchdog and timer.
* For each core the global timer is PPI 27, the private
diff --git a/hw/cpu/arm11mpcore.c b/hw/cpu/arm11mpcore.c
index 717d3e4..987e7ec 100644
--- a/hw/cpu/arm11mpcore.c
+++ b/hw/cpu/arm11mpcore.c
@@ -28,14 +28,16 @@ static void mpcore_priv_map_setup(ARM11MPCorePriveState *s)
SysBusDevice *wdtbusdev = SYS_BUS_DEVICE(&s->wdtimer);
memory_region_add_subregion(&s->container, 0,
- sysbus_mmio_get_region(scubusdev, 0));
+ sysbus_mmio_get_region(scubusdev, 0),
+ &error_abort);
/* GIC CPU interfaces: "current CPU" at 0x100, then specific CPUs
* at 0x200, 0x300...
*/
for (i = 0; i < (s->num_cpu + 1); i++) {
hwaddr offset = 0x100 + (i * 0x100);
memory_region_add_subregion(&s->container, offset,
- sysbus_mmio_get_region(gicbusdev, i + 1));
+ sysbus_mmio_get_region(gicbusdev, i + 1),
+ &error_abort);
}
/* Add the regions for timer and watchdog for "current CPU" and
* for each specific CPU.
@@ -44,12 +46,15 @@ static void mpcore_priv_map_setup(ARM11MPCorePriveState *s)
/* Timers at 0x600, 0x700, ...; watchdogs at 0x620, 0x720, ... */
hwaddr offset = 0x600 + i * 0x100;
memory_region_add_subregion(&s->container, offset,
- sysbus_mmio_get_region(timerbusdev, i));
+ sysbus_mmio_get_region(timerbusdev, i),
+ &error_abort);
memory_region_add_subregion(&s->container, offset + 0x20,
- sysbus_mmio_get_region(wdtbusdev, i));
+ sysbus_mmio_get_region(wdtbusdev, i),
+ &error_abort);
}
memory_region_add_subregion(&s->container, 0x1000,
- sysbus_mmio_get_region(gicbusdev, 0));
+ sysbus_mmio_get_region(gicbusdev, 0),
+ &error_abort);
/* Wire up the interrupt from each watchdog and timer.
* For each core the timer is PPI 29 and the watchdog PPI 30.
*/
diff --git a/hw/cris/axis_dev88.c b/hw/cris/axis_dev88.c
index 3cae480..fbe6219 100644
--- a/hw/cris/axis_dev88.c
+++ b/hw/cris/axis_dev88.c
@@ -272,14 +272,16 @@ void axisdev88_init(MachineState *machine)
/* allocate RAM */
memory_region_allocate_system_memory(phys_ram, NULL, "axisdev88.ram",
ram_size);
- memory_region_add_subregion(address_space_mem, 0x40000000, phys_ram);
+ memory_region_add_subregion(address_space_mem, 0x40000000, phys_ram,
+ &error_abort);
/* The ETRAX-FS has 128Kb on chip ram, the docs refer to it as the
internal memory. */
memory_region_init_ram(phys_intmem, NULL, "axisdev88.chipram", INTMEM_SIZE,
&error_abort);
vmstate_register_ram_global(phys_intmem);
- memory_region_add_subregion(address_space_mem, 0x38000000, phys_intmem);
+ memory_region_add_subregion(address_space_mem, 0x38000000, phys_intmem,
+ &error_abort);
/* Attach a NAND flash to CS1. */
nand = drive_get(IF_MTD, 0, 0);
@@ -288,13 +290,13 @@ void axisdev88_init(MachineState *machine)
memory_region_init_io(&nand_state.iomem, NULL, &nand_ops, &nand_state,
"nand", 0x05000000);
memory_region_add_subregion(address_space_mem, 0x10000000,
- &nand_state.iomem);
+ &nand_state.iomem, &error_abort);
gpio_state.nand = &nand_state;
memory_region_init_io(&gpio_state.iomem, NULL, &gpio_ops, &gpio_state,
"gpio", 0x5c);
memory_region_add_subregion(address_space_mem, 0x3001a000,
- &gpio_state.iomem);
+ &gpio_state.iomem, &error_abort);
dev = qdev_create(NULL, "etraxfs,pic");
diff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c
index 5198037..b2bd4a9 100644
--- a/hw/display/cirrus_vga.c
+++ b/hw/display/cirrus_vga.c
@@ -2892,7 +2892,8 @@ static void cirrus_init_common(CirrusVGAState *s, Object
*owner,
memory_region_init_io(&s->cirrus_vga_io, owner, &cirrus_vga_io_ops, s,
"cirrus-io", 0x30);
memory_region_set_flush_coalesced(&s->cirrus_vga_io);
- memory_region_add_subregion(system_io, 0x3b0, &s->cirrus_vga_io);
+ memory_region_add_subregion(system_io, 0x3b0, &s->cirrus_vga_io,
+ &error_abort);
memory_region_init(&s->low_mem_container, owner,
"cirrus-lowmem-container",
@@ -2900,7 +2901,8 @@ static void cirrus_init_common(CirrusVGAState *s, Object
*owner,
memory_region_init_io(&s->low_mem, owner, &cirrus_vga_mem_ops, s,
"cirrus-low-memory", 0x20000);
- memory_region_add_subregion(&s->low_mem_container, 0, &s->low_mem);
+ memory_region_add_subregion(&s->low_mem_container, 0, &s->low_mem,
+ &error_abort);
for (i = 0; i < 2; ++i) {
static const char *names[] = { "vga.bank0", "vga.bank1" };
MemoryRegion *bank = &s->cirrus_bank[i];
@@ -3036,9 +3038,10 @@ static void pci_cirrus_vga_realize(PCIDevice *dev, Error
**errp)
memory_region_init(&s->pci_bar, OBJECT(dev), "cirrus-pci-bar0", 0x2000000);
/* XXX: add byte swapping apertures */
- memory_region_add_subregion(&s->pci_bar, 0, &s->cirrus_linear_io);
+ memory_region_add_subregion(&s->pci_bar, 0, &s->cirrus_linear_io,
+ &error_abort);
memory_region_add_subregion(&s->pci_bar, 0x1000000,
- &s->cirrus_linear_bitblt_io);
+ &s->cirrus_linear_bitblt_io, &error_abort);
/* setup memory space */
/* memory #0 LFB */
diff --git a/hw/display/omap_dss.c b/hw/display/omap_dss.c
index f1fef27..7cb255e 100644
--- a/hw/display/omap_dss.c
+++ b/hw/display/omap_dss.c
@@ -1073,7 +1073,7 @@ struct omap_dss_s *omap_dss_init(struct
omap_target_agent_s *ta,
omap_l4_attach(ta, 1, &s->iomem_disc1);
omap_l4_attach(ta, 2, &s->iomem_rfbi1);
omap_l4_attach(ta, 3, &s->iomem_venc1);
- memory_region_add_subregion(sysmem, l3_base, &s->iomem_im3);
+ memory_region_add_subregion(sysmem, l3_base, &s->iomem_im3, &error_abort);
#if 0
s->state = graphic_console_init(omap_update_display,
diff --git a/hw/display/omap_lcdc.c b/hw/display/omap_lcdc.c
index fda81ba..63ec081 100644
--- a/hw/display/omap_lcdc.c
+++ b/hw/display/omap_lcdc.c
@@ -404,7 +404,7 @@ struct omap_lcd_panel_s *omap_lcdc_init(MemoryRegion
*sysmem,
omap_lcdc_reset(s);
memory_region_init_io(&s->iomem, NULL, &omap_lcdc_ops, s, "omap.lcdc",
0x100);
- memory_region_add_subregion(sysmem, base, &s->iomem);
+ memory_region_add_subregion(sysmem, base, &s->iomem, &error_abort);
s->con = graphic_console_init(NULL, 0, &omap_ops, s);
diff --git a/hw/display/pxa2xx_lcd.c b/hw/display/pxa2xx_lcd.c
index ac3c018..7672aa5 100644
--- a/hw/display/pxa2xx_lcd.c
+++ b/hw/display/pxa2xx_lcd.c
@@ -1001,7 +1001,7 @@ PXA2xxLCDState *pxa2xx_lcdc_init(MemoryRegion *sysmem,
memory_region_init_io(&s->iomem, NULL, &pxa2xx_lcdc_ops, s,
"pxa2xx-lcd-controller", 0x00100000);
- memory_region_add_subregion(sysmem, base, &s->iomem);
+ memory_region_add_subregion(sysmem, base, &s->iomem, &error_abort);
s->con = graphic_console_init(NULL, 0, &pxa2xx_ops, s);
surface = qemu_console_surface(s->con);
diff --git a/hw/display/sm501.c b/hw/display/sm501.c
index 15a5ba8..b7a7fbd 100644
--- a/hw/display/sm501.c
+++ b/hw/display/sm501.c
@@ -1415,23 +1415,24 @@ void sm501_init(MemoryRegion *address_space_mem,
uint32_t base,
vmstate_register_ram_global(&s->local_mem_region);
memory_region_set_log(&s->local_mem_region, true, DIRTY_MEMORY_VGA);
s->local_mem = memory_region_get_ram_ptr(&s->local_mem_region);
- memory_region_add_subregion(address_space_mem, base, &s->local_mem_region);
+ memory_region_add_subregion(address_space_mem, base, &s->local_mem_region,
+ &error_abort);
/* map mmio */
memory_region_init_io(sm501_system_config, NULL, &sm501_system_config_ops,
s,
"sm501-system-config", 0x6c);
memory_region_add_subregion(address_space_mem, base + MMIO_BASE_OFFSET,
- sm501_system_config);
+ sm501_system_config, &error_abort);
memory_region_init_io(sm501_disp_ctrl, NULL, &sm501_disp_ctrl_ops, s,
"sm501-disp-ctrl", 0x1000);
memory_region_add_subregion(address_space_mem,
base + MMIO_BASE_OFFSET + SM501_DC,
- sm501_disp_ctrl);
+ sm501_disp_ctrl, &error_abort);
memory_region_init_io(sm501_2d_engine, NULL, &sm501_2d_engine_ops, s,
"sm501-2d-engine", 0x54);
memory_region_add_subregion(address_space_mem,
base + MMIO_BASE_OFFSET + SM501_2D_ENGINE,
- sm501_2d_engine);
+ sm501_2d_engine, &error_abort);
/* bridge to usb host emulation module */
dev = qdev_create(NULL, "sysbus-ohci");
diff --git a/hw/display/tc6393xb.c b/hw/display/tc6393xb.c
index f5f3f3e..a2f64ec 100644
--- a/hw/display/tc6393xb.c
+++ b/hw/display/tc6393xb.c
@@ -581,13 +581,14 @@ TC6393xbState *tc6393xb_init(MemoryRegion *sysmem,
uint32_t base, qemu_irq irq)
NAND_MFR_TOSHIBA, 0x76);
memory_region_init_io(&s->iomem, NULL, &tc6393xb_ops, s, "tc6393xb",
0x10000);
- memory_region_add_subregion(sysmem, base, &s->iomem);
+ memory_region_add_subregion(sysmem, base, &s->iomem, &error_abort);
memory_region_init_ram(&s->vram, NULL, "tc6393xb.vram", 0x100000,
&error_abort);
vmstate_register_ram_global(&s->vram);
s->vram_ptr = memory_region_get_ram_ptr(&s->vram);
- memory_region_add_subregion(sysmem, base + 0x100000, &s->vram);
+ memory_region_add_subregion(sysmem, base + 0x100000, &s->vram,
+ &error_abort);
s->scr_width = 480;
s->scr_height = 640;
s->con = graphic_console_init(NULL, 0, &tc6393xb_gfx_ops, s);
diff --git a/hw/display/vga-isa-mm.c b/hw/display/vga-isa-mm.c
index 4efc222..1c58361 100644
--- a/hw/display/vga-isa-mm.c
+++ b/hw/display/vga-isa-mm.c
@@ -116,10 +116,12 @@ static void vga_mm_init(ISAVGAMMState *s, hwaddr
vram_base,
vmstate_register(NULL, 0, &vmstate_vga_common, s);
- memory_region_add_subregion(address_space, ctrl_base, s_ioport_ctrl);
+ memory_region_add_subregion(address_space, ctrl_base, s_ioport_ctrl,
+ &error_abort);
s->vga.bank_offset = 0;
memory_region_add_subregion(address_space,
- vram_base + 0x000a0000, vga_io_memory);
+ vram_base + 0x000a0000, vga_io_memory,
+ &error_abort);
memory_region_set_coalescing(vga_io_memory);
}
diff --git a/hw/display/vga-pci.c b/hw/display/vga-pci.c
index 1dfa331..504ebb6 100644
--- a/hw/display/vga-pci.c
+++ b/hw/display/vga-pci.c
@@ -212,18 +212,18 @@ void pci_std_vga_mmio_region_init(VGACommonState *s,
memory_region_init_io(&subs[0], NULL, &pci_vga_ioport_ops, s,
"vga ioports remapped", PCI_VGA_IOPORT_SIZE);
memory_region_add_subregion(parent, PCI_VGA_IOPORT_OFFSET,
- &subs[0]);
+ &subs[0], &error_abort);
memory_region_init_io(&subs[1], NULL, &pci_vga_bochs_ops, s,
"bochs dispi interface", PCI_VGA_BOCHS_SIZE);
memory_region_add_subregion(parent, PCI_VGA_BOCHS_OFFSET,
- &subs[1]);
+ &subs[1], &error_abort);
if (qext) {
memory_region_init_io(&subs[2], NULL, &pci_vga_qext_ops, s,
"qemu extended regs", PCI_VGA_QEXT_SIZE);
memory_region_add_subregion(parent, PCI_VGA_QEXT_OFFSET,
- &subs[2]);
+ &subs[2], &error_abort);
}
}
diff --git a/hw/display/vga.c b/hw/display/vga.c
index b35d523..74bb4ed 100644
--- a/hw/display/vga.c
+++ b/hw/display/vga.c
@@ -2247,6 +2247,7 @@ void vga_init_vbe(VGACommonState *s, Object *obj,
MemoryRegion *system_memory)
/* XXX: use optimized standard vga accesses */
memory_region_add_subregion(system_memory,
VBE_DISPI_LFB_PHYSICAL_ADDRESS,
- &s->vram_vbe);
+ &s->vram_vbe,
+ &error_abort);
s->vbe_mapped = 1;
}
diff --git a/hw/dma/etraxfs_dma.c b/hw/dma/etraxfs_dma.c
index 3599513..7fd23dc 100644
--- a/hw/dma/etraxfs_dma.c
+++ b/hw/dma/etraxfs_dma.c
@@ -775,7 +775,8 @@ void *etraxfs_dmac_init(hwaddr base, int nr_channels)
memory_region_init_io(&ctrl->mmio, NULL, &dma_ops, ctrl, "etraxfs-dma",
nr_channels * 0x2000);
- memory_region_add_subregion(get_system_memory(), base, &ctrl->mmio);
+ memory_region_add_subregion(get_system_memory(), base, &ctrl->mmio,
+ &error_abort);
return ctrl;
}
diff --git a/hw/dma/i8257.c b/hw/dma/i8257.c
index a414029..15087ce 100644
--- a/hw/dma/i8257.c
+++ b/hw/dma/i8257.c
@@ -526,7 +526,7 @@ static void dma_init2(struct dma_cont *d, int base, int
dshift,
memory_region_init_io(&d->channel_io, NULL, &channel_io_ops, d,
"dma-chan", 8 << d->dshift);
memory_region_add_subregion(isa_address_space_io(NULL),
- base, &d->channel_io);
+ base, &d->channel_io, &error_abort);
isa_register_portio_list(NULL, page_base, page_portio_list, d,
"dma-page");
@@ -538,7 +538,8 @@ static void dma_init2(struct dma_cont *d, int base, int
dshift,
memory_region_init_io(&d->cont_io, NULL, &cont_io_ops, d, "dma-cont",
8 << d->dshift);
memory_region_add_subregion(isa_address_space_io(NULL),
- base + (8 << d->dshift), &d->cont_io);
+ base + (8 << d->dshift), &d->cont_io,
+ &error_abort);
qemu_register_reset(dma_reset, d);
dma_reset(d);
diff --git a/hw/dma/omap_dma.c b/hw/dma/omap_dma.c
index 97c57a0..02e7a15 100644
--- a/hw/dma/omap_dma.c
+++ b/hw/dma/omap_dma.c
@@ -1666,7 +1666,7 @@ struct soc_dma_s *omap_dma_init(hwaddr base, qemu_irq
*irqs,
omap_dma_clk_update(s, 0, 1);
memory_region_init_io(&s->iomem, NULL, &omap_dma_ops, s, "omap.dma",
memsize);
- memory_region_add_subregion(sysmem, base, &s->iomem);
+ memory_region_add_subregion(sysmem, base, &s->iomem, &error_abort);
mpu->drq = s->dma->drq;
@@ -2089,7 +2089,7 @@ struct soc_dma_s *omap_dma4_init(hwaddr base, qemu_irq
*irqs,
omap_dma_clk_update(s, 0, !!s->dma->freq);
memory_region_init_io(&s->iomem, NULL, &omap_dma4_ops, s, "omap.dma4",
0x1000);
- memory_region_add_subregion(sysmem, base, &s->iomem);
+ memory_region_add_subregion(sysmem, base, &s->iomem, &error_abort);
mpu->drq = s->dma->drq;
diff --git a/hw/dma/rc4030.c b/hw/dma/rc4030.c
index 3efa6de..2340b89 100644
--- a/hw/dma/rc4030.c
+++ b/hw/dma/rc4030.c
@@ -336,7 +336,7 @@ static void rc4030_dma_tt_update(rc4030State *s, uint32_t
new_tl_base,
rc4030_dma_as_update_one(s, i, dma_tl_contents[i].frame);
}
memory_region_add_subregion(get_system_memory(), new_tl_base,
- &s->dma_tt_alias);
+ &s->dma_tt_alias, &error_abort);
memory_region_transaction_commit();
} else {
memory_region_init(&s->dma_tt_alias, OBJECT(s),
@@ -782,7 +782,7 @@ static void rc4030_realize(DeviceState *dev, Error **errp)
get_system_memory(), 0, DMA_PAGESIZE);
memory_region_set_enabled(&s->dma_mrs[i], false);
memory_region_add_subregion(&s->dma_mr, i * DMA_PAGESIZE,
- &s->dma_mrs[i]);
+ &s->dma_mrs[i], &error_abort);
}
address_space_init(&s->dma_as, &s->dma_mr, "rc4030-dma");
}
diff --git a/hw/i386/kvm/pci-assign.c b/hw/i386/kvm/pci-assign.c
index 74d22f4..b177355 100644
--- a/hw/i386/kvm/pci-assign.c
+++ b/hw/i386/kvm/pci-assign.c
@@ -267,7 +267,8 @@ static void assigned_dev_iomem_setup(PCIDevice *pci_dev,
int region_num,
if (e_size > 0) {
memory_region_init(®ion->container, OBJECT(pci_dev),
"assigned-dev-container", e_size);
- memory_region_add_subregion(®ion->container, 0,
®ion->real_iomem);
+ memory_region_add_subregion(®ion->container, 0, ®ion->real_iomem,
+ &error_abort);
/* deal with MSI-X MMIO page */
if (real_region->base_addr <= r_dev->msix_table_addr &&
@@ -301,7 +302,8 @@ static void assigned_dev_ioport_setup(PCIDevice *pci_dev,
int region_num,
memory_region_init_io(®ion->real_iomem, OBJECT(pci_dev),
&assigned_dev_ioport_ops, r_dev->v_addrs +
region_num,
"assigned-dev-iomem", size);
- memory_region_add_subregion(®ion->container, 0, ®ion->real_iomem);
+ memory_region_add_subregion(®ion->container, 0, ®ion->real_iomem,
+ &error_abort);
}
static uint32_t assigned_dev_pci_read(PCIDevice *d, int pos, int len)
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index bd79d25..9afc653 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1256,14 +1256,14 @@ FWCfgState *pc_memory_init(MachineState *machine,
ram_below_4g = g_malloc(sizeof(*ram_below_4g));
memory_region_init_alias(ram_below_4g, NULL, "ram-below-4g", ram,
0, below_4g_mem_size);
- memory_region_add_subregion(system_memory, 0, ram_below_4g);
+ memory_region_add_subregion(system_memory, 0, ram_below_4g, &error_abort);
e820_add_entry(0, below_4g_mem_size, E820_RAM);
if (above_4g_mem_size > 0) {
ram_above_4g = g_malloc(sizeof(*ram_above_4g));
memory_region_init_alias(ram_above_4g, NULL, "ram-above-4g", ram,
below_4g_mem_size, above_4g_mem_size);
memory_region_add_subregion(system_memory, 0x100000000ULL,
- ram_above_4g);
+ ram_above_4g, &error_abort);
e820_add_entry(0x100000000ULL, above_4g_mem_size, E820_RAM);
}
@@ -1314,7 +1314,7 @@ FWCfgState *pc_memory_init(MachineState *machine,
memory_region_init_hva_range(&pcms->hotplug_memory.mr, OBJECT(pcms),
"hotplug-memory", hotplug_mem_size);
memory_region_add_subregion(system_memory, pcms->hotplug_memory.base,
- &pcms->hotplug_memory.mr);
+ &pcms->hotplug_memory.mr, &error_abort);
}
/* Initialize PC system firmware */
@@ -1418,10 +1418,12 @@ void pc_basic_device_init(ISABus *isa_bus, qemu_irq
*gsi,
MemoryRegion *ioportF0_io = g_new(MemoryRegion, 1);
memory_region_init_io(ioport80_io, NULL, &ioport80_io_ops, NULL,
"ioport80", 1);
- memory_region_add_subregion(isa_bus->address_space_io, 0x80, ioport80_io);
+ memory_region_add_subregion(isa_bus->address_space_io, 0x80, ioport80_io,
+ &error_abort);
memory_region_init_io(ioportF0_io, NULL, &ioportF0_io_ops, NULL,
"ioportF0", 1);
- memory_region_add_subregion(isa_bus->address_space_io, 0xf0, ioportF0_io);
+ memory_region_add_subregion(isa_bus->address_space_io, 0xf0, ioportF0_io,
+ &error_abort);
/*
* Check if an HPET shall be created.
diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c
index 662d997..4b98777 100644
--- a/hw/i386/pc_sysfw.c
+++ b/hw/i386/pc_sysfw.c
@@ -225,7 +225,7 @@ static void old_pc_system_rom_init(MemoryRegion
*rom_memory, bool isapc_ram_fw)
/* map all the bios at the top of memory */
memory_region_add_subregion(rom_memory,
(uint32_t)(-bios_size),
- bios);
+ bios, &error_abort);
}
void pc_system_firmware_init(MemoryRegion *rom_memory, bool isapc_ram_fw)
diff --git a/hw/ide/cmd646.c b/hw/ide/cmd646.c
index 66fb9d9..ac78f69 100644
--- a/hw/ide/cmd646.c
+++ b/hw/ide/cmd646.c
@@ -251,11 +251,13 @@ static void bmdma_setup_bar(PCIIDEState *d)
bm = &d->bmdma[i];
memory_region_init_io(&bm->extra_io, OBJECT(d), &cmd646_bmdma_ops, bm,
"cmd646-bmdma-bus", 4);
- memory_region_add_subregion(&d->bmdma_bar, i * 8, &bm->extra_io);
+ memory_region_add_subregion(&d->bmdma_bar, i * 8, &bm->extra_io,
+ &error_abort);
memory_region_init_io(&bm->addr_ioport, OBJECT(d),
&bmdma_addr_ioport_ops, bm,
"cmd646-bmdma-ioport", 4);
- memory_region_add_subregion(&d->bmdma_bar, i * 8 + 4,
&bm->addr_ioport);
+ memory_region_add_subregion(&d->bmdma_bar, i * 8 + 4, &bm->addr_ioport,
+ &error_abort);
}
}
diff --git a/hw/ide/piix.c b/hw/ide/piix.c
index adb6649..70acfce 100644
--- a/hw/ide/piix.c
+++ b/hw/ide/piix.c
@@ -96,10 +96,12 @@ static void bmdma_setup_bar(PCIIDEState *d)
memory_region_init_io(&bm->extra_io, OBJECT(d), &piix_bmdma_ops, bm,
"piix-bmdma", 4);
- memory_region_add_subregion(&d->bmdma_bar, i * 8, &bm->extra_io);
+ memory_region_add_subregion(&d->bmdma_bar, i * 8, &bm->extra_io,
+ &error_abort);
memory_region_init_io(&bm->addr_ioport, OBJECT(d),
&bmdma_addr_ioport_ops, bm, "bmdma", 4);
- memory_region_add_subregion(&d->bmdma_bar, i * 8 + 4,
&bm->addr_ioport);
+ memory_region_add_subregion(&d->bmdma_bar, i * 8 + 4, &bm->addr_ioport,
+ &error_abort);
}
}
diff --git a/hw/ide/via.c b/hw/ide/via.c
index e2da9ef..5efb906 100644
--- a/hw/ide/via.c
+++ b/hw/ide/via.c
@@ -98,10 +98,12 @@ static void bmdma_setup_bar(PCIIDEState *d)
memory_region_init_io(&bm->extra_io, OBJECT(d), &via_bmdma_ops, bm,
"via-bmdma", 4);
- memory_region_add_subregion(&d->bmdma_bar, i * 8, &bm->extra_io);
+ memory_region_add_subregion(&d->bmdma_bar, i * 8, &bm->extra_io,
+ &error_abort);
memory_region_init_io(&bm->addr_ioport, OBJECT(d),
&bmdma_addr_ioport_ops, bm, "bmdma", 4);
- memory_region_add_subregion(&d->bmdma_bar, i * 8 + 4,
&bm->addr_ioport);
+ memory_region_add_subregion(&d->bmdma_bar, i * 8 + 4, &bm->addr_ioport,
+ &error_abort);
}
}
diff --git a/hw/input/pxa2xx_keypad.c b/hw/input/pxa2xx_keypad.c
index 8501114..e2bde81 100644
--- a/hw/input/pxa2xx_keypad.c
+++ b/hw/input/pxa2xx_keypad.c
@@ -314,7 +314,7 @@ PXA2xxKeyPadState *pxa27x_keypad_init(MemoryRegion *sysmem,
memory_region_init_io(&s->iomem, NULL, &pxa2xx_keypad_ops, s,
"pxa2xx-keypad", 0x00100000);
- memory_region_add_subregion(sysmem, base, &s->iomem);
+ memory_region_add_subregion(sysmem, base, &s->iomem, &error_abort);
vmstate_register(NULL, 0, &vmstate_pxa2xx_keypad, s);
diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c
index 0032b97..e65b66d 100644
--- a/hw/intc/apic_common.c
+++ b/hw/intc/apic_common.c
@@ -309,7 +309,8 @@ static void apic_common_realize(DeviceState *dev, Error
**errp)
info->realize(dev, errp);
if (!mmio_registered) {
ICCBus *b = ICC_BUS(qdev_get_parent_bus(dev));
- memory_region_add_subregion(b->apic_address_space, 0, &s->io_memory);
+ memory_region_add_subregion(b->apic_address_space, 0, &s->io_memory,
+ &error_abort);
mmio_registered = true;
}
diff --git a/hw/intc/armv7m_nvic.c b/hw/intc/armv7m_nvic.c
index e13b729..4b0f1c3 100644
--- a/hw/intc/armv7m_nvic.c
+++ b/hw/intc/armv7m_nvic.c
@@ -511,7 +511,7 @@ static void armv7m_nvic_realize(DeviceState *dev, Error
**errp)
*/
memory_region_init_io(&s->sysregmem, OBJECT(s), &nvic_sysreg_ops, s,
"nvic_sysregs", 0x1000);
- memory_region_add_subregion(&s->container, 0, &s->sysregmem);
+ memory_region_add_subregion(&s->container, 0, &s->sysregmem, &error_abort);
/* Alias the GIC region so we can get only the section of it
* we need, and layer it on top of the system register region.
*/
@@ -523,7 +523,8 @@ static void armv7m_nvic_realize(DeviceState *dev, Error
**errp)
/* Map the whole thing into system memory at the location required
* by the v7M architecture.
*/
- memory_region_add_subregion(get_system_memory(), 0xe000e000,
&s->container);
+ memory_region_add_subregion(get_system_memory(), 0xe000e000, &s->container,
+ &error_abort);
s->systick.timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, systick_timer_tick, s);
}
diff --git a/hw/intc/exynos4210_gic.c b/hw/intc/exynos4210_gic.c
index b2a4950..57b6d1f 100644
--- a/hw/intc/exynos4210_gic.c
+++ b/hw/intc/exynos4210_gic.c
@@ -318,7 +318,8 @@ static int exynos4210_gic_init(SysBusDevice *sbd)
0,
EXYNOS4210_GIC_CPU_REGION_SIZE);
memory_region_add_subregion(&s->cpu_container,
- EXYNOS4210_EXT_GIC_CPU_GET_OFFSET(i), &s->cpu_alias[i]);
+ EXYNOS4210_EXT_GIC_CPU_GET_OFFSET(i), &s->cpu_alias[i],
+ &error_abort);
/* Map Distributor per SMP Core */
sprintf(dist_alias_name, "%s%x", dist_prefix, i);
@@ -328,7 +329,8 @@ static int exynos4210_gic_init(SysBusDevice *sbd)
0,
EXYNOS4210_GIC_DIST_REGION_SIZE);
memory_region_add_subregion(&s->dist_container,
- EXYNOS4210_EXT_GIC_DIST_GET_OFFSET(i), &s->dist_alias[i]);
+ EXYNOS4210_EXT_GIC_DIST_GET_OFFSET(i), &s->dist_alias[i],
+ &error_abort);
}
sysbus_init_mmio(sbd, &s->cpu_container);
diff --git a/hw/intc/openpic.c b/hw/intc/openpic.c
index 14ab0e3..b9aa8e6 100644
--- a/hw/intc/openpic.c
+++ b/hw/intc/openpic.c
@@ -1401,7 +1401,7 @@ static void map_list(OpenPICState *opp, const MemReg
*list, int *count)
opp, list->name, list->size);
memory_region_add_subregion(&opp->mem, list->start_addr,
- &opp->sub_io_mem[*count]);
+ &opp->sub_io_mem[*count], &error_abort);
(*count)++;
list++;
diff --git a/hw/intc/realview_gic.c b/hw/intc/realview_gic.c
index 6c81296..da7dff7 100644
--- a/hw/intc/realview_gic.c
+++ b/hw/intc/realview_gic.c
@@ -43,9 +43,11 @@ static void realview_gic_realize(DeviceState *dev, Error
**errp)
qdev_init_gpio_in(dev, realview_gic_set_irq, numirq - 32);
memory_region_add_subregion(&s->container, 0,
- sysbus_mmio_get_region(busdev, 1));
+ sysbus_mmio_get_region(busdev, 1),
+ &error_abort);
memory_region_add_subregion(&s->container, 0x1000,
- sysbus_mmio_get_region(busdev, 0));
+ sysbus_mmio_get_region(busdev, 0),
+ &error_abort);
}
static void realview_gic_init(Object *obj)
diff --git a/hw/intc/sh_intc.c b/hw/intc/sh_intc.c
index 55c76e4..56c903f 100644
--- a/hw/intc/sh_intc.c
+++ b/hw/intc/sh_intc.c
@@ -319,11 +319,13 @@ static unsigned int sh_intc_register(MemoryRegion *sysmem,
#define SH_INTC_IOMEM_FORMAT "interrupt-controller-%s-%s-%s"
snprintf(name, sizeof(name), SH_INTC_IOMEM_FORMAT, type, action, "p4");
memory_region_init_alias(iomem_p4, NULL, name, iomem, INTC_A7(address), 4);
- memory_region_add_subregion(sysmem, P4ADDR(address), iomem_p4);
+ memory_region_add_subregion(sysmem, P4ADDR(address), iomem_p4,
+ &error_abort);
snprintf(name, sizeof(name), SH_INTC_IOMEM_FORMAT, type, action, "a7");
memory_region_init_alias(iomem_a7, NULL, name, iomem, INTC_A7(address), 4);
- memory_region_add_subregion(sysmem, A7ADDR(address), iomem_a7);
+ memory_region_add_subregion(sysmem, A7ADDR(address), iomem_a7,
+ &error_abort);
#undef SH_INTC_IOMEM_FORMAT
/* used to increment aliases index */
diff --git a/hw/isa/apm.c b/hw/isa/apm.c
index 26ab170..f1709db 100644
--- a/hw/isa/apm.c
+++ b/hw/isa/apm.c
@@ -98,5 +98,5 @@ void apm_init(PCIDevice *dev, APMState *apm,
apm_ctrl_changed_t callback,
/* ioport 0xb2, 0xb3 */
memory_region_init_io(&apm->io, OBJECT(dev), &apm_ops, apm, "apm-io", 2);
memory_region_add_subregion(pci_address_space_io(dev), APM_CNT_IOPORT,
- &apm->io);
+ &apm->io, &error_abort);
}
diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c
index 43e0cd8..b1d311a 100644
--- a/hw/isa/isa-bus.c
+++ b/hw/isa/isa-bus.c
@@ -101,7 +101,8 @@ static inline void isa_init_ioport(ISADevice *dev, uint16_t
ioport)
void isa_register_ioport(ISADevice *dev, MemoryRegion *io, uint16_t start)
{
- memory_region_add_subregion(isabus->address_space_io, start, io);
+ memory_region_add_subregion(isabus->address_space_io, start, io,
+ &error_abort);
isa_init_ioport(dev, start);
}
diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c
index 252e1d7..3db63ea 100644
--- a/hw/isa/vt82c686.c
+++ b/hw/isa/vt82c686.c
@@ -362,13 +362,14 @@ static void vt82c686b_pm_realize(PCIDevice *dev, Error
**errp)
pci_conf[0x91] = s->smb_io_base >> 8;
pci_conf[0xd2] = 0x90;
pm_smbus_init(&s->dev.qdev, &s->smb);
- memory_region_add_subregion(get_system_io(), s->smb_io_base, &s->smb.io);
+ memory_region_add_subregion(get_system_io(), s->smb_io_base, &s->smb.io,
+ &error_abort);
apm_init(dev, &s->apm, NULL, s);
memory_region_init(&s->io, OBJECT(dev), "vt82c686-pm", 64);
memory_region_set_enabled(&s->io, false);
- memory_region_add_subregion(get_system_io(), 0, &s->io);
+ memory_region_add_subregion(get_system_io(), 0, &s->io, &error_abort);
acpi_pm_tmr_init(&s->ar, pm_tmr_timer, &s->io);
acpi_pm1_evt_init(&s->ar, pm_tmr_timer, &s->io);
@@ -458,7 +459,7 @@ static void vt82c686b_realize(PCIDevice *d, Error **errp)
/* The floppy also uses 0x3f0 and 0x3f1.
* But we do not emulate a floppy, so just set it here. */
memory_region_add_subregion(isa_bus->address_space_io, 0x3f0,
- &vt82c->superio);
+ &vt82c->superio, &error_abort);
qemu_register_reset(vt82c686b_reset, d);
}
diff --git a/hw/lm32/lm32_boards.c b/hw/lm32/lm32_boards.c
index 70f48d3..ff744fd 100644
--- a/hw/lm32/lm32_boards.c
+++ b/hw/lm32/lm32_boards.c
@@ -113,7 +113,8 @@ static void lm32_evr_init(MachineState *machine)
memory_region_allocate_system_memory(phys_ram, NULL, "lm32_evr.sdram",
ram_size);
- memory_region_add_subregion(address_space_mem, ram_base, phys_ram);
+ memory_region_add_subregion(address_space_mem, ram_base, phys_ram,
+ &error_abort);
dinfo = drive_get(IF_PFLASH, 0, 0);
/* Spansion S29NS128P */
@@ -214,7 +215,8 @@ static void lm32_uclinux_init(MachineState *machine)
memory_region_allocate_system_memory(phys_ram, NULL,
"lm32_uclinux.sdram", ram_size);
- memory_region_add_subregion(address_space_mem, ram_base, phys_ram);
+ memory_region_add_subregion(address_space_mem, ram_base, phys_ram,
+ &error_abort);
dinfo = drive_get(IF_PFLASH, 0, 0);
/* Spansion S29NS128P */
diff --git a/hw/lm32/milkymist.c b/hw/lm32/milkymist.c
index e755f5b..0f35218 100644
--- a/hw/lm32/milkymist.c
+++ b/hw/lm32/milkymist.c
@@ -120,7 +120,8 @@ milkymist_init(MachineState *machine)
memory_region_allocate_system_memory(phys_sdram, NULL, "milkymist.sdram",
sdram_size);
- memory_region_add_subregion(address_space_mem, sdram_base, phys_sdram);
+ memory_region_add_subregion(address_space_mem, sdram_base, phys_sdram,
+ &error_abort);
dinfo = drive_get(IF_PFLASH, 0, 0);
/* Numonyx JS28F256J3F105 */
diff --git a/hw/m68k/an5206.c b/hw/m68k/an5206.c
index f63ab2b..cba086e 100644
--- a/hw/m68k/an5206.c
+++ b/hw/m68k/an5206.c
@@ -51,12 +51,13 @@ static void an5206_init(MachineState *machine)
/* DRAM at address zero */
memory_region_allocate_system_memory(ram, NULL, "an5206.ram", ram_size);
- memory_region_add_subregion(address_space_mem, 0, ram);
+ memory_region_add_subregion(address_space_mem, 0, ram, &error_abort);
/* Internal SRAM. */
memory_region_init_ram(sram, NULL, "an5206.sram", 512, &error_abort);
vmstate_register_ram_global(sram);
- memory_region_add_subregion(address_space_mem, AN5206_RAMBAR_ADDR, sram);
+ memory_region_add_subregion(address_space_mem, AN5206_RAMBAR_ADDR, sram,
+ &error_abort);
mcf5206_init(address_space_mem, AN5206_MBAR_ADDR, cpu);
diff --git a/hw/m68k/dummy_m68k.c b/hw/m68k/dummy_m68k.c
index 5b77d93..5561adf 100644
--- a/hw/m68k/dummy_m68k.c
+++ b/hw/m68k/dummy_m68k.c
@@ -44,7 +44,7 @@ static void dummy_m68k_init(MachineState *machine)
/* RAM at address zero */
memory_region_allocate_system_memory(ram, NULL, "dummy_m68k.ram",
ram_size);
- memory_region_add_subregion(address_space_mem, 0, ram);
+ memory_region_add_subregion(address_space_mem, 0, ram, &error_abort);
/* Load kernel. */
if (kernel_filename) {
diff --git a/hw/m68k/mcf5206.c b/hw/m68k/mcf5206.c
index 1727a46..b0e15c6 100644
--- a/hw/m68k/mcf5206.c
+++ b/hw/m68k/mcf5206.c
@@ -534,7 +534,7 @@ qemu_irq *mcf5206_init(MemoryRegion *sysmem, uint32_t base,
M68kCPU *cpu)
memory_region_init_io(&s->iomem, NULL, &m5206_mbar_ops, s,
"mbar", 0x00001000);
- memory_region_add_subregion(sysmem, base, &s->iomem);
+ memory_region_add_subregion(sysmem, base, &s->iomem, &error_abort);
pic = qemu_allocate_irqs(m5206_mbar_set_irq, s, 14);
s->timer[0] = m5206_timer_init(pic[9]);
diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c
index 326a42d..e080ed6 100644
--- a/hw/m68k/mcf5208.c
+++ b/hw/m68k/mcf5208.c
@@ -174,7 +174,7 @@ static void mcf5208_sys_init(MemoryRegion *address_space,
qemu_irq *pic)
/* SDRAMC. */
memory_region_init_io(iomem, NULL, &m5208_sys_ops, NULL, "m5208-sys",
0x00004000);
- memory_region_add_subregion(address_space, 0xfc0a8000, iomem);
+ memory_region_add_subregion(address_space, 0xfc0a8000, iomem,
&error_abort);
/* Timers. */
for (i = 0; i < 2; i++) {
s = (m5208_timer_state *)g_malloc0(sizeof(m5208_timer_state));
@@ -183,7 +183,7 @@ static void mcf5208_sys_init(MemoryRegion *address_space,
qemu_irq *pic)
memory_region_init_io(&s->iomem, NULL, &m5208_timer_ops, s,
"m5208-timer", 0x00004000);
memory_region_add_subregion(address_space, 0xfc080000 + 0x4000 * i,
- &s->iomem);
+ &s->iomem, &error_abort);
s->irq = pic[4 + i];
}
}
@@ -219,12 +219,14 @@ static void mcf5208evb_init(MachineState *machine)
/* DRAM at 0x40000000 */
memory_region_allocate_system_memory(ram, NULL, "mcf5208.ram", ram_size);
- memory_region_add_subregion(address_space_mem, 0x40000000, ram);
+ memory_region_add_subregion(address_space_mem, 0x40000000, ram,
+ &error_abort);
/* Internal SRAM. */
memory_region_init_ram(sram, NULL, "mcf5208.sram", 16384, &error_abort);
vmstate_register_ram_global(sram);
- memory_region_add_subregion(address_space_mem, 0x80000000, sram);
+ memory_region_add_subregion(address_space_mem, 0x80000000, sram,
+ &error_abort);
/* Internal peripherals. */
pic = mcf_intc_init(address_space_mem, 0xfc048000, cpu);
diff --git a/hw/m68k/mcf_intc.c b/hw/m68k/mcf_intc.c
index f13c7f3..3c6c5e5 100644
--- a/hw/m68k/mcf_intc.c
+++ b/hw/m68k/mcf_intc.c
@@ -162,7 +162,7 @@ qemu_irq *mcf_intc_init(MemoryRegion *sysmem,
mcf_intc_reset(s);
memory_region_init_io(&s->iomem, NULL, &mcf_intc_ops, s, "mcf", 0x100);
- memory_region_add_subregion(sysmem, base, &s->iomem);
+ memory_region_add_subregion(sysmem, base, &s->iomem, &error_abort);
return qemu_allocate_irqs(mcf_intc_set_irq, s, 64);
}
diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c
index bb04862..8cc9118 100644
--- a/hw/mem/pc-dimm.c
+++ b/hw/mem/pc-dimm.c
@@ -95,7 +95,7 @@ void pc_dimm_memory_plug(DeviceState *dev, MemoryHotplugState
*hpms,
goto out;
}
- memory_region_add_subregion(&hpms->mr, addr - hpms->base, mr);
+ memory_region_add_subregion(&hpms->mr, addr - hpms->base, mr,
&error_abort);
vmstate_register_ram(mr, dev);
numa_set_mem_node_id(addr, memory_region_size(mr), dimm->node);
diff --git a/hw/microblaze/petalogix_ml605_mmu.c
b/hw/microblaze/petalogix_ml605_mmu.c
index ed84a37..19de681 100644
--- a/hw/microblaze/petalogix_ml605_mmu.c
+++ b/hw/microblaze/petalogix_ml605_mmu.c
@@ -94,12 +94,14 @@ petalogix_ml605_init(MachineState *machine)
memory_region_init_ram(phys_lmb_bram, NULL, "petalogix_ml605.lmb_bram",
LMB_BRAM_SIZE, &error_abort);
vmstate_register_ram_global(phys_lmb_bram);
- memory_region_add_subregion(address_space_mem, 0x00000000, phys_lmb_bram);
+ memory_region_add_subregion(address_space_mem, 0x00000000, phys_lmb_bram,
+ &error_abort);
memory_region_init_ram(phys_ram, NULL, "petalogix_ml605.ram", ram_size,
&error_abort);
vmstate_register_ram_global(phys_ram);
- memory_region_add_subregion(address_space_mem, MEMORY_BASEADDR, phys_ram);
+ memory_region_add_subregion(address_space_mem, MEMORY_BASEADDR, phys_ram,
+ &error_abort);
dinfo = drive_get(IF_PFLASH, 0, 0);
/* 5th parameter 2 means bank-width
diff --git a/hw/microblaze/petalogix_s3adsp1800_mmu.c
b/hw/microblaze/petalogix_s3adsp1800_mmu.c
index 0c2140c..62e6563 100644
--- a/hw/microblaze/petalogix_s3adsp1800_mmu.c
+++ b/hw/microblaze/petalogix_s3adsp1800_mmu.c
@@ -73,12 +73,13 @@ petalogix_s3adsp1800_init(MachineState *machine)
"petalogix_s3adsp1800.lmb_bram", LMB_BRAM_SIZE,
&error_abort);
vmstate_register_ram_global(phys_lmb_bram);
- memory_region_add_subregion(sysmem, 0x00000000, phys_lmb_bram);
+ memory_region_add_subregion(sysmem, 0x00000000, phys_lmb_bram,
+ &error_abort);
memory_region_init_ram(phys_ram, NULL, "petalogix_s3adsp1800.ram",
ram_size, &error_abort);
vmstate_register_ram_global(phys_ram);
- memory_region_add_subregion(sysmem, ddr_base, phys_ram);
+ memory_region_add_subregion(sysmem, ddr_base, phys_ram, &error_abort);
dinfo = drive_get(IF_PFLASH, 0, 0);
pflash_cfi01_register(FLASH_BASEADDR,
diff --git a/hw/mips/gt64xxx_pci.c b/hw/mips/gt64xxx_pci.c
index 10fcca3..7c630bc 100644
--- a/hw/mips/gt64xxx_pci.c
+++ b/hw/mips/gt64xxx_pci.c
@@ -289,7 +289,8 @@ static void gt64120_isd_mapping(GT64120State *s)
s->ISD_length, s->ISD_start, length, start);
s->ISD_start = start;
s->ISD_length = length;
- memory_region_add_subregion(get_system_memory(), s->ISD_start,
&s->ISD_mem);
+ memory_region_add_subregion(get_system_memory(), s->ISD_start, &s->ISD_mem,
+ &error_abort);
}
static void gt64120_pci_mapping(GT64120State *s)
@@ -309,7 +310,7 @@ static void gt64120_pci_mapping(GT64120State *s)
memory_region_init_alias(&s->PCI0IO_mem, OBJECT(s), "pci0-io",
get_system_io(), 0, s->PCI0IO_length);
memory_region_add_subregion(get_system_memory(), s->PCI0IO_start,
- &s->PCI0IO_mem);
+ &s->PCI0IO_mem, &error_abort);
}
}
@@ -329,7 +330,7 @@ static void gt64120_pci_mapping(GT64120State *s)
&s->pci0_mem, s->PCI0M0_start,
s->PCI0M0_length);
memory_region_add_subregion(get_system_memory(), s->PCI0M0_start,
- &s->PCI0M0_mem);
+ &s->PCI0M0_mem, &error_abort);
}
}
@@ -349,7 +350,7 @@ static void gt64120_pci_mapping(GT64120State *s)
&s->pci0_mem, s->PCI0M1_start,
s->PCI0M1_length);
memory_region_add_subregion(get_system_memory(), s->PCI0M1_start,
- &s->PCI0M1_mem);
+ &s->PCI0M1_mem, &error_abort);
}
}
}
diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
index dea941a..1ed8d1b 100644
--- a/hw/mips/mips_fulong2e.c
+++ b/hw/mips/mips_fulong2e.c
@@ -308,8 +308,9 @@ static void mips_fulong2e_init(MachineState *machine)
vmstate_register_ram_global(bios);
memory_region_set_readonly(bios, true);
- memory_region_add_subregion(address_space_mem, 0, ram);
- memory_region_add_subregion(address_space_mem, 0x1fc00000LL, bios);
+ memory_region_add_subregion(address_space_mem, 0, ram, &error_abort);
+ memory_region_add_subregion(address_space_mem, 0x1fc00000LL, bios,
+ &error_abort);
/* We do not support flash operation, just loading pmon.bin as raw BIOS.
* Please use -L to set the BIOS path and -bios to set bios name. */
diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
index 9d60633..1c49704 100644
--- a/hw/mips/mips_jazz.c
+++ b/hw/mips/mips_jazz.c
@@ -181,7 +181,7 @@ static void mips_jazz_init(MachineState *machine,
/* allocate RAM */
memory_region_allocate_system_memory(ram, NULL, "mips_jazz.ram",
machine->ram_size);
- memory_region_add_subregion(address_space, 0, ram);
+ memory_region_add_subregion(address_space, 0, ram, &error_abort);
memory_region_init_ram(bios, NULL, "mips_jazz.bios", MAGNUM_BIOS_SIZE,
&error_abort);
@@ -189,8 +189,10 @@ static void mips_jazz_init(MachineState *machine,
memory_region_set_readonly(bios, true);
memory_region_init_alias(bios2, NULL, "mips_jazz.bios", bios,
0, MAGNUM_BIOS_SIZE);
- memory_region_add_subregion(address_space, 0x1fc00000LL, bios);
- memory_region_add_subregion(address_space, 0xfff00000LL, bios2);
+ memory_region_add_subregion(address_space, 0x1fc00000LL, bios,
+ &error_abort);
+ memory_region_add_subregion(address_space, 0xfff00000LL, bios2,
+ &error_abort);
/* load the BIOS image. */
if (bios_name == NULL)
@@ -218,17 +220,22 @@ static void mips_jazz_init(MachineState *machine,
sysbus_connect_irq(sysbus, 0, env->irq[6]);
sysbus_connect_irq(sysbus, 1, env->irq[3]);
memory_region_add_subregion(address_space, 0x80000000,
- sysbus_mmio_get_region(sysbus, 0));
+ sysbus_mmio_get_region(sysbus, 0),
+ &error_abort);
memory_region_add_subregion(address_space, 0xf0000000,
- sysbus_mmio_get_region(sysbus, 1));
+ sysbus_mmio_get_region(sysbus, 1),
+ &error_abort);
memory_region_init_io(dma_dummy, NULL, &dma_dummy_ops, NULL, "dummy_dma",
0x1000);
- memory_region_add_subregion(address_space, 0x8000d000, dma_dummy);
+ memory_region_add_subregion(address_space, 0x8000d000, dma_dummy,
+ &error_abort);
/* ISA bus: IO space at 0x90000000, mem space at 0x91000000 */
memory_region_init(isa_io, NULL, "isa-io", 0x00010000);
memory_region_init(isa_mem, NULL, "isa-mem", 0x01000000);
- memory_region_add_subregion(address_space, 0x90000000, isa_io);
- memory_region_add_subregion(address_space, 0x91000000, isa_mem);
+ memory_region_add_subregion(address_space, 0x90000000, isa_io,
+ &error_abort);
+ memory_region_add_subregion(address_space, 0x91000000, isa_mem,
+ &error_abort);
isa_bus = isa_bus_new(NULL, isa_mem, isa_io);
/* ISA devices */
@@ -256,7 +263,8 @@ static void mips_jazz_init(MachineState *machine,
vmstate_register_ram_global(rom_mr);
memory_region_set_readonly(rom_mr, true);
uint8_t *rom = memory_region_get_ram_ptr(rom_mr);
- memory_region_add_subregion(address_space, 0x60000000, rom_mr);
+ memory_region_add_subregion(address_space, 0x60000000, rom_mr,
+ &error_abort);
rom[0] = 0x10; /* Mips G364 */
}
break;
@@ -312,12 +320,12 @@ static void mips_jazz_init(MachineState *machine,
/* Real time clock */
rtc_init(isa_bus, 1980, NULL);
memory_region_init_io(rtc, NULL, &rtc_ops, NULL, "rtc", 0x1000);
- memory_region_add_subregion(address_space, 0x80004000, rtc);
+ memory_region_add_subregion(address_space, 0x80004000, rtc, &error_abort);
/* Keyboard (i8042) */
i8042_mm_init(qdev_get_gpio_in(rc4030, 6), qdev_get_gpio_in(rc4030, 7),
i8042, 0x1000, 0x1);
- memory_region_add_subregion(address_space, 0x80005000, i8042);
+ memory_region_add_subregion(address_space, 0x80005000, i8042,
&error_abort);
/* Serial ports */
if (serial_hds[0]) {
diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
index 3082e75..91863e6 100644
--- a/hw/mips/mips_malta.c
+++ b/hw/mips/mips_malta.c
@@ -552,8 +552,10 @@ static MaltaFPGAState *malta_fpga_init(MemoryRegion
*address_space,
memory_region_init_alias(&s->iomem_hi, NULL, "malta-fpga",
&s->iomem, 0xa00, 0x10000-0xa00);
- memory_region_add_subregion(address_space, base, &s->iomem_lo);
- memory_region_add_subregion(address_space, base + 0xa00, &s->iomem_hi);
+ memory_region_add_subregion(address_space, base, &s->iomem_lo,
+ &error_abort);
+ memory_region_add_subregion(address_space, base + 0xa00, &s->iomem_hi,
+ &error_abort);
s->display = qemu_chr_new("fpga", "vc:320x200", malta_fpga_led_init);
@@ -1005,12 +1007,13 @@ void mips_malta_init(MachineState *machine)
/* register RAM at high address where it is undisturbed by IO */
memory_region_allocate_system_memory(ram_high, NULL, "mips_malta.ram",
ram_size);
- memory_region_add_subregion(system_memory, 0x80000000, ram_high);
+ memory_region_add_subregion(system_memory, 0x80000000, ram_high,
+ &error_abort);
/* alias for pre IO hole access */
memory_region_init_alias(ram_low_preio, NULL, "mips_malta_low_preio.ram",
ram_high, 0, MIN(ram_size, (256 << 20)));
- memory_region_add_subregion(system_memory, 0, ram_low_preio);
+ memory_region_add_subregion(system_memory, 0, ram_low_preio, &error_abort);
/* alias for post IO hole access, if there is enough RAM */
if (ram_size > (512 << 20)) {
@@ -1019,7 +1022,8 @@ void mips_malta_init(MachineState *machine)
"mips_malta_low_postio.ram",
ram_high, 512 << 20,
ram_size - (512 << 20));
- memory_region_add_subregion(system_memory, 512 << 20, ram_low_postio);
+ memory_region_add_subregion(system_memory, 512 << 20, ram_low_postio,
+ &error_abort);
}
/* generate SPD EEPROM data */
@@ -1137,7 +1141,8 @@ void mips_malta_init(MachineState *machine)
memory_region_get_ram_ptr(bios), BIOS_SIZE);
}
memory_region_set_readonly(bios_copy, true);
- memory_region_add_subregion(system_memory, RESET_ADDRESS, bios_copy);
+ memory_region_add_subregion(system_memory, RESET_ADDRESS, bios_copy,
+ &error_abort);
/* Board ID = 0x420 (Malta Board with CoreLV) */
stl_p(memory_region_get_ram_ptr(bios_copy) + 0x10, 0x00000420);
diff --git a/hw/mips/mips_mipssim.c b/hw/mips/mips_mipssim.c
index 61f74a6..d11944f 100644
--- a/hw/mips/mips_mipssim.c
+++ b/hw/mips/mips_mipssim.c
@@ -129,7 +129,8 @@ static void mipsnet_init(int base, qemu_irq irq, NICInfo
*nd)
sysbus_connect_irq(s, 0, irq);
memory_region_add_subregion(get_system_io(),
base,
- sysbus_mmio_get_region(s, 0));
+ sysbus_mmio_get_region(s, 0),
+ &error_abort);
}
static void
@@ -178,10 +179,11 @@ mips_mipssim_init(MachineState *machine)
vmstate_register_ram_global(bios);
memory_region_set_readonly(bios, true);
- memory_region_add_subregion(address_space_mem, 0, ram);
+ memory_region_add_subregion(address_space_mem, 0, ram, &error_abort);
/* Map the BIOS / boot exception handler. */
- memory_region_add_subregion(address_space_mem, 0x1fc00000LL, bios);
+ memory_region_add_subregion(address_space_mem, 0x1fc00000LL, bios,
+ &error_abort);
/* Load a BIOS / boot exception handler image. */
if (bios_name == NULL)
bios_name = BIOS_FILENAME;
@@ -218,7 +220,8 @@ mips_mipssim_init(MachineState *machine)
/* Register 64 KB of ISA IO space at 0x1fd00000. */
memory_region_init_alias(isa, NULL, "isa_mmio",
get_system_io(), 0, 0x00010000);
- memory_region_add_subregion(get_system_memory(), 0x1fd00000, isa);
+ memory_region_add_subregion(get_system_memory(), 0x1fd00000, isa,
+ &error_abort);
/* A single 16450 sits at offset 0x3f8. It is attached to
MIPS CPU INT2, which is interrupt 4. */
diff --git a/hw/mips/mips_r4k.c b/hw/mips/mips_r4k.c
index f4dcacd..cd52d83 100644
--- a/hw/mips/mips_r4k.c
+++ b/hw/mips/mips_r4k.c
@@ -208,10 +208,11 @@ void mips_r4k_init(MachineState *machine)
}
memory_region_allocate_system_memory(ram, NULL, "mips_r4k.ram", ram_size);
- memory_region_add_subregion(address_space_mem, 0, ram);
+ memory_region_add_subregion(address_space_mem, 0, ram, &error_abort);
memory_region_init_io(iomem, NULL, &mips_qemu_ops, NULL, "mips-qemu",
0x10000);
- memory_region_add_subregion(address_space_mem, 0x1fbf0000, iomem);
+ memory_region_add_subregion(address_space_mem, 0x1fbf0000, iomem,
+ &error_abort);
/* Try to load a BIOS image. If this fails, we continue regardless,
but initialize the hardware ourselves. When a kernel gets
@@ -236,7 +237,8 @@ void mips_r4k_init(MachineState *machine)
&error_abort);
vmstate_register_ram_global(bios);
memory_region_set_readonly(bios, true);
- memory_region_add_subregion(get_system_memory(), 0x1fc00000, bios);
+ memory_region_add_subregion(get_system_memory(), 0x1fc00000, bios,
+ &error_abort);
load_image_targphys(filename, 0x1fc00000, BIOS_SIZE);
} else if ((dinfo = drive_get(IF_PFLASH, 0, 0)) != NULL) {
@@ -272,8 +274,10 @@ void mips_r4k_init(MachineState *machine)
memory_region_init_alias(isa_io, NULL, "isa-io",
get_system_io(), 0, 0x00010000);
memory_region_init(isa_mem, NULL, "isa-mem", 0x01000000);
- memory_region_add_subregion(get_system_memory(), 0x14000000, isa_io);
- memory_region_add_subregion(get_system_memory(), 0x10000000, isa_mem);
+ memory_region_add_subregion(get_system_memory(), 0x14000000, isa_io,
+ &error_abort);
+ memory_region_add_subregion(get_system_memory(), 0x10000000, isa_mem,
+ &error_abort);
isa_bus = isa_bus_new(NULL, isa_mem, get_system_io());
/* The PIC is attached to the MIPS CPU INT0 pin */
diff --git a/hw/misc/debugexit.c b/hw/misc/debugexit.c
index 69a1b00..df7142c 100644
--- a/hw/misc/debugexit.c
+++ b/hw/misc/debugexit.c
@@ -43,7 +43,7 @@ static void debug_exit_realizefn(DeviceState *d, Error **errp)
memory_region_init_io(&isa->io, OBJECT(dev), &debug_exit_ops, isa,
TYPE_ISA_DEBUG_EXIT_DEVICE, isa->iosize);
memory_region_add_subregion(isa_address_space_io(dev),
- isa->iobase, &isa->io);
+ isa->iobase, &isa->io, &error_abort);
}
static Property debug_exit_properties[] = {
diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c
index cc76989..65178e6 100644
--- a/hw/misc/ivshmem.c
+++ b/hw/misc/ivshmem.c
@@ -356,7 +356,7 @@ static void create_shared_memory_BAR(IVShmemState *s, int
fd) {
memory_region_init_ram_ptr(&s->ivshmem, OBJECT(s), "ivshmem.bar2",
s->ivshmem_size, ptr);
vmstate_register_ram(&s->ivshmem, DEVICE(s));
- memory_region_add_subregion(&s->bar, 0, &s->ivshmem);
+ memory_region_add_subregion(&s->bar, 0, &s->ivshmem, &error_abort);
/* region for shared memory */
pci_register_bar(PCI_DEVICE(s), 2, s->ivshmem_attr, &s->bar);
@@ -535,7 +535,7 @@ static void ivshmem_read(void *opaque, const uint8_t *buf,
int size)
IVSHMEM_DPRINTF("guest h/w addr = %p, size = %" PRIu64 "\n",
map_ptr, s->ivshmem_size);
- memory_region_add_subregion(&s->bar, 0, &s->ivshmem);
+ memory_region_add_subregion(&s->bar, 0, &s->ivshmem, &error_abort);
/* only store the fd if it is successfully mapped */
s->shm_fd = incoming_fd;
diff --git a/hw/misc/macio/macio.c b/hw/misc/macio/macio.c
index e9037b0..21229ed 100644
--- a/hw/misc/macio/macio.c
+++ b/hw/misc/macio/macio.c
@@ -110,10 +110,10 @@ static void macio_escc_legacy_setup(MacIOState
*macio_state)
MemoryRegion *port = g_new(MemoryRegion, 1);
memory_region_init_alias(port, NULL, "escc-legacy-port",
macio_state->escc_mem, maps[i+1], 0x2);
- memory_region_add_subregion(escc_legacy, maps[i], port);
+ memory_region_add_subregion(escc_legacy, maps[i], port, &error_abort);
}
- memory_region_add_subregion(bar, 0x12000, escc_legacy);
+ memory_region_add_subregion(bar, 0x12000, escc_legacy, &error_abort);
}
static void macio_bar_setup(MacIOState *macio_state)
@@ -121,7 +121,8 @@ static void macio_bar_setup(MacIOState *macio_state)
MemoryRegion *bar = &macio_state->bar;
if (macio_state->escc_mem) {
- memory_region_add_subregion(bar, 0x13000, macio_state->escc_mem);
+ memory_region_add_subregion(bar, 0x13000, macio_state->escc_mem,
+ &error_abort);
macio_escc_legacy_setup(macio_state);
}
}
@@ -141,7 +142,8 @@ static void macio_common_realize(PCIDevice *d, Error **errp)
}
sysbus_dev = SYS_BUS_DEVICE(&s->cuda);
memory_region_add_subregion(&s->bar, 0x16000,
- sysbus_mmio_get_region(sysbus_dev, 0));
+ sysbus_mmio_get_region(sysbus_dev, 0),
+ &error_abort);
macio_bar_setup(s);
pci_register_bar(d, 0, PCI_BASE_ADDRESS_SPACE_MEMORY, &s->bar);
@@ -185,12 +187,14 @@ static void macio_oldworld_realize(PCIDevice *d, Error
**errp)
}
sysbus_dev = SYS_BUS_DEVICE(&os->nvram);
memory_region_add_subregion(&s->bar, 0x60000,
- sysbus_mmio_get_region(sysbus_dev, 0));
+ sysbus_mmio_get_region(sysbus_dev, 0),
+ &error_abort);
pmac_format_nvram_partition(&os->nvram, os->nvram.size);
if (s->pic_mem) {
/* Heathrow PIC */
- memory_region_add_subregion(&s->bar, 0x00000, s->pic_mem);
+ memory_region_add_subregion(&s->bar, 0x00000, s->pic_mem,
+ &error_abort);
}
/* IDE buses */
@@ -214,7 +218,7 @@ static void macio_init_ide(MacIOState *s, MACIOIDEState
*ide, size_t ide_size,
object_initialize(ide, ide_size, TYPE_MACIO_IDE);
qdev_set_parent_bus(DEVICE(ide), sysbus_get_default());
memory_region_add_subregion(&s->bar, 0x1f000 + ((index + 1) * 0x1000),
- &ide->mem);
+ &ide->mem, &error_abort);
name = g_strdup_printf("ide[%i]", index);
object_property_add_child(OBJECT(s), name, OBJECT(ide), NULL);
g_free(name);
@@ -292,7 +296,7 @@ static void macio_newworld_realize(PCIDevice *d, Error
**errp)
if (s->pic_mem) {
/* OpenPIC */
- memory_region_add_subregion(&s->bar, 0x40000, s->pic_mem);
+ memory_region_add_subregion(&s->bar, 0x40000, s->pic_mem,
&error_abort);
}
/* IDE buses */
@@ -311,7 +315,7 @@ static void macio_newworld_realize(PCIDevice *d, Error
**errp)
timer_memory = g_new(MemoryRegion, 1);
memory_region_init_io(timer_memory, OBJECT(s), &timer_ops, NULL, "timer",
0x1000);
- memory_region_add_subregion(&s->bar, 0x15000, timer_memory);
+ memory_region_add_subregion(&s->bar, 0x15000, timer_memory, &error_abort);
}
static void macio_newworld_init(Object *obj)
@@ -339,7 +343,7 @@ static void macio_instance_init(Object *obj)
object_property_add_child(obj, "cuda", OBJECT(&s->cuda), NULL);
s->dbdma = DBDMA_init(&dbdma_mem);
- memory_region_add_subregion(&s->bar, 0x08000, dbdma_mem);
+ memory_region_add_subregion(&s->bar, 0x08000, dbdma_mem, &error_abort);
}
static const VMStateDescription vmstate_macio_oldworld = {
diff --git a/hw/misc/omap_gpmc.c b/hw/misc/omap_gpmc.c
index 74fc91c..dcf6a96 100644
--- a/hw/misc/omap_gpmc.c
+++ b/hw/misc/omap_gpmc.c
@@ -419,9 +419,9 @@ static void omap_gpmc_cs_map(struct omap_gpmc_s *s, int cs)
* starting from <i>base</i>. */
memory_region_init(&f->container, NULL, "omap-gpmc-file", size);
memory_region_add_subregion(&f->container, 0,
- omap_gpmc_cs_memregion(s, cs));
+ omap_gpmc_cs_memregion(s, cs), &error_abort);
memory_region_add_subregion(get_system_memory(), base,
- &f->container);
+ &f->container, &error_abort);
}
static void omap_gpmc_cs_unmap(struct omap_gpmc_s *s, int cs)
@@ -830,7 +830,8 @@ struct omap_gpmc_s *omap_gpmc_init(struct omap_mpu_state_s
*mpu,
g_malloc0(sizeof(struct omap_gpmc_s));
memory_region_init_io(&s->iomem, NULL, &omap_gpmc_ops, s, "omap-gpmc",
0x1000);
- memory_region_add_subregion(get_system_memory(), base, &s->iomem);
+ memory_region_add_subregion(get_system_memory(), base, &s->iomem,
+ &error_abort);
s->irq = irq;
s->drq = drq;
diff --git a/hw/misc/omap_l4.c b/hw/misc/omap_l4.c
index 245ceac..3f7b333 100644
--- a/hw/misc/omap_l4.c
+++ b/hw/misc/omap_l4.c
@@ -156,7 +156,8 @@ hwaddr omap_l4_attach(struct omap_target_agent_s *ta,
base = ta->bus->base + ta->start[region].offset;
if (mr) {
- memory_region_add_subregion(ta->bus->address_space, base, mr);
+ memory_region_add_subregion(ta->bus->address_space, base, mr,
+ &error_abort);
}
return base;
diff --git a/hw/misc/omap_sdrc.c b/hw/misc/omap_sdrc.c
index 3de0c0e..97dfab6 100644
--- a/hw/misc/omap_sdrc.c
+++ b/hw/misc/omap_sdrc.c
@@ -163,7 +163,7 @@ struct omap_sdrc_s *omap_sdrc_init(MemoryRegion *sysmem,
omap_sdrc_reset(s);
memory_region_init_io(&s->iomem, NULL, &omap_sdrc_ops, s, "omap.sdrc",
0x1000);
- memory_region_add_subregion(sysmem, base, &s->iomem);
+ memory_region_add_subregion(sysmem, base, &s->iomem, &error_abort);
return s;
}
diff --git a/hw/misc/pc-testdev.c b/hw/misc/pc-testdev.c
index 18e94e0..0c80244 100644
--- a/hw/misc/pc-testdev.c
+++ b/hw/misc/pc-testdev.c
@@ -177,11 +177,12 @@ static void testdev_realizefn(DeviceState *d, Error
**errp)
memory_region_init_io(&dev->iomem, OBJECT(dev), &test_iomem_ops, dev,
"pc-testdev-iomem", IOMEM_LEN);
- memory_region_add_subregion(io, 0xe0, &dev->ioport);
- memory_region_add_subregion(io, 0xe4, &dev->flush);
- memory_region_add_subregion(io, 0xe8, &dev->ioport_byte);
- memory_region_add_subregion(io, 0x2000, &dev->irq);
- memory_region_add_subregion(mem, 0xff000000, &dev->iomem);
+ memory_region_add_subregion(io, 0xe0, &dev->ioport, &error_abort);
+ memory_region_add_subregion(io, 0xe4, &dev->flush, &error_abort);
+ memory_region_add_subregion(io, 0xe8, &dev->ioport_byte,
+ &error_abort);
+ memory_region_add_subregion(io, 0x2000, &dev->irq, &error_abort);
+ memory_region_add_subregion(mem, 0xff000000, &dev->iomem, &error_abort);
}
static void testdev_class_init(ObjectClass *klass, void *data)
diff --git a/hw/moxie/moxiesim.c b/hw/moxie/moxiesim.c
index 80bcc5b..ca36d7d 100644
--- a/hw/moxie/moxiesim.c
+++ b/hw/moxie/moxiesim.c
@@ -125,11 +125,11 @@ static void moxiesim_init(MachineState *machine)
/* Allocate RAM. */
memory_region_init_ram(ram, NULL, "moxiesim.ram", ram_size, &error_abort);
vmstate_register_ram_global(ram);
- memory_region_add_subregion(address_space_mem, ram_base, ram);
+ memory_region_add_subregion(address_space_mem, ram_base, ram,
&error_abort);
memory_region_init_ram(rom, NULL, "moxie.rom", 128*0x1000, &error_abort);
vmstate_register_ram_global(rom);
- memory_region_add_subregion(get_system_memory(), 0x1000, rom);
+ memory_region_add_subregion(get_system_memory(), 0x1000, rom,
&error_abort);
if (kernel_filename) {
loader_params.ram_size = ram_size;
diff --git a/hw/net/fsl_etsec/etsec.c b/hw/net/fsl_etsec/etsec.c
index c57365f..477ad01 100644
--- a/hw/net/fsl_etsec/etsec.c
+++ b/hw/net/fsl_etsec/etsec.c
@@ -450,7 +450,8 @@ DeviceState *etsec_create(hwaddr base,
sysbus_connect_irq(SYS_BUS_DEVICE(dev), 2, err_irq);
memory_region_add_subregion(mr, base,
- SYS_BUS_DEVICE(dev)->mmio[0].memory);
+ SYS_BUS_DEVICE(dev)->mmio[0].memory,
+ &error_abort);
return dev;
}
diff --git a/hw/net/mcf_fec.c b/hw/net/mcf_fec.c
index 0255612..a15f004 100644
--- a/hw/net/mcf_fec.c
+++ b/hw/net/mcf_fec.c
@@ -458,7 +458,7 @@ void mcf_fec_init(MemoryRegion *sysmem, NICInfo *nd,
s->irq = irq;
memory_region_init_io(&s->iomem, NULL, &mcf_fec_ops, s, "fec", 0x400);
- memory_region_add_subregion(sysmem, base, &s->iomem);
+ memory_region_add_subregion(sysmem, base, &s->iomem, &error_abort);
s->conf.macaddr = nd->macaddr;
s->conf.peers.ncs[0] = nd->netdev;
diff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c
index 1da0657..8d1a5fb 100644
--- a/hw/openrisc/openrisc_sim.c
+++ b/hw/openrisc/openrisc_sim.c
@@ -53,9 +53,9 @@ static void openrisc_sim_net_init(MemoryRegion *address_space,
s = SYS_BUS_DEVICE(dev);
sysbus_connect_irq(s, 0, irq);
memory_region_add_subregion(address_space, base,
- sysbus_mmio_get_region(s, 0));
+ sysbus_mmio_get_region(s, 0), &error_abort);
memory_region_add_subregion(address_space, descriptors,
- sysbus_mmio_get_region(s, 1));
+ sysbus_mmio_get_region(s, 1), &error_abort);
}
static void cpu_openrisc_load_kernel(ram_addr_t ram_size,
@@ -116,7 +116,7 @@ static void openrisc_sim_init(MachineState *machine)
ram = g_malloc(sizeof(*ram));
memory_region_init_ram(ram, NULL, "openrisc.ram", ram_size, &error_abort);
vmstate_register_ram_global(ram);
- memory_region_add_subregion(get_system_memory(), 0, ram);
+ memory_region_add_subregion(get_system_memory(), 0, ram, &error_abort);
cpu_openrisc_pic_init(cpu);
cpu_openrisc_clock_init(cpu);
diff --git a/hw/pci-host/apb.c b/hw/pci-host/apb.c
index 599768e..c472cc6 100644
--- a/hw/pci-host/apb.c
+++ b/hw/pci-host/apb.c
@@ -684,7 +684,8 @@ PCIBus *pci_apb_init(hwaddr special_base,
d = APB_DEVICE(dev);
memory_region_init(&d->pci_mmio, OBJECT(s), "pci-mmio", 0x100000000ULL);
- memory_region_add_subregion(get_system_memory(), mem_base, &d->pci_mmio);
+ memory_region_add_subregion(get_system_memory(), mem_base, &d->pci_mmio,
+ &error_abort);
phb = PCI_HOST_BRIDGE(dev);
phb->bus = pci_register_bus(DEVICE(phb), "pci",
diff --git a/hw/pci-host/grackle.c b/hw/pci-host/grackle.c
index bfe707a..e1ff06b 100644
--- a/hw/pci-host/grackle.c
+++ b/hw/pci-host/grackle.c
@@ -80,7 +80,7 @@ PCIBus *pci_grackle_init(uint32_t base, qemu_irq *pic,
memory_region_init_alias(&d->pci_hole, OBJECT(s), "pci-hole", &d->pci_mmio,
0x80000000ULL, 0x7e000000ULL);
memory_region_add_subregion(address_space_mem, 0x80000000ULL,
- &d->pci_hole);
+ &d->pci_hole, &error_abort);
phb->bus = pci_register_bus(dev, NULL,
pci_grackle_set_irq,
diff --git a/hw/pci-host/piix.c b/hw/pci-host/piix.c
index ad55f99..899ca92 100644
--- a/hw/pci-host/piix.c
+++ b/hw/pci-host/piix.c
@@ -355,7 +355,8 @@ PCIBus *i440fx_init(PCII440FXState **pi440fx_state,
memory_region_init_alias(&f->low_smram, OBJECT(d), "smram-low",
f->ram_memory, 0xa0000, 0x20000);
memory_region_set_enabled(&f->low_smram, true);
- memory_region_add_subregion(&f->smram, 0xa0000, &f->low_smram);
+ memory_region_add_subregion(&f->smram, 0xa0000, &f->low_smram,
+ &error_abort);
object_property_add_const_link(qdev_get_machine(), "smram",
OBJECT(&f->smram), &error_abort);
diff --git a/hw/pci-host/ppce500.c b/hw/pci-host/ppce500.c
index 613ba73..3de30c8 100644
--- a/hw/pci-host/ppce500.c
+++ b/hw/pci-host/ppce500.c
@@ -251,7 +251,7 @@ static void e500_update_pow(PPCE500PCIState *pci, int idx)
name = g_strdup_printf("PCI Outbound Window %d", idx);
memory_region_init_alias(mem, OBJECT(pci), name, &pci->busmem, tar,
size);
- memory_region_add_subregion(address_space_mem, wbar, mem);
+ memory_region_add_subregion(address_space_mem, wbar, mem, &error_abort);
g_free(name);
pci_debug("%s: Added window of size=%#lx from CPU=%#lx to PCI=%#lx\n",
@@ -471,7 +471,7 @@ static int e500_pcihost_initfn(SysBusDevice *dev)
/* Set up PCI view of memory */
memory_region_init(&s->bm, OBJECT(s), "bm-e500", UINT64_MAX);
- memory_region_add_subregion(&s->bm, 0x0, &s->busmem);
+ memory_region_add_subregion(&s->bm, 0x0, &s->busmem, &error_abort);
address_space_init(&s->bm_as, &s->bm, "pci-bm");
pci_setup_iommu(b, e500_pcihost_set_iommu, s);
@@ -484,9 +484,12 @@ static int e500_pcihost_initfn(SysBusDevice *dev)
"pci-conf-data", 4);
memory_region_init_io(&s->iomem, OBJECT(s), &e500_pci_reg_ops, s,
"pci.reg", PCIE500_REG_SIZE);
- memory_region_add_subregion(&s->container, PCIE500_CFGADDR, &h->conf_mem);
- memory_region_add_subregion(&s->container, PCIE500_CFGDATA, &h->data_mem);
- memory_region_add_subregion(&s->container, PCIE500_REG_BASE, &s->iomem);
+ memory_region_add_subregion(&s->container, PCIE500_CFGADDR, &h->conf_mem,
+ &error_abort);
+ memory_region_add_subregion(&s->container, PCIE500_CFGDATA, &h->data_mem,
+ &error_abort);
+ memory_region_add_subregion(&s->container, PCIE500_REG_BASE, &s->iomem,
+ &error_abort);
sysbus_init_mmio(dev, &s->container);
pci_bus_set_route_irq_fn(b, e500_route_intx_pin_to_irq);
diff --git a/hw/pci-host/prep.c b/hw/pci-host/prep.c
index c63f45d..a5213bc 100644
--- a/hw/pci-host/prep.c
+++ b/hw/pci-host/prep.c
@@ -230,19 +230,21 @@ static void raven_pcihost_realizefn(DeviceState *d, Error
**errp)
memory_region_init_io(&h->conf_mem, OBJECT(h), &pci_host_conf_le_ops, s,
"pci-conf-idx", 4);
- memory_region_add_subregion(&s->pci_io, 0xcf8, &h->conf_mem);
+ memory_region_add_subregion(&s->pci_io, 0xcf8, &h->conf_mem, &error_abort);
memory_region_init_io(&h->data_mem, OBJECT(h), &pci_host_data_le_ops, s,
"pci-conf-data", 4);
- memory_region_add_subregion(&s->pci_io, 0xcfc, &h->data_mem);
+ memory_region_add_subregion(&s->pci_io, 0xcfc, &h->data_mem, &error_abort);
memory_region_init_io(&h->mmcfg, OBJECT(s), &raven_pci_io_ops, s,
"pciio", 0x00400000);
- memory_region_add_subregion(address_space_mem, 0x80800000, &h->mmcfg);
+ memory_region_add_subregion(address_space_mem, 0x80800000, &h->mmcfg,
+ &error_abort);
memory_region_init_io(&s->pci_intack, OBJECT(s), &raven_intack_ops, s,
"pci-intack", 1);
- memory_region_add_subregion(address_space_mem, 0xbffffff0, &s->pci_intack);
+ memory_region_add_subregion(address_space_mem, 0xbffffff0, &s->pci_intack,
+ &error_abort);
/* TODO Remove once realize propagates to child devices. */
object_property_set_bool(OBJECT(&s->pci_dev), true, "realized", errp);
@@ -262,10 +264,12 @@ static void raven_pcihost_initfn(Object *obj)
address_space_init(&s->pci_io_as, &s->pci_io, "raven-io");
/* CPU address space */
- memory_region_add_subregion(address_space_mem, 0x80000000, &s->pci_io);
+ memory_region_add_subregion(address_space_mem, 0x80000000, &s->pci_io,
+ &error_abort);
memory_region_add_subregion_overlap(address_space_mem, 0x80000000,
&s->pci_io_non_contiguous, 1);
- memory_region_add_subregion(address_space_mem, 0xc0000000, &s->pci_memory);
+ memory_region_add_subregion(address_space_mem, 0xc0000000, &s->pci_memory,
+ &error_abort);
pci_bus_new_inplace(&s->pci_bus, sizeof(s->pci_bus), DEVICE(obj), NULL,
&s->pci_memory, &s->pci_io, 0, TYPE_PCI_BUS);
@@ -276,8 +280,10 @@ static void raven_pcihost_initfn(Object *obj)
memory_region_size(&s->pci_memory));
memory_region_init_alias(&s->bm_ram_alias, obj, "bm-system",
get_system_memory(), 0, 0x80000000);
- memory_region_add_subregion(&s->bm, 0 , &s->bm_pci_memory_alias);
- memory_region_add_subregion(&s->bm, 0x80000000, &s->bm_ram_alias);
+ memory_region_add_subregion(&s->bm, 0 , &s->bm_pci_memory_alias,
+ &error_abort);
+ memory_region_add_subregion(&s->bm, 0x80000000, &s->bm_ram_alias,
+ &error_abort);
address_space_init(&s->bm_as, &s->bm, "raven-bm");
pci_setup_iommu(&s->pci_bus, raven_pcihost_set_iommu, s);
@@ -305,7 +311,7 @@ static void raven_realize(PCIDevice *d, Error **errp)
&error_abort);
memory_region_set_readonly(&s->bios, true);
memory_region_add_subregion(get_system_memory(), (uint32_t)(-BIOS_SIZE),
- &s->bios);
+ &s->bios, &error_abort);
vmstate_register_ram_global(&s->bios);
if (s->bios_name) {
filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, s->bios_name);
diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c
index bd74094..d9f8d56 100644
--- a/hw/pci-host/q35.c
+++ b/hw/pci-host/q35.c
@@ -494,11 +494,13 @@ static void mch_realize(PCIDevice *d, Error **errp)
memory_region_init_alias(&mch->low_smram, OBJECT(mch), "smram-low",
mch->ram_memory, 0xa0000, 0x20000);
memory_region_set_enabled(&mch->low_smram, true);
- memory_region_add_subregion(&mch->smram, 0xa0000, &mch->low_smram);
+ memory_region_add_subregion(&mch->smram, 0xa0000, &mch->low_smram,
+ &error_abort);
memory_region_init_alias(&mch->high_smram, OBJECT(mch), "smram-high",
mch->ram_memory, 0xa0000, 0x20000);
memory_region_set_enabled(&mch->high_smram, true);
- memory_region_add_subregion(&mch->smram, 0xfeda0000, &mch->high_smram);
+ memory_region_add_subregion(&mch->smram, 0xfeda0000, &mch->high_smram,
+ &error_abort);
memory_region_init_io(&mch->tseg_blackhole, OBJECT(mch),
&tseg_blackhole_ops, NULL,
@@ -512,7 +514,7 @@ static void mch_realize(PCIDevice *d, Error **errp)
mch->ram_memory, mch->below_4g_mem_size, 0);
memory_region_set_enabled(&mch->tseg_window, false);
memory_region_add_subregion(&mch->smram, mch->below_4g_mem_size,
- &mch->tseg_window);
+ &mch->tseg_window, &error_abort);
object_property_add_const_link(qdev_get_machine(), "smram",
OBJECT(&mch->smram), &error_abort);
diff --git a/hw/pci-host/uninorth.c b/hw/pci-host/uninorth.c
index f0144eb..8604565 100644
--- a/hw/pci-host/uninorth.c
+++ b/hw/pci-host/uninorth.c
@@ -235,7 +235,7 @@ PCIBus *pci_pmac_init(qemu_irq *pic,
memory_region_init_alias(&d->pci_hole, OBJECT(d), "pci-hole", &d->pci_mmio,
0x80000000ULL, 0x10000000ULL);
memory_region_add_subregion(address_space_mem, 0x80000000ULL,
- &d->pci_hole);
+ &d->pci_hole, &error_abort);
h->bus = pci_register_bus(dev, NULL,
pci_unin_set_irq, pci_unin_map_irq,
@@ -301,7 +301,7 @@ PCIBus *pci_pmac_u3_init(qemu_irq *pic,
memory_region_init_alias(&d->pci_hole, OBJECT(d), "pci-hole", &d->pci_mmio,
0x80000000ULL, 0x70000000ULL);
memory_region_add_subregion(address_space_mem, 0x80000000ULL,
- &d->pci_hole);
+ &d->pci_hole, &error_abort);
h->bus = pci_register_bus(dev, NULL,
pci_unin_set_irq, pci_unin_map_irq,
diff --git a/hw/pci/msix.c b/hw/pci/msix.c
index 7716bf3..10faae6 100644
--- a/hw/pci/msix.c
+++ b/hw/pci/msix.c
@@ -282,10 +282,12 @@ int msix_init(struct PCIDevice *dev, unsigned short
nentries,
memory_region_init_io(&dev->msix_table_mmio, OBJECT(dev),
&msix_table_mmio_ops, dev,
"msix-table", table_size);
- memory_region_add_subregion(table_bar, table_offset,
&dev->msix_table_mmio);
+ memory_region_add_subregion(table_bar, table_offset, &dev->msix_table_mmio,
+ &error_abort);
memory_region_init_io(&dev->msix_pba_mmio, OBJECT(dev),
&msix_pba_mmio_ops, dev,
"msix-pba", pba_size);
- memory_region_add_subregion(pba_bar, pba_offset, &dev->msix_pba_mmio);
+ memory_region_add_subregion(pba_bar, pba_offset, &dev->msix_pba_mmio,
+ &error_abort);
return 0;
}
diff --git a/hw/pci/pcie_host.c b/hw/pci/pcie_host.c
index d8afba8..432088e 100644
--- a/hw/pci/pcie_host.c
+++ b/hw/pci/pcie_host.c
@@ -114,7 +114,8 @@ void pcie_host_mmcfg_map(PCIExpressHost *e, hwaddr addr,
{
pcie_host_mmcfg_init(e, size);
e->base_addr = addr;
- memory_region_add_subregion(get_system_memory(), e->base_addr, &e->mmio);
+ memory_region_add_subregion(get_system_memory(), e->base_addr, &e->mmio,
+ &error_abort);
}
void pcie_host_mmcfg_update(PCIExpressHost *e,
diff --git a/hw/pci/shpc.c b/hw/pci/shpc.c
index bfb4d31..fae1542 100644
--- a/hw/pci/shpc.c
+++ b/hw/pci/shpc.c
@@ -644,7 +644,7 @@ int shpc_init(PCIDevice *d, PCIBus *sec_bus, MemoryRegion
*bar, unsigned offset)
memory_region_init_io(&shpc->mmio, OBJECT(d), &shpc_mmio_ops,
d, "shpc-mmio", SHPC_SIZEOF(d));
shpc_cap_update_dword(d);
- memory_region_add_subregion(bar, offset, &shpc->mmio);
+ memory_region_add_subregion(bar, offset, &shpc->mmio, &error_abort);
qbus_set_hotplug_handler(BUS(sec_bus), DEVICE(d), NULL);
diff --git a/hw/pcmcia/pxa2xx.c b/hw/pcmcia/pxa2xx.c
index a7e1877..3728c72 100644
--- a/hw/pcmcia/pxa2xx.c
+++ b/hw/pcmcia/pxa2xx.c
@@ -166,7 +166,7 @@ static void pxa2xx_pcmcia_initfn(Object *obj)
memory_region_init_io(&s->iomem, NULL, &pxa2xx_pcmcia_io_ops, s,
"pxa2xx-pcmcia-io", 0x04000000);
memory_region_add_subregion(&s->container_mem, 0x00000000,
- &s->iomem);
+ &s->iomem, &error_abort);
/* Then next 64 MB is reserved */
@@ -174,13 +174,13 @@ static void pxa2xx_pcmcia_initfn(Object *obj)
memory_region_init_io(&s->attr_iomem, NULL, &pxa2xx_pcmcia_attr_ops, s,
"pxa2xx-pcmcia-attribute", 0x04000000);
memory_region_add_subregion(&s->container_mem, 0x08000000,
- &s->attr_iomem);
+ &s->attr_iomem, &error_abort);
/* Socket Common Memory Space */
memory_region_init_io(&s->common_iomem, NULL, &pxa2xx_pcmcia_common_ops, s,
"pxa2xx-pcmcia-common", 0x04000000);
memory_region_add_subregion(&s->container_mem, 0x0c000000,
- &s->common_iomem);
+ &s->common_iomem, &error_abort);
s->slot.irq = qemu_allocate_irq(pxa2xx_pcmcia_set_irq, s, 0);
diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index d300846..8aeebc1 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -767,7 +767,7 @@ static qemu_irq *ppce500_init_mpic(MachineState *machine,
PPCE500Params *params,
s = SYS_BUS_DEVICE(dev);
memory_region_add_subregion(ccsr, MPC8544_MPIC_REGS_OFFSET,
- s->mmio[0].memory);
+ s->mmio[0].memory, &error_abort);
return mpic;
}
@@ -863,7 +863,7 @@ void ppce500_init(MachineState *machine, PPCE500Params
*params)
/* Register Memory */
memory_region_allocate_system_memory(ram, NULL, "mpc8544ds.ram", ram_size);
- memory_region_add_subregion(address_space_mem, 0, ram);
+ memory_region_add_subregion(address_space_mem, 0, ram, &error_abort);
dev = qdev_create(NULL, "e500-ccsr");
object_property_add_child(qdev_get_machine(), "e500-ccsr",
@@ -872,7 +872,7 @@ void ppce500_init(MachineState *machine, PPCE500Params
*params)
ccsr = CCSR(dev);
ccsr_addr_space = &ccsr->ccsr_space;
memory_region_add_subregion(address_space_mem, params->ccsrbar_base,
- ccsr_addr_space);
+ ccsr_addr_space, &error_abort);
mpic = ppce500_init_mpic(machine, params, ccsr_addr_space, irqs);
@@ -894,7 +894,7 @@ void ppce500_init(MachineState *machine, PPCE500Params
*params)
qdev_init_nofail(dev);
s = SYS_BUS_DEVICE(dev);
memory_region_add_subregion(ccsr_addr_space, MPC8544_UTIL_OFFSET,
- sysbus_mmio_get_region(s, 0));
+ sysbus_mmio_get_region(s, 0), &error_abort);
/* PCI */
dev = qdev_create(NULL, "e500-pcihost");
@@ -907,7 +907,7 @@ void ppce500_init(MachineState *machine, PPCE500Params
*params)
}
memory_region_add_subregion(ccsr_addr_space, MPC8544_PCI_REGS_OFFSET,
- sysbus_mmio_get_region(s, 0));
+ sysbus_mmio_get_region(s, 0), &error_abort);
pci_bus = (PCIBus *)qdev_get_child_bus(dev, "pci.0");
if (!pci_bus)
@@ -936,7 +936,7 @@ void ppce500_init(MachineState *machine, PPCE500Params
*params)
qdev_init_nofail(dev);
sysbus_connect_irq(s, 0, mpic[MPC8XXX_GPIO_IRQ]);
memory_region_add_subregion(ccsr_addr_space, MPC8XXX_GPIO_OFFSET,
- sysbus_mmio_get_region(s, 0));
+ sysbus_mmio_get_region(s, 0),
&error_abort);
/* Power Off GPIO at Pin 0 */
poweroff_irq = qemu_allocate_irq(ppce500_power_off, NULL, 0);
@@ -959,7 +959,7 @@ void ppce500_init(MachineState *machine, PPCE500Params
*params)
memory_region_add_subregion(address_space_mem,
params->platform_bus_base,
- sysbus_mmio_get_region(s, 0));
+ sysbus_mmio_get_region(s, 0),
&error_abort);
}
/* Load kernel. */
diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index 0f3e341..a854926 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -203,7 +203,7 @@ static void ppc_core99_init(MachineState *machine)
/* allocate RAM */
memory_region_allocate_system_memory(ram, NULL, "ppc_core99.ram",
ram_size);
- memory_region_add_subregion(get_system_memory(), 0, ram);
+ memory_region_add_subregion(get_system_memory(), 0, ram, &error_abort);
/* allocate and load BIOS */
memory_region_init_ram(bios, NULL, "ppc_core99.bios", BIOS_SIZE,
@@ -214,7 +214,8 @@ static void ppc_core99_init(MachineState *machine)
bios_name = PROM_FILENAME;
filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
memory_region_set_readonly(bios, true);
- memory_region_add_subregion(get_system_memory(), PROM_ADDR, bios);
+ memory_region_add_subregion(get_system_memory(), PROM_ADDR, bios,
+ &error_abort);
/* Load OpenBIOS (ELF) */
if (filename) {
@@ -296,14 +297,17 @@ static void ppc_core99_init(MachineState *machine)
/* Register 8 MB of ISA IO space */
memory_region_init_alias(isa, NULL, "isa_mmio",
get_system_io(), 0, 0x00800000);
- memory_region_add_subregion(get_system_memory(), 0xf2000000, isa);
+ memory_region_add_subregion(get_system_memory(), 0xf2000000, isa,
+ &error_abort);
/* UniN init: XXX should be a real device */
memory_region_init_io(unin_memory, NULL, &unin_ops, token, "unin", 0x1000);
- memory_region_add_subregion(get_system_memory(), 0xf8000000, unin_memory);
+ memory_region_add_subregion(get_system_memory(), 0xf8000000, unin_memory,
+ &error_abort);
memory_region_init_io(unin2_memory, NULL, &unin_ops, token, "unin",
0x1000);
- memory_region_add_subregion(get_system_memory(), 0xf3000000, unin2_memory);
+ memory_region_add_subregion(get_system_memory(), 0xf3000000, unin2_memory,
+ &error_abort);
openpic_irqs = g_malloc0(smp_cpus * sizeof(qemu_irq *));
openpic_irqs[0] =
diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
index 99879dd..5118202 100644
--- a/hw/ppc/mac_oldworld.c
+++ b/hw/ppc/mac_oldworld.c
@@ -132,7 +132,7 @@ static void ppc_heathrow_init(MachineState *machine)
memory_region_allocate_system_memory(ram, NULL, "ppc_heathrow.ram",
ram_size);
- memory_region_add_subregion(sysmem, 0, ram);
+ memory_region_add_subregion(sysmem, 0, ram, &error_abort);
/* allocate and load BIOS */
memory_region_init_ram(bios, NULL, "ppc_heathrow.bios", BIOS_SIZE,
@@ -143,7 +143,7 @@ static void ppc_heathrow_init(MachineState *machine)
bios_name = PROM_FILENAME;
filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
memory_region_set_readonly(bios, true);
- memory_region_add_subregion(sysmem, PROM_ADDR, bios);
+ memory_region_add_subregion(sysmem, PROM_ADDR, bios, &error_abort);
/* Load OpenBIOS (ELF) */
if (filename) {
@@ -232,7 +232,7 @@ static void ppc_heathrow_init(MachineState *machine)
/* Register 2 MB of ISA IO space */
memory_region_init_alias(isa, NULL, "isa_mmio",
get_system_io(), 0, 0x00200000);
- memory_region_add_subregion(sysmem, 0xfe000000, isa);
+ memory_region_add_subregion(sysmem, 0xfe000000, isa, &error_abort);
/* XXX: we register only 1 output pin for heathrow PIC */
heathrow_irqs = g_malloc0(smp_cpus * sizeof(qemu_irq *));
diff --git a/hw/ppc/ppc405_boards.c b/hw/ppc/ppc405_boards.c
index ec6c4cb..80144e0 100644
--- a/hw/ppc/ppc405_boards.c
+++ b/hw/ppc/ppc405_boards.c
@@ -169,7 +169,7 @@ static void ref405ep_fpga_init(MemoryRegion *sysmem,
uint32_t base)
fpga = g_malloc0(sizeof(ref405ep_fpga_t));
memory_region_init_io(fpga_memory, NULL, &ref405ep_fpga_ops, fpga,
"fpga", 0x00000100);
- memory_region_add_subregion(sysmem, base, fpga_memory);
+ memory_region_add_subregion(sysmem, base, fpga_memory, &error_abort);
qemu_register_reset(&ref405ep_fpga_reset, fpga);
}
@@ -217,7 +217,7 @@ static void ref405ep_init(MachineState *machine)
sram_size = 512 * 1024;
memory_region_init_ram(sram, NULL, "ef405ep.sram", sram_size,
&error_abort);
vmstate_register_ram_global(sram);
- memory_region_add_subregion(sysmem, 0xFFF00000, sram);
+ memory_region_add_subregion(sysmem, 0xFFF00000, sram, &error_abort);
/* allocate and load BIOS */
#ifdef DEBUG_BOARD_INIT
printf("%s: register BIOS\n", __func__);
@@ -264,7 +264,8 @@ static void ref405ep_init(MachineState *machine)
exit(1);
}
bios_size = (bios_size + 0xfff) & ~0xfff;
- memory_region_add_subregion(sysmem, (uint32_t)(-bios_size), bios);
+ memory_region_add_subregion(sysmem, (uint32_t)(-bios_size), bios,
+ &error_abort);
} else if (!qtest_enabled() || kernel_filename != NULL) {
error_report("Could not load PowerPC BIOS '%s'", bios_name);
exit(1);
@@ -500,7 +501,7 @@ static void taihu_cpld_init(MemoryRegion *sysmem, uint32_t
base)
cpld = g_malloc0(sizeof(taihu_cpld_t));
memory_region_init_io(cpld_memory, NULL, &taihu_cpld_ops, cpld, "cpld",
0x100);
- memory_region_add_subregion(sysmem, base, cpld_memory);
+ memory_region_add_subregion(sysmem, base, cpld_memory, &error_abort);
qemu_register_reset(&taihu_cpld_reset, cpld);
}
@@ -590,7 +591,8 @@ static void taihu_405ep_init(MachineState *machine)
exit(1);
}
bios_size = (bios_size + 0xfff) & ~0xfff;
- memory_region_add_subregion(sysmem, (uint32_t)(-bios_size), bios);
+ memory_region_add_subregion(sysmem, (uint32_t)(-bios_size), bios,
+ &error_abort);
} else if (!qtest_enabled()) {
error_report("Could not load PowerPC BIOS '%s'", bios_name);
exit(1);
diff --git a/hw/ppc/ppc405_uc.c b/hw/ppc/ppc405_uc.c
index c77434a..d33a2f6 100644
--- a/hw/ppc/ppc405_uc.c
+++ b/hw/ppc/ppc405_uc.c
@@ -393,7 +393,8 @@ static void ppc4xx_opba_init(hwaddr base)
printf("%s: offset " TARGET_FMT_plx "\n", __func__, base);
#endif
memory_region_init_io(&opba->io, NULL, &opba_ops, opba, "opba", 0x002);
- memory_region_add_subregion(get_system_memory(), base, &opba->io);
+ memory_region_add_subregion(get_system_memory(), base, &opba->io,
+ &error_abort);
qemu_register_reset(ppc4xx_opba_reset, opba);
}
@@ -815,7 +816,8 @@ static void ppc405_gpio_init(hwaddr base)
printf("%s: offset " TARGET_FMT_plx "\n", __func__, base);
#endif
memory_region_init_io(&gpio->io, NULL, &ppc405_gpio_ops, gpio, "pgio",
0x038);
- memory_region_add_subregion(get_system_memory(), base, &gpio->io);
+ memory_region_add_subregion(get_system_memory(), base, &gpio->io,
+ &error_abort);
qemu_register_reset(&ppc405_gpio_reset, gpio);
}
@@ -863,7 +865,7 @@ static void ocm_update_mappings (ppc405_ocm_t *ocm,
printf("OCM map ISA %08" PRIx32 "\n", isarc);
#endif
memory_region_add_subregion(get_system_memory(), isarc,
- &ocm->isarc_ram);
+ &ocm->isarc_ram, &error_abort);
}
}
if (ocm->dsarc != dsarc ||
@@ -887,7 +889,7 @@ static void ocm_update_mappings (ppc405_ocm_t *ocm,
printf("OCM map DSA %08" PRIx32 "\n", dsarc);
#endif
memory_region_add_subregion(get_system_memory(), dsarc,
- &ocm->dsarc_ram);
+ &ocm->dsarc_ram, &error_abort);
}
}
}
@@ -1226,7 +1228,8 @@ static void ppc405_i2c_init(hwaddr base, qemu_irq irq)
printf("%s: offset " TARGET_FMT_plx "\n", __func__, base);
#endif
memory_region_init_io(&i2c->iomem, NULL, &i2c_ops, i2c, "i2c", 0x011);
- memory_region_add_subregion(get_system_memory(), base, &i2c->iomem);
+ memory_region_add_subregion(get_system_memory(), base, &i2c->iomem,
+ &error_abort);
qemu_register_reset(ppc4xx_i2c_reset, i2c);
}
@@ -1505,7 +1508,8 @@ static void ppc4xx_gpt_init(hwaddr base, qemu_irq irqs[5])
printf("%s: offset " TARGET_FMT_plx "\n", __func__, base);
#endif
memory_region_init_io(&gpt->iomem, NULL, &gpt_ops, gpt, "gpt", 0x0d4);
- memory_region_add_subregion(get_system_memory(), base, &gpt->iomem);
+ memory_region_add_subregion(get_system_memory(), base, &gpt->iomem,
+ &error_abort);
qemu_register_reset(ppc4xx_gpt_reset, gpt);
}
diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c
index 778970a..bc37d8a 100644
--- a/hw/ppc/ppc440_bamboo.c
+++ b/hw/ppc/ppc440_bamboo.c
@@ -229,7 +229,8 @@ static void bamboo_init(MachineState *machine)
memory_region_init_alias(isa, NULL, "isa_mmio",
get_system_io(), 0, PPC440EP_PCI_IOLEN);
- memory_region_add_subregion(get_system_memory(), PPC440EP_PCI_IO, isa);
+ memory_region_add_subregion(get_system_memory(), PPC440EP_PCI_IO, isa,
+ &error_abort);
if (serial_hds[0] != NULL) {
serial_mm_init(address_space_mem, 0xef600300, 0, pic[0],
diff --git a/hw/ppc/ppc4xx_devs.c b/hw/ppc/ppc4xx_devs.c
index 2f38ff7..efd88e0 100644
--- a/hw/ppc/ppc4xx_devs.c
+++ b/hw/ppc/ppc4xx_devs.c
@@ -433,10 +433,10 @@ static void sdram_set_bcr(ppc4xx_sdram_t *sdram,
memory_region_init(&sdram->containers[n], NULL, "sdram-containers",
sdram_size(bcr));
memory_region_add_subregion(&sdram->containers[n], 0,
- &sdram->ram_memories[n]);
+ &sdram->ram_memories[n], &error_abort);
memory_region_add_subregion(get_system_memory(),
sdram_base(bcr),
- &sdram->containers[n]);
+ &sdram->containers[n], &error_abort);
}
}
diff --git a/hw/ppc/ppc4xx_pci.c b/hw/ppc/ppc4xx_pci.c
index 0bb3cdb..ddd6845 100644
--- a/hw/ppc/ppc4xx_pci.c
+++ b/hw/ppc/ppc4xx_pci.c
@@ -335,9 +335,12 @@ static int ppc4xx_pcihost_initfn(SysBusDevice *dev)
"pci-conf-data", 4);
memory_region_init_io(&s->iomem, OBJECT(s), &pci_reg_ops, s,
"pci.reg", PCI_REG_SIZE);
- memory_region_add_subregion(&s->container, PCIC0_CFGADDR, &h->conf_mem);
- memory_region_add_subregion(&s->container, PCIC0_CFGDATA, &h->data_mem);
- memory_region_add_subregion(&s->container, PCI_REG_BASE, &s->iomem);
+ memory_region_add_subregion(&s->container, PCIC0_CFGADDR, &h->conf_mem,
+ &error_abort);
+ memory_region_add_subregion(&s->container, PCIC0_CFGDATA, &h->data_mem,
+ &error_abort);
+ memory_region_add_subregion(&s->container, PCI_REG_BASE, &s->iomem,
+ &error_abort);
sysbus_init_mmio(dev, &s->container);
qemu_register_reset(ppc4xx_pci_reset, s);
diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
index 998ee2d..1e9758b 100644
--- a/hw/ppc/prep.c
+++ b/hw/ppc/prep.c
@@ -558,7 +558,7 @@ static void ppc_prep_init(MachineState *machine)
/* allocate RAM */
memory_region_allocate_system_memory(ram, NULL, "ppc_prep.ram", ram_size);
- memory_region_add_subregion(sysmem, 0, ram);
+ memory_region_add_subregion(sysmem, 0, ram, &error_abort);
if (linux_boot) {
kernel_base = KERNEL_LOAD_ADDR;
@@ -676,7 +676,7 @@ static void ppc_prep_init(MachineState *machine)
/* PowerPC control and status register group */
#if 0
memory_region_init_io(xcsr, NULL, &PPC_XCSR_ops, NULL, "ppc-xcsr", 0x1000);
- memory_region_add_subregion(sysmem, 0xFEFF0000, xcsr);
+ memory_region_add_subregion(sysmem, 0xFEFF0000, xcsr, &error_abort);
#endif
if (usb_enabled()) {
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index f174e5a..de237fc 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1515,14 +1515,14 @@ static void ppc_spapr_init(MachineState *machine)
spapr->ram_limit = ram_size;
memory_region_allocate_system_memory(ram, NULL, "ppc_spapr.ram",
spapr->ram_limit);
- memory_region_add_subregion(sysmem, 0, ram);
+ memory_region_add_subregion(sysmem, 0, ram, &error_abort);
if (rma_alloc_size && rma) {
rma_region = g_new(MemoryRegion, 1);
memory_region_init_ram_ptr(rma_region, NULL, "ppc_spapr.rma",
rma_alloc_size, rma);
vmstate_register_ram_global(rma_region);
- memory_region_add_subregion(sysmem, 0, rma_region);
+ memory_region_add_subregion(sysmem, 0, rma_region, &error_abort);
}
filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, "spapr-rtas.bin");
diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index d4a6150..03fb6c1 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -1183,7 +1183,7 @@ static void spapr_phb_realize(DeviceState *dev, Error
**errp)
namebuf, &sphb->memspace,
SPAPR_PCI_MEM_WIN_BUS_OFFSET, sphb->mem_win_size);
memory_region_add_subregion(get_system_memory(), sphb->mem_win_addr,
- &sphb->memwindow);
+ &sphb->memwindow, &error_abort);
/* Initialize IO regions */
sprintf(namebuf, "%s.io", sphb->dtbusname);
@@ -1194,7 +1194,7 @@ static void spapr_phb_realize(DeviceState *dev, Error
**errp)
memory_region_init_alias(&sphb->iowindow, OBJECT(sphb), namebuf,
&sphb->iospace, 0, SPAPR_PCI_IO_WIN_SIZE);
memory_region_add_subregion(get_system_memory(), sphb->io_win_addr,
- &sphb->iowindow);
+ &sphb->iowindow, &error_abort);
bus = pci_register_bus(dev, NULL,
pci_spapr_set_irq, pci_spapr_map_irq, sphb,
@@ -1237,7 +1237,7 @@ static void spapr_phb_realize(DeviceState *dev, Error
**errp)
memory_region_init_io(&sphb->msiwindow, NULL, &spapr_msi_ops, spapr,
"msi", msi_window_size);
memory_region_add_subregion(&sphb->iommu_root, SPAPR_PCI_MSI_WINDOW,
- &sphb->msiwindow);
+ &sphb->msiwindow, &error_abort);
pci_setup_iommu(bus, spapr_pci_dma_iommu, sphb);
@@ -1293,7 +1293,7 @@ static void spapr_phb_finish_realize(sPAPRPHBState *sphb,
Error **errp)
/* Register default 32bit DMA window */
memory_region_add_subregion(&sphb->iommu_root, 0,
- spapr_tce_get_iommu(tcet));
+ spapr_tce_get_iommu(tcet), &error_abort);
}
static int spapr_phb_children_reset(Object *child, void *opaque)
diff --git a/hw/ppc/spapr_pci_vfio.c b/hw/ppc/spapr_pci_vfio.c
index 99a1be5..6b9e2af 100644
--- a/hw/ppc/spapr_pci_vfio.c
+++ b/hw/ppc/spapr_pci_vfio.c
@@ -68,7 +68,7 @@ static void spapr_phb_vfio_finish_realize(sPAPRPHBState
*sphb, Error **errp)
/* Register default 32bit DMA window */
memory_region_add_subregion(&sphb->iommu_root, tcet->bus_offset,
- spapr_tce_get_iommu(tcet));
+ spapr_tce_get_iommu(tcet), &error_abort);
}
static void spapr_phb_vfio_reset(DeviceState *qdev)
diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c
index 439732f..1db90d5 100644
--- a/hw/ppc/virtex_ml507.c
+++ b/hw/ppc/virtex_ml507.c
@@ -223,7 +223,8 @@ static void virtex_init(MachineState *machine)
qemu_register_reset(main_cpu_reset, cpu);
memory_region_allocate_system_memory(phys_ram, NULL, "ram", ram_size);
- memory_region_add_subregion(address_space_mem, ram_base, phys_ram);
+ memory_region_add_subregion(address_space_mem, ram_base, phys_ram,
+ &error_abort);
dinfo = drive_get(IF_PFLASH, 0, 0);
pflash_cfi01_register(PFLASH_BASEADDR, NULL, "virtex.flash", FLASH_SIZE,
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index 3d20d6a..1ee08c3 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -162,7 +162,7 @@ static void ccw_init(MachineState *machine)
/* allocate RAM for core */
memory_region_init_ram(ram, NULL, "s390.ram", my_ram_size, &error_abort);
vmstate_register_ram_global(ram);
- memory_region_add_subregion(sysmem, 0, ram);
+ memory_region_add_subregion(sysmem, 0, ram, &error_abort);
/* If the size of ram is not on a MEM_SECTION_SIZE boundary,
calculate the pad size necessary to force this boundary. */
diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c
index 1284e77..7d61bfb 100644
--- a/hw/s390x/s390-virtio.c
+++ b/hw/s390x/s390-virtio.c
@@ -295,7 +295,7 @@ static void s390_init(MachineState *machine)
/* allocate RAM */
memory_region_init_ram(ram, NULL, "s390.ram", my_ram_size, &error_abort);
vmstate_register_ram_global(ram);
- memory_region_add_subregion(sysmem, 0, ram);
+ memory_region_add_subregion(sysmem, 0, ram, &error_abort);
/* clear virtio region */
virtio_region_len = my_ram_size - ram_size;
diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c
index b3a6c5e..db461b8 100644
--- a/hw/s390x/sclp.c
+++ b/hw/s390x/sclp.c
@@ -243,7 +243,8 @@ static void assign_storage(SCCB *sccb)
memory_region_init_ram(standby_ram, NULL, id, this_subregion_size,
&error_abort);
vmstate_register_ram_global(standby_ram);
- memory_region_add_subregion(sysmem, offset, standby_ram);
+ memory_region_add_subregion(sysmem, offset, standby_ram,
+ &error_abort);
}
/* The specified subregion is no longer in standby */
mhd->standby_state_map[(assign_addr - mhd->padded_ram_size)
diff --git a/hw/sd/omap_mmc.c b/hw/sd/omap_mmc.c
index d072dec..63b6b7d 100644
--- a/hw/sd/omap_mmc.c
+++ b/hw/sd/omap_mmc.c
@@ -590,7 +590,7 @@ struct omap_mmc_s *omap_mmc_init(hwaddr base,
omap_mmc_reset(s);
memory_region_init_io(&s->iomem, NULL, &omap_mmc_ops, s, "omap.mmc",
0x800);
- memory_region_add_subregion(sysmem, base, &s->iomem);
+ memory_region_add_subregion(sysmem, base, &s->iomem, &error_abort);
/* Instantiate the storage */
s->card = sd_init(blk, false);
diff --git a/hw/sd/pxa2xx_mmci.c b/hw/sd/pxa2xx_mmci.c
index d1fe6d5..fcad7df 100644
--- a/hw/sd/pxa2xx_mmci.c
+++ b/hw/sd/pxa2xx_mmci.c
@@ -483,7 +483,7 @@ PXA2xxMMCIState *pxa2xx_mmci_init(MemoryRegion *sysmem,
memory_region_init_io(&s->iomem, NULL, &pxa2xx_mmci_ops, s,
"pxa2xx-mmci", 0x00100000);
- memory_region_add_subregion(sysmem, base, &s->iomem);
+ memory_region_add_subregion(sysmem, base, &s->iomem, &error_abort);
/* Instantiate the actual storage */
s->card = sd_init(blk, false);
diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c
index 5e22ed7..96124fe 100644
--- a/hw/sh4/r2d.c
+++ b/hw/sh4/r2d.c
@@ -187,7 +187,7 @@ static qemu_irq *r2d_fpga_init(MemoryRegion *sysmem,
s->irl = irl;
memory_region_init_io(&s->iomem, NULL, &r2d_fpga_ops, s, "r2d-fpga", 0x40);
- memory_region_add_subregion(sysmem, base, &s->iomem);
+ memory_region_add_subregion(sysmem, base, &s->iomem, &error_abort);
return qemu_allocate_irqs(r2d_fpga_irq_set, s, NR_IRQS);
}
@@ -257,7 +257,8 @@ static void r2d_init(MachineState *machine)
/* Allocate memory space */
memory_region_init_ram(sdram, NULL, "r2d.sdram", SDRAM_SIZE, &error_abort);
vmstate_register_ram_global(sdram);
- memory_region_add_subregion(address_space_mem, SDRAM_BASE, sdram);
+ memory_region_add_subregion(address_space_mem, SDRAM_BASE, sdram,
+ &error_abort);
/* Register peripherals */
s = sh7750_init(cpu, address_space_mem);
irq = r2d_fpga_init(address_space_mem, 0x04000000, sh7750_irl(s));
diff --git a/hw/sh4/sh7750.c b/hw/sh4/sh7750.c
index 5dda5de..e0a283f 100644
--- a/hw/sh4/sh7750.c
+++ b/hw/sh4/sh7750.c
@@ -735,31 +735,38 @@ SH7750State *sh7750_init(SuperHCPU *cpu, MemoryRegion
*sysmem)
memory_region_init_alias(&s->iomem_1f0, NULL, "memory-1f0",
&s->iomem, 0x1f000000, 0x1000);
- memory_region_add_subregion(sysmem, 0x1f000000, &s->iomem_1f0);
+ memory_region_add_subregion(sysmem, 0x1f000000, &s->iomem_1f0,
+ &error_abort);
memory_region_init_alias(&s->iomem_ff0, NULL, "memory-ff0",
&s->iomem, 0x1f000000, 0x1000);
- memory_region_add_subregion(sysmem, 0xff000000, &s->iomem_ff0);
+ memory_region_add_subregion(sysmem, 0xff000000, &s->iomem_ff0,
+ &error_abort);
memory_region_init_alias(&s->iomem_1f8, NULL, "memory-1f8",
&s->iomem, 0x1f800000, 0x1000);
- memory_region_add_subregion(sysmem, 0x1f800000, &s->iomem_1f8);
+ memory_region_add_subregion(sysmem, 0x1f800000, &s->iomem_1f8,
+ &error_abort);
memory_region_init_alias(&s->iomem_ff8, NULL, "memory-ff8",
&s->iomem, 0x1f800000, 0x1000);
- memory_region_add_subregion(sysmem, 0xff800000, &s->iomem_ff8);
+ memory_region_add_subregion(sysmem, 0xff800000, &s->iomem_ff8,
+ &error_abort);
memory_region_init_alias(&s->iomem_1fc, NULL, "memory-1fc",
&s->iomem, 0x1fc00000, 0x1000);
- memory_region_add_subregion(sysmem, 0x1fc00000, &s->iomem_1fc);
+ memory_region_add_subregion(sysmem, 0x1fc00000, &s->iomem_1fc,
+ &error_abort);
memory_region_init_alias(&s->iomem_ffc, NULL, "memory-ffc",
&s->iomem, 0x1fc00000, 0x1000);
- memory_region_add_subregion(sysmem, 0xffc00000, &s->iomem_ffc);
+ memory_region_add_subregion(sysmem, 0xffc00000, &s->iomem_ffc,
+ &error_abort);
memory_region_init_io(&s->mmct_iomem, NULL, &sh7750_mmct_ops, s,
"cache-and-tlb", 0x08000000);
- memory_region_add_subregion(sysmem, 0xf0000000, &s->mmct_iomem);
+ memory_region_add_subregion(sysmem, 0xf0000000, &s->mmct_iomem,
+ &error_abort);
sh_intc_init(sysmem, &s->intc, NR_SOURCES,
_INTC_ARRAY(mask_registers),
diff --git a/hw/sh4/sh_pci.c b/hw/sh4/sh_pci.c
index a2f6d9e..68b989e 100644
--- a/hw/sh4/sh_pci.c
+++ b/hw/sh4/sh_pci.c
@@ -67,7 +67,8 @@ static void sh_pci_reg_write (void *p, hwaddr addr, uint64_t
val,
memory_region_del_subregion(get_system_memory(), &pcic->isa);
pcic->iobr = val & 0xfffc0001;
memory_region_add_subregion(get_system_memory(),
- pcic->iobr & 0xfffc0000, &pcic->isa);
+ pcic->iobr & 0xfffc0000, &pcic->isa,
+ &error_abort);
}
break;
case 0x220:
@@ -145,7 +146,8 @@ static int sh_pci_device_init(SysBusDevice *dev)
sysbus_init_mmio(dev, &s->memconfig_p4);
sysbus_init_mmio(dev, &s->memconfig_a7);
s->iobr = 0xfe240000;
- memory_region_add_subregion(get_system_memory(), s->iobr, &s->isa);
+ memory_region_add_subregion(get_system_memory(), s->iobr, &s->isa,
+ &error_abort);
s->dev = pci_create_simple(phb->bus, PCI_DEVFN(0, 0), "sh_pci_host");
return 0;
diff --git a/hw/sh4/shix.c b/hw/sh4/shix.c
index f93f98e..b6f7af3 100644
--- a/hw/sh4/shix.c
+++ b/hw/sh4/shix.c
@@ -62,15 +62,15 @@ static void shix_init(MachineState *machine)
memory_region_init_ram(rom, NULL, "shix.rom", 0x4000, &error_abort);
vmstate_register_ram_global(rom);
memory_region_set_readonly(rom, true);
- memory_region_add_subregion(sysmem, 0x00000000, rom);
+ memory_region_add_subregion(sysmem, 0x00000000, rom, &error_abort);
memory_region_init_ram(&sdram[0], NULL, "shix.sdram1", 0x01000000,
&error_abort);
vmstate_register_ram_global(&sdram[0]);
- memory_region_add_subregion(sysmem, 0x08000000, &sdram[0]);
+ memory_region_add_subregion(sysmem, 0x08000000, &sdram[0], &error_abort);
memory_region_init_ram(&sdram[1], NULL, "shix.sdram2", 0x01000000,
&error_abort);
vmstate_register_ram_global(&sdram[1]);
- memory_region_add_subregion(sysmem, 0x0c000000, &sdram[1]);
+ memory_region_add_subregion(sysmem, 0x0c000000, &sdram[1], &error_abort);
/* Load BIOS in 0 (and access it through P2, 0xA0000000) */
if (bios_name == NULL)
diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c
index 7f5dcd6..2103bd7 100644
--- a/hw/sparc/leon3.c
+++ b/hw/sparc/leon3.c
@@ -152,14 +152,16 @@ static void leon3_generic_hw_init(MachineState *machine)
}
memory_region_allocate_system_memory(ram, NULL, "leon3.ram", ram_size);
- memory_region_add_subregion(address_space_mem, 0x40000000, ram);
+ memory_region_add_subregion(address_space_mem, 0x40000000, ram,
+ &error_abort);
/* Allocate BIOS */
prom_size = 8 * 1024 * 1024; /* 8Mb */
memory_region_init_ram(prom, NULL, "Leon3.bios", prom_size, &error_abort);
vmstate_register_ram_global(prom);
memory_region_set_readonly(prom, true);
- memory_region_add_subregion(address_space_mem, 0x00000000, prom);
+ memory_region_add_subregion(address_space_mem, 0x00000000, prom,
+ &error_abort);
/* Load boot prom */
if (bios_name == NULL) {
diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
index 30cfa0e..7252c83 100644
--- a/hw/sparc64/sun4u.c
+++ b/hw/sparc64/sun4u.c
@@ -874,7 +874,7 @@ static void sun4uv_init(MemoryRegion *address_space_mem,
nvram = m48t59_init(NULL, 0, 0, NVRAM_SIZE, 1968, 59);
s = SYS_BUS_DEVICE(nvram);
memory_region_add_subregion(get_system_io(), 0x2000,
- sysbus_mmio_get_region(s, 0));
+ sysbus_mmio_get_region(s, 0), &error_abort);
initrd_size = 0;
initrd_addr = 0;
diff --git a/hw/timer/m48t59.c b/hw/timer/m48t59.c
index 8ab683d..89bb5a6 100644
--- a/hw/timer/m48t59.c
+++ b/hw/timer/m48t59.c
@@ -698,7 +698,8 @@ Nvram *m48t59_init(qemu_irq IRQ, hwaddr mem_base,
sysbus_connect_irq(s, 0, IRQ);
if (io_base != 0) {
memory_region_add_subregion(get_system_io(), io_base,
- sysbus_mmio_get_region(s, 1));
+ sysbus_mmio_get_region(s, 1),
+ &error_abort);
}
if (mem_base != 0) {
sysbus_mmio_map(s, 0, mem_base);
diff --git a/hw/timer/sh_timer.c b/hw/timer/sh_timer.c
index 07f0670..40ed41c 100644
--- a/hw/timer/sh_timer.c
+++ b/hw/timer/sh_timer.c
@@ -325,10 +325,12 @@ void tmu012_init(MemoryRegion *sysmem, hwaddr base,
memory_region_init_alias(&s->iomem_p4, NULL, "timer-p4",
&s->iomem, 0, 0x1000);
- memory_region_add_subregion(sysmem, P4ADDR(base), &s->iomem_p4);
+ memory_region_add_subregion(sysmem, P4ADDR(base), &s->iomem_p4,
+ &error_abort);
memory_region_init_alias(&s->iomem_a7, NULL, "timer-a7",
&s->iomem, 0, 0x1000);
- memory_region_add_subregion(sysmem, A7ADDR(base), &s->iomem_a7);
+ memory_region_add_subregion(sysmem, A7ADDR(base), &s->iomem_a7,
+ &error_abort);
/* ??? Save/restore. */
}
diff --git a/hw/tpm/tpm_tis.c b/hw/tpm/tpm_tis.c
index 0806b5f..3312bce 100644
--- a/hw/tpm/tpm_tis.c
+++ b/hw/tpm/tpm_tis.c
@@ -1060,7 +1060,7 @@ static void tpm_tis_realizefn(DeviceState *dev, Error
**errp)
isa_init_irq(&s->busdev, &tis->irq, tis->irq_num);
memory_region_add_subregion(isa_address_space(ISA_DEVICE(dev)),
- TPM_TIS_ADDR_BASE, &s->mmio);
+ TPM_TIS_ADDR_BASE, &s->mmio, &error_abort);
}
static void tpm_tis_initfn(Object *obj)
diff --git a/hw/tricore/tricore_testboard.c b/hw/tricore/tricore_testboard.c
index a059a20..14290af 100644
--- a/hw/tricore/tricore_testboard.c
+++ b/hw/tricore/tricore_testboard.c
@@ -89,12 +89,12 @@ static void tricore_testboard_init(MachineState *machine,
int board_id)
memory_region_init_ram(pcp_text, NULL, "powerlink_pcp_text.ram", 32*1024,
&error_abort);
vmstate_register_ram_global(pcp_text);
- memory_region_add_subregion(sysmem, 0x80000000, ext_cram);
- memory_region_add_subregion(sysmem, 0xa1000000, ext_dram);
- memory_region_add_subregion(sysmem, 0xd4000000, int_cram);
- memory_region_add_subregion(sysmem, 0xd0000000, int_dram);
- memory_region_add_subregion(sysmem, 0xf0050000, pcp_data);
- memory_region_add_subregion(sysmem, 0xf0060000, pcp_text);
+ memory_region_add_subregion(sysmem, 0x80000000, ext_cram, &error_abort);
+ memory_region_add_subregion(sysmem, 0xa1000000, ext_dram, &error_abort);
+ memory_region_add_subregion(sysmem, 0xd4000000, int_cram, &error_abort);
+ memory_region_add_subregion(sysmem, 0xd0000000, int_dram, &error_abort);
+ memory_region_add_subregion(sysmem, 0xf0050000, pcp_data, &error_abort);
+ memory_region_add_subregion(sysmem, 0xf0060000, pcp_text, &error_abort);
tricoretb_binfo.ram_size = machine->ram_size;
tricoretb_binfo.kernel_filename = machine->kernel_filename;
diff --git a/hw/unicore32/puv3.c b/hw/unicore32/puv3.c
index 703e29d..23ffc39 100644
--- a/hw/unicore32/puv3.c
+++ b/hw/unicore32/puv3.c
@@ -66,7 +66,8 @@ static void puv3_soc_init(CPUUniCore32State *env)
/* Keyboard (i8042), mouse disabled for nographic */
i8042_mm_init(irqs[PUV3_IRQS_PS2_KBD], NULL, i8042, PUV3_REGS_OFFSET, 4);
- memory_region_add_subregion(get_system_memory(), PUV3_PS2_BASE, i8042);
+ memory_region_add_subregion(get_system_memory(), PUV3_PS2_BASE, i8042,
+ &error_abort);
}
static void puv3_board_init(CPUUniCore32State *env, ram_addr_t ram_size)
@@ -77,7 +78,8 @@ static void puv3_board_init(CPUUniCore32State *env,
ram_addr_t ram_size)
memory_region_init_ram(ram_memory, NULL, "puv3.ram", ram_size,
&error_abort);
vmstate_register_ram_global(ram_memory);
- memory_region_add_subregion(get_system_memory(), 0, ram_memory);
+ memory_region_add_subregion(get_system_memory(), 0, ram_memory,
+ &error_abort);
}
static const GraphicHwOps no_ops;
diff --git a/hw/usb/hcd-ehci-sysbus.c b/hw/usb/hcd-ehci-sysbus.c
index cd1cc14..c487cec 100644
--- a/hw/usb/hcd-ehci-sysbus.c
+++ b/hw/usb/hcd-ehci-sysbus.c
@@ -194,7 +194,7 @@ static void fusbh200_ehci_init(Object *obj)
"fusbh200", 0x4c);
memory_region_add_subregion(&s->mem,
s->opregbase + s->portscbase + 4 * s->portnr,
- &f->mem_vendor);
+ &f->mem_vendor, &error_abort);
}
static void fusbh200_ehci_class_init(ObjectClass *oc, void *data)
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
index d7cd40b..2f3f960 100644
--- a/hw/usb/hcd-ehci.c
+++ b/hw/usb/hcd-ehci.c
@@ -2522,10 +2522,12 @@ void usb_ehci_init(EHCIState *s, DeviceState *dev)
memory_region_init_io(&s->mem_ports, OBJECT(dev), &ehci_mmio_port_ops, s,
"ports", 4 * s->portnr);
- memory_region_add_subregion(&s->mem, s->capsbase, &s->mem_caps);
- memory_region_add_subregion(&s->mem, s->opregbase, &s->mem_opreg);
+ memory_region_add_subregion(&s->mem, s->capsbase, &s->mem_caps,
+ &error_abort);
+ memory_region_add_subregion(&s->mem, s->opregbase, &s->mem_opreg,
+ &error_abort);
memory_region_add_subregion(&s->mem, s->opregbase + s->portscbase,
- &s->mem_ports);
+ &s->mem_ports, &error_abort);
}
/*
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index 90a5fbf..efe29ca 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -3622,10 +3622,14 @@ static void usb_xhci_realize(struct PCIDevice *dev,
Error **errp)
memory_region_init_io(&xhci->mem_doorbell, OBJECT(xhci),
&xhci_doorbell_ops, xhci,
"doorbell", LEN_DOORBELL);
- memory_region_add_subregion(&xhci->mem, 0, &xhci->mem_cap);
- memory_region_add_subregion(&xhci->mem, OFF_OPER, &xhci->mem_oper);
- memory_region_add_subregion(&xhci->mem, OFF_RUNTIME, &xhci->mem_runtime);
- memory_region_add_subregion(&xhci->mem, OFF_DOORBELL, &xhci->mem_doorbell);
+ memory_region_add_subregion(&xhci->mem, 0, &xhci->mem_cap,
+ &error_abort);
+ memory_region_add_subregion(&xhci->mem, OFF_OPER, &xhci->mem_oper,
+ &error_abort);
+ memory_region_add_subregion(&xhci->mem, OFF_RUNTIME, &xhci->mem_runtime,
+ &error_abort);
+ memory_region_add_subregion(&xhci->mem, OFF_DOORBELL, &xhci->mem_doorbell,
+ &error_abort);
for (i = 0; i < xhci->numports; i++) {
XHCIPort *port = &xhci->ports[i];
@@ -3633,7 +3637,8 @@ static void usb_xhci_realize(struct PCIDevice *dev, Error
**errp)
port->xhci = xhci;
memory_region_init_io(&port->mem, OBJECT(xhci), &xhci_port_ops, port,
port->name, 0x10);
- memory_region_add_subregion(&xhci->mem, offset, &port->mem);
+ memory_region_add_subregion(&xhci->mem, offset, &port->mem,
+ &error_abort);
}
pci_register_bar(dev, 0,
diff --git a/hw/vfio/common.c b/hw/vfio/common.c
index 85ee9b0..51aea6d 100644
--- a/hw/vfio/common.c
+++ b/hw/vfio/common.c
@@ -525,7 +525,7 @@ empty_region:
memory_region_init(submem, obj, name, 0);
}
- memory_region_add_subregion(mem, offset, submem);
+ memory_region_add_subregion(mem, offset, submem, &error_abort);
return ret;
}
diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
index 2ed877f..f266567 100644
--- a/hw/vfio/pci.c
+++ b/hw/vfio/pci.c
@@ -1430,7 +1430,8 @@ static void vfio_vga_probe_ati_3c3_quirk(VFIOPCIDevice
*vdev)
memory_region_init_io(&quirk->mem, OBJECT(vdev), &vfio_ati_3c3_quirk,
quirk,
"vfio-ati-3c3-quirk", 1);
memory_region_add_subregion(&vdev->vga.region[QEMU_PCI_VGA_IO_HI].mem,
- 3 /* offset 3 bytes from 0x3c0 */,
&quirk->mem);
+ 3 /* offset 3 bytes from 0x3c0 */, &quirk->mem,
+ &error_abort);
QLIST_INSERT_HEAD(&vdev->vga.region[QEMU_PCI_VGA_IO_HI].quirks,
quirk, next);
@@ -1785,7 +1786,8 @@ static void vfio_vga_probe_nvidia_3d0_quirk(VFIOPCIDevice
*vdev)
memory_region_init_io(&quirk->mem, OBJECT(vdev), &vfio_nvidia_3d0_quirk,
quirk, "vfio-nvidia-3d0-quirk", 6);
memory_region_add_subregion(&vdev->vga.region[QEMU_PCI_VGA_IO_HI].mem,
- quirk->data.base_offset, &quirk->mem);
+ quirk->data.base_offset, &quirk->mem,
+ &error_abort);
QLIST_INSERT_HEAD(&vdev->vga.region[QEMU_PCI_VGA_IO_HI].quirks,
quirk, next);
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
index 7a89081..9c95c74 100644
--- a/hw/virtio/virtio-pci.c
+++ b/hw/virtio/virtio-pci.c
@@ -1279,7 +1279,8 @@ static void virtio_pci_modern_region_map(VirtIOPCIProxy
*proxy,
{
memory_region_add_subregion(&proxy->modern_bar,
region->offset,
- ®ion->mr);
+ ®ion->mr,
+ &error_abort);
cap->cfg_type = region->type;
cap->bar = proxy->modern_mem_bar;
diff --git a/hw/xtensa/sim.c b/hw/xtensa/sim.c
index 328d209..3da7ca4 100644
--- a/hw/xtensa/sim.c
+++ b/hw/xtensa/sim.c
@@ -81,12 +81,13 @@ static void xtensa_sim_init(MachineState *machine)
ram = g_malloc(sizeof(*ram));
memory_region_init_ram(ram, NULL, "xtensa.sram", ram_size, &error_abort);
vmstate_register_ram_global(ram);
- memory_region_add_subregion(get_system_memory(), 0, ram);
+ memory_region_add_subregion(get_system_memory(), 0, ram, &error_abort);
rom = g_malloc(sizeof(*rom));
memory_region_init_ram(rom, NULL, "xtensa.rom", 0x1000, &error_abort);
vmstate_register_ram_global(rom);
- memory_region_add_subregion(get_system_memory(), 0xfe000000, rom);
+ memory_region_add_subregion(get_system_memory(), 0xfe000000, rom,
+ &error_abort);
if (kernel_filename) {
uint64_t elf_entry;
diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c
index ab4d0e4..40bfb81 100644
--- a/hw/xtensa/xtfpga.c
+++ b/hw/xtensa/xtfpga.c
@@ -115,7 +115,7 @@ static Lx60FpgaState *lx60_fpga_init(MemoryRegion
*address_space,
memory_region_init_io(&s->iomem, NULL, &lx60_fpga_ops, s,
"lx60.fpga", 0x10000);
- memory_region_add_subregion(address_space, base, &s->iomem);
+ memory_region_add_subregion(address_space, base, &s->iomem, &error_abort);
lx60_fpga_reset(s);
qemu_register_reset(lx60_fpga_reset, s);
return s;
@@ -138,14 +138,14 @@ static void lx60_net_init(MemoryRegion *address_space,
s = SYS_BUS_DEVICE(dev);
sysbus_connect_irq(s, 0, irq);
memory_region_add_subregion(address_space, base,
- sysbus_mmio_get_region(s, 0));
+ sysbus_mmio_get_region(s, 0), &error_abort);
memory_region_add_subregion(address_space, descriptors,
- sysbus_mmio_get_region(s, 1));
+ sysbus_mmio_get_region(s, 1), &error_abort);
ram = g_malloc(sizeof(*ram));
memory_region_init_ram(ram, OBJECT(s), "open_eth.ram", 16384,
&error_abort);
vmstate_register_ram_global(ram);
- memory_region_add_subregion(address_space, buffers, ram);
+ memory_region_add_subregion(address_space, buffers, ram, &error_abort);
}
static uint64_t translate_phys_addr(void *opaque, uint64_t addr)
@@ -225,12 +225,13 @@ static void lx_init(const LxBoardDesc *board,
MachineState *machine)
memory_region_init_ram(ram, NULL, "lx60.dram", machine->ram_size,
&error_abort);
vmstate_register_ram_global(ram);
- memory_region_add_subregion(system_memory, 0, ram);
+ memory_region_add_subregion(system_memory, 0, ram, &error_abort);
system_io = g_malloc(sizeof(*system_io));
memory_region_init_io(system_io, NULL, &lx60_io_ops, NULL, "lx60.io",
224 * 1024 * 1024);
- memory_region_add_subregion(system_memory, 0xf0000000, system_io);
+ memory_region_add_subregion(system_memory, 0xf0000000, system_io,
+ &error_abort);
lx60_fpga_init(system_io, 0x0d020000);
if (nd_table[0].used) {
lx60_net_init(system_io, 0x0d030000, 0x0d030400, 0x0d800000,
@@ -277,7 +278,8 @@ static void lx_init(const LxBoardDesc *board, MachineState
*machine)
memory_region_init_ram(rom, NULL, "lx60.sram", board->sram_size,
&error_abort);
vmstate_register_ram_global(rom);
- memory_region_add_subregion(system_memory, 0xfe000000, rom);
+ memory_region_add_subregion(system_memory, 0xfe000000, rom,
+ &error_abort);
if (kernel_cmdline) {
bp_size += get_tag_size(strlen(kernel_cmdline) + 1);
@@ -377,7 +379,7 @@ static void lx_init(const LxBoardDesc *board, MachineState
*machine)
board->flash_size - board->flash_boot_base < 0x02000000 ?
board->flash_size - board->flash_boot_base : 0x02000000);
memory_region_add_subregion(system_memory, 0xfe000000,
- flash_io);
+ flash_io, &error_abort);
}
}
}
diff --git a/include/exec/memory.h b/include/exec/memory.h
index b9e6112..ce0320a 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -928,7 +928,8 @@ void memory_region_del_eventfd(MemoryRegion *mr,
*/
void memory_region_add_subregion(MemoryRegion *mr,
hwaddr offset,
- MemoryRegion *subregion);
+ MemoryRegion *subregion,
+ Error **errp);
/**
* memory_region_add_subregion_overlap: Add a subregion to a container
* with overlap.
diff --git a/ioport.c b/ioport.c
index e39093e..8943e16 100644
--- a/ioport.c
+++ b/ioport.c
@@ -257,7 +257,7 @@ static void portio_list_add_1(PortioList *piolist,
memory_region_set_flush_coalesced(&mrpio->mr);
}
memory_region_add_subregion(piolist->address_space,
- start + off_low, &mrpio->mr);
+ start + off_low, &mrpio->mr, &error_abort);
piolist->regions[piolist->nr] = &mrpio->mr;
++piolist->nr;
}
diff --git a/memory.c b/memory.c
index 4558d85..360a5b8 100644
--- a/memory.c
+++ b/memory.c
@@ -1763,7 +1763,8 @@ done:
static void memory_region_add_subregion_common(MemoryRegion *mr,
hwaddr offset,
- MemoryRegion *subregion)
+ MemoryRegion *subregion,
+ Error **errp)
{
assert(!subregion->container);
subregion->container = mr;
@@ -1781,11 +1782,11 @@ static void
memory_region_add_subregion_common(MemoryRegion *mr,
void memory_region_add_subregion(MemoryRegion *mr,
hwaddr offset,
- MemoryRegion *subregion)
+ MemoryRegion *subregion, Error **errp)
{
subregion->may_overlap = false;
subregion->priority = 0;
- memory_region_add_subregion_common(mr, offset, subregion);
+ memory_region_add_subregion_common(mr, offset, subregion, errp);
}
void memory_region_add_subregion_overlap(MemoryRegion *mr,
@@ -1795,7 +1796,7 @@ void memory_region_add_subregion_overlap(MemoryRegion *mr,
{
subregion->may_overlap = true;
subregion->priority = priority;
- memory_region_add_subregion_common(mr, offset, subregion);
+ memory_region_add_subregion_common(mr, offset, subregion, &error_abort);
}
void memory_region_del_subregion(MemoryRegion *mr,
diff --git a/numa.c b/numa.c
index 3c80059..0ec9e58 100644
--- a/numa.c
+++ b/numa.c
@@ -469,7 +469,7 @@ void memory_region_allocate_system_memory(MemoryRegion *mr,
Object *owner,
exit(1);
}
- memory_region_add_subregion(mr, addr, seg);
+ memory_region_add_subregion(mr, addr, seg, &error_abort);
vmstate_register_ram_global(seg);
addr += size;
}
--
1.8.3.1
- [Qemu-devel] [RFC v3 1/8] memory: get rid of memory_region_destructor_ram_from_ptr(), (continued)
- [Qemu-devel] [RFC v3 1/8] memory: get rid of memory_region_destructor_ram_from_ptr(), Igor Mammedov, 2015/07/08
- [Qemu-devel] [RFC v3 2/8] memory: introduce MemoryRegion container with reserved HVA range, Igor Mammedov, 2015/07/08
- [Qemu-devel] [RFC v3 3/8] pc: reserve hotpluggable memory range with memory_region_init_hva_range(), Igor Mammedov, 2015/07/08
- [Qemu-devel] [RFC v3 5/8] exec: make sure that RAMBlock descriptor won't be leaked, Igor Mammedov, 2015/07/08
- [Qemu-devel] [RFC v3 6/8] exec: add qemu_ram_unmap_hva() API for unmapping memory from HVA area, Igor Mammedov, 2015/07/08
- [Qemu-devel] [RFC v3 4/8] pc: fix QEMU crashing when more than ~50 memory hotplugged, Igor Mammedov, 2015/07/08
- [Qemu-devel] [RFC v3 8/8] memory: add support for deleting HVA mapped MemoryRegion, Igor Mammedov, 2015/07/08
- [Qemu-devel] [RFC v3 7/8] memory: extend memory_region_add_subregion() to support error reporting,
Igor Mammedov <=
- Re: [Qemu-devel] [RFC v3 7/8] memory: extend memory_region_add_subregion() to support error reporting, Paolo Bonzini, 2015/07/08
- Re: [Qemu-devel] [RFC v3 7/8] memory: extend memory_region_add_subregion() to support error reporting, Igor Mammedov, 2015/07/08
Re: [Qemu-devel] [RFC v3 0/8] Fix QEMU crash during memory hotplug with vhost=on, Michael S. Tsirkin, 2015/07/08