From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54352) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZCn8R-0004cN-8w for qemu-devel@nongnu.org; Wed, 08 Jul 2015 07:03:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZCn8B-00023v-06 for qemu-devel@nongnu.org; Wed, 08 Jul 2015 07:03:27 -0400 Received: from mx1.redhat.com ([209.132.183.28]:42476) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZCn8A-00023b-BO for qemu-devel@nongnu.org; Wed, 08 Jul 2015 07:03:10 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (Postfix) with ESMTPS id D19D4B8BB9 for ; Wed, 8 Jul 2015 11:03:09 +0000 (UTC) Date: Wed, 8 Jul 2015 14:03:04 +0300 From: "Michael S. Tsirkin" Message-ID: <20150708140240-mutt-send-email-mst@redhat.com> References: <1436348808-223033-1-git-send-email-imammedo@redhat.com> <1436348808-223033-8-git-send-email-imammedo@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1436348808-223033-8-git-send-email-imammedo@redhat.com> Subject: Re: [Qemu-devel] [RFC v3 7/8] memory: extend memory_region_add_subregion() to support error reporting List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Igor Mammedov Cc: pbonzini@redhat.com, qemu-devel@nongnu.org On Wed, Jul 08, 2015 at 11:46:47AM +0200, Igor Mammedov wrote: > extends memory_region_add_subregion() by adding Error** > argument to allow t fail and return a error from it. > > Signed-off-by: Igor Mammedov _overlap needs same treatment too for completeness. Can be a separate patch. > --- > 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 base. */ > 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