qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [RFC 15/15] [test only] Use 'Error *err[static 1]' instead


From: Eduardo Habkost
Subject: [Qemu-devel] [RFC 15/15] [test only] Use 'Error *err[static 1]' instead of 'Error **errp' to catch NULL errp arguments
Date: Tue, 13 Jun 2017 13:53:13 -0300

This is being included in the RFC just to help validating the series,
and ensure we don't use NULL errp anywhere.

I don't propose we actually change all code to use the
'Error *errp[static 1]' syntax because it confuses Cocinelle.

I am considering including a assert(errp) line in the ERR_IS_SET()
macro, so we can catch NULL errp at runtime in case somebody forgets
about it.

Generated by the following Coccinelle patch:

  @@
  typedef Error;
  type T;
  identifier FN !~ "os_mem_prealloc|qemu_fork";
  identifier errp;
  @@
   T FN(...,
  -     Error **errp
  +     Error *errp[STATIC_1]
       );

  @@
  typedef Error;
  type T;
  identifier FN !~ "os_mem_prealloc|qemu_fork";
  identifier errp;
  @@
   T FN(...,
  -     Error **errp
  +     Error *errp[STATIC_1]
       ) { ... }

Followed by the following sed command:

  $ sed -i -e 's/\[STATIC_1\]/[static 1]/g' $(g grep -w -l STATIC_1)

Signed-off-by: Eduardo Habkost <address@hidden>
---
 include/qapi/visitor.h                  |  47 ++++++-----
 block/nbd-client.h                      |   2 +-
 block/qcow2.h                           |   8 +-
 block/vhdx.h                            |   2 +-
 crypto/blockpriv.h                      |   4 +-
 crypto/hmac.h                           |  10 +--
 crypto/tlscredspriv.h                   |   4 +-
 hw/9pfs/9p.h                            |   4 +-
 hw/block/dataplane/virtio-blk.h         |   2 +-
 hw/s390x/s390-virtio.h                  |   2 +-
 hw/timer/m48t59-internal.h              |   2 +-
 hw/usb/hcd-ehci.h                       |   4 +-
 hw/vfio/pci.h                           |   4 +-
 hw/xen/xen-host-pci-device.h            |   2 +-
 hw/xen/xen_pt.h                         |   4 +-
 include/block/aio.h                     |   4 +-
 include/block/block.h                   |  69 +++++++++-------
 include/block/block_backup.h            |   2 +-
 include/block/block_int.h               |  19 +++--
 include/block/blockjob.h                |  11 +--
 include/block/blockjob_int.h            |   3 +-
 include/block/dirty-bitmap.h            |   8 +-
 include/block/nbd.h                     |  13 +--
 include/block/qapi.h                    |   7 +-
 include/block/snapshot.h                |  12 +--
 include/chardev/char-fd.h               |   2 +-
 include/chardev/char-fe.h               |   4 +-
 include/chardev/char-win.h              |   3 +-
 include/chardev/char.h                  |   9 ++-
 include/crypto/afsplit.h                |   4 +-
 include/crypto/block.h                  |  10 +--
 include/crypto/cipher.h                 |   8 +-
 include/crypto/hash.h                   |  12 +--
 include/crypto/init.h                   |   2 +-
 include/crypto/ivgen.h                  |   2 +-
 include/crypto/pbkdf.h                  |   4 +-
 include/crypto/random.h                 |   4 +-
 include/crypto/secret.h                 |   6 +-
 include/crypto/tlssession.h             |   6 +-
 include/exec/memory.h                   |  12 +--
 include/exec/ram_addr.h                 |  12 +--
 include/hw/acpi/acpi.h                  |   4 +-
 include/hw/acpi/cpu.h                   |   7 +-
 include/hw/acpi/cpu_hotplug.h           |   3 +-
 include/hw/acpi/ich9.h                  |   9 ++-
 include/hw/acpi/memory_hotplug.h        |   6 +-
 include/hw/acpi/pcihp.h                 |   4 +-
 include/hw/block/block.h                |   4 +-
 include/hw/boards.h                     |   2 +-
 include/hw/char/serial.h                |   2 +-
 include/hw/hotplug.h                    |   8 +-
 include/hw/i386/pc.h                    |   2 +-
 include/hw/isa/isa.h                    |   2 +-
 include/hw/loader.h                     |   3 +-
 include/hw/mem/pc-dimm.h                |  10 ++-
 include/hw/nmi.h                        |   2 +-
 include/hw/pci/msi.h                    |   2 +-
 include/hw/pci/msix.h                   |   4 +-
 include/hw/pci/pci.h                    |   2 +-
 include/hw/pci/pcie.h                   |   5 +-
 include/hw/pci/pcie_aer.h               |   2 +-
 include/hw/pci/shpc.h                   |   5 +-
 include/hw/ppc/pnv_xscom.h              |   2 +-
 include/hw/ppc/xics.h                   |   7 +-
 include/hw/qdev-core.h                  |   8 +-
 include/hw/qdev-properties.h            |  10 ++-
 include/hw/s390x/css.h                  |   4 +-
 include/hw/scsi/scsi.h                  |   3 +-
 include/hw/smbios/smbios.h              |   2 +-
 include/hw/usb.h                        |   8 +-
 include/hw/vfio/vfio-common.h           |   5 +-
 include/hw/virtio/vhost-scsi-common.h   |   2 +-
 include/hw/virtio/virtio-bus.h          |   2 +-
 include/hw/virtio/virtio-scsi.h         |   6 +-
 include/hw/xen/xen.h                    |   2 +-
 include/io/channel-command.h            |   2 +-
 include/io/channel-file.h               |   2 +-
 include/io/channel-socket.h             |  14 ++--
 include/io/channel-tls.h                |   4 +-
 include/io/channel-util.h               |   2 +-
 include/io/channel.h                    |  20 ++---
 include/io/dns-resolver.h               |   2 +-
 include/io/task.h                       |   2 +-
 include/migration/blocker.h             |   2 +-
 include/migration/failover.h            |   2 +-
 include/migration/migration.h           |   4 +-
 include/migration/snapshot.h            |   4 +-
 include/migration/vmstate.h             |   2 +-
 include/monitor/monitor.h               |   6 +-
 include/monitor/qdev.h                  |   4 +-
 include/net/net.h                       |   6 +-
 include/qapi/error.h                    |   2 +-
 include/qapi/qmp/json-parser.h          |   3 +-
 include/qapi/qmp/qdict.h                |   2 +-
 include/qapi/qmp/qjson.h                |   5 +-
 include/qapi/qobject-input-visitor.h    |   2 +-
 include/qapi/util.h                     |   2 +-
 include/qemu/base64.h                   |   2 +-
 include/qemu/config-file.h              |   4 +-
 include/qemu/log.h                      |   4 +-
 include/qemu/main-loop.h                |   2 +-
 include/qemu/option.h                   |  30 +++----
 include/qemu/sockets.h                  |  33 ++++----
 include/qemu/throttle.h                 |   2 +-
 include/qom/cpu.h                       |   4 +-
 include/qom/object.h                    |  89 ++++++++++----------
 include/qom/object_interfaces.h         |  12 +--
 include/qom/qom-qobject.h               |   4 +-
 include/sysemu/arch_init.h              |   8 +-
 include/sysemu/block-backend.h          |  19 +++--
 include/sysemu/cpus.h                   |   4 +-
 include/sysemu/cryptodev.h              |   8 +-
 include/sysemu/device_tree.h            |   6 +-
 include/sysemu/hostmem.h                |   2 +-
 include/sysemu/memory_mapping.h         |   2 +-
 include/sysemu/numa.h                   |   5 +-
 include/sysemu/qtest.h                  |   3 +-
 include/sysemu/sysemu.h                 |  10 +--
 include/sysemu/tpm_backend.h            |   2 +-
 include/ui/console.h                    |  14 ++--
 include/ui/input.h                      |   2 +-
 include/ui/qemu-spice.h                 |   2 +-
 migration/block.h                       |   2 +-
 migration/exec.h                        |   5 +-
 migration/fd.h                          |   4 +-
 migration/rdma.h                        |   5 +-
 migration/savevm.h                      |   2 +-
 migration/socket.h                      |   9 ++-
 migration/tls.h                         |   4 +-
 nbd/nbd-internal.h                      |   6 +-
 net/clients.h                           |  20 ++---
 net/tap_int.h                           |   5 +-
 qga/guest-agent-core.h                  |   4 +-
 qga/vss-win32.h                         |   2 +-
 replication.h                           |   8 +-
 target/i386/cpu.h                       |   2 +-
 target/ppc/cpu.h                        |   5 +-
 target/s390x/cpu.h                      |   7 +-
 target/s390x/cpu_models.h               |   9 ++-
 qapi/qapi-visit-core.c                  |  58 ++++++++------
 arch_init.c                             |   2 +-
 backends/cryptodev-builtin.c            |  15 ++--
 backends/cryptodev.c                    |  18 ++---
 backends/hostmem-file.c                 |  11 +--
 backends/hostmem-ram.c                  |   2 +-
 backends/hostmem.c                      |  39 +++++----
 backends/rng-egd.c                      |   7 +-
 backends/rng-random.c                   |   6 +-
 backends/rng.c                          |   7 +-
 backends/tpm.c                          |   7 +-
 balloon.c                               |   6 +-
 block.c                                 | 103 +++++++++++++-----------
 block/backup.c                          |   7 +-
 block/blkdebug.c                        |  17 ++--
 block/blkreplay.c                       |   2 +-
 block/blkverify.c                       |   4 +-
 block/block-backend.c                   |  22 ++---
 block/bochs.c                           |   4 +-
 block/cloop.c                           |   4 +-
 block/commit.c                          |   5 +-
 block/crypto.c                          |  20 ++---
 block/curl.c                            |   4 +-
 block/dirty-bitmap.c                    |   9 ++-
 block/dmg.c                             |   6 +-
 block/file-posix.c                      |  42 +++++-----
 block/file-win32.c                      |  18 +++--
 block/gluster.c                         |  15 ++--
 block/io.c                              |   2 +-
 block/iscsi.c                           |  26 +++---
 block/mirror.c                          |  12 +--
 block/nbd-client.c                      |   2 +-
 block/nbd.c                             |  18 +++--
 block/nfs.c                             |  25 +++---
 block/null.c                            |   4 +-
 block/parallels.c                       |   5 +-
 block/qapi.c                            |  13 +--
 block/qcow.c                            |   9 ++-
 block/qcow2-cluster.c                   |   2 +-
 block/qcow2-refcount.c                  |   8 +-
 block/qcow2-snapshot.c                  |   4 +-
 block/qcow2.c                           |  29 ++++---
 block/qed.c                             |  21 +++--
 block/quorum.c                          |   9 ++-
 block/raw-format.c                      |  14 ++--
 block/rbd.c                             |  23 +++---
 block/replication.c                     |  26 +++---
 block/sheepdog.c                        |  33 ++++----
 block/snapshot.c                        |  12 +--
 block/ssh.c                             |  31 ++++---
 block/stream.c                          |   6 +-
 block/vdi.c                             |   7 +-
 block/vhdx-log.c                        |   2 +-
 block/vhdx.c                            |  11 +--
 block/vmdk.c                            |  33 ++++----
 block/vpc.c                             |  11 +--
 block/vvfat.c                           |  12 +--
 block/vxhs.c                            |   6 +-
 block/write-threshold.c                 |   2 +-
 blockdev-nbd.c                          |  11 +--
 blockdev.c                              | 129 +++++++++++++++--------------
 blockjob.c                              |  18 +++--
 bootdevice.c                            |  12 +--
 chardev/baum.c                          |   2 +-
 chardev/char-console.c                  |   2 +-
 chardev/char-fd.c                       |   2 +-
 chardev/char-fe.c                       |   4 +-
 chardev/char-file.c                     |   4 +-
 chardev/char-mux.c                      |   4 +-
 chardev/char-null.c                     |   2 +-
 chardev/char-parallel.c                 |   8 +-
 chardev/char-pipe.c                     |   8 +-
 chardev/char-pty.c                      |   2 +-
 chardev/char-ringbuf.c                  |   8 +-
 chardev/char-serial.c                   |   6 +-
 chardev/char-socket.c                   |  10 +--
 chardev/char-stdio.c                    |   4 +-
 chardev/char-udp.c                      |   4 +-
 chardev/char-win-stdio.c                |   2 +-
 chardev/char-win.c                      |   3 +-
 chardev/char.c                          |  19 ++---
 chardev/msmouse.c                       |   2 +-
 chardev/spice.c                         |   8 +-
 chardev/wctablet.c                      |   2 +-
 cpus.c                                  |  12 +--
 crypto/afsplit.c                        |   6 +-
 crypto/block-luks.c                     |  22 ++---
 crypto/block-qcow.c                     |  10 +--
 crypto/block.c                          |  14 ++--
 crypto/cipher-builtin.c                 |  24 +++---
 crypto/cipher-gcrypt.c                  |   8 +-
 crypto/cipher-nettle.c                  |   8 +-
 crypto/cipher.c                         |   2 +-
 crypto/hash-gcrypt.c                    |   2 +-
 crypto/hash-glib.c                      |   2 +-
 crypto/hash-nettle.c                    |   2 +-
 crypto/hash.c                           |  10 +--
 crypto/hmac-gcrypt.c                    |   4 +-
 crypto/hmac-glib.c                      |   8 +-
 crypto/hmac-nettle.c                    |   4 +-
 crypto/hmac.c                           |   6 +-
 crypto/init.c                           |   2 +-
 crypto/ivgen-essiv.c                    |   4 +-
 crypto/ivgen-plain.c                    |   4 +-
 crypto/ivgen-plain64.c                  |   4 +-
 crypto/ivgen.c                          |   4 +-
 crypto/pbkdf-gcrypt.c                   |   2 +-
 crypto/pbkdf-nettle.c                   |   2 +-
 crypto/pbkdf-stub.c                     |   2 +-
 crypto/pbkdf.c                          |   4 +-
 crypto/random-gcrypt.c                  |   4 +-
 crypto/random-gnutls.c                  |   4 +-
 crypto/random-platform.c                |   4 +-
 crypto/secret.c                         |  38 ++++-----
 crypto/tlscreds.c                       |  20 ++---
 crypto/tlscredsanon.c                   |  12 +--
 crypto/tlscredsx509.c                   |  38 ++++-----
 crypto/tlssession.c                     |  18 ++---
 device_tree.c                           |   8 +-
 dump.c                                  |  52 ++++++------
 exec.c                                  |  20 ++---
 fsdev/qemu-fsdev-throttle.c             |   3 +-
 gdbstub.c                               |   2 +-
 hw/9pfs/9p.c                            |   4 +-
 hw/9pfs/virtio-9p-device.c              |   7 +-
 hw/acpi/acpi-stub.c                     |   2 +-
 hw/acpi/core.c                          |   6 +-
 hw/acpi/cpu.c                           |   7 +-
 hw/acpi/cpu_hotplug.c                   |   5 +-
 hw/acpi/ich9.c                          |  37 +++++----
 hw/acpi/memory_hotplug.c                |   8 +-
 hw/acpi/pcihp.c                         |   4 +-
 hw/acpi/piix4.c                         |  14 ++--
 hw/acpi/vmgenid.c                       |   7 +-
 hw/arm/allwinner-a10.c                  |   2 +-
 hw/arm/armv7m.c                         |   4 +-
 hw/arm/aspeed.c                         |   4 +-
 hw/arm/aspeed_soc.c                     |   2 +-
 hw/arm/bcm2835_peripherals.c            |   3 +-
 hw/arm/bcm2836.c                        |   2 +-
 hw/arm/digic.c                          |   2 +-
 hw/arm/fsl-imx25.c                      |   2 +-
 hw/arm/fsl-imx31.c                      |   2 +-
 hw/arm/fsl-imx6.c                       |   2 +-
 hw/arm/integratorcp.c                   |   2 +-
 hw/arm/musicpal.c                       |   4 +-
 hw/arm/pxa2xx.c                         |   2 +-
 hw/arm/pxa2xx_gpio.c                    |   2 +-
 hw/arm/spitz.c                          |   4 +-
 hw/arm/stm32f205_soc.c                  |   2 +-
 hw/arm/strongarm.c                      |   2 +-
 hw/arm/tosa.c                           |   2 +-
 hw/arm/vexpress.c                       |   5 +-
 hw/arm/virt.c                           |  21 ++---
 hw/arm/xlnx-zynqmp.c                    |   4 +-
 hw/arm/z2.c                             |   2 +-
 hw/audio/ac97.c                         |   2 +-
 hw/audio/adlib.c                        |   2 +-
 hw/audio/cs4231a.c                      |   2 +-
 hw/audio/es1370.c                       |   2 +-
 hw/audio/gus.c                          |   2 +-
 hw/audio/intel-hda.c                    |   6 +-
 hw/audio/marvell_88w8618.c              |   2 +-
 hw/audio/milkymist-ac97.c               |   2 +-
 hw/audio/pcspk.c                        |   2 +-
 hw/audio/pl041.c                        |   2 +-
 hw/audio/sb16.c                         |   2 +-
 hw/block/block.c                        |   4 +-
 hw/block/dataplane/virtio-blk.c         |   2 +-
 hw/block/fdc.c                          |  10 +--
 hw/block/m25p80.c                       |   2 +-
 hw/block/nand.c                         |   2 +-
 hw/block/pflash_cfi01.c                 |   2 +-
 hw/block/pflash_cfi02.c                 |   2 +-
 hw/block/virtio-blk.c                   |   7 +-
 hw/bt/hci-csr.c                         |   2 +-
 hw/char/bcm2835_aux.c                   |   2 +-
 hw/char/cadence_uart.c                  |   2 +-
 hw/char/debugcon.c                      |   4 +-
 hw/char/digic-uart.c                    |   2 +-
 hw/char/escc.c                          |   2 +-
 hw/char/etraxfs_ser.c                   |   2 +-
 hw/char/exynos4210_uart.c               |   2 +-
 hw/char/imx_serial.c                    |   2 +-
 hw/char/ipoctal232.c                    |   2 +-
 hw/char/lm32_juart.c                    |   2 +-
 hw/char/lm32_uart.c                     |   2 +-
 hw/char/mcf_uart.c                      |   2 +-
 hw/char/milkymist-uart.c                |   2 +-
 hw/char/parallel.c                      |   2 +-
 hw/char/pl011.c                         |   2 +-
 hw/char/serial-isa.c                    |   2 +-
 hw/char/serial-pci.c                    |   4 +-
 hw/char/serial.c                        |   2 +-
 hw/char/spapr_vty.c                     |   2 +-
 hw/char/stm32f2xx_usart.c               |   2 +-
 hw/char/terminal3270.c                  |   2 +-
 hw/char/virtio-console.c                |   4 +-
 hw/char/virtio-serial-bus.c             |  16 ++--
 hw/char/xilinx_uartlite.c               |   2 +-
 hw/core/bus.c                           |  11 +--
 hw/core/generic-loader.c                |   4 +-
 hw/core/hotplug.c                       |   8 +-
 hw/core/loader.c                        |   3 +-
 hw/core/machine.c                       |  87 +++++++++++---------
 hw/core/nmi.c                           |   2 +-
 hw/core/or-irq.c                        |   2 +-
 hw/core/platform-bus.c                  |   2 +-
 hw/core/qdev-properties-system.c        |  24 +++---
 hw/core/qdev-properties.c               |  63 ++++++++-------
 hw/core/qdev.c                          |  23 +++---
 hw/cpu/a15mpcore.c                      |   2 +-
 hw/cpu/a9mpcore.c                       |   2 +-
 hw/cpu/arm11mpcore.c                    |   2 +-
 hw/cpu/core.c                           |   8 +-
 hw/cpu/realview_mpcore.c                |   2 +-
 hw/display/ads7846.c                    |   2 +-
 hw/display/bcm2835_fb.c                 |   2 +-
 hw/display/cg3.c                        |   2 +-
 hw/display/cirrus_vga.c                 |   4 +-
 hw/display/exynos4210_fimd.c            |   2 +-
 hw/display/jazz_led.c                   |   2 +-
 hw/display/milkymist-tmu2.c             |   2 +-
 hw/display/milkymist-vgafb.c            |   2 +-
 hw/display/pl110.c                      |   2 +-
 hw/display/qxl.c                        |   6 +-
 hw/display/sm501.c                      |   4 +-
 hw/display/ssd0323.c                    |   2 +-
 hw/display/tcx.c                        |   2 +-
 hw/display/vga-isa.c                    |   2 +-
 hw/display/vga-pci.c                    |   9 ++-
 hw/display/virtio-gpu-pci.c             |   3 +-
 hw/display/virtio-gpu.c                 |   8 +-
 hw/display/virtio-vga.c                 |   3 +-
 hw/display/vmware_vga.c                 |   2 +-
 hw/display/xlnx_dp.c                    |   4 +-
 hw/dma/bcm2835_dma.c                    |   2 +-
 hw/dma/i82374.c                         |   2 +-
 hw/dma/i8257.c                          |   2 +-
 hw/dma/pl330.c                          |   2 +-
 hw/dma/pxa2xx_dma.c                     |   2 +-
 hw/dma/rc4030.c                         |   4 +-
 hw/dma/sparc32_dma.c                    |   2 +-
 hw/dma/xilinx_axidma.c                  |   2 +-
 hw/gpio/bcm2835_gpio.c                  |   2 +-
 hw/gpio/gpio_key.c                      |   2 +-
 hw/gpio/imx_gpio.c                      |   2 +-
 hw/gpio/omap_gpio.c                     |   4 +-
 hw/i2c/aspeed_i2c.c                     |   2 +-
 hw/i2c/imx_i2c.c                        |   2 +-
 hw/i2c/omap_i2c.c                       |   2 +-
 hw/i2c/smbus_ich9.c                     |   2 +-
 hw/i386/amd_iommu.c                     |   2 +-
 hw/i386/intel_iommu.c                   |   4 +-
 hw/i386/kvm/apic.c                      |   4 +-
 hw/i386/kvm/clock.c                     |   2 +-
 hw/i386/kvm/i8254.c                     |   2 +-
 hw/i386/kvm/i8259.c                     |   2 +-
 hw/i386/kvm/ioapic.c                    |   2 +-
 hw/i386/kvm/pci-assign.c                |  21 ++---
 hw/i386/kvmvapic.c                      |   2 +-
 hw/i386/pc.c                            |  73 +++++++++--------
 hw/i386/x86-iommu.c                     |   2 +-
 hw/i386/xen/xen-hvm.c                   |   4 +-
 hw/i386/xen/xen_apic.c                  |   2 +-
 hw/i386/xen/xen_platform.c              |   2 +-
 hw/i386/xen/xen_pvdevice.c              |   2 +-
 hw/ide/ahci.c                           |   2 +-
 hw/ide/cmd646.c                         |   2 +-
 hw/ide/core.c                           |   2 +-
 hw/ide/ich.c                            |   2 +-
 hw/ide/isa.c                            |   2 +-
 hw/ide/macio.c                          |   2 +-
 hw/ide/microdrive.c                     |   2 +-
 hw/ide/mmio.c                           |   2 +-
 hw/ide/piix.c                           |   2 +-
 hw/ide/qdev.c                           |   8 +-
 hw/ide/via.c                            |   2 +-
 hw/input/adb.c                          |   6 +-
 hw/input/pckbd.c                        |   2 +-
 hw/input/virtio-input-hid.c             |   5 +-
 hw/input/virtio-input-host.c            |   5 +-
 hw/input/virtio-input.c                 |   8 +-
 hw/input/vmmouse.c                      |   2 +-
 hw/intc/apic.c                          |   4 +-
 hw/intc/apic_common.c                   |   8 +-
 hw/intc/arm_gic.c                       |   2 +-
 hw/intc/arm_gic_common.c                |   2 +-
 hw/intc/arm_gic_kvm.c                   |   2 +-
 hw/intc/arm_gicv2m.c                    |   2 +-
 hw/intc/arm_gicv3.c                     |   2 +-
 hw/intc/arm_gicv3_common.c              |   2 +-
 hw/intc/arm_gicv3_its_kvm.c             |   2 +-
 hw/intc/arm_gicv3_kvm.c                 |   2 +-
 hw/intc/armv7m_nvic.c                   |   2 +-
 hw/intc/aspeed_vic.c                    |   2 +-
 hw/intc/exynos4210_gic.c                |   3 +-
 hw/intc/grlib_irqmp.c                   |   2 +-
 hw/intc/i8259.c                         |   2 +-
 hw/intc/i8259_common.c                  |   2 +-
 hw/intc/ioapic.c                        |   2 +-
 hw/intc/ioapic_common.c                 |   2 +-
 hw/intc/mips_gic.c                      |   2 +-
 hw/intc/nios2_iic.c                     |   2 +-
 hw/intc/omap_intc.c                     |   4 +-
 hw/intc/openpic.c                       |   2 +-
 hw/intc/openpic_kvm.c                   |   2 +-
 hw/intc/realview_gic.c                  |   2 +-
 hw/intc/s390_flic.c                     |   2 +-
 hw/intc/s390_flic_kvm.c                 |   2 +-
 hw/intc/xics.c                          |   8 +-
 hw/intc/xics_kvm.c                      |   8 +-
 hw/intc/xics_pnv.c                      |   2 +-
 hw/intc/xics_spapr.c                    |   5 +-
 hw/ipack/ipack.c                        |   4 +-
 hw/ipack/tpci200.c                      |   2 +-
 hw/ipmi/ipmi.c                          |   2 +-
 hw/ipmi/ipmi_bmc_extern.c               |   2 +-
 hw/ipmi/ipmi_bmc_sim.c                  |   2 +-
 hw/ipmi/isa_ipmi_bt.c                   |   4 +-
 hw/ipmi/isa_ipmi_kcs.c                  |   4 +-
 hw/isa/i82378.c                         |   2 +-
 hw/isa/isa-bus.c                        |   2 +-
 hw/isa/lpc_ich9.c                       |   4 +-
 hw/isa/pc87312.c                        |   2 +-
 hw/isa/piix4.c                          |   2 +-
 hw/isa/vt82c686.c                       |   8 +-
 hw/mem/nvdimm.c                         |   6 +-
 hw/mem/pc-dimm.c                        |  18 +++--
 hw/mips/cps.c                           |   2 +-
 hw/mips/gt64xxx_pci.c                   |   2 +-
 hw/misc/applesmc.c                      |   2 +-
 hw/misc/arm11scu.c                      |   2 +-
 hw/misc/arm_sysctl.c                    |   2 +-
 hw/misc/aspeed_scu.c                    |   2 +-
 hw/misc/aspeed_sdmc.c                   |   2 +-
 hw/misc/bcm2835_mbox.c                  |   2 +-
 hw/misc/bcm2835_property.c              |   2 +-
 hw/misc/debugexit.c                     |   2 +-
 hw/misc/eccmemctl.c                     |   2 +-
 hw/misc/edu.c                           |   4 +-
 hw/misc/hyperv_testdev.c                |   2 +-
 hw/misc/imx6_src.c                      |   2 +-
 hw/misc/ivshmem.c                       |  31 +++----
 hw/misc/macio/cuda.c                    |   2 +-
 hw/misc/macio/macio.c                   |   8 +-
 hw/misc/max111x.c                       |   4 +-
 hw/misc/mips_cmgcr.c                    |   2 +-
 hw/misc/mips_cpc.c                      |   2 +-
 hw/misc/mips_itu.c                      |   2 +-
 hw/misc/pc-testdev.c                    |   2 +-
 hw/misc/pci-testdev.c                   |   2 +-
 hw/misc/pvpanic.c                       |   2 +-
 hw/misc/sga.c                           |   2 +-
 hw/misc/tmp105.c                        |   4 +-
 hw/misc/unimp.c                         |   2 +-
 hw/misc/vmport.c                        |   2 +-
 hw/net/allwinner_emac.c                 |   2 +-
 hw/net/cadence_gem.c                    |   2 +-
 hw/net/dp8393x.c                        |   2 +-
 hw/net/e1000.c                          |   2 +-
 hw/net/e1000e.c                         |   2 +-
 hw/net/eepro100.c                       |   2 +-
 hw/net/fsl_etsec/etsec.c                |   2 +-
 hw/net/ftgmac100.c                      |   2 +-
 hw/net/imx_fec.c                        |   2 +-
 hw/net/mcf_fec.c                        |   2 +-
 hw/net/ne2000-isa.c                     |   6 +-
 hw/net/ne2000.c                         |   2 +-
 hw/net/pcnet-pci.c                      |   2 +-
 hw/net/rocker/qmp-norocker.c            |   9 ++-
 hw/net/rocker/rocker.c                  |   5 +-
 hw/net/rocker/rocker_of_dpa.c           |   2 +-
 hw/net/rtl8139.c                        |   2 +-
 hw/net/spapr_llan.c                     |   2 +-
 hw/net/virtio-net.c                     |   7 +-
 hw/net/vmxnet3.c                        |   4 +-
 hw/net/xilinx_axienet.c                 |   2 +-
 hw/net/xilinx_ethlite.c                 |   2 +-
 hw/nvram/fw_cfg.c                       |   6 +-
 hw/nvram/mac_nvram.c                    |   4 +-
 hw/nvram/spapr_nvram.c                  |   2 +-
 hw/pci-bridge/dec.c                     |   4 +-
 hw/pci-bridge/gen_pcie_root_port.c      |   2 +-
 hw/pci-bridge/ioh3420.c                 |   2 +-
 hw/pci-bridge/pci_bridge_dev.c          |   4 +-
 hw/pci-bridge/pci_expander_bridge.c     |  10 ++-
 hw/pci-bridge/pcie_root_port.c          |   2 +-
 hw/pci-host/apb.c                       |   4 +-
 hw/pci-host/bonito.c                    |   2 +-
 hw/pci-host/gpex.c                      |   2 +-
 hw/pci-host/grackle.c                   |   2 +-
 hw/pci-host/piix.c                      |  15 ++--
 hw/pci-host/ppce500.c                   |   2 +-
 hw/pci-host/prep.c                      |   4 +-
 hw/pci-host/q35.c                       |  14 ++--
 hw/pci-host/uninorth.c                  |   9 ++-
 hw/pci-host/versatile.c                 |   4 +-
 hw/pci-host/xilinx-pcie.c               |   2 +-
 hw/pci/msi.c                            |   2 +-
 hw/pci/msix.c                           |   4 +-
 hw/pci/pci-stub.c                       |   2 +-
 hw/pci/pci.c                            |  24 +++---
 hw/pci/pcie.c                           |   8 +-
 hw/pci/pcie_aer.c                       |   2 +-
 hw/pci/shpc.c                           |   8 +-
 hw/ppc/e500.c                           |   3 +-
 hw/ppc/mac_newworld.c                   |   2 +-
 hw/ppc/mac_oldworld.c                   |   2 +-
 hw/ppc/pnv.c                            |  10 +--
 hw/ppc/pnv_core.c                       |   7 +-
 hw/ppc/pnv_lpc.c                        |   2 +-
 hw/ppc/pnv_occ.c                        |   2 +-
 hw/ppc/pnv_psi.c                        |   2 +-
 hw/ppc/pnv_xscom.c                      |   2 +-
 hw/ppc/prep.c                           |   2 +-
 hw/ppc/prep_systemio.c                  |   2 +-
 hw/ppc/rs6000_mc.c                      |   2 +-
 hw/ppc/spapr.c                          |  61 ++++++++------
 hw/ppc/spapr_cpu_core.c                 |   9 ++-
 hw/ppc/spapr_drc.c                      |  15 ++--
 hw/ppc/spapr_hcall.c                    |   2 +-
 hw/ppc/spapr_iommu.c                    |   2 +-
 hw/ppc/spapr_pci.c                      |  12 +--
 hw/ppc/spapr_rng.c                      |   2 +-
 hw/ppc/spapr_rtc.c                      |   5 +-
 hw/ppc/spapr_vio.c                      |   2 +-
 hw/s390x/3270-ccw.c                     |   2 +-
 hw/s390x/ccw-device.c                   |   2 +-
 hw/s390x/css-bridge.c                   |   2 +-
 hw/s390x/css.c                          |  10 +--
 hw/s390x/event-facility.c               |   6 +-
 hw/s390x/ipl.c                          |   4 +-
 hw/s390x/s390-ccw.c                     |   7 +-
 hw/s390x/s390-pci-bus.c                 |  12 +--
 hw/s390x/s390-skeys.c                   |   9 ++-
 hw/s390x/s390-virtio-ccw.c              |  25 +++---
 hw/s390x/s390-virtio.c                  |   2 +-
 hw/s390x/sclp.c                         |   2 +-
 hw/s390x/virtio-ccw.c                   |  41 ++++++----
 hw/scsi/esp-pci.c                       |   4 +-
 hw/scsi/esp.c                           |   2 +-
 hw/scsi/lsi53c895a.c                    |   4 +-
 hw/scsi/megasas.c                       |   2 +-
 hw/scsi/mptsas.c                        |   2 +-
 hw/scsi/scsi-bus.c                      |   9 ++-
 hw/scsi/scsi-disk.c                     |  13 +--
 hw/scsi/scsi-generic.c                  |   2 +-
 hw/scsi/spapr_vscsi.c                   |   2 +-
 hw/scsi/vhost-scsi-common.c             |   2 +-
 hw/scsi/vhost-scsi.c                    |   4 +-
 hw/scsi/virtio-scsi-dataplane.c         |   2 +-
 hw/scsi/virtio-scsi.c                   |  16 ++--
 hw/scsi/vmw_pvscsi.c                    |   8 +-
 hw/sd/pl181.c                           |   2 +-
 hw/sd/sd.c                              |   4 +-
 hw/sd/sdhci.c                           |   4 +-
 hw/sd/ssi-sd.c                          |   2 +-
 hw/sh4/sh_pci.c                         |   2 +-
 hw/smbios/smbios-stub.c                 |   2 +-
 hw/smbios/smbios.c                      |   2 +-
 hw/sparc/sun4m.c                        |   4 +-
 hw/sparc64/sun4u.c                      |   6 +-
 hw/ssi/aspeed_smc.c                     |   2 +-
 hw/ssi/imx_spi.c                        |   2 +-
 hw/ssi/ssi.c                            |   2 +-
 hw/ssi/xilinx_spips.c                   |   4 +-
 hw/timer/a9gtimer.c                     |   2 +-
 hw/timer/altera_timer.c                 |   2 +-
 hw/timer/arm_mptimer.c                  |   2 +-
 hw/timer/arm_timer.c                    |   2 +-
 hw/timer/aspeed_timer.c                 |   2 +-
 hw/timer/hpet.c                         |   2 +-
 hw/timer/i8254.c                        |   2 +-
 hw/timer/i8254_common.c                 |   2 +-
 hw/timer/imx_epit.c                     |   2 +-
 hw/timer/imx_gpt.c                      |   2 +-
 hw/timer/lm32_timer.c                   |   2 +-
 hw/timer/m48t59-isa.c                   |   2 +-
 hw/timer/m48t59.c                       |   4 +-
 hw/timer/mc146818rtc.c                  |   7 +-
 hw/timer/milkymist-sysctl.c             |   2 +-
 hw/timer/pxa2xx_timer.c                 |   2 +-
 hw/timer/xilinx_timer.c                 |   2 +-
 hw/tpm/tpm_tis.c                        |   2 +-
 hw/usb/bus.c                            |  24 +++---
 hw/usb/dev-audio.c                      |   4 +-
 hw/usb/dev-bluetooth.c                  |   4 +-
 hw/usb/dev-hid.c                        |  10 +--
 hw/usb/dev-hub.c                        |   4 +-
 hw/usb/dev-mtp.c                        |   2 +-
 hw/usb/dev-network.c                    |   4 +-
 hw/usb/dev-serial.c                     |   2 +-
 hw/usb/dev-smartcard-reader.c           |   4 +-
 hw/usb/dev-storage.c                    |  12 +--
 hw/usb/dev-uas.c                        |   4 +-
 hw/usb/dev-wacom.c                      |   4 +-
 hw/usb/hcd-ehci-pci.c                   |   2 +-
 hw/usb/hcd-ehci-sysbus.c                |   2 +-
 hw/usb/hcd-ehci.c                       |   6 +-
 hw/usb/hcd-ohci.c                       |   6 +-
 hw/usb/hcd-uhci.c                       |   4 +-
 hw/usb/hcd-xhci.c                       |   2 +-
 hw/usb/host-libusb.c                    |   4 +-
 hw/usb/redirect.c                       |   4 +-
 hw/vfio/amd-xgbe.c                      |   2 +-
 hw/vfio/calxeda-xgmac.c                 |   2 +-
 hw/vfio/ccw.c                           |  12 +--
 hw/vfio/common.c                        |   7 +-
 hw/vfio/pci-quirks.c                    |   6 +-
 hw/vfio/pci.c                           |  22 ++---
 hw/vfio/platform.c                      |   9 ++-
 hw/virtio/vhost-vsock.c                 |   8 +-
 hw/virtio/virtio-balloon.c              |  14 ++--
 hw/virtio/virtio-bus.c                  |   2 +-
 hw/virtio/virtio-crypto-pci.c           |   3 +-
 hw/virtio/virtio-crypto.c               |  10 ++-
 hw/virtio/virtio-mmio.c                 |   2 +-
 hw/virtio/virtio-pci.c                  |  38 +++++----
 hw/virtio/virtio-rng.c                  |   8 +-
 hw/virtio/virtio.c                      |   4 +-
 hw/watchdog/wdt_aspeed.c                |   2 +-
 hw/watchdog/wdt_diag288.c               |   4 +-
 hw/watchdog/wdt_i6300esb.c              |   2 +-
 hw/watchdog/wdt_ib700.c                 |   2 +-
 hw/xen/xen-host-pci-device.c            |  12 +--
 hw/xen/xen_pt.c                         |   2 +-
 hw/xen/xen_pt_config_init.c             |   4 +-
 hw/xen/xen_pt_graphics.c                |   2 +-
 io/channel-buffer.c                     |  10 +--
 io/channel-command.c                    |  14 ++--
 io/channel-file.c                       |  12 +--
 io/channel-socket.c                     |  30 +++----
 io/channel-tls.c                        |  14 ++--
 io/channel-util.c                       |   2 +-
 io/channel-websock.c                    |  26 +++---
 io/channel.c                            |  20 ++---
 io/dns-resolver.c                       |   6 +-
 io/task.c                               |   2 +-
 iothread.c                              |   8 +-
 memory.c                                |  21 ++---
 memory_mapping.c                        |   2 +-
 migration/colo-failover.c               |   4 +-
 migration/colo.c                        |  18 ++---
 migration/exec.c                        |   5 +-
 migration/fd.c                          |   5 +-
 migration/migration.c                   |  37 ++++-----
 migration/rdma.c                        |  27 ++++---
 migration/savevm.c                      |  14 ++--
 migration/socket.c                      |  16 ++--
 migration/tls.c                         |   6 +-
 monitor.c                               |  43 +++++-----
 nbd/client.c                            |  25 +++---
 nbd/common.c                            |   2 +-
 nbd/server.c                            |   2 +-
 net/colo-compare.c                      |  19 +++--
 net/dump.c                              |  15 ++--
 net/filter-buffer.c                     |   9 ++-
 net/filter-mirror.c                     |  16 ++--
 net/filter-rewriter.c                   |   2 +-
 net/filter.c                            |  18 +++--
 net/hub.c                               |   2 +-
 net/l2tpv3.c                            |   2 +-
 net/net.c                               |  21 ++---
 net/netmap.c                            |   5 +-
 net/slirp.c                             |   2 +-
 net/socket.c                            |   2 +-
 net/tap-bsd.c                           |  10 ++-
 net/tap-linux.c                         |   5 +-
 net/tap-solaris.c                       |   7 +-
 net/tap-stub.c                          |   5 +-
 net/tap-win32.c                         |   2 +-
 net/tap.c                               |  15 ++--
 net/vde.c                               |   2 +-
 net/vhost-user.c                        |   7 +-
 numa.c                                  |  13 +--
 qapi/opts-visitor.c                     |  26 +++---
 qapi/qapi-clone-visitor.c               |  20 ++---
 qapi/qapi-dealloc-visitor.c             |  22 ++---
 qapi/qapi-util.c                        |   2 +-
 qapi/qmp-dispatch.c                     |   5 +-
 qapi/qobject-input-visitor.c            |  48 ++++++-----
 qapi/qobject-output-visitor.c           |  20 ++---
 qapi/string-input-visitor.c             |  19 ++---
 qapi/string-output-visitor.c            |  14 ++--
 qdev-monitor.c                          |  23 +++---
 qemu-img.c                              |   4 +-
 qemu-nbd.c                              |   3 +-
 qga/commands-posix.c                    | 138 +++++++++++++++++---------------
 qga/commands-win32.c                    |  83 ++++++++++---------
 qga/commands.c                          |  16 ++--
 qga/main.c                              |   2 +-
 qga/vss-win32.c                         |   2 +-
 qmp.c                                   |  76 +++++++++---------
 qobject/json-parser.c                   |   3 +-
 qobject/qdict.c                         |   4 +-
 qobject/qjson.c                         |   5 +-
 qom/cpu.c                               |  10 +--
 qom/object.c                            | 135 ++++++++++++++++---------------
 qom/object_interfaces.c                 |  13 +--
 qom/qom-qobject.c                       |   4 +-
 qtest.c                                 |   3 +-
 replication.c                           |   8 +-
 stubs/arch-query-cpu-def.c              |   2 +-
 stubs/arch-query-cpu-model-baseline.c   |   2 +-
 stubs/arch-query-cpu-model-comparison.c |   2 +-
 stubs/arch-query-cpu-model-expansion.c  |   2 +-
 stubs/migr-blocker.c                    |   2 +-
 stubs/monitor.c                         |   2 +-
 stubs/uuid.c                            |   2 +-
 stubs/vmgenid.c                         |   2 +-
 stubs/vmstate.c                         |   2 +-
 stubs/xen-hvm.c                         |   4 +-
 target/alpha/cpu.c                      |   2 +-
 target/arm/cpu.c                        |   2 +-
 target/arm/cpu64.c                      |   5 +-
 target/arm/helper.c                     |   2 +-
 target/arm/monitor.c                    |   2 +-
 target/cris/cpu.c                       |   2 +-
 target/hppa/cpu.c                       |   2 +-
 target/i386/arch_memory_mapping.c       |   2 +-
 target/i386/cpu.c                       |  66 ++++++++-------
 target/lm32/cpu.c                       |   2 +-
 target/m68k/cpu.c                       |   2 +-
 target/microblaze/cpu.c                 |   2 +-
 target/mips/cpu.c                       |   2 +-
 target/moxie/cpu.c                      |   2 +-
 target/nios2/cpu.c                      |   2 +-
 target/openrisc/cpu.c                   |   2 +-
 target/ppc/compat.c                     |   5 +-
 target/ppc/translate_init.c             |  12 +--
 target/s390x/cpu.c                      |   6 +-
 target/s390x/cpu_models.c               |  32 ++++----
 target/s390x/helper.c                   |   5 +-
 target/s390x/kvm.c                      |   5 +-
 target/sh4/cpu.c                        |   2 +-
 target/sparc/cpu.c                      |   6 +-
 target/tilegx/cpu.c                     |   2 +-
 target/tricore/cpu.c                    |   2 +-
 target/unicore32/cpu.c                  |   2 +-
 target/xtensa/cpu.c                     |   2 +-
 tests/check-qom-proplist.c              |  12 +--
 tests/test-crypto-block.c               |   6 +-
 tests/test-crypto-tlscredsx509.c        |   2 +-
 tests/test-crypto-tlssession.c          |   2 +-
 tests/test-io-channel-tls.c             |   2 +-
 tests/test-logging.c                    |   3 +-
 tests/test-qapi-util.c                  |  10 +--
 tests/test-qdev-global-props.c          |   4 +-
 tests/test-qemu-opts.c                  |   2 +-
 tests/test-qmp-commands.c               |  17 ++--
 tests/test-qmp-event.c                  |   3 +-
 tests/test-visitor-serialization.c      |  25 +++---
 tpm.c                                   |   8 +-
 trace/qmp.c                             |   8 +-
 ui/console.c                            |  12 +--
 ui/gtk.c                                |   2 +-
 ui/input-legacy.c                       |   2 +-
 ui/input-linux.c                        |  14 ++--
 ui/input.c                              |   6 +-
 ui/spice-core.c                         |   4 +-
 ui/vnc-auth-sasl.c                      |   2 +-
 ui/vnc.c                                |  30 +++----
 util/aio-posix.c                        |   3 +-
 util/aio-win32.c                        |   3 +-
 util/async.c                            |   2 +-
 util/base64.c                           |   2 +-
 util/error.c                            |   2 +-
 util/keyval.c                           |   9 ++-
 util/log.c                              |   4 +-
 util/main-loop.c                        |   2 +-
 util/qemu-config.c                      |  15 ++--
 util/qemu-option.c                      |  42 +++++-----
 util/qemu-sockets.c                     |  76 ++++++++++--------
 util/throttle.c                         |   2 +-
 vl.c                                    |  44 +++++-----
 815 files changed, 3406 insertions(+), 2952 deletions(-)

diff --git a/include/qapi/visitor.h b/include/qapi/visitor.h
index 4721c39ae3..55ad2cb5b9 100644
--- a/include/qapi/visitor.h
+++ b/include/qapi/visitor.h
@@ -296,7 +296,7 @@ void visit_free(Visitor *v);
  * used for QAPI unions, and maps to JSON objects?
  */
 void visit_start_struct(Visitor *v, const char *name, void **obj,
-                        size_t size, Error **errp);
+                        size_t size, Error *errp[static 1]);
 
 /*
  * Prepare for completing an object visit.
@@ -309,7 +309,7 @@ void visit_start_struct(Visitor *v, const char *name, void 
**obj,
  * last chance to report errors.  May be skipped on a cleanup path,
  * where there is no need to check for further errors.
  */
-void visit_check_struct(Visitor *v, Error **errp);
+void visit_check_struct(Visitor *v, Error *errp[static 1]);
 
 /*
  * Complete an object visit started earlier.
@@ -353,7 +353,7 @@ void visit_end_struct(Visitor *v, void **obj);
  * examples above.
  */
 void visit_start_list(Visitor *v, const char *name, GenericList **list,
-                      size_t size, Error **errp);
+                      size_t size, Error *errp[static 1]);
 
 /*
  * Iterate over a GenericList during a non-virtual list visit.
@@ -382,7 +382,7 @@ GenericList *visit_next_list(Visitor *v, GenericList *tail, 
size_t size);
  * last chance to report errors.  May be skipped on a cleanup path,
  * where there is no need to check for further errors.
  */
-void visit_check_list(Visitor *v, Error **errp);
+void visit_check_list(Visitor *v, Error *errp[static 1]);
 
 /*
  * Complete a list visit started earlier.
@@ -418,7 +418,7 @@ void visit_end_list(Visitor *v, void **list);
  */
 void visit_start_alternate(Visitor *v, const char *name,
                            GenericAlternate **obj, size_t size,
-                           bool promote_int, Error **errp);
+                           bool promote_int, Error *errp[static 1]);
 
 /*
  * Finish visiting an alternate type.
@@ -471,7 +471,7 @@ bool visit_optional(Visitor *v, const char *name, bool 
*present);
  * that visit_type_str() must have no unwelcome side effects.
  */
 void visit_type_enum(Visitor *v, const char *name, int *obj,
-                     const char *const strings[], Error **errp);
+                     const char *const strings[], Error *errp[static 1]);
 
 /*
  * Check if visitor is an input visitor.
@@ -489,28 +489,29 @@ bool visit_is_input(Visitor *v);
  * @obj must be non-NULL.  Input visitors set address@hidden to the value;
  * other visitors will leave address@hidden unchanged.
  */
-void visit_type_int(Visitor *v, const char *name, int64_t *obj, Error **errp);
+void visit_type_int(Visitor *v, const char *name, int64_t *obj,
+                   Error *errp[static 1]);
 
 /*
  * Visit a uint8_t value.
  * Like visit_type_int(), except clamps the value to uint8_t range.
  */
 void visit_type_uint8(Visitor *v, const char *name, uint8_t *obj,
-                      Error **errp);
+                      Error *errp[static 1]);
 
 /*
  * Visit a uint16_t value.
  * Like visit_type_int(), except clamps the value to uint16_t range.
  */
 void visit_type_uint16(Visitor *v, const char *name, uint16_t *obj,
-                       Error **errp);
+                       Error *errp[static 1]);
 
 /*
  * Visit a uint32_t value.
  * Like visit_type_int(), except clamps the value to uint32_t range.
  */
 void visit_type_uint32(Visitor *v, const char *name, uint32_t *obj,
-                       Error **errp);
+                       Error *errp[static 1]);
 
 /*
  * Visit a uint64_t value.
@@ -518,34 +519,35 @@ void visit_type_uint32(Visitor *v, const char *name, 
uint32_t *obj,
  * that is, ensures it is unsigned.
  */
 void visit_type_uint64(Visitor *v, const char *name, uint64_t *obj,
-                       Error **errp);
+                       Error *errp[static 1]);
 
 /*
  * Visit an int8_t value.
  * Like visit_type_int(), except clamps the value to int8_t range.
  */
-void visit_type_int8(Visitor *v, const char *name, int8_t *obj, Error **errp);
+void visit_type_int8(Visitor *v, const char *name, int8_t *obj,
+                    Error *errp[static 1]);
 
 /*
  * Visit an int16_t value.
  * Like visit_type_int(), except clamps the value to int16_t range.
  */
 void visit_type_int16(Visitor *v, const char *name, int16_t *obj,
-                      Error **errp);
+                      Error *errp[static 1]);
 
 /*
  * Visit an int32_t value.
  * Like visit_type_int(), except clamps the value to int32_t range.
  */
 void visit_type_int32(Visitor *v, const char *name, int32_t *obj,
-                      Error **errp);
+                      Error *errp[static 1]);
 
 /*
  * Visit an int64_t value.
  * Identical to visit_type_int().
  */
 void visit_type_int64(Visitor *v, const char *name, int64_t *obj,
-                      Error **errp);
+                      Error *errp[static 1]);
 
 /*
  * Visit a uint64_t value.
@@ -554,7 +556,7 @@ void visit_type_int64(Visitor *v, const char *name, int64_t 
*obj,
  * values.
  */
 void visit_type_size(Visitor *v, const char *name, uint64_t *obj,
-                     Error **errp);
+                     Error *errp[static 1]);
 
 /*
  * Visit a boolean value.
@@ -565,7 +567,8 @@ void visit_type_size(Visitor *v, const char *name, uint64_t 
*obj,
  * @obj must be non-NULL.  Input visitors set address@hidden to the value;
  * other visitors will leave address@hidden unchanged.
  */
-void visit_type_bool(Visitor *v, const char *name, bool *obj, Error **errp);
+void visit_type_bool(Visitor *v, const char *name, bool *obj,
+                    Error *errp[static 1]);
 
 /*
  * Visit a string value.
@@ -583,7 +586,8 @@ void visit_type_bool(Visitor *v, const char *name, bool 
*obj, Error **errp);
  *
  * FIXME: Callers that try to output NULL *obj should not be allowed.
  */
-void visit_type_str(Visitor *v, const char *name, char **obj, Error **errp);
+void visit_type_str(Visitor *v, const char *name, char **obj,
+                   Error *errp[static 1]);
 
 /*
  * Visit a number (i.e. double) value.
@@ -596,7 +600,7 @@ void visit_type_str(Visitor *v, const char *name, char 
**obj, Error **errp);
  * document if infinity or NaN are not permitted.
  */
 void visit_type_number(Visitor *v, const char *name, double *obj,
-                       Error **errp);
+                       Error *errp[static 1]);
 
 /*
  * Visit an arbitrary value.
@@ -612,7 +616,8 @@ void visit_type_number(Visitor *v, const char *name, double 
*obj,
  * E.g. the visitor returned by qobject_input_visitor_new_keyval()
  * can't create numbers or booleans, only strings.
  */
-void visit_type_any(Visitor *v, const char *name, QObject **obj, Error **errp);
+void visit_type_any(Visitor *v, const char *name, QObject **obj,
+                   Error *errp[static 1]);
 
 /*
  * Visit a JSON null value.
@@ -624,6 +629,6 @@ void visit_type_any(Visitor *v, const char *name, QObject 
**obj, Error **errp);
  * needed; rather, this is a witness that an explicit null value is
  * expected rather than any other type.
  */
-void visit_type_null(Visitor *v, const char *name, Error **errp);
+void visit_type_null(Visitor *v, const char *name, Error *errp[static 1]);
 
 #endif
diff --git a/block/nbd-client.h b/block/nbd-client.h
index 891ba44a20..4d663017b3 100644
--- a/block/nbd-client.h
+++ b/block/nbd-client.h
@@ -39,7 +39,7 @@ int nbd_client_init(BlockDriverState *bs,
                     const char *export_name,
                     QCryptoTLSCreds *tlscreds,
                     const char *hostname,
-                    Error **errp);
+                    Error *errp[static 1]);
 void nbd_client_close(BlockDriverState *bs);
 
 int nbd_client_co_pdiscard(BlockDriverState *bs, int64_t offset, int count);
diff --git a/block/qcow2.h b/block/qcow2.h
index 1801dc30dc..64a16db406 100644
--- a/block/qcow2.h
+++ b/block/qcow2.h
@@ -530,7 +530,7 @@ int qcow2_pre_write_overlap_check(BlockDriverState *bs, int 
ign, int64_t offset,
 
 int qcow2_change_refcount_order(BlockDriverState *bs, int refcount_order,
                                 BlockDriverAmendStatusCB *status_cb,
-                                void *cb_opaque, Error **errp);
+                                void *cb_opaque, Error *errp[static 1]);
 
 /* qcow2-cluster.c functions */
 int qcow2_grow_l1_table(BlockDriverState *bs, uint64_t min_size,
@@ -539,7 +539,7 @@ int qcow2_write_l1_entry(BlockDriverState *bs, int 
l1_index);
 int qcow2_decompress_cluster(BlockDriverState *bs, uint64_t cluster_offset);
 int qcow2_encrypt_sectors(BDRVQcow2State *s, int64_t sector_num,
                           uint8_t *out_buf, const uint8_t *in_buf,
-                          int nb_sectors, bool enc, Error **errp);
+                          int nb_sectors, bool enc, Error *errp[static 1]);
 
 int qcow2_get_cluster_offset(BlockDriverState *bs, uint64_t offset,
                              unsigned int *bytes, uint64_t *cluster_offset);
@@ -567,12 +567,12 @@ int qcow2_snapshot_goto(BlockDriverState *bs, const char 
*snapshot_id);
 int qcow2_snapshot_delete(BlockDriverState *bs,
                           const char *snapshot_id,
                           const char *name,
-                          Error **errp);
+                          Error *errp[static 1]);
 int qcow2_snapshot_list(BlockDriverState *bs, QEMUSnapshotInfo **psn_tab);
 int qcow2_snapshot_load_tmp(BlockDriverState *bs,
                             const char *snapshot_id,
                             const char *name,
-                            Error **errp);
+                            Error *errp[static 1]);
 
 void qcow2_free_snapshots(BlockDriverState *bs);
 int qcow2_read_snapshots(BlockDriverState *bs);
diff --git a/block/vhdx.h b/block/vhdx.h
index 7003ab7a79..ad7e772043 100644
--- a/block/vhdx.h
+++ b/block/vhdx.h
@@ -413,7 +413,7 @@ uint32_t vhdx_checksum_calc(uint32_t crc, uint8_t *buf, 
size_t size,
 bool vhdx_checksum_is_valid(uint8_t *buf, size_t size, int crc_offset);
 
 int vhdx_parse_log(BlockDriverState *bs, BDRVVHDXState *s, bool *flushed,
-                   Error **errp);
+                   Error *errp[static 1]);
 
 int vhdx_log_write_and_flush(BlockDriverState *bs, BDRVVHDXState *s,
                              void *data, uint32_t length, uint64_t offset);
diff --git a/crypto/blockpriv.h b/crypto/blockpriv.h
index 68f0f06704..54d2af2f20 100644
--- a/crypto/blockpriv.h
+++ b/crypto/blockpriv.h
@@ -82,7 +82,7 @@ int qcrypto_block_decrypt_helper(QCryptoCipher *cipher,
                                  uint64_t startsector,
                                  uint8_t *buf,
                                  size_t len,
-                                 Error **errp);
+                                 Error *errp[static 1]);
 
 int qcrypto_block_encrypt_helper(QCryptoCipher *cipher,
                                  size_t niv,
@@ -91,6 +91,6 @@ int qcrypto_block_encrypt_helper(QCryptoCipher *cipher,
                                  uint64_t startsector,
                                  uint8_t *buf,
                                  size_t len,
-                                 Error **errp);
+                                 Error *errp[static 1]);
 
 #endif /* QCRYPTO_BLOCKPRIV_H */
diff --git a/crypto/hmac.h b/crypto/hmac.h
index 0d3acd728a..e2cccfd9be 100644
--- a/crypto/hmac.h
+++ b/crypto/hmac.h
@@ -53,7 +53,7 @@ bool qcrypto_hmac_supports(QCryptoHashAlgorithm alg);
  */
 QCryptoHmac *qcrypto_hmac_new(QCryptoHashAlgorithm alg,
                               const uint8_t *key, size_t nkey,
-                              Error **errp);
+                              Error *errp[static 1]);
 
 /**
  * qcrypto_hmac_free:
@@ -88,7 +88,7 @@ int qcrypto_hmac_bytesv(QCryptoHmac *hmac,
                         size_t niov,
                         uint8_t **result,
                         size_t *resultlen,
-                        Error **errp);
+                        Error *errp[static 1]);
 
 /**
  * qcrypto_hmac_bytes:
@@ -114,7 +114,7 @@ int qcrypto_hmac_bytes(QCryptoHmac *hmac,
                        size_t len,
                        uint8_t **result,
                        size_t *resultlen,
-                       Error **errp);
+                       Error *errp[static 1]);
 
 /**
  * qcrypto_hmac_digestv:
@@ -138,7 +138,7 @@ int qcrypto_hmac_digestv(QCryptoHmac *hmac,
                          const struct iovec *iov,
                          size_t niov,
                          char **digest,
-                         Error **errp);
+                         Error *errp[static 1]);
 
 /**
  * qcrypto_hmac_digest:
@@ -161,6 +161,6 @@ int qcrypto_hmac_digest(QCryptoHmac *hmac,
                         const char *buf,
                         size_t len,
                         char **digest,
-                        Error **errp);
+                        Error *errp[static 1]);
 
 #endif
diff --git a/crypto/tlscredspriv.h b/crypto/tlscredspriv.h
index 13e9b6c0b2..cb11ff8dcb 100644
--- a/crypto/tlscredspriv.h
+++ b/crypto/tlscredspriv.h
@@ -29,12 +29,12 @@ int qcrypto_tls_creds_get_path(QCryptoTLSCreds *creds,
                                const char *filename,
                                bool required,
                                char **cred,
-                               Error **errp);
+                               Error *errp[static 1]);
 
 int qcrypto_tls_creds_get_dh_params_file(QCryptoTLSCreds *creds,
                                          const char *filename,
                                          gnutls_dh_params_t *dh_params,
-                                         Error **errp);
+                                         Error *errp[static 1]);
 
 #endif
 
diff --git a/hw/9pfs/9p.h b/hw/9pfs/9p.h
index c886ba78d2..9e2708e047 100644
--- a/hw/9pfs/9p.h
+++ b/hw/9pfs/9p.h
@@ -340,8 +340,8 @@ void v9fs_path_sprintf(V9fsPath *path, const char *fmt, 
...);
 void v9fs_path_copy(V9fsPath *lhs, V9fsPath *rhs);
 int v9fs_name_to_path(V9fsState *s, V9fsPath *dirpath,
                       const char *name, V9fsPath *path);
-int v9fs_device_realize_common(V9fsState *s, Error **errp);
-void v9fs_device_unrealize_common(V9fsState *s, Error **errp);
+int v9fs_device_realize_common(V9fsState *s, Error *errp[static 1]);
+void v9fs_device_unrealize_common(V9fsState *s, Error *errp[static 1]);
 
 ssize_t pdu_marshal(V9fsPDU *pdu, size_t offset, const char *fmt, ...);
 ssize_t pdu_unmarshal(V9fsPDU *pdu, size_t offset, const char *fmt, ...);
diff --git a/hw/block/dataplane/virtio-blk.h b/hw/block/dataplane/virtio-blk.h
index db3f47b173..b740749d7a 100644
--- a/hw/block/dataplane/virtio-blk.h
+++ b/hw/block/dataplane/virtio-blk.h
@@ -21,7 +21,7 @@ typedef struct VirtIOBlockDataPlane VirtIOBlockDataPlane;
 
 void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *conf,
                                   VirtIOBlockDataPlane **dataplane,
-                                  Error **errp);
+                                  Error *errp[static 1]);
 void virtio_blk_data_plane_destroy(VirtIOBlockDataPlane *s);
 void virtio_blk_data_plane_notify(VirtIOBlockDataPlane *s, VirtQueue *vq);
 
diff --git a/hw/s390x/s390-virtio.h b/hw/s390x/s390-virtio.h
index f2377a3e0e..9bbf9affb9 100644
--- a/hw/s390x/s390-virtio.h
+++ b/hw/s390x/s390-virtio.h
@@ -27,7 +27,7 @@ void s390_init_ipl_dev(const char *kernel_filename,
                        const char *netboot_fw,
                        bool enforce_bios);
 void s390_create_virtio_net(BusState *bus, const char *name);
-void s390_nmi(NMIState *n, int cpu_index, Error **errp);
+void s390_nmi(NMIState *n, int cpu_index, Error *errp[static 1]);
 void s390_machine_reset(void);
 void s390_memory_init(ram_addr_t mem_size);
 #endif
diff --git a/hw/timer/m48t59-internal.h b/hw/timer/m48t59-internal.h
index 32ae957805..640bf1f5d5 100644
--- a/hw/timer/m48t59-internal.h
+++ b/hw/timer/m48t59-internal.h
@@ -70,7 +70,7 @@ typedef struct M48t59State {
 uint32_t m48t59_read(M48t59State *NVRAM, uint32_t addr);
 void m48t59_write(M48t59State *NVRAM, uint32_t addr, uint32_t val);
 void m48t59_reset_common(M48t59State *NVRAM);
-void m48t59_realize_common(M48t59State *s, Error **errp);
+void m48t59_realize_common(M48t59State *s, Error *errp[static 1]);
 
 static inline void m48t59_toggle_lock(M48t59State *NVRAM, int lock)
 {
diff --git a/hw/usb/hcd-ehci.h b/hw/usb/hcd-ehci.h
index 938d8aa284..ca7df4cc33 100644
--- a/hw/usb/hcd-ehci.h
+++ b/hw/usb/hcd-ehci.h
@@ -324,8 +324,8 @@ extern const VMStateDescription vmstate_ehci;
 
 void usb_ehci_init(EHCIState *s, DeviceState *dev);
 void usb_ehci_finalize(EHCIState *s);
-void usb_ehci_realize(EHCIState *s, DeviceState *dev, Error **errp);
-void usb_ehci_unrealize(EHCIState *s, DeviceState *dev, Error **errp);
+void usb_ehci_realize(EHCIState *s, DeviceState *dev, Error *errp[static 1]);
+void usb_ehci_unrealize(EHCIState *s, DeviceState *dev, Error *errp[static 1]);
 void ehci_reset(void *opaque);
 
 #define TYPE_PCI_EHCI "pci-ehci-usb"
diff --git a/hw/vfio/pci.h b/hw/vfio/pci.h
index a8366bb2a7..91d17117ac 100644
--- a/hw/vfio/pci.h
+++ b/hw/vfio/pci.h
@@ -161,10 +161,10 @@ void vfio_bar_quirk_exit(VFIOPCIDevice *vdev, int nr);
 void vfio_bar_quirk_finalize(VFIOPCIDevice *vdev, int nr);
 void vfio_setup_resetfn_quirk(VFIOPCIDevice *vdev);
 
-int vfio_populate_vga(VFIOPCIDevice *vdev, Error **errp);
+int vfio_populate_vga(VFIOPCIDevice *vdev, Error *errp[static 1]);
 
 int vfio_pci_igd_opregion_init(VFIOPCIDevice *vdev,
                                struct vfio_region_info *info,
-                               Error **errp);
+                               Error *errp[static 1]);
 
 #endif /* HW_VFIO_VFIO_PCI_H */
diff --git a/hw/xen/xen-host-pci-device.h b/hw/xen/xen-host-pci-device.h
index 4d8d34ecb0..fb320914b7 100644
--- a/hw/xen/xen-host-pci-device.h
+++ b/hw/xen/xen-host-pci-device.h
@@ -38,7 +38,7 @@ typedef struct XenHostPCIDevice {
 
 void xen_host_pci_device_get(XenHostPCIDevice *d, uint16_t domain,
                              uint8_t bus, uint8_t dev, uint8_t func,
-                             Error **errp);
+                             Error *errp[static 1]);
 void xen_host_pci_device_put(XenHostPCIDevice *pci_dev);
 bool xen_host_pci_device_closed(XenHostPCIDevice *d);
 
diff --git a/hw/xen/xen_pt.h b/hw/xen/xen_pt.h
index 191d9caea1..d47db9f4b6 100644
--- a/hw/xen/xen_pt.h
+++ b/hw/xen/xen_pt.h
@@ -230,7 +230,7 @@ struct XenPCIPassthroughState {
     bool listener_set;
 };
 
-void xen_pt_config_init(XenPCIPassthroughState *s, Error **errp);
+void xen_pt_config_init(XenPCIPassthroughState *s, Error *errp[static 1]);
 void xen_pt_config_delete(XenPCIPassthroughState *s);
 XenPTRegGroup *xen_pt_find_reg_grp(XenPCIPassthroughState *s, uint32_t 
address);
 XenPTReg *xen_pt_find_reg(XenPTRegGroup *reg_grp, uint32_t address);
@@ -331,5 +331,5 @@ static inline bool is_igd_vga_passthrough(XenHostPCIDevice 
*dev)
 int xen_pt_register_vga_regions(XenHostPCIDevice *dev);
 int xen_pt_unregister_vga_regions(XenHostPCIDevice *dev);
 void xen_pt_setup_vga(XenPCIPassthroughState *s, XenHostPCIDevice *dev,
-                     Error **errp);
+                     Error *errp[static 1]);
 #endif /* XEN_PT_H */
diff --git a/include/block/aio.h b/include/block/aio.h
index e9aeeaec94..6008d9e6d0 100644
--- a/include/block/aio.h
+++ b/include/block/aio.h
@@ -156,7 +156,7 @@ struct AioContext {
  * They also provide bottom halves, a service to execute a piece of code
  * as soon as possible.
  */
-AioContext *aio_context_new(Error **errp);
+AioContext *aio_context_new(Error *errp[static 1]);
 
 /**
  * aio_context_ref:
@@ -562,6 +562,6 @@ void aio_context_setup(AioContext *ctx);
  */
 void aio_context_set_poll_params(AioContext *ctx, int64_t max_ns,
                                  int64_t grow, int64_t shrink,
-                                 Error **errp);
+                                 Error *errp[static 1]);
 
 #endif
diff --git a/include/block/block.h b/include/block/block.h
index 9b355e92d8..6973265e1d 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -236,16 +236,17 @@ void bdrv_init_with_whitelist(void);
 bool bdrv_uses_whitelist(void);
 BlockDriver *bdrv_find_protocol(const char *filename,
                                 bool allow_protocol_prefix,
-                                Error **errp);
+                                Error *errp[static 1]);
 BlockDriver *bdrv_find_format(const char *format_name);
 int bdrv_create(BlockDriver *drv, const char* filename,
-                QemuOpts *opts, Error **errp);
-int bdrv_create_file(const char *filename, QemuOpts *opts, Error **errp);
+                QemuOpts *opts, Error *errp[static 1]);
+int bdrv_create_file(const char *filename, QemuOpts *opts,
+                    Error *errp[static 1]);
 BlockDriverState *bdrv_new(void);
 void bdrv_append(BlockDriverState *bs_new, BlockDriverState *bs_top,
-                 Error **errp);
+                 Error *errp[static 1]);
 void bdrv_replace_node(BlockDriverState *from, BlockDriverState *to,
-                       Error **errp);
+                       Error *errp[static 1]);
 
 int bdrv_parse_cache_mode(const char *mode, int *flags, bool *writethrough);
 int bdrv_parse_discard_flags(const char *mode, int *flags);
@@ -253,22 +254,23 @@ BdrvChild *bdrv_open_child(const char *filename,
                            QDict *options, const char *bdref_key,
                            BlockDriverState* parent,
                            const BdrvChildRole *child_role,
-                           bool allow_none, Error **errp);
+                           bool allow_none, Error *errp[static 1]);
 void bdrv_set_backing_hd(BlockDriverState *bs, BlockDriverState *backing_hd,
-                         Error **errp);
+                         Error *errp[static 1]);
 int bdrv_open_backing_file(BlockDriverState *bs, QDict *parent_options,
-                           const char *bdref_key, Error **errp);
+                           const char *bdref_key, Error *errp[static 1]);
 BlockDriverState *bdrv_open(const char *filename, const char *reference,
-                            QDict *options, int flags, Error **errp);
+                            QDict *options, int flags, Error *errp[static 1]);
 BlockDriverState *bdrv_new_open_driver(BlockDriver *drv, const char *node_name,
-                                       int flags, Error **errp);
+                                       int flags, Error *errp[static 1]);
 BlockReopenQueue *bdrv_reopen_queue(BlockReopenQueue *bs_queue,
                                     BlockDriverState *bs,
                                     QDict *options, int flags);
-int bdrv_reopen_multiple(AioContext *ctx, BlockReopenQueue *bs_queue, Error 
**errp);
-int bdrv_reopen(BlockDriverState *bs, int bdrv_flags, Error **errp);
+int bdrv_reopen_multiple(AioContext *ctx, BlockReopenQueue *bs_queue,
+                        Error *errp[static 1]);
+int bdrv_reopen(BlockDriverState *bs, int bdrv_flags, Error *errp[static 1]);
 int bdrv_reopen_prepare(BDRVReopenState *reopen_state,
-                        BlockReopenQueue *queue, Error **errp);
+                        BlockReopenQueue *queue, Error *errp[static 1]);
 void bdrv_reopen_commit(BDRVReopenState *reopen_state);
 void bdrv_reopen_abort(BDRVReopenState *reopen_state);
 int bdrv_read(BdrvChild *child, int64_t sector_num,
@@ -300,12 +302,12 @@ BlockDriverState 
*bdrv_find_backing_image(BlockDriverState *bs,
     const char *backing_file);
 int bdrv_get_backing_file_depth(BlockDriverState *bs);
 void bdrv_refresh_filename(BlockDriverState *bs);
-int bdrv_truncate(BdrvChild *child, int64_t offset, Error **errp);
+int bdrv_truncate(BdrvChild *child, int64_t offset, Error *errp[static 1]);
 int64_t bdrv_nb_sectors(BlockDriverState *bs);
 int64_t bdrv_getlength(BlockDriverState *bs);
 int64_t bdrv_get_allocated_file_size(BlockDriverState *bs);
 void bdrv_get_geometry(BlockDriverState *bs, uint64_t *nb_sectors_ptr);
-void bdrv_refresh_limits(BlockDriverState *bs, Error **errp);
+void bdrv_refresh_limits(BlockDriverState *bs, Error *errp[static 1]);
 int bdrv_commit(BlockDriverState *bs);
 int bdrv_change_backing_file(BlockDriverState *bs,
     const char *backing_file, const char *backing_fmt);
@@ -350,7 +352,8 @@ bool bdrv_is_first_non_filter(BlockDriverState *candidate);
 
 /* check if a named node can be replaced when doing drive-mirror */
 BlockDriverState *check_to_replace_node(BlockDriverState *parent_bs,
-                                        const char *node_name, Error **errp);
+                                        const char *node_name,
+                                        Error *errp[static 1]);
 
 /* async block I/O */
 BlockAIOCB *bdrv_aio_readv(BdrvChild *child, int64_t sector_num,
@@ -368,8 +371,8 @@ void bdrv_aio_cancel_async(BlockAIOCB *acb);
 int bdrv_co_ioctl(BlockDriverState *bs, int req, void *buf);
 
 /* Invalidate any cached metadata used by image formats */
-void bdrv_invalidate_cache(BlockDriverState *bs, Error **errp);
-void bdrv_invalidate_cache_all(Error **errp);
+void bdrv_invalidate_cache(BlockDriverState *bs, Error *errp[static 1]);
+void bdrv_invalidate_cache_all(Error *errp[static 1]);
 int bdrv_inactivate_all(void);
 
 /* Ensure contents are flushed to disk.  */
@@ -439,8 +442,10 @@ int bdrv_is_allocated_above(BlockDriverState *top, 
BlockDriverState *base,
 
 bool bdrv_is_read_only(BlockDriverState *bs);
 bool bdrv_is_writable(BlockDriverState *bs);
-int bdrv_can_set_read_only(BlockDriverState *bs, bool read_only, Error **errp);
-int bdrv_set_read_only(BlockDriverState *bs, bool read_only, Error **errp);
+int bdrv_can_set_read_only(BlockDriverState *bs, bool read_only,
+                          Error *errp[static 1]);
+int bdrv_set_read_only(BlockDriverState *bs, bool read_only,
+                      Error *errp[static 1]);
 bool bdrv_is_sg(BlockDriverState *bs);
 bool bdrv_is_inserted(BlockDriverState *bs);
 int bdrv_media_changed(BlockDriverState *bs);
@@ -448,10 +453,10 @@ void bdrv_lock_medium(BlockDriverState *bs, bool locked);
 void bdrv_eject(BlockDriverState *bs, bool eject_flag);
 const char *bdrv_get_format_name(BlockDriverState *bs);
 BlockDriverState *bdrv_find_node(const char *node_name);
-BlockDeviceInfoList *bdrv_named_nodes_list(Error **errp);
+BlockDeviceInfoList *bdrv_named_nodes_list(Error *errp[static 1]);
 BlockDriverState *bdrv_lookup_bs(const char *device,
                                  const char *node_name,
-                                 Error **errp);
+                                 Error *errp[static 1]);
 bool bdrv_chain_contains(BlockDriverState *top, BlockDriverState *base);
 BlockDriverState *bdrv_next_node(BlockDriverState *bs);
 
@@ -471,7 +476,8 @@ BlockDriverState *bdrv_next_monitor_owned(BlockDriverState 
*bs);
 bool bdrv_is_encrypted(BlockDriverState *bs);
 bool bdrv_key_required(BlockDriverState *bs);
 int bdrv_set_key(BlockDriverState *bs, const char *key);
-void bdrv_add_key(BlockDriverState *bs, const char *key, Error **errp);
+void bdrv_add_key(BlockDriverState *bs, const char *key,
+                 Error *errp[static 1]);
 void bdrv_iterate_format(void (*it)(void *opaque, const char *name),
                          void *opaque);
 const char *bdrv_get_node_name(const BlockDriverState *bs);
@@ -493,11 +499,12 @@ const char *bdrv_get_encrypted_filename(BlockDriverState 
*bs);
 void bdrv_get_backing_filename(BlockDriverState *bs,
                                char *filename, int filename_size);
 void bdrv_get_full_backing_filename(BlockDriverState *bs,
-                                    char *dest, size_t sz, Error **errp);
+                                    char *dest, size_t sz,
+                                    Error *errp[static 1]);
 void bdrv_get_full_backing_filename_from_filename(const char *backed,
                                                   const char *backing,
                                                   char *dest, size_t sz,
-                                                  Error **errp);
+                                                  Error *errp[static 1]);
 
 int path_has_protocol(const char *path);
 int path_is_absolute(const char *path);
@@ -516,7 +523,7 @@ int bdrv_load_vmstate(BlockDriverState *bs, uint8_t *buf,
 void bdrv_img_create(const char *filename, const char *fmt,
                      const char *base_filename, const char *base_fmt,
                      char *options, uint64_t img_size, int flags,
-                     bool quiet, Error **errp);
+                     bool quiet, Error *errp[static 1]);
 
 /* Returns the alignment in bytes that is required so that no bounce buffer
  * is required throughout the stack */
@@ -539,9 +546,10 @@ BdrvChild *bdrv_attach_child(BlockDriverState *parent_bs,
                              BlockDriverState *child_bs,
                              const char *child_name,
                              const BdrvChildRole *child_role,
-                             Error **errp);
+                             Error *errp[static 1]);
 
-bool bdrv_op_is_blocked(BlockDriverState *bs, BlockOpType op, Error **errp);
+bool bdrv_op_is_blocked(BlockDriverState *bs, BlockOpType op,
+                       Error *errp[static 1]);
 void bdrv_op_block(BlockDriverState *bs, BlockOpType op, Error *reason);
 void bdrv_op_unblock(BlockDriverState *bs, BlockOpType op, Error *reason);
 void bdrv_op_block_all(BlockDriverState *bs, Error *reason);
@@ -626,7 +634,8 @@ void bdrv_drained_begin(BlockDriverState *bs);
 void bdrv_drained_end(BlockDriverState *bs);
 
 void bdrv_add_child(BlockDriverState *parent, BlockDriverState *child,
-                    Error **errp);
-void bdrv_del_child(BlockDriverState *parent, BdrvChild *child, Error **errp);
+                    Error *errp[static 1]);
+void bdrv_del_child(BlockDriverState *parent, BdrvChild *child,
+                   Error *errp[static 1]);
 
 #endif
diff --git a/include/block/block_backup.h b/include/block/block_backup.h
index 8a759477a3..30629dcba6 100644
--- a/include/block/block_backup.h
+++ b/include/block/block_backup.h
@@ -34,6 +34,6 @@ void backup_cow_request_begin(CowRequest *req, BlockJob *job,
                               int nb_sectors);
 void backup_cow_request_end(CowRequest *req);
 
-void backup_do_checkpoint(BlockJob *job, Error **errp);
+void backup_do_checkpoint(BlockJob *job, Error *errp[static 1]);
 
 #endif
diff --git a/include/block/block_int.h b/include/block/block_int.h
index cb78c4fa82..3c5670f641 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -785,7 +785,8 @@ int is_windows_drive(const char *filename);
  */
 void stream_start(const char *job_id, BlockDriverState *bs,
                   BlockDriverState *base, const char *backing_file_str,
-                  int64_t speed, BlockdevOnError on_error, Error **errp);
+                  int64_t speed, BlockdevOnError on_error,
+                  Error *errp[static 1]);
 
 /**
  * commit_start:
@@ -806,7 +807,7 @@ void stream_start(const char *job_id, BlockDriverState *bs,
 void commit_start(const char *job_id, BlockDriverState *bs,
                   BlockDriverState *base, BlockDriverState *top, int64_t speed,
                   BlockdevOnError on_error, const char *backing_file_str,
-                  const char *filter_node_name, Error **errp);
+                  const char *filter_node_name, Error *errp[static 1]);
 /**
  * commit_active_start:
  * @job_id: The id of the newly-created job, or %NULL to use the
@@ -831,7 +832,7 @@ void commit_active_start(const char *job_id, 
BlockDriverState *bs,
                          int64_t speed, BlockdevOnError on_error,
                          const char *filter_node_name,
                          BlockCompletionFunc *cb, void *opaque,
-                         bool auto_complete, Error **errp);
+                         bool auto_complete, Error *errp[static 1]);
 /*
  * mirror_start:
  * @job_id: The id of the newly-created job, or %NULL to use the
@@ -864,7 +865,8 @@ void mirror_start(const char *job_id, BlockDriverState *bs,
                   MirrorSyncMode mode, BlockMirrorBackingMode backing_mode,
                   BlockdevOnError on_source_error,
                   BlockdevOnError on_target_error,
-                  bool unmap, const char *filter_node_name, Error **errp);
+                  bool unmap, const char *filter_node_name,
+                  Error *errp[static 1]);
 
 /*
  * backup_job_create:
@@ -895,7 +897,7 @@ BlockJob *backup_job_create(const char *job_id, 
BlockDriverState *bs,
                             BlockdevOnError on_target_error,
                             int creation_flags,
                             BlockCompletionFunc *cb, void *opaque,
-                            BlockJobTxn *txn, Error **errp);
+                            BlockJobTxn *txn, Error *errp[static 1]);
 
 void hmp_drive_add_node(Monitor *mon, const char *optstr);
 
@@ -903,11 +905,11 @@ BdrvChild *bdrv_root_attach_child(BlockDriverState 
*child_bs,
                                   const char *child_name,
                                   const BdrvChildRole *child_role,
                                   uint64_t perm, uint64_t shared_perm,
-                                  void *opaque, Error **errp);
+                                  void *opaque, Error *errp[static 1]);
 void bdrv_root_unref_child(BdrvChild *child);
 
 int bdrv_child_try_set_perm(BdrvChild *c, uint64_t perm, uint64_t shared,
-                            Error **errp);
+                            Error *errp[static 1]);
 
 /* Default implementation for BlockDriver.bdrv_child_perm() that can be used by
  * block filters: Forward CONSISTENT_READ, WRITE, WRITE_UNCHANGED and RESIZE to
@@ -927,7 +929,8 @@ void bdrv_format_default_perms(BlockDriverState *bs, 
BdrvChild *c,
                                uint64_t *nperm, uint64_t *nshared);
 
 const char *bdrv_get_parent_name(const BlockDriverState *bs);
-void blk_dev_change_media_cb(BlockBackend *blk, bool load, Error **errp);
+void blk_dev_change_media_cb(BlockBackend *blk, bool load,
+                            Error *errp[static 1]);
 bool blk_dev_has_removable_media(BlockBackend *blk);
 bool blk_dev_has_tray(BlockBackend *blk);
 void blk_dev_eject_request(BlockBackend *blk, bool force);
diff --git a/include/block/blockjob.h b/include/block/blockjob.h
index 09c7c694b5..480ee92f1a 100644
--- a/include/block/blockjob.h
+++ b/include/block/blockjob.h
@@ -178,7 +178,8 @@ BlockJob *block_job_get(const char *id);
  * @job exists.
  */
 int block_job_add_bdrv(BlockJob *job, const char *name, BlockDriverState *bs,
-                       uint64_t perm, uint64_t shared_perm, Error **errp);
+                       uint64_t perm, uint64_t shared_perm,
+                       Error *errp[static 1]);
 
 /**
  * block_job_remove_all_bdrv:
@@ -198,7 +199,7 @@ void block_job_remove_all_bdrv(BlockJob *job);
  * Set a rate-limiting parameter for the job; the actual meaning may
  * vary depending on the job type.
  */
-void block_job_set_speed(BlockJob *job, int64_t speed, Error **errp);
+void block_job_set_speed(BlockJob *job, int64_t speed, Error *errp[static 1]);
 
 /**
  * block_job_start:
@@ -224,7 +225,7 @@ void block_job_cancel(BlockJob *job);
  *
  * Asynchronously complete the specified job.
  */
-void block_job_complete(BlockJob *job, Error **errp);
+void block_job_complete(BlockJob *job, Error *errp[static 1]);
 
 /**
  * block_job_query:
@@ -232,7 +233,7 @@ void block_job_complete(BlockJob *job, Error **errp);
  *
  * Return information about a job.
  */
-BlockJobInfo *block_job_query(BlockJob *job, Error **errp);
+BlockJobInfo *block_job_query(BlockJob *job, Error *errp[static 1]);
 
 /**
  * block_job_user_pause:
@@ -294,7 +295,7 @@ void block_job_cancel_sync_all(void);
  *
  * Returns the return value from the job.
  */
-int block_job_complete_sync(BlockJob *job, Error **errp);
+int block_job_complete_sync(BlockJob *job, Error *errp[static 1]);
 
 /**
  * block_job_iostatus_reset:
diff --git a/include/block/blockjob_int.h b/include/block/blockjob_int.h
index f13ad05c0d..b4a31bf1b4 100644
--- a/include/block/blockjob_int.h
+++ b/include/block/blockjob_int.h
@@ -134,7 +134,8 @@ struct BlockJobDriver {
 void *block_job_create(const char *job_id, const BlockJobDriver *driver,
                        BlockDriverState *bs, uint64_t perm,
                        uint64_t shared_perm, int64_t speed, int flags,
-                       BlockCompletionFunc *cb, void *opaque, Error **errp);
+                       BlockCompletionFunc *cb, void *opaque,
+                       Error *errp[static 1]);
 
 /**
  * block_job_sleep_ns:
diff --git a/include/block/dirty-bitmap.h b/include/block/dirty-bitmap.h
index 9dea14ba03..46fd81ef82 100644
--- a/include/block/dirty-bitmap.h
+++ b/include/block/dirty-bitmap.h
@@ -7,19 +7,19 @@
 BdrvDirtyBitmap *bdrv_create_dirty_bitmap(BlockDriverState *bs,
                                           uint32_t granularity,
                                           const char *name,
-                                          Error **errp);
+                                          Error *errp[static 1]);
 void bdrv_create_meta_dirty_bitmap(BdrvDirtyBitmap *bitmap,
                                    int chunk_size);
 void bdrv_release_meta_dirty_bitmap(BdrvDirtyBitmap *bitmap);
 int bdrv_dirty_bitmap_create_successor(BlockDriverState *bs,
                                        BdrvDirtyBitmap *bitmap,
-                                       Error **errp);
+                                       Error *errp[static 1]);
 BdrvDirtyBitmap *bdrv_dirty_bitmap_abdicate(BlockDriverState *bs,
                                             BdrvDirtyBitmap *bitmap,
-                                            Error **errp);
+                                            Error *errp[static 1]);
 BdrvDirtyBitmap *bdrv_reclaim_dirty_bitmap(BlockDriverState *bs,
                                            BdrvDirtyBitmap *bitmap,
-                                           Error **errp);
+                                           Error *errp[static 1]);
 BdrvDirtyBitmap *bdrv_find_dirty_bitmap(BlockDriverState *bs,
                                         const char *name);
 void bdrv_dirty_bitmap_make_anon(BdrvDirtyBitmap *bitmap);
diff --git a/include/block/nbd.h b/include/block/nbd.h
index 416257abca..cf0f523ef9 100644
--- a/include/block/nbd.h
+++ b/include/block/nbd.h
@@ -128,15 +128,16 @@ ssize_t nbd_wr_syncv(QIOChannel *ioc,
                      size_t niov,
                      size_t length,
                      bool do_read,
-                     Error **errp);
+                     Error *errp[static 1]);
 int nbd_receive_negotiate(QIOChannel *ioc, const char *name, uint16_t *flags,
                           QCryptoTLSCreds *tlscreds, const char *hostname,
                           QIOChannel **outioc,
-                          off_t *size, Error **errp);
+                          off_t *size, Error *errp[static 1]);
 int nbd_init(int fd, QIOChannelSocket *sioc, uint16_t flags, off_t size,
-             Error **errp);
+             Error *errp[static 1]);
 ssize_t nbd_send_request(QIOChannel *ioc, NBDRequest *request);
-ssize_t nbd_receive_reply(QIOChannel *ioc, NBDReply *reply, Error **errp);
+ssize_t nbd_receive_reply(QIOChannel *ioc, NBDReply *reply,
+                         Error *errp[static 1]);
 int nbd_client(int fd);
 int nbd_disconnect(int fd);
 
@@ -146,7 +147,7 @@ typedef struct NBDClient NBDClient;
 NBDExport *nbd_export_new(BlockDriverState *bs, off_t dev_offset, off_t size,
                           uint16_t nbdflags, void (*close)(NBDExport *),
                           bool writethrough, BlockBackend *on_eject_blk,
-                          Error **errp);
+                          Error *errp[static 1]);
 void nbd_export_close(NBDExport *exp);
 void nbd_export_get(NBDExport *exp);
 void nbd_export_put(NBDExport *exp);
@@ -167,6 +168,6 @@ void nbd_client_get(NBDClient *client);
 void nbd_client_put(NBDClient *client);
 
 void nbd_server_start(SocketAddress *addr, const char *tls_creds,
-                      Error **errp);
+                      Error *errp[static 1]);
 
 #endif
diff --git a/include/block/qapi.h b/include/block/qapi.h
index 82ba4b63a0..3d9d5af97f 100644
--- a/include/block/qapi.h
+++ b/include/block/qapi.h
@@ -30,13 +30,14 @@
 #include "block/snapshot.h"
 
 BlockDeviceInfo *bdrv_block_device_info(BlockBackend *blk,
-                                        BlockDriverState *bs, Error **errp);
+                                        BlockDriverState *bs,
+                                        Error *errp[static 1]);
 int bdrv_query_snapshot_info_list(BlockDriverState *bs,
                                   SnapshotInfoList **p_list,
-                                  Error **errp);
+                                  Error *errp[static 1]);
 void bdrv_query_image_info(BlockDriverState *bs,
                            ImageInfo **p_info,
-                           Error **errp);
+                           Error *errp[static 1]);
 
 void bdrv_snapshot_dump(fprintf_function func_fprintf, void *f,
                         QEMUSnapshotInfo *sn);
diff --git a/include/block/snapshot.h b/include/block/snapshot.h
index e5c0553115..62cd81d6f3 100644
--- a/include/block/snapshot.h
+++ b/include/block/snapshot.h
@@ -52,7 +52,7 @@ bool bdrv_snapshot_find_by_id_and_name(BlockDriverState *bs,
                                        const char *id,
                                        const char *name,
                                        QEMUSnapshotInfo *sn_info,
-                                       Error **errp);
+                                       Error *errp[static 1]);
 int bdrv_can_snapshot(BlockDriverState *bs);
 int bdrv_snapshot_create(BlockDriverState *bs,
                          QEMUSnapshotInfo *sn_info);
@@ -61,19 +61,19 @@ int bdrv_snapshot_goto(BlockDriverState *bs,
 int bdrv_snapshot_delete(BlockDriverState *bs,
                          const char *snapshot_id,
                          const char *name,
-                         Error **errp);
+                         Error *errp[static 1]);
 int bdrv_snapshot_delete_by_id_or_name(BlockDriverState *bs,
                                        const char *id_or_name,
-                                       Error **errp);
+                                       Error *errp[static 1]);
 int bdrv_snapshot_list(BlockDriverState *bs,
                        QEMUSnapshotInfo **psn_info);
 int bdrv_snapshot_load_tmp(BlockDriverState *bs,
                            const char *snapshot_id,
                            const char *name,
-                           Error **errp);
+                           Error *errp[static 1]);
 int bdrv_snapshot_load_tmp_by_id_or_name(BlockDriverState *bs,
                                          const char *id_or_name,
-                                         Error **errp);
+                                         Error *errp[static 1]);
 
 
 /* Group operations. All block drivers are involved.
@@ -82,7 +82,7 @@ int bdrv_snapshot_load_tmp_by_id_or_name(BlockDriverState *bs,
 
 bool bdrv_all_can_snapshot(BlockDriverState **first_bad_bs);
 int bdrv_all_delete_snapshot(const char *name, BlockDriverState **first_bsd_bs,
-                             Error **err);
+                             Error *err[static 1]);
 int bdrv_all_goto_snapshot(const char *name, BlockDriverState **first_bsd_bs);
 int bdrv_all_find_snapshot(const char *name, BlockDriverState **first_bad_bs);
 int bdrv_all_create_snapshot(QEMUSnapshotInfo *sn,
diff --git a/include/chardev/char-fd.h b/include/chardev/char-fd.h
index 55ae5b47b0..e23c130c1f 100644
--- a/include/chardev/char-fd.h
+++ b/include/chardev/char-fd.h
@@ -39,6 +39,6 @@ typedef struct FDChardev {
 #define FD_CHARDEV(obj) OBJECT_CHECK(FDChardev, (obj), TYPE_CHARDEV_FD)
 
 void qemu_chr_open_fd(Chardev *chr, int fd_in, int fd_out);
-int qmp_chardev_open_file_source(char *src, int flags, Error **errp);
+int qmp_chardev_open_file_source(char *src, int flags, Error *errp[static 1]);
 
 #endif /* CHAR_FD_H */
diff --git a/include/chardev/char-fe.h b/include/chardev/char-fe.h
index 2cbb262f66..7446826fa0 100644
--- a/include/chardev/char-fe.h
+++ b/include/chardev/char-fe.h
@@ -26,7 +26,7 @@ struct CharBackend {
  *
  * Returns: false on error.
  */
-bool qemu_chr_fe_init(CharBackend *b, Chardev *s, Error **errp);
+bool qemu_chr_fe_init(CharBackend *b, Chardev *s, Error *errp[static 1]);
 
 /**
  * @qemu_chr_fe_deinit:
@@ -102,7 +102,7 @@ void qemu_chr_fe_disconnect(CharBackend *be);
  * Wait for characted backend to be connected, return < 0 on error or
  * if no assicated Chardev.
  */
-int qemu_chr_fe_wait_connected(CharBackend *be, Error **errp);
+int qemu_chr_fe_wait_connected(CharBackend *be, Error *errp[static 1]);
 
 /**
  * @qemu_chr_fe_set_echo:
diff --git a/include/chardev/char-win.h b/include/chardev/char-win.h
index fa59e9e423..cae26c67cf 100644
--- a/include/chardev/char-win.h
+++ b/include/chardev/char-win.h
@@ -45,7 +45,8 @@ typedef struct {
 #define WIN_CHARDEV(obj) OBJECT_CHECK(WinChardev, (obj), TYPE_CHARDEV_WIN)
 
 void win_chr_set_file(Chardev *chr, HANDLE file, bool keep_open);
-int win_chr_serial_init(Chardev *chr, const char *filename, Error **errp);
+int win_chr_serial_init(Chardev *chr, const char *filename,
+                       Error *errp[static 1]);
 int win_chr_pipe_poll(void *opaque);
 
 #endif /* CHAR_WIN_H */
diff --git a/include/chardev/char.h b/include/chardev/char.h
index 8a9ade4931..a9daceec93 100644
--- a/include/chardev/char.h
+++ b/include/chardev/char.h
@@ -68,7 +68,7 @@ struct Chardev {
  * Returns: a new character backend
  */
 Chardev *qemu_chr_new_from_opts(QemuOpts *opts,
-                                Error **errp);
+                                Error *errp[static 1]);
 
 /**
  * @qemu_chr_parse_common:
@@ -166,7 +166,7 @@ void qemu_chr_set_feature(Chardev *chr,
 QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename);
 int qemu_chr_write(Chardev *s, const uint8_t *buf, int len, bool write_all);
 #define qemu_chr_write_all(s, buf, len) qemu_chr_write(s, buf, len, true)
-int qemu_chr_wait_connected(Chardev *chr, Error **errp);
+int qemu_chr_wait_connected(Chardev *chr, Error *errp[static 1]);
 
 #define TYPE_CHARDEV "chardev"
 #define CHARDEV(obj) OBJECT_CHECK(Chardev, (obj), TYPE_CHARDEV)
@@ -219,11 +219,12 @@ typedef struct ChardevClass {
 } ChardevClass;
 
 Chardev *qemu_chardev_new(const char *id, const char *typename,
-                          ChardevBackend *backend, Error **errp);
+                          ChardevBackend *backend, Error *errp[static 1]);
 
 extern int term_escape_char;
 
 /* console.c */
-void qemu_chr_parse_vc(QemuOpts *opts, ChardevBackend *backend, Error **errp);
+void qemu_chr_parse_vc(QemuOpts *opts, ChardevBackend *backend,
+                      Error *errp[static 1]);
 
 #endif
diff --git a/include/crypto/afsplit.h b/include/crypto/afsplit.h
index 7dd21f0a67..7b1a9c8216 100644
--- a/include/crypto/afsplit.h
+++ b/include/crypto/afsplit.h
@@ -108,7 +108,7 @@ int qcrypto_afsplit_encode(QCryptoHashAlgorithm hash,
                            uint32_t stripes,
                            const uint8_t *in,
                            uint8_t *out,
-                           Error **errp);
+                           Error *errp[static 1]);
 
 /**
  * qcrypto_afsplit_decode:
@@ -130,6 +130,6 @@ int qcrypto_afsplit_decode(QCryptoHashAlgorithm hash,
                            uint32_t stripes,
                            const uint8_t *in,
                            uint8_t *out,
-                           Error **errp);
+                           Error *errp[static 1]);
 
 #endif /* QCRYPTO_AFSPLIT_H */
diff --git a/include/crypto/block.h b/include/crypto/block.h
index 013a435f1b..5095000e68 100644
--- a/include/crypto/block.h
+++ b/include/crypto/block.h
@@ -105,7 +105,7 @@ QCryptoBlock *qcrypto_block_open(QCryptoBlockOpenOptions 
*options,
                                  QCryptoBlockReadFunc readfunc,
                                  void *opaque,
                                  unsigned int flags,
-                                 Error **errp);
+                                 Error *errp[static 1]);
 
 /**
  * qcrypto_block_create:
@@ -136,7 +136,7 @@ QCryptoBlock 
*qcrypto_block_create(QCryptoBlockCreateOptions *options,
                                    QCryptoBlockInitFunc initfunc,
                                    QCryptoBlockWriteFunc writefunc,
                                    void *opaque,
-                                   Error **errp);
+                                   Error *errp[static 1]);
 
 
 /**
@@ -152,7 +152,7 @@ QCryptoBlock 
*qcrypto_block_create(QCryptoBlockCreateOptions *options,
  * Returns: a block encryption info object, or NULL on error
  */
 QCryptoBlockInfo *qcrypto_block_get_info(QCryptoBlock *block,
-                                         Error **errp);
+                                         Error *errp[static 1]);
 
 /**
  * @qcrypto_block_decrypt:
@@ -171,7 +171,7 @@ int qcrypto_block_decrypt(QCryptoBlock *block,
                           uint64_t startsector,
                           uint8_t *buf,
                           size_t len,
-                          Error **errp);
+                          Error *errp[static 1]);
 
 /**
  * @qcrypto_block_encrypt:
@@ -190,7 +190,7 @@ int qcrypto_block_encrypt(QCryptoBlock *block,
                           uint64_t startsector,
                           uint8_t *buf,
                           size_t len,
-                          Error **errp);
+                          Error *errp[static 1]);
 
 /**
  * qcrypto_block_get_cipher:
diff --git a/include/crypto/cipher.h b/include/crypto/cipher.h
index bec9f412b0..e8c80e9032 100644
--- a/include/crypto/cipher.h
+++ b/include/crypto/cipher.h
@@ -158,7 +158,7 @@ size_t qcrypto_cipher_get_iv_len(QCryptoCipherAlgorithm alg,
 QCryptoCipher *qcrypto_cipher_new(QCryptoCipherAlgorithm alg,
                                   QCryptoCipherMode mode,
                                   const uint8_t *key, size_t nkey,
-                                  Error **errp);
+                                  Error *errp[static 1]);
 
 /**
  * qcrypto_cipher_free:
@@ -188,7 +188,7 @@ int qcrypto_cipher_encrypt(QCryptoCipher *cipher,
                            const void *in,
                            void *out,
                            size_t len,
-                           Error **errp);
+                           Error *errp[static 1]);
 
 
 /**
@@ -210,7 +210,7 @@ int qcrypto_cipher_decrypt(QCryptoCipher *cipher,
                            const void *in,
                            void *out,
                            size_t len,
-                           Error **errp);
+                           Error *errp[static 1]);
 
 /**
  * qcrypto_cipher_setiv:
@@ -230,6 +230,6 @@ int qcrypto_cipher_decrypt(QCryptoCipher *cipher,
  */
 int qcrypto_cipher_setiv(QCryptoCipher *cipher,
                          const uint8_t *iv, size_t niv,
-                         Error **errp);
+                         Error *errp[static 1]);
 
 #endif /* QCRYPTO_CIPHER_H */
diff --git a/include/crypto/hash.h b/include/crypto/hash.h
index ca3267f3df..7537d6cf96 100644
--- a/include/crypto/hash.h
+++ b/include/crypto/hash.h
@@ -70,7 +70,7 @@ int qcrypto_hash_bytesv(QCryptoHashAlgorithm alg,
                         size_t niov,
                         uint8_t **result,
                         size_t *resultlen,
-                        Error **errp);
+                        Error *errp[static 1]);
 
 /**
  * qcrypto_hash_bytes:
@@ -95,7 +95,7 @@ int qcrypto_hash_bytes(QCryptoHashAlgorithm alg,
                        size_t len,
                        uint8_t **result,
                        size_t *resultlen,
-                       Error **errp);
+                       Error *errp[static 1]);
 
 /**
  * qcrypto_hash_digestv:
@@ -118,7 +118,7 @@ int qcrypto_hash_digestv(QCryptoHashAlgorithm alg,
                          const struct iovec *iov,
                          size_t niov,
                          char **digest,
-                         Error **errp);
+                         Error *errp[static 1]);
 
 /**
  * qcrypto_hash_digest:
@@ -141,7 +141,7 @@ int qcrypto_hash_digest(QCryptoHashAlgorithm alg,
                         const char *buf,
                         size_t len,
                         char **digest,
-                        Error **errp);
+                        Error *errp[static 1]);
 
 /**
  * qcrypto_hash_base64v:
@@ -164,7 +164,7 @@ int qcrypto_hash_base64v(QCryptoHashAlgorithm alg,
                          const struct iovec *iov,
                          size_t niov,
                          char **base64,
-                         Error **errp);
+                         Error *errp[static 1]);
 
 /**
  * qcrypto_hash_base64:
@@ -187,6 +187,6 @@ int qcrypto_hash_base64(QCryptoHashAlgorithm alg,
                         const char *buf,
                         size_t len,
                         char **base64,
-                        Error **errp);
+                        Error *errp[static 1]);
 
 #endif /* QCRYPTO_HASH_H */
diff --git a/include/crypto/init.h b/include/crypto/init.h
index 04c1edf770..c731110598 100644
--- a/include/crypto/init.h
+++ b/include/crypto/init.h
@@ -21,6 +21,6 @@
 #ifndef QCRYPTO_INIT_H
 #define QCRYPTO_INIT_H
 
-int qcrypto_init(Error **errp);
+int qcrypto_init(Error *errp[static 1]);
 
 #endif /* QCRYPTO_INIT_H */
diff --git a/include/crypto/ivgen.h b/include/crypto/ivgen.h
index 0350cd2a93..183807202f 100644
--- a/include/crypto/ivgen.h
+++ b/include/crypto/ivgen.h
@@ -156,7 +156,7 @@ QCryptoIVGen *qcrypto_ivgen_new(QCryptoIVGenAlgorithm alg,
 int qcrypto_ivgen_calculate(QCryptoIVGen *ivgen,
                             uint64_t sector,
                             uint8_t *iv, size_t niv,
-                            Error **errp);
+                            Error *errp[static 1]);
 
 
 /**
diff --git a/include/crypto/pbkdf.h b/include/crypto/pbkdf.h
index ef209b3e03..3b5453367c 100644
--- a/include/crypto/pbkdf.h
+++ b/include/crypto/pbkdf.h
@@ -124,7 +124,7 @@ int qcrypto_pbkdf2(QCryptoHashAlgorithm hash,
                    const uint8_t *salt, size_t nsalt,
                    uint64_t iterations,
                    uint8_t *out, size_t nout,
-                   Error **errp);
+                   Error *errp[static 1]);
 
 /**
  * qcrypto_pbkdf2_count_iters:
@@ -151,6 +151,6 @@ uint64_t qcrypto_pbkdf2_count_iters(QCryptoHashAlgorithm 
hash,
                                     const uint8_t *key, size_t nkey,
                                     const uint8_t *salt, size_t nsalt,
                                     size_t nout,
-                                    Error **errp);
+                                    Error *errp[static 1]);
 
 #endif /* QCRYPTO_PBKDF_H */
diff --git a/include/crypto/random.h b/include/crypto/random.h
index a07229ce96..7c503cc9c6 100644
--- a/include/crypto/random.h
+++ b/include/crypto/random.h
@@ -38,7 +38,7 @@
  */
 int qcrypto_random_bytes(uint8_t *buf,
                          size_t buflen,
-                         Error **errp);
+                         Error *errp[static 1]);
 
 /**
  * qcrypto_random_init:
@@ -48,6 +48,6 @@ int qcrypto_random_bytes(uint8_t *buf,
  *
  * Returns 0 on success, -1 on error
  */
-int qcrypto_random_init(Error **errp);
+int qcrypto_random_init(Error *errp[static 1]);
 
 #endif /* QCRYPTO_RANDOM_H */
diff --git a/include/crypto/secret.h b/include/crypto/secret.h
index 07a963e794..cd497a1ee2 100644
--- a/include/crypto/secret.h
+++ b/include/crypto/secret.h
@@ -137,10 +137,10 @@ struct QCryptoSecretClass {
 extern int qcrypto_secret_lookup(const char *secretid,
                                  uint8_t **data,
                                  size_t *datalen,
-                                 Error **errp);
+                                 Error *errp[static 1]);
 extern char *qcrypto_secret_lookup_as_utf8(const char *secretid,
-                                           Error **errp);
+                                           Error *errp[static 1]);
 extern char *qcrypto_secret_lookup_as_base64(const char *secretid,
-                                             Error **errp);
+                                             Error *errp[static 1]);
 
 #endif /* QCRYPTO_SECRET_H */
diff --git a/include/crypto/tlssession.h b/include/crypto/tlssession.h
index 1c7414e4ff..d3135b2442 100644
--- a/include/crypto/tlssession.h
+++ b/include/crypto/tlssession.h
@@ -173,7 +173,7 @@ void qcrypto_tls_session_free(QCryptoTLSSession *sess);
  * Returns 0 if the credentials validated, -1 on error
  */
 int qcrypto_tls_session_check_credentials(QCryptoTLSSession *sess,
-                                          Error **errp);
+                                          Error *errp[static 1]);
 
 typedef ssize_t (*QCryptoTLSSessionWriteFunc)(const char *buf,
                                               size_t len,
@@ -264,7 +264,7 @@ ssize_t qcrypto_tls_session_read(QCryptoTLSSession *sess,
  * or write again
  */
 int qcrypto_tls_session_handshake(QCryptoTLSSession *sess,
-                                  Error **errp);
+                                  Error *errp[static 1]);
 
 typedef enum {
     QCRYPTO_TLS_HANDSHAKE_COMPLETE,
@@ -300,7 +300,7 @@ qcrypto_tls_session_get_handshake_status(QCryptoTLSSession 
*sess);
  * or -1 on error
  */
 int qcrypto_tls_session_get_key_size(QCryptoTLSSession *sess,
-                                     Error **errp);
+                                     Error *errp[static 1]);
 
 /**
  * qcrypto_tls_session_get_peer_name:
diff --git a/include/exec/memory.h b/include/exec/memory.h
index 80e605a96a..8bd3a8f1f0 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -408,7 +408,7 @@ void memory_region_init_ram(MemoryRegion *mr,
                             struct Object *owner,
                             const char *name,
                             uint64_t size,
-                            Error **errp);
+                            Error *errp[static 1]);
 
 /**
  * memory_region_init_resizeable_ram:  Initialize memory region with resizeable
@@ -434,7 +434,7 @@ void memory_region_init_resizeable_ram(MemoryRegion *mr,
                                        void (*resized)(const char*,
                                                        uint64_t length,
                                                        void *host),
-                                       Error **errp);
+                                       Error *errp[static 1]);
 #ifdef __linux__
 /**
  * memory_region_init_ram_from_file:  Initialize RAM memory region with a
@@ -455,7 +455,7 @@ void memory_region_init_ram_from_file(MemoryRegion *mr,
                                       uint64_t size,
                                       bool share,
                                       const char *path,
-                                      Error **errp);
+                                      Error *errp[static 1]);
 #endif
 
 /**
@@ -537,7 +537,7 @@ void memory_region_init_rom(MemoryRegion *mr,
                             struct Object *owner,
                             const char *name,
                             uint64_t size,
-                            Error **errp);
+                            Error *errp[static 1]);
 
 /**
  * memory_region_init_rom_device:  Initialize a ROM memory region.  Writes are
@@ -557,7 +557,7 @@ void memory_region_init_rom_device(MemoryRegion *mr,
                                    void *opaque,
                                    const char *name,
                                    uint64_t size,
-                                   Error **errp);
+                                   Error *errp[static 1]);
 
 /**
  * memory_region_init_reservation: Initialize a memory region that reserves
@@ -859,7 +859,7 @@ void *memory_region_get_ram_ptr(MemoryRegion *mr);
  * @errp: pointer to Error*, to store an error if it happens.
  */
 void memory_region_ram_resize(MemoryRegion *mr, ram_addr_t newsize,
-                              Error **errp);
+                              Error *errp[static 1]);
 
 /**
  * memory_region_set_log: Turn dirty logging on or off for a region.
diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h
index 140efa840c..7a3b1721f4 100644
--- a/include/exec/ram_addr.h
+++ b/include/exec/ram_addr.h
@@ -64,18 +64,20 @@ long qemu_getrampagesize(void);
 unsigned long last_ram_page(void);
 RAMBlock *qemu_ram_alloc_from_file(ram_addr_t size, MemoryRegion *mr,
                                    bool share, const char *mem_path,
-                                   Error **errp);
+                                   Error *errp[static 1]);
 RAMBlock *qemu_ram_alloc_from_ptr(ram_addr_t size, void *host,
-                                  MemoryRegion *mr, Error **errp);
-RAMBlock *qemu_ram_alloc(ram_addr_t size, MemoryRegion *mr, Error **errp);
+                                  MemoryRegion *mr, Error *errp[static 1]);
+RAMBlock *qemu_ram_alloc(ram_addr_t size, MemoryRegion *mr,
+                        Error *errp[static 1]);
 RAMBlock *qemu_ram_alloc_resizeable(ram_addr_t size, ram_addr_t max_size,
                                     void (*resized)(const char*,
                                                     uint64_t length,
                                                     void *host),
-                                    MemoryRegion *mr, Error **errp);
+                                    MemoryRegion *mr, Error *errp[static 1]);
 void qemu_ram_free(RAMBlock *block);
 
-int qemu_ram_resize(RAMBlock *block, ram_addr_t newsize, Error **errp);
+int qemu_ram_resize(RAMBlock *block, ram_addr_t newsize,
+                   Error *errp[static 1]);
 
 #define DIRTY_CLIENTS_ALL     ((1 << DIRTY_MEMORY_NUM) - 1)
 #define DIRTY_CLIENTS_NOCODE  (DIRTY_CLIENTS_ALL & ~(1 << DIRTY_MEMORY_CODE))
diff --git a/include/hw/acpi/acpi.h b/include/hw/acpi/acpi.h
index 7b3d93cf0d..dddcf6b21c 100644
--- a/include/hw/acpi/acpi.h
+++ b/include/hw/acpi/acpi.h
@@ -179,8 +179,8 @@ extern size_t acpi_tables_len;
 uint8_t *acpi_table_first(void);
 uint8_t *acpi_table_next(uint8_t *current);
 unsigned acpi_table_len(void *current);
-void acpi_table_add(const QemuOpts *opts, Error **errp);
-void acpi_table_add_builtin(const QemuOpts *opts, Error **errp);
+void acpi_table_add(const QemuOpts *opts, Error *errp[static 1]);
+void acpi_table_add_builtin(const QemuOpts *opts, Error *errp[static 1]);
 
 typedef struct AcpiSlicOem AcpiSlicOem;
 struct AcpiSlicOem {
diff --git a/include/hw/acpi/cpu.h b/include/hw/acpi/cpu.h
index 89ce172941..20e2187cfc 100644
--- a/include/hw/acpi/cpu.h
+++ b/include/hw/acpi/cpu.h
@@ -35,14 +35,15 @@ typedef struct CPUHotplugState {
 } CPUHotplugState;
 
 void acpi_cpu_plug_cb(HotplugHandler *hotplug_dev,
-                      CPUHotplugState *cpu_st, DeviceState *dev, Error **errp);
+                      CPUHotplugState *cpu_st, DeviceState *dev,
+                      Error *errp[static 1]);
 
 void acpi_cpu_unplug_request_cb(HotplugHandler *hotplug_dev,
                                 CPUHotplugState *cpu_st,
-                                DeviceState *dev, Error **errp);
+                                DeviceState *dev, Error *errp[static 1]);
 
 void acpi_cpu_unplug_cb(CPUHotplugState *cpu_st,
-                        DeviceState *dev, Error **errp);
+                        DeviceState *dev, Error *errp[static 1]);
 
 void cpu_hotplug_hw_init(MemoryRegion *as, Object *owner,
                          CPUHotplugState *state, hwaddr base_addr);
diff --git a/include/hw/acpi/cpu_hotplug.h b/include/hw/acpi/cpu_hotplug.h
index 3b932abbbb..73ccd64c20 100644
--- a/include/hw/acpi/cpu_hotplug.h
+++ b/include/hw/acpi/cpu_hotplug.h
@@ -26,7 +26,8 @@ typedef struct AcpiCpuHotplug {
 } AcpiCpuHotplug;
 
 void legacy_acpi_cpu_plug_cb(HotplugHandler *hotplug_dev,
-                             AcpiCpuHotplug *g, DeviceState *dev, Error 
**errp);
+                             AcpiCpuHotplug *g, DeviceState *dev,
+                             Error *errp[static 1]);
 
 void legacy_acpi_cpu_hotplug_init(MemoryRegion *parent, Object *owner,
                                   AcpiCpuHotplug *gpe_cpu, uint16_t base);
diff --git a/include/hw/acpi/ich9.h b/include/hw/acpi/ich9.h
index a352c94fde..af5357f702 100644
--- a/include/hw/acpi/ich9.h
+++ b/include/hw/acpi/ich9.h
@@ -70,14 +70,15 @@ void ich9_pm_init(PCIDevice *lpc_pci, ICH9LPCPMRegs *pm,
 void ich9_pm_iospace_update(ICH9LPCPMRegs *pm, uint32_t pm_io_base);
 extern const VMStateDescription vmstate_ich9_pm;
 
-void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm, Error **errp);
+void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm,
+                           Error *errp[static 1]);
 
 void ich9_pm_device_plug_cb(HotplugHandler *hotplug_dev, DeviceState *dev,
-                            Error **errp);
+                            Error *errp[static 1]);
 void ich9_pm_device_unplug_request_cb(HotplugHandler *hotplug_dev,
-                                      DeviceState *dev, Error **errp);
+                                      DeviceState *dev, Error *errp[static 1]);
 void ich9_pm_device_unplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev,
-                              Error **errp);
+                              Error *errp[static 1]);
 
 void ich9_pm_ospm_status(AcpiDeviceIf *adev, ACPIOSTInfoList ***list);
 #endif /* HW_ACPI_ICH9_H */
diff --git a/include/hw/acpi/memory_hotplug.h b/include/hw/acpi/memory_hotplug.h
index 77c65765d6..fe8f64c66f 100644
--- a/include/hw/acpi/memory_hotplug.h
+++ b/include/hw/acpi/memory_hotplug.h
@@ -32,12 +32,12 @@ void acpi_memory_hotplug_init(MemoryRegion *as, Object 
*owner,
                               MemHotplugState *state, uint16_t io_base);
 
 void acpi_memory_plug_cb(HotplugHandler *hotplug_dev, MemHotplugState *mem_st,
-                         DeviceState *dev, Error **errp);
+                         DeviceState *dev, Error *errp[static 1]);
 void acpi_memory_unplug_request_cb(HotplugHandler *hotplug_dev,
                                    MemHotplugState *mem_st,
-                                   DeviceState *dev, Error **errp);
+                                   DeviceState *dev, Error *errp[static 1]);
 void acpi_memory_unplug_cb(MemHotplugState *mem_st,
-                           DeviceState *dev, Error **errp);
+                           DeviceState *dev, Error *errp[static 1]);
 
 extern const VMStateDescription vmstate_memory_hotplug;
 #define VMSTATE_MEMORY_HOTPLUG(memhp, state) \
diff --git a/include/hw/acpi/pcihp.h b/include/hw/acpi/pcihp.h
index 8a65f99fc8..7442f8c337 100644
--- a/include/hw/acpi/pcihp.h
+++ b/include/hw/acpi/pcihp.h
@@ -57,9 +57,9 @@ void acpi_pcihp_init(Object *owner, AcpiPciHpState *, PCIBus 
*root,
                      MemoryRegion *address_space_io, bool bridges_enabled);
 
 void acpi_pcihp_device_plug_cb(HotplugHandler *hotplug_dev, AcpiPciHpState *s,
-                               DeviceState *dev, Error **errp);
+                               DeviceState *dev, Error *errp[static 1]);
 void acpi_pcihp_device_unplug_cb(HotplugHandler *hotplug_dev, AcpiPciHpState 
*s,
-                                 DeviceState *dev, Error **errp);
+                                 DeviceState *dev, Error *errp[static 1]);
 
 /* Called on reset */
 void acpi_pcihp_reset(AcpiPciHpState *s);
diff --git a/include/hw/block/block.h b/include/hw/block/block.h
index f3f6e8ef02..0408e96a84 100644
--- a/include/hw/block/block.h
+++ b/include/hw/block/block.h
@@ -74,10 +74,10 @@ static inline unsigned int get_physical_block_exp(BlockConf 
*conf)
 void blkconf_serial(BlockConf *conf, char **serial);
 void blkconf_geometry(BlockConf *conf, int *trans,
                       unsigned cyls_max, unsigned heads_max, unsigned secs_max,
-                      Error **errp);
+                      Error *errp[static 1]);
 void blkconf_blocksizes(BlockConf *conf);
 void blkconf_apply_backend_options(BlockConf *conf, bool readonly,
-                                   bool resizable, Error **errp);
+                                   bool resizable, Error *errp[static 1]);
 
 /* Hard disk geometry */
 
diff --git a/include/hw/boards.h b/include/hw/boards.h
index 76ce0219ff..aa36da926f 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -45,7 +45,7 @@ void machine_register_compat_props(MachineState *machine);
 HotpluggableCPUList *machine_query_hotpluggable_cpus(MachineState *machine);
 void machine_set_cpu_numa_node(MachineState *machine,
                                const CpuInstanceProperties *props,
-                               Error **errp);
+                               Error *errp[static 1]);
 
 /**
  * CPUArchId:
diff --git a/include/hw/char/serial.h b/include/hw/char/serial.h
index c4daf11a14..d3463ca0f8 100644
--- a/include/hw/char/serial.h
+++ b/include/hw/char/serial.h
@@ -82,7 +82,7 @@ struct SerialState {
 extern const VMStateDescription vmstate_serial;
 extern const MemoryRegionOps serial_io_ops;
 
-void serial_realize_core(SerialState *s, Error **errp);
+void serial_realize_core(SerialState *s, Error *errp[static 1]);
 void serial_exit_core(SerialState *s);
 void serial_set_frequency(SerialState *s, uint32_t frequency);
 
diff --git a/include/hw/hotplug.h b/include/hw/hotplug.h
index 1a0516a479..eb3344e5dd 100644
--- a/include/hw/hotplug.h
+++ b/include/hw/hotplug.h
@@ -72,7 +72,7 @@ typedef struct HotplugHandlerClass {
  */
 void hotplug_handler_plug(HotplugHandler *plug_handler,
                           DeviceState *plugged_dev,
-                          Error **errp);
+                          Error *errp[static 1]);
 
 /**
  * hotplug_handler_pre_plug:
@@ -81,7 +81,7 @@ void hotplug_handler_plug(HotplugHandler *plug_handler,
  */
 void hotplug_handler_pre_plug(HotplugHandler *plug_handler,
                               DeviceState *plugged_dev,
-                              Error **errp);
+                              Error *errp[static 1]);
 
 /**
  * hotplug_handler_unplug_request:
@@ -90,7 +90,7 @@ void hotplug_handler_pre_plug(HotplugHandler *plug_handler,
  */
 void hotplug_handler_unplug_request(HotplugHandler *plug_handler,
                                     DeviceState *plugged_dev,
-                                    Error **errp);
+                                    Error *errp[static 1]);
 /**
  * hotplug_handler_unplug:
  *
@@ -98,5 +98,5 @@ void hotplug_handler_unplug_request(HotplugHandler 
*plug_handler,
  */
 void hotplug_handler_unplug(HotplugHandler *plug_handler,
                             DeviceState *plugged_dev,
-                            Error **errp);
+                            Error *errp[static 1]);
 #endif
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index d071c9c0e9..07344a115e 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -239,7 +239,7 @@ void pc_register_ferr_irq(qemu_irq irq);
 void pc_acpi_smi_interrupt(void *opaque, int irq, int level);
 
 void pc_cpus_init(PCMachineState *pcms);
-void pc_hot_add_cpu(const int64_t id, Error **errp);
+void pc_hot_add_cpu(const int64_t id, Error *errp[static 1]);
 void pc_acpi_init(const char *default_dsdt);
 
 void pc_guest_info_init(PCMachineState *pcms);
diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h
index 4b8c13532c..af66c5d4a4 100644
--- a/include/hw/isa/isa.h
+++ b/include/hw/isa/isa.h
@@ -100,7 +100,7 @@ struct ISADevice {
 };
 
 ISABus *isa_bus_new(DeviceState *dev, MemoryRegion *address_space,
-                    MemoryRegion *address_space_io, Error **errp);
+                    MemoryRegion *address_space_io, Error *errp[static 1]);
 void isa_bus_irqs(ISABus *bus, qemu_irq *irqs);
 qemu_irq isa_get_irq(ISADevice *dev, int isairq);
 void isa_init_irq(ISADevice *dev, qemu_irq *p, int isairq);
diff --git a/include/hw/loader.h b/include/hw/loader.h
index 490c9ff8e6..ac4d10433f 100644
--- a/include/hw/loader.h
+++ b/include/hw/loader.h
@@ -129,7 +129,8 @@ int load_elf(const char *filename, uint64_t 
(*translate_fn)(void *, uint64_t),
  * Inspect an ELF file's header. Read its full header contents into a
  * buffer and/or determine if the ELF is 64bit.
  */
-void load_elf_hdr(const char *filename, void *hdr, bool *is64, Error **errp);
+void load_elf_hdr(const char *filename, void *hdr, bool *is64,
+                 Error *errp[static 1]);
 
 int load_aout(const char *filename, hwaddr addr, int max_sz,
               int bswap_needed, hwaddr target_page_size);
diff --git a/include/hw/mem/pc-dimm.h b/include/hw/mem/pc-dimm.h
index 1e483f2670..2a91796c8c 100644
--- a/include/hw/mem/pc-dimm.h
+++ b/include/hw/mem/pc-dimm.h
@@ -89,14 +89,16 @@ typedef struct MemoryHotplugState {
 uint64_t pc_dimm_get_free_addr(uint64_t address_space_start,
                                uint64_t address_space_size,
                                uint64_t *hint, uint64_t align, uint64_t size,
-                               Error **errp);
+                               Error *errp[static 1]);
 
-int pc_dimm_get_free_slot(const int *hint, int max_slots, Error **errp);
+int pc_dimm_get_free_slot(const int *hint, int max_slots,
+                         Error *errp[static 1]);
 
 int qmp_pc_dimm_device_list(Object *obj, void *opaque);
-uint64_t pc_existing_dimms_capacity(Error **errp);
+uint64_t pc_existing_dimms_capacity(Error *errp[static 1]);
 void pc_dimm_memory_plug(DeviceState *dev, MemoryHotplugState *hpms,
-                         MemoryRegion *mr, uint64_t align, Error **errp);
+                         MemoryRegion *mr, uint64_t align,
+                         Error *errp[static 1]);
 void pc_dimm_memory_unplug(DeviceState *dev, MemoryHotplugState *hpms,
                            MemoryRegion *mr);
 #endif
diff --git a/include/hw/nmi.h b/include/hw/nmi.h
index d092c684a1..472ef9f2e1 100644
--- a/include/hw/nmi.h
+++ b/include/hw/nmi.h
@@ -44,6 +44,6 @@ typedef struct NMIClass {
     void (*nmi_monitor_handler)(NMIState *n, int cpu_index, Error **errp);
 } NMIClass;
 
-void nmi_monitor_handle(int cpu_index, Error **errp);
+void nmi_monitor_handle(int cpu_index, Error *errp[static 1]);
 
 #endif /* NMI_H */
diff --git a/include/hw/pci/msi.h b/include/hw/pci/msi.h
index 4837bcf490..dd84819016 100644
--- a/include/hw/pci/msi.h
+++ b/include/hw/pci/msi.h
@@ -36,7 +36,7 @@ MSIMessage msi_get_message(PCIDevice *dev, unsigned int 
vector);
 bool msi_enabled(const PCIDevice *dev);
 int msi_init(struct PCIDevice *dev, uint8_t offset,
              unsigned int nr_vectors, bool msi64bit,
-             bool msi_per_vector_mask, Error **errp);
+             bool msi_per_vector_mask, Error *errp[static 1]);
 void msi_uninit(struct PCIDevice *dev);
 void msi_reset(PCIDevice *dev);
 void msi_notify(PCIDevice *dev, unsigned int vector);
diff --git a/include/hw/pci/msix.h b/include/hw/pci/msix.h
index 1f27658d35..76f3cf27a4 100644
--- a/include/hw/pci/msix.h
+++ b/include/hw/pci/msix.h
@@ -10,9 +10,9 @@ int msix_init(PCIDevice *dev, unsigned short nentries,
               MemoryRegion *table_bar, uint8_t table_bar_nr,
               unsigned table_offset, MemoryRegion *pba_bar,
               uint8_t pba_bar_nr, unsigned pba_offset, uint8_t cap_pos,
-              Error **errp);
+              Error *errp[static 1]);
 int msix_init_exclusive_bar(PCIDevice *dev, unsigned short nentries,
-                            uint8_t bar_nr, Error **errp);
+                            uint8_t bar_nr, Error *errp[static 1]);
 
 void msix_write_config(PCIDevice *dev, uint32_t address, uint32_t val, int 
len);
 
diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
index a37a2d5cb6..bffb8a6bbb 100644
--- a/include/hw/pci/pci.h
+++ b/include/hw/pci/pci.h
@@ -359,7 +359,7 @@ int pci_add_capability(PCIDevice *pdev, uint8_t cap_id,
                        uint8_t offset, uint8_t size);
 int pci_add_capability2(PCIDevice *pdev, uint8_t cap_id,
                        uint8_t offset, uint8_t size,
-                       Error **errp);
+                       Error *errp[static 1]);
 
 void pci_del_capability(PCIDevice *pci_dev, uint8_t cap_id, uint8_t cap_size);
 
diff --git a/include/hw/pci/pcie.h b/include/hw/pci/pcie.h
index 3d8f24b007..08c33a1ff5 100644
--- a/include/hw/pci/pcie.h
+++ b/include/hw/pci/pcie.h
@@ -131,7 +131,8 @@ void pcie_dev_ser_num_init(PCIDevice *dev, uint16_t offset, 
uint64_t ser_num);
 void pcie_ats_init(PCIDevice *dev, uint16_t offset);
 
 void pcie_cap_slot_hotplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev,
-                              Error **errp);
+                              Error *errp[static 1]);
 void pcie_cap_slot_hot_unplug_request_cb(HotplugHandler *hotplug_dev,
-                                         DeviceState *dev, Error **errp);
+                                         DeviceState *dev,
+                                         Error *errp[static 1]);
 #endif /* QEMU_PCIE_H */
diff --git a/include/hw/pci/pcie_aer.h b/include/hw/pci/pcie_aer.h
index 729a9439c8..084a11f99e 100644
--- a/include/hw/pci/pcie_aer.h
+++ b/include/hw/pci/pcie_aer.h
@@ -87,7 +87,7 @@ struct PCIEAERErr {
 extern const VMStateDescription vmstate_pcie_aer_log;
 
 int pcie_aer_init(PCIDevice *dev, uint8_t cap_ver, uint16_t offset,
-                  uint16_t size, Error **errp);
+                  uint16_t size, Error *errp[static 1]);
 void pcie_aer_exit(PCIDevice *dev);
 void pcie_aer_write_config(PCIDevice *dev,
                            uint32_t addr, uint32_t val, int len);
diff --git a/include/hw/pci/shpc.h b/include/hw/pci/shpc.h
index 71e836b1c0..fc18466e39 100644
--- a/include/hw/pci/shpc.h
+++ b/include/hw/pci/shpc.h
@@ -45,9 +45,10 @@ void shpc_cap_write_config(PCIDevice *d, uint32_t addr, 
uint32_t val, int len);
 
 
 void shpc_device_hotplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev,
-                            Error **errp);
+                            Error *errp[static 1]);
 void shpc_device_hot_unplug_request_cb(HotplugHandler *hotplug_dev,
-                                       DeviceState *dev, Error **errp);
+                                       DeviceState *dev,
+                                       Error *errp[static 1]);
 
 extern VMStateInfo shpc_vmstate_info;
 #define SHPC_VMSTATE(_field, _type,  _test) \
diff --git a/include/hw/ppc/pnv_xscom.h b/include/hw/ppc/pnv_xscom.h
index 3757b2cab9..41ba14e0cc 100644
--- a/include/hw/ppc/pnv_xscom.h
+++ b/include/hw/ppc/pnv_xscom.h
@@ -66,7 +66,7 @@ typedef struct PnvXScomInterfaceClass {
 #define PNV_XSCOM_OCC_BASE        0x0066000
 #define PNV_XSCOM_OCC_SIZE        0x6000
 
-extern void pnv_xscom_realize(PnvChip *chip, Error **errp);
+extern void pnv_xscom_realize(PnvChip *chip, Error *errp[static 1]);
 extern int pnv_xscom_populate(PnvChip *chip, void *fdt, int offset);
 
 extern void pnv_xscom_add_subregion(PnvChip *chip, hwaddr offset,
diff --git a/include/hw/ppc/xics.h b/include/hw/ppc/xics.h
index a3073f9053..2804fbfc97 100644
--- a/include/hw/ppc/xics.h
+++ b/include/hw/ppc/xics.h
@@ -174,9 +174,10 @@ typedef struct XICSFabricClass {
 
 #define XICS_IRQS_SPAPR               1024
 
-int spapr_ics_alloc(ICSState *ics, int irq_hint, bool lsi, Error **errp);
+int spapr_ics_alloc(ICSState *ics, int irq_hint, bool lsi,
+                   Error *errp[static 1]);
 int spapr_ics_alloc_block(ICSState *ics, int num, bool lsi, bool align,
-                           Error **errp);
+                           Error *errp[static 1]);
 void spapr_ics_free(ICSState *ics, int irq, int num);
 void spapr_dt_xics(int nr_servers, void *fdt, uint32_t phandle);
 
@@ -204,7 +205,7 @@ void icp_resend(ICPState *ss);
 
 typedef struct sPAPRMachineState sPAPRMachineState;
 
-int xics_kvm_init(sPAPRMachineState *spapr, Error **errp);
+int xics_kvm_init(sPAPRMachineState *spapr, Error *errp[static 1]);
 void xics_spapr_init(sPAPRMachineState *spapr);
 
 #endif /* XICS_H */
diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
index e69489ec6c..5cca0b95e0 100644
--- a/include/hw/qdev-core.h
+++ b/include/hw/qdev-core.h
@@ -271,9 +271,9 @@ void qdev_init_nofail(DeviceState *dev);
 void qdev_set_legacy_instance_id(DeviceState *dev, int alias_id,
                                  int required_for_version);
 HotplugHandler *qdev_get_hotplug_handler(DeviceState *dev);
-void qdev_unplug(DeviceState *dev, Error **errp);
+void qdev_unplug(DeviceState *dev, Error *errp[static 1]);
 void qdev_simple_device_unplug_cb(HotplugHandler *hotplug_dev,
-                                  DeviceState *dev, Error **errp);
+                                  DeviceState *dev, Error *errp[static 1]);
 void qdev_machine_creation_done(void);
 bool qdev_machine_modified(void);
 
@@ -382,9 +382,9 @@ char *qdev_get_dev_path(DeviceState *dev);
 GSList *qdev_build_hotpluggable_device_list(Object *peripheral);
 
 void qbus_set_hotplug_handler(BusState *bus, DeviceState *handler,
-                              Error **errp);
+                              Error *errp[static 1]);
 
-void qbus_set_bus_hotplug_handler(BusState *bus, Error **errp);
+void qbus_set_bus_hotplug_handler(BusState *bus, Error *errp[static 1]);
 
 static inline bool qbus_is_hotpluggable(BusState *bus)
 {
diff --git a/include/hw/qdev-properties.h b/include/hw/qdev-properties.h
index d206fc93dd..b1b569e662 100644
--- a/include/hw/qdev-properties.h
+++ b/include/hw/qdev-properties.h
@@ -187,7 +187,7 @@ void qdev_prop_set_string(DeviceState *dev, const char 
*name, const char *value)
 void qdev_prop_set_chr(DeviceState *dev, const char *name, Chardev *value);
 void qdev_prop_set_netdev(DeviceState *dev, const char *name, NetClientState 
*value);
 void qdev_prop_set_drive(DeviceState *dev, const char *name,
-                         BlockBackend *value, Error **errp);
+                         BlockBackend *value, Error *errp[static 1]);
 void qdev_prop_set_macaddr(DeviceState *dev, const char *name,
                            const uint8_t *value);
 void qdev_prop_set_enum(DeviceState *dev, const char *name, int value);
@@ -211,7 +211,8 @@ void error_set_from_qdev_prop_error(Error **errp, int ret, 
DeviceState *dev,
  * On error, store error in @errp.  Static properties access data in a struct.
  * The type of the QOM property is derived from prop->info.
  */
-void qdev_property_add_static(DeviceState *dev, Property *prop, Error **errp);
+void qdev_property_add_static(DeviceState *dev, Property *prop,
+                             Error *errp[static 1]);
 
 void qdev_alias_all_properties(DeviceState *target, Object *source);
 
@@ -226,7 +227,7 @@ void qdev_alias_all_properties(DeviceState *target, Object 
*source);
  * a friendly format identifying both the device and the property.
  */
 void qdev_prop_set_after_realize(DeviceState *dev, const char *name,
-                                 Error **errp);
+                                 Error *errp[static 1]);
 
 /**
  * qdev_prop_allow_set_link_before_realize:
@@ -236,6 +237,7 @@ void qdev_prop_set_after_realize(DeviceState *dev, const 
char *name,
  * object_property_add_link().
  */
 void qdev_prop_allow_set_link_before_realize(Object *obj, const char *name,
-                                             Object *val, Error **errp);
+                                             Object *val,
+                                             Error *errp[static 1]);
 
 #endif
diff --git a/include/hw/s390x/css.h b/include/hw/s390x/css.h
index 596a2f2ef3..3d5dc0edc9 100644
--- a/include/hw/s390x/css.h
+++ b/include/hw/s390x/css.h
@@ -161,7 +161,7 @@ typedef enum {
 
 uint32_t css_get_adapter_id(CssIoAdapterType type, uint8_t isc);
 void css_register_io_adapters(CssIoAdapterType type, bool swap, bool maskable,
-                              Error **errp);
+                              Error *errp[static 1]);
 
 #ifndef CONFIG_USER_ONLY
 SubchDev *css_find_subch(uint8_t m, uint8_t cssid, uint8_t ssid,
@@ -218,5 +218,5 @@ extern PropertyInfo css_devid_ro_propinfo;
  * is responsible for unregistering and freeing it.
  */
 SubchDev *css_create_sch(CssDevId bus_id, bool is_virtual, bool squash_mcss,
-                         Error **errp);
+                         Error *errp[static 1]);
 #endif
diff --git a/include/hw/scsi/scsi.h b/include/hw/scsi/scsi.h
index 6b85786dbf..3d04dbba67 100644
--- a/include/hw/scsi/scsi.h
+++ b/include/hw/scsi/scsi.h
@@ -176,7 +176,8 @@ static inline SCSIBus *scsi_bus_from_device(SCSIDevice *d)
 
 SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, BlockBackend *blk,
                                       int unit, bool removable, int bootindex,
-                                      const char *serial, Error **errp);
+                                      const char *serial,
+                                      Error *errp[static 1]);
 void scsi_bus_legacy_handle_cmdline(SCSIBus *bus, bool deprecated);
 void scsi_legacy_handle_cmdline(void);
 
diff --git a/include/hw/smbios/smbios.h b/include/hw/smbios/smbios.h
index 31e8d5f47e..e3a08a09f1 100644
--- a/include/hw/smbios/smbios.h
+++ b/include/hw/smbios/smbios.h
@@ -257,7 +257,7 @@ struct smbios_type_127 {
     struct smbios_structure_header header;
 } QEMU_PACKED;
 
-void smbios_entry_add(QemuOpts *opts, Error **errp);
+void smbios_entry_add(QemuOpts *opts, Error *errp[static 1]);
 void smbios_set_cpuid(uint32_t version, uint32_t features);
 void smbios_set_defaults(const char *manufacturer, const char *product,
                          const char *version, bool legacy_mode,
diff --git a/include/hw/usb.h b/include/hw/usb.h
index eb28655270..9a95e1d147 100644
--- a/include/hw/usb.h
+++ b/include/hw/usb.h
@@ -542,15 +542,15 @@ void usb_register_port(USBBus *bus, USBPort *port, void 
*opaque, int index,
 void usb_register_companion(const char *masterbus, USBPort *ports[],
                             uint32_t portcount, uint32_t firstport,
                             void *opaque, USBPortOps *ops, int speedmask,
-                            Error **errp);
+                            Error *errp[static 1]);
 void usb_port_location(USBPort *downstream, USBPort *upstream, int portnr);
 void usb_unregister_port(USBBus *bus, USBPort *port);
-void usb_claim_port(USBDevice *dev, Error **errp);
+void usb_claim_port(USBDevice *dev, Error *errp[static 1]);
 void usb_release_port(USBDevice *dev);
-void usb_device_attach(USBDevice *dev, Error **errp);
+void usb_device_attach(USBDevice *dev, Error *errp[static 1]);
 int usb_device_detach(USBDevice *dev);
 int usb_device_delete_addr(int busnr, int addr);
-void usb_check_attach(USBDevice *dev, Error **errp);
+void usb_check_attach(USBDevice *dev, Error *errp[static 1]);
 
 static inline USBBus *usb_bus_from_device(USBDevice *d)
 {
diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
index 9521013d52..3404659297 100644
--- a/include/hw/vfio/vfio-common.h
+++ b/include/hw/vfio/vfio-common.h
@@ -156,10 +156,11 @@ void vfio_region_mmaps_set_enabled(VFIORegion *region, 
bool enabled);
 void vfio_region_exit(VFIORegion *region);
 void vfio_region_finalize(VFIORegion *region);
 void vfio_reset_handler(void *opaque);
-VFIOGroup *vfio_get_group(int groupid, AddressSpace *as, Error **errp);
+VFIOGroup *vfio_get_group(int groupid, AddressSpace *as,
+                         Error *errp[static 1]);
 void vfio_put_group(VFIOGroup *group);
 int vfio_get_device(VFIOGroup *group, const char *name,
-                    VFIODevice *vbasedev, Error **errp);
+                    VFIODevice *vbasedev, Error *errp[static 1]);
 
 extern const MemoryRegionOps vfio_region_ops;
 extern QLIST_HEAD(vfio_group_head, VFIOGroup) vfio_group_list;
diff --git a/include/hw/virtio/vhost-scsi-common.h 
b/include/hw/virtio/vhost-scsi-common.h
index 4553be4bc3..ed74797e1d 100644
--- a/include/hw/virtio/vhost-scsi-common.h
+++ b/include/hw/virtio/vhost-scsi-common.h
@@ -43,6 +43,6 @@ char *vhost_scsi_common_get_fw_dev_path(FWPathProvider *p, 
BusState *bus,
                                         DeviceState *dev);
 void vhost_scsi_common_set_config(VirtIODevice *vdev, const uint8_t *config);
 uint64_t vhost_scsi_common_get_features(VirtIODevice *vdev, uint64_t features,
-                                        Error **errp);
+                                        Error *errp[static 1]);
 
 #endif /* VHOST_SCSI_COMMON_H */
diff --git a/include/hw/virtio/virtio-bus.h b/include/hw/virtio/virtio-bus.h
index a63c1d216d..7f0f5e92c1 100644
--- a/include/hw/virtio/virtio-bus.h
+++ b/include/hw/virtio/virtio-bus.h
@@ -110,7 +110,7 @@ struct VirtioBusState {
     int ioeventfd_grabbed;
 };
 
-void virtio_bus_device_plugged(VirtIODevice *vdev, Error **errp);
+void virtio_bus_device_plugged(VirtIODevice *vdev, Error *errp[static 1]);
 void virtio_bus_reset(VirtioBusState *bus);
 void virtio_bus_device_unplugged(VirtIODevice *bus);
 /* Get the device id of the plugged device. */
diff --git a/include/hw/virtio/virtio-scsi.h b/include/hw/virtio/virtio-scsi.h
index eac2013ddd..bdd037f8be 100644
--- a/include/hw/virtio/virtio-scsi.h
+++ b/include/hw/virtio/virtio-scsi.h
@@ -141,9 +141,9 @@ void virtio_scsi_common_realize(DeviceState *dev,
                                 VirtIOHandleOutput ctrl,
                                 VirtIOHandleOutput evt,
                                 VirtIOHandleOutput cmd,
-                                Error **errp);
+                                Error *errp[static 1]);
 
-void virtio_scsi_common_unrealize(DeviceState *dev, Error **errp);
+void virtio_scsi_common_unrealize(DeviceState *dev, Error *errp[static 1]);
 bool virtio_scsi_handle_event_vq(VirtIOSCSI *s, VirtQueue *vq);
 bool virtio_scsi_handle_cmd_vq(VirtIOSCSI *s, VirtQueue *vq);
 bool virtio_scsi_handle_ctrl_vq(VirtIOSCSI *s, VirtQueue *vq);
@@ -152,7 +152,7 @@ void virtio_scsi_free_req(VirtIOSCSIReq *req);
 void virtio_scsi_push_event(VirtIOSCSI *s, SCSIDevice *dev,
                             uint32_t event, uint32_t reason);
 
-void virtio_scsi_dataplane_setup(VirtIOSCSI *s, Error **errp);
+void virtio_scsi_dataplane_setup(VirtIOSCSI *s, Error *errp[static 1]);
 int virtio_scsi_dataplane_start(VirtIODevice *s);
 void virtio_scsi_dataplane_stop(VirtIODevice *s);
 
diff --git a/include/hw/xen/xen.h b/include/hw/xen/xen.h
index 7efcdaa8fe..5d2d1e5824 100644
--- a/include/hw/xen/xen.h
+++ b/include/hw/xen/xen.h
@@ -43,7 +43,7 @@ void xenstore_store_pv_console_info(int i, struct Chardev 
*chr);
 void xen_hvm_init(PCMachineState *pcms, MemoryRegion **ram_memory);
 
 void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size,
-                   struct MemoryRegion *mr, Error **errp);
+                   struct MemoryRegion *mr, Error *errp[static 1]);
 void xen_hvm_modified_memory(ram_addr_t start, ram_addr_t length);
 
 void xen_register_framebuffer(struct MemoryRegion *mr);
diff --git a/include/io/channel-command.h b/include/io/channel-command.h
index 336d47fa5c..56ddbe5901 100644
--- a/include/io/channel-command.h
+++ b/include/io/channel-command.h
@@ -85,7 +85,7 @@ qio_channel_command_new_pid(int writefd,
 QIOChannelCommand *
 qio_channel_command_new_spawn(const char *const argv[],
                               int flags,
-                              Error **errp);
+                              Error *errp[static 1]);
 
 
 #endif /* QIO_CHANNEL_COMMAND_H */
diff --git a/include/io/channel-file.h b/include/io/channel-file.h
index 79245f1183..f7e6078c4a 100644
--- a/include/io/channel-file.h
+++ b/include/io/channel-file.h
@@ -88,6 +88,6 @@ QIOChannelFile *
 qio_channel_file_new_path(const char *path,
                           int flags,
                           mode_t mode,
-                          Error **errp);
+                          Error *errp[static 1]);
 
 #endif /* QIO_CHANNEL_FILE_H */
diff --git a/include/io/channel-socket.h b/include/io/channel-socket.h
index 53801f6042..95b3028854 100644
--- a/include/io/channel-socket.h
+++ b/include/io/channel-socket.h
@@ -76,7 +76,7 @@ qio_channel_socket_new(void);
  */
 QIOChannelSocket *
 qio_channel_socket_new_fd(int fd,
-                          Error **errp);
+                          Error *errp[static 1]);
 
 
 /**
@@ -92,7 +92,7 @@ qio_channel_socket_new_fd(int fd,
  */
 int qio_channel_socket_connect_sync(QIOChannelSocket *ioc,
                                     SocketAddress *addr,
-                                    Error **errp);
+                                    Error *errp[static 1]);
 
 /**
  * qio_channel_socket_connect_async:
@@ -129,7 +129,7 @@ void qio_channel_socket_connect_async(QIOChannelSocket *ioc,
  */
 int qio_channel_socket_listen_sync(QIOChannelSocket *ioc,
                                    SocketAddress *addr,
-                                   Error **errp);
+                                   Error *errp[static 1]);
 
 /**
  * qio_channel_socket_listen_async:
@@ -169,7 +169,7 @@ void qio_channel_socket_listen_async(QIOChannelSocket *ioc,
 int qio_channel_socket_dgram_sync(QIOChannelSocket *ioc,
                                   SocketAddress *localAddr,
                                   SocketAddress *remoteAddr,
-                                  Error **errp);
+                                  Error *errp[static 1]);
 
 /**
  * qio_channel_socket_dgram_async:
@@ -212,7 +212,7 @@ void qio_channel_socket_dgram_async(QIOChannelSocket *ioc,
  */
 SocketAddress *
 qio_channel_socket_get_local_address(QIOChannelSocket *ioc,
-                                     Error **errp);
+                                     Error *errp[static 1]);
 
 /**
  * qio_channel_socket_get_remote_address:
@@ -229,7 +229,7 @@ qio_channel_socket_get_local_address(QIOChannelSocket *ioc,
  */
 SocketAddress *
 qio_channel_socket_get_remote_address(QIOChannelSocket *ioc,
-                                      Error **errp);
+                                      Error *errp[static 1]);
 
 
 /**
@@ -245,7 +245,7 @@ qio_channel_socket_get_remote_address(QIOChannelSocket *ioc,
  */
 QIOChannelSocket *
 qio_channel_socket_accept(QIOChannelSocket *ioc,
-                          Error **errp);
+                          Error *errp[static 1]);
 
 
 #endif /* QIO_CHANNEL_SOCKET_H */
diff --git a/include/io/channel-tls.h b/include/io/channel-tls.h
index d157eb10e8..e086062ae7 100644
--- a/include/io/channel-tls.h
+++ b/include/io/channel-tls.h
@@ -78,7 +78,7 @@ QIOChannelTLS *
 qio_channel_tls_new_server(QIOChannel *master,
                            QCryptoTLSCreds *creds,
                            const char *aclname,
-                           Error **errp);
+                           Error *errp[static 1]);
 
 /**
  * qio_channel_tls_new_client:
@@ -108,7 +108,7 @@ QIOChannelTLS *
 qio_channel_tls_new_client(QIOChannel *master,
                            QCryptoTLSCreds *creds,
                            const char *hostname,
-                           Error **errp);
+                           Error *errp[static 1]);
 
 /**
  * qio_channel_tls_handshake:
diff --git a/include/io/channel-util.h b/include/io/channel-util.h
index c0b79cf603..56a7b99c1f 100644
--- a/include/io/channel-util.h
+++ b/include/io/channel-util.h
@@ -47,6 +47,6 @@
  * Returns: the channel object, or NULL on error
  */
 QIOChannel *qio_channel_new_fd(int fd,
-                               Error **errp);
+                               Error *errp[static 1]);
 
 #endif /* QIO_CHANNEL_UTIL_H */
diff --git a/include/io/channel.h b/include/io/channel.h
index db9bb022a1..695ec994b7 100644
--- a/include/io/channel.h
+++ b/include/io/channel.h
@@ -224,7 +224,7 @@ ssize_t qio_channel_readv_full(QIOChannel *ioc,
                                size_t niov,
                                int **fds,
                                size_t *nfds,
-                               Error **errp);
+                               Error *errp[static 1]);
 
 
 /**
@@ -266,7 +266,7 @@ ssize_t qio_channel_writev_full(QIOChannel *ioc,
                                 size_t niov,
                                 int *fds,
                                 size_t nfds,
-                                Error **errp);
+                                Error *errp[static 1]);
 
 /**
  * qio_channel_readv:
@@ -281,7 +281,7 @@ ssize_t qio_channel_writev_full(QIOChannel *ioc,
 ssize_t qio_channel_readv(QIOChannel *ioc,
                           const struct iovec *iov,
                           size_t niov,
-                          Error **errp);
+                          Error *errp[static 1]);
 
 /**
  * qio_channel_writev:
@@ -296,7 +296,7 @@ ssize_t qio_channel_readv(QIOChannel *ioc,
 ssize_t qio_channel_writev(QIOChannel *ioc,
                            const struct iovec *iov,
                            size_t niov,
-                           Error **errp);
+                           Error *errp[static 1]);
 
 /**
  * qio_channel_readv:
@@ -312,7 +312,7 @@ ssize_t qio_channel_writev(QIOChannel *ioc,
 ssize_t qio_channel_read(QIOChannel *ioc,
                          char *buf,
                          size_t buflen,
-                         Error **errp);
+                         Error *errp[static 1]);
 
 /**
  * qio_channel_write:
@@ -328,7 +328,7 @@ ssize_t qio_channel_read(QIOChannel *ioc,
 ssize_t qio_channel_write(QIOChannel *ioc,
                           const char *buf,
                           size_t buflen,
-                          Error **errp);
+                          Error *errp[static 1]);
 
 /**
  * qio_channel_set_blocking:
@@ -345,7 +345,7 @@ ssize_t qio_channel_write(QIOChannel *ioc,
  */
 int qio_channel_set_blocking(QIOChannel *ioc,
                              bool enabled,
-                             Error **errp);
+                             Error *errp[static 1]);
 
 /**
  * qio_channel_close:
@@ -357,7 +357,7 @@ int qio_channel_set_blocking(QIOChannel *ioc,
  * Returns: 0 on success, -1 on error
  */
 int qio_channel_close(QIOChannel *ioc,
-                      Error **errp);
+                      Error *errp[static 1]);
 
 /**
  * qio_channel_shutdown:
@@ -378,7 +378,7 @@ int qio_channel_close(QIOChannel *ioc,
  */
 int qio_channel_shutdown(QIOChannel *ioc,
                          QIOChannelShutdown how,
-                         Error **errp);
+                         Error *errp[static 1]);
 
 /**
  * qio_channel_set_delay:
@@ -457,7 +457,7 @@ void qio_channel_set_cork(QIOChannel *ioc,
 off_t qio_channel_io_seek(QIOChannel *ioc,
                           off_t offset,
                           int whence,
-                          Error **errp);
+                          Error *errp[static 1]);
 
 
 /**
diff --git a/include/io/dns-resolver.h b/include/io/dns-resolver.h
index 2f69c08c13..71de4450c0 100644
--- a/include/io/dns-resolver.h
+++ b/include/io/dns-resolver.h
@@ -180,7 +180,7 @@ int qio_dns_resolver_lookup_sync(QIODNSResolver *resolver,
                                  SocketAddress *addr,
                                  size_t *naddrs,
                                  SocketAddress ***addrs,
-                                 Error **errp);
+                                 Error *errp[static 1]);
 
 /**
  * qio_dns_resolver_lookup_async:
diff --git a/include/io/task.h b/include/io/task.h
index 6021f51336..d373340557 100644
--- a/include/io/task.h
+++ b/include/io/task.h
@@ -276,7 +276,7 @@ void qio_task_set_error(QIOTask *task,
  * Returns: true if an error was propagated, false otherwise
  */
 bool qio_task_propagate_error(QIOTask *task,
-                              Error **errp);
+                              Error *errp[static 1]);
 
 
 /**
diff --git a/include/migration/blocker.h b/include/migration/blocker.h
index acd27018e9..5b8be4e0af 100644
--- a/include/migration/blocker.h
+++ b/include/migration/blocker.h
@@ -23,7 +23,7 @@
  *
  * @returns - 0 on success, -EBUSY/-EACCES on failure, with errp set.
  */
-int migrate_add_blocker(Error *reason, Error **errp);
+int migrate_add_blocker(Error *reason, Error *errp[static 1]);
 
 /**
  * @migrate_del_blocker - remove a blocking error from migration
diff --git a/include/migration/failover.h b/include/migration/failover.h
index ad91ef2381..6bc59e2c77 100644
--- a/include/migration/failover.h
+++ b/include/migration/failover.h
@@ -20,7 +20,7 @@ void failover_init_state(void);
 FailoverStatus failover_set_state(FailoverStatus old_state,
                                      FailoverStatus new_state);
 FailoverStatus failover_get_state(void);
-void failover_request_active(Error **errp);
+void failover_request_active(Error *errp[static 1]);
 bool failover_request_is_active(void);
 
 #endif
diff --git a/include/migration/migration.h b/include/migration/migration.h
index 79b5484d65..5cdd9b6cf9 100644
--- a/include/migration/migration.h
+++ b/include/migration/migration.h
@@ -149,7 +149,7 @@ void migrate_set_state(int *state, int old_state, int 
new_state);
 
 void migration_fd_process_incoming(QEMUFile *f);
 
-void qemu_start_incoming_migration(const char *uri, Error **errp);
+void qemu_start_incoming_migration(const char *uri, Error *errp[static 1]);
 
 uint64_t migrate_max_downtime(void);
 
@@ -160,7 +160,7 @@ void migrate_fd_connect(MigrationState *s);
 void add_migration_state_change_notifier(Notifier *notify);
 void remove_migration_state_change_notifier(Notifier *notify);
 MigrationState *migrate_init(void);
-bool migration_is_blocked(Error **errp);
+bool migration_is_blocked(Error *errp[static 1]);
 bool migration_in_setup(MigrationState *);
 bool migration_is_idle(void);
 bool migration_has_finished(MigrationState *);
diff --git a/include/migration/snapshot.h b/include/migration/snapshot.h
index c85b6ec75b..48f6bd3b10 100644
--- a/include/migration/snapshot.h
+++ b/include/migration/snapshot.h
@@ -15,7 +15,7 @@
 #ifndef QEMU_MIGRATION_SNAPSHOT_H
 #define QEMU_MIGRATION_SNAPSHOT_H
 
-int save_snapshot(const char *name, Error **errp);
-int load_snapshot(const char *name, Error **errp);
+int save_snapshot(const char *name, Error *errp[static 1]);
+int load_snapshot(const char *name, Error *errp[static 1]);
 
 #endif
diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h
index 13fb10797a..8be9416bf8 100644
--- a/include/migration/vmstate.h
+++ b/include/migration/vmstate.h
@@ -1025,7 +1025,7 @@ int vmstate_register_with_alias_id(DeviceState *dev, int 
instance_id,
                                    const VMStateDescription *vmsd,
                                    void *base, int alias_id,
                                    int required_for_version,
-                                   Error **errp);
+                                   Error *errp[static 1]);
 
 /* Returns: 0 on success, -1 on failure */
 static inline int vmstate_register(DeviceState *dev, int instance_id,
diff --git a/include/monitor/monitor.h b/include/monitor/monitor.h
index d2b3aafdb4..35b2b7e818 100644
--- a/include/monitor/monitor.h
+++ b/include/monitor/monitor.h
@@ -30,8 +30,8 @@ int monitor_read_block_device_key(Monitor *mon, const char 
*device,
                                   BlockCompletionFunc *completion_cb,
                                   void *opaque);
 
-int monitor_get_fd(Monitor *mon, const char *fdname, Error **errp);
-int monitor_fd_param(Monitor *mon, const char *fdname, Error **errp);
+int monitor_get_fd(Monitor *mon, const char *fdname, Error *errp[static 1]);
+int monitor_fd_param(Monitor *mon, const char *fdname, Error *errp[static 1]);
 
 void monitor_vprintf(Monitor *mon, const char *fmt, va_list ap)
     GCC_FMT_ATTR(2, 0);
@@ -47,7 +47,7 @@ int monitor_read_password(Monitor *mon, ReadLineFunc 
*readline_func,
 
 AddfdInfo *monitor_fdset_add_fd(int fd, bool has_fdset_id, int64_t fdset_id,
                                 bool has_opaque, const char *opaque,
-                                Error **errp);
+                                Error *errp[static 1]);
 int monitor_fdset_get_fd(int64_t fdset_id, int flags);
 int monitor_fdset_dup_fd_add(int64_t fdset_id, int dup_fd);
 void monitor_fdset_dup_fd_remove(int dup_fd);
diff --git a/include/monitor/qdev.h b/include/monitor/qdev.h
index 0ff3331284..437724dc98 100644
--- a/include/monitor/qdev.h
+++ b/include/monitor/qdev.h
@@ -8,10 +8,10 @@
 void hmp_info_qtree(Monitor *mon, const QDict *qdict);
 void hmp_info_qdm(Monitor *mon, const QDict *qdict);
 void hmp_info_qom_tree(Monitor *mon, const QDict *dict);
-void qmp_device_add(QDict *qdict, QObject **ret_data, Error **errp);
+void qmp_device_add(QDict *qdict, QObject **ret_data, Error *errp[static 1]);
 
 int qdev_device_help(QemuOpts *opts);
-DeviceState *qdev_device_add(QemuOpts *opts, Error **errp);
+DeviceState *qdev_device_add(QemuOpts *opts, Error *errp[static 1]);
 void qdev_set_id(DeviceState *dev, const char *id);
 
 #endif
diff --git a/include/net/net.h b/include/net/net.h
index 99b28d5b38..5aec9d2494 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -201,15 +201,15 @@ extern const char *host_net_devices[];
 extern const char *legacy_tftp_prefix;
 extern const char *legacy_bootp_filename;
 
-int net_client_init(QemuOpts *opts, bool is_netdev, Error **errp);
+int net_client_init(QemuOpts *opts, bool is_netdev, Error *errp[static 1]);
 int net_client_parse(QemuOptsList *opts_list, const char *str);
 int net_init_clients(void);
 void net_check_clients(void);
 void net_cleanup(void);
 void hmp_host_net_add(Monitor *mon, const QDict *qdict);
 void hmp_host_net_remove(Monitor *mon, const QDict *qdict);
-void netdev_add(QemuOpts *opts, Error **errp);
-void qmp_netdev_add(QDict *qdict, QObject **ret, Error **errp);
+void netdev_add(QemuOpts *opts, Error *errp[static 1]);
+void qmp_netdev_add(QDict *qdict, QObject **ret, Error *errp[static 1]);
 
 int net_hub_id_for_client(NetClientState *nc, int *id);
 NetClientState *net_hub_port_find(int hub_id);
diff --git a/include/qapi/error.h b/include/qapi/error.h
index d1378396dd..449b09a741 100644
--- a/include/qapi/error.h
+++ b/include/qapi/error.h
@@ -283,7 +283,7 @@ void error_free(Error *err);
 /*
  * Convenience function to assert that address@hidden is set, then silently 
free it.
  */
-void error_free_or_abort(Error **errp);
+void error_free_or_abort(Error *errp[static 1]);
 
 /*
  * Convenience function to error_report() and free @err.
diff --git a/include/qapi/qmp/json-parser.h b/include/qapi/qmp/json-parser.h
index 9987f8ca85..f926331eb2 100644
--- a/include/qapi/qmp/json-parser.h
+++ b/include/qapi/qmp/json-parser.h
@@ -18,6 +18,7 @@
 #include "qapi/qmp/qlist.h"
 
 QObject *json_parser_parse(GQueue *tokens, va_list *ap);
-QObject *json_parser_parse_err(GQueue *tokens, va_list *ap, Error **errp);
+QObject *json_parser_parse_err(GQueue *tokens, va_list *ap,
+                              Error *errp[static 1]);
 
 #endif
diff --git a/include/qapi/qmp/qdict.h b/include/qapi/qmp/qdict.h
index 188440a6a8..4283f1f572 100644
--- a/include/qapi/qmp/qdict.h
+++ b/include/qapi/qmp/qdict.h
@@ -81,7 +81,7 @@ void qdict_flatten(QDict *qdict);
 void qdict_extract_subqdict(QDict *src, QDict **dst, const char *start);
 void qdict_array_split(QDict *src, QList **dst);
 int qdict_array_entries(QDict *src, const char *subqdict);
-QObject *qdict_crumple(const QDict *src, Error **errp);
+QObject *qdict_crumple(const QDict *src, Error *errp[static 1]);
 
 void qdict_join(QDict *dest, QDict *src, bool overwrite);
 
diff --git a/include/qapi/qmp/qjson.h b/include/qapi/qmp/qjson.h
index 6e84082d5f..24ae99bd9e 100644
--- a/include/qapi/qmp/qjson.h
+++ b/include/qapi/qmp/qjson.h
@@ -17,9 +17,10 @@
 #include "qapi/qmp/qobject.h"
 #include "qapi/qmp/qstring.h"
 
-QObject *qobject_from_json(const char *string, Error **errp);
+QObject *qobject_from_json(const char *string, Error *errp[static 1]);
 QObject *qobject_from_jsonf(const char *string, ...) GCC_FMT_ATTR(1, 2);
-QObject *qobject_from_jsonv(const char *string, va_list *ap, Error **errp)
+QObject *qobject_from_jsonv(const char *string, va_list *ap,
+                           Error *errp[static 1])
     GCC_FMT_ATTR(1, 0);
 
 QString *qobject_to_json(const QObject *obj);
diff --git a/include/qapi/qobject-input-visitor.h 
b/include/qapi/qobject-input-visitor.h
index b399285c43..756e0678c0 100644
--- a/include/qapi/qobject-input-visitor.h
+++ b/include/qapi/qobject-input-visitor.h
@@ -78,6 +78,6 @@ Visitor *qobject_input_visitor_new_keyval(QObject *obj);
  */
 Visitor *qobject_input_visitor_new_str(const char *str,
                                        const char *implied_key,
-                                       Error **errp);
+                                       Error *errp[static 1]);
 
 #endif
diff --git a/include/qapi/util.h b/include/qapi/util.h
index 7436ed815c..ab18c690af 100644
--- a/include/qapi/util.h
+++ b/include/qapi/util.h
@@ -12,7 +12,7 @@
 #define QAPI_UTIL_H
 
 int qapi_enum_parse(const char * const lookup[], const char *buf,
-                    int max, int def, Error **errp);
+                    int max, int def, Error *errp[static 1]);
 
 int parse_qapi_name(const char *name, bool complete);
 
diff --git a/include/qemu/base64.h b/include/qemu/base64.h
index 815d85267d..6c990a4433 100644
--- a/include/qemu/base64.h
+++ b/include/qemu/base64.h
@@ -52,7 +52,7 @@
 uint8_t *qbase64_decode(const char *input,
                         size_t in_len,
                         size_t *out_len,
-                        Error **errp);
+                        Error *errp[static 1]);
 
 
 #endif /* QEMU_BASE64_H */
diff --git a/include/qemu/config-file.h b/include/qemu/config-file.h
index c80d5c8a33..531c184218 100644
--- a/include/qemu/config-file.h
+++ b/include/qemu/config-file.h
@@ -5,7 +5,7 @@
 #include "qapi/qmp/qdict.h"
 
 QemuOptsList *qemu_find_opts(const char *group);
-QemuOptsList *qemu_find_opts_err(const char *group, Error **errp);
+QemuOptsList *qemu_find_opts_err(const char *group, Error *errp[static 1]);
 QemuOpts *qemu_find_opts_singleton(const char *group);
 
 void qemu_add_opts(QemuOptsList *list);
@@ -21,6 +21,6 @@ int qemu_read_config_file(const char *filename);
 /* Parse QDict options as a replacement for a config file (allowing multiple
    enumerated (0..(n-1)) configuration "sections") */
 void qemu_config_parse_qdict(QDict *options, QemuOptsList **lists,
-                             Error **errp);
+                             Error *errp[static 1]);
 
 #endif /* QEMU_CONFIG_FILE_H */
diff --git a/include/qemu/log.h b/include/qemu/log.h
index a50e994c21..787c53043c 100644
--- a/include/qemu/log.h
+++ b/include/qemu/log.h
@@ -123,8 +123,8 @@ extern const QEMULogItem qemu_log_items[];
 
 void qemu_set_log(int log_flags);
 void qemu_log_needs_buffers(void);
-void qemu_set_log_filename(const char *filename, Error **errp);
-void qemu_set_dfilter_ranges(const char *ranges, Error **errp);
+void qemu_set_log_filename(const char *filename, Error *errp[static 1]);
+void qemu_set_dfilter_ranges(const char *ranges, Error *errp[static 1]);
 bool qemu_log_in_addr_range(uint64_t addr);
 int qemu_str_to_log_mask(const char *str);
 
diff --git a/include/qemu/main-loop.h b/include/qemu/main-loop.h
index d7e24af78d..1711896dd5 100644
--- a/include/qemu/main-loop.h
+++ b/include/qemu/main-loop.h
@@ -42,7 +42,7 @@
  *
  * In the case of QEMU tools, this will also start/initialize timers.
  */
-int qemu_init_main_loop(Error **errp);
+int qemu_init_main_loop(Error *errp[static 1]);
 
 /**
  * main_loop_wait: Run one iteration of the main loop.
diff --git a/include/qemu/option.h b/include/qemu/option.h
index f7338dbe80..b5b149866d 100644
--- a/include/qemu/option.h
+++ b/include/qemu/option.h
@@ -38,7 +38,7 @@ int get_param_value(char *buf, int buf_size,
 
 
 void parse_option_size(const char *name, const char *value,
-                       uint64_t *ret, Error **errp);
+                       uint64_t *ret, Error *errp[static 1]);
 bool has_help_option(const char *param);
 bool is_valid_option_list(const char *param);
 
@@ -89,16 +89,16 @@ uint64_t qemu_opt_get_size_del(QemuOpts *opts, const char 
*name,
                                uint64_t defval);
 int qemu_opt_unset(QemuOpts *opts, const char *name);
 void qemu_opt_set(QemuOpts *opts, const char *name, const char *value,
-                  Error **errp);
+                  Error *errp[static 1]);
 void qemu_opt_set_bool(QemuOpts *opts, const char *name, bool val,
-                       Error **errp);
+                       Error *errp[static 1]);
 void qemu_opt_set_number(QemuOpts *opts, const char *name, int64_t val,
-                         Error **errp);
+                         Error *errp[static 1]);
 typedef int (*qemu_opt_loopfunc)(void *opaque,
                                  const char *name, const char *value,
                                  Error **errp);
 int qemu_opt_foreach(QemuOpts *opts, qemu_opt_loopfunc func, void *opaque,
-                     Error **errp);
+                     Error *errp[static 1]);
 
 typedef struct {
     QemuOpts *opts;
@@ -111,37 +111,39 @@ const char *qemu_opt_iter_next(QemuOptsIter *iter);
 
 QemuOpts *qemu_opts_find(QemuOptsList *list, const char *id);
 QemuOpts *qemu_opts_create(QemuOptsList *list, const char *id,
-                           int fail_if_exists, Error **errp);
+                           int fail_if_exists, Error *errp[static 1]);
 void qemu_opts_reset(QemuOptsList *list);
 void qemu_opts_loc_restore(QemuOpts *opts);
 void qemu_opts_set(QemuOptsList *list, const char *id,
-                   const char *name, const char *value, Error **errp);
+                   const char *name, const char *value, Error *errp[static 1]);
 const char *qemu_opts_id(QemuOpts *opts);
 void qemu_opts_set_id(QemuOpts *opts, char *id);
 void qemu_opts_del(QemuOpts *opts);
-void qemu_opts_validate(QemuOpts *opts, const QemuOptDesc *desc, Error **errp);
+void qemu_opts_validate(QemuOpts *opts, const QemuOptDesc *desc,
+                       Error *errp[static 1]);
 void qemu_opts_do_parse(QemuOpts *opts, const char *params,
-                        const char *firstname, Error **errp);
+                        const char *firstname, Error *errp[static 1]);
 QemuOpts *qemu_opts_parse_noisily(QemuOptsList *list, const char *params,
                                   bool permit_abbrev);
 QemuOpts *qemu_opts_parse(QemuOptsList *list, const char *params,
-                          bool permit_abbrev, Error **errp);
+                          bool permit_abbrev, Error *errp[static 1]);
 void qemu_opts_set_defaults(QemuOptsList *list, const char *params,
                             int permit_abbrev);
 QemuOpts *qemu_opts_from_qdict(QemuOptsList *list, const QDict *qdict,
-                               Error **errp);
+                               Error *errp[static 1]);
 QDict *qemu_opts_to_qdict(QemuOpts *opts, QDict *qdict);
-void qemu_opts_absorb_qdict(QemuOpts *opts, QDict *qdict, Error **errp);
+void qemu_opts_absorb_qdict(QemuOpts *opts, QDict *qdict,
+                           Error *errp[static 1]);
 
 typedef int (*qemu_opts_loopfunc)(void *opaque, QemuOpts *opts, Error **errp);
 int qemu_opts_foreach(QemuOptsList *list, qemu_opts_loopfunc func,
-                      void *opaque, Error **errp);
+                      void *opaque, Error *errp[static 1]);
 void qemu_opts_print(QemuOpts *opts, const char *sep);
 void qemu_opts_print_help(QemuOptsList *list);
 void qemu_opts_free(QemuOptsList *list);
 QemuOptsList *qemu_opts_append(QemuOptsList *dst, QemuOptsList *list);
 
 QDict *keyval_parse(const char *params, const char *implied_key,
-                    Error **errp);
+                    Error *errp[static 1]);
 
 #endif
diff --git a/include/qemu/sockets.h b/include/qemu/sockets.h
index 5c326db232..703e94ef47 100644
--- a/include/qemu/sockets.h
+++ b/include/qemu/sockets.h
@@ -33,24 +33,26 @@ int socket_set_fast_reuse(int fd);
 typedef void NonBlockingConnectHandler(int fd, Error *err, void *opaque);
 
 int inet_ai_family_from_address(InetSocketAddress *addr,
-                                Error **errp);
-int inet_parse(InetSocketAddress *addr, const char *str, Error **errp);
-int inet_connect(const char *str, Error **errp);
+                                Error *errp[static 1]);
+int inet_parse(InetSocketAddress *addr, const char *str,
+              Error *errp[static 1]);
+int inet_connect(const char *str, Error *errp[static 1]);
 int inet_connect_saddr(InetSocketAddress *saddr,
                        NonBlockingConnectHandler *callback, void *opaque,
-                       Error **errp);
+                       Error *errp[static 1]);
 
 NetworkAddressFamily inet_netfamily(int family);
 
-int unix_listen(const char *path, char *ostr, int olen, Error **errp);
-int unix_connect(const char *path, Error **errp);
+int unix_listen(const char *path, char *ostr, int olen, Error *errp[static 1]);
+int unix_connect(const char *path, Error *errp[static 1]);
 
-SocketAddress *socket_parse(const char *str, Error **errp);
+SocketAddress *socket_parse(const char *str, Error *errp[static 1]);
 int socket_connect(SocketAddress *addr, NonBlockingConnectHandler *callback,
-                   void *opaque, Error **errp);
-int socket_listen(SocketAddress *addr, Error **errp);
-void socket_listen_cleanup(int fd, Error **errp);
-int socket_dgram(SocketAddress *remote, SocketAddress *local, Error **errp);
+                   void *opaque, Error *errp[static 1]);
+int socket_listen(SocketAddress *addr, Error *errp[static 1]);
+void socket_listen_cleanup(int fd, Error *errp[static 1]);
+int socket_dgram(SocketAddress *remote, SocketAddress *local,
+                Error *errp[static 1]);
 
 /* Old, ipv4 only bits.  Don't use for new code. */
 int parse_host_port(struct sockaddr_in *saddr, const char *str);
@@ -73,7 +75,7 @@ int socket_init(void);
 SocketAddress *
 socket_sockaddr_to_address(struct sockaddr_storage *sa,
                            socklen_t salen,
-                           Error **errp);
+                           Error *errp[static 1]);
 
 /**
  * socket_local_address:
@@ -88,7 +90,7 @@ socket_sockaddr_to_address(struct sockaddr_storage *sa,
  *
  * Returns: the socket address struct, or NULL on error
  */
-SocketAddress *socket_local_address(int fd, Error **errp);
+SocketAddress *socket_local_address(int fd, Error *errp[static 1]);
 
 /**
  * socket_remote_address:
@@ -103,7 +105,7 @@ SocketAddress *socket_local_address(int fd, Error **errp);
  *
  * Returns: the socket address struct, or NULL on error
  */
-SocketAddress *socket_remote_address(int fd, Error **errp);
+SocketAddress *socket_remote_address(int fd, Error *errp[static 1]);
 
 /**
  * socket_address_to_string:
@@ -118,7 +120,8 @@ SocketAddress *socket_remote_address(int fd, Error **errp);
  *
  * Returns: the socket address in string format, or NULL on error
  */
-char *socket_address_to_string(struct SocketAddress *addr, Error **errp);
+char *socket_address_to_string(struct SocketAddress *addr,
+                              Error *errp[static 1]);
 
 /**
  * socket_address_flatten:
diff --git a/include/qemu/throttle.h b/include/qemu/throttle.h
index 9109657609..d7c4c058f5 100644
--- a/include/qemu/throttle.h
+++ b/include/qemu/throttle.h
@@ -136,7 +136,7 @@ bool throttle_timers_are_initialized(ThrottleTimers *tt);
 /* configuration */
 bool throttle_enabled(ThrottleConfig *cfg);
 
-bool throttle_is_valid(ThrottleConfig *cfg, Error **errp);
+bool throttle_is_valid(ThrottleConfig *cfg, Error *errp[static 1]);
 
 void throttle_config(ThrottleState *ts,
                      ThrottleTimers *tt,
diff --git a/include/qom/cpu.h b/include/qom/cpu.h
index 89ddb686fb..f048419a9f 100644
--- a/include/qom/cpu.h
+++ b/include/qom/cpu.h
@@ -446,7 +446,7 @@ bool cpu_paging_enabled(const CPUState *cpu);
  * @errp: Pointer for reporting an #Error.
  */
 void cpu_get_memory_mapping(CPUState *cpu, MemoryMappingList *list,
-                            Error **errp);
+                            Error *errp[static 1]);
 
 /**
  * cpu_write_elf64_note:
@@ -1002,7 +1002,7 @@ AddressSpace *cpu_get_address_space(CPUState *cpu, int 
asidx);
 void QEMU_NORETURN cpu_abort(CPUState *cpu, const char *fmt, ...)
     GCC_FMT_ATTR(2, 3);
 void cpu_exec_initfn(CPUState *cpu);
-void cpu_exec_realizefn(CPUState *cpu, Error **errp);
+void cpu_exec_realizefn(CPUState *cpu, Error *errp[static 1]);
 void cpu_exec_unrealizefn(CPUState *cpu);
 
 #ifdef CONFIG_SOFTMMU
diff --git a/include/qom/object.h b/include/qom/object.h
index cd0f412ce9..6775b7c4d2 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -913,16 +913,16 @@ ObjectProperty *object_property_add(Object *obj, const 
char *name,
                                     ObjectPropertyAccessor *get,
                                     ObjectPropertyAccessor *set,
                                     ObjectPropertyRelease *release,
-                                    void *opaque, Error **errp);
+                                    void *opaque, Error *errp[static 1]);
 
-void object_property_del(Object *obj, const char *name, Error **errp);
+void object_property_del(Object *obj, const char *name, Error *errp[static 1]);
 
 ObjectProperty *object_class_property_add(ObjectClass *klass, const char *name,
                                           const char *type,
                                           ObjectPropertyAccessor *get,
                                           ObjectPropertyAccessor *set,
                                           ObjectPropertyRelease *release,
-                                          void *opaque, Error **errp);
+                                          void *opaque, Error *errp[static 1]);
 
 /**
  * object_property_find:
@@ -933,9 +933,9 @@ ObjectProperty *object_class_property_add(ObjectClass 
*klass, const char *name,
  * Look up a property for an object and return its #ObjectProperty if found.
  */
 ObjectProperty *object_property_find(Object *obj, const char *name,
-                                     Error **errp);
+                                     Error *errp[static 1]);
 ObjectProperty *object_class_property_find(ObjectClass *klass, const char 
*name,
-                                           Error **errp);
+                                           Error *errp[static 1]);
 
 typedef struct ObjectPropertyIterator {
     ObjectClass *nextclass;
@@ -997,7 +997,7 @@ void object_unparent(Object *obj);
  * Reads a property from a object.
  */
 void object_property_get(Object *obj, Visitor *v, const char *name,
-                         Error **errp);
+                         Error *errp[static 1]);
 
 /**
  * object_property_set_str:
@@ -1008,7 +1008,7 @@ void object_property_get(Object *obj, Visitor *v, const 
char *name,
  * Writes a string value to a property.
  */
 void object_property_set_str(Object *obj, const char *value,
-                             const char *name, Error **errp);
+                             const char *name, Error *errp[static 1]);
 
 /**
  * object_property_get_str:
@@ -1021,7 +1021,7 @@ void object_property_set_str(Object *obj, const char 
*value,
  * The caller should free the string.
  */
 char *object_property_get_str(Object *obj, const char *name,
-                              Error **errp);
+                              Error *errp[static 1]);
 
 /**
  * object_property_set_link:
@@ -1032,7 +1032,7 @@ char *object_property_get_str(Object *obj, const char 
*name,
  * Writes an object's canonical path to a property.
  */
 void object_property_set_link(Object *obj, Object *value,
-                              const char *name, Error **errp);
+                              const char *name, Error *errp[static 1]);
 
 /**
  * object_property_get_link:
@@ -1045,7 +1045,7 @@ void object_property_set_link(Object *obj, Object *value,
  * string or not a valid object path).
  */
 Object *object_property_get_link(Object *obj, const char *name,
-                                 Error **errp);
+                                 Error *errp[static 1]);
 
 /**
  * object_property_set_bool:
@@ -1056,7 +1056,7 @@ Object *object_property_get_link(Object *obj, const char 
*name,
  * Writes a bool value to a property.
  */
 void object_property_set_bool(Object *obj, bool value,
-                              const char *name, Error **errp);
+                              const char *name, Error *errp[static 1]);
 
 /**
  * object_property_get_bool:
@@ -1068,7 +1068,7 @@ void object_property_set_bool(Object *obj, bool value,
  * an error occurs (including when the property value is not a bool).
  */
 bool object_property_get_bool(Object *obj, const char *name,
-                              Error **errp);
+                              Error *errp[static 1]);
 
 /**
  * object_property_set_int:
@@ -1079,7 +1079,7 @@ bool object_property_get_bool(Object *obj, const char 
*name,
  * Writes an integer value to a property.
  */
 void object_property_set_int(Object *obj, int64_t value,
-                             const char *name, Error **errp);
+                             const char *name, Error *errp[static 1]);
 
 /**
  * object_property_get_int:
@@ -1091,7 +1091,7 @@ void object_property_set_int(Object *obj, int64_t value,
  * an error occurs (including when the property value is not an integer).
  */
 int64_t object_property_get_int(Object *obj, const char *name,
-                                Error **errp);
+                                Error *errp[static 1]);
 
 /**
  * object_property_get_enum:
@@ -1105,7 +1105,7 @@ int64_t object_property_get_int(Object *obj, const char 
*name,
  * an enum).
  */
 int object_property_get_enum(Object *obj, const char *name,
-                             const char *typename, Error **errp);
+                             const char *typename, Error *errp[static 1]);
 
 /**
  * object_property_get_uint16List:
@@ -1119,7 +1119,7 @@ int object_property_get_enum(Object *obj, const char 
*name,
  * an list of integers).
  */
 void object_property_get_uint16List(Object *obj, const char *name,
-                                    uint16List **list, Error **errp);
+                                    uint16List **list, Error *errp[static 1]);
 
 /**
  * object_property_set:
@@ -1133,7 +1133,7 @@ void object_property_get_uint16List(Object *obj, const 
char *name,
  * Writes a property to a object.
  */
 void object_property_set(Object *obj, Visitor *v, const char *name,
-                         Error **errp);
+                         Error *errp[static 1]);
 
 /**
  * object_property_parse:
@@ -1145,7 +1145,7 @@ void object_property_set(Object *obj, Visitor *v, const 
char *name,
  * Parses a string and writes the result into a property of an object.
  */
 void object_property_parse(Object *obj, const char *string,
-                           const char *name, Error **errp);
+                           const char *name, Error *errp[static 1]);
 
 /**
  * object_property_print:
@@ -1158,7 +1158,7 @@ void object_property_parse(Object *obj, const char 
*string,
  * caller shall free the string.
  */
 char *object_property_print(Object *obj, const char *name, bool human,
-                            Error **errp);
+                            Error *errp[static 1]);
 
 /**
  * object_property_get_type:
@@ -1169,7 +1169,7 @@ char *object_property_print(Object *obj, const char 
*name, bool human,
  * Returns:  The type name of the property.
  */
 const char *object_property_get_type(Object *obj, const char *name,
-                                     Error **errp);
+                                     Error *errp[static 1]);
 
 /**
  * object_get_root:
@@ -1282,7 +1282,7 @@ Object *object_resolve_path_component(Object *parent, 
const gchar *part);
  * The child object itself can be retrieved using object_property_get_link().
  */
 void object_property_add_child(Object *obj, const char *name,
-                               Object *child, Error **errp);
+                               Object *child, Error *errp[static 1]);
 
 typedef enum {
     /* Unref the link pointer when the property is deleted */
@@ -1332,7 +1332,7 @@ void object_property_add_link(Object *obj, const char 
*name,
                               void (*check)(Object *obj, const char *name,
                                             Object *val, Error **errp),
                               ObjectPropertyLinkFlags flags,
-                              Error **errp);
+                              Error *errp[static 1]);
 
 /**
  * object_property_add_str:
@@ -1349,13 +1349,13 @@ void object_property_add_link(Object *obj, const char 
*name,
 void object_property_add_str(Object *obj, const char *name,
                              char *(*get)(Object *, Error **),
                              void (*set)(Object *, const char *, Error **),
-                             Error **errp);
+                             Error *errp[static 1]);
 
 void object_class_property_add_str(ObjectClass *klass, const char *name,
                                    char *(*get)(Object *, Error **),
                                    void (*set)(Object *, const char *,
                                                Error **),
-                                   Error **errp);
+                                   Error *errp[static 1]);
 
 /**
  * object_property_add_bool:
@@ -1371,12 +1371,12 @@ void object_class_property_add_str(ObjectClass *klass, 
const char *name,
 void object_property_add_bool(Object *obj, const char *name,
                               bool (*get)(Object *, Error **),
                               void (*set)(Object *, bool, Error **),
-                              Error **errp);
+                              Error *errp[static 1]);
 
 void object_class_property_add_bool(ObjectClass *klass, const char *name,
                                     bool (*get)(Object *, Error **),
                                     void (*set)(Object *, bool, Error **),
-                                    Error **errp);
+                                    Error *errp[static 1]);
 
 /**
  * object_property_add_enum:
@@ -1395,14 +1395,14 @@ void object_property_add_enum(Object *obj, const char 
*name,
                               const char * const *strings,
                               int (*get)(Object *, Error **),
                               void (*set)(Object *, int, Error **),
-                              Error **errp);
+                              Error *errp[static 1]);
 
 void object_class_property_add_enum(ObjectClass *klass, const char *name,
                                     const char *typename,
                                     const char * const *strings,
                                     int (*get)(Object *, Error **),
                                     void (*set)(Object *, int, Error **),
-                                    Error **errp);
+                                    Error *errp[static 1]);
 
 /**
  * object_property_add_tm:
@@ -1416,11 +1416,11 @@ void object_class_property_add_enum(ObjectClass *klass, 
const char *name,
  */
 void object_property_add_tm(Object *obj, const char *name,
                             void (*get)(Object *, struct tm *, Error **),
-                            Error **errp);
+                            Error *errp[static 1]);
 
 void object_class_property_add_tm(ObjectClass *klass, const char *name,
                                   void (*get)(Object *, struct tm *, Error **),
-                                  Error **errp);
+                                  Error *errp[static 1]);
 
 /**
  * object_property_add_uint8_ptr:
@@ -1433,9 +1433,10 @@ void object_class_property_add_tm(ObjectClass *klass, 
const char *name,
  * property of type 'uint8'.
  */
 void object_property_add_uint8_ptr(Object *obj, const char *name,
-                                   const uint8_t *v, Error **errp);
+                                   const uint8_t *v, Error *errp[static 1]);
 void object_class_property_add_uint8_ptr(ObjectClass *klass, const char *name,
-                                         const uint8_t *v, Error **errp);
+                                         const uint8_t *v,
+                                         Error *errp[static 1]);
 
 /**
  * object_property_add_uint16_ptr:
@@ -1448,9 +1449,10 @@ void object_class_property_add_uint8_ptr(ObjectClass 
*klass, const char *name,
  * property of type 'uint16'.
  */
 void object_property_add_uint16_ptr(Object *obj, const char *name,
-                                    const uint16_t *v, Error **errp);
+                                    const uint16_t *v, Error *errp[static 1]);
 void object_class_property_add_uint16_ptr(ObjectClass *klass, const char *name,
-                                          const uint16_t *v, Error **errp);
+                                          const uint16_t *v,
+                                          Error *errp[static 1]);
 
 /**
  * object_property_add_uint32_ptr:
@@ -1463,9 +1465,10 @@ void object_class_property_add_uint16_ptr(ObjectClass 
*klass, const char *name,
  * property of type 'uint32'.
  */
 void object_property_add_uint32_ptr(Object *obj, const char *name,
-                                    const uint32_t *v, Error **errp);
+                                    const uint32_t *v, Error *errp[static 1]);
 void object_class_property_add_uint32_ptr(ObjectClass *klass, const char *name,
-                                          const uint32_t *v, Error **errp);
+                                          const uint32_t *v,
+                                          Error *errp[static 1]);
 
 /**
  * object_property_add_uint64_ptr:
@@ -1478,9 +1481,10 @@ void object_class_property_add_uint32_ptr(ObjectClass 
*klass, const char *name,
  * property of type 'uint64'.
  */
 void object_property_add_uint64_ptr(Object *obj, const char *name,
-                                    const uint64_t *v, Error **Errp);
+                                    const uint64_t *v, Error *Errp[static 1]);
 void object_class_property_add_uint64_ptr(ObjectClass *klass, const char *name,
-                                          const uint64_t *v, Error **Errp);
+                                          const uint64_t *v,
+                                          Error *Errp[static 1]);
 
 /**
  * object_property_add_alias:
@@ -1500,7 +1504,7 @@ void object_class_property_add_uint64_ptr(ObjectClass 
*klass, const char *name,
  */
 void object_property_add_alias(Object *obj, const char *name,
                                Object *target_obj, const char *target_name,
-                               Error **errp);
+                               Error *errp[static 1]);
 
 /**
  * object_property_add_const_link:
@@ -1518,7 +1522,7 @@ void object_property_add_alias(Object *obj, const char 
*name,
  * taking a reference.
  */
 void object_property_add_const_link(Object *obj, const char *name,
-                                    Object *target, Error **errp);
+                                    Object *target, Error *errp[static 1]);
 
 /**
  * object_property_set_description:
@@ -1531,10 +1535,11 @@ void object_property_add_const_link(Object *obj, const 
char *name,
  *
  */
 void object_property_set_description(Object *obj, const char *name,
-                                     const char *description, Error **errp);
+                                     const char *description,
+                                     Error *errp[static 1]);
 void object_class_property_set_description(ObjectClass *klass, const char 
*name,
                                            const char *description,
-                                           Error **errp);
+                                           Error *errp[static 1]);
 
 /**
  * object_child_foreach:
diff --git a/include/qom/object_interfaces.h b/include/qom/object_interfaces.h
index fdd7603c84..7326a93bcf 100644
--- a/include/qom/object_interfaces.h
+++ b/include/qom/object_interfaces.h
@@ -63,7 +63,7 @@ typedef struct UserCreatableClass {
  * from implements USER_CREATABLE interface, otherwise the call does
  * nothing.
  */
-void user_creatable_complete(Object *obj, Error **errp);
+void user_creatable_complete(Object *obj, Error *errp[static 1]);
 
 /**
  * user_creatable_can_be_deleted:
@@ -73,7 +73,7 @@ void user_creatable_complete(Object *obj, Error **errp);
  * Wrapper to call can_be_deleted() method if one of types it's inherited
  * from implements USER_CREATABLE interface.
  */
-bool user_creatable_can_be_deleted(UserCreatable *uc, Error **errp);
+bool user_creatable_can_be_deleted(UserCreatable *uc, Error *errp[static 1]);
 
 /**
  * user_creatable_add_type:
@@ -91,7 +91,7 @@ bool user_creatable_can_be_deleted(UserCreatable *uc, Error 
**errp);
  */
 Object *user_creatable_add_type(const char *type, const char *id,
                                 const QDict *qdict,
-                                Visitor *v, Error **errp);
+                                Visitor *v, Error *errp[static 1]);
 
 /**
  * user_creatable_add_opts:
@@ -106,7 +106,7 @@ Object *user_creatable_add_type(const char *type, const 
char *id,
  *
  * Returns: the newly created object or NULL on error
  */
-Object *user_creatable_add_opts(QemuOpts *opts, Error **errp);
+Object *user_creatable_add_opts(QemuOpts *opts, Error *errp[static 1]);
 
 
 /**
@@ -136,7 +136,7 @@ typedef bool (*user_creatable_add_opts_predicate)(const 
char *type);
  * Returns: 0 on success, -1 when an error was reported.
  */
 int user_creatable_add_opts_foreach(void *opaque,
-                                    QemuOpts *opts, Error **errp);
+                                    QemuOpts *opts, Error *errp[static 1]);
 
 /**
  * user_creatable_del:
@@ -146,6 +146,6 @@ int user_creatable_add_opts_foreach(void *opaque,
  * Delete an instance of the user creatable object identified
  * by @id.
  */
-void user_creatable_del(const char *id, Error **errp);
+void user_creatable_del(const char *id, Error *errp[static 1]);
 
 #endif
diff --git a/include/qom/qom-qobject.h b/include/qom/qom-qobject.h
index 3d49d26681..fc590222f3 100644
--- a/include/qom/qom-qobject.h
+++ b/include/qom/qom-qobject.h
@@ -26,7 +26,7 @@
  * an error occurs.
  */
 struct QObject *object_property_get_qobject(Object *obj, const char *name,
-                                            Error **errp);
+                                            Error *errp[static 1]);
 
 /**
  * object_property_set_qobject:
@@ -38,6 +38,6 @@ struct QObject *object_property_get_qobject(Object *obj, 
const char *name,
  * Writes a property to a object.
  */
 void object_property_set_qobject(Object *obj, struct QObject *qobj,
-                                 const char *name, Error **errp);
+                                 const char *name, Error *errp[static 1]);
 
 #endif
diff --git a/include/sysemu/arch_init.h b/include/sysemu/arch_init.h
index 8751c468ed..31217a15da 100644
--- a/include/sysemu/arch_init.h
+++ b/include/sysemu/arch_init.h
@@ -31,15 +31,15 @@ extern const uint32_t arch_type;
 int kvm_available(void);
 int xen_available(void);
 
-CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp);
+CpuDefinitionInfoList *arch_query_cpu_definitions(Error *errp[static 1]);
 CpuModelExpansionInfo *arch_query_cpu_model_expansion(CpuModelExpansionType 
type,
                                                       CpuModelInfo *mode,
-                                                      Error **errp);
+                                                      Error *errp[static 1]);
 CpuModelCompareInfo *arch_query_cpu_model_comparison(CpuModelInfo *modela,
                                                      CpuModelInfo *modelb,
-                                                     Error **errp);
+                                                     Error *errp[static 1]);
 CpuModelBaselineInfo *arch_query_cpu_model_baseline(CpuModelInfo *modela,
                                                     CpuModelInfo *modelb,
-                                                    Error **errp);
+                                                    Error *errp[static 1]);
 
 #endif
diff --git a/include/sysemu/block-backend.h b/include/sysemu/block-backend.h
index 840ad6134c..88631cc604 100644
--- a/include/sysemu/block-backend.h
+++ b/include/sysemu/block-backend.h
@@ -94,7 +94,7 @@ typedef struct BlockBackendPublic {
 
 BlockBackend *blk_new(uint64_t perm, uint64_t shared_perm);
 BlockBackend *blk_new_open(const char *filename, const char *reference,
-                           QDict *options, int flags, Error **errp);
+                           QDict *options, int flags, Error *errp[static 1]);
 int blk_get_refcnt(BlockBackend *blk);
 void blk_ref(BlockBackend *blk);
 void blk_unref(BlockBackend *blk);
@@ -102,7 +102,8 @@ void blk_remove_all_bs(void);
 const char *blk_name(const BlockBackend *blk);
 BlockBackend *blk_by_name(const char *name);
 BlockBackend *blk_next(BlockBackend *blk);
-bool monitor_add_blk(BlockBackend *blk, const char *name, Error **errp);
+bool monitor_add_blk(BlockBackend *blk, const char *name,
+                    Error *errp[static 1]);
 void monitor_remove_blk(BlockBackend *blk);
 
 BlockBackendPublic *blk_get_public(BlockBackend *blk);
@@ -110,11 +111,12 @@ BlockBackend *blk_by_public(BlockBackendPublic *public);
 
 BlockDriverState *blk_bs(BlockBackend *blk);
 void blk_remove_bs(BlockBackend *blk);
-int blk_insert_bs(BlockBackend *blk, BlockDriverState *bs, Error **errp);
+int blk_insert_bs(BlockBackend *blk, BlockDriverState *bs,
+                 Error *errp[static 1]);
 bool bdrv_has_blk(BlockDriverState *bs);
 bool bdrv_is_root_node(BlockDriverState *bs);
 int blk_set_perm(BlockBackend *blk, uint64_t perm, uint64_t shared_perm,
-                 Error **errp);
+                 Error *errp[static 1]);
 void blk_get_perm(BlockBackend *blk, uint64_t *perm, uint64_t *shared_perm);
 
 void blk_set_allow_write_beyond_eof(BlockBackend *blk, bool allow);
@@ -129,7 +131,7 @@ void blk_attach_dev_legacy(BlockBackend *blk, void *dev);
 void blk_detach_dev(BlockBackend *blk, void *dev);
 void *blk_get_attached_dev(BlockBackend *blk);
 BlockBackend *blk_by_dev(void *dev);
-BlockBackend *blk_by_qdev_id(const char *id, Error **errp);
+BlockBackend *blk_by_qdev_id(const char *id, Error *errp[static 1]);
 void blk_set_dev_ops(BlockBackend *blk, const BlockDevOps *ops, void *opaque);
 int blk_pread_unthrottled(BlockBackend *blk, int64_t offset, uint8_t *buf,
                           int count);
@@ -184,7 +186,7 @@ int blk_is_read_only(BlockBackend *blk);
 int blk_is_sg(BlockBackend *blk);
 int blk_enable_write_cache(BlockBackend *blk);
 void blk_set_enable_write_cache(BlockBackend *blk, bool wce);
-void blk_invalidate_cache(BlockBackend *blk, Error **errp);
+void blk_invalidate_cache(BlockBackend *blk, Error *errp[static 1]);
 bool blk_is_inserted(BlockBackend *blk);
 bool blk_is_available(BlockBackend *blk);
 void blk_lock_medium(BlockBackend *blk, bool locked);
@@ -195,7 +197,8 @@ int blk_get_max_iov(BlockBackend *blk);
 void blk_set_guest_block_size(BlockBackend *blk, int align);
 void *blk_try_blockalign(BlockBackend *blk, size_t size);
 void *blk_blockalign(BlockBackend *blk, size_t size);
-bool blk_op_is_blocked(BlockBackend *blk, BlockOpType op, Error **errp);
+bool blk_op_is_blocked(BlockBackend *blk, BlockOpType op,
+                      Error *errp[static 1]);
 void blk_op_unblock(BlockBackend *blk, BlockOpType op, Error *reason);
 void blk_op_block_all(BlockBackend *blk, Error *reason);
 void blk_op_unblock_all(BlockBackend *blk, Error *reason);
@@ -225,7 +228,7 @@ int coroutine_fn blk_co_pwrite_zeroes(BlockBackend *blk, 
int64_t offset,
                                       int count, BdrvRequestFlags flags);
 int blk_pwrite_compressed(BlockBackend *blk, int64_t offset, const void *buf,
                           int count);
-int blk_truncate(BlockBackend *blk, int64_t offset, Error **errp);
+int blk_truncate(BlockBackend *blk, int64_t offset, Error *errp[static 1]);
 int blk_pdiscard(BlockBackend *blk, int64_t offset, int count);
 int blk_save_vmstate(BlockBackend *blk, const uint8_t *buf,
                      int64_t pos, int size);
diff --git a/include/sysemu/cpus.h b/include/sysemu/cpus.h
index 731756d948..72d0fdccf9 100644
--- a/include/sysemu/cpus.h
+++ b/include/sysemu/cpus.h
@@ -11,7 +11,7 @@ void pause_all_vcpus(void);
 void cpu_stop_current(void);
 void cpu_ticks_init(void);
 
-void configure_icount(QemuOpts *opts, Error **errp);
+void configure_icount(QemuOpts *opts, Error *errp[static 1]);
 extern int use_icount;
 extern int icount_align_option;
 
@@ -40,6 +40,6 @@ extern int smp_threads;
 
 void list_cpus(FILE *f, fprintf_function cpu_fprintf, const char *optarg);
 
-void qemu_tcg_configure(QemuOpts *opts, Error **errp);
+void qemu_tcg_configure(QemuOpts *opts, Error *errp[static 1]);
 
 #endif
diff --git a/include/sysemu/cryptodev.h b/include/sysemu/cryptodev.h
index a9d0d1ee25..9c9bff41f9 100644
--- a/include/sysemu/cryptodev.h
+++ b/include/sysemu/cryptodev.h
@@ -244,7 +244,7 @@ void cryptodev_backend_free_client(
  */
 void cryptodev_backend_cleanup(
            CryptoDevBackend *backend,
-           Error **errp);
+           Error *errp[static 1]);
 
 /**
  * cryptodev_backend_sym_create_session:
@@ -260,7 +260,7 @@ void cryptodev_backend_cleanup(
 int64_t cryptodev_backend_sym_create_session(
            CryptoDevBackend *backend,
            CryptoDevBackendSymSessionInfo *sess_info,
-           uint32_t queue_index, Error **errp);
+           uint32_t queue_index, Error *errp[static 1]);
 
 /**
  * cryptodev_backend_sym_close_session:
@@ -277,7 +277,7 @@ int64_t cryptodev_backend_sym_create_session(
 int cryptodev_backend_sym_close_session(
            CryptoDevBackend *backend,
            uint64_t session_id,
-           uint32_t queue_index, Error **errp);
+           uint32_t queue_index, Error *errp[static 1]);
 
 /**
  * cryptodev_backend_crypto_operation:
@@ -295,7 +295,7 @@ int cryptodev_backend_sym_close_session(
 int cryptodev_backend_crypto_operation(
                  CryptoDevBackend *backend,
                  void *opaque,
-                 uint32_t queue_index, Error **errp);
+                 uint32_t queue_index, Error *errp[static 1]);
 
 /**
  * cryptodev_backend_set_used:
diff --git a/include/sysemu/device_tree.h b/include/sysemu/device_tree.h
index e22e5bec9c..9e3f57d5f8 100644
--- a/include/sysemu/device_tree.h
+++ b/include/sysemu/device_tree.h
@@ -41,7 +41,7 @@ void *load_device_tree_from_sysfs(void);
  * was encountered when parsing the blob, the function returns NULL
  */
 char **qemu_fdt_node_path(void *fdt, const char *name, char *compat,
-                          Error **errp);
+                          Error *errp[static 1]);
 
 int qemu_fdt_setprop(void *fdt, const char *node_path,
                      const char *property, const void *val, int size);
@@ -66,7 +66,7 @@ int qemu_fdt_setprop_phandle(void *fdt, const char *node_path,
  */
 const void *qemu_fdt_getprop(void *fdt, const char *node_path,
                              const char *property, int *lenp,
-                             Error **errp);
+                             Error *errp[static 1]);
 /**
  * qemu_fdt_getprop_cell: retrieve the value of a given 4 byte property
  * @fdt: pointer to the device tree blob
@@ -80,7 +80,7 @@ const void *qemu_fdt_getprop(void *fdt, const char *node_path,
  */
 uint32_t qemu_fdt_getprop_cell(void *fdt, const char *node_path,
                                const char *property, int *lenp,
-                               Error **errp);
+                               Error *errp[static 1]);
 uint32_t qemu_fdt_get_phandle(void *fdt, const char *path);
 uint32_t qemu_fdt_alloc_phandle(void *fdt);
 int qemu_fdt_nop_node(void *fdt, const char *node_path);
diff --git a/include/sysemu/hostmem.h b/include/sysemu/hostmem.h
index ed6a437f4d..9c3ce9706d 100644
--- a/include/sysemu/hostmem.h
+++ b/include/sysemu/hostmem.h
@@ -64,7 +64,7 @@ struct HostMemoryBackend {
 
 bool host_memory_backend_mr_inited(HostMemoryBackend *backend);
 MemoryRegion *host_memory_backend_get_memory(HostMemoryBackend *backend,
-                                             Error **errp);
+                                             Error *errp[static 1]);
 
 void host_memory_backend_set_mapped(HostMemoryBackend *backend, bool mapped);
 bool host_memory_backend_is_mapped(HostMemoryBackend *backend);
diff --git a/include/sysemu/memory_mapping.h b/include/sysemu/memory_mapping.h
index 706152d533..ca65337a31 100644
--- a/include/sysemu/memory_mapping.h
+++ b/include/sysemu/memory_mapping.h
@@ -73,7 +73,7 @@ void guest_phys_blocks_append(GuestPhysBlockList *list);
 
 void qemu_get_guest_memory_mapping(MemoryMappingList *list,
                                    const GuestPhysBlockList *guest_phys_blocks,
-                                   Error **errp);
+                                   Error *errp[static 1]);
 
 /* get guest's memory mapping without do paging(virtual address is 0). */
 void qemu_get_guest_simple_memory_mapping(MemoryMappingList *list,
diff --git a/include/sysemu/numa.h b/include/sysemu/numa.h
index 610eece211..d46d8431c8 100644
--- a/include/sysemu/numa.h
+++ b/include/sysemu/numa.h
@@ -30,10 +30,11 @@ void query_numa_node_mem(uint64_t node_mem[]);
 extern QemuOptsList qemu_numa_opts;
 void numa_set_mem_node_id(ram_addr_t addr, uint64_t size, uint32_t node);
 void numa_unset_mem_node_id(ram_addr_t addr, uint64_t size, uint32_t node);
-uint32_t numa_get_node(ram_addr_t addr, Error **errp);
+uint32_t numa_get_node(ram_addr_t addr, Error *errp[static 1]);
 void numa_legacy_auto_assign_ram(MachineClass *mc, NodeInfo *nodes,
                                  int nb_nodes, ram_addr_t size);
 void numa_default_auto_assign_ram(MachineClass *mc, NodeInfo *nodes,
                                   int nb_nodes, ram_addr_t size);
-void numa_cpu_pre_plug(const CPUArchId *slot, DeviceState *dev, Error **errp);
+void numa_cpu_pre_plug(const CPUArchId *slot, DeviceState *dev,
+                      Error *errp[static 1]);
 #endif
diff --git a/include/sysemu/qtest.h b/include/sysemu/qtest.h
index 70aa40aa72..68a28b4f2b 100644
--- a/include/sysemu/qtest.h
+++ b/include/sysemu/qtest.h
@@ -25,7 +25,8 @@ static inline bool qtest_enabled(void)
 
 bool qtest_driver(void);
 
-void qtest_init(const char *qtest_chrdev, const char *qtest_log, Error **errp);
+void qtest_init(const char *qtest_chrdev, const char *qtest_log,
+               Error *errp[static 1]);
 
 static inline int qtest_available(void)
 {
diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
index 9841a527a1..1617b25d49 100644
--- a/include/sysemu/sysemu.h
+++ b/include/sysemu/sysemu.h
@@ -176,19 +176,19 @@ void add_boot_device_path(int32_t bootindex, DeviceState 
*dev,
 char *get_boot_devices_list(size_t *size, bool ignore_suffixes);
 
 DeviceState *get_boot_device(uint32_t position);
-void check_boot_index(int32_t bootindex, Error **errp);
+void check_boot_index(int32_t bootindex, Error *errp[static 1]);
 void del_boot_device_path(DeviceState *dev, const char *suffix);
 void device_add_bootindex_property(Object *obj, int32_t *bootindex,
                                    const char *name, const char *suffix,
-                                   DeviceState *dev, Error **errp);
+                                   DeviceState *dev, Error *errp[static 1]);
 void restore_boot_order(void *opaque);
-void validate_bootdevices(const char *devices, Error **errp);
+void validate_bootdevices(const char *devices, Error *errp[static 1]);
 
 /* handler to set the boot_device order for a specific type of MachineClass */
 typedef void QEMUBootSetHandler(void *opaque, const char *boot_order,
-                                Error **errp);
+                                Error *errp[static 1]);
 void qemu_register_boot_set(QEMUBootSetHandler *func, void *opaque);
-void qemu_boot_set(const char *boot_order, Error **errp);
+void qemu_boot_set(const char *boot_order, Error *errp[static 1]);
 
 QemuOpts *qemu_get_machine_opts(void);
 
diff --git a/include/sysemu/tpm_backend.h b/include/sysemu/tpm_backend.h
index b58f52d39f..8dcff421a4 100644
--- a/include/sysemu/tpm_backend.h
+++ b/include/sysemu/tpm_backend.h
@@ -211,7 +211,7 @@ int tpm_backend_reset_tpm_established_flag(TPMBackend *s, 
uint8_t locty);
  * This function will open the backend if it is not already open.  Calling this
  * function on an already opened backend will not result in an error.
  */
-void tpm_backend_open(TPMBackend *s, Error **errp);
+void tpm_backend_open(TPMBackend *s, Error *errp[static 1]);
 
 /**
  * tpm_backend_get_tpm_version:
diff --git a/include/ui/console.h b/include/ui/console.h
index 7262bef6d3..bb6fcfec57 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -388,7 +388,8 @@ void qemu_console_early_init(void);
 QemuConsole *qemu_console_lookup_by_index(unsigned int index);
 QemuConsole *qemu_console_lookup_by_device(DeviceState *dev, uint32_t head);
 QemuConsole *qemu_console_lookup_by_device_name(const char *device_id,
-                                                uint32_t head, Error **errp);
+                                                uint32_t head,
+                                                Error *errp[static 1]);
 bool qemu_console_is_visible(QemuConsole *con);
 bool qemu_console_is_graphic(QemuConsole *con);
 bool qemu_console_is_fixedsize(QemuConsole *con);
@@ -463,13 +464,13 @@ static inline void cocoa_display_init(DisplayState *ds, 
int full_screen)
 
 /* vnc.c */
 void vnc_display_init(const char *id);
-void vnc_display_open(const char *id, Error **errp);
+void vnc_display_open(const char *id, Error *errp[static 1]);
 void vnc_display_add_client(const char *id, int csock, bool skipauth);
 #ifdef CONFIG_VNC
 int vnc_display_password(const char *id, const char *password);
 int vnc_display_pw_expire(const char *id, time_t expires);
-QemuOpts *vnc_parse(const char *str, Error **errp);
-int vnc_init_func(void *opaque, QemuOpts *opts, Error **errp);
+QemuOpts *vnc_parse(const char *str, Error *errp[static 1]);
+int vnc_init_func(void *opaque, QemuOpts *opts, Error *errp[static 1]);
 #else
 static inline int vnc_display_password(const char *id, const char *password)
 {
@@ -479,12 +480,13 @@ static inline int vnc_display_pw_expire(const char *id, 
time_t expires)
 {
     return -ENODEV;
 };
-static inline QemuOpts *vnc_parse(const char *str, Error **errp)
+static inline QemuOpts *vnc_parse(const char *str, Error *errp[static 1])
 {
     error_setg(errp, "VNC support is disabled");
     return NULL;
 }
-static inline int vnc_init_func(void *opaque, QemuOpts *opts, Error **errp)
+static inline int vnc_init_func(void *opaque, QemuOpts *opts,
+                                Error *errp[static 1])
 {
     error_setg(errp, "VNC support is disabled");
     return -1;
diff --git a/include/ui/input.h b/include/ui/input.h
index 3cfd0f3363..6b3a2e5420 100644
--- a/include/ui/input.h
+++ b/include/ui/input.h
@@ -32,7 +32,7 @@ void qemu_input_handler_deactivate(QemuInputHandlerState *s);
 void qemu_input_handler_unregister(QemuInputHandlerState *s);
 void qemu_input_handler_bind(QemuInputHandlerState *s,
                              const char *device_id, int head,
-                             Error **errp);
+                             Error *errp[static 1]);
 void qemu_input_event_send(QemuConsole *src, InputEvent *evt);
 void qemu_input_event_send_impl(QemuConsole *src, InputEvent *evt);
 void qemu_input_event_sync(void);
diff --git a/include/ui/qemu-spice.h b/include/ui/qemu-spice.h
index 52a9f8808b..8054833e09 100644
--- a/include/ui/qemu-spice.h
+++ b/include/ui/qemu-spice.h
@@ -96,7 +96,7 @@ static inline void qemu_spice_init(void)
 
 #endif /* CONFIG_SPICE */
 
-static inline bool qemu_using_spice(Error **errp)
+static inline bool qemu_using_spice(Error *errp[static 1])
 {
     if (!using_spice) {
         error_set(errp, ERROR_CLASS_DEVICE_NOT_ACTIVE,
diff --git a/migration/block.h b/migration/block.h
index 22ebe94259..bc2ee0a0ae 100644
--- a/migration/block.h
+++ b/migration/block.h
@@ -41,5 +41,5 @@ static inline uint64_t blk_mig_bytes_total(void)
 }
 #endif /* CONFIG_LIVE_BLOCK_MIGRATION */
 
-void migrate_set_block_enabled(bool value, Error **errp);
+void migrate_set_block_enabled(bool value, Error *errp[static 1]);
 #endif /* MIGRATION_BLOCK_H */
diff --git a/migration/exec.h b/migration/exec.h
index b210ffde7a..1facf8d7c3 100644
--- a/migration/exec.h
+++ b/migration/exec.h
@@ -19,8 +19,9 @@
 
 #ifndef QEMU_MIGRATION_EXEC_H
 #define QEMU_MIGRATION_EXEC_H
-void exec_start_incoming_migration(const char *host_port, Error **errp);
+void exec_start_incoming_migration(const char *host_port,
+                                  Error *errp[static 1]);
 
 void exec_start_outgoing_migration(MigrationState *s, const char *host_port,
-                                   Error **errp);
+                                   Error *errp[static 1]);
 #endif
diff --git a/migration/fd.h b/migration/fd.h
index a14a63ce2e..44c7ac84d9 100644
--- a/migration/fd.h
+++ b/migration/fd.h
@@ -16,8 +16,8 @@
 
 #ifndef QEMU_MIGRATION_FD_H
 #define QEMU_MIGRATION_FD_H
-void fd_start_incoming_migration(const char *path, Error **errp);
+void fd_start_incoming_migration(const char *path, Error *errp[static 1]);
 
 void fd_start_outgoing_migration(MigrationState *s, const char *fdname,
-                                 Error **errp);
+                                 Error *errp[static 1]);
 #endif
diff --git a/migration/rdma.h b/migration/rdma.h
index de2ba09dc5..1a8ccc3fea 100644
--- a/migration/rdma.h
+++ b/migration/rdma.h
@@ -18,8 +18,9 @@
 #define QEMU_MIGRATION_RDMA_H
 
 void rdma_start_outgoing_migration(void *opaque, const char *host_port,
-                                   Error **errp);
+                                   Error *errp[static 1]);
 
-void rdma_start_incoming_migration(const char *host_port, Error **errp);
+void rdma_start_incoming_migration(const char *host_port,
+                                  Error *errp[static 1]);
 
 #endif
diff --git a/migration/savevm.h b/migration/savevm.h
index eb4487771a..e606f0f702 100644
--- a/migration/savevm.h
+++ b/migration/savevm.h
@@ -14,7 +14,7 @@
 #ifndef MIGRATION_SAVEVM_H
 #define MIGRATION_SAVEVM_H
 
-bool qemu_savevm_state_blocked(Error **errp);
+bool qemu_savevm_state_blocked(Error *errp[static 1]);
 void qemu_savevm_state_begin(QEMUFile *f);
 void qemu_savevm_state_header(QEMUFile *f);
 int qemu_savevm_state_iterate(QEMUFile *f, bool postcopy);
diff --git a/migration/socket.h b/migration/socket.h
index 6b91e9db38..d913f270ab 100644
--- a/migration/socket.h
+++ b/migration/socket.h
@@ -16,13 +16,14 @@
 
 #ifndef QEMU_MIGRATION_SOCKET_H
 #define QEMU_MIGRATION_SOCKET_H
-void tcp_start_incoming_migration(const char *host_port, Error **errp);
+void tcp_start_incoming_migration(const char *host_port,
+                                 Error *errp[static 1]);
 
 void tcp_start_outgoing_migration(MigrationState *s, const char *host_port,
-                                  Error **errp);
+                                  Error *errp[static 1]);
 
-void unix_start_incoming_migration(const char *path, Error **errp);
+void unix_start_incoming_migration(const char *path, Error *errp[static 1]);
 
 void unix_start_outgoing_migration(MigrationState *s, const char *path,
-                                   Error **errp);
+                                   Error *errp[static 1]);
 #endif
diff --git a/migration/tls.h b/migration/tls.h
index cdd70001ed..455552db87 100644
--- a/migration/tls.h
+++ b/migration/tls.h
@@ -25,10 +25,10 @@
 
 void migration_tls_channel_process_incoming(MigrationState *s,
                                             QIOChannel *ioc,
-                                            Error **errp);
+                                            Error *errp[static 1]);
 
 void migration_tls_channel_connect(MigrationState *s,
                                    QIOChannel *ioc,
                                    const char *hostname,
-                                   Error **errp);
+                                   Error *errp[static 1]);
 #endif
diff --git a/nbd/nbd-internal.h b/nbd/nbd-internal.h
index d6071640a0..f3ba5d5d92 100644
--- a/nbd/nbd-internal.h
+++ b/nbd/nbd-internal.h
@@ -101,7 +101,7 @@
  * iteratively.
  */
 static inline ssize_t read_sync_eof(QIOChannel *ioc, void *buffer, size_t size,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     struct iovec iov = { .iov_base = buffer, .iov_len = size };
     /* Sockets are kept in blocking mode in the negotiation phase.  After
@@ -116,7 +116,7 @@ static inline ssize_t read_sync_eof(QIOChannel *ioc, void 
*buffer, size_t size,
  * Reads @size bytes from @ioc. Returns 0 on success.
  */
 static inline int read_sync(QIOChannel *ioc, void *buffer, size_t size,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     ssize_t ret = read_sync_eof(ioc, buffer, size, errp);
 
@@ -132,7 +132,7 @@ static inline int read_sync(QIOChannel *ioc, void *buffer, 
size_t size,
  * Writes @size bytes to @ioc. Returns 0 on success.
  */
 static inline int write_sync(QIOChannel *ioc, const void *buffer, size_t size,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     struct iovec iov = { .iov_base = (void *) buffer, .iov_len = size };
 
diff --git a/net/clients.h b/net/clients.h
index 5cae479730..c11d22ddf5 100644
--- a/net/clients.h
+++ b/net/clients.h
@@ -28,38 +28,38 @@
 #include "qapi-types.h"
 
 int net_init_dump(const Netdev *netdev, const char *name,
-                  NetClientState *peer, Error **errp);
+                  NetClientState *peer, Error *errp[static 1]);
 
 #ifdef CONFIG_SLIRP
 int net_init_slirp(const Netdev *netdev, const char *name,
-                   NetClientState *peer, Error **errp);
+                   NetClientState *peer, Error *errp[static 1]);
 #endif
 
 int net_init_hubport(const Netdev *netdev, const char *name,
-                     NetClientState *peer, Error **errp);
+                     NetClientState *peer, Error *errp[static 1]);
 
 int net_init_socket(const Netdev *netdev, const char *name,
-                    NetClientState *peer, Error **errp);
+                    NetClientState *peer, Error *errp[static 1]);
 
 int net_init_tap(const Netdev *netdev, const char *name,
-                 NetClientState *peer, Error **errp);
+                 NetClientState *peer, Error *errp[static 1]);
 
 int net_init_bridge(const Netdev *netdev, const char *name,
-                    NetClientState *peer, Error **errp);
+                    NetClientState *peer, Error *errp[static 1]);
 
 int net_init_l2tpv3(const Netdev *netdev, const char *name,
-                    NetClientState *peer, Error **errp);
+                    NetClientState *peer, Error *errp[static 1]);
 #ifdef CONFIG_VDE
 int net_init_vde(const Netdev *netdev, const char *name,
-                 NetClientState *peer, Error **errp);
+                 NetClientState *peer, Error *errp[static 1]);
 #endif
 
 #ifdef CONFIG_NETMAP
 int net_init_netmap(const Netdev *netdev, const char *name,
-                    NetClientState *peer, Error **errp);
+                    NetClientState *peer, Error *errp[static 1]);
 #endif
 
 int net_init_vhost_user(const Netdev *netdev, const char *name,
-                        NetClientState *peer, Error **errp);
+                        NetClientState *peer, Error *errp[static 1]);
 
 #endif /* QEMU_NET_CLIENTS_H */
diff --git a/net/tap_int.h b/net/tap_int.h
index ae6888f74a..deb2b0fe1d 100644
--- a/net/tap_int.h
+++ b/net/tap_int.h
@@ -30,11 +30,12 @@
 #include "qapi-types.h"
 
 int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
-             int vnet_hdr_required, int mq_required, Error **errp);
+             int vnet_hdr_required, int mq_required, Error *errp[static 1]);
 
 ssize_t tap_read_packet(int tapfd, uint8_t *buf, int maxlen);
 
-void tap_set_sndbuf(int fd, const NetdevTapOptions *tap, Error **errp);
+void tap_set_sndbuf(int fd, const NetdevTapOptions *tap,
+                   Error *errp[static 1]);
 int tap_probe_vnet_hdr(int fd);
 int tap_probe_vnet_hdr_len(int fd, int len);
 int tap_probe_has_ufo(int fd);
diff --git a/qga/guest-agent-core.h b/qga/guest-agent-core.h
index 3e8a4acff2..b01321ae7e 100644
--- a/qga/guest-agent-core.h
+++ b/qga/guest-agent-core.h
@@ -40,8 +40,8 @@ bool ga_is_frozen(GAState *s);
 void ga_set_frozen(GAState *s);
 void ga_unset_frozen(GAState *s);
 const char *ga_fsfreeze_hook(GAState *s);
-int64_t ga_get_fd_handle(GAState *s, Error **errp);
-int ga_parse_whence(GuestFileWhence *whence, Error **errp);
+int64_t ga_get_fd_handle(GAState *s, Error *errp[static 1]);
+int ga_parse_whence(GuestFileWhence *whence, Error *errp[static 1]);
 
 #ifndef _WIN32
 void reopen_fd_to_null(int fd);
diff --git a/qga/vss-win32.h b/qga/vss-win32.h
index 4f8e39aa5c..52fe12cdbd 100644
--- a/qga/vss-win32.h
+++ b/qga/vss-win32.h
@@ -22,6 +22,6 @@ bool vss_initialized(void);
 int ga_install_vss_provider(void);
 void ga_uninstall_vss_provider(void);
 
-void qga_vss_fsfreeze(int *nr_volume, bool freeze, Error **errp);
+void qga_vss_fsfreeze(int *nr_volume, bool freeze, Error *errp[static 1]);
 
 #endif
diff --git a/replication.h b/replication.h
index ece6ca6133..e31f1e5aa3 100644
--- a/replication.h
+++ b/replication.h
@@ -143,7 +143,7 @@ void replication_remove(ReplicationState *rs);
  *
  * Note: the caller of the function MUST make sure vm stopped
  */
-void replication_start_all(ReplicationMode mode, Error **errp);
+void replication_start_all(ReplicationMode mode, Error *errp[static 1]);
 
 /**
  * replication_do_checkpoint_all:
@@ -151,7 +151,7 @@ void replication_start_all(ReplicationMode mode, Error 
**errp);
  *
  * This interface is called after all VM state is transferred to Secondary QEMU
  */
-void replication_do_checkpoint_all(Error **errp);
+void replication_do_checkpoint_all(Error *errp[static 1]);
 
 /**
  * replication_get_error_all:
@@ -159,7 +159,7 @@ void replication_do_checkpoint_all(Error **errp);
  *
  * This interface is called to check if error occurred during replication
  */
-void replication_get_error_all(Error **errp);
+void replication_get_error_all(Error *errp[static 1]);
 
 /**
  * replication_stop_all:
@@ -169,6 +169,6 @@ void replication_get_error_all(Error **errp);
  * It is called on failover. The vm should be stopped before calling it, if you
  * use this API to shutdown the guest, or other things except failover
  */
-void replication_stop_all(bool failover, Error **errp);
+void replication_stop_all(bool failover, Error *errp[static 1]);
 
 #endif /* REPLICATION_H */
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
index de0551f775..cdf77dc82a 100644
--- a/target/i386/cpu.h
+++ b/target/i386/cpu.h
@@ -1311,7 +1311,7 @@ int x86_cpu_write_elf32_qemunote(WriteCoreDumpFunction f, 
CPUState *cpu,
                                  void *opaque);
 
 void x86_cpu_get_memory_mapping(CPUState *cpu, MemoryMappingList *list,
-                                Error **errp);
+                                Error *errp[static 1]);
 
 void x86_cpu_dump_state(CPUState *cs, FILE *f, fprintf_function cpu_fprintf,
                         int flags);
diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h
index d10808d9f4..fdaeacffce 100644
--- a/target/ppc/cpu.h
+++ b/target/ppc/cpu.h
@@ -1370,9 +1370,10 @@ static inline int cpu_mmu_index (CPUPPCState *env, bool 
ifetch)
 #if defined(TARGET_PPC64)
 bool ppc_check_compat(PowerPCCPU *cpu, uint32_t compat_pvr,
                       uint32_t min_compat_pvr, uint32_t max_compat_pvr);
-void ppc_set_compat(PowerPCCPU *cpu, uint32_t compat_pvr, Error **errp);
+void ppc_set_compat(PowerPCCPU *cpu, uint32_t compat_pvr,
+                   Error *errp[static 1]);
 #if !defined(CONFIG_USER_ONLY)
-void ppc_set_compat_all(uint32_t compat_pvr, Error **errp);
+void ppc_set_compat_all(uint32_t compat_pvr, Error *errp[static 1]);
 #endif
 int ppc_compat_max_threads(PowerPCCPU *cpu);
 #endif /* defined(TARGET_PPC64) */
diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h
index 2ce509f601..b988708249 100644
--- a/target/s390x/cpu.h
+++ b/target/s390x/cpu.h
@@ -470,8 +470,9 @@ void trigger_pgm_exception(CPUS390XState *env, uint32_t 
code, uint32_t ilen);
 #endif
 
 S390CPU *cpu_s390x_init(const char *cpu_model);
-S390CPU *s390x_new_cpu(const char *cpu_model, int64_t id, Error **errp);
-S390CPU *cpu_s390x_create(const char *cpu_model, Error **errp);
+S390CPU *s390x_new_cpu(const char *cpu_model, int64_t id,
+                      Error *errp[static 1]);
+S390CPU *cpu_s390x_create(const char *cpu_model, Error *errp[static 1]);
 void s390x_translate_init(void);
 
 /* you can call this signal handler from your SIGBUS and SIGSEGV
@@ -640,7 +641,7 @@ void s390_cpu_list(FILE *f, fprintf_function cpu_fprintf);
 #define cpu_list s390_cpu_list
 void s390_cpu_model_register_props(Object *obj);
 void s390_cpu_model_class_register_props(ObjectClass *oc);
-void s390_realize_cpu_model(CPUState *cs, Error **errp);
+void s390_realize_cpu_model(CPUState *cs, Error *errp[static 1]);
 ObjectClass *s390_cpu_class_by_name(const char *name);
 
 #define EXCP_EXT 1 /* external interrupt */
diff --git a/target/s390x/cpu_models.h b/target/s390x/cpu_models.h
index 136a602313..15f64f08ed 100644
--- a/target/s390x/cpu_models.h
+++ b/target/s390x/cpu_models.h
@@ -99,15 +99,16 @@ S390CPUDef const *s390_find_cpu_def(uint16_t type, uint8_t 
gen, uint8_t ec_ga,
 
 #ifdef CONFIG_KVM
 bool kvm_s390_cpu_models_supported(void);
-void kvm_s390_get_host_cpu_model(S390CPUModel *model, Error **errp);
-void kvm_s390_apply_cpu_model(const S390CPUModel *model,  Error **errp);
+void kvm_s390_get_host_cpu_model(S390CPUModel *model, Error *errp[static 1]);
+void kvm_s390_apply_cpu_model(const S390CPUModel *model,
+                               Error *errp[static 1]);
 #else
 static inline void kvm_s390_get_host_cpu_model(S390CPUModel *model,
-                                               Error **errp)
+                                               Error *errp[static 1])
 {
 }
 static inline void kvm_s390_apply_cpu_model(const S390CPUModel *model,
-                                            Error **errp)
+                                            Error *errp[static 1])
 {
 }
 static inline bool kvm_s390_cpu_models_supported(void)
diff --git a/qapi/qapi-visit-core.c b/qapi/qapi-visit-core.c
index e4700d3ff9..43910029f3 100644
--- a/qapi/qapi-visit-core.c
+++ b/qapi/qapi-visit-core.c
@@ -39,7 +39,7 @@ void visit_free(Visitor *v)
 }
 
 void visit_start_struct(Visitor *v, const char *name, void **obj,
-                        size_t size, Error **errp)
+                        size_t size, Error *errp[static 1])
 {
     Error *err = NULL;
 
@@ -55,7 +55,7 @@ void visit_start_struct(Visitor *v, const char *name, void 
**obj,
     error_propagate(errp, err);
 }
 
-void visit_check_struct(Visitor *v, Error **errp)
+void visit_check_struct(Visitor *v, Error *errp[static 1])
 {
     trace_visit_check_struct(v);
     if (v->check_struct) {
@@ -70,7 +70,7 @@ void visit_end_struct(Visitor *v, void **obj)
 }
 
 void visit_start_list(Visitor *v, const char *name, GenericList **list,
-                      size_t size, Error **errp)
+                      size_t size, Error *errp[static 1])
 {
     Error *err = NULL;
 
@@ -90,7 +90,7 @@ GenericList *visit_next_list(Visitor *v, GenericList *tail, 
size_t size)
     return v->next_list(v, tail, size);
 }
 
-void visit_check_list(Visitor *v, Error **errp)
+void visit_check_list(Visitor *v, Error *errp[static 1])
 {
     trace_visit_check_list(v);
     if (v->check_list) {
@@ -106,7 +106,7 @@ void visit_end_list(Visitor *v, void **obj)
 
 void visit_start_alternate(Visitor *v, const char *name,
                            GenericAlternate **obj, size_t size,
-                           bool promote_int, Error **errp)
+                           bool promote_int, Error *errp[static 1])
 {
     Error *err = NULL;
 
@@ -144,7 +144,8 @@ bool visit_is_input(Visitor *v)
     return v->type == VISITOR_INPUT;
 }
 
-void visit_type_int(Visitor *v, const char *name, int64_t *obj, Error **errp)
+void visit_type_int(Visitor *v, const char *name, int64_t *obj,
+                    Error *errp[static 1])
 {
     assert(obj);
     trace_visit_type_int(v, name, obj);
@@ -152,7 +153,8 @@ void visit_type_int(Visitor *v, const char *name, int64_t 
*obj, Error **errp)
 }
 
 static void visit_type_uintN(Visitor *v, uint64_t *obj, const char *name,
-                             uint64_t max, const char *type, Error **errp)
+                             uint64_t max, const char *type,
+                             Error *errp[static 1])
 {
     Error *err = NULL;
     uint64_t value = *obj;
@@ -169,7 +171,7 @@ static void visit_type_uintN(Visitor *v, uint64_t *obj, 
const char *name,
 }
 
 void visit_type_uint8(Visitor *v, const char *name, uint8_t *obj,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     uint64_t value;
 
@@ -180,7 +182,7 @@ void visit_type_uint8(Visitor *v, const char *name, uint8_t 
*obj,
 }
 
 void visit_type_uint16(Visitor *v, const char *name, uint16_t *obj,
-                       Error **errp)
+                       Error *errp[static 1])
 {
     uint64_t value;
 
@@ -191,7 +193,7 @@ void visit_type_uint16(Visitor *v, const char *name, 
uint16_t *obj,
 }
 
 void visit_type_uint32(Visitor *v, const char *name, uint32_t *obj,
-                       Error **errp)
+                       Error *errp[static 1])
 {
     uint64_t value;
 
@@ -202,7 +204,7 @@ void visit_type_uint32(Visitor *v, const char *name, 
uint32_t *obj,
 }
 
 void visit_type_uint64(Visitor *v, const char *name, uint64_t *obj,
-                       Error **errp)
+                       Error *errp[static 1])
 {
     assert(obj);
     trace_visit_type_uint64(v, name, obj);
@@ -211,7 +213,7 @@ void visit_type_uint64(Visitor *v, const char *name, 
uint64_t *obj,
 
 static void visit_type_intN(Visitor *v, int64_t *obj, const char *name,
                             int64_t min, int64_t max, const char *type,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     Error *err = NULL;
     int64_t value = *obj;
@@ -227,7 +229,8 @@ static void visit_type_intN(Visitor *v, int64_t *obj, const 
char *name,
     }
 }
 
-void visit_type_int8(Visitor *v, const char *name, int8_t *obj, Error **errp)
+void visit_type_int8(Visitor *v, const char *name, int8_t *obj,
+                     Error *errp[static 1])
 {
     int64_t value;
 
@@ -238,7 +241,7 @@ void visit_type_int8(Visitor *v, const char *name, int8_t 
*obj, Error **errp)
 }
 
 void visit_type_int16(Visitor *v, const char *name, int16_t *obj,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     int64_t value;
 
@@ -249,7 +252,7 @@ void visit_type_int16(Visitor *v, const char *name, int16_t 
*obj,
 }
 
 void visit_type_int32(Visitor *v, const char *name, int32_t *obj,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     int64_t value;
 
@@ -260,7 +263,7 @@ void visit_type_int32(Visitor *v, const char *name, int32_t 
*obj,
 }
 
 void visit_type_int64(Visitor *v, const char *name, int64_t *obj,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     assert(obj);
     trace_visit_type_int64(v, name, obj);
@@ -268,7 +271,7 @@ void visit_type_int64(Visitor *v, const char *name, int64_t 
*obj,
 }
 
 void visit_type_size(Visitor *v, const char *name, uint64_t *obj,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     assert(obj);
     trace_visit_type_size(v, name, obj);
@@ -279,14 +282,16 @@ void visit_type_size(Visitor *v, const char *name, 
uint64_t *obj,
     }
 }
 
-void visit_type_bool(Visitor *v, const char *name, bool *obj, Error **errp)
+void visit_type_bool(Visitor *v, const char *name, bool *obj,
+                     Error *errp[static 1])
 {
     assert(obj);
     trace_visit_type_bool(v, name, obj);
     v->type_bool(v, name, obj, errp);
 }
 
-void visit_type_str(Visitor *v, const char *name, char **obj, Error **errp)
+void visit_type_str(Visitor *v, const char *name, char **obj,
+                    Error *errp[static 1])
 {
     Error *err = NULL;
 
@@ -304,14 +309,15 @@ void visit_type_str(Visitor *v, const char *name, char 
**obj, Error **errp)
 }
 
 void visit_type_number(Visitor *v, const char *name, double *obj,
-                       Error **errp)
+                       Error *errp[static 1])
 {
     assert(obj);
     trace_visit_type_number(v, name, obj);
     v->type_number(v, name, obj, errp);
 }
 
-void visit_type_any(Visitor *v, const char *name, QObject **obj, Error **errp)
+void visit_type_any(Visitor *v, const char *name, QObject **obj,
+                    Error *errp[static 1])
 {
     Error *err = NULL;
 
@@ -325,14 +331,15 @@ void visit_type_any(Visitor *v, const char *name, QObject 
**obj, Error **errp)
     error_propagate(errp, err);
 }
 
-void visit_type_null(Visitor *v, const char *name, Error **errp)
+void visit_type_null(Visitor *v, const char *name, Error *errp[static 1])
 {
     trace_visit_type_null(v, name);
     v->type_null(v, name, errp);
 }
 
 static void output_type_enum(Visitor *v, const char *name, int *obj,
-                             const char *const strings[], Error **errp)
+                             const char *const strings[],
+                             Error *errp[static 1])
 {
     int i = 0;
     int value = *obj;
@@ -349,7 +356,8 @@ static void output_type_enum(Visitor *v, const char *name, 
int *obj,
 }
 
 static void input_type_enum(Visitor *v, const char *name, int *obj,
-                            const char *const strings[], Error **errp)
+                            const char *const strings[],
+                            Error *errp[static 1])
 {
     int64_t value = 0;
     char *enum_str;
@@ -377,7 +385,7 @@ static void input_type_enum(Visitor *v, const char *name, 
int *obj,
 }
 
 void visit_type_enum(Visitor *v, const char *name, int *obj,
-                     const char *const strings[], Error **errp)
+                     const char *const strings[], Error *errp[static 1])
 {
     assert(obj && strings);
     trace_visit_type_enum(v, name, obj);
diff --git a/arch_init.c b/arch_init.c
index a0b8ed6167..2e92cb6060 100644
--- a/arch_init.c
+++ b/arch_init.c
@@ -104,7 +104,7 @@ int xen_available(void)
 }
 
 
-TargetInfo *qmp_query_target(Error **errp)
+TargetInfo *qmp_query_target(Error *errp[static 1])
 {
     TargetInfo *info = g_malloc0(sizeof(*info));
 
diff --git a/backends/cryptodev-builtin.c b/backends/cryptodev-builtin.c
index 657c0ba2f3..fe644633ac 100644
--- a/backends/cryptodev-builtin.c
+++ b/backends/cryptodev-builtin.c
@@ -62,7 +62,7 @@ struct CryptoDevBackendBuiltin {
 };
 
 static void cryptodev_builtin_init(
-             CryptoDevBackend *backend, Error **errp)
+             CryptoDevBackend *backend, Error *errp[static 1])
 {
     /* Only support one queue */
     int queues = backend->conf.peers.queues;
@@ -120,7 +120,8 @@ cryptodev_builtin_get_unused_session_index(
 #define AES_KEYSIZE_256_XTS 64
 
 static int
-cryptodev_builtin_get_aes_algo(uint32_t key_len, int mode, Error **errp)
+cryptodev_builtin_get_aes_algo(uint32_t key_len, int mode,
+                               Error *errp[static 1])
 {
     int algo;
 
@@ -154,7 +155,7 @@ err:
 static int cryptodev_builtin_create_cipher_session(
                     CryptoDevBackendBuiltin *builtin,
                     CryptoDevBackendSymSessionInfo *sess_info,
-                    Error **errp)
+                    Error *errp[static 1])
 {
     int algo;
     int mode;
@@ -246,7 +247,7 @@ static int cryptodev_builtin_create_cipher_session(
 static int64_t cryptodev_builtin_sym_create_session(
            CryptoDevBackend *backend,
            CryptoDevBackendSymSessionInfo *sess_info,
-           uint32_t queue_index, Error **errp)
+           uint32_t queue_index, Error *errp[static 1])
 {
     CryptoDevBackendBuiltin *builtin =
                       CRYPTODEV_BACKEND_BUILTIN(backend);
@@ -277,7 +278,7 @@ static int64_t cryptodev_builtin_sym_create_session(
 static int cryptodev_builtin_sym_close_session(
            CryptoDevBackend *backend,
            uint64_t session_id,
-           uint32_t queue_index, Error **errp)
+           uint32_t queue_index, Error *errp[static 1])
 {
     CryptoDevBackendBuiltin *builtin =
                       CRYPTODEV_BACKEND_BUILTIN(backend);
@@ -298,7 +299,7 @@ static int cryptodev_builtin_sym_close_session(
 static int cryptodev_builtin_sym_operation(
                  CryptoDevBackend *backend,
                  CryptoDevBackendSymOpInfo *op_info,
-                 uint32_t queue_index, Error **errp)
+                 uint32_t queue_index, Error *errp[static 1])
 {
     CryptoDevBackendBuiltin *builtin =
                       CRYPTODEV_BACKEND_BUILTIN(backend);
@@ -346,7 +347,7 @@ static int cryptodev_builtin_sym_operation(
 
 static void cryptodev_builtin_cleanup(
              CryptoDevBackend *backend,
-             Error **errp)
+             Error *errp[static 1])
 {
     CryptoDevBackendBuiltin *builtin =
                       CRYPTODEV_BACKEND_BUILTIN(backend);
diff --git a/backends/cryptodev.c b/backends/cryptodev.c
index 03a78f269f..4bca763e58 100644
--- a/backends/cryptodev.c
+++ b/backends/cryptodev.c
@@ -65,7 +65,7 @@ void cryptodev_backend_free_client(
 
 void cryptodev_backend_cleanup(
              CryptoDevBackend *backend,
-             Error **errp)
+             Error *errp[static 1])
 {
     CryptoDevBackendClass *bc =
                   CRYPTODEV_BACKEND_GET_CLASS(backend);
@@ -78,7 +78,7 @@ void cryptodev_backend_cleanup(
 int64_t cryptodev_backend_sym_create_session(
            CryptoDevBackend *backend,
            CryptoDevBackendSymSessionInfo *sess_info,
-           uint32_t queue_index, Error **errp)
+           uint32_t queue_index, Error *errp[static 1])
 {
     CryptoDevBackendClass *bc =
                       CRYPTODEV_BACKEND_GET_CLASS(backend);
@@ -93,7 +93,7 @@ int64_t cryptodev_backend_sym_create_session(
 int cryptodev_backend_sym_close_session(
            CryptoDevBackend *backend,
            uint64_t session_id,
-           uint32_t queue_index, Error **errp)
+           uint32_t queue_index, Error *errp[static 1])
 {
     CryptoDevBackendClass *bc =
                       CRYPTODEV_BACKEND_GET_CLASS(backend);
@@ -108,7 +108,7 @@ int cryptodev_backend_sym_close_session(
 static int cryptodev_backend_sym_operation(
                  CryptoDevBackend *backend,
                  CryptoDevBackendSymOpInfo *op_info,
-                 uint32_t queue_index, Error **errp)
+                 uint32_t queue_index, Error *errp[static 1])
 {
     CryptoDevBackendClass *bc =
                       CRYPTODEV_BACKEND_GET_CLASS(backend);
@@ -123,7 +123,7 @@ static int cryptodev_backend_sym_operation(
 int cryptodev_backend_crypto_operation(
                  CryptoDevBackend *backend,
                  void *opaque,
-                 uint32_t queue_index, Error **errp)
+                 uint32_t queue_index, Error *errp[static 1])
 {
     VirtIOCryptoReq *req = opaque;
 
@@ -144,7 +144,7 @@ int cryptodev_backend_crypto_operation(
 
 static void
 cryptodev_backend_get_queues(Object *obj, Visitor *v, const char *name,
-                             void *opaque, Error **errp)
+                             void *opaque, Error *errp[static 1])
 {
     CryptoDevBackend *backend = CRYPTODEV_BACKEND(obj);
     uint32_t value = backend->conf.peers.queues;
@@ -154,7 +154,7 @@ cryptodev_backend_get_queues(Object *obj, Visitor *v, const 
char *name,
 
 static void
 cryptodev_backend_set_queues(Object *obj, Visitor *v, const char *name,
-                             void *opaque, Error **errp)
+                             void *opaque, Error *errp[static 1])
 {
     CryptoDevBackend *backend = CRYPTODEV_BACKEND(obj);
     Error *local_err = NULL;
@@ -175,7 +175,7 @@ out:
 }
 
 static void
-cryptodev_backend_complete(UserCreatable *uc, Error **errp)
+cryptodev_backend_complete(UserCreatable *uc, Error *errp[static 1])
 {
     CryptoDevBackend *backend = CRYPTODEV_BACKEND(uc);
     CryptoDevBackendClass *bc = CRYPTODEV_BACKEND_GET_CLASS(uc);
@@ -215,7 +215,7 @@ bool cryptodev_backend_is_ready(CryptoDevBackend *backend)
 }
 
 static bool
-cryptodev_backend_can_be_deleted(UserCreatable *uc, Error **errp)
+cryptodev_backend_can_be_deleted(UserCreatable *uc, Error *errp[static 1])
 {
     return !cryptodev_backend_is_used(CRYPTODEV_BACKEND(uc));
 }
diff --git a/backends/hostmem-file.c b/backends/hostmem-file.c
index fc4ef46d11..8da1cf3c14 100644
--- a/backends/hostmem-file.c
+++ b/backends/hostmem-file.c
@@ -36,7 +36,7 @@ struct HostMemoryBackendFile {
 };
 
 static void
-file_backend_memory_alloc(HostMemoryBackend *backend, Error **errp)
+file_backend_memory_alloc(HostMemoryBackend *backend, Error *errp[static 1])
 {
     HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(backend);
 
@@ -64,14 +64,14 @@ file_backend_memory_alloc(HostMemoryBackend *backend, Error 
**errp)
 #endif
 }
 
-static char *get_mem_path(Object *o, Error **errp)
+static char *get_mem_path(Object *o, Error *errp[static 1])
 {
     HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(o);
 
     return g_strdup(fb->mem_path);
 }
 
-static void set_mem_path(Object *o, const char *str, Error **errp)
+static void set_mem_path(Object *o, const char *str, Error *errp[static 1])
 {
     HostMemoryBackend *backend = MEMORY_BACKEND(o);
     HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(o);
@@ -84,14 +84,15 @@ static void set_mem_path(Object *o, const char *str, Error 
**errp)
     fb->mem_path = g_strdup(str);
 }
 
-static bool file_memory_backend_get_share(Object *o, Error **errp)
+static bool file_memory_backend_get_share(Object *o, Error *errp[static 1])
 {
     HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(o);
 
     return fb->share;
 }
 
-static void file_memory_backend_set_share(Object *o, bool value, Error **errp)
+static void file_memory_backend_set_share(Object *o, bool value,
+                                          Error *errp[static 1])
 {
     HostMemoryBackend *backend = MEMORY_BACKEND(o);
     HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(o);
diff --git a/backends/hostmem-ram.c b/backends/hostmem-ram.c
index 04a7ac362b..9f0472b937 100644
--- a/backends/hostmem-ram.c
+++ b/backends/hostmem-ram.c
@@ -18,7 +18,7 @@
 
 
 static void
-ram_backend_memory_alloc(HostMemoryBackend *backend, Error **errp)
+ram_backend_memory_alloc(HostMemoryBackend *backend, Error *errp[static 1])
 {
     char *path;
 
diff --git a/backends/hostmem.c b/backends/hostmem.c
index 8fcc5d68c9..6ff73a3d86 100644
--- a/backends/hostmem.c
+++ b/backends/hostmem.c
@@ -29,7 +29,7 @@ QEMU_BUILD_BUG_ON(HOST_MEM_POLICY_INTERLEAVE != 
MPOL_INTERLEAVE);
 
 static void
 host_memory_backend_get_size(Object *obj, Visitor *v, const char *name,
-                             void *opaque, Error **errp)
+                             void *opaque, Error *errp[static 1])
 {
     HostMemoryBackend *backend = MEMORY_BACKEND(obj);
     uint64_t value = backend->size;
@@ -39,7 +39,7 @@ host_memory_backend_get_size(Object *obj, Visitor *v, const 
char *name,
 
 static void
 host_memory_backend_set_size(Object *obj, Visitor *v, const char *name,
-                             void *opaque, Error **errp)
+                             void *opaque, Error *errp[static 1])
 {
     HostMemoryBackend *backend = MEMORY_BACKEND(obj);
     Error *local_err = NULL;
@@ -66,7 +66,7 @@ out:
 
 static void
 host_memory_backend_get_host_nodes(Object *obj, Visitor *v, const char *name,
-                                   void *opaque, Error **errp)
+                                   void *opaque, Error *errp[static 1])
 {
     HostMemoryBackend *backend = MEMORY_BACKEND(obj);
     uint16List *host_nodes = NULL;
@@ -98,7 +98,7 @@ host_memory_backend_get_host_nodes(Object *obj, Visitor *v, 
const char *name,
 
 static void
 host_memory_backend_set_host_nodes(Object *obj, Visitor *v, const char *name,
-                                   void *opaque, Error **errp)
+                                   void *opaque, Error *errp[static 1])
 {
 #ifdef CONFIG_NUMA
     HostMemoryBackend *backend = MEMORY_BACKEND(obj);
@@ -116,14 +116,15 @@ host_memory_backend_set_host_nodes(Object *obj, Visitor 
*v, const char *name,
 }
 
 static int
-host_memory_backend_get_policy(Object *obj, Error **errp G_GNUC_UNUSED)
+host_memory_backend_get_policy(Object *obj,
+                               Error *errp[static 1] G_GNUC_UNUSED)
 {
     HostMemoryBackend *backend = MEMORY_BACKEND(obj);
     return backend->policy;
 }
 
 static void
-host_memory_backend_set_policy(Object *obj, int policy, Error **errp)
+host_memory_backend_set_policy(Object *obj, int policy, Error *errp[static 1])
 {
     HostMemoryBackend *backend = MEMORY_BACKEND(obj);
     backend->policy = policy;
@@ -135,14 +136,15 @@ host_memory_backend_set_policy(Object *obj, int policy, 
Error **errp)
 #endif
 }
 
-static bool host_memory_backend_get_merge(Object *obj, Error **errp)
+static bool host_memory_backend_get_merge(Object *obj, Error *errp[static 1])
 {
     HostMemoryBackend *backend = MEMORY_BACKEND(obj);
 
     return backend->merge;
 }
 
-static void host_memory_backend_set_merge(Object *obj, bool value, Error 
**errp)
+static void host_memory_backend_set_merge(Object *obj, bool value,
+                                          Error *errp[static 1])
 {
     HostMemoryBackend *backend = MEMORY_BACKEND(obj);
 
@@ -161,14 +163,15 @@ static void host_memory_backend_set_merge(Object *obj, 
bool value, Error **errp)
     }
 }
 
-static bool host_memory_backend_get_dump(Object *obj, Error **errp)
+static bool host_memory_backend_get_dump(Object *obj, Error *errp[static 1])
 {
     HostMemoryBackend *backend = MEMORY_BACKEND(obj);
 
     return backend->dump;
 }
 
-static void host_memory_backend_set_dump(Object *obj, bool value, Error **errp)
+static void host_memory_backend_set_dump(Object *obj, bool value,
+                                         Error *errp[static 1])
 {
     HostMemoryBackend *backend = MEMORY_BACKEND(obj);
 
@@ -187,7 +190,8 @@ static void host_memory_backend_set_dump(Object *obj, bool 
value, Error **errp)
     }
 }
 
-static bool host_memory_backend_get_prealloc(Object *obj, Error **errp)
+static bool host_memory_backend_get_prealloc(Object *obj,
+                                             Error *errp[static 1])
 {
     HostMemoryBackend *backend = MEMORY_BACKEND(obj);
 
@@ -195,7 +199,7 @@ static bool host_memory_backend_get_prealloc(Object *obj, 
Error **errp)
 }
 
 static void host_memory_backend_set_prealloc(Object *obj, bool value,
-                                             Error **errp)
+                                             Error *errp[static 1])
 {
     HostMemoryBackend *backend = MEMORY_BACKEND(obj);
 
@@ -245,7 +249,8 @@ bool host_memory_backend_mr_inited(HostMemoryBackend 
*backend)
 }
 
 MemoryRegion *
-host_memory_backend_get_memory(HostMemoryBackend *backend, Error **errp)
+host_memory_backend_get_memory(HostMemoryBackend *backend,
+                               Error *errp[static 1])
 {
     return host_memory_backend_mr_inited(backend) ? &backend->mr : NULL;
 }
@@ -261,7 +266,7 @@ bool host_memory_backend_is_mapped(HostMemoryBackend 
*backend)
 }
 
 static void
-host_memory_backend_memory_complete(UserCreatable *uc, Error **errp)
+host_memory_backend_memory_complete(UserCreatable *uc, Error *errp[static 1])
 {
     HostMemoryBackend *backend = MEMORY_BACKEND(uc);
     HostMemoryBackendClass *bc = MEMORY_BACKEND_GET_CLASS(uc);
@@ -340,7 +345,7 @@ out:
 }
 
 static bool
-host_memory_backend_can_be_deleted(UserCreatable *uc, Error **errp)
+host_memory_backend_can_be_deleted(UserCreatable *uc, Error *errp[static 1])
 {
     if (host_memory_backend_is_mapped(MEMORY_BACKEND(uc))) {
         return false;
@@ -349,14 +354,14 @@ host_memory_backend_can_be_deleted(UserCreatable *uc, 
Error **errp)
     }
 }
 
-static char *get_id(Object *o, Error **errp)
+static char *get_id(Object *o, Error *errp[static 1])
 {
     HostMemoryBackend *backend = MEMORY_BACKEND(o);
 
     return g_strdup(backend->id);
 }
 
-static void set_id(Object *o, const char *str, Error **errp)
+static void set_id(Object *o, const char *str, Error *errp[static 1])
 {
     HostMemoryBackend *backend = MEMORY_BACKEND(o);
 
diff --git a/backends/rng-egd.c b/backends/rng-egd.c
index 8c2acae177..3a8ac2cf7d 100644
--- a/backends/rng-egd.c
+++ b/backends/rng-egd.c
@@ -83,7 +83,7 @@ static void rng_egd_chr_read(void *opaque, const uint8_t 
*buf, int size)
     }
 }
 
-static void rng_egd_opened(RngBackend *b, Error **errp)
+static void rng_egd_opened(RngBackend *b, Error *errp[static 1])
 {
     RngEgd *s = RNG_EGD(b);
     Chardev *chr;
@@ -109,7 +109,8 @@ static void rng_egd_opened(RngBackend *b, Error **errp)
                              rng_egd_chr_read, NULL, s, NULL, true);
 }
 
-static void rng_egd_set_chardev(Object *obj, const char *value, Error **errp)
+static void rng_egd_set_chardev(Object *obj, const char *value,
+                                Error *errp[static 1])
 {
     RngBackend *b = RNG_BACKEND(obj);
     RngEgd *s = RNG_EGD(b);
@@ -122,7 +123,7 @@ static void rng_egd_set_chardev(Object *obj, const char 
*value, Error **errp)
     }
 }
 
-static char *rng_egd_get_chardev(Object *obj, Error **errp)
+static char *rng_egd_get_chardev(Object *obj, Error *errp[static 1])
 {
     RngEgd *s = RNG_EGD(obj);
     Chardev *chr = qemu_chr_fe_get_driver(&s->chr);
diff --git a/backends/rng-random.c b/backends/rng-random.c
index 029f6b9b01..eaf91d9b5a 100644
--- a/backends/rng-random.c
+++ b/backends/rng-random.c
@@ -66,7 +66,7 @@ static void rng_random_request_entropy(RngBackend *b, 
RngRequest *req)
     }
 }
 
-static void rng_random_opened(RngBackend *b, Error **errp)
+static void rng_random_opened(RngBackend *b, Error *errp[static 1])
 {
     RngRandom *s = RNG_RANDOM(b);
 
@@ -81,7 +81,7 @@ static void rng_random_opened(RngBackend *b, Error **errp)
     }
 }
 
-static char *rng_random_get_filename(Object *obj, Error **errp)
+static char *rng_random_get_filename(Object *obj, Error *errp[static 1])
 {
     RngRandom *s = RNG_RANDOM(obj);
 
@@ -89,7 +89,7 @@ static char *rng_random_get_filename(Object *obj, Error 
**errp)
 }
 
 static void rng_random_set_filename(Object *obj, const char *filename,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     RngBackend *b = RNG_BACKEND(obj);
     RngRandom *s = RNG_RANDOM(obj);
diff --git a/backends/rng.c b/backends/rng.c
index c5f4f01642..73191bddd2 100644
--- a/backends/rng.c
+++ b/backends/rng.c
@@ -38,19 +38,20 @@ void rng_backend_request_entropy(RngBackend *s, size_t size,
     }
 }
 
-static bool rng_backend_prop_get_opened(Object *obj, Error **errp)
+static bool rng_backend_prop_get_opened(Object *obj, Error *errp[static 1])
 {
     RngBackend *s = RNG_BACKEND(obj);
 
     return s->opened;
 }
 
-static void rng_backend_complete(UserCreatable *uc, Error **errp)
+static void rng_backend_complete(UserCreatable *uc, Error *errp[static 1])
 {
     object_property_set_bool(OBJECT(uc), true, "opened", errp);
 }
 
-static void rng_backend_prop_set_opened(Object *obj, bool value, Error **errp)
+static void rng_backend_prop_set_opened(Object *obj, bool value,
+                                        Error *errp[static 1])
 {
     RngBackend *s = RNG_BACKEND(obj);
     RngBackendClass *k = RNG_BACKEND_GET_CLASS(s);
diff --git a/backends/tpm.c b/backends/tpm.c
index 5b9788faf4..05a3303305 100644
--- a/backends/tpm.c
+++ b/backends/tpm.c
@@ -112,19 +112,20 @@ TPMVersion tpm_backend_get_tpm_version(TPMBackend *s)
     return k->ops->get_tpm_version(s);
 }
 
-static bool tpm_backend_prop_get_opened(Object *obj, Error **errp)
+static bool tpm_backend_prop_get_opened(Object *obj, Error *errp[static 1])
 {
     TPMBackend *s = TPM_BACKEND(obj);
 
     return s->opened;
 }
 
-void tpm_backend_open(TPMBackend *s, Error **errp)
+void tpm_backend_open(TPMBackend *s, Error *errp[static 1])
 {
     object_property_set_bool(OBJECT(s), true, "opened", errp);
 }
 
-static void tpm_backend_prop_set_opened(Object *obj, bool value, Error **errp)
+static void tpm_backend_prop_set_opened(Object *obj, bool value,
+                                        Error *errp[static 1])
 {
     TPMBackend *s = TPM_BACKEND(obj);
     TPMBackendClass *k = TPM_BACKEND_GET_CLASS(s);
diff --git a/balloon.c b/balloon.c
index 1d720fff81..a9ed1ebde6 100644
--- a/balloon.c
+++ b/balloon.c
@@ -49,7 +49,7 @@ void qemu_balloon_inhibit(bool state)
     balloon_inhibited = state;
 }
 
-static bool have_balloon(Error **errp)
+static bool have_balloon(Error *errp[static 1])
 {
     if (kvm_enabled() && !kvm_has_sync_mmu()) {
         error_set(errp, ERROR_CLASS_KVM_MISSING_CAP,
@@ -89,7 +89,7 @@ void qemu_remove_balloon_handler(void *opaque)
     balloon_opaque = NULL;
 }
 
-BalloonInfo *qmp_query_balloon(Error **errp)
+BalloonInfo *qmp_query_balloon(Error *errp[static 1])
 {
     BalloonInfo *info;
 
@@ -102,7 +102,7 @@ BalloonInfo *qmp_query_balloon(Error **errp)
     return info;
 }
 
-void qmp_balloon(int64_t target, Error **errp)
+void qmp_balloon(int64_t target, Error *errp[static 1])
 {
     if (!have_balloon(errp)) {
         return;
diff --git a/block.c b/block.c
index 1a6776447a..ea9b2f2396 100644
--- a/block.c
+++ b/block.c
@@ -72,7 +72,7 @@ static BlockDriverState *bdrv_open_inherit(const char 
*filename,
                                            QDict *options, int flags,
                                            BlockDriverState *parent,
                                            const BdrvChildRole *child_role,
-                                           Error **errp);
+                                           Error *errp[static 1]);
 
 /* If non-zero, use only whitelisted block drivers */
 static int use_bdrv_whitelist;
@@ -246,7 +246,8 @@ bool bdrv_is_writable(BlockDriverState *bs)
     return !bdrv_is_read_only(bs) && !(bs->open_flags & BDRV_O_INACTIVE);
 }
 
-int bdrv_can_set_read_only(BlockDriverState *bs, bool read_only, Error **errp)
+int bdrv_can_set_read_only(BlockDriverState *bs, bool read_only,
+                           Error *errp[static 1])
 {
     /* Do not set read_only if copy_on_read is enabled */
     if (bs->copy_on_read && read_only) {
@@ -265,7 +266,8 @@ int bdrv_can_set_read_only(BlockDriverState *bs, bool 
read_only, Error **errp)
     return 0;
 }
 
-int bdrv_set_read_only(BlockDriverState *bs, bool read_only, Error **errp)
+int bdrv_set_read_only(BlockDriverState *bs, bool read_only,
+                       Error *errp[static 1])
 {
     int ret = 0;
 
@@ -281,7 +283,7 @@ int bdrv_set_read_only(BlockDriverState *bs, bool 
read_only, Error **errp)
 void bdrv_get_full_backing_filename_from_filename(const char *backed,
                                                   const char *backing,
                                                   char *dest, size_t sz,
-                                                  Error **errp)
+                                                  Error *errp[static 1])
 {
     if (backing[0] == '\0' || path_has_protocol(backing) ||
         path_is_absolute(backing))
@@ -296,7 +298,7 @@ void bdrv_get_full_backing_filename_from_filename(const 
char *backed,
 }
 
 void bdrv_get_full_backing_filename(BlockDriverState *bs, char *dest, size_t 
sz,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     char *backed = bs->exact_filename[0] ? bs->exact_filename : bs->filename;
 
@@ -420,7 +422,7 @@ static void coroutine_fn bdrv_create_co_entry(void *opaque)
 }
 
 int bdrv_create(BlockDriver *drv, const char* filename,
-                QemuOpts *opts, Error **errp)
+                QemuOpts *opts, Error *errp[static 1])
 {
     int ret;
 
@@ -464,7 +466,8 @@ out:
     return ret;
 }
 
-int bdrv_create_file(const char *filename, QemuOpts *opts, Error **errp)
+int bdrv_create_file(const char *filename, QemuOpts *opts,
+                     Error *errp[static 1])
 {
     BlockDriver *drv;
     Error *local_err = NULL;
@@ -587,7 +590,7 @@ static BlockDriver *bdrv_do_find_protocol(const char 
*protocol)
 
 BlockDriver *bdrv_find_protocol(const char *filename,
                                 bool allow_protocol_prefix,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     BlockDriver *drv1;
     char protocol[128];
@@ -675,7 +678,7 @@ BlockDriver *bdrv_probe_all(const uint8_t *buf, int 
buf_size,
 }
 
 static int find_image_format(BlockBackend *file, const char *filename,
-                             BlockDriver **pdrv, Error **errp)
+                             BlockDriver **pdrv, Error *errp[static 1])
 {
     BlockDriver *drv;
     uint8_t buf[BLOCK_PROBE_BUF_SIZE];
@@ -1048,7 +1051,7 @@ static void update_options_from_flags(QDict *options, int 
flags)
 
 static void bdrv_assign_node_name(BlockDriverState *bs,
                                   const char *node_name,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     char *gen_node_name = NULL;
 
@@ -1085,7 +1088,7 @@ out:
 
 static int bdrv_open_driver(BlockDriverState *bs, BlockDriver *drv,
                             const char *node_name, QDict *options,
-                            int open_flags, Error **errp)
+                            int open_flags, Error *errp[static 1])
 {
     Error *local_err = NULL;
     int ret;
@@ -1148,7 +1151,7 @@ free_and_fail:
 }
 
 BlockDriverState *bdrv_new_open_driver(BlockDriver *drv, const char *node_name,
-                                       int flags, Error **errp)
+                                       int flags, Error *errp[static 1])
 {
     BlockDriverState *bs;
     int ret;
@@ -1226,7 +1229,7 @@ QemuOptsList bdrv_runtime_opts = {
  * Removes all processed options from *options.
  */
 static int bdrv_open_common(BlockDriverState *bs, BlockBackend *file,
-                            QDict *options, Error **errp)
+                            QDict *options, Error *errp[static 1])
 {
     int ret, open_flags;
     const char *filename;
@@ -1371,7 +1374,7 @@ fail_opts:
     return ret;
 }
 
-static QDict *parse_json_filename(const char *filename, Error **errp)
+static QDict *parse_json_filename(const char *filename, Error *errp[static 1])
 {
     QObject *options_obj;
     QDict *options;
@@ -1404,7 +1407,7 @@ static QDict *parse_json_filename(const char *filename, 
Error **errp)
 }
 
 static void parse_json_protocol(QDict *options, const char **pfilename,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     QDict *json_options;
     Error *local_err = NULL;
@@ -1434,7 +1437,7 @@ static void parse_json_protocol(QDict *options, const 
char **pfilename,
  * block driver has been specified explicitly.
  */
 static int bdrv_fill_options(QDict **options, const char *filename,
-                             int *flags, Error **errp)
+                             int *flags, Error *errp[static 1])
 {
     const char *drvname;
     bool protocol = *flags & BDRV_O_PROTOCOL;
@@ -1518,7 +1521,8 @@ static int bdrv_fill_options(QDict **options, const char 
*filename,
 }
 
 static int bdrv_child_check_perm(BdrvChild *c, uint64_t perm, uint64_t shared,
-                                 GSList *ignore_children, Error **errp);
+                                 GSList *ignore_children,
+                                 Error *errp[static 1]);
 static void bdrv_child_abort_perm_update(BdrvChild *c);
 static void bdrv_child_set_perm(BdrvChild *c, uint64_t perm, uint64_t shared);
 
@@ -1549,7 +1553,7 @@ static void bdrv_child_perm(BlockDriverState *bs, 
BlockDriverState *child_bs,
  */
 static int bdrv_check_perm(BlockDriverState *bs, uint64_t cumulative_perms,
                            uint64_t cumulative_shared_perms,
-                           GSList *ignore_children, Error **errp)
+                           GSList *ignore_children, Error *errp[static 1])
 {
     BlockDriver *drv = bs->drv;
     BdrvChild *c;
@@ -1714,7 +1718,8 @@ char *bdrv_perm_names(uint64_t perm)
  * bdrv_abort_perm_update(). */
 static int bdrv_check_update_perm(BlockDriverState *bs, uint64_t new_used_perm,
                                   uint64_t new_shared_perm,
-                                  GSList *ignore_children, Error **errp)
+                                  GSList *ignore_children,
+                                  Error *errp[static 1])
 {
     BdrvChild *c;
     uint64_t cumulative_perms = new_used_perm;
@@ -1761,7 +1766,8 @@ static int bdrv_check_update_perm(BlockDriverState *bs, 
uint64_t new_used_perm,
 /* Needs to be followed by a call to either bdrv_child_set_perm() or
  * bdrv_child_abort_perm_update(). */
 static int bdrv_child_check_perm(BdrvChild *c, uint64_t perm, uint64_t shared,
-                                 GSList *ignore_children, Error **errp)
+                                 GSList *ignore_children,
+                                 Error *errp[static 1])
 {
     int ret;
 
@@ -1790,7 +1796,7 @@ static void bdrv_child_abort_perm_update(BdrvChild *c)
 }
 
 int bdrv_child_try_set_perm(BdrvChild *c, uint64_t perm, uint64_t shared,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     int ret;
 
@@ -1945,7 +1951,7 @@ BdrvChild *bdrv_root_attach_child(BlockDriverState 
*child_bs,
                                   const char *child_name,
                                   const BdrvChildRole *child_role,
                                   uint64_t perm, uint64_t shared_perm,
-                                  void *opaque, Error **errp)
+                                  void *opaque, Error *errp[static 1])
 {
     BdrvChild *child;
     int ret;
@@ -1976,7 +1982,7 @@ BdrvChild *bdrv_attach_child(BlockDriverState *parent_bs,
                              BlockDriverState *child_bs,
                              const char *child_name,
                              const BdrvChildRole *child_role,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     BdrvChild *child;
     uint64_t perm, shared_perm;
@@ -2070,7 +2076,7 @@ static void bdrv_parent_cb_resize(BlockDriverState *bs)
  * which don't need their own reference any more must call bdrv_unref().
  */
 void bdrv_set_backing_hd(BlockDriverState *bs, BlockDriverState *backing_hd,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     if (backing_hd) {
         bdrv_ref(backing_hd);
@@ -2108,7 +2114,7 @@ out:
  * TODO Can this be unified with bdrv_open_image()?
  */
 int bdrv_open_backing_file(BlockDriverState *bs, QDict *parent_options,
-                           const char *bdref_key, Error **errp)
+                           const char *bdref_key, Error *errp[static 1])
 {
     char *backing_filename = g_malloc0(PATH_MAX);
     char *bdref_key_dot;
@@ -2198,7 +2204,7 @@ free_exit:
 static BlockDriverState *
 bdrv_open_child_bs(const char *filename, QDict *options, const char *bdref_key,
                    BlockDriverState *parent, const BdrvChildRole *child_role,
-                   bool allow_none, Error **errp)
+                   bool allow_none, Error *errp[static 1])
 {
     BlockDriverState *bs = NULL;
     QDict *image_options;
@@ -2257,7 +2263,7 @@ BdrvChild *bdrv_open_child(const char *filename,
                            QDict *options, const char *bdref_key,
                            BlockDriverState *parent,
                            const BdrvChildRole *child_role,
-                           bool allow_none, Error **errp)
+                           bool allow_none, Error *errp[static 1])
 {
     BdrvChild *c;
     BlockDriverState *bs;
@@ -2280,7 +2286,7 @@ BdrvChild *bdrv_open_child(const char *filename,
 static BlockDriverState *bdrv_append_temp_snapshot(BlockDriverState *bs,
                                                    int flags,
                                                    QDict *snapshot_options,
-                                                   Error **errp)
+                                                   Error *errp[static 1])
 {
     /* TODO: extra byte is a hack to ensure MAX_PATH space on Windows. */
     char *tmp_filename = g_malloc0(PATH_MAX + 1);
@@ -2365,7 +2371,7 @@ static BlockDriverState *bdrv_open_inherit(const char 
*filename,
                                            QDict *options, int flags,
                                            BlockDriverState *parent,
                                            const BdrvChildRole *child_role,
-                                           Error **errp)
+                                           Error *errp[static 1])
 {
     int ret;
     BlockBackend *file = NULL;
@@ -2617,7 +2623,7 @@ close_and_fail:
 }
 
 BlockDriverState *bdrv_open(const char *filename, const char *reference,
-                            QDict *options, int flags, Error **errp)
+                            QDict *options, int flags, Error *errp[static 1])
 {
     return bdrv_open_inherit(filename, reference, options, flags, NULL,
                              NULL, errp);
@@ -2782,7 +2788,8 @@ BlockReopenQueue *bdrv_reopen_queue(BlockReopenQueue 
*bs_queue,
  * to all devices.
  *
  */
-int bdrv_reopen_multiple(AioContext *ctx, BlockReopenQueue *bs_queue, Error 
**errp)
+int bdrv_reopen_multiple(AioContext *ctx, BlockReopenQueue *bs_queue,
+                         Error *errp[static 1])
 {
     int ret = -1;
     BlockReopenQueueEntry *bs_entry, *next;
@@ -2830,7 +2837,7 @@ cleanup:
 
 
 /* Reopen a single BlockDriverState with the specified flags. */
-int bdrv_reopen(BlockDriverState *bs, int bdrv_flags, Error **errp)
+int bdrv_reopen(BlockDriverState *bs, int bdrv_flags, Error *errp[static 1])
 {
     int ret = -1;
     Error *local_err = NULL;
@@ -2862,7 +2869,7 @@ int bdrv_reopen(BlockDriverState *bs, int bdrv_flags, 
Error **errp)
  *
  */
 int bdrv_reopen_prepare(BDRVReopenState *reopen_state, BlockReopenQueue *queue,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     int ret = -1;
     Error *local_err = NULL;
@@ -3118,7 +3125,7 @@ static bool should_update_child(BdrvChild *c, 
BlockDriverState *to)
 }
 
 void bdrv_replace_node(BlockDriverState *from, BlockDriverState *to,
-                       Error **errp)
+                       Error *errp[static 1])
 {
     BdrvChild *c, *next;
     GSList *list = NULL, *p;
@@ -3187,7 +3194,7 @@ out:
  * reference of its own, it must call bdrv_ref().
  */
 void bdrv_append(BlockDriverState *bs_new, BlockDriverState *bs_top,
-                 Error **errp)
+                 Error *errp[static 1])
 {
     bdrv_set_backing_hd(bs_new, bs_top, errp);
     if (ERR_IS_SET(errp)) {
@@ -3383,7 +3390,7 @@ exit:
 /**
  * Truncate file to 'offset' bytes (needed only for file protocols)
  */
-int bdrv_truncate(BdrvChild *child, int64_t offset, Error **errp)
+int bdrv_truncate(BdrvChild *child, int64_t offset, Error *errp[static 1])
 {
     BlockDriverState *bs = child->bs;
     BlockDriver *drv = bs->drv;
@@ -3534,7 +3541,8 @@ int bdrv_set_key(BlockDriverState *bs, const char *key)
  *     Else do nothing.
  * On failure, store an error object through @errp if non-null.
  */
-void bdrv_add_key(BlockDriverState *bs, const char *key, Error **errp)
+void bdrv_add_key(BlockDriverState *bs, const char *key,
+                  Error *errp[static 1])
 {
     if (key) {
         if (!bdrv_is_encrypted(bs)) {
@@ -3629,7 +3637,7 @@ BlockDriverState *bdrv_find_node(const char *node_name)
 }
 
 /* Put this QMP function here so it can access the static graph_bdrv_states. */
-BlockDeviceInfoList *bdrv_named_nodes_list(Error **errp)
+BlockDeviceInfoList *bdrv_named_nodes_list(Error *errp[static 1])
 {
     BlockDeviceInfoList *list, *entry;
     BlockDriverState *bs;
@@ -3652,7 +3660,7 @@ BlockDeviceInfoList *bdrv_named_nodes_list(Error **errp)
 
 BlockDriverState *bdrv_lookup_bs(const char *device,
                                  const char *node_name,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     BlockBackend *blk;
     BlockDriverState *bs;
@@ -3999,7 +4007,7 @@ void bdrv_init_with_whitelist(void)
     bdrv_init();
 }
 
-void bdrv_invalidate_cache(BlockDriverState *bs, Error **errp)
+void bdrv_invalidate_cache(BlockDriverState *bs, Error *errp[static 1])
 {
     BdrvChild *child, *parent;
     uint64_t perm, shared_perm;
@@ -4060,7 +4068,7 @@ void bdrv_invalidate_cache(BlockDriverState *bs, Error 
**errp)
     }
 }
 
-void bdrv_invalidate_cache_all(Error **errp)
+void bdrv_invalidate_cache_all(Error *errp[static 1])
 {
     BlockDriverState *bs;
     BdrvNextIterator it;
@@ -4244,7 +4252,8 @@ struct BdrvOpBlocker {
     QLIST_ENTRY(BdrvOpBlocker) list;
 };
 
-bool bdrv_op_is_blocked(BlockDriverState *bs, BlockOpType op, Error **errp)
+bool bdrv_op_is_blocked(BlockDriverState *bs, BlockOpType op,
+                        Error *errp[static 1])
 {
     BdrvOpBlocker *blocker;
     assert((int) op >= 0 && op < BLOCK_OP_TYPE_MAX);
@@ -4311,7 +4320,7 @@ bool bdrv_op_blocker_is_empty(BlockDriverState *bs)
 void bdrv_img_create(const char *filename, const char *fmt,
                      const char *base_filename, const char *base_fmt,
                      char *options, uint64_t img_size, int flags, bool quiet,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     QemuOptsList *create_opts = NULL;
     QemuOpts *opts = NULL;
@@ -4683,7 +4692,8 @@ bool bdrv_is_first_non_filter(BlockDriverState *candidate)
 }
 
 BlockDriverState *check_to_replace_node(BlockDriverState *parent_bs,
-                                        const char *node_name, Error **errp)
+                                        const char *node_name,
+                                        Error *errp[static 1])
 {
     BlockDriverState *to_replace_bs = bdrv_find_node(node_name);
     AioContext *aio_context;
@@ -4871,7 +4881,7 @@ void bdrv_refresh_filename(BlockDriverState *bs)
  * it is broken and take a new child online
  */
 void bdrv_add_child(BlockDriverState *parent_bs, BlockDriverState *child_bs,
-                    Error **errp)
+                    Error *errp[static 1])
 {
 
     if (!parent_bs->drv || !parent_bs->drv->bdrv_add_child) {
@@ -4889,7 +4899,8 @@ void bdrv_add_child(BlockDriverState *parent_bs, 
BlockDriverState *child_bs,
     parent_bs->drv->bdrv_add_child(parent_bs, child_bs, errp);
 }
 
-void bdrv_del_child(BlockDriverState *parent_bs, BdrvChild *child, Error 
**errp)
+void bdrv_del_child(BlockDriverState *parent_bs, BdrvChild *child,
+                    Error *errp[static 1])
 {
     BdrvChild *tmp;
 
diff --git a/block/backup.c b/block/backup.c
index 6976129e7d..5e5d45c5a1 100644
--- a/block/backup.c
+++ b/block/backup.c
@@ -200,7 +200,8 @@ static int coroutine_fn backup_before_write_notify(
     return backup_do_cow(job, sector_num, nb_sectors, NULL, true);
 }
 
-static void backup_set_speed(BlockJob *job, int64_t speed, Error **errp)
+static void backup_set_speed(BlockJob *job, int64_t speed,
+                             Error *errp[static 1])
 {
     BackupBlockJob *s = container_of(job, BackupBlockJob, common);
 
@@ -258,7 +259,7 @@ static void backup_attached_aio_context(BlockJob *job, 
AioContext *aio_context)
     blk_set_aio_context(s->target, aio_context);
 }
 
-void backup_do_checkpoint(BlockJob *job, Error **errp)
+void backup_do_checkpoint(BlockJob *job, Error *errp[static 1])
 {
     BackupBlockJob *backup_job = container_of(job, BackupBlockJob, common);
     int64_t len;
@@ -558,7 +559,7 @@ BlockJob *backup_job_create(const char *job_id, 
BlockDriverState *bs,
                   BlockdevOnError on_target_error,
                   int creation_flags,
                   BlockCompletionFunc *cb, void *opaque,
-                  BlockJobTxn *txn, Error **errp)
+                  BlockJobTxn *txn, Error *errp[static 1])
 {
     int64_t len;
     BlockDriverInfo bdi;
diff --git a/block/blkdebug.c b/block/blkdebug.c
index 57cd23d94a..f6ff0e7b38 100644
--- a/block/blkdebug.c
+++ b/block/blkdebug.c
@@ -169,7 +169,7 @@ struct add_rule_data {
     int action;
 };
 
-static int add_rule(void *opaque, QemuOpts *opts, Error **errp)
+static int add_rule(void *opaque, QemuOpts *opts, Error *errp[static 1])
 {
     struct add_rule_data *d = opaque;
     BDRVBlkdebugState *s = d->s;
@@ -241,7 +241,7 @@ static void remove_rule(BlkdebugRule *rule)
 }
 
 static int read_config(BDRVBlkdebugState *s, const char *filename,
-                       QDict *options, Error **errp)
+                       QDict *options, Error *errp[static 1])
 {
     FILE *f = NULL;
     int ret;
@@ -295,7 +295,7 @@ fail:
 
 /* Valid blkdebug filenames look like blkdebug:path/to/config:path/to/image */
 static void blkdebug_parse_filename(const char *filename, QDict *options,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     const char *c;
 
@@ -374,7 +374,7 @@ static QemuOptsList runtime_opts = {
 };
 
 static int blkdebug_open(BlockDriverState *bs, QDict *options, int flags,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     BDRVBlkdebugState *s = bs->opaque;
     QemuOpts *opts;
@@ -808,7 +808,8 @@ static int64_t blkdebug_getlength(BlockDriverState *bs)
     return bdrv_getlength(bs->file->bs);
 }
 
-static int blkdebug_truncate(BlockDriverState *bs, int64_t offset, Error 
**errp)
+static int blkdebug_truncate(BlockDriverState *bs, int64_t offset,
+                             Error *errp[static 1])
 {
     return bdrv_truncate(bs->file, offset, errp);
 }
@@ -857,7 +858,8 @@ static void blkdebug_refresh_filename(BlockDriverState *bs, 
QDict *options)
     bs->full_open_options = opts;
 }
 
-static void blkdebug_refresh_limits(BlockDriverState *bs, Error **errp)
+static void blkdebug_refresh_limits(BlockDriverState *bs,
+                                    Error *errp[static 1])
 {
     BDRVBlkdebugState *s = bs->opaque;
 
@@ -882,7 +884,8 @@ static void blkdebug_refresh_limits(BlockDriverState *bs, 
Error **errp)
 }
 
 static int blkdebug_reopen_prepare(BDRVReopenState *reopen_state,
-                                   BlockReopenQueue *queue, Error **errp)
+                                   BlockReopenQueue *queue,
+                                   Error *errp[static 1])
 {
     return 0;
 }
diff --git a/block/blkreplay.c b/block/blkreplay.c
index 6aa5fd4156..f28de446a7 100755
--- a/block/blkreplay.c
+++ b/block/blkreplay.c
@@ -21,7 +21,7 @@ typedef struct Request {
 } Request;
 
 static int blkreplay_open(BlockDriverState *bs, QDict *options, int flags,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     Error *local_err = NULL;
     int ret;
diff --git a/block/blkverify.c b/block/blkverify.c
index 6b0a603cf0..78adc24a76 100644
--- a/block/blkverify.c
+++ b/block/blkverify.c
@@ -57,7 +57,7 @@ static void GCC_FMT_ATTR(2, 3) blkverify_err(BlkverifyRequest 
*r,
 
 /* Valid blkverify filenames look like 
blkverify:path/to/raw_image:path/to/image */
 static void blkverify_parse_filename(const char *filename, QDict *options,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     const char *c;
     QString *raw_path;
@@ -106,7 +106,7 @@ static QemuOptsList runtime_opts = {
 };
 
 static int blkverify_open(BlockDriverState *bs, QDict *options, int flags,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     BDRVBlkverifyState *s = bs->opaque;
     QemuOpts *opts;
diff --git a/block/block-backend.c b/block/block-backend.c
index 0725cd84a4..1fab9ec0b0 100644
--- a/block/block-backend.c
+++ b/block/block-backend.c
@@ -138,7 +138,7 @@ static const char *blk_root_get_name(BdrvChild *child)
  *
  * If an error is returned, the VM cannot be allowed to be resumed.
  */
-static void blk_root_activate(BdrvChild *child, Error **errp)
+static void blk_root_activate(BdrvChild *child, Error *errp[static 1])
 {
     BlockBackend *blk = child->opaque;
 
@@ -238,7 +238,7 @@ BlockBackend *blk_new(uint64_t perm, uint64_t shared_perm)
  * @flags.
  */
 BlockBackend *blk_new_open(const char *filename, const char *reference,
-                           QDict *options, int flags, Error **errp)
+                           QDict *options, int flags, Error *errp[static 1])
 {
     BlockBackend *blk;
     BlockDriverState *bs;
@@ -428,7 +428,8 @@ BlockDriverState *bdrv_first(BdrvNextIterator *it)
  * Returns true on success and false on failure. In the latter case, an Error
  * object is returned through @errp.
  */
-bool monitor_add_blk(BlockBackend *blk, const char *name, Error **errp)
+bool monitor_add_blk(BlockBackend *blk, const char *name,
+                     Error *errp[static 1])
 {
     assert(!blk->name);
     assert(name && name[0]);
@@ -608,7 +609,8 @@ void blk_remove_bs(BlockBackend *blk)
 /*
  * Associates a new BlockDriverState with @blk.
  */
-int blk_insert_bs(BlockBackend *blk, BlockDriverState *bs, Error **errp)
+int blk_insert_bs(BlockBackend *blk, BlockDriverState *bs,
+                  Error *errp[static 1])
 {
     blk->root = bdrv_root_attach_child(bs, "root", &child_root,
                                        blk->perm, blk->shared_perm, blk, errp);
@@ -630,7 +632,7 @@ int blk_insert_bs(BlockBackend *blk, BlockDriverState *bs, 
Error **errp)
  * Sets the permission bitmasks that the user of the BlockBackend needs.
  */
 int blk_set_perm(BlockBackend *blk, uint64_t perm, uint64_t shared_perm,
-                 Error **errp)
+                 Error *errp[static 1])
 {
     int ret;
 
@@ -789,7 +791,8 @@ void blk_set_dev_ops(BlockBackend *blk, const BlockDevOps 
*ops,
  *
  * Also send DEVICE_TRAY_MOVED events as appropriate.
  */
-void blk_dev_change_media_cb(BlockBackend *blk, bool load, Error **errp)
+void blk_dev_change_media_cb(BlockBackend *blk, bool load,
+                             Error *errp[static 1])
 {
     if (blk->dev_ops && blk->dev_ops->change_media_cb) {
         bool tray_was_open, tray_is_open;
@@ -1524,7 +1527,7 @@ void blk_set_enable_write_cache(BlockBackend *blk, bool 
wce)
     blk->enable_write_cache = wce;
 }
 
-void blk_invalidate_cache(BlockBackend *blk, Error **errp)
+void blk_invalidate_cache(BlockBackend *blk, Error *errp[static 1])
 {
     BlockDriverState *bs = blk_bs(blk);
 
@@ -1620,7 +1623,8 @@ void *blk_blockalign(BlockBackend *blk, size_t size)
     return qemu_blockalign(blk ? blk_bs(blk) : NULL, size);
 }
 
-bool blk_op_is_blocked(BlockBackend *blk, BlockOpType op, Error **errp)
+bool blk_op_is_blocked(BlockBackend *blk, BlockOpType op,
+                       Error *errp[static 1])
 {
     BlockDriverState *bs = blk_bs(blk);
 
@@ -1770,7 +1774,7 @@ int blk_pwrite_compressed(BlockBackend *blk, int64_t 
offset, const void *buf,
                    BDRV_REQ_WRITE_COMPRESSED);
 }
 
-int blk_truncate(BlockBackend *blk, int64_t offset, Error **errp)
+int blk_truncate(BlockBackend *blk, int64_t offset, Error *errp[static 1])
 {
     if (!blk_is_available(blk)) {
         error_setg(errp, "No medium inserted");
diff --git a/block/bochs.c b/block/bochs.c
index a759b6eff0..be02ab4b34 100644
--- a/block/bochs.c
+++ b/block/bochs.c
@@ -97,7 +97,7 @@ static int bochs_probe(const uint8_t *buf, int buf_size, 
const char *filename)
 }
 
 static int bochs_open(BlockDriverState *bs, QDict *options, int flags,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     BDRVBochsState *s = bs->opaque;
     uint32_t i;
@@ -197,7 +197,7 @@ fail:
     return ret;
 }
 
-static void bochs_refresh_limits(BlockDriverState *bs, Error **errp)
+static void bochs_refresh_limits(BlockDriverState *bs, Error *errp[static 1])
 {
     bs->bl.request_alignment = BDRV_SECTOR_SIZE; /* No sub-sector I/O */
 }
diff --git a/block/cloop.c b/block/cloop.c
index d6597fcf78..981c6e23b0 100644
--- a/block/cloop.c
+++ b/block/cloop.c
@@ -60,7 +60,7 @@ static int cloop_probe(const uint8_t *buf, int buf_size, 
const char *filename)
 }
 
 static int cloop_open(BlockDriverState *bs, QDict *options, int flags,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     BDRVCloopState *s = bs->opaque;
     uint32_t offsets_size, max_compressed_block_size = 1, i;
@@ -207,7 +207,7 @@ fail:
     return ret;
 }
 
-static void cloop_refresh_limits(BlockDriverState *bs, Error **errp)
+static void cloop_refresh_limits(BlockDriverState *bs, Error *errp[static 1])
 {
     bs->bl.request_alignment = BDRV_SECTOR_SIZE; /* No sub-sector I/O */
 }
diff --git a/block/commit.c b/block/commit.c
index 08ab3ce7de..4c2354359f 100644
--- a/block/commit.c
+++ b/block/commit.c
@@ -216,7 +216,8 @@ out:
     block_job_defer_to_main_loop(&s->common, commit_complete, data);
 }
 
-static void commit_set_speed(BlockJob *job, int64_t speed, Error **errp)
+static void commit_set_speed(BlockJob *job, int64_t speed,
+                             Error *errp[static 1])
 {
     CommitBlockJob *s = container_of(job, CommitBlockJob, common);
 
@@ -284,7 +285,7 @@ static BlockDriver bdrv_commit_top = {
 void commit_start(const char *job_id, BlockDriverState *bs,
                   BlockDriverState *base, BlockDriverState *top, int64_t speed,
                   BlockdevOnError on_error, const char *backing_file_str,
-                  const char *filter_node_name, Error **errp)
+                  const char *filter_node_name, Error *errp[static 1])
 {
     CommitBlockJob *s;
     BlockReopenQueue *reopen_queue = NULL;
diff --git a/block/crypto.c b/block/crypto.c
index d98ae60c48..69a6601b8f 100644
--- a/block/crypto.c
+++ b/block/crypto.c
@@ -60,7 +60,7 @@ static ssize_t block_crypto_read_func(QCryptoBlock *block,
                                       uint8_t *buf,
                                       size_t buflen,
                                       void *opaque,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     BlockDriverState *bs = opaque;
     ssize_t ret;
@@ -87,7 +87,7 @@ static ssize_t block_crypto_write_func(QCryptoBlock *block,
                                        const uint8_t *buf,
                                        size_t buflen,
                                        void *opaque,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     struct BlockCryptoCreateData *data = opaque;
     ssize_t ret;
@@ -104,7 +104,7 @@ static ssize_t block_crypto_write_func(QCryptoBlock *block,
 static ssize_t block_crypto_init_func(QCryptoBlock *block,
                                       size_t headerlen,
                                       void *opaque,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     struct BlockCryptoCreateData *data = opaque;
     int ret;
@@ -197,7 +197,7 @@ static QemuOptsList block_crypto_create_opts_luks = {
 static QCryptoBlockOpenOptions *
 block_crypto_open_opts_init(QCryptoBlockFormat format,
                             QemuOpts *opts,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     Visitor *v;
     QCryptoBlockOpenOptions *ret = NULL;
@@ -243,7 +243,7 @@ block_crypto_open_opts_init(QCryptoBlockFormat format,
 static QCryptoBlockCreateOptions *
 block_crypto_create_opts_init(QCryptoBlockFormat format,
                               QemuOpts *opts,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     Visitor *v;
     QCryptoBlockCreateOptions *ret = NULL;
@@ -291,7 +291,7 @@ static int block_crypto_open_generic(QCryptoBlockFormat 
format,
                                      BlockDriverState *bs,
                                      QDict *options,
                                      int flags,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     BlockCrypto *crypto = bs->opaque;
     QemuOpts *opts = NULL;
@@ -343,7 +343,7 @@ static int block_crypto_open_generic(QCryptoBlockFormat 
format,
 static int block_crypto_create_generic(QCryptoBlockFormat format,
                                        const char *filename,
                                        QemuOpts *opts,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     int ret = -EINVAL;
     QCryptoBlockCreateOptions *create_opts = NULL;
@@ -380,7 +380,7 @@ static int block_crypto_create_generic(QCryptoBlockFormat 
format,
 }
 
 static int block_crypto_truncate(BlockDriverState *bs, int64_t offset,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     BlockCrypto *crypto = bs->opaque;
     size_t payload_offset =
@@ -559,7 +559,7 @@ static int block_crypto_probe_luks(const uint8_t *buf,
 static int block_crypto_open_luks(BlockDriverState *bs,
                                   QDict *options,
                                   int flags,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     return block_crypto_open_generic(Q_CRYPTO_BLOCK_FORMAT_LUKS,
                                      &block_crypto_runtime_opts_luks,
@@ -568,7 +568,7 @@ static int block_crypto_open_luks(BlockDriverState *bs,
 
 static int block_crypto_create_luks(const char *filename,
                                     QemuOpts *opts,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     return block_crypto_create_generic(Q_CRYPTO_BLOCK_FORMAT_LUKS,
                                        filename, opts, errp);
diff --git a/block/curl.c b/block/curl.c
index 05ed2e82c6..5c67b40545 100644
--- a/block/curl.c
+++ b/block/curl.c
@@ -564,7 +564,7 @@ static void curl_clean_state(CURLState *s)
 }
 
 static void curl_parse_filename(const char *filename, QDict *options,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     qdict_put_str(options, CURL_BLOCK_OPT_URL, filename);
 }
@@ -674,7 +674,7 @@ static QemuOptsList runtime_opts = {
 
 
 static int curl_open(BlockDriverState *bs, QDict *options, int flags,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     BDRVCURLState *s = bs->opaque;
     CURLState *state = NULL;
diff --git a/block/dirty-bitmap.c b/block/dirty-bitmap.c
index 519737c8d3..50d26a74dc 100644
--- a/block/dirty-bitmap.c
+++ b/block/dirty-bitmap.c
@@ -75,7 +75,7 @@ void bdrv_dirty_bitmap_make_anon(BdrvDirtyBitmap *bitmap)
 BdrvDirtyBitmap *bdrv_create_dirty_bitmap(BlockDriverState *bs,
                                           uint32_t granularity,
                                           const char *name,
-                                          Error **errp)
+                                          Error *errp[static 1])
 {
     int64_t bitmap_size;
     BdrvDirtyBitmap *bitmap;
@@ -190,7 +190,8 @@ DirtyBitmapStatus bdrv_dirty_bitmap_status(BdrvDirtyBitmap 
*bitmap)
  * Requires that the bitmap is not frozen and has no successor.
  */
 int bdrv_dirty_bitmap_create_successor(BlockDriverState *bs,
-                                       BdrvDirtyBitmap *bitmap, Error **errp)
+                                       BdrvDirtyBitmap *bitmap,
+                                       Error *errp[static 1])
 {
     uint64_t granularity;
     BdrvDirtyBitmap *child;
@@ -223,7 +224,7 @@ int bdrv_dirty_bitmap_create_successor(BlockDriverState *bs,
  */
 BdrvDirtyBitmap *bdrv_dirty_bitmap_abdicate(BlockDriverState *bs,
                                             BdrvDirtyBitmap *bitmap,
-                                            Error **errp)
+                                            Error *errp[static 1])
 {
     char *name;
     BdrvDirtyBitmap *successor = bitmap->successor;
@@ -250,7 +251,7 @@ BdrvDirtyBitmap 
*bdrv_dirty_bitmap_abdicate(BlockDriverState *bs,
  */
 BdrvDirtyBitmap *bdrv_reclaim_dirty_bitmap(BlockDriverState *bs,
                                            BdrvDirtyBitmap *parent,
-                                           Error **errp)
+                                           Error *errp[static 1])
 {
     BdrvDirtyBitmap *successor = parent->successor;
 
diff --git a/block/dmg.c b/block/dmg.c
index 900ae5a678..d911a61291 100644
--- a/block/dmg.c
+++ b/block/dmg.c
@@ -128,7 +128,7 @@ static void update_max_chunk_size(BDRVDMGState *s, uint32_t 
chunk,
     }
 }
 
-static int64_t dmg_find_koly_offset(BdrvChild *file, Error **errp)
+static int64_t dmg_find_koly_offset(BdrvChild *file, Error *errp[static 1])
 {
     BlockDriverState *file_bs = file->bs;
     int64_t length;
@@ -404,7 +404,7 @@ fail:
 }
 
 static int dmg_open(BlockDriverState *bs, QDict *options, int flags,
-                    Error **errp)
+                    Error *errp[static 1])
 {
     BDRVDMGState *s = bs->opaque;
     DmgHeaderState ds;
@@ -532,7 +532,7 @@ fail:
     return ret;
 }
 
-static void dmg_refresh_limits(BlockDriverState *bs, Error **errp)
+static void dmg_refresh_limits(BlockDriverState *bs, Error *errp[static 1])
 {
     bs->bl.request_alignment = BDRV_SECTOR_SIZE; /* No sub-sector I/O */
 }
diff --git a/block/file-posix.c b/block/file-posix.c
index ba49f0b528..91948957ff 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -297,7 +297,8 @@ static bool raw_is_io_aligned(int fd, void *buf, size_t len)
     return false;
 }
 
-static void raw_probe_alignment(BlockDriverState *bs, int fd, Error **errp)
+static void raw_probe_alignment(BlockDriverState *bs, int fd,
+                                Error *errp[static 1])
 {
     BDRVRawState *s = bs->opaque;
     char *buf;
@@ -379,7 +380,7 @@ static void raw_parse_flags(int bdrv_flags, int *open_flags)
 }
 
 static void raw_parse_filename(const char *filename, QDict *options,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     bdrv_parse_filename_strip_prefix(filename, "file:", options);
 }
@@ -408,7 +409,8 @@ static QemuOptsList raw_runtime_opts = {
 };
 
 static int raw_open_common(BlockDriverState *bs, QDict *options,
-                           int bdrv_flags, int open_flags, Error **errp)
+                           int bdrv_flags, int open_flags,
+                           Error *errp[static 1])
 {
     BDRVRawState *s = bs->opaque;
     QemuOpts *opts;
@@ -587,7 +589,7 @@ fail:
 }
 
 static int raw_open(BlockDriverState *bs, QDict *options, int flags,
-                    Error **errp)
+                    Error *errp[static 1])
 {
     BDRVRawState *s = bs->opaque;
 
@@ -611,7 +613,7 @@ typedef enum {
 static int raw_apply_lock_bytes(BDRVRawState *s,
                                 uint64_t perm_lock_bits,
                                 uint64_t shared_perm_lock_bits,
-                                bool unlock, Error **errp)
+                                bool unlock, Error *errp[static 1])
 {
     int ret;
     int i;
@@ -654,7 +656,7 @@ static int raw_apply_lock_bytes(BDRVRawState *s,
 /* Check "unshared" bytes implied by @perm and address@hidden in the file. */
 static int raw_check_lock_bytes(BDRVRawState *s,
                                 uint64_t perm, uint64_t shared_perm,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     int ret;
     int i;
@@ -699,7 +701,7 @@ static int raw_check_lock_bytes(BDRVRawState *s,
 static int raw_handle_perm_lock(BlockDriverState *bs,
                                 RawPermLockOp op,
                                 uint64_t new_perm, uint64_t new_shared,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     BDRVRawState *s = bs->opaque;
     int ret = 0;
@@ -751,7 +753,7 @@ static int raw_handle_perm_lock(BlockDriverState *bs,
 }
 
 static int raw_reopen_prepare(BDRVReopenState *state,
-                              BlockReopenQueue *queue, Error **errp)
+                              BlockReopenQueue *queue, Error *errp[static 1])
 {
     BDRVRawState *s;
     BDRVRawReopenState *rs;
@@ -923,7 +925,7 @@ out:
 #endif
 }
 
-static void raw_refresh_limits(BlockDriverState *bs, Error **errp)
+static void raw_refresh_limits(BlockDriverState *bs, Error *errp[static 1])
 {
     BDRVRawState *s = bs->opaque;
     struct stat st;
@@ -1622,7 +1624,8 @@ static void raw_close(BlockDriverState *bs)
     }
 }
 
-static int raw_truncate(BlockDriverState *bs, int64_t offset, Error **errp)
+static int raw_truncate(BlockDriverState *bs, int64_t offset,
+                        Error *errp[static 1])
 {
     BDRVRawState *s = bs->opaque;
     struct stat st;
@@ -1833,7 +1836,8 @@ static int64_t 
raw_get_allocated_file_size(BlockDriverState *bs)
     return (int64_t)st.st_blocks * 512;
 }
 
-static int raw_create(const char *filename, QemuOpts *opts, Error **errp)
+static int raw_create(const char *filename, QemuOpts *opts,
+                      Error *errp[static 1])
 {
     int fd;
     int result = 0;
@@ -2165,7 +2169,7 @@ static QemuOptsList raw_create_opts = {
 };
 
 static int raw_check_perm(BlockDriverState *bs, uint64_t perm, uint64_t shared,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     return raw_handle_perm_lock(bs, RAW_PL_PREPARE, perm, shared, errp);
 }
@@ -2296,7 +2300,7 @@ kern_return_t GetBSDPath(io_iterator_t mediaIterator, 
char *bsdPath,
 }
 
 /* Sets up a real cdrom for use in QEMU */
-static bool setup_cdrom(char *bsd_path, Error **errp)
+static bool setup_cdrom(char *bsd_path, Error *errp[static 1])
 {
     int index, num_of_test_partitions = 2, fd;
     char test_partition[MAXPATHLEN];
@@ -2386,7 +2390,7 @@ static int check_hdev_writable(BDRVRawState *s)
 }
 
 static void hdev_parse_filename(const char *filename, QDict *options,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     bdrv_parse_filename_strip_prefix(filename, "host_device:", options);
 }
@@ -2424,7 +2428,7 @@ static bool hdev_is_sg(BlockDriverState *bs)
 }
 
 static int hdev_open(BlockDriverState *bs, QDict *options, int flags,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     BDRVRawState *s = bs->opaque;
     Error *local_err = NULL;
@@ -2591,7 +2595,7 @@ static coroutine_fn int 
hdev_co_pwrite_zeroes(BlockDriverState *bs,
 }
 
 static int hdev_create(const char *filename, QemuOpts *opts,
-                       Error **errp)
+                       Error *errp[static 1])
 {
     int fd;
     int ret = 0;
@@ -2685,7 +2689,7 @@ static BlockDriver bdrv_host_device = {
 
 #if defined(__linux__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 static void cdrom_parse_filename(const char *filename, QDict *options,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     bdrv_parse_filename_strip_prefix(filename, "host_cdrom:", options);
 }
@@ -2693,7 +2697,7 @@ static void cdrom_parse_filename(const char *filename, 
QDict *options,
 
 #ifdef __linux__
 static int cdrom_open(BlockDriverState *bs, QDict *options, int flags,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     BDRVRawState *s = bs->opaque;
 
@@ -2805,7 +2809,7 @@ static BlockDriver bdrv_host_cdrom = {
 
 #if defined (__FreeBSD__) || defined(__FreeBSD_kernel__)
 static int cdrom_open(BlockDriverState *bs, QDict *options, int flags,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     BDRVRawState *s = bs->opaque;
     Error *local_err = NULL;
diff --git a/block/file-win32.c b/block/file-win32.c
index ef2910b03f..ae83637dde 100644
--- a/block/file-win32.c
+++ b/block/file-win32.c
@@ -223,7 +223,7 @@ static void raw_attach_aio_context(BlockDriverState *bs,
     }
 }
 
-static void raw_probe_alignment(BlockDriverState *bs, Error **errp)
+static void raw_probe_alignment(BlockDriverState *bs, Error *errp[static 1])
 {
     BDRVRawState *s = bs->opaque;
     DWORD sectorsPerCluster, freeClusters, totalClusters, count;
@@ -274,7 +274,7 @@ static void raw_parse_flags(int flags, bool use_aio, int 
*access_flags,
 }
 
 static void raw_parse_filename(const char *filename, QDict *options,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     bdrv_parse_filename_strip_prefix(filename, "file:", options);
 }
@@ -297,7 +297,7 @@ static QemuOptsList raw_runtime_opts = {
     },
 };
 
-static bool get_aio_option(QemuOpts *opts, int flags, Error **errp)
+static bool get_aio_option(QemuOpts *opts, int flags, Error *errp[static 1])
 {
     BlockdevAioOptions aio, aio_default;
 
@@ -318,7 +318,7 @@ static bool get_aio_option(QemuOpts *opts, int flags, Error 
**errp)
 }
 
 static int raw_open(BlockDriverState *bs, QDict *options, int flags,
-                    Error **errp)
+                    Error *errp[static 1])
 {
     BDRVRawState *s = bs->opaque;
     int access_flags;
@@ -461,7 +461,8 @@ static void raw_close(BlockDriverState *bs)
     }
 }
 
-static int raw_truncate(BlockDriverState *bs, int64_t offset, Error **errp)
+static int raw_truncate(BlockDriverState *bs, int64_t offset,
+                        Error *errp[static 1])
 {
     BDRVRawState *s = bs->opaque;
     LONG low, high;
@@ -544,7 +545,8 @@ static int64_t raw_get_allocated_file_size(BlockDriverState 
*bs)
     return st.st_size;
 }
 
-static int raw_create(const char *filename, QemuOpts *opts, Error **errp)
+static int raw_create(const char *filename, QemuOpts *opts,
+                      Error *errp[static 1])
 {
     int fd;
     int64_t total_size = 0;
@@ -664,13 +666,13 @@ static int hdev_probe_device(const char *filename)
 }
 
 static void hdev_parse_filename(const char *filename, QDict *options,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     bdrv_parse_filename_strip_prefix(filename, "host_device:", options);
 }
 
 static int hdev_open(BlockDriverState *bs, QDict *options, int flags,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     BDRVRawState *s = bs->opaque;
     int access_flags, create_flags;
diff --git a/block/gluster.c b/block/gluster.c
index 30ac978a89..432e2a7f63 100644
--- a/block/gluster.c
+++ b/block/gluster.c
@@ -391,7 +391,7 @@ out:
 }
 
 static struct glfs *qemu_gluster_glfs_init(BlockdevOptionsGluster *gconf,
-                                           Error **errp)
+                                           Error *errp[static 1])
 {
     struct glfs *glfs;
     int ret;
@@ -484,7 +484,7 @@ out:
  * Convert the json formatted command line into qapi.
 */
 static int qemu_gluster_parse_json(BlockdevOptionsGluster *gconf,
-                                  QDict *options, Error **errp)
+                                  QDict *options, Error *errp[static 1])
 {
     QemuOpts *opts;
     SocketAddress *gsconf = NULL;
@@ -658,7 +658,7 @@ out:
 
 static struct glfs *qemu_gluster_init(BlockdevOptionsGluster *gconf,
                                       const char *filename,
-                                      QDict *options, Error **errp)
+                                      QDict *options, Error *errp[static 1])
 {
     int ret;
     if (filename) {
@@ -758,7 +758,7 @@ static bool qemu_gluster_test_seek(struct glfs_fd *fd)
 }
 
 static int qemu_gluster_open(BlockDriverState *bs,  QDict *options,
-                             int bdrv_flags, Error **errp)
+                             int bdrv_flags, Error *errp[static 1])
 {
     BDRVGlusterState *s = bs->opaque;
     int open_flags = 0;
@@ -843,7 +843,8 @@ out:
 }
 
 static int qemu_gluster_reopen_prepare(BDRVReopenState *state,
-                                       BlockReopenQueue *queue, Error **errp)
+                                       BlockReopenQueue *queue,
+                                       Error *errp[static 1])
 {
     int ret = 0;
     BDRVGlusterState *s;
@@ -965,7 +966,7 @@ static coroutine_fn int 
qemu_gluster_co_pwrite_zeroes(BlockDriverState *bs,
 #endif
 
 static int qemu_gluster_create(const char *filename,
-                               QemuOpts *opts, Error **errp)
+                               QemuOpts *opts, Error *errp[static 1])
 {
     BlockdevOptionsGluster *gconf;
     struct glfs *glfs;
@@ -1095,7 +1096,7 @@ static coroutine_fn int 
qemu_gluster_co_rw(BlockDriverState *bs,
 }
 
 static int qemu_gluster_truncate(BlockDriverState *bs, int64_t offset,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     int ret;
     BDRVGlusterState *s = bs->opaque;
diff --git a/block/io.c b/block/io.c
index cc3fd997a7..43faf4085d 100644
--- a/block/io.c
+++ b/block/io.c
@@ -78,7 +78,7 @@ static void bdrv_merge_limits(BlockLimits *dst, const 
BlockLimits *src)
     dst->max_iov = MIN_NON_ZERO(dst->max_iov, src->max_iov);
 }
 
-void bdrv_refresh_limits(BlockDriverState *bs, Error **errp)
+void bdrv_refresh_limits(BlockDriverState *bs, Error *errp[static 1])
 {
     BlockDriver *drv = bs->drv;
 
diff --git a/block/iscsi.c b/block/iscsi.c
index 6b3939585c..8359479a20 100644
--- a/block/iscsi.c
+++ b/block/iscsi.c
@@ -1293,7 +1293,7 @@ out_unlock:
 }
 
 static void apply_chap(struct iscsi_context *iscsi, QemuOpts *opts,
-                       Error **errp)
+                       Error *errp[static 1])
 {
     const char *user = NULL;
     const char *password = NULL;
@@ -1331,7 +1331,7 @@ static void apply_chap(struct iscsi_context *iscsi, 
QemuOpts *opts,
 }
 
 static void apply_header_digest(struct iscsi_context *iscsi, QemuOpts *opts,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     const char *digest = NULL;
 
@@ -1394,7 +1394,7 @@ out:
     qemu_mutex_unlock(&iscsilun->mutex);
 }
 
-static void iscsi_readcapacity_sync(IscsiLun *iscsilun, Error **errp)
+static void iscsi_readcapacity_sync(IscsiLun *iscsilun, Error *errp[static 1])
 {
     struct scsi_task *task = NULL;
     struct scsi_readcapacity10 *rc10 = NULL;
@@ -1465,7 +1465,8 @@ static void iscsi_readcapacity_sync(IscsiLun *iscsilun, 
Error **errp)
 }
 
 static struct scsi_task *iscsi_do_inquiry(struct iscsi_context *iscsi, int lun,
-                                          int evpd, int pc, void **inq, Error 
**errp)
+                                          int evpd, int pc, void **inq,
+                                          Error *errp[static 1])
 {
     int full_size;
     struct scsi_task *task = NULL;
@@ -1641,7 +1642,7 @@ static void iscsi_parse_iscsi_option(const char *target, 
QDict *options)
  * iscsi://[<username>%<password>@]<host>[:<port>]/<targetname>/<lun>
  */
 static void iscsi_parse_filename(const char *filename, QDict *options,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     struct iscsi_url *iscsi_url;
     const char *transport_name;
@@ -1738,7 +1739,7 @@ static QemuOptsList runtime_opts = {
 };
 
 static int iscsi_open(BlockDriverState *bs, QDict *options, int flags,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     IscsiLun *iscsilun = bs->opaque;
     struct iscsi_context *iscsi = NULL;
@@ -1982,7 +1983,7 @@ static void iscsi_close(BlockDriverState *bs)
     memset(iscsilun, 0, sizeof(IscsiLun));
 }
 
-static void iscsi_refresh_limits(BlockDriverState *bs, Error **errp)
+static void iscsi_refresh_limits(BlockDriverState *bs, Error *errp[static 1])
 {
     /* We don't actually refresh here, but just return data queried in
      * iscsi_open(): iscsi targets don't change their limits. */
@@ -2034,7 +2035,8 @@ static void iscsi_refresh_limits(BlockDriverState *bs, 
Error **errp)
 /* Note that this will not re-establish a connection with an iSCSI target - it
  * is effectively a NOP.  */
 static int iscsi_reopen_prepare(BDRVReopenState *state,
-                                BlockReopenQueue *queue, Error **errp)
+                                BlockReopenQueue *queue,
+                                Error *errp[static 1])
 {
     IscsiLun *iscsilun = state->bs->opaque;
 
@@ -2055,7 +2057,8 @@ static void iscsi_reopen_commit(BDRVReopenState 
*reopen_state)
     }
 }
 
-static int iscsi_truncate(BlockDriverState *bs, int64_t offset, Error **errp)
+static int iscsi_truncate(BlockDriverState *bs, int64_t offset,
+                          Error *errp[static 1])
 {
     IscsiLun *iscsilun = bs->opaque;
 
@@ -2081,7 +2084,8 @@ static int iscsi_truncate(BlockDriverState *bs, int64_t 
offset, Error **errp)
     return 0;
 }
 
-static int iscsi_create(const char *filename, QemuOpts *opts, Error **errp)
+static int iscsi_create(const char *filename, QemuOpts *opts,
+                        Error *errp[static 1])
 {
     int ret = 0;
     int64_t total_size = 0;
@@ -2142,7 +2146,7 @@ static int iscsi_get_info(BlockDriverState *bs, 
BlockDriverInfo *bdi)
 }
 
 static void iscsi_invalidate_cache(BlockDriverState *bs,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     IscsiLun *iscsilun = bs->opaque;
     iscsi_allocmap_invalidate(iscsilun);
diff --git a/block/mirror.c b/block/mirror.c
index addafec0ee..6007fc1293 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -915,7 +915,8 @@ immediate_exit:
     block_job_defer_to_main_loop(&s->common, mirror_exit, data);
 }
 
-static void mirror_set_speed(BlockJob *job, int64_t speed, Error **errp)
+static void mirror_set_speed(BlockJob *job, int64_t speed,
+                             Error *errp[static 1])
 {
     MirrorBlockJob *s = container_of(job, MirrorBlockJob, common);
 
@@ -926,7 +927,7 @@ static void mirror_set_speed(BlockJob *job, int64_t speed, 
Error **errp)
     ratelimit_set_speed(&s->limit, speed / BDRV_SECTOR_SIZE, SLICE_TIME);
 }
 
-static void mirror_complete(BlockJob *job, Error **errp)
+static void mirror_complete(BlockJob *job, Error *errp[static 1])
 {
     MirrorBlockJob *s = container_of(job, MirrorBlockJob, common);
     BlockDriverState *target;
@@ -1121,7 +1122,7 @@ static void mirror_start_job(const char *job_id, 
BlockDriverState *bs,
                              const BlockJobDriver *driver,
                              bool is_none_mode, BlockDriverState *base,
                              bool auto_complete, const char *filter_node_name,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     MirrorBlockJob *s;
     BlockDriverState *mirror_top_bs;
@@ -1271,7 +1272,8 @@ void mirror_start(const char *job_id, BlockDriverState 
*bs,
                   MirrorSyncMode mode, BlockMirrorBackingMode backing_mode,
                   BlockdevOnError on_source_error,
                   BlockdevOnError on_target_error,
-                  bool unmap, const char *filter_node_name, Error **errp)
+                  bool unmap, const char *filter_node_name,
+                  Error *errp[static 1])
 {
     bool is_none_mode;
     BlockDriverState *base;
@@ -1294,7 +1296,7 @@ void commit_active_start(const char *job_id, 
BlockDriverState *bs,
                          int64_t speed, BlockdevOnError on_error,
                          const char *filter_node_name,
                          BlockCompletionFunc *cb, void *opaque,
-                         bool auto_complete, Error **errp)
+                         bool auto_complete, Error *errp[static 1])
 {
     int orig_base_flags;
 
diff --git a/block/nbd-client.c b/block/nbd-client.c
index ac3f735d27..6d1012cc73 100644
--- a/block/nbd-client.c
+++ b/block/nbd-client.c
@@ -375,7 +375,7 @@ int nbd_client_init(BlockDriverState *bs,
                     const char *export,
                     QCryptoTLSCreds *tlscreds,
                     const char *hostname,
-                    Error **errp)
+                    Error *errp[static 1])
 {
     NBDClientSession *client = nbd_get_client_session(bs);
     int ret;
diff --git a/block/nbd.c b/block/nbd.c
index 6644c0e75f..8b02e8ab5e 100644
--- a/block/nbd.c
+++ b/block/nbd.c
@@ -130,7 +130,8 @@ out:
     return ret;
 }
 
-static bool nbd_has_filename_options_conflict(QDict *options, Error **errp)
+static bool nbd_has_filename_options_conflict(QDict *options,
+                                              Error *errp[static 1])
 {
     const QDictEntry *e;
 
@@ -151,7 +152,7 @@ static bool nbd_has_filename_options_conflict(QDict 
*options, Error **errp)
 }
 
 static void nbd_parse_filename(const char *filename, QDict *options,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     char *file;
     char *export_name;
@@ -217,7 +218,7 @@ out:
 
 static bool nbd_process_legacy_socket_options(QDict *output_options,
                                               QemuOpts *legacy_opts,
-                                              Error **errp)
+                                              Error *errp[static 1])
 {
     const char *path = qemu_opt_get(legacy_opts, "path");
     const char *host = qemu_opt_get(legacy_opts, "host");
@@ -259,7 +260,7 @@ static bool nbd_process_legacy_socket_options(QDict 
*output_options,
 }
 
 static SocketAddress *nbd_config(BDRVNBDState *s, QDict *options,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     SocketAddress *saddr = NULL;
     QDict *addr = NULL;
@@ -305,7 +306,7 @@ NBDClientSession *nbd_get_client_session(BlockDriverState 
*bs)
 }
 
 static QIOChannelSocket *nbd_establish_connection(SocketAddress *saddr,
-                                                  Error **errp)
+                                                  Error *errp[static 1])
 {
     QIOChannelSocket *sioc;
 
@@ -326,7 +327,8 @@ static QIOChannelSocket 
*nbd_establish_connection(SocketAddress *saddr,
 }
 
 
-static QCryptoTLSCreds *nbd_get_tls_creds(const char *id, Error **errp)
+static QCryptoTLSCreds *nbd_get_tls_creds(const char *id,
+                                          Error *errp[static 1])
 {
     Object *obj;
     QCryptoTLSCreds *creds;
@@ -389,7 +391,7 @@ static QemuOptsList nbd_runtime_opts = {
 };
 
 static int nbd_open(BlockDriverState *bs, QDict *options, int flags,
-                    Error **errp)
+                    Error *errp[static 1])
 {
     BDRVNBDState *s = bs->opaque;
     QemuOpts *opts = NULL;
@@ -465,7 +467,7 @@ static int nbd_co_flush(BlockDriverState *bs)
     return nbd_client_co_flush(bs);
 }
 
-static void nbd_refresh_limits(BlockDriverState *bs, Error **errp)
+static void nbd_refresh_limits(BlockDriverState *bs, Error *errp[static 1])
 {
     bs->bl.max_pdiscard = NBD_MAX_BUFFER_SIZE;
     bs->bl.max_pwrite_zeroes = NBD_MAX_BUFFER_SIZE;
diff --git a/block/nfs.c b/block/nfs.c
index 7792b3ad01..1aaec98ebc 100644
--- a/block/nfs.c
+++ b/block/nfs.c
@@ -72,7 +72,8 @@ typedef struct NFSRPC {
     NFSClient *client;
 } NFSRPC;
 
-static int nfs_parse_uri(const char *filename, QDict *options, Error **errp)
+static int nfs_parse_uri(const char *filename, QDict *options,
+                         Error *errp[static 1])
 {
     URI *uri = NULL;
     QueryParams *qp = NULL;
@@ -149,7 +150,8 @@ out:
     return ret;
 }
 
-static bool nfs_has_filename_options_conflict(QDict *options, Error **errp)
+static bool nfs_has_filename_options_conflict(QDict *options,
+                                              Error *errp[static 1])
 {
     const QDictEntry *qe;
 
@@ -174,7 +176,7 @@ static bool nfs_has_filename_options_conflict(QDict 
*options, Error **errp)
 }
 
 static void nfs_parse_filename(const char *filename, QDict *options,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     if (nfs_has_filename_options_conflict(options, errp)) {
         return;
@@ -449,7 +451,7 @@ static void nfs_file_close(BlockDriverState *bs)
     qemu_mutex_destroy(&client->mutex);
 }
 
-static NFSServer *nfs_config(QDict *options, Error **errp)
+static NFSServer *nfs_config(QDict *options, Error *errp[static 1])
 {
     NFSServer *server = NULL;
     QDict *addr = NULL;
@@ -489,7 +491,8 @@ out:
 
 
 static int64_t nfs_client_open(NFSClient *client, QDict *options,
-                               int flags, int open_flags, Error **errp)
+                               int flags, int open_flags,
+                               Error *errp[static 1])
 {
     int ret = -EINVAL;
     QemuOpts *opts = NULL;
@@ -645,7 +648,7 @@ out:
 }
 
 static int nfs_file_open(BlockDriverState *bs, QDict *options, int flags,
-                         Error **errp) {
+                         Error *errp[static 1]) {
     NFSClient *client = bs->opaque;
     int64_t ret;
 
@@ -676,7 +679,8 @@ static QemuOptsList nfs_create_opts = {
     }
 };
 
-static int nfs_file_create(const char *url, QemuOpts *opts, Error **errp)
+static int nfs_file_create(const char *url, QemuOpts *opts,
+                           Error *errp[static 1])
 {
     int ret = 0;
     int64_t total_size = 0;
@@ -754,7 +758,8 @@ static int64_t nfs_get_allocated_file_size(BlockDriverState 
*bs)
     return (task.ret < 0 ? task.ret : st.st_blocks * 512);
 }
 
-static int nfs_file_truncate(BlockDriverState *bs, int64_t offset, Error 
**errp)
+static int nfs_file_truncate(BlockDriverState *bs, int64_t offset,
+                             Error *errp[static 1])
 {
     NFSClient *client = bs->opaque;
     int ret;
@@ -771,7 +776,7 @@ static int nfs_file_truncate(BlockDriverState *bs, int64_t 
offset, Error **errp)
 /* Note that this will not re-establish a connection with the NFS server
  * - it is effectively a NOP.  */
 static int nfs_reopen_prepare(BDRVReopenState *state,
-                              BlockReopenQueue *queue, Error **errp)
+                              BlockReopenQueue *queue, Error *errp[static 1])
 {
     NFSClient *client = state->bs->opaque;
     struct stat st;
@@ -860,7 +865,7 @@ static void nfs_refresh_filename(BlockDriverState *bs, 
QDict *options)
 
 #ifdef LIBNFS_FEATURE_PAGECACHE
 static void nfs_invalidate_cache(BlockDriverState *bs,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     NFSClient *client = bs->opaque;
     nfs_pagecache_invalidate(client->context, client->fh);
diff --git a/block/null.c b/block/null.c
index 876f90965b..d9ed68a3f6 100644
--- a/block/null.c
+++ b/block/null.c
@@ -55,7 +55,7 @@ static QemuOptsList runtime_opts = {
 };
 
 static int null_file_open(BlockDriverState *bs, QDict *options, int flags,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     QemuOpts *opts;
     BDRVNullState *s = bs->opaque;
@@ -199,7 +199,7 @@ static BlockAIOCB *null_aio_flush(BlockDriverState *bs,
 }
 
 static int null_reopen_prepare(BDRVReopenState *reopen_state,
-                               BlockReopenQueue *queue, Error **errp)
+                               BlockReopenQueue *queue, Error *errp[static 1])
 {
     return 0;
 }
diff --git a/block/parallels.c b/block/parallels.c
index d4125a6220..506341853d 100644
--- a/block/parallels.c
+++ b/block/parallels.c
@@ -472,7 +472,8 @@ static int parallels_check(BlockDriverState *bs, 
BdrvCheckResult *res,
 }
 
 
-static int parallels_create(const char *filename, QemuOpts *opts, Error **errp)
+static int parallels_create(const char *filename, QemuOpts *opts,
+                            Error *errp[static 1])
 {
     int64_t total_size, cl_size;
     uint8_t tmp[BDRV_SECTOR_SIZE];
@@ -583,7 +584,7 @@ static int parallels_update_header(BlockDriverState *bs)
 }
 
 static int parallels_open(BlockDriverState *bs, QDict *options, int flags,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     BDRVParallelsState *s = bs->opaque;
     ParallelsHeader ph;
diff --git a/block/qapi.c b/block/qapi.c
index 423934f0bf..e4c95912e8 100644
--- a/block/qapi.c
+++ b/block/qapi.c
@@ -35,7 +35,8 @@
 #include "qemu/cutils.h"
 
 BlockDeviceInfo *bdrv_block_device_info(BlockBackend *blk,
-                                        BlockDriverState *bs, Error **errp)
+                                        BlockDriverState *bs,
+                                        Error *errp[static 1])
 {
     ImageInfo **p_image_info;
     BlockDriverState *bs0;
@@ -152,7 +153,7 @@ BlockDeviceInfo *bdrv_block_device_info(BlockBackend *blk,
  */
 int bdrv_query_snapshot_info_list(BlockDriverState *bs,
                                   SnapshotInfoList **p_list,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     int i, sn_count;
     QEMUSnapshotInfo *sn_tab = NULL;
@@ -224,7 +225,7 @@ int bdrv_query_snapshot_info_list(BlockDriverState *bs,
  */
 void bdrv_query_image_info(BlockDriverState *bs,
                            ImageInfo **p_info,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     int64_t size;
     const char *backing_filename;
@@ -318,7 +319,7 @@ out:
 
 /* @p_info will be set only on success. */
 static void bdrv_query_info(BlockBackend *blk, BlockInfo **p_info,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     BlockInfo *info = g_malloc0(sizeof(*info));
     BlockDriverState *bs = blk_bs(blk);
@@ -456,7 +457,7 @@ static BlockStats *bdrv_query_bds_stats(const 
BlockDriverState *bs,
     return s;
 }
 
-BlockInfoList *qmp_query_block(Error **errp)
+BlockInfoList *qmp_query_block(Error *errp[static 1])
 {
     BlockInfoList *head = NULL, **p_next = &head;
     BlockBackend *blk;
@@ -479,7 +480,7 @@ BlockInfoList *qmp_query_block(Error **errp)
 
 BlockStatsList *qmp_query_blockstats(bool has_query_nodes,
                                      bool query_nodes,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     BlockStatsList *head = NULL, **p_next = &head;
     BlockBackend *blk;
diff --git a/block/qcow.c b/block/qcow.c
index 13d7842db3..df81e9450a 100644
--- a/block/qcow.c
+++ b/block/qcow.c
@@ -98,7 +98,7 @@ static int qcow_probe(const uint8_t *buf, int buf_size, const 
char *filename)
 }
 
 static int qcow_open(BlockDriverState *bs, QDict *options, int flags,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     BDRVQcowState *s = bs->opaque;
     unsigned int len, i, shift;
@@ -281,7 +281,7 @@ static int qcow_open(BlockDriverState *bs, QDict *options, 
int flags,
 /* We have nothing to do for QCOW reopen, stubs just return
  * success */
 static int qcow_reopen_prepare(BDRVReopenState *state,
-                               BlockReopenQueue *queue, Error **errp)
+                               BlockReopenQueue *queue, Error *errp[static 1])
 {
     return 0;
 }
@@ -326,7 +326,7 @@ static int qcow_set_key(BlockDriverState *bs, const char 
*key)
    supported */
 static int encrypt_sectors(BDRVQcowState *s, int64_t sector_num,
                            uint8_t *out_buf, const uint8_t *in_buf,
-                           int nb_sectors, bool enc, Error **errp)
+                           int nb_sectors, bool enc, Error *errp[static 1])
 {
     union {
         uint64_t ll[2];
@@ -797,7 +797,8 @@ static void qcow_close(BlockDriverState *bs)
     error_free(s->migration_blocker);
 }
 
-static int qcow_create(const char *filename, QemuOpts *opts, Error **errp)
+static int qcow_create(const char *filename, QemuOpts *opts,
+                       Error *errp[static 1])
 {
     int header_size, backing_filename_len, l1_size, shift, i;
     QCowHeader header;
diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
index d779ea19cf..3133901fc8 100644
--- a/block/qcow2-cluster.c
+++ b/block/qcow2-cluster.c
@@ -363,7 +363,7 @@ static int count_contiguous_clusters_unallocated(int 
nb_clusters,
 int qcow2_encrypt_sectors(BDRVQcow2State *s, int64_t sector_num,
                           uint8_t *out_buf, const uint8_t *in_buf,
                           int nb_sectors, bool enc,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     union {
         uint64_t ll[2];
diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c
index 7c06061aae..b6c840cc99 100644
--- a/block/qcow2-refcount.c
+++ b/block/qcow2-refcount.c
@@ -2507,7 +2507,7 @@ typedef int (RefblockFinishOp)(BlockDriverState *bs, 
uint64_t **reftable,
 static int alloc_refblock(BlockDriverState *bs, uint64_t **reftable,
                           uint64_t reftable_index, uint64_t *reftable_size,
                           void *refblock, bool refblock_empty, bool *allocated,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     BDRVQcow2State *s = bs->opaque;
     int64_t offset;
@@ -2560,7 +2560,7 @@ static int alloc_refblock(BlockDriverState *bs, uint64_t 
**reftable,
 static int flush_refblock(BlockDriverState *bs, uint64_t **reftable,
                           uint64_t reftable_index, uint64_t *reftable_size,
                           void *refblock, bool refblock_empty, bool *allocated,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     BDRVQcow2State *s = bs->opaque;
     int64_t offset;
@@ -2609,7 +2609,7 @@ static int walk_over_reftable(BlockDriverState *bs, 
uint64_t **new_reftable,
                               Qcow2SetRefcountFunc *new_set_refcount,
                               BlockDriverAmendStatusCB *status_cb,
                               void *cb_opaque, int index, int total,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     BDRVQcow2State *s = bs->opaque;
     uint64_t reftable_index;
@@ -2749,7 +2749,7 @@ static int walk_over_reftable(BlockDriverState *bs, 
uint64_t **new_reftable,
 
 int qcow2_change_refcount_order(BlockDriverState *bs, int refcount_order,
                                 BlockDriverAmendStatusCB *status_cb,
-                                void *cb_opaque, Error **errp)
+                                void *cb_opaque, Error *errp[static 1])
 {
     BDRVQcow2State *s = bs->opaque;
     Qcow2GetRefcountFunc *new_get_refcount;
diff --git a/block/qcow2-snapshot.c b/block/qcow2-snapshot.c
index 44243e0e95..62ecd1327b 100644
--- a/block/qcow2-snapshot.c
+++ b/block/qcow2-snapshot.c
@@ -588,7 +588,7 @@ fail:
 int qcow2_snapshot_delete(BlockDriverState *bs,
                           const char *snapshot_id,
                           const char *name,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     BDRVQcow2State *s = bs->opaque;
     QCowSnapshot sn;
@@ -683,7 +683,7 @@ int qcow2_snapshot_list(BlockDriverState *bs, 
QEMUSnapshotInfo **psn_tab)
 int qcow2_snapshot_load_tmp(BlockDriverState *bs,
                             const char *snapshot_id,
                             const char *name,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     int i, snapshot_index;
     BDRVQcow2State *s = bs->opaque;
diff --git a/block/qcow2.c b/block/qcow2.c
index 5e7e5bf292..7f7ee7a7a9 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -86,7 +86,7 @@ static int qcow2_probe(const uint8_t *buf, int buf_size, 
const char *filename)
  */
 static int qcow2_read_extensions(BlockDriverState *bs, uint64_t start_offset,
                                  uint64_t end_offset, void **p_feature_table,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     BDRVQcow2State *s = bs->opaque;
     QCowExtension ext;
@@ -521,7 +521,8 @@ static void qcow2_attach_aio_context(BlockDriverState *bs,
 
 static void read_cache_sizes(BlockDriverState *bs, QemuOpts *opts,
                              uint64_t *l2_cache_size,
-                             uint64_t *refcount_cache_size, Error **errp)
+                             uint64_t *refcount_cache_size,
+                             Error *errp[static 1])
 {
     BDRVQcow2State *s = bs->opaque;
     uint64_t combined_cache_size;
@@ -590,7 +591,7 @@ typedef struct Qcow2ReopenState {
 static int qcow2_update_options_prepare(BlockDriverState *bs,
                                         Qcow2ReopenState *r,
                                         QDict *options, int flags,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     BDRVQcow2State *s = bs->opaque;
     QemuOpts *opts = NULL;
@@ -796,7 +797,7 @@ static void qcow2_update_options_abort(BlockDriverState *bs,
 }
 
 static int qcow2_update_options(BlockDriverState *bs, QDict *options,
-                                int flags, Error **errp)
+                                int flags, Error *errp[static 1])
 {
     Qcow2ReopenState r = {};
     int ret;
@@ -812,7 +813,7 @@ static int qcow2_update_options(BlockDriverState *bs, QDict 
*options,
 }
 
 static int qcow2_do_open(BlockDriverState *bs, QDict *options, int flags,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     BDRVQcow2State *s = bs->opaque;
     unsigned int len, i;
@@ -1203,7 +1204,7 @@ static int qcow2_do_open(BlockDriverState *bs, QDict 
*options, int flags,
 }
 
 static int qcow2_open(BlockDriverState *bs, QDict *options, int flags,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     bs->file = bdrv_open_child(NULL, options, "file", bs, &child_file,
                                false, errp);
@@ -1214,7 +1215,7 @@ static int qcow2_open(BlockDriverState *bs, QDict 
*options, int flags,
     return qcow2_do_open(bs, options, flags, errp);
 }
 
-static void qcow2_refresh_limits(BlockDriverState *bs, Error **errp)
+static void qcow2_refresh_limits(BlockDriverState *bs, Error *errp[static 1])
 {
     BDRVQcow2State *s = bs->opaque;
 
@@ -1262,7 +1263,8 @@ static int qcow2_set_key(BlockDriverState *bs, const char 
*key)
 }
 
 static int qcow2_reopen_prepare(BDRVReopenState *state,
-                                BlockReopenQueue *queue, Error **errp)
+                                BlockReopenQueue *queue,
+                                Error *errp[static 1])
 {
     Qcow2ReopenState *r;
     int ret;
@@ -1772,7 +1774,8 @@ static void qcow2_close(BlockDriverState *bs)
     qcow2_free_snapshots(bs);
 }
 
-static void qcow2_invalidate_cache(BlockDriverState *bs, Error **errp)
+static void qcow2_invalidate_cache(BlockDriverState *bs,
+                                   Error *errp[static 1])
 {
     BDRVQcow2State *s = bs->opaque;
     int flags = s->flags;
@@ -2097,7 +2100,7 @@ static int qcow2_create2(const char *filename, int64_t 
total_size,
                          const char *backing_file, const char *backing_format,
                          int flags, size_t cluster_size, PreallocMode prealloc,
                          QemuOpts *opts, int version, int refcount_order,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     int cluster_bits;
     QDict *options;
@@ -2343,7 +2346,8 @@ out:
     return ret;
 }
 
-static int qcow2_create(const char *filename, QemuOpts *opts, Error **errp)
+static int qcow2_create(const char *filename, QemuOpts *opts,
+                        Error *errp[static 1])
 {
     char *backing_file = NULL;
     char *backing_fmt = NULL;
@@ -2538,7 +2542,8 @@ static coroutine_fn int 
qcow2_co_pdiscard(BlockDriverState *bs,
     return ret;
 }
 
-static int qcow2_truncate(BlockDriverState *bs, int64_t offset, Error **errp)
+static int qcow2_truncate(BlockDriverState *bs, int64_t offset,
+                          Error *errp[static 1])
 {
     BDRVQcow2State *s = bs->opaque;
     int64_t new_l1_size;
diff --git a/block/qed.c b/block/qed.c
index 8d899fd479..86fc1fbc1a 100644
--- a/block/qed.c
+++ b/block/qed.c
@@ -415,7 +415,7 @@ static void bdrv_qed_drain(BlockDriverState *bs)
 }
 
 static int bdrv_qed_do_open(BlockDriverState *bs, QDict *options, int flags,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     BDRVQEDState *s = bs->opaque;
     QEDHeader le_header;
@@ -550,7 +550,7 @@ out:
 }
 
 static int bdrv_qed_open(BlockDriverState *bs, QDict *options, int flags,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     bs->file = bdrv_open_child(NULL, options, "file", bs, &child_file,
                                false, errp);
@@ -561,7 +561,8 @@ static int bdrv_qed_open(BlockDriverState *bs, QDict 
*options, int flags,
     return bdrv_qed_do_open(bs, options, flags, errp);
 }
 
-static void bdrv_qed_refresh_limits(BlockDriverState *bs, Error **errp)
+static void bdrv_qed_refresh_limits(BlockDriverState *bs,
+                                    Error *errp[static 1])
 {
     BDRVQEDState *s = bs->opaque;
 
@@ -571,7 +572,8 @@ static void bdrv_qed_refresh_limits(BlockDriverState *bs, 
Error **errp)
 /* We have nothing to do for QED reopen, stubs just return
  * success */
 static int bdrv_qed_reopen_prepare(BDRVReopenState *state,
-                                   BlockReopenQueue *queue, Error **errp)
+                                   BlockReopenQueue *queue,
+                                   Error *errp[static 1])
 {
     return 0;
 }
@@ -598,7 +600,7 @@ static void bdrv_qed_close(BlockDriverState *bs)
 static int qed_create(const char *filename, uint32_t cluster_size,
                       uint64_t image_size, uint32_t table_size,
                       const char *backing_file, const char *backing_fmt,
-                      QemuOpts *opts, Error **errp)
+                      QemuOpts *opts, Error *errp[static 1])
 {
     QEDHeader header = {
         .magic = QED_MAGIC,
@@ -673,7 +675,8 @@ out:
     return ret;
 }
 
-static int bdrv_qed_create(const char *filename, QemuOpts *opts, Error **errp)
+static int bdrv_qed_create(const char *filename, QemuOpts *opts,
+                           Error *errp[static 1])
 {
     uint64_t image_size = 0;
     uint32_t cluster_size = QED_DEFAULT_CLUSTER_SIZE;
@@ -1517,7 +1520,8 @@ static int coroutine_fn 
bdrv_qed_co_pwrite_zeroes(BlockDriverState *bs,
     return cb.ret;
 }
 
-static int bdrv_qed_truncate(BlockDriverState *bs, int64_t offset, Error 
**errp)
+static int bdrv_qed_truncate(BlockDriverState *bs, int64_t offset,
+                             Error *errp[static 1])
 {
     BDRVQEDState *s = bs->opaque;
     uint64_t old_image_size;
@@ -1634,7 +1638,8 @@ static int bdrv_qed_change_backing_file(BlockDriverState 
*bs,
     return ret;
 }
 
-static void bdrv_qed_invalidate_cache(BlockDriverState *bs, Error **errp)
+static void bdrv_qed_invalidate_cache(BlockDriverState *bs,
+                                      Error *errp[static 1])
 {
     BDRVQEDState *s = bs->opaque;
     Error *local_err = NULL;
diff --git a/block/quorum.c b/block/quorum.c
index ab9f253c96..7e38e197de 100644
--- a/block/quorum.c
+++ b/block/quorum.c
@@ -824,7 +824,8 @@ static bool 
quorum_recurse_is_first_non_filter(BlockDriverState *bs,
     return false;
 }
 
-static int quorum_valid_threshold(int threshold, int num_children, Error 
**errp)
+static int quorum_valid_threshold(int threshold, int num_children,
+                                  Error *errp[static 1])
 {
 
     if (threshold < 1) {
@@ -888,7 +889,7 @@ static int parse_read_pattern(const char *opt)
 }
 
 static int quorum_open(BlockDriverState *bs, QDict *options, int flags,
-                       Error **errp)
+                       Error *errp[static 1])
 {
     BDRVQuorumState *s = bs->opaque;
     Error *local_err = NULL;
@@ -1007,7 +1008,7 @@ static void quorum_close(BlockDriverState *bs)
 }
 
 static void quorum_add_child(BlockDriverState *bs, BlockDriverState *child_bs,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     BDRVQuorumState *s = bs->opaque;
     BdrvChild *child;
@@ -1047,7 +1048,7 @@ out:
 }
 
 static void quorum_del_child(BlockDriverState *bs, BdrvChild *child,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     BDRVQuorumState *s = bs->opaque;
     int i;
diff --git a/block/raw-format.c b/block/raw-format.c
index 5134373fbf..39ee2cc817 100644
--- a/block/raw-format.c
+++ b/block/raw-format.c
@@ -69,7 +69,7 @@ static QemuOptsList raw_create_opts = {
 };
 
 static int raw_read_options(QDict *options, BlockDriverState *bs,
-    BDRVRawState *s, Error **errp)
+    BDRVRawState *s, Error *errp[static 1])
 {
     QemuOpts *opts = NULL;
     int64_t real_size = 0;
@@ -134,7 +134,7 @@ end:
 }
 
 static int raw_reopen_prepare(BDRVReopenState *reopen_state,
-                              BlockReopenQueue *queue, Error **errp)
+                              BlockReopenQueue *queue, Error *errp[static 1])
 {
     assert(reopen_state != NULL);
     assert(reopen_state->bs != NULL);
@@ -315,7 +315,7 @@ static int raw_get_info(BlockDriverState *bs, 
BlockDriverInfo *bdi)
     return bdrv_get_info(bs->file->bs, bdi);
 }
 
-static void raw_refresh_limits(BlockDriverState *bs, Error **errp)
+static void raw_refresh_limits(BlockDriverState *bs, Error *errp[static 1])
 {
     if (bs->probed) {
         /* To make it easier to protect the first sector, any probed
@@ -325,7 +325,8 @@ static void raw_refresh_limits(BlockDriverState *bs, Error 
**errp)
     }
 }
 
-static int raw_truncate(BlockDriverState *bs, int64_t offset, Error **errp)
+static int raw_truncate(BlockDriverState *bs, int64_t offset,
+                        Error *errp[static 1])
 {
     BDRVRawState *s = bs->opaque;
 
@@ -373,13 +374,14 @@ static int raw_has_zero_init(BlockDriverState *bs)
     return bdrv_has_zero_init(bs->file->bs);
 }
 
-static int raw_create(const char *filename, QemuOpts *opts, Error **errp)
+static int raw_create(const char *filename, QemuOpts *opts,
+                      Error *errp[static 1])
 {
     return bdrv_create_file(filename, opts, errp);
 }
 
 static int raw_open(BlockDriverState *bs, QDict *options, int flags,
-                    Error **errp)
+                    Error *errp[static 1])
 {
     BDRVRawState *s = bs->opaque;
     int ret;
diff --git a/block/rbd.c b/block/rbd.c
index 25149e776b..16f07da6f3 100644
--- a/block/rbd.c
+++ b/block/rbd.c
@@ -133,7 +133,7 @@ static void qemu_rbd_unescape(char *src)
 }
 
 static void qemu_rbd_parse_filename(const char *filename, QDict *options,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     const char *start;
     char *p, *buf;
@@ -222,7 +222,7 @@ done:
 
 
 static int qemu_rbd_set_auth(rados_t cluster, const char *secretid,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     if (secretid == 0) {
         return 0;
@@ -241,7 +241,7 @@ static int qemu_rbd_set_auth(rados_t cluster, const char 
*secretid,
 }
 
 static int qemu_rbd_set_keypairs(rados_t cluster, const char *keypairs_json,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     QList *keypairs;
     QString *name;
@@ -344,7 +344,8 @@ static QemuOptsList runtime_opts = {
     },
 };
 
-static int qemu_rbd_create(const char *filename, QemuOpts *opts, Error **errp)
+static int qemu_rbd_create(const char *filename, QemuOpts *opts,
+                           Error *errp[static 1])
 {
     int64_t bytes = 0;
     int64_t objsize;
@@ -494,7 +495,7 @@ static void qemu_rbd_complete_aio(RADOSCB *rcb)
     qemu_aio_unref(acb);
 }
 
-static char *qemu_rbd_mon_host(QDict *options, Error **errp)
+static char *qemu_rbd_mon_host(QDict *options, Error *errp[static 1])
 {
     const char **vals = g_new(const char *, qdict_size(options) + 1);
     char keybuf[32];
@@ -535,7 +536,7 @@ out:
 }
 
 static int qemu_rbd_open(BlockDriverState *bs, QDict *options, int flags,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     BDRVRBDState *s = bs->opaque;
     const char *pool, *snap, *conf, *user, *image_name, *keypairs;
@@ -671,7 +672,8 @@ failed_opts:
  * we just need to check if we are using a snapshot or not, in
  * order to determine if we will allow it to be R/W */
 static int qemu_rbd_reopen_prepare(BDRVReopenState *state,
-                                   BlockReopenQueue *queue, Error **errp)
+                                   BlockReopenQueue *queue,
+                                   Error *errp[static 1])
 {
     BDRVRBDState *s = state->bs->opaque;
     int ret = 0;
@@ -914,7 +916,8 @@ static int64_t qemu_rbd_getlength(BlockDriverState *bs)
     return info.size;
 }
 
-static int qemu_rbd_truncate(BlockDriverState *bs, int64_t offset, Error 
**errp)
+static int qemu_rbd_truncate(BlockDriverState *bs, int64_t offset,
+                             Error *errp[static 1])
 {
     BDRVRBDState *s = bs->opaque;
     int r;
@@ -963,7 +966,7 @@ static int qemu_rbd_snap_create(BlockDriverState *bs,
 static int qemu_rbd_snap_remove(BlockDriverState *bs,
                                 const char *snapshot_id,
                                 const char *snapshot_name,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     BDRVRBDState *s = bs->opaque;
     int r;
@@ -1054,7 +1057,7 @@ static BlockAIOCB *qemu_rbd_aio_pdiscard(BlockDriverState 
*bs,
 
 #ifdef LIBRBD_SUPPORTS_INVALIDATE
 static void qemu_rbd_invalidate_cache(BlockDriverState *bs,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     BDRVRBDState *s = bs->opaque;
     int r = rbd_invalidate_cache(s->image);
diff --git a/block/replication.c b/block/replication.c
index c7ea016af9..552c5d22f8 100644
--- a/block/replication.c
+++ b/block/replication.c
@@ -45,11 +45,12 @@ typedef struct BDRVReplicationState {
 } BDRVReplicationState;
 
 static void replication_start(ReplicationState *rs, ReplicationMode mode,
-                              Error **errp);
-static void replication_do_checkpoint(ReplicationState *rs, Error **errp);
-static void replication_get_error(ReplicationState *rs, Error **errp);
+                              Error *errp[static 1]);
+static void replication_do_checkpoint(ReplicationState *rs,
+                                     Error *errp[static 1]);
+static void replication_get_error(ReplicationState *rs, Error *errp[static 1]);
 static void replication_stop(ReplicationState *rs, bool failover,
-                             Error **errp);
+                             Error *errp[static 1]);
 
 #define REPLICATION_MODE        "mode"
 #define REPLICATION_TOP_ID      "top-id"
@@ -77,7 +78,7 @@ static ReplicationOps replication_ops = {
 };
 
 static int replication_open(BlockDriverState *bs, QDict *options,
-                            int flags, Error **errp)
+                            int flags, Error *errp[static 1])
 {
     int ret;
     BDRVReplicationState *s = bs->opaque;
@@ -311,7 +312,8 @@ static bool 
replication_recurse_is_first_non_filter(BlockDriverState *bs,
     return bdrv_recurse_is_first_non_filter(bs->file->bs, candidate);
 }
 
-static void secondary_do_checkpoint(BDRVReplicationState *s, Error **errp)
+static void secondary_do_checkpoint(BDRVReplicationState *s,
+                                    Error *errp[static 1])
 {
     int ret;
 
@@ -339,7 +341,7 @@ static void secondary_do_checkpoint(BDRVReplicationState 
*s, Error **errp)
 }
 
 static void reopen_backing_file(BlockDriverState *bs, bool writable,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     BDRVReplicationState *s = bs->opaque;
     BlockReopenQueue *reopen_queue = NULL;
@@ -427,7 +429,7 @@ static bool check_top_bs(BlockDriverState *top_bs, 
BlockDriverState *bs)
 }
 
 static void replication_start(ReplicationState *rs, ReplicationMode mode,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     BlockDriverState *bs = rs->opaque;
     BDRVReplicationState *s;
@@ -551,7 +553,8 @@ static void replication_start(ReplicationState *rs, 
ReplicationMode mode,
     aio_context_release(aio_context);
 }
 
-static void replication_do_checkpoint(ReplicationState *rs, Error **errp)
+static void replication_do_checkpoint(ReplicationState *rs,
+                                      Error *errp[static 1])
 {
     BlockDriverState *bs = rs->opaque;
     BDRVReplicationState *s;
@@ -567,7 +570,7 @@ static void replication_do_checkpoint(ReplicationState *rs, 
Error **errp)
     aio_context_release(aio_context);
 }
 
-static void replication_get_error(ReplicationState *rs, Error **errp)
+static void replication_get_error(ReplicationState *rs, Error *errp[static 1])
 {
     BlockDriverState *bs = rs->opaque;
     BDRVReplicationState *s;
@@ -611,7 +614,8 @@ static void replication_done(void *opaque, int ret)
     }
 }
 
-static void replication_stop(ReplicationState *rs, bool failover, Error **errp)
+static void replication_stop(ReplicationState *rs, bool failover,
+                             Error *errp[static 1])
 {
     BlockDriverState *bs = rs->opaque;
     BDRVReplicationState *s;
diff --git a/block/sheepdog.c b/block/sheepdog.c
index 6160fa6717..eca6f29419 100644
--- a/block/sheepdog.c
+++ b/block/sheepdog.c
@@ -547,7 +547,7 @@ static SocketAddress *sd_socket_address(const char *path,
     return addr;
 }
 
-static SocketAddress *sd_server_config(QDict *options, Error **errp)
+static SocketAddress *sd_server_config(QDict *options, Error *errp[static 1])
 {
     QDict *server = NULL;
     QObject *crumpled_server = NULL;
@@ -583,7 +583,7 @@ done:
 }
 
 /* Return -EIO in case of error, file descriptor on success */
-static int connect_to_sdog(BDRVSheepdogState *s, Error **errp)
+static int connect_to_sdog(BDRVSheepdogState *s, Error *errp[static 1])
 {
     int fd;
 
@@ -746,7 +746,7 @@ static void coroutine_fn add_aio_request(BDRVSheepdogState 
*s, AIOReq *aio_req,
                                          enum AIOCBState aiocb_type);
 static void coroutine_fn resend_aioreq(BDRVSheepdogState *s, AIOReq *aio_req);
 static int reload_inode(BDRVSheepdogState *s, uint32_t snapid, const char 
*tag);
-static int get_sheep_fd(BDRVSheepdogState *s, Error **errp);
+static int get_sheep_fd(BDRVSheepdogState *s, Error *errp[static 1]);
 static void co_write_request(void *opaque);
 
 static coroutine_fn void reconnect_to_sdog(void *opaque)
@@ -950,7 +950,7 @@ static void co_write_request(void *opaque)
  * We cannot use this descriptor for other operations because
  * the block driver may be on waiting response from the server.
  */
-static int get_sheep_fd(BDRVSheepdogState *s, Error **errp)
+static int get_sheep_fd(BDRVSheepdogState *s, Error *errp[static 1])
 {
     int fd;
 
@@ -1028,7 +1028,7 @@ static void sd_config_done(SheepdogConfig *cfg)
 }
 
 static void sd_parse_uri(SheepdogConfig *cfg, const char *filename,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     Error *err = NULL;
     QueryParams *qp = NULL;
@@ -1133,7 +1133,7 @@ out:
  * `hostname' and `port' (experimental).
  */
 static void parse_vdiname(SheepdogConfig *cfg, const char *filename,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     Error *err = NULL;
     char *p, *q, *uri;
@@ -1193,7 +1193,7 @@ static void parse_vdiname(SheepdogConfig *cfg, const char 
*filename,
 }
 
 static void sd_parse_filename(const char *filename, QDict *options,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     SheepdogConfig cfg;
     char buf[32];
@@ -1229,7 +1229,7 @@ static void sd_parse_filename(const char *filename, QDict 
*options,
 
 static int find_vdi_name(BDRVSheepdogState *s, const char *filename,
                          uint32_t snapid, const char *tag, uint32_t *vid,
-                         bool lock, Error **errp)
+                         bool lock, Error *errp[static 1])
 {
     int ret, fd;
     SheepdogVdiReq hdr;
@@ -1559,7 +1559,7 @@ static QemuOptsList runtime_opts = {
 };
 
 static int sd_open(BlockDriverState *bs, QDict *options, int flags,
-                   Error **errp)
+                   Error *errp[static 1])
 {
     int ret, fd;
     uint32_t vid = 0;
@@ -1688,7 +1688,7 @@ err_no_fd:
 }
 
 static int sd_reopen_prepare(BDRVReopenState *state, BlockReopenQueue *queue,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     BDRVSheepdogState *s = state->bs->opaque;
     BDRVSheepdogReopenState *re_s;
@@ -1752,7 +1752,7 @@ static void sd_reopen_abort(BDRVReopenState *state)
 }
 
 static int do_sd_create(BDRVSheepdogState *s, uint32_t *vdi_id, int snapshot,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     SheepdogVdiReq hdr;
     SheepdogVdiRsp *rsp = (SheepdogVdiRsp *)&hdr;
@@ -1807,7 +1807,7 @@ static int do_sd_create(BDRVSheepdogState *s, uint32_t 
*vdi_id, int snapshot,
     return 0;
 }
 
-static int sd_prealloc(const char *filename, Error **errp)
+static int sd_prealloc(const char *filename, Error *errp[static 1])
 {
     BlockBackend *blk = NULL;
     BDRVSheepdogState *base = NULL;
@@ -1947,7 +1947,7 @@ static int parse_block_size_shift(BDRVSheepdogState *s, 
QemuOpts *opt)
 }
 
 static int sd_create(const char *filename, QemuOpts *opts,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     int ret = 0;
     uint32_t vid = 0;
@@ -2145,7 +2145,8 @@ static int64_t sd_getlength(BlockDriverState *bs)
     return s->inode.vdi_size;
 }
 
-static int sd_truncate(BlockDriverState *bs, int64_t offset, Error **errp)
+static int sd_truncate(BlockDriverState *bs, int64_t offset,
+                       Error *errp[static 1])
 {
     BDRVSheepdogState *s = bs->opaque;
     int ret, fd;
@@ -2613,7 +2614,7 @@ out:
 
 #define NR_BATCHED_DISCARD 128
 
-static int remove_objects(BDRVSheepdogState *s, Error **errp)
+static int remove_objects(BDRVSheepdogState *s, Error *errp[static 1])
 {
     int fd, i = 0, nr_objs = 0;
     int ret;
@@ -2665,7 +2666,7 @@ out:
 static int sd_snapshot_delete(BlockDriverState *bs,
                               const char *snapshot_id,
                               const char *name,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     /*
      * FIXME should delete the snapshot matching both @snapshot_id and
diff --git a/block/snapshot.c b/block/snapshot.c
index 244fdc2bb6..4f50409edd 100644
--- a/block/snapshot.c
+++ b/block/snapshot.c
@@ -94,7 +94,7 @@ bool bdrv_snapshot_find_by_id_and_name(BlockDriverState *bs,
                                        const char *id,
                                        const char *name,
                                        QEMUSnapshotInfo *sn_info,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     QEMUSnapshotInfo *sn_tab, *sn;
     int nb_sns, i;
@@ -248,7 +248,7 @@ int bdrv_snapshot_goto(BlockDriverState *bs,
 int bdrv_snapshot_delete(BlockDriverState *bs,
                          const char *snapshot_id,
                          const char *name,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     BlockDriver *drv = bs->drv;
     int ret;
@@ -282,7 +282,7 @@ int bdrv_snapshot_delete(BlockDriverState *bs,
 
 int bdrv_snapshot_delete_by_id_or_name(BlockDriverState *bs,
                                        const char *id_or_name,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     int ret;
     Error *local_err = NULL;
@@ -339,7 +339,7 @@ int bdrv_snapshot_list(BlockDriverState *bs,
 int bdrv_snapshot_load_tmp(BlockDriverState *bs,
                            const char *snapshot_id,
                            const char *name,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     BlockDriver *drv = bs->drv;
 
@@ -366,7 +366,7 @@ int bdrv_snapshot_load_tmp(BlockDriverState *bs,
 
 int bdrv_snapshot_load_tmp_by_id_or_name(BlockDriverState *bs,
                                          const char *id_or_name,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     int ret;
     Error *local_err = NULL;
@@ -413,7 +413,7 @@ fail:
 }
 
 int bdrv_all_delete_snapshot(const char *name, BlockDriverState **first_bad_bs,
-                             Error **err)
+                             Error *err[static 1])
 {
     int ret = 0;
     BlockDriverState *bs;
diff --git a/block/ssh.c b/block/ssh.c
index 008e256ad1..3c6e140763 100644
--- a/block/ssh.c
+++ b/block/ssh.c
@@ -193,7 +193,8 @@ sftp_error_report(BDRVSSHState *s, const char *fs, ...)
     error_printf("\n");
 }
 
-static int parse_uri(const char *filename, QDict *options, Error **errp)
+static int parse_uri(const char *filename, QDict *options,
+                     Error *errp[static 1])
 {
     URI *uri = NULL;
     QueryParams *qp;
@@ -258,7 +259,8 @@ static int parse_uri(const char *filename, QDict *options, 
Error **errp)
     return -EINVAL;
 }
 
-static bool ssh_has_filename_options_conflict(QDict *options, Error **errp)
+static bool ssh_has_filename_options_conflict(QDict *options,
+                                              Error *errp[static 1])
 {
     const QDictEntry *qe;
 
@@ -280,7 +282,7 @@ static bool ssh_has_filename_options_conflict(QDict 
*options, Error **errp)
 }
 
 static void ssh_parse_filename(const char *filename, QDict *options,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     if (ssh_has_filename_options_conflict(options, errp)) {
         return;
@@ -290,7 +292,8 @@ static void ssh_parse_filename(const char *filename, QDict 
*options,
 }
 
 static int check_host_key_knownhosts(BDRVSSHState *s,
-                                     const char *host, int port, Error **errp)
+                                     const char *host, int port,
+                                     Error *errp[static 1])
 {
     const char *home;
     char *knh_file = NULL;
@@ -408,7 +411,8 @@ static int compare_fingerprint(const unsigned char 
*fingerprint, size_t len,
 
 static int
 check_host_key_hash(BDRVSSHState *s, const char *hash,
-                    int hash_type, size_t fingerprint_len, Error **errp)
+                    int hash_type, size_t fingerprint_len,
+                    Error *errp[static 1])
 {
     const char *fingerprint;
 
@@ -429,7 +433,7 @@ check_host_key_hash(BDRVSSHState *s, const char *hash,
 }
 
 static int check_host_key(BDRVSSHState *s, const char *host, int port,
-                          const char *host_key_check, Error **errp)
+                          const char *host_key_check, Error *errp[static 1])
 {
     /* host_key_check=no */
     if (strcmp(host_key_check, "no") == 0) {
@@ -457,7 +461,8 @@ static int check_host_key(BDRVSSHState *s, const char 
*host, int port,
     return -EINVAL;
 }
 
-static int authenticate(BDRVSSHState *s, const char *user, Error **errp)
+static int authenticate(BDRVSSHState *s, const char *user,
+                        Error *errp[static 1])
 {
     int r, ret;
     const char *userauthlist;
@@ -562,7 +567,7 @@ static QemuOptsList ssh_runtime_opts = {
 
 static bool ssh_process_legacy_socket_options(QDict *output_opts,
                                               QemuOpts *legacy_opts,
-                                              Error **errp)
+                                              Error *errp[static 1])
 {
     const char *host = qemu_opt_get(legacy_opts, "host");
     const char *port = qemu_opt_get(legacy_opts, "port");
@@ -580,7 +585,7 @@ static bool ssh_process_legacy_socket_options(QDict 
*output_opts,
     return true;
 }
 
-static InetSocketAddress *ssh_config(QDict *options, Error **errp)
+static InetSocketAddress *ssh_config(QDict *options, Error *errp[static 1])
 {
     InetSocketAddress *inet = NULL;
     QDict *addr = NULL;
@@ -620,7 +625,8 @@ out:
 }
 
 static int connect_to_ssh(BDRVSSHState *s, QDict *options,
-                          int ssh_flags, int creat_mode, Error **errp)
+                          int ssh_flags, int creat_mode,
+                          Error *errp[static 1])
 {
     int r, ret;
     QemuOpts *opts = NULL;
@@ -764,7 +770,7 @@ static int connect_to_ssh(BDRVSSHState *s, QDict *options,
 }
 
 static int ssh_file_open(BlockDriverState *bs, QDict *options, int bdrv_flags,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     BDRVSSHState *s = bs->opaque;
     int ret;
@@ -810,7 +816,8 @@ static QemuOptsList ssh_create_opts = {
     }
 };
 
-static int ssh_create(const char *filename, QemuOpts *opts, Error **errp)
+static int ssh_create(const char *filename, QemuOpts *opts,
+                      Error *errp[static 1])
 {
     int r, ret;
     int64_t total_size = 0;
diff --git a/block/stream.c b/block/stream.c
index 826783635a..e084585eff 100644
--- a/block/stream.c
+++ b/block/stream.c
@@ -212,7 +212,8 @@ out:
     block_job_defer_to_main_loop(&s->common, stream_complete, data);
 }
 
-static void stream_set_speed(BlockJob *job, int64_t speed, Error **errp)
+static void stream_set_speed(BlockJob *job, int64_t speed,
+                             Error *errp[static 1])
 {
     StreamBlockJob *s = container_of(job, StreamBlockJob, common);
 
@@ -232,7 +233,8 @@ static const BlockJobDriver stream_job_driver = {
 
 void stream_start(const char *job_id, BlockDriverState *bs,
                   BlockDriverState *base, const char *backing_file_str,
-                  int64_t speed, BlockdevOnError on_error, Error **errp)
+                  int64_t speed, BlockdevOnError on_error,
+                  Error *errp[static 1])
 {
     StreamBlockJob *s;
     BlockDriverState *iter;
diff --git a/block/vdi.c b/block/vdi.c
index 79af47763b..a385ba4a94 100644
--- a/block/vdi.c
+++ b/block/vdi.c
@@ -355,7 +355,7 @@ static int vdi_probe(const uint8_t *buf, int buf_size, 
const char *filename)
 }
 
 static int vdi_open(BlockDriverState *bs, QDict *options, int flags,
-                    Error **errp)
+                    Error *errp[static 1])
 {
     BDRVVdiState *s = bs->opaque;
     VdiHeader header;
@@ -497,7 +497,7 @@ static int vdi_open(BlockDriverState *bs, QDict *options, 
int flags,
 }
 
 static int vdi_reopen_prepare(BDRVReopenState *state,
-                              BlockReopenQueue *queue, Error **errp)
+                              BlockReopenQueue *queue, Error *errp[static 1])
 {
     return 0;
 }
@@ -716,7 +716,8 @@ vdi_co_pwritev(BlockDriverState *bs, uint64_t offset, 
uint64_t bytes,
     return ret;
 }
 
-static int vdi_create(const char *filename, QemuOpts *opts, Error **errp)
+static int vdi_create(const char *filename, QemuOpts *opts,
+                      Error *errp[static 1])
 {
     int ret = 0;
     uint64_t bytes = 0;
diff --git a/block/vhdx-log.c b/block/vhdx-log.c
index 906d5439fb..5ca149527e 100644
--- a/block/vhdx-log.c
+++ b/block/vhdx-log.c
@@ -730,7 +730,7 @@ exit:
  * If read-only, we must replay the log in RAM (or refuse to open
  * a dirty VHDX file read-only) */
 int vhdx_parse_log(BlockDriverState *bs, BDRVVHDXState *s, bool *flushed,
-                   Error **errp)
+                   Error *errp[static 1])
 {
     int ret = 0;
     VHDXHeader *hdr;
diff --git a/block/vhdx.c b/block/vhdx.c
index 890afe064b..cc93b21591 100644
--- a/block/vhdx.c
+++ b/block/vhdx.c
@@ -407,7 +407,7 @@ int vhdx_update_headers(BlockDriverState *bs, BDRVVHDXState 
*s,
 
 /* opens the specified header block from the VHDX file header section */
 static void vhdx_parse_header(BlockDriverState *bs, BDRVVHDXState *s,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     int ret;
     VHDXHeader *header1;
@@ -890,7 +890,7 @@ static void vhdx_close(BlockDriverState *bs)
 }
 
 static int vhdx_open(BlockDriverState *bs, QDict *options, int flags,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     BDRVVHDXState *s = bs->opaque;
     int ret = 0;
@@ -1024,7 +1024,7 @@ fail:
 }
 
 static int vhdx_reopen_prepare(BDRVReopenState *state,
-                               BlockReopenQueue *queue, Error **errp)
+                               BlockReopenQueue *queue, Error *errp[static 1])
 {
     return 0;
 }
@@ -1675,7 +1675,7 @@ static int vhdx_create_new_region_table(BlockBackend *blk,
                                         bool use_zero_blocks,
                                         VHDXImageType type,
                                         uint64_t *metadata_offset,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     int ret = 0;
     uint32_t offset = 0;
@@ -1787,7 +1787,8 @@ exit:
  *    .---- ~ ----------- ~ ------------ ~ ---------------- ~ -----------.
  *   1MB
  */
-static int vhdx_create(const char *filename, QemuOpts *opts, Error **errp)
+static int vhdx_create(const char *filename, QemuOpts *opts,
+                       Error *errp[static 1])
 {
     int ret = 0;
     uint64_t image_size = (uint64_t) 2 * GiB;
diff --git a/block/vmdk.c b/block/vmdk.c
index 55581b03fe..0adf212ace 100644
--- a/block/vmdk.c
+++ b/block/vmdk.c
@@ -335,7 +335,7 @@ static int vmdk_is_cid_valid(BlockDriverState *bs)
 
 /* We have nothing to do for VMDK reopen, stubs just return success */
 static int vmdk_reopen_prepare(BDRVReopenState *state,
-                               BlockReopenQueue *queue, Error **errp)
+                               BlockReopenQueue *queue, Error *errp[static 1])
 {
     assert(state != NULL);
     assert(state->bs != NULL);
@@ -387,7 +387,7 @@ static int vmdk_add_extent(BlockDriverState *bs,
                            uint32_t l1_size,
                            int l2_size, uint64_t cluster_sectors,
                            VmdkExtent **new_extent,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     VmdkExtent *extent;
     BDRVVmdkState *s = bs->opaque;
@@ -441,7 +441,7 @@ static int vmdk_add_extent(BlockDriverState *bs,
 }
 
 static int vmdk_init_tables(BlockDriverState *bs, VmdkExtent *extent,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     int ret;
     size_t l1_size;
@@ -501,7 +501,7 @@ static int vmdk_init_tables(BlockDriverState *bs, 
VmdkExtent *extent,
 
 static int vmdk_open_vmfs_sparse(BlockDriverState *bs,
                                  BdrvChild *file,
-                                 int flags, Error **errp)
+                                 int flags, Error *errp[static 1])
 {
     int ret;
     uint32_t magic;
@@ -536,9 +536,10 @@ static int vmdk_open_vmfs_sparse(BlockDriverState *bs,
 }
 
 static int vmdk_open_desc_file(BlockDriverState *bs, int flags, char *buf,
-                               QDict *options, Error **errp);
+                               QDict *options, Error *errp[static 1]);
 
-static char *vmdk_read_desc(BdrvChild *file, uint64_t desc_offset, Error 
**errp)
+static char *vmdk_read_desc(BdrvChild *file, uint64_t desc_offset,
+                            Error *errp[static 1])
 {
     int64_t size;
     char *buf;
@@ -574,7 +575,7 @@ static char *vmdk_read_desc(BdrvChild *file, uint64_t 
desc_offset, Error **errp)
 
 static int vmdk_open_vmdk4(BlockDriverState *bs,
                            BdrvChild *file,
-                           int flags, QDict *options, Error **errp)
+                           int flags, QDict *options, Error *errp[static 1])
 {
     int ret;
     uint32_t magic;
@@ -755,7 +756,7 @@ static int vmdk_parse_description(const char *desc, const 
char *opt_name,
 
 /* Open an extent file and append to bs array */
 static int vmdk_open_sparse(BlockDriverState *bs, BdrvChild *file, int flags,
-                            char *buf, QDict *options, Error **errp)
+                            char *buf, QDict *options, Error *errp[static 1])
 {
     uint32_t magic;
 
@@ -787,7 +788,7 @@ static const char *next_line(const char *s)
 
 static int vmdk_parse_extents(const char *desc, BlockDriverState *bs,
                               const char *desc_file_path, QDict *options,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     int ret;
     int matches;
@@ -906,7 +907,7 @@ invalid:
 }
 
 static int vmdk_open_desc_file(BlockDriverState *bs, int flags, char *buf,
-                               QDict *options, Error **errp)
+                               QDict *options, Error *errp[static 1])
 {
     int ret;
     char ct[128];
@@ -935,7 +936,7 @@ exit:
 }
 
 static int vmdk_open(BlockDriverState *bs, QDict *options, int flags,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     char *buf;
     int ret;
@@ -1002,7 +1003,7 @@ fail:
 }
 
 
-static void vmdk_refresh_limits(BlockDriverState *bs, Error **errp)
+static void vmdk_refresh_limits(BlockDriverState *bs, Error *errp[static 1])
 {
     BDRVVmdkState *s = bs->opaque;
     int i;
@@ -1686,7 +1687,7 @@ static int coroutine_fn 
vmdk_co_pwrite_zeroes(BlockDriverState *bs,
 
 static int vmdk_create_extent(const char *filename, int64_t filesize,
                               bool flat, bool compress, bool zeroed_grain,
-                              QemuOpts *opts, Error **errp)
+                              QemuOpts *opts, Error *errp[static 1])
 {
     int ret, i;
     BlockBackend *blk = NULL;
@@ -1818,7 +1819,8 @@ exit:
 }
 
 static int filename_decompose(const char *filename, char *path, char *prefix,
-                              char *postfix, size_t buf_len, Error **errp)
+                              char *postfix, size_t buf_len,
+                              Error *errp[static 1])
 {
     const char *p, *q;
 
@@ -1857,7 +1859,8 @@ static int filename_decompose(const char *filename, char 
*path, char *prefix,
     return VMDK_OK;
 }
 
-static int vmdk_create(const char *filename, QemuOpts *opts, Error **errp)
+static int vmdk_create(const char *filename, QemuOpts *opts,
+                       Error *errp[static 1])
 {
     int idx = 0;
     BlockBackend *new_blk = NULL;
diff --git a/block/vpc.c b/block/vpc.c
index 4240ba9d1c..edb7f7f672 100644
--- a/block/vpc.c
+++ b/block/vpc.c
@@ -185,7 +185,7 @@ static int vpc_probe(const uint8_t *buf, int buf_size, 
const char *filename)
 }
 
 static void vpc_parse_options(BlockDriverState *bs, QemuOpts *opts,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     BDRVVPCState *s = bs->opaque;
     const char *size_calc;
@@ -204,7 +204,7 @@ static void vpc_parse_options(BlockDriverState *bs, 
QemuOpts *opts,
 }
 
 static int vpc_open(BlockDriverState *bs, QDict *options, int flags,
-                    Error **errp)
+                    Error *errp[static 1])
 {
     BDRVVPCState *s = bs->opaque;
     int i;
@@ -452,7 +452,7 @@ fail:
 }
 
 static int vpc_reopen_prepare(BDRVReopenState *state,
-                              BlockReopenQueue *queue, Error **errp)
+                              BlockReopenQueue *queue, Error *errp[static 1])
 {
     return 0;
 }
@@ -851,7 +851,7 @@ static int create_dynamic_disk(BlockBackend *blk, uint8_t 
*buf,
 }
 
 static int create_fixed_disk(BlockBackend *blk, uint8_t *buf,
-                             int64_t total_size, Error **errp)
+                             int64_t total_size, Error *errp[static 1])
 {
     int ret;
 
@@ -872,7 +872,8 @@ static int create_fixed_disk(BlockBackend *blk, uint8_t 
*buf,
     return ret;
 }
 
-static int vpc_create(const char *filename, QemuOpts *opts, Error **errp)
+static int vpc_create(const char *filename, QemuOpts *opts,
+                      Error *errp[static 1])
 {
     uint8_t buf[1024];
     VHDFooter *footer = (VHDFooter *) buf;
diff --git a/block/vvfat.c b/block/vvfat.c
index 426ca70e35..dbbea9e944 100644
--- a/block/vvfat.c
+++ b/block/vvfat.c
@@ -830,7 +830,7 @@ static inline off_t cluster2sector(BDRVVVFATState* s, 
uint32_t cluster_num)
 
 static int init_directories(BDRVVVFATState* s,
                             const char *dirname, int heads, int secs,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     bootsector_t* bootsector;
     mapping_t* mapping;
@@ -980,7 +980,7 @@ static int init_directories(BDRVVVFATState* s,
 static BDRVVVFATState *vvv = NULL;
 #endif
 
-static int enable_write_target(BlockDriverState *bs, Error **errp);
+static int enable_write_target(BlockDriverState *bs, Error *errp[static 1]);
 static int is_consistent(BDRVVVFATState *s);
 
 static QemuOptsList runtime_opts = {
@@ -1017,7 +1017,7 @@ static QemuOptsList runtime_opts = {
 };
 
 static void vvfat_parse_filename(const char *filename, QDict *options,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     int fat_type = 0;
     bool floppy = false;
@@ -1064,7 +1064,7 @@ static void vvfat_parse_filename(const char *filename, 
QDict *options,
 }
 
 static int vvfat_open(BlockDriverState *bs, QDict *options, int flags,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     BDRVVVFATState *s = bs->opaque;
     int cyls, heads, secs;
@@ -1222,7 +1222,7 @@ fail:
     return ret;
 }
 
-static void vvfat_refresh_limits(BlockDriverState *bs, Error **errp)
+static void vvfat_refresh_limits(BlockDriverState *bs, Error *errp[static 1])
 {
     bs->bl.request_alignment = BDRV_SECTOR_SIZE; /* No sub-sector I/O */
 }
@@ -3011,7 +3011,7 @@ static const BdrvChildRole child_vvfat_qcow = {
     .inherit_options    = vvfat_qcow_options,
 };
 
-static int enable_write_target(BlockDriverState *bs, Error **errp)
+static int enable_write_target(BlockDriverState *bs, Error *errp[static 1])
 {
     BDRVVVFATState *s = bs->opaque;
     BlockDriver *bdrv_qcow = NULL;
diff --git a/block/vxhs.c b/block/vxhs.c
index 75cc6c8672..35c7608949 100644
--- a/block/vxhs.c
+++ b/block/vxhs.c
@@ -199,7 +199,7 @@ static int vxhs_parse_uri(const char *filename, QDict 
*options)
 }
 
 static void vxhs_parse_filename(const char *filename, QDict *options,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     if (qdict_haskey(options, "vdisk-id") || qdict_haskey(options, "server")) {
         error_setg(errp, "vdisk-id/server and a file name may not be specified 
"
@@ -234,7 +234,7 @@ static void vxhs_unref(void)
 }
 
 static void vxhs_get_tls_creds(const char *id, char **cacert,
-                               char **key, char **cert, Error **errp)
+                               char **key, char **cert, Error *errp[static 1])
 {
     Object *obj;
     QCryptoTLSCreds *creds;
@@ -283,7 +283,7 @@ static void vxhs_get_tls_creds(const char *id, char 
**cacert,
 }
 
 static int vxhs_open(BlockDriverState *bs, QDict *options,
-                     int bdrv_flags, Error **errp)
+                     int bdrv_flags, Error *errp[static 1])
 {
     BDRVVXHSState *s = bs->opaque;
     void *dev_handlep;
diff --git a/block/write-threshold.c b/block/write-threshold.c
index 0bd1a01c86..184addaa5d 100644
--- a/block/write-threshold.c
+++ b/block/write-threshold.c
@@ -105,7 +105,7 @@ void bdrv_write_threshold_set(BlockDriverState *bs, 
uint64_t threshold_bytes)
 
 void qmp_block_set_write_threshold(const char *node_name,
                                    uint64_t threshold_bytes,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     BlockDriverState *bs;
     AioContext *aio_context;
diff --git a/blockdev-nbd.c b/blockdev-nbd.c
index e7bf14a8ed..53f03d371f 100644
--- a/blockdev-nbd.c
+++ b/blockdev-nbd.c
@@ -69,7 +69,8 @@ static void nbd_server_free(NBDServerData *server)
     g_free(server);
 }
 
-static QCryptoTLSCreds *nbd_get_tls_creds(const char *id, Error **errp)
+static QCryptoTLSCreds *nbd_get_tls_creds(const char *id,
+                                          Error *errp[static 1])
 {
     Object *obj;
     QCryptoTLSCreds *creds;
@@ -100,7 +101,7 @@ static QCryptoTLSCreds *nbd_get_tls_creds(const char *id, 
Error **errp)
 
 
 void nbd_server_start(SocketAddress *addr, const char *tls_creds,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     if (nbd_server) {
         error_setg(errp, "NBD server already running");
@@ -146,7 +147,7 @@ void nbd_server_start(SocketAddress *addr, const char 
*tls_creds,
 
 void qmp_nbd_server_start(SocketAddressLegacy *addr,
                           bool has_tls_creds, const char *tls_creds,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     SocketAddress *addr_flat = socket_address_flatten(addr);
 
@@ -155,7 +156,7 @@ void qmp_nbd_server_start(SocketAddressLegacy *addr,
 }
 
 void qmp_nbd_server_add(const char *device, bool has_writable, bool writable,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     BlockDriverState *bs = NULL;
     BlockBackend *on_eject_blk;
@@ -199,7 +200,7 @@ void qmp_nbd_server_add(const char *device, bool 
has_writable, bool writable,
     nbd_export_put(exp);
 }
 
-void qmp_nbd_server_stop(Error **errp)
+void qmp_nbd_server_stop(Error *errp[static 1])
 {
     nbd_export_close_all();
 
diff --git a/blockdev.c b/blockdev.c
index 3ce592d4af..16a576ba28 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -58,7 +58,7 @@ static QTAILQ_HEAD(, BlockDriverState) monitor_bdrv_states =
     QTAILQ_HEAD_INITIALIZER(monitor_bdrv_states);
 
 static int do_open_tray(const char *blk_name, const char *qdev_id,
-                        bool force, Error **errp);
+                        bool force, Error *errp[static 1]);
 
 static const char *const if_name[IF_COUNT] = {
     [IF_NONE] = "none",
@@ -297,7 +297,8 @@ typedef struct {
     BlockDriverState *bs;
 } BDRVPutRefBH;
 
-static int parse_block_error_action(const char *buf, bool is_read, Error 
**errp)
+static int parse_block_error_action(const char *buf, bool is_read,
+                                    Error *errp[static 1])
 {
     if (!strcmp(buf, "ignore")) {
         return BLOCKDEV_ON_ERROR_IGNORE;
@@ -315,7 +316,7 @@ static int parse_block_error_action(const char *buf, bool 
is_read, Error **errp)
 }
 
 static bool parse_stats_intervals(BlockAcctStats *stats, QList *intervals,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     const QListEntry *entry;
     for (entry = qlist_first(intervals); entry; entry = qlist_next(entry)) {
@@ -358,7 +359,7 @@ typedef enum { MEDIA_DISK, MEDIA_CDROM } DriveMediaType;
 /* All parameters but @opts are optional and may be set to NULL. */
 static void extract_common_blockdev_options(QemuOpts *opts, int *bdrv_flags,
     const char **throttling_group, ThrottleConfig *throttle_cfg,
-    BlockdevDetectZeroesOptions *detect_zeroes, Error **errp)
+    BlockdevDetectZeroesOptions *detect_zeroes, Error *errp[static 1])
 {
     Error *local_error = NULL;
     const char *aio;
@@ -450,7 +451,7 @@ static void extract_common_blockdev_options(QemuOpts *opts, 
int *bdrv_flags,
 
 /* Takes the ownership of bs_opts */
 static BlockBackend *blockdev_init(const char *file, QDict *bs_opts,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     const char *buf;
     int bdrv_flags = 0;
@@ -638,7 +639,7 @@ err_no_opts:
 }
 
 /* Takes the ownership of bs_opts */
-static BlockDriverState *bds_tree_init(QDict *bs_opts, Error **errp)
+static BlockDriverState *bds_tree_init(QDict *bs_opts, Error *errp[static 1])
 {
     int bdrv_flags = 0;
 
@@ -677,7 +678,7 @@ BlockDriverState *bdrv_next_monitor_owned(BlockDriverState 
*bs)
 }
 
 static void qemu_opt_rename(QemuOpts *opts, const char *from, const char *to,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     const char *value;
 
@@ -1124,7 +1125,8 @@ fail:
     return dinfo;
 }
 
-static BlockDriverState *qmp_get_root_bs(const char *name, Error **errp)
+static BlockDriverState *qmp_get_root_bs(const char *name,
+                                         Error *errp[static 1])
 {
     BlockDriverState *bs;
 
@@ -1147,7 +1149,7 @@ static BlockDriverState *qmp_get_root_bs(const char 
*name, Error **errp)
 }
 
 static BlockBackend *qmp_get_blk(const char *blk_name, const char *qdev_id,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     BlockBackend *blk;
 
@@ -1205,7 +1207,8 @@ void hmp_commit(Monitor *mon, const QDict *qdict)
     }
 }
 
-static void blockdev_do_action(TransactionAction *action, Error **errp)
+static void blockdev_do_action(TransactionAction *action,
+                               Error *errp[static 1])
 {
     TransactionActionList list;
 
@@ -1220,7 +1223,8 @@ void qmp_blockdev_snapshot_sync(bool has_device, const 
char *device,
                                 bool has_snapshot_node_name,
                                 const char *snapshot_node_name,
                                 bool has_format, const char *format,
-                                bool has_mode, NewImageMode mode, Error **errp)
+                                bool has_mode, NewImageMode mode,
+                                Error *errp[static 1])
 {
     BlockdevSnapshotSync snapshot = {
         .has_device = has_device,
@@ -1243,7 +1247,7 @@ void qmp_blockdev_snapshot_sync(bool has_device, const 
char *device,
 }
 
 void qmp_blockdev_snapshot(const char *node, const char *overlay,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     BlockdevSnapshot snapshot_data = {
         .node = (char *) node,
@@ -1258,7 +1262,7 @@ void qmp_blockdev_snapshot(const char *node, const char 
*overlay,
 
 void qmp_blockdev_snapshot_internal_sync(const char *device,
                                          const char *name,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     BlockdevSnapshotInternal snapshot = {
         .device = (char *) device,
@@ -1276,7 +1280,7 @@ SnapshotInfo 
*qmp_blockdev_snapshot_delete_internal_sync(const char *device,
                                                          const char *id,
                                                          bool has_name,
                                                          const char *name,
-                                                         Error **errp)
+                                                         Error *errp[static 1])
 {
     BlockDriverState *bs;
     AioContext *aio_context;
@@ -1363,7 +1367,7 @@ static BdrvDirtyBitmap *block_dirty_bitmap_lookup(const 
char *node,
                                                   const char *name,
                                                   BlockDriverState **pbs,
                                                   AioContext **paio,
-                                                  Error **errp)
+                                                  Error *errp[static 1])
 {
     BlockDriverState *bs;
     BdrvDirtyBitmap *bitmap;
@@ -1465,7 +1469,8 @@ typedef struct InternalSnapshotState {
 } InternalSnapshotState;
 
 
-static int action_check_completion_mode(BlkActionState *s, Error **errp)
+static int action_check_completion_mode(BlkActionState *s,
+                                        Error *errp[static 1])
 {
     if (s->txn_props->completion_mode != ACTION_COMPLETION_MODE_INDIVIDUAL) {
         error_setg(errp,
@@ -1479,7 +1484,7 @@ static int action_check_completion_mode(BlkActionState 
*s, Error **errp)
 }
 
 static void internal_snapshot_prepare(BlkActionState *common,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     Error *local_err = NULL;
     const char *device;
@@ -1616,7 +1621,7 @@ typedef struct ExternalSnapshotState {
 } ExternalSnapshotState;
 
 static void external_snapshot_prepare(BlkActionState *common,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     int flags = 0;
     QDict *options = NULL;
@@ -1828,9 +1833,10 @@ typedef struct DriveBackupState {
 } DriveBackupState;
 
 static BlockJob *do_drive_backup(DriveBackup *backup, BlockJobTxn *txn,
-                            Error **errp);
+                            Error *errp[static 1]);
 
-static void drive_backup_prepare(BlkActionState *common, Error **errp)
+static void drive_backup_prepare(BlkActionState *common,
+                                 Error *errp[static 1])
 {
     DriveBackupState *state = DO_UPCAST(DriveBackupState, common, common);
     BlockDriverState *bs;
@@ -1892,9 +1898,10 @@ typedef struct BlockdevBackupState {
 } BlockdevBackupState;
 
 static BlockJob *do_blockdev_backup(BlockdevBackup *backup, BlockJobTxn *txn,
-                                    Error **errp);
+                                    Error *errp[static 1]);
 
-static void blockdev_backup_prepare(BlkActionState *common, Error **errp)
+static void blockdev_backup_prepare(BlkActionState *common,
+                                    Error *errp[static 1])
 {
     BlockdevBackupState *state = DO_UPCAST(BlockdevBackupState, common, 
common);
     BlockdevBackup *backup;
@@ -1968,7 +1975,7 @@ typedef struct BlockDirtyBitmapState {
 } BlockDirtyBitmapState;
 
 static void block_dirty_bitmap_add_prepare(BlkActionState *common,
-                                           Error **errp)
+                                           Error *errp[static 1])
 {
     Error *local_err = NULL;
     BlockDirtyBitmapAdd *action;
@@ -2008,7 +2015,7 @@ static void block_dirty_bitmap_add_abort(BlkActionState 
*common)
 }
 
 static void block_dirty_bitmap_clear_prepare(BlkActionState *common,
-                                             Error **errp)
+                                             Error *errp[static 1])
 {
     BlockDirtyBitmapState *state = DO_UPCAST(BlockDirtyBitmapState,
                                              common, common);
@@ -2068,7 +2075,7 @@ static void block_dirty_bitmap_clear_clean(BlkActionState 
*common)
     }
 }
 
-static void abort_prepare(BlkActionState *common, Error **errp)
+static void abort_prepare(BlkActionState *common, Error *errp[static 1])
 {
     error_setg(errp, "Transaction aborted using Abort action");
 }
@@ -2158,7 +2165,7 @@ static TransactionProperties *get_transaction_properties(
 void qmp_transaction(TransactionActionList *dev_list,
                      bool has_props,
                      struct TransactionProperties *props,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     TransactionActionList *dev_entry = dev_list;
     BlockJobTxn *block_job_txn = NULL;
@@ -2235,7 +2242,7 @@ exit:
 
 void qmp_eject(bool has_device, const char *device,
                bool has_id, const char *id,
-               bool has_force, bool force, Error **errp)
+               bool has_force, bool force, Error *errp[static 1])
 {
     Error *local_err = NULL;
     int rc;
@@ -2258,7 +2265,7 @@ void qmp_eject(bool has_device, const char *device,
 
 void qmp_block_passwd(bool has_device, const char *device,
                       bool has_node_name, const char *node_name,
-                      const char *password, Error **errp)
+                      const char *password, Error *errp[static 1])
 {
     Error *local_err = NULL;
     BlockDriverState *bs;
@@ -2292,7 +2299,7 @@ void qmp_block_passwd(bool has_device, const char *device,
  * Else, return 0.
  */
 static int do_open_tray(const char *blk_name, const char *qdev_id,
-                        bool force, Error **errp)
+                        bool force, Error *errp[static 1])
 {
     BlockBackend *blk;
     const char *device = qdev_id ?: blk_name;
@@ -2338,7 +2345,7 @@ static int do_open_tray(const char *blk_name, const char 
*qdev_id,
 void qmp_blockdev_open_tray(bool has_device, const char *device,
                             bool has_id, const char *id,
                             bool has_force, bool force,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     Error *local_err = NULL;
     int rc;
@@ -2358,7 +2365,7 @@ void qmp_blockdev_open_tray(bool has_device, const char 
*device,
 
 void qmp_blockdev_close_tray(bool has_device, const char *device,
                              bool has_id, const char *id,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     BlockBackend *blk;
 
@@ -2391,7 +2398,8 @@ void qmp_blockdev_close_tray(bool has_device, const char 
*device,
 }
 
 void qmp_x_blockdev_remove_medium(bool has_device, const char *device,
-                                  bool has_id, const char *id, Error **errp)
+                                  bool has_id, const char *id,
+                                  Error *errp[static 1])
 {
     BlockBackend *blk;
     BlockDriverState *bs;
@@ -2448,7 +2456,8 @@ out:
 }
 
 static void qmp_blockdev_insert_anon_medium(BlockBackend *blk,
-                                            BlockDriverState *bs, Error **errp)
+                                            BlockDriverState *bs,
+                                            Error *errp[static 1])
 {
     bool has_device;
     int ret;
@@ -2492,7 +2501,8 @@ static void qmp_blockdev_insert_anon_medium(BlockBackend 
*blk,
 
 void qmp_x_blockdev_insert_medium(bool has_device, const char *device,
                                   bool has_id, const char *id,
-                                  const char *node_name, Error **errp)
+                                  const char *node_name,
+                                  Error *errp[static 1])
 {
     BlockBackend *blk;
     BlockDriverState *bs;
@@ -2524,7 +2534,7 @@ void qmp_blockdev_change_medium(bool has_device, const 
char *device,
                                 bool has_format, const char *format,
                                 bool has_read_only,
                                 BlockdevChangeReadOnlyMode read_only,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     BlockBackend *blk;
     BlockDriverState *medium_bs = NULL;
@@ -2722,7 +2732,7 @@ out:
 
 void qmp_block_dirty_bitmap_add(const char *node, const char *name,
                                 bool has_granularity, uint32_t granularity,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     AioContext *aio_context;
     BlockDriverState *bs;
@@ -2758,7 +2768,7 @@ void qmp_block_dirty_bitmap_add(const char *node, const 
char *name,
 }
 
 void qmp_block_dirty_bitmap_remove(const char *node, const char *name,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     AioContext *aio_context;
     BlockDriverState *bs;
@@ -2787,7 +2797,7 @@ void qmp_block_dirty_bitmap_remove(const char *node, 
const char *name,
  * immediately after a full backup operation.
  */
 void qmp_block_dirty_bitmap_clear(const char *node, const char *name,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     AioContext *aio_context;
     BdrvDirtyBitmap *bitmap;
@@ -2878,7 +2888,7 @@ void hmp_drive_del(Monitor *mon, const QDict *qdict)
 
 void qmp_block_resize(bool has_device, const char *device,
                       bool has_node_name, const char *node_name,
-                      int64_t size, Error **errp)
+                      int64_t size, Error *errp[static 1])
 {
     Error *local_err = NULL;
     BlockBackend *blk = NULL;
@@ -2933,7 +2943,7 @@ void qmp_block_stream(bool has_job_id, const char 
*job_id, const char *device,
                       bool has_backing_file, const char *backing_file,
                       bool has_speed, int64_t speed,
                       bool has_on_error, BlockdevOnError on_error,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     BlockDriverState *bs, *iter;
     BlockDriverState *base_bs = NULL;
@@ -3018,7 +3028,7 @@ void qmp_block_commit(bool has_job_id, const char 
*job_id, const char *device,
                       bool has_backing_file, const char *backing_file,
                       bool has_speed, int64_t speed,
                       bool has_filter_node_name, const char *filter_node_name,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     BlockDriverState *bs;
     BlockDriverState *iter;
@@ -3131,7 +3141,7 @@ out:
 }
 
 static BlockJob *do_drive_backup(DriveBackup *backup, BlockJobTxn *txn,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     BlockDriverState *bs;
     BlockDriverState *target_bs;
@@ -3267,7 +3277,7 @@ out:
     return job;
 }
 
-void qmp_drive_backup(DriveBackup *arg, Error **errp)
+void qmp_drive_backup(DriveBackup *arg, Error *errp[static 1])
 {
 
     BlockJob *job;
@@ -3277,13 +3287,13 @@ void qmp_drive_backup(DriveBackup *arg, Error **errp)
     }
 }
 
-BlockDeviceInfoList *qmp_query_named_block_nodes(Error **errp)
+BlockDeviceInfoList *qmp_query_named_block_nodes(Error *errp[static 1])
 {
     return bdrv_named_nodes_list(errp);
 }
 
 BlockJob *do_blockdev_backup(BlockdevBackup *backup, BlockJobTxn *txn,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     BlockDriverState *bs;
     BlockDriverState *target_bs;
@@ -3343,7 +3353,7 @@ out:
     return job;
 }
 
-void qmp_blockdev_backup(BlockdevBackup *arg, Error **errp)
+void qmp_blockdev_backup(BlockdevBackup *arg, Error *errp[static 1])
 {
     BlockJob *job;
     job = do_blockdev_backup(arg, NULL, errp);
@@ -3370,7 +3380,7 @@ static void blockdev_mirror_common(const char *job_id, 
BlockDriverState *bs,
                                    bool has_unmap, bool unmap,
                                    bool has_filter_node_name,
                                    const char *filter_node_name,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
 
     if (!has_speed) {
@@ -3583,7 +3593,7 @@ void qmp_blockdev_mirror(bool has_job_id, const char 
*job_id,
                          BlockdevOnError on_target_error,
                          bool has_filter_node_name,
                          const char *filter_node_name,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     BlockDriverState *bs;
     BlockDriverState *target_bs;
@@ -3621,7 +3631,7 @@ void qmp_blockdev_mirror(bool has_job_id, const char 
*job_id,
 
 /* Get a block job using its ID and acquire its AioContext */
 static BlockJob *find_block_job(const char *id, AioContext **aio_context,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     BlockJob *job;
 
@@ -3643,7 +3653,8 @@ static BlockJob *find_block_job(const char *id, 
AioContext **aio_context,
     return job;
 }
 
-void qmp_block_job_set_speed(const char *device, int64_t speed, Error **errp)
+void qmp_block_job_set_speed(const char *device, int64_t speed,
+                             Error *errp[static 1])
 {
     AioContext *aio_context;
     BlockJob *job = find_block_job(device, &aio_context, errp);
@@ -3657,7 +3668,7 @@ void qmp_block_job_set_speed(const char *device, int64_t 
speed, Error **errp)
 }
 
 void qmp_block_job_cancel(const char *device,
-                          bool has_force, bool force, Error **errp)
+                          bool has_force, bool force, Error *errp[static 1])
 {
     AioContext *aio_context;
     BlockJob *job = find_block_job(device, &aio_context, errp);
@@ -3682,7 +3693,7 @@ out:
     aio_context_release(aio_context);
 }
 
-void qmp_block_job_pause(const char *device, Error **errp)
+void qmp_block_job_pause(const char *device, Error *errp[static 1])
 {
     AioContext *aio_context;
     BlockJob *job = find_block_job(device, &aio_context, errp);
@@ -3696,7 +3707,7 @@ void qmp_block_job_pause(const char *device, Error **errp)
     aio_context_release(aio_context);
 }
 
-void qmp_block_job_resume(const char *device, Error **errp)
+void qmp_block_job_resume(const char *device, Error *errp[static 1])
 {
     AioContext *aio_context;
     BlockJob *job = find_block_job(device, &aio_context, errp);
@@ -3710,7 +3721,7 @@ void qmp_block_job_resume(const char *device, Error 
**errp)
     aio_context_release(aio_context);
 }
 
-void qmp_block_job_complete(const char *device, Error **errp)
+void qmp_block_job_complete(const char *device, Error *errp[static 1])
 {
     AioContext *aio_context;
     BlockJob *job = find_block_job(device, &aio_context, errp);
@@ -3727,7 +3738,7 @@ void qmp_block_job_complete(const char *device, Error 
**errp)
 void qmp_change_backing_file(const char *device,
                              const char *image_node_name,
                              const char *backing_file,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     BlockDriverState *bs = NULL;
     AioContext *aio_context;
@@ -3837,7 +3848,7 @@ out:
     qemu_opts_del(opts);
 }
 
-void qmp_blockdev_add(BlockdevOptions *options, Error **errp)
+void qmp_blockdev_add(BlockdevOptions *options, Error *errp[static 1])
 {
     BlockDriverState *bs;
     QObject *obj;
@@ -3877,7 +3888,7 @@ fail:
     visit_free(v);
 }
 
-void qmp_blockdev_del(const char *node_name, Error **errp)
+void qmp_blockdev_del(const char *node_name, Error *errp[static 1])
 {
     AioContext *aio_context;
     BlockDriverState *bs;
@@ -3933,7 +3944,7 @@ static BdrvChild *bdrv_find_child(BlockDriverState 
*parent_bs,
 
 void qmp_x_blockdev_change(const char *parent, bool has_child,
                            const char *child, bool has_node,
-                           const char *node, Error **errp)
+                           const char *node, Error *errp[static 1])
 {
     BlockDriverState *parent_bs, *new_bs = NULL;
     BdrvChild *p_child;
@@ -3972,7 +3983,7 @@ void qmp_x_blockdev_change(const char *parent, bool 
has_child,
     }
 }
 
-BlockJobInfoList *qmp_query_block_jobs(Error **errp)
+BlockJobInfoList *qmp_query_block_jobs(Error *errp[static 1])
 {
     BlockJobInfoList *head = NULL, **p_next = &head;
     BlockJob *job;
diff --git a/blockjob.c b/blockjob.c
index c0b528f1e9..3350fa4dee 100644
--- a/blockjob.c
+++ b/blockjob.c
@@ -247,7 +247,8 @@ void block_job_remove_all_bdrv(BlockJob *job)
 }
 
 int block_job_add_bdrv(BlockJob *job, const char *name, BlockDriverState *bs,
-                       uint64_t perm, uint64_t shared_perm, Error **errp)
+                       uint64_t perm, uint64_t shared_perm,
+                       Error *errp[static 1])
 {
     BdrvChild *c;
 
@@ -354,7 +355,7 @@ static void block_job_cancel_async(BlockJob *job)
 
 static int block_job_finish_sync(BlockJob *job,
                                  void (*finish)(BlockJob *, Error **errp),
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     int ret;
 
@@ -450,7 +451,7 @@ static void block_job_completed_txn_success(BlockJob *job)
     }
 }
 
-void block_job_set_speed(BlockJob *job, int64_t speed, Error **errp)
+void block_job_set_speed(BlockJob *job, int64_t speed, Error *errp[static 1])
 {
     if (!job->driver->set_speed) {
         error_setg(errp, QERR_UNSUPPORTED);
@@ -464,7 +465,7 @@ void block_job_set_speed(BlockJob *job, int64_t speed, 
Error **errp)
     job->speed = speed;
 }
 
-void block_job_complete(BlockJob *job, Error **errp)
+void block_job_complete(BlockJob *job, Error *errp[static 1])
 {
     /* Should not be reachable via external interface for internal jobs */
     assert(job->id);
@@ -511,7 +512,7 @@ void block_job_cancel(BlockJob *job)
 /* A wrapper around block_job_cancel() taking an Error ** parameter so it may 
be
  * used with block_job_finish_sync() without the need for (rather nasty)
  * function pointer casts there. */
-static void block_job_cancel_err(BlockJob *job, Error **errp)
+static void block_job_cancel_err(BlockJob *job, Error *errp[static 1])
 {
     block_job_cancel(job);
 }
@@ -534,12 +535,12 @@ void block_job_cancel_sync_all(void)
     }
 }
 
-int block_job_complete_sync(BlockJob *job, Error **errp)
+int block_job_complete_sync(BlockJob *job, Error *errp[static 1])
 {
     return block_job_finish_sync(job, &block_job_complete, errp);
 }
 
-BlockJobInfo *block_job_query(BlockJob *job, Error **errp)
+BlockJobInfo *block_job_query(BlockJob *job, Error *errp[static 1])
 {
     BlockJobInfo *info;
 
@@ -606,7 +607,8 @@ static void block_job_event_completed(BlockJob *job, const 
char *msg)
 void *block_job_create(const char *job_id, const BlockJobDriver *driver,
                        BlockDriverState *bs, uint64_t perm,
                        uint64_t shared_perm, int64_t speed, int flags,
-                       BlockCompletionFunc *cb, void *opaque, Error **errp)
+                       BlockCompletionFunc *cb, void *opaque,
+                       Error *errp[static 1])
 {
     BlockBackend *blk;
     BlockJob *job;
diff --git a/bootdevice.c b/bootdevice.c
index 92f607d321..7a52fb37f7 100644
--- a/bootdevice.c
+++ b/bootdevice.c
@@ -50,7 +50,7 @@ void qemu_register_boot_set(QEMUBootSetHandler *func, void 
*opaque)
     boot_set_opaque = opaque;
 }
 
-void qemu_boot_set(const char *boot_order, Error **errp)
+void qemu_boot_set(const char *boot_order, Error *errp[static 1])
 {
     if (!boot_set_handler) {
         error_setg(errp, "no function defined to set boot device list for"
@@ -66,7 +66,7 @@ void qemu_boot_set(const char *boot_order, Error **errp)
     boot_set_handler(boot_set_opaque, boot_order, errp);
 }
 
-void validate_bootdevices(const char *devices, Error **errp)
+void validate_bootdevices(const char *devices, Error *errp[static 1])
 {
     /* We just do some generic consistency checks */
     const char *p;
@@ -113,7 +113,7 @@ void restore_boot_order(void *opaque)
     g_free(normal_boot_order);
 }
 
-void check_boot_index(int32_t bootindex, Error **errp)
+void check_boot_index(int32_t bootindex, Error *errp[static 1])
 {
     FWBootEntry *i;
 
@@ -271,14 +271,14 @@ typedef struct {
 } BootIndexProperty;
 
 static void device_get_bootindex(Object *obj, Visitor *v, const char *name,
-                                 void *opaque, Error **errp)
+                                 void *opaque, Error *errp[static 1])
 {
     BootIndexProperty *prop = opaque;
     visit_type_int32(v, name, prop->bootindex, errp);
 }
 
 static void device_set_bootindex(Object *obj, Visitor *v, const char *name,
-                                 void *opaque, Error **errp)
+                                 void *opaque, Error *errp[static 1])
 {
     BootIndexProperty *prop = opaque;
     int32_t boot_index;
@@ -314,7 +314,7 @@ static void property_release_bootindex(Object *obj, const 
char *name,
 
 void device_add_bootindex_property(Object *obj, int32_t *bootindex,
                                    const char *name, const char *suffix,
-                                   DeviceState *dev, Error **errp)
+                                   DeviceState *dev, Error *errp[static 1])
 {
     BootIndexProperty *prop = g_malloc0(sizeof(*prop));
 
diff --git a/chardev/baum.c b/chardev/baum.c
index 302dd9666c..ad96d7196d 100644
--- a/chardev/baum.c
+++ b/chardev/baum.c
@@ -630,7 +630,7 @@ static void char_braille_finalize(Object *obj)
 static void baum_chr_open(Chardev *chr,
                           ChardevBackend *backend,
                           bool *be_opened,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     BaumChardev *baum = BAUM_CHARDEV(chr);
     brlapi_handle_t *handle;
diff --git a/chardev/char-console.c b/chardev/char-console.c
index 535ed65136..53510efeb3 100644
--- a/chardev/char-console.c
+++ b/chardev/char-console.c
@@ -27,7 +27,7 @@
 static void qemu_chr_open_win_con(Chardev *chr,
                                   ChardevBackend *backend,
                                   bool *be_opened,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     win_chr_set_file(chr, GetStdHandle(STD_OUTPUT_HANDLE), true);
 }
diff --git a/chardev/char-fd.c b/chardev/char-fd.c
index b0ebccf0c6..d81865f36a 100644
--- a/chardev/char-fd.c
+++ b/chardev/char-fd.c
@@ -114,7 +114,7 @@ static void char_fd_finalize(Object *obj)
     qemu_chr_be_event(chr, CHR_EVENT_CLOSED);
 }
 
-int qmp_chardev_open_file_source(char *src, int flags, Error **errp)
+int qmp_chardev_open_file_source(char *src, int flags, Error *errp[static 1])
 {
     int fd = -1;
 
diff --git a/chardev/char-fe.c b/chardev/char-fe.c
index 3f90f0567c..1f1f1c9a1d 100644
--- a/chardev/char-fe.c
+++ b/chardev/char-fe.c
@@ -182,7 +182,7 @@ Chardev *qemu_chr_fe_get_driver(CharBackend *be)
     return be->chr;
 }
 
-bool qemu_chr_fe_init(CharBackend *b, Chardev *s, Error **errp)
+bool qemu_chr_fe_init(CharBackend *b, Chardev *s, Error *errp[static 1])
 {
     int tag = 0;
 
@@ -292,7 +292,7 @@ void qemu_chr_fe_take_focus(CharBackend *b)
     }
 }
 
-int qemu_chr_fe_wait_connected(CharBackend *be, Error **errp)
+int qemu_chr_fe_wait_connected(CharBackend *be, Error *errp[static 1])
 {
     if (!be->chr) {
         error_setg(errp, "missing associated backend");
diff --git a/chardev/char-file.c b/chardev/char-file.c
index a57b88aaf2..ad0808caf4 100644
--- a/chardev/char-file.c
+++ b/chardev/char-file.c
@@ -35,7 +35,7 @@
 static void qmp_chardev_open_file(Chardev *chr,
                                   ChardevBackend *backend,
                                   bool *be_opened,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     ChardevFile *file = backend->u.file.data;
 #ifdef _WIN32
@@ -95,7 +95,7 @@ static void qmp_chardev_open_file(Chardev *chr,
 }
 
 static void qemu_chr_parse_file_out(QemuOpts *opts, ChardevBackend *backend,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     const char *path = qemu_opt_get(opts, "path");
     ChardevFile *file;
diff --git a/chardev/char-mux.c b/chardev/char-mux.c
index 08570b915e..fba56c1d59 100644
--- a/chardev/char-mux.c
+++ b/chardev/char-mux.c
@@ -300,7 +300,7 @@ void mux_set_focus(Chardev *chr, int focus)
 static void qemu_chr_open_mux(Chardev *chr,
                               ChardevBackend *backend,
                               bool *be_opened,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     ChardevMux *mux = backend->u.mux.data;
     Chardev *drv;
@@ -321,7 +321,7 @@ static void qemu_chr_open_mux(Chardev *chr,
 }
 
 static void qemu_chr_parse_mux(QemuOpts *opts, ChardevBackend *backend,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     const char *chardev = qemu_opt_get(opts, "chardev");
     ChardevMux *mux;
diff --git a/chardev/char-null.c b/chardev/char-null.c
index 90bafe76f4..1c8be78f2c 100644
--- a/chardev/char-null.c
+++ b/chardev/char-null.c
@@ -27,7 +27,7 @@
 static void null_chr_open(Chardev *chr,
                           ChardevBackend *backend,
                           bool *be_opened,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     *be_opened = false;
 }
diff --git a/chardev/char-parallel.c b/chardev/char-parallel.c
index bce89f8c36..a89b111ffb 100644
--- a/chardev/char-parallel.c
+++ b/chardev/char-parallel.c
@@ -157,7 +157,7 @@ static int pp_ioctl(Chardev *chr, int cmd, void *arg)
 static void qemu_chr_open_pp_fd(Chardev *chr,
                                 int fd,
                                 bool *be_opened,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     ParallelChardev *drv = PARALLEL_CHARDEV(chr);
 
@@ -227,7 +227,7 @@ static int pp_ioctl(Chardev *chr, int cmd, void *arg)
 static void qemu_chr_open_pp_fd(Chardev *chr,
                                 int fd,
                                 bool *be_opened,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     ParallelChardev *drv = PARALLEL_CHARDEV(chr);
     drv->fd = fd;
@@ -239,7 +239,7 @@ static void qemu_chr_open_pp_fd(Chardev *chr,
 static void qmp_chardev_open_parallel(Chardev *chr,
                                       ChardevBackend *backend,
                                       bool *be_opened,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     ChardevHostdev *parallel = backend->u.parallel.data;
     int fd;
@@ -252,7 +252,7 @@ static void qmp_chardev_open_parallel(Chardev *chr,
 }
 
 static void qemu_chr_parse_parallel(QemuOpts *opts, ChardevBackend *backend,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     const char *device = qemu_opt_get(opts, "path");
     ChardevHostdev *parallel;
diff --git a/chardev/char-pipe.c b/chardev/char-pipe.c
index 3a95e4c1b2..05f07b46ae 100644
--- a/chardev/char-pipe.c
+++ b/chardev/char-pipe.c
@@ -36,7 +36,7 @@
 #define NTIMEOUT 5000
 
 static int win_chr_pipe_init(Chardev *chr, const char *filename,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     WinChardev *s = WIN_CHARDEV(chr);
     OVERLAPPED ov;
@@ -102,7 +102,7 @@ static int win_chr_pipe_init(Chardev *chr, const char 
*filename,
 static void qemu_chr_open_pipe(Chardev *chr,
                                ChardevBackend *backend,
                                bool *be_opened,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     ChardevHostdev *opts = backend->u.pipe.data;
     const char *filename = opts->device;
@@ -117,7 +117,7 @@ static void qemu_chr_open_pipe(Chardev *chr,
 static void qemu_chr_open_pipe(Chardev *chr,
                                ChardevBackend *backend,
                                bool *be_opened,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     ChardevHostdev *opts = backend->u.pipe.data;
     int fd_in, fd_out;
@@ -150,7 +150,7 @@ static void qemu_chr_open_pipe(Chardev *chr,
 #endif /* !_WIN32 */
 
 static void qemu_chr_parse_pipe(QemuOpts *opts, ChardevBackend *backend,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     const char *device = qemu_opt_get(opts, "path");
     ChardevHostdev *dev;
diff --git a/chardev/char-pty.c b/chardev/char-pty.c
index 09609d397d..0ceb0e8280 100644
--- a/chardev/char-pty.c
+++ b/chardev/char-pty.c
@@ -243,7 +243,7 @@ static void char_pty_finalize(Object *obj)
 static void char_pty_open(Chardev *chr,
                           ChardevBackend *backend,
                           bool *be_opened,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     PtyChardev *s;
     int master_fd, slave_fd;
diff --git a/chardev/char-ringbuf.c b/chardev/char-ringbuf.c
index df52b04d22..f99a1423d3 100644
--- a/chardev/char-ringbuf.c
+++ b/chardev/char-ringbuf.c
@@ -89,7 +89,7 @@ static void char_ringbuf_finalize(Object *obj)
 static void qemu_chr_open_ringbuf(Chardev *chr,
                                   ChardevBackend *backend,
                                   bool *be_opened,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     ChardevRingbuf *opts = backend->u.ringbuf.data;
     RingBufChardev *d = RINGBUF_CHARDEV(chr);
@@ -109,7 +109,7 @@ static void qemu_chr_open_ringbuf(Chardev *chr,
 
 void qmp_ringbuf_write(const char *device, const char *data,
                        bool has_format, enum DataFormat format,
-                       Error **errp)
+                       Error *errp[static 1])
 {
     Chardev *chr;
     const uint8_t *write_data;
@@ -153,7 +153,7 @@ void qmp_ringbuf_write(const char *device, const char *data,
 
 char *qmp_ringbuf_read(const char *device, int64_t size,
                        bool has_format, enum DataFormat format,
-                       Error **errp)
+                       Error *errp[static 1])
 {
     Chardev *chr;
     uint8_t *read_data;
@@ -201,7 +201,7 @@ char *qmp_ringbuf_read(const char *device, int64_t size,
 }
 
 static void qemu_chr_parse_ringbuf(QemuOpts *opts, ChardevBackend *backend,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     int val;
     ChardevRingbuf *ringbuf;
diff --git a/chardev/char-serial.c b/chardev/char-serial.c
index 2f8f83821d..fcf507b7f2 100644
--- a/chardev/char-serial.c
+++ b/chardev/char-serial.c
@@ -41,7 +41,7 @@
 static void qmp_chardev_open_serial(Chardev *chr,
                                     ChardevBackend *backend,
                                     bool *be_opened,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     ChardevHostdev *serial = backend->u.serial.data;
 
@@ -253,7 +253,7 @@ static int tty_serial_ioctl(Chardev *chr, int cmd, void 
*arg)
 static void qmp_chardev_open_serial(Chardev *chr,
                                     ChardevBackend *backend,
                                     bool *be_opened,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     ChardevHostdev *serial = backend->u.serial.data;
     int fd;
@@ -271,7 +271,7 @@ static void qmp_chardev_open_serial(Chardev *chr,
 
 #ifdef HAVE_CHARDEV_SERIAL
 static void qemu_chr_parse_serial(QemuOpts *opts, ChardevBackend *backend,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     const char *device = qemu_opt_get(opts, "path");
     ChardevHostdev *serial;
diff --git a/chardev/char-socket.c b/chardev/char-socket.c
index 7ca9863631..6faf32345a 100644
--- a/chardev/char-socket.c
+++ b/chardev/char-socket.c
@@ -756,7 +756,7 @@ static gboolean tcp_chr_accept(QIOChannel *channel,
     return TRUE;
 }
 
-static int tcp_chr_wait_connected(Chardev *chr, Error **errp)
+static int tcp_chr_wait_connected(Chardev *chr, Error *errp[static 1])
 {
     SocketChardev *s = SOCKET_CHARDEV(chr);
     QIOChannelSocket *sioc;
@@ -857,7 +857,7 @@ static gboolean socket_reconnect_timeout(gpointer opaque)
 static void qmp_chardev_open_socket(Chardev *chr,
                                     ChardevBackend *backend,
                                     bool *be_opened,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     SocketChardev *s = SOCKET_CHARDEV(chr);
     ChardevSocket *sock = backend->u.socket.data;
@@ -975,7 +975,7 @@ error:
 }
 
 static void qemu_chr_parse_socket(QemuOpts *opts, ChardevBackend *backend,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     bool is_listen      = qemu_opt_get_bool(opts, "server", false);
     bool is_waitconnect = is_listen && qemu_opt_get_bool(opts, "wait", true);
@@ -1049,7 +1049,7 @@ static void qemu_chr_parse_socket(QemuOpts *opts, 
ChardevBackend *backend,
 
 static void
 char_socket_get_addr(Object *obj, Visitor *v, const char *name,
-                     void *opaque, Error **errp)
+                     void *opaque, Error *errp[static 1])
 {
     SocketChardev *s = SOCKET_CHARDEV(obj);
 
@@ -1057,7 +1057,7 @@ char_socket_get_addr(Object *obj, Visitor *v, const char 
*name,
 }
 
 static bool
-char_socket_get_connected(Object *obj, Error **errp)
+char_socket_get_connected(Object *obj, Error *errp[static 1])
 {
     SocketChardev *s = SOCKET_CHARDEV(obj);
 
diff --git a/chardev/char-stdio.c b/chardev/char-stdio.c
index 6f5d798d7b..bd5c06f50b 100644
--- a/chardev/char-stdio.c
+++ b/chardev/char-stdio.c
@@ -81,7 +81,7 @@ static void term_stdio_handler(int sig)
 static void qemu_chr_open_stdio(Chardev *chr,
                                 ChardevBackend *backend,
                                 bool *be_opened,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     ChardevStdio *opts = backend->u.stdio.data;
     struct sigaction act;
@@ -116,7 +116,7 @@ static void qemu_chr_open_stdio(Chardev *chr,
 #endif
 
 static void qemu_chr_parse_stdio(QemuOpts *opts, ChardevBackend *backend,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     ChardevStdio *stdio;
 
diff --git a/chardev/char-udp.c b/chardev/char-udp.c
index d8766b1fd0..12fde11562 100644
--- a/chardev/char-udp.c
+++ b/chardev/char-udp.c
@@ -127,7 +127,7 @@ static void char_udp_finalize(Object *obj)
 }
 
 static void qemu_chr_parse_udp(QemuOpts *opts, ChardevBackend *backend,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     const char *host = qemu_opt_get(opts, "host");
     const char *port = qemu_opt_get(opts, "port");
@@ -188,7 +188,7 @@ static void qemu_chr_parse_udp(QemuOpts *opts, 
ChardevBackend *backend,
 static void qmp_chardev_open_udp(Chardev *chr,
                                  ChardevBackend *backend,
                                  bool *be_opened,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     ChardevUdp *udp = backend->u.udp.data;
     SocketAddress *local_addr = socket_address_flatten(udp->local);
diff --git a/chardev/char-win-stdio.c b/chardev/char-win-stdio.c
index efcf7827eb..1cd4c56d90 100644
--- a/chardev/char-win-stdio.c
+++ b/chardev/char-win-stdio.c
@@ -139,7 +139,7 @@ static void qemu_chr_set_echo_win_stdio(Chardev *chr, bool 
echo)
 static void qemu_chr_open_stdio(Chardev *chr,
                                 ChardevBackend *backend,
                                 bool *be_opened,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     WinStdioChardev *stdio = WIN_STDIO_CHARDEV(chr);
     DWORD              dwMode;
diff --git a/chardev/char-win.c b/chardev/char-win.c
index 05518e0958..14adf57cda 100644
--- a/chardev/char-win.c
+++ b/chardev/char-win.c
@@ -71,7 +71,8 @@ static int win_chr_serial_poll(void *opaque)
     return 0;
 }
 
-int win_chr_serial_init(Chardev *chr, const char *filename, Error **errp)
+int win_chr_serial_init(Chardev *chr, const char *filename,
+                        Error *errp[static 1])
 {
     WinChardev *s = WIN_CHARDEV(chr);
     COMMCONFIG comcfg;
diff --git a/chardev/char.c b/chardev/char.c
index ac3cd2b436..eae1301139 100644
--- a/chardev/char.c
+++ b/chardev/char.c
@@ -187,7 +187,7 @@ int qemu_chr_add_client(Chardev *s, int fd)
 }
 
 static void qemu_char_open(Chardev *chr, ChardevBackend *backend,
-                           bool *be_opened, Error **errp)
+                           bool *be_opened, Error *errp[static 1])
 {
     ChardevClass *cc = CHARDEV_GET_CLASS(chr);
     /* Any ChardevCommon member would work */
@@ -307,7 +307,7 @@ static bool qemu_chr_is_busy(Chardev *s)
     }
 }
 
-int qemu_chr_wait_connected(Chardev *chr, Error **errp)
+int qemu_chr_wait_connected(Chardev *chr, Error *errp[static 1])
 {
     ChardevClass *cc = CHARDEV_GET_CLASS(chr);
 
@@ -476,7 +476,8 @@ void qemu_chr_parse_common(QemuOpts *opts, ChardevCommon 
*backend)
     backend->logappend = qemu_opt_get_bool(opts, "logappend", false);
 }
 
-static const ChardevClass *char_get_class(const char *driver, Error **errp)
+static const ChardevClass *char_get_class(const char *driver,
+                                          Error *errp[static 1])
 {
     ObjectClass *oc;
     const ChardevClass *cc;
@@ -557,7 +558,7 @@ help_string_append(const char *name, void *opaque)
 }
 
 Chardev *qemu_chr_new_from_opts(QemuOpts *opts,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     const ChardevClass *cc;
     Chardev *chr;
@@ -709,7 +710,7 @@ static int qmp_query_chardev_foreach(Object *obj, void 
*data)
     return 0;
 }
 
-ChardevInfoList *qmp_query_chardev(Error **errp)
+ChardevInfoList *qmp_query_chardev(Error *errp[static 1])
 {
     ChardevInfoList *chr_list = NULL;
 
@@ -731,7 +732,7 @@ qmp_prepend_backend(const char *name, void *opaque)
     *list = info;
 }
 
-ChardevBackendInfoList *qmp_query_chardev_backends(Error **errp)
+ChardevBackendInfoList *qmp_query_chardev_backends(Error *errp[static 1])
 {
     ChardevBackendInfoList *backend_list = NULL;
 
@@ -858,7 +859,7 @@ void qemu_chr_set_feature(Chardev *chr,
 
 Chardev *qemu_chardev_new(const char *id, const char *typename,
                           ChardevBackend *backend,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     Object *obj;
     Chardev *chr = NULL;
@@ -902,7 +903,7 @@ end:
 }
 
 ChardevReturn *qmp_chardev_add(const char *id, ChardevBackend *backend,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     const ChardevClass *cc;
     ChardevReturn *ret;
@@ -928,7 +929,7 @@ ChardevReturn *qmp_chardev_add(const char *id, 
ChardevBackend *backend,
     return ret;
 }
 
-void qmp_chardev_remove(const char *id, Error **errp)
+void qmp_chardev_remove(const char *id, Error *errp[static 1])
 {
     Chardev *chr;
 
diff --git a/chardev/msmouse.c b/chardev/msmouse.c
index 0ffd137ce8..5e7ced5d6a 100644
--- a/chardev/msmouse.c
+++ b/chardev/msmouse.c
@@ -156,7 +156,7 @@ static QemuInputHandler msmouse_handler = {
 static void msmouse_chr_open(Chardev *chr,
                              ChardevBackend *backend,
                              bool *be_opened,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     MouseChardev *mouse = MOUSE_CHARDEV(chr);
 
diff --git a/chardev/spice.c b/chardev/spice.c
index a312078812..5cc3765e42 100644
--- a/chardev/spice.c
+++ b/chardev/spice.c
@@ -269,7 +269,7 @@ static void chr_open(Chardev *chr, const char *subtype)
 static void qemu_chr_open_spice_vmc(Chardev *chr,
                                     ChardevBackend *backend,
                                     bool *be_opened,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     ChardevSpiceChannel *spicevmc = backend->u.spicevmc.data;
     const char *type = spicevmc->type;
@@ -300,7 +300,7 @@ static void qemu_chr_open_spice_vmc(Chardev *chr,
 static void qemu_chr_open_spice_port(Chardev *chr,
                                      ChardevBackend *backend,
                                      bool *be_opened,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     ChardevSpicePort *spiceport = backend->u.spiceport.data;
     const char *name = spiceport->fqdn;
@@ -332,7 +332,7 @@ void qemu_spice_register_ports(void)
 #endif
 
 static void qemu_chr_parse_spice_vmc(QemuOpts *opts, ChardevBackend *backend,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     const char *name = qemu_opt_get(opts, "name");
     ChardevSpiceChannel *spicevmc;
@@ -348,7 +348,7 @@ static void qemu_chr_parse_spice_vmc(QemuOpts *opts, 
ChardevBackend *backend,
 }
 
 static void qemu_chr_parse_spice_port(QemuOpts *opts, ChardevBackend *backend,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     const char *name = qemu_opt_get(opts, "name");
     ChardevSpicePort *spiceport;
diff --git a/chardev/wctablet.c b/chardev/wctablet.c
index 6c13c2c58a..8adc34794c 100644
--- a/chardev/wctablet.c
+++ b/chardev/wctablet.c
@@ -328,7 +328,7 @@ static void wctablet_chr_finalize(Object *obj)
 static void wctablet_chr_open(Chardev *chr,
                               ChardevBackend *backend,
                               bool *be_opened,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     TabletChardev *tablet = WCTABLET_CHARDEV(chr);
 
diff --git a/cpus.c b/cpus.c
index 14bb8d552e..4b48ed2652 100644
--- a/cpus.c
+++ b/cpus.c
@@ -193,7 +193,7 @@ static bool default_mttcg_enabled(void)
     }
 }
 
-void qemu_tcg_configure(QemuOpts *opts, Error **errp)
+void qemu_tcg_configure(QemuOpts *opts, Error *errp[static 1])
 {
     const char *t = qemu_opt_get(opts, "thread");
     if (t) {
@@ -738,7 +738,7 @@ void cpu_ticks_init(void)
                                            cpu_throttle_timer_tick, NULL);
 }
 
-void configure_icount(QemuOpts *opts, Error **errp)
+void configure_icount(QemuOpts *opts, Error *errp[static 1])
 {
     const char *option;
     char *rem_str = NULL;
@@ -1873,7 +1873,7 @@ void list_cpus(FILE *f, fprintf_function cpu_fprintf, 
const char *optarg)
 #endif
 }
 
-CpuInfoList *qmp_query_cpus(Error **errp)
+CpuInfoList *qmp_query_cpus(Error *errp[static 1])
 {
     MachineState *ms = MACHINE(qdev_get_machine());
     MachineClass *mc = MACHINE_GET_CLASS(ms);
@@ -1948,7 +1948,7 @@ CpuInfoList *qmp_query_cpus(Error **errp)
 }
 
 void qmp_memsave(int64_t addr, int64_t size, const char *filename,
-                 bool has_cpu, int64_t cpu_index, Error **errp)
+                 bool has_cpu, int64_t cpu_index, Error *errp[static 1])
 {
     FILE *f;
     uint32_t l;
@@ -1995,7 +1995,7 @@ exit:
 }
 
 void qmp_pmemsave(int64_t addr, int64_t size, const char *filename,
-                  Error **errp)
+                  Error *errp[static 1])
 {
     FILE *f;
     uint32_t l;
@@ -2024,7 +2024,7 @@ exit:
     fclose(f);
 }
 
-void qmp_inject_nmi(Error **errp)
+void qmp_inject_nmi(Error *errp[static 1])
 {
     nmi_monitor_handle(monitor_get_cpu_index(), errp);
 }
diff --git a/crypto/afsplit.c b/crypto/afsplit.c
index 825e2cff26..56a59386bb 100644
--- a/crypto/afsplit.c
+++ b/crypto/afsplit.c
@@ -44,7 +44,7 @@ static void qcrypto_afsplit_xor(size_t blocklen,
 static int qcrypto_afsplit_hash(QCryptoHashAlgorithm hash,
                                 size_t blocklen,
                                 uint8_t *block,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     size_t digestlen = qcrypto_hash_digest_len(hash);
 
@@ -92,7 +92,7 @@ int qcrypto_afsplit_encode(QCryptoHashAlgorithm hash,
                            uint32_t stripes,
                            const uint8_t *in,
                            uint8_t *out,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     uint8_t *block = g_new0(uint8_t, blocklen);
     size_t i;
@@ -129,7 +129,7 @@ int qcrypto_afsplit_decode(QCryptoHashAlgorithm hash,
                            uint32_t stripes,
                            const uint8_t *in,
                            uint8_t *out,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     uint8_t *block = g_new0(uint8_t, blocklen);
     size_t i;
diff --git a/crypto/block-luks.c b/crypto/block-luks.c
index 2b97d89a69..dd155ee42b 100644
--- a/crypto/block-luks.c
+++ b/crypto/block-luks.c
@@ -213,7 +213,7 @@ struct QCryptoBlockLUKS {
 static int qcrypto_block_luks_cipher_name_lookup(const char *name,
                                                  QCryptoCipherMode mode,
                                                  uint32_t key_bytes,
-                                                 Error **errp)
+                                                 Error *errp[static 1])
 {
     const QCryptoBlockLUKSCipherNameMap *map =
         qcrypto_block_luks_cipher_name_map;
@@ -242,7 +242,7 @@ static int qcrypto_block_luks_cipher_name_lookup(const char 
*name,
 
 static const char *
 qcrypto_block_luks_cipher_alg_lookup(QCryptoCipherAlgorithm alg,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     const QCryptoBlockLUKSCipherNameMap *map =
         qcrypto_block_luks_cipher_name_map;
@@ -267,7 +267,7 @@ static int qcrypto_block_luks_name_lookup(const char *name,
                                           const char *const *map,
                                           size_t maplen,
                                           const char *type,
-                                          Error **errp)
+                                          Error *errp[static 1])
 {
     size_t i;
     for (i = 0; i < maplen; i++) {
@@ -333,7 +333,7 @@ qcrypto_block_luks_has_format(const uint8_t *buf,
 static QCryptoCipherAlgorithm
 qcrypto_block_luks_essiv_cipher(QCryptoCipherAlgorithm cipher,
                                 QCryptoHashAlgorithm hash,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     size_t digestlen = qcrypto_hash_digest_len(hash);
     size_t keylen = qcrypto_cipher_get_key_len(cipher);
@@ -428,7 +428,7 @@ qcrypto_block_luks_load_key(QCryptoBlock *block,
                             size_t masterkeylen,
                             QCryptoBlockReadFunc readfunc,
                             void *opaque,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     QCryptoBlockLUKS *luks = block->opaque;
     uint8_t *splitkey;
@@ -593,7 +593,7 @@ qcrypto_block_luks_find_key(QCryptoBlock *block,
                             size_t *masterkeylen,
                             QCryptoBlockReadFunc readfunc,
                             void *opaque,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     QCryptoBlockLUKS *luks = block->opaque;
     size_t i;
@@ -641,7 +641,7 @@ qcrypto_block_luks_open(QCryptoBlock *block,
                         QCryptoBlockReadFunc readfunc,
                         void *opaque,
                         unsigned int flags,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     QCryptoBlockLUKS *luks;
     Error *local_err = NULL;
@@ -888,7 +888,7 @@ qcrypto_block_luks_create(QCryptoBlock *block,
                           QCryptoBlockInitFunc initfunc,
                           QCryptoBlockWriteFunc writefunc,
                           void *opaque,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     QCryptoBlockLUKS *luks;
     QCryptoBlockCreateOptionsLUKS luks_opts;
@@ -1348,7 +1348,7 @@ qcrypto_block_luks_create(QCryptoBlock *block,
 
 static int qcrypto_block_luks_get_info(QCryptoBlock *block,
                                        QCryptoBlockInfo *info,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     QCryptoBlockLUKS *luks = block->opaque;
     QCryptoBlockInfoLUKSSlot *slot;
@@ -1402,7 +1402,7 @@ qcrypto_block_luks_decrypt(QCryptoBlock *block,
                            uint64_t startsector,
                            uint8_t *buf,
                            size_t len,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     return qcrypto_block_decrypt_helper(block->cipher,
                                         block->niv, block->ivgen,
@@ -1416,7 +1416,7 @@ qcrypto_block_luks_encrypt(QCryptoBlock *block,
                            uint64_t startsector,
                            uint8_t *buf,
                            size_t len,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     return qcrypto_block_encrypt_helper(block->cipher,
                                         block->niv, block->ivgen,
diff --git a/crypto/block-qcow.c b/crypto/block-qcow.c
index be88c6f0ef..61b91cde53 100644
--- a/crypto/block-qcow.c
+++ b/crypto/block-qcow.c
@@ -44,7 +44,7 @@ qcrypto_block_qcow_has_format(const uint8_t *buf 
G_GNUC_UNUSED,
 static int
 qcrypto_block_qcow_init(QCryptoBlock *block,
                         const char *keysecret,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     char *password;
     int ret;
@@ -97,7 +97,7 @@ qcrypto_block_qcow_open(QCryptoBlock *block,
                         QCryptoBlockReadFunc readfunc G_GNUC_UNUSED,
                         void *opaque G_GNUC_UNUSED,
                         unsigned int flags,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     if (flags & QCRYPTO_BLOCK_OPEN_NO_IO) {
         return 0;
@@ -119,7 +119,7 @@ qcrypto_block_qcow_create(QCryptoBlock *block,
                           QCryptoBlockInitFunc initfunc G_GNUC_UNUSED,
                           QCryptoBlockWriteFunc writefunc G_GNUC_UNUSED,
                           void *opaque G_GNUC_UNUSED,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     if (!options->u.qcow.key_secret) {
         error_setg(errp, "Parameter 'key-secret' is required for cipher");
@@ -141,7 +141,7 @@ qcrypto_block_qcow_decrypt(QCryptoBlock *block,
                            uint64_t startsector,
                            uint8_t *buf,
                            size_t len,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     return qcrypto_block_decrypt_helper(block->cipher,
                                         block->niv, block->ivgen,
@@ -155,7 +155,7 @@ qcrypto_block_qcow_encrypt(QCryptoBlock *block,
                            uint64_t startsector,
                            uint8_t *buf,
                            size_t len,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     return qcrypto_block_encrypt_helper(block->cipher,
                                         block->niv, block->ivgen,
diff --git a/crypto/block.c b/crypto/block.c
index 64c8420425..f4fb725fd2 100644
--- a/crypto/block.c
+++ b/crypto/block.c
@@ -51,7 +51,7 @@ QCryptoBlock *qcrypto_block_open(QCryptoBlockOpenOptions 
*options,
                                  QCryptoBlockReadFunc readfunc,
                                  void *opaque,
                                  unsigned int flags,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     QCryptoBlock *block = g_new0(QCryptoBlock, 1);
 
@@ -81,7 +81,7 @@ QCryptoBlock *qcrypto_block_create(QCryptoBlockCreateOptions 
*options,
                                    QCryptoBlockInitFunc initfunc,
                                    QCryptoBlockWriteFunc writefunc,
                                    void *opaque,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     QCryptoBlock *block = g_new0(QCryptoBlock, 1);
 
@@ -108,7 +108,7 @@ QCryptoBlock 
*qcrypto_block_create(QCryptoBlockCreateOptions *options,
 
 
 QCryptoBlockInfo *qcrypto_block_get_info(QCryptoBlock *block,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     QCryptoBlockInfo *info = g_new0(QCryptoBlockInfo, 1);
 
@@ -128,7 +128,7 @@ int qcrypto_block_decrypt(QCryptoBlock *block,
                           uint64_t startsector,
                           uint8_t *buf,
                           size_t len,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     return block->driver->decrypt(block, startsector, buf, len, errp);
 }
@@ -138,7 +138,7 @@ int qcrypto_block_encrypt(QCryptoBlock *block,
                           uint64_t startsector,
                           uint8_t *buf,
                           size_t len,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     return block->driver->encrypt(block, startsector, buf, len, errp);
 }
@@ -189,7 +189,7 @@ int qcrypto_block_decrypt_helper(QCryptoCipher *cipher,
                                  uint64_t startsector,
                                  uint8_t *buf,
                                  size_t len,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     uint8_t *iv;
     int ret = -1;
@@ -238,7 +238,7 @@ int qcrypto_block_encrypt_helper(QCryptoCipher *cipher,
                                  uint64_t startsector,
                                  uint8_t *buf,
                                  size_t len,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     uint8_t *iv;
     int ret = -1;
diff --git a/crypto/cipher-builtin.c b/crypto/cipher-builtin.c
index b4bc2b9ca6..52cf847ea8 100644
--- a/crypto/cipher-builtin.c
+++ b/crypto/cipher-builtin.c
@@ -153,7 +153,7 @@ static int qcrypto_cipher_encrypt_aes(QCryptoCipher *cipher,
                                       const void *in,
                                       void *out,
                                       size_t len,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     QCryptoCipherBuiltin *ctxt = cipher->opaque;
 
@@ -187,7 +187,7 @@ static int qcrypto_cipher_decrypt_aes(QCryptoCipher *cipher,
                                       const void *in,
                                       void *out,
                                       size_t len,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     QCryptoCipherBuiltin *ctxt = cipher->opaque;
 
@@ -218,7 +218,7 @@ static int qcrypto_cipher_decrypt_aes(QCryptoCipher *cipher,
 
 static int qcrypto_cipher_setiv_aes(QCryptoCipher *cipher,
                                      const uint8_t *iv, size_t niv,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     QCryptoCipherBuiltin *ctxt = cipher->opaque;
     if (niv != AES_BLOCK_SIZE) {
@@ -237,7 +237,7 @@ static int qcrypto_cipher_setiv_aes(QCryptoCipher *cipher,
 
 static int qcrypto_cipher_init_aes(QCryptoCipher *cipher,
                                    const uint8_t *key, size_t nkey,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     QCryptoCipherBuiltin *ctxt;
 
@@ -315,7 +315,7 @@ static int qcrypto_cipher_encrypt_des_rfb(QCryptoCipher 
*cipher,
                                           const void *in,
                                           void *out,
                                           size_t len,
-                                          Error **errp)
+                                          Error *errp[static 1])
 {
     QCryptoCipherBuiltin *ctxt = cipher->opaque;
     size_t i;
@@ -340,7 +340,7 @@ static int qcrypto_cipher_decrypt_des_rfb(QCryptoCipher 
*cipher,
                                           const void *in,
                                           void *out,
                                           size_t len,
-                                          Error **errp)
+                                          Error *errp[static 1])
 {
     QCryptoCipherBuiltin *ctxt = cipher->opaque;
     size_t i;
@@ -363,7 +363,7 @@ static int qcrypto_cipher_decrypt_des_rfb(QCryptoCipher 
*cipher,
 
 static int qcrypto_cipher_setiv_des_rfb(QCryptoCipher *cipher,
                                         const uint8_t *iv, size_t niv,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     error_setg(errp, "Setting IV is not supported");
     return -1;
@@ -372,7 +372,7 @@ static int qcrypto_cipher_setiv_des_rfb(QCryptoCipher 
*cipher,
 
 static int qcrypto_cipher_init_des_rfb(QCryptoCipher *cipher,
                                        const uint8_t *key, size_t nkey,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     QCryptoCipherBuiltin *ctxt;
 
@@ -429,7 +429,7 @@ bool qcrypto_cipher_supports(QCryptoCipherAlgorithm alg,
 QCryptoCipher *qcrypto_cipher_new(QCryptoCipherAlgorithm alg,
                                   QCryptoCipherMode mode,
                                   const uint8_t *key, size_t nkey,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     QCryptoCipher *cipher;
 
@@ -497,7 +497,7 @@ int qcrypto_cipher_encrypt(QCryptoCipher *cipher,
                            const void *in,
                            void *out,
                            size_t len,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     QCryptoCipherBuiltin *ctxt = cipher->opaque;
 
@@ -515,7 +515,7 @@ int qcrypto_cipher_decrypt(QCryptoCipher *cipher,
                            const void *in,
                            void *out,
                            size_t len,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     QCryptoCipherBuiltin *ctxt = cipher->opaque;
 
@@ -531,7 +531,7 @@ int qcrypto_cipher_decrypt(QCryptoCipher *cipher,
 
 int qcrypto_cipher_setiv(QCryptoCipher *cipher,
                          const uint8_t *iv, size_t niv,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     QCryptoCipherBuiltin *ctxt = cipher->opaque;
 
diff --git a/crypto/cipher-gcrypt.c b/crypto/cipher-gcrypt.c
index 6487ecaf37..10eccc50e4 100644
--- a/crypto/cipher-gcrypt.c
+++ b/crypto/cipher-gcrypt.c
@@ -67,7 +67,7 @@ struct QCryptoCipherGcrypt {
 QCryptoCipher *qcrypto_cipher_new(QCryptoCipherAlgorithm alg,
                                   QCryptoCipherMode mode,
                                   const uint8_t *key, size_t nkey,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     QCryptoCipher *cipher;
     QCryptoCipherGcrypt *ctx;
@@ -279,7 +279,7 @@ int qcrypto_cipher_encrypt(QCryptoCipher *cipher,
                            const void *in,
                            void *out,
                            size_t len,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     QCryptoCipherGcrypt *ctx = cipher->opaque;
     gcry_error_t err;
@@ -314,7 +314,7 @@ int qcrypto_cipher_decrypt(QCryptoCipher *cipher,
                            const void *in,
                            void *out,
                            size_t len,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     QCryptoCipherGcrypt *ctx = cipher->opaque;
     gcry_error_t err;
@@ -346,7 +346,7 @@ int qcrypto_cipher_decrypt(QCryptoCipher *cipher,
 
 int qcrypto_cipher_setiv(QCryptoCipher *cipher,
                          const uint8_t *iv, size_t niv,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     QCryptoCipherGcrypt *ctx = cipher->opaque;
     gcry_error_t err;
diff --git a/crypto/cipher-nettle.c b/crypto/cipher-nettle.c
index dfc9030227..44a230fcd4 100644
--- a/crypto/cipher-nettle.c
+++ b/crypto/cipher-nettle.c
@@ -252,7 +252,7 @@ bool qcrypto_cipher_supports(QCryptoCipherAlgorithm alg,
 QCryptoCipher *qcrypto_cipher_new(QCryptoCipherAlgorithm alg,
                                   QCryptoCipherMode mode,
                                   const uint8_t *key, size_t nkey,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     QCryptoCipher *cipher;
     QCryptoCipherNettle *ctx;
@@ -452,7 +452,7 @@ int qcrypto_cipher_encrypt(QCryptoCipher *cipher,
                            const void *in,
                            void *out,
                            size_t len,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     QCryptoCipherNettle *ctx = cipher->opaque;
 
@@ -498,7 +498,7 @@ int qcrypto_cipher_decrypt(QCryptoCipher *cipher,
                            const void *in,
                            void *out,
                            size_t len,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     QCryptoCipherNettle *ctx = cipher->opaque;
 
@@ -540,7 +540,7 @@ int qcrypto_cipher_decrypt(QCryptoCipher *cipher,
 
 int qcrypto_cipher_setiv(QCryptoCipher *cipher,
                          const uint8_t *iv, size_t niv,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     QCryptoCipherNettle *ctx = cipher->opaque;
     if (niv != ctx->blocksize) {
diff --git a/crypto/cipher.c b/crypto/cipher.c
index 5a9648942f..1862c267e9 100644
--- a/crypto/cipher.c
+++ b/crypto/cipher.c
@@ -96,7 +96,7 @@ static bool
 qcrypto_cipher_validate_key_length(QCryptoCipherAlgorithm alg,
                                    QCryptoCipherMode mode,
                                    size_t nkey,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     if ((unsigned)alg >= QCRYPTO_CIPHER_ALG__MAX) {
         error_setg(errp, "Cipher algorithm %d out of range",
diff --git a/crypto/hash-gcrypt.c b/crypto/hash-gcrypt.c
index 7690690f70..d1916bd828 100644
--- a/crypto/hash-gcrypt.c
+++ b/crypto/hash-gcrypt.c
@@ -49,7 +49,7 @@ int qcrypto_hash_bytesv(QCryptoHashAlgorithm alg,
                         size_t niov,
                         uint8_t **result,
                         size_t *resultlen,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     int i, ret;
     gcry_md_hd_t md;
diff --git a/crypto/hash-glib.c b/crypto/hash-glib.c
index ec99ac9df9..5ca293b3de 100644
--- a/crypto/hash-glib.c
+++ b/crypto/hash-glib.c
@@ -52,7 +52,7 @@ int qcrypto_hash_bytesv(QCryptoHashAlgorithm alg,
                         size_t niov,
                         uint8_t **result,
                         size_t *resultlen,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     int i, ret;
     GChecksum *cs;
diff --git a/crypto/hash-nettle.c b/crypto/hash-nettle.c
index 6a206dcb18..4c13f463fd 100644
--- a/crypto/hash-nettle.c
+++ b/crypto/hash-nettle.c
@@ -108,7 +108,7 @@ int qcrypto_hash_bytesv(QCryptoHashAlgorithm alg,
                         size_t niov,
                         uint8_t **result,
                         size_t *resultlen,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     int i;
     union qcrypto_hash_ctx ctx;
diff --git a/crypto/hash.c b/crypto/hash.c
index 0f1ceac66a..a2f5c42295 100644
--- a/crypto/hash.c
+++ b/crypto/hash.c
@@ -44,7 +44,7 @@ int qcrypto_hash_bytes(QCryptoHashAlgorithm alg,
                        size_t len,
                        uint8_t **result,
                        size_t *resultlen,
-                       Error **errp)
+                       Error *errp[static 1])
 {
     struct iovec iov = { .iov_base = (char *)buf,
                          .iov_len = len };
@@ -57,7 +57,7 @@ int qcrypto_hash_digestv(QCryptoHashAlgorithm alg,
                          const struct iovec *iov,
                          size_t niov,
                          char **digest,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     uint8_t *result = NULL;
     size_t resultlen = 0;
@@ -81,7 +81,7 @@ int qcrypto_hash_digest(QCryptoHashAlgorithm alg,
                         const char *buf,
                         size_t len,
                         char **digest,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     struct iovec iov = { .iov_base = (char *)buf, .iov_len = len };
 
@@ -92,7 +92,7 @@ int qcrypto_hash_base64v(QCryptoHashAlgorithm alg,
                          const struct iovec *iov,
                          size_t niov,
                          char **base64,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     uint8_t *result = NULL;
     size_t resultlen = 0;
@@ -110,7 +110,7 @@ int qcrypto_hash_base64(QCryptoHashAlgorithm alg,
                         const char *buf,
                         size_t len,
                         char **base64,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     struct iovec iov = { .iov_base = (char *)buf, .iov_len = len };
 
diff --git a/crypto/hmac-gcrypt.c b/crypto/hmac-gcrypt.c
index 21189e694f..d0c7e8dece 100644
--- a/crypto/hmac-gcrypt.c
+++ b/crypto/hmac-gcrypt.c
@@ -44,7 +44,7 @@ bool qcrypto_hmac_supports(QCryptoHashAlgorithm alg)
 
 QCryptoHmac *qcrypto_hmac_new(QCryptoHashAlgorithm alg,
                               const uint8_t *key, size_t nkey,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     QCryptoHmac *hmac;
     QCryptoHmacGcrypt *ctx;
@@ -105,7 +105,7 @@ int qcrypto_hmac_bytesv(QCryptoHmac *hmac,
                         size_t niov,
                         uint8_t **result,
                         size_t *resultlen,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     QCryptoHmacGcrypt *ctx;
     gcry_error_t err;
diff --git a/crypto/hmac-glib.c b/crypto/hmac-glib.c
index 08a1fdd10a..38f69dfd5b 100644
--- a/crypto/hmac-glib.c
+++ b/crypto/hmac-glib.c
@@ -51,7 +51,7 @@ bool qcrypto_hmac_supports(QCryptoHashAlgorithm alg)
 
 QCryptoHmac *qcrypto_hmac_new(QCryptoHashAlgorithm alg,
                               const uint8_t *key, size_t nkey,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     QCryptoHmac *hmac;
     QCryptoHmacGlib *ctx;
@@ -103,7 +103,7 @@ int qcrypto_hmac_bytesv(QCryptoHmac *hmac,
                         size_t niov,
                         uint8_t **result,
                         size_t *resultlen,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     QCryptoHmacGlib *ctx;
     int i, ret;
@@ -143,7 +143,7 @@ bool qcrypto_hmac_supports(QCryptoHashAlgorithm alg)
 
 QCryptoHmac *qcrypto_hmac_new(QCryptoHashAlgorithm alg,
                               const uint8_t *key, size_t nkey,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     return NULL;
 }
@@ -158,7 +158,7 @@ int qcrypto_hmac_bytesv(QCryptoHmac *hmac,
                         size_t niov,
                         uint8_t **result,
                         size_t *resultlen,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     return -1;
 }
diff --git a/crypto/hmac-nettle.c b/crypto/hmac-nettle.c
index 4a9e6b2c7d..ac8b8ca30d 100644
--- a/crypto/hmac-nettle.c
+++ b/crypto/hmac-nettle.c
@@ -99,7 +99,7 @@ bool qcrypto_hmac_supports(QCryptoHashAlgorithm alg)
 
 QCryptoHmac *qcrypto_hmac_new(QCryptoHashAlgorithm alg,
                               const uint8_t *key, size_t nkey,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     QCryptoHmac *hmac;
     QCryptoHmacNettle *ctx;
@@ -141,7 +141,7 @@ int qcrypto_hmac_bytesv(QCryptoHmac *hmac,
                         size_t niov,
                         uint8_t **result,
                         size_t *resultlen,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     QCryptoHmacNettle *ctx;
     int i;
diff --git a/crypto/hmac.c b/crypto/hmac.c
index 5750405cfb..046b8c616c 100644
--- a/crypto/hmac.c
+++ b/crypto/hmac.c
@@ -20,7 +20,7 @@ int qcrypto_hmac_bytes(QCryptoHmac *hmac,
                        size_t len,
                        uint8_t **result,
                        size_t *resultlen,
-                       Error **errp)
+                       Error *errp[static 1])
 {
     struct iovec iov = {
             .iov_base = (char *)buf,
@@ -34,7 +34,7 @@ int qcrypto_hmac_digestv(QCryptoHmac *hmac,
                          const struct iovec *iov,
                          size_t niov,
                          char **digest,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     uint8_t *result = NULL;
     size_t resultlen = 0;
@@ -61,7 +61,7 @@ int qcrypto_hmac_digest(QCryptoHmac *hmac,
                         const char *buf,
                         size_t len,
                         char **digest,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     struct iovec iov = {
             .iov_base = (char *)buf,
diff --git a/crypto/init.c b/crypto/init.c
index f131c42306..574dc29e57 100644
--- a/crypto/init.c
+++ b/crypto/init.c
@@ -119,7 +119,7 @@ static struct gcry_thread_cbs qcrypto_gcrypt_thread_impl = {
 };
 #endif /* QCRYPTO_INIT_GCRYPT */
 
-int qcrypto_init(Error **errp)
+int qcrypto_init(Error *errp[static 1])
 {
 #ifdef QCRYPTO_INIT_GCRYPT_THREADS
     gcry_control(GCRYCTL_SET_THREAD_CBS, &qcrypto_gcrypt_thread_impl);
diff --git a/crypto/ivgen-essiv.c b/crypto/ivgen-essiv.c
index cba20bde6c..08817038b8 100644
--- a/crypto/ivgen-essiv.c
+++ b/crypto/ivgen-essiv.c
@@ -30,7 +30,7 @@ struct QCryptoIVGenESSIV {
 
 static int qcrypto_ivgen_essiv_init(QCryptoIVGen *ivgen,
                                     const uint8_t *key, size_t nkey,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     uint8_t *salt;
     size_t nhash;
@@ -72,7 +72,7 @@ static int qcrypto_ivgen_essiv_init(QCryptoIVGen *ivgen,
 static int qcrypto_ivgen_essiv_calculate(QCryptoIVGen *ivgen,
                                          uint64_t sector,
                                          uint8_t *iv, size_t niv,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     QCryptoIVGenESSIV *essiv = ivgen->private;
     size_t ndata = qcrypto_cipher_get_block_len(ivgen->cipher);
diff --git a/crypto/ivgen-plain.c b/crypto/ivgen-plain.c
index 9b9b4ad0bf..786b7897ba 100644
--- a/crypto/ivgen-plain.c
+++ b/crypto/ivgen-plain.c
@@ -25,7 +25,7 @@
 
 static int qcrypto_ivgen_plain_init(QCryptoIVGen *ivgen,
                                     const uint8_t *key, size_t nkey,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     return 0;
 }
@@ -33,7 +33,7 @@ static int qcrypto_ivgen_plain_init(QCryptoIVGen *ivgen,
 static int qcrypto_ivgen_plain_calculate(QCryptoIVGen *ivgen,
                                          uint64_t sector,
                                          uint8_t *iv, size_t niv,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     size_t ivprefix;
     uint32_t shortsector = cpu_to_le32((sector & 0xffffffff));
diff --git a/crypto/ivgen-plain64.c b/crypto/ivgen-plain64.c
index 6c6b1b44c3..73d60c1e86 100644
--- a/crypto/ivgen-plain64.c
+++ b/crypto/ivgen-plain64.c
@@ -25,7 +25,7 @@
 
 static int qcrypto_ivgen_plain_init(QCryptoIVGen *ivgen,
                                     const uint8_t *key, size_t nkey,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     return 0;
 }
@@ -33,7 +33,7 @@ static int qcrypto_ivgen_plain_init(QCryptoIVGen *ivgen,
 static int qcrypto_ivgen_plain_calculate(QCryptoIVGen *ivgen,
                                          uint64_t sector,
                                          uint8_t *iv, size_t niv,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     size_t ivprefix;
     ivprefix = sizeof(sector);
diff --git a/crypto/ivgen.c b/crypto/ivgen.c
index f66435112b..a5c667350e 100644
--- a/crypto/ivgen.c
+++ b/crypto/ivgen.c
@@ -31,7 +31,7 @@ QCryptoIVGen *qcrypto_ivgen_new(QCryptoIVGenAlgorithm alg,
                                 QCryptoCipherAlgorithm cipheralg,
                                 QCryptoHashAlgorithm hash,
                                 const uint8_t *key, size_t nkey,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     QCryptoIVGen *ivgen = g_new0(QCryptoIVGen, 1);
 
@@ -67,7 +67,7 @@ QCryptoIVGen *qcrypto_ivgen_new(QCryptoIVGenAlgorithm alg,
 int qcrypto_ivgen_calculate(QCryptoIVGen *ivgen,
                             uint64_t sector,
                             uint8_t *iv, size_t niv,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     return ivgen->driver->calculate(ivgen, sector, iv, niv, errp);
 }
diff --git a/crypto/pbkdf-gcrypt.c b/crypto/pbkdf-gcrypt.c
index 40289858bf..6bff786350 100644
--- a/crypto/pbkdf-gcrypt.c
+++ b/crypto/pbkdf-gcrypt.c
@@ -44,7 +44,7 @@ int qcrypto_pbkdf2(QCryptoHashAlgorithm hash,
                    const uint8_t *salt, size_t nsalt,
                    uint64_t iterations,
                    uint8_t *out, size_t nout,
-                   Error **errp)
+                   Error *errp[static 1])
 {
     static const int hash_map[QCRYPTO_HASH_ALG__MAX] = {
         [QCRYPTO_HASH_ALG_MD5] = GCRY_MD_MD5,
diff --git a/crypto/pbkdf-nettle.c b/crypto/pbkdf-nettle.c
index 6fb2671656..5c52dec87d 100644
--- a/crypto/pbkdf-nettle.c
+++ b/crypto/pbkdf-nettle.c
@@ -45,7 +45,7 @@ int qcrypto_pbkdf2(QCryptoHashAlgorithm hash,
                    const uint8_t *salt, size_t nsalt,
                    uint64_t iterations,
                    uint8_t *out, size_t nout,
-                   Error **errp)
+                   Error *errp[static 1])
 {
     union {
         struct hmac_md5_ctx md5;
diff --git a/crypto/pbkdf-stub.c b/crypto/pbkdf-stub.c
index a15044da42..7adbaa3e79 100644
--- a/crypto/pbkdf-stub.c
+++ b/crypto/pbkdf-stub.c
@@ -35,7 +35,7 @@ int qcrypto_pbkdf2(QCryptoHashAlgorithm hash G_GNUC_UNUSED,
                    uint64_t iterations G_GNUC_UNUSED,
                    uint8_t *out G_GNUC_UNUSED,
                    size_t nout G_GNUC_UNUSED,
-                   Error **errp)
+                   Error *errp[static 1])
 {
     error_setg_errno(errp, ENOSYS,
                      "No crypto library supporting PBKDF in this build");
diff --git a/crypto/pbkdf.c b/crypto/pbkdf.c
index f22e71d183..964215eb2c 100644
--- a/crypto/pbkdf.c
+++ b/crypto/pbkdf.c
@@ -27,7 +27,7 @@
 
 
 static int qcrypto_pbkdf2_get_thread_cpu(unsigned long long *val_ms,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
 #ifdef _WIN32
     FILETIME creation_time, exit_time, kernel_time, user_time;
@@ -66,7 +66,7 @@ uint64_t qcrypto_pbkdf2_count_iters(QCryptoHashAlgorithm hash,
                                     const uint8_t *key, size_t nkey,
                                     const uint8_t *salt, size_t nsalt,
                                     size_t nout,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     uint64_t ret = -1;
     uint8_t *out;
diff --git a/crypto/random-gcrypt.c b/crypto/random-gcrypt.c
index 9f1c9ee60e..b1ecceef61 100644
--- a/crypto/random-gcrypt.c
+++ b/crypto/random-gcrypt.c
@@ -26,10 +26,10 @@
 
 int qcrypto_random_bytes(uint8_t *buf,
                          size_t buflen,
-                         Error **errp G_GNUC_UNUSED)
+                         Error *errp[static 1] G_GNUC_UNUSED)
 {
     gcry_randomize(buf, buflen, GCRY_STRONG_RANDOM);
     return 0;
 }
 
-int qcrypto_random_init(Error **errp G_GNUC_UNUSED) { return 0; }
+int qcrypto_random_init(Error *errp[static 1] G_GNUC_UNUSED) { return 0; }
diff --git a/crypto/random-gnutls.c b/crypto/random-gnutls.c
index 5350003a0b..ef740ddaeb 100644
--- a/crypto/random-gnutls.c
+++ b/crypto/random-gnutls.c
@@ -27,7 +27,7 @@
 
 int qcrypto_random_bytes(uint8_t *buf,
                          size_t buflen,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     int ret;
 
@@ -43,4 +43,4 @@ int qcrypto_random_bytes(uint8_t *buf,
 }
 
 
-int qcrypto_random_init(Error **errp G_GNUC_UNUSED) { return 0; }
+int qcrypto_random_init(Error *errp[static 1] G_GNUC_UNUSED) { return 0; }
diff --git a/crypto/random-platform.c b/crypto/random-platform.c
index 92eed0ee78..e53d0dcf89 100644
--- a/crypto/random-platform.c
+++ b/crypto/random-platform.c
@@ -29,7 +29,7 @@ static HCRYPTPROV hCryptProv;
 static int fd; /* a file handle to either /dev/urandom or /dev/random */
 #endif
 
-int qcrypto_random_init(Error **errp)
+int qcrypto_random_init(Error *errp[static 1])
 {
 #ifndef _WIN32
     /* TBD perhaps also add support for BSD getentropy / Linux
@@ -57,7 +57,7 @@ int qcrypto_random_init(Error **errp)
 
 int qcrypto_random_bytes(uint8_t *buf G_GNUC_UNUSED,
                          size_t buflen G_GNUC_UNUSED,
-                         Error **errp)
+                         Error *errp[static 1])
 {
 #ifndef _WIN32
     int ret = -1;
diff --git a/crypto/secret.c b/crypto/secret.c
index e5631b9dd2..3e86b18663 100644
--- a/crypto/secret.c
+++ b/crypto/secret.c
@@ -31,7 +31,7 @@ static void
 qcrypto_secret_load_data(QCryptoSecret *secret,
                          uint8_t **output,
                          size_t *outputlen,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     char *data = NULL;
     size_t length = 0;
@@ -69,7 +69,7 @@ static void qcrypto_secret_decrypt(QCryptoSecret *secret,
                                    size_t inputlen,
                                    uint8_t **output,
                                    size_t *outputlen,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     uint8_t *key = NULL, *ciphertext = NULL, *iv = NULL;
     size_t keylen, ciphertextlen, ivlen;
@@ -170,7 +170,7 @@ static void qcrypto_secret_decode(const uint8_t *input,
                                   size_t inputlen,
                                   uint8_t **output,
                                   size_t *outputlen,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     *output = qbase64_decode((const gchar*)input,
                              inputlen,
@@ -182,7 +182,7 @@ static void qcrypto_secret_decode(const uint8_t *input,
 static void
 qcrypto_secret_prop_set_loaded(Object *obj,
                                bool value,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     QCryptoSecret *secret = QCRYPTO_SECRET(obj);
 
@@ -234,7 +234,7 @@ qcrypto_secret_prop_set_loaded(Object *obj,
 
 static bool
 qcrypto_secret_prop_get_loaded(Object *obj,
-                               Error **errp G_GNUC_UNUSED)
+                               Error *errp[static 1] G_GNUC_UNUSED)
 {
     QCryptoSecret *secret = QCRYPTO_SECRET(obj);
     return secret->data != NULL;
@@ -244,7 +244,7 @@ qcrypto_secret_prop_get_loaded(Object *obj,
 static void
 qcrypto_secret_prop_set_format(Object *obj,
                                int value,
-                               Error **errp G_GNUC_UNUSED)
+                               Error *errp[static 1] G_GNUC_UNUSED)
 {
     QCryptoSecret *creds = QCRYPTO_SECRET(obj);
 
@@ -254,7 +254,7 @@ qcrypto_secret_prop_set_format(Object *obj,
 
 static int
 qcrypto_secret_prop_get_format(Object *obj,
-                               Error **errp G_GNUC_UNUSED)
+                               Error *errp[static 1] G_GNUC_UNUSED)
 {
     QCryptoSecret *creds = QCRYPTO_SECRET(obj);
 
@@ -265,7 +265,7 @@ qcrypto_secret_prop_get_format(Object *obj,
 static void
 qcrypto_secret_prop_set_data(Object *obj,
                              const char *value,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     QCryptoSecret *secret = QCRYPTO_SECRET(obj);
 
@@ -276,7 +276,7 @@ qcrypto_secret_prop_set_data(Object *obj,
 
 static char *
 qcrypto_secret_prop_get_data(Object *obj,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     QCryptoSecret *secret = QCRYPTO_SECRET(obj);
     return g_strdup(secret->data);
@@ -286,7 +286,7 @@ qcrypto_secret_prop_get_data(Object *obj,
 static void
 qcrypto_secret_prop_set_file(Object *obj,
                              const char *value,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     QCryptoSecret *secret = QCRYPTO_SECRET(obj);
 
@@ -297,7 +297,7 @@ qcrypto_secret_prop_set_file(Object *obj,
 
 static char *
 qcrypto_secret_prop_get_file(Object *obj,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     QCryptoSecret *secret = QCRYPTO_SECRET(obj);
     return g_strdup(secret->file);
@@ -307,7 +307,7 @@ qcrypto_secret_prop_get_file(Object *obj,
 static void
 qcrypto_secret_prop_set_iv(Object *obj,
                            const char *value,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     QCryptoSecret *secret = QCRYPTO_SECRET(obj);
 
@@ -318,7 +318,7 @@ qcrypto_secret_prop_set_iv(Object *obj,
 
 static char *
 qcrypto_secret_prop_get_iv(Object *obj,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     QCryptoSecret *secret = QCRYPTO_SECRET(obj);
     return g_strdup(secret->iv);
@@ -328,7 +328,7 @@ qcrypto_secret_prop_get_iv(Object *obj,
 static void
 qcrypto_secret_prop_set_keyid(Object *obj,
                               const char *value,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     QCryptoSecret *secret = QCRYPTO_SECRET(obj);
 
@@ -339,7 +339,7 @@ qcrypto_secret_prop_set_keyid(Object *obj,
 
 static char *
 qcrypto_secret_prop_get_keyid(Object *obj,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     QCryptoSecret *secret = QCRYPTO_SECRET(obj);
     return g_strdup(secret->keyid);
@@ -347,7 +347,7 @@ qcrypto_secret_prop_get_keyid(Object *obj,
 
 
 static void
-qcrypto_secret_complete(UserCreatable *uc, Error **errp)
+qcrypto_secret_complete(UserCreatable *uc, Error *errp[static 1])
 {
     object_property_set_bool(OBJECT(uc), true, "loaded", errp);
 }
@@ -404,7 +404,7 @@ qcrypto_secret_class_init(ObjectClass *oc, void *data)
 int qcrypto_secret_lookup(const char *secretid,
                           uint8_t **data,
                           size_t *datalen,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     Object *obj;
     QCryptoSecret *secret;
@@ -441,7 +441,7 @@ int qcrypto_secret_lookup(const char *secretid,
 
 
 char *qcrypto_secret_lookup_as_utf8(const char *secretid,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     uint8_t *data;
     size_t datalen;
@@ -466,7 +466,7 @@ char *qcrypto_secret_lookup_as_utf8(const char *secretid,
 
 
 char *qcrypto_secret_lookup_as_base64(const char *secretid,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     uint8_t *data;
     size_t datalen;
diff --git a/crypto/tlscreds.c b/crypto/tlscreds.c
index 21bd388769..55ee7af473 100644
--- a/crypto/tlscreds.c
+++ b/crypto/tlscreds.c
@@ -30,7 +30,7 @@ int
 qcrypto_tls_creds_get_dh_params_file(QCryptoTLSCreds *creds,
                                      const char *filename,
                                      gnutls_dh_params_t *dh_params,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     int ret;
 
@@ -96,7 +96,7 @@ qcrypto_tls_creds_get_path(QCryptoTLSCreds *creds,
                            const char *filename,
                            bool required,
                            char **cred,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     struct stat sb;
     int ret = -1;
@@ -139,7 +139,7 @@ qcrypto_tls_creds_get_path(QCryptoTLSCreds *creds,
 static void
 qcrypto_tls_creds_prop_set_verify(Object *obj,
                                   bool value,
-                                  Error **errp G_GNUC_UNUSED)
+                                  Error *errp[static 1] G_GNUC_UNUSED)
 {
     QCryptoTLSCreds *creds = QCRYPTO_TLS_CREDS(obj);
 
@@ -149,7 +149,7 @@ qcrypto_tls_creds_prop_set_verify(Object *obj,
 
 static bool
 qcrypto_tls_creds_prop_get_verify(Object *obj,
-                                  Error **errp G_GNUC_UNUSED)
+                                  Error *errp[static 1] G_GNUC_UNUSED)
 {
     QCryptoTLSCreds *creds = QCRYPTO_TLS_CREDS(obj);
 
@@ -160,7 +160,7 @@ qcrypto_tls_creds_prop_get_verify(Object *obj,
 static void
 qcrypto_tls_creds_prop_set_dir(Object *obj,
                                const char *value,
-                               Error **errp G_GNUC_UNUSED)
+                               Error *errp[static 1] G_GNUC_UNUSED)
 {
     QCryptoTLSCreds *creds = QCRYPTO_TLS_CREDS(obj);
 
@@ -170,7 +170,7 @@ qcrypto_tls_creds_prop_set_dir(Object *obj,
 
 static char *
 qcrypto_tls_creds_prop_get_dir(Object *obj,
-                               Error **errp G_GNUC_UNUSED)
+                               Error *errp[static 1] G_GNUC_UNUSED)
 {
     QCryptoTLSCreds *creds = QCRYPTO_TLS_CREDS(obj);
 
@@ -181,7 +181,7 @@ qcrypto_tls_creds_prop_get_dir(Object *obj,
 static void
 qcrypto_tls_creds_prop_set_priority(Object *obj,
                                     const char *value,
-                                    Error **errp G_GNUC_UNUSED)
+                                    Error *errp[static 1] G_GNUC_UNUSED)
 {
     QCryptoTLSCreds *creds = QCRYPTO_TLS_CREDS(obj);
 
@@ -191,7 +191,7 @@ qcrypto_tls_creds_prop_set_priority(Object *obj,
 
 static char *
 qcrypto_tls_creds_prop_get_priority(Object *obj,
-                                    Error **errp G_GNUC_UNUSED)
+                                    Error *errp[static 1] G_GNUC_UNUSED)
 {
     QCryptoTLSCreds *creds = QCRYPTO_TLS_CREDS(obj);
 
@@ -202,7 +202,7 @@ qcrypto_tls_creds_prop_get_priority(Object *obj,
 static void
 qcrypto_tls_creds_prop_set_endpoint(Object *obj,
                                     int value,
-                                    Error **errp G_GNUC_UNUSED)
+                                    Error *errp[static 1] G_GNUC_UNUSED)
 {
     QCryptoTLSCreds *creds = QCRYPTO_TLS_CREDS(obj);
 
@@ -212,7 +212,7 @@ qcrypto_tls_creds_prop_set_endpoint(Object *obj,
 
 static int
 qcrypto_tls_creds_prop_get_endpoint(Object *obj,
-                                    Error **errp G_GNUC_UNUSED)
+                                    Error *errp[static 1] G_GNUC_UNUSED)
 {
     QCryptoTLSCreds *creds = QCRYPTO_TLS_CREDS(obj);
 
diff --git a/crypto/tlscredsanon.c b/crypto/tlscredsanon.c
index ad6f331aca..9c33c3d8e5 100644
--- a/crypto/tlscredsanon.c
+++ b/crypto/tlscredsanon.c
@@ -31,7 +31,7 @@
 
 static int
 qcrypto_tls_creds_anon_load(QCryptoTLSCredsAnon *creds,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     char *dhparams = NULL;
     int ret;
@@ -103,7 +103,7 @@ qcrypto_tls_creds_anon_unload(QCryptoTLSCredsAnon *creds)
 
 static void
 qcrypto_tls_creds_anon_load(QCryptoTLSCredsAnon *creds G_GNUC_UNUSED,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     error_setg(errp, "TLS credentials support requires GNUTLS");
 }
@@ -122,7 +122,7 @@ qcrypto_tls_creds_anon_unload(QCryptoTLSCredsAnon *creds 
G_GNUC_UNUSED)
 static void
 qcrypto_tls_creds_anon_prop_set_loaded(Object *obj,
                                        bool value,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     QCryptoTLSCredsAnon *creds = QCRYPTO_TLS_CREDS_ANON(obj);
 
@@ -139,7 +139,7 @@ qcrypto_tls_creds_anon_prop_set_loaded(Object *obj,
 
 static bool
 qcrypto_tls_creds_anon_prop_get_loaded(Object *obj,
-                                       Error **errp G_GNUC_UNUSED)
+                                       Error *errp[static 1] G_GNUC_UNUSED)
 {
     QCryptoTLSCredsAnon *creds = QCRYPTO_TLS_CREDS_ANON(obj);
 
@@ -156,7 +156,7 @@ qcrypto_tls_creds_anon_prop_get_loaded(Object *obj,
 
 static bool
 qcrypto_tls_creds_anon_prop_get_loaded(Object *obj G_GNUC_UNUSED,
-                                       Error **errp G_GNUC_UNUSED)
+                                       Error *errp[static 1] G_GNUC_UNUSED)
 {
     return false;
 }
@@ -166,7 +166,7 @@ qcrypto_tls_creds_anon_prop_get_loaded(Object *obj 
G_GNUC_UNUSED,
 
 
 static void
-qcrypto_tls_creds_anon_complete(UserCreatable *uc, Error **errp)
+qcrypto_tls_creds_anon_complete(UserCreatable *uc, Error *errp[static 1])
 {
     object_property_set_bool(OBJECT(uc), true, "loaded", errp);
 }
diff --git a/crypto/tlscredsx509.c b/crypto/tlscredsx509.c
index f4dc85cb75..b310660508 100644
--- a/crypto/tlscredsx509.c
+++ b/crypto/tlscredsx509.c
@@ -37,7 +37,7 @@ qcrypto_tls_creds_check_cert_times(gnutls_x509_crt_t cert,
                                    const char *certFile,
                                    bool isServer,
                                    bool isCA,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     time_t now = time(NULL);
 
@@ -86,7 +86,7 @@ 
qcrypto_tls_creds_check_cert_basic_constraints(QCryptoTLSCredsX509 *creds,
                                                const char *certFile,
                                                bool isServer,
                                                bool isCA,
-                                               Error **errp)
+                                               Error *errp[static 1])
 {
     int status;
 
@@ -138,7 +138,7 @@ qcrypto_tls_creds_check_cert_key_usage(QCryptoTLSCredsX509 
*creds,
                                        gnutls_x509_crt_t cert,
                                        const char *certFile,
                                        bool isCA,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     int status;
     unsigned int usage = 0;
@@ -197,7 +197,7 @@ 
qcrypto_tls_creds_check_cert_key_purpose(QCryptoTLSCredsX509 *creds,
                                          gnutls_x509_crt_t cert,
                                          const char *certFile,
                                          bool isServer,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     int status;
     size_t i;
@@ -291,7 +291,7 @@ qcrypto_tls_creds_check_cert(QCryptoTLSCredsX509 *creds,
                              const char *certFile,
                              bool isServer,
                              bool isCA,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     if (qcrypto_tls_creds_check_cert_times(cert, certFile,
                                            isServer, isCA,
@@ -332,7 +332,7 @@ qcrypto_tls_creds_check_cert_pair(gnutls_x509_crt_t cert,
                                   size_t ncacerts,
                                   const char *cacertFile,
                                   bool isServer,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     unsigned int status;
 
@@ -384,7 +384,7 @@ static gnutls_x509_crt_t
 qcrypto_tls_creds_load_cert(QCryptoTLSCredsX509 *creds,
                             const char *certFile,
                             bool isServer,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     gnutls_datum_t data;
     gnutls_x509_crt_t cert = NULL;
@@ -441,7 +441,7 @@ qcrypto_tls_creds_load_ca_cert_list(QCryptoTLSCredsX509 
*creds,
                                     gnutls_x509_crt_t *certs,
                                     unsigned int certMax,
                                     size_t *ncerts,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     gnutls_datum_t data;
     char *buf = NULL;
@@ -485,7 +485,7 @@ qcrypto_tls_creds_x509_sanity_check(QCryptoTLSCredsX509 
*creds,
                                     bool isServer,
                                     const char *cacertFile,
                                     const char *certFile,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     gnutls_x509_crt_t cert = NULL;
     gnutls_x509_crt_t cacerts[MAX_CERTS];
@@ -549,7 +549,7 @@ qcrypto_tls_creds_x509_sanity_check(QCryptoTLSCredsX509 
*creds,
 
 static int
 qcrypto_tls_creds_x509_load(QCryptoTLSCredsX509 *creds,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     char *cacert = NULL, *cacrl = NULL, *cert = NULL,
         *key = NULL, *dhparams = NULL;
@@ -697,7 +697,7 @@ qcrypto_tls_creds_x509_unload(QCryptoTLSCredsX509 *creds)
 
 static void
 qcrypto_tls_creds_x509_load(QCryptoTLSCredsX509 *creds G_GNUC_UNUSED,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     error_setg(errp, "TLS credentials support requires GNUTLS");
 }
@@ -716,7 +716,7 @@ qcrypto_tls_creds_x509_unload(QCryptoTLSCredsX509 *creds 
G_GNUC_UNUSED)
 static void
 qcrypto_tls_creds_x509_prop_set_loaded(Object *obj,
                                        bool value,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     QCryptoTLSCredsX509 *creds = QCRYPTO_TLS_CREDS_X509(obj);
 
@@ -733,7 +733,7 @@ qcrypto_tls_creds_x509_prop_set_loaded(Object *obj,
 
 static bool
 qcrypto_tls_creds_x509_prop_get_loaded(Object *obj,
-                                       Error **errp G_GNUC_UNUSED)
+                                       Error *errp[static 1] G_GNUC_UNUSED)
 {
     QCryptoTLSCredsX509 *creds = QCRYPTO_TLS_CREDS_X509(obj);
 
@@ -746,7 +746,7 @@ qcrypto_tls_creds_x509_prop_get_loaded(Object *obj,
 
 static bool
 qcrypto_tls_creds_x509_prop_get_loaded(Object *obj G_GNUC_UNUSED,
-                                       Error **errp G_GNUC_UNUSED)
+                                       Error *errp[static 1] G_GNUC_UNUSED)
 {
     return false;
 }
@@ -758,7 +758,7 @@ qcrypto_tls_creds_x509_prop_get_loaded(Object *obj 
G_GNUC_UNUSED,
 static void
 qcrypto_tls_creds_x509_prop_set_sanity(Object *obj,
                                        bool value,
-                                       Error **errp G_GNUC_UNUSED)
+                                       Error *errp[static 1] G_GNUC_UNUSED)
 {
     QCryptoTLSCredsX509 *creds = QCRYPTO_TLS_CREDS_X509(obj);
 
@@ -769,7 +769,7 @@ qcrypto_tls_creds_x509_prop_set_sanity(Object *obj,
 static void
 qcrypto_tls_creds_x509_prop_set_passwordid(Object *obj,
                                            const char *value,
-                                           Error **errp G_GNUC_UNUSED)
+                                           Error *errp[static 1] G_GNUC_UNUSED)
 {
     QCryptoTLSCredsX509 *creds = QCRYPTO_TLS_CREDS_X509(obj);
 
@@ -779,7 +779,7 @@ qcrypto_tls_creds_x509_prop_set_passwordid(Object *obj,
 
 static char *
 qcrypto_tls_creds_x509_prop_get_passwordid(Object *obj,
-                                           Error **errp G_GNUC_UNUSED)
+                                           Error *errp[static 1] G_GNUC_UNUSED)
 {
     QCryptoTLSCredsX509 *creds = QCRYPTO_TLS_CREDS_X509(obj);
 
@@ -789,7 +789,7 @@ qcrypto_tls_creds_x509_prop_get_passwordid(Object *obj,
 
 static bool
 qcrypto_tls_creds_x509_prop_get_sanity(Object *obj,
-                                       Error **errp G_GNUC_UNUSED)
+                                       Error *errp[static 1] G_GNUC_UNUSED)
 {
     QCryptoTLSCredsX509 *creds = QCRYPTO_TLS_CREDS_X509(obj);
 
@@ -798,7 +798,7 @@ qcrypto_tls_creds_x509_prop_get_sanity(Object *obj,
 
 
 static void
-qcrypto_tls_creds_x509_complete(UserCreatable *uc, Error **errp)
+qcrypto_tls_creds_x509_complete(UserCreatable *uc, Error *errp[static 1])
 {
     object_property_set_bool(OBJECT(uc), true, "loaded", errp);
 }
diff --git a/crypto/tlssession.c b/crypto/tlssession.c
index 96a02deb69..a32d831870 100644
--- a/crypto/tlssession.c
+++ b/crypto/tlssession.c
@@ -94,7 +94,7 @@ qcrypto_tls_session_new(QCryptoTLSCreds *creds,
                         const char *hostname,
                         const char *aclname,
                         QCryptoTLSCredsEndpoint endpoint,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     QCryptoTLSSession *session;
     int ret;
@@ -212,7 +212,7 @@ qcrypto_tls_session_new(QCryptoTLSCreds *creds,
 
 static int
 qcrypto_tls_session_check_certificate(QCryptoTLSSession *session,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     int ret;
     unsigned int status;
@@ -347,7 +347,7 @@ qcrypto_tls_session_check_certificate(QCryptoTLSSession 
*session,
 
 int
 qcrypto_tls_session_check_credentials(QCryptoTLSSession *session,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     if (object_dynamic_cast(OBJECT(session->creds),
                             TYPE_QCRYPTO_TLS_CREDS_ANON)) {
@@ -440,7 +440,7 @@ qcrypto_tls_session_read(QCryptoTLSSession *session,
 
 int
 qcrypto_tls_session_handshake(QCryptoTLSSession *session,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     int ret = gnutls_handshake(session->handle);
     if (ret == 0) {
@@ -475,7 +475,7 @@ qcrypto_tls_session_get_handshake_status(QCryptoTLSSession 
*session)
 
 int
 qcrypto_tls_session_get_key_size(QCryptoTLSSession *session,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     gnutls_cipher_algorithm_t cipher;
     int ssf;
@@ -508,7 +508,7 @@ qcrypto_tls_session_new(QCryptoTLSCreds *creds 
G_GNUC_UNUSED,
                         const char *hostname G_GNUC_UNUSED,
                         const char *aclname G_GNUC_UNUSED,
                         QCryptoTLSCredsEndpoint endpoint G_GNUC_UNUSED,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     error_setg(errp, "TLS requires GNUTLS support");
     return NULL;
@@ -523,7 +523,7 @@ qcrypto_tls_session_free(QCryptoTLSSession *sess 
G_GNUC_UNUSED)
 
 int
 qcrypto_tls_session_check_credentials(QCryptoTLSSession *sess G_GNUC_UNUSED,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     error_setg(errp, "TLS requires GNUTLS support");
     return -1;
@@ -562,7 +562,7 @@ qcrypto_tls_session_read(QCryptoTLSSession *sess,
 
 int
 qcrypto_tls_session_handshake(QCryptoTLSSession *sess,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     error_setg(errp, "TLS requires GNUTLS support");
     return -1;
@@ -578,7 +578,7 @@ qcrypto_tls_session_get_handshake_status(QCryptoTLSSession 
*sess)
 
 int
 qcrypto_tls_session_get_key_size(QCryptoTLSSession *sess,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     error_setg(errp, "TLS requires GNUTLS support");
     return -1;
diff --git a/device_tree.c b/device_tree.c
index a24ddff02b..2bfc2957a8 100644
--- a/device_tree.c
+++ b/device_tree.c
@@ -230,7 +230,7 @@ static int findnode_nofail(void *fdt, const char *node_path)
 }
 
 char **qemu_fdt_node_path(void *fdt, const char *name, char *compat,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     int offset, len, ret;
     const char *iter_name;
@@ -336,7 +336,8 @@ int qemu_fdt_setprop_string(void *fdt, const char 
*node_path,
 }
 
 const void *qemu_fdt_getprop(void *fdt, const char *node_path,
-                             const char *property, int *lenp, Error **errp)
+                             const char *property, int *lenp,
+                             Error *errp[static 1])
 {
     int len;
     const void *r;
@@ -353,7 +354,8 @@ const void *qemu_fdt_getprop(void *fdt, const char 
*node_path,
 }
 
 uint32_t qemu_fdt_getprop_cell(void *fdt, const char *node_path,
-                               const char *property, int *lenp, Error **errp)
+                               const char *property, int *lenp,
+                               Error *errp[static 1])
 {
     int len;
     const uint32_t *p;
diff --git a/dump.c b/dump.c
index 3fa8ba3571..d4faf071d7 100644
--- a/dump.c
+++ b/dump.c
@@ -102,7 +102,7 @@ static int fd_write_vmcore(const void *buf, size_t size, 
void *opaque)
     return 0;
 }
 
-static void write_elf64_header(DumpState *s, Error **errp)
+static void write_elf64_header(DumpState *s, Error *errp[static 1])
 {
     Elf64_Ehdr elf_header;
     int ret;
@@ -133,7 +133,7 @@ static void write_elf64_header(DumpState *s, Error **errp)
     }
 }
 
-static void write_elf32_header(DumpState *s, Error **errp)
+static void write_elf32_header(DumpState *s, Error *errp[static 1])
 {
     Elf32_Ehdr elf_header;
     int ret;
@@ -166,7 +166,7 @@ static void write_elf32_header(DumpState *s, Error **errp)
 
 static void write_elf64_load(DumpState *s, MemoryMapping *memory_mapping,
                              int phdr_index, hwaddr offset,
-                             hwaddr filesz, Error **errp)
+                             hwaddr filesz, Error *errp[static 1])
 {
     Elf64_Phdr phdr;
     int ret;
@@ -189,7 +189,7 @@ static void write_elf64_load(DumpState *s, MemoryMapping 
*memory_mapping,
 
 static void write_elf32_load(DumpState *s, MemoryMapping *memory_mapping,
                              int phdr_index, hwaddr offset,
-                             hwaddr filesz, Error **errp)
+                             hwaddr filesz, Error *errp[static 1])
 {
     Elf32_Phdr phdr;
     int ret;
@@ -210,7 +210,7 @@ static void write_elf32_load(DumpState *s, MemoryMapping 
*memory_mapping,
     }
 }
 
-static void write_elf64_note(DumpState *s, Error **errp)
+static void write_elf64_note(DumpState *s, Error *errp[static 1])
 {
     Elf64_Phdr phdr;
     hwaddr begin = s->memory_offset - s->note_size;
@@ -236,7 +236,7 @@ static inline int cpu_index(CPUState *cpu)
 }
 
 static void write_elf64_notes(WriteCoreDumpFunction f, DumpState *s,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     CPUState *cpu;
     int ret;
@@ -260,7 +260,7 @@ static void write_elf64_notes(WriteCoreDumpFunction f, 
DumpState *s,
     }
 }
 
-static void write_elf32_note(DumpState *s, Error **errp)
+static void write_elf32_note(DumpState *s, Error *errp[static 1])
 {
     hwaddr begin = s->memory_offset - s->note_size;
     Elf32_Phdr phdr;
@@ -281,7 +281,7 @@ static void write_elf32_note(DumpState *s, Error **errp)
 }
 
 static void write_elf32_notes(WriteCoreDumpFunction f, DumpState *s,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     CPUState *cpu;
     int ret;
@@ -331,7 +331,8 @@ static void write_elf_section(DumpState *s, int type, Error 
**errp)
     }
 }
 
-static void write_data(DumpState *s, void *buf, int length, Error **errp)
+static void write_data(DumpState *s, void *buf, int length,
+                       Error *errp[static 1])
 {
     int ret;
 
@@ -345,7 +346,7 @@ static void write_data(DumpState *s, void *buf, int length, 
Error **errp)
 
 /* write the memory to vmcore. 1 page per I/O. */
 static void write_memory(DumpState *s, GuestPhysBlock *block, ram_addr_t start,
-                         int64_t size, Error **errp)
+                         int64_t size, Error *errp[static 1])
 {
     int64_t i;
 
@@ -428,7 +429,7 @@ static void get_offset_range(hwaddr phys_addr,
     }
 }
 
-static void write_elf_loads(DumpState *s, Error **errp)
+static void write_elf_loads(DumpState *s, Error *errp[static 1])
 {
     hwaddr offset, filesz;
     MemoryMapping *memory_mapping;
@@ -464,7 +465,7 @@ static void write_elf_loads(DumpState *s, Error **errp)
 }
 
 /* write elf header, PT_NOTE and elf note to vmcore. */
-static void dump_begin(DumpState *s, Error **errp)
+static void dump_begin(DumpState *s, Error *errp[static 1])
 {
     if (s->dump_info.d_class == ELFCLASS64) {
         write_elf64_header(s, errp);
@@ -558,7 +559,7 @@ static int get_next_block(DumpState *s, GuestPhysBlock 
*block)
 }
 
 /* write all memory to vmcore */
-static void dump_iterate(DumpState *s, Error **errp)
+static void dump_iterate(DumpState *s, Error *errp[static 1])
 {
     GuestPhysBlock *block;
     int64_t size;
@@ -581,7 +582,7 @@ static void dump_iterate(DumpState *s, Error **errp)
     } while (!get_next_block(s, block));
 }
 
-static void create_vmcore(DumpState *s, Error **errp)
+static void create_vmcore(DumpState *s, Error *errp[static 1])
 {
     dump_begin(s, errp);
     if (ERR_IS_SET(errp)) {
@@ -669,7 +670,7 @@ static int buf_write_note(const void *buf, size_t size, 
void *opaque)
 }
 
 /* write common header, sub header and elf note to vmcore */
-static void create_header32(DumpState *s, Error **errp)
+static void create_header32(DumpState *s, Error *errp[static 1])
 {
     DiskDumpHeader32 *dh = NULL;
     KdumpSubHeader32 *kh = NULL;
@@ -767,7 +768,7 @@ out:
 }
 
 /* write common header, sub header and elf note to vmcore */
-static void create_header64(DumpState *s, Error **errp)
+static void create_header64(DumpState *s, Error *errp[static 1])
 {
     DiskDumpHeader64 *dh = NULL;
     KdumpSubHeader64 *kh = NULL;
@@ -865,7 +866,7 @@ out:
     g_free(s->note_buf);
 }
 
-static void write_dump_header(DumpState *s, Error **errp)
+static void write_dump_header(DumpState *s, Error *errp[static 1])
 {
     if (s->dump_info.d_class == ELFCLASS32) {
         create_header32(s, errp);
@@ -1005,7 +1006,7 @@ static bool get_next_page(GuestPhysBlock **blockptr, 
uint64_t *pfnptr,
     return true;
 }
 
-static void write_dump_bitmap(DumpState *s, Error **errp)
+static void write_dump_bitmap(DumpState *s, Error *errp[static 1])
 {
     int ret = 0;
     uint64_t last_pfn, pfn;
@@ -1134,7 +1135,7 @@ static inline bool is_zero_page(const uint8_t *buf, 
size_t page_size)
     return buffer_is_zero(buf, page_size);
 }
 
-static void write_dump_pages(DumpState *s, Error **errp)
+static void write_dump_pages(DumpState *s, Error *errp[static 1])
 {
     int ret = 0;
     DataCache page_desc, page_data;
@@ -1303,7 +1304,7 @@ out:
     g_free(buf_out);
 }
 
-static void create_kdump_vmcore(DumpState *s, Error **errp)
+static void create_kdump_vmcore(DumpState *s, Error *errp[static 1])
 {
     int ret;
 
@@ -1433,7 +1434,7 @@ static int64_t dump_calculate_size(DumpState *s)
 
 static void dump_init(DumpState *s, int fd, bool has_format,
                       DumpGuestMemoryFormat format, bool paging, bool 
has_filter,
-                      int64_t begin, int64_t length, Error **errp)
+                      int64_t begin, int64_t length, Error *errp[static 1])
 {
     CPUState *cpu;
     int nr_cpus;
@@ -1605,7 +1606,7 @@ cleanup:
 }
 
 /* this operation might be time consuming. */
-static void dump_process(DumpState *s, Error **errp)
+static void dump_process(DumpState *s, Error *errp[static 1])
 {
     Error *local_err = NULL;
     DumpQueryResult *result = NULL;
@@ -1643,7 +1644,7 @@ static void *dump_thread(void *data)
     return NULL;
 }
 
-DumpQueryResult *qmp_query_dump(Error **errp)
+DumpQueryResult *qmp_query_dump(Error *errp[static 1])
 {
     DumpQueryResult *result = g_new(DumpQueryResult, 1);
     DumpState *state = &dump_state_global;
@@ -1659,7 +1660,8 @@ void qmp_dump_guest_memory(bool paging, const char *file,
                            bool has_detach, bool detach,
                            bool has_begin, int64_t begin, bool has_length,
                            int64_t length, bool has_format,
-                           DumpGuestMemoryFormat format, Error **errp)
+                           DumpGuestMemoryFormat format,
+                           Error *errp[static 1])
 {
     const char *p;
     int fd = -1;
@@ -1758,7 +1760,7 @@ void qmp_dump_guest_memory(bool paging, const char *file,
     }
 }
 
-DumpGuestMemoryCapability *qmp_query_dump_guest_memory_capability(Error **errp)
+DumpGuestMemoryCapability *qmp_query_dump_guest_memory_capability(Error 
*errp[static 1])
 {
     DumpGuestMemoryFormatList *item;
     DumpGuestMemoryCapability *cap =
diff --git a/exec.c b/exec.c
index 35d9588350..9a9169d7ca 100644
--- a/exec.c
+++ b/exec.c
@@ -754,7 +754,7 @@ void cpu_exec_initfn(CPUState *cpu)
 #endif
 }
 
-void cpu_exec_realizefn(CPUState *cpu, Error **errp)
+void cpu_exec_realizefn(CPUState *cpu, Error *errp[static 1])
 {
     CPUClass *cc ATTRIBUTE_UNUSED = CPU_GET_CLASS(cpu);
 
@@ -1485,7 +1485,7 @@ static int64_t get_file_size(int fd)
 static void *file_ram_alloc(RAMBlock *block,
                             ram_addr_t memory,
                             const char *path,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     bool unlink_on_error = false;
     char *filename;
@@ -1777,7 +1777,8 @@ static int memory_try_enable_merging(void *addr, size_t 
len)
  * resize callback to update device state and/or add assertions to detect
  * misuse, if necessary.
  */
-int qemu_ram_resize(RAMBlock *block, ram_addr_t newsize, Error **errp)
+int qemu_ram_resize(RAMBlock *block, ram_addr_t newsize,
+                    Error *errp[static 1])
 {
     assert(block);
 
@@ -1855,7 +1856,7 @@ static void dirty_memory_extend(ram_addr_t old_ram_size,
     }
 }
 
-static void ram_block_add(RAMBlock *new_block, Error **errp)
+static void ram_block_add(RAMBlock *new_block, Error *errp[static 1])
 {
     RAMBlock *block;
     RAMBlock *last_block = NULL;
@@ -1933,7 +1934,7 @@ static void ram_block_add(RAMBlock *new_block, Error 
**errp)
 #ifdef __linux__
 RAMBlock *qemu_ram_alloc_from_file(ram_addr_t size, MemoryRegion *mr,
                                    bool share, const char *mem_path,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     RAMBlock *new_block;
 
@@ -1981,7 +1982,7 @@ RAMBlock *qemu_ram_alloc_internal(ram_addr_t size, 
ram_addr_t max_size,
                                                   uint64_t length,
                                                   void *host),
                                   void *host, bool resizeable,
-                                  MemoryRegion *mr, Error **errp)
+                                  MemoryRegion *mr, Error *errp[static 1])
 {
     RAMBlock *new_block;
 
@@ -2011,12 +2012,13 @@ RAMBlock *qemu_ram_alloc_internal(ram_addr_t size, 
ram_addr_t max_size,
 }
 
 RAMBlock *qemu_ram_alloc_from_ptr(ram_addr_t size, void *host,
-                                   MemoryRegion *mr, Error **errp)
+                                   MemoryRegion *mr, Error *errp[static 1])
 {
     return qemu_ram_alloc_internal(size, size, NULL, host, false, mr, errp);
 }
 
-RAMBlock *qemu_ram_alloc(ram_addr_t size, MemoryRegion *mr, Error **errp)
+RAMBlock *qemu_ram_alloc(ram_addr_t size, MemoryRegion *mr,
+                         Error *errp[static 1])
 {
     return qemu_ram_alloc_internal(size, size, NULL, NULL, false, mr, errp);
 }
@@ -2025,7 +2027,7 @@ RAMBlock *qemu_ram_alloc_resizeable(ram_addr_t size, 
ram_addr_t maxsz,
                                      void (*resized)(const char*,
                                                      uint64_t length,
                                                      void *host),
-                                     MemoryRegion *mr, Error **errp)
+                                     MemoryRegion *mr, Error *errp[static 1])
 {
     return qemu_ram_alloc_internal(size, maxsz, resized, NULL, true, mr, errp);
 }
diff --git a/fsdev/qemu-fsdev-throttle.c b/fsdev/qemu-fsdev-throttle.c
index 7ae4e86646..22b6b57a9d 100644
--- a/fsdev/qemu-fsdev-throttle.c
+++ b/fsdev/qemu-fsdev-throttle.c
@@ -29,7 +29,8 @@ static void fsdev_throttle_write_timer_cb(void *opaque)
     qemu_co_enter_next(&fst->throttled_reqs[true]);
 }
 
-void fsdev_throttle_parse_opts(QemuOpts *opts, FsThrottle *fst, Error **errp)
+void fsdev_throttle_parse_opts(QemuOpts *opts, FsThrottle *fst,
+                               Error *errp[static 1])
 {
     throttle_config_init(&fst->cfg);
     fst->cfg.buckets[THROTTLE_BPS_TOTAL].avg =
diff --git a/gdbstub.c b/gdbstub.c
index ec4e4b25be..fe480b47bb 100644
--- a/gdbstub.c
+++ b/gdbstub.c
@@ -1923,7 +1923,7 @@ static void gdb_sigterm_handler(int signal)
 #endif
 
 static void gdb_monitor_open(Chardev *chr, ChardevBackend *backend,
-                             bool *be_opened, Error **errp)
+                             bool *be_opened, Error *errp[static 1])
 {
     *be_opened = false;
 }
diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c
index 96d2683348..fff8fa90a2 100644
--- a/hw/9pfs/9p.c
+++ b/hw/9pfs/9p.c
@@ -3482,7 +3482,7 @@ void pdu_submit(V9fsPDU *pdu, P9MsgHeader *hdr)
 }
 
 /* Returns 0 on success, 1 on failure. */
-int v9fs_device_realize_common(V9fsState *s, Error **errp)
+int v9fs_device_realize_common(V9fsState *s, Error *errp[static 1])
 {
     int i, len;
     struct stat stat;
@@ -3578,7 +3578,7 @@ out:
     return rc;
 }
 
-void v9fs_device_unrealize_common(V9fsState *s, Error **errp)
+void v9fs_device_unrealize_common(V9fsState *s, Error *errp[static 1])
 {
     if (s->ops->cleanup) {
         s->ops->cleanup(&s->ctx);
diff --git a/hw/9pfs/virtio-9p-device.c b/hw/9pfs/virtio-9p-device.c
index 245abd8aae..99dfc3d886 100644
--- a/hw/9pfs/virtio-9p-device.c
+++ b/hw/9pfs/virtio-9p-device.c
@@ -83,7 +83,7 @@ out_free_pdu:
 }
 
 static uint64_t virtio_9p_get_features(VirtIODevice *vdev, uint64_t features,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     virtio_add_feature(&features, VIRTIO_9P_MOUNT_TAG);
     return features;
@@ -105,7 +105,7 @@ static void virtio_9p_get_config(VirtIODevice *vdev, 
uint8_t *config)
     g_free(cfg);
 }
 
-static void virtio_9p_device_realize(DeviceState *dev, Error **errp)
+static void virtio_9p_device_realize(DeviceState *dev, Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     V9fsVirtioState *v = VIRTIO_9P(dev);
@@ -124,7 +124,8 @@ out:
     return;
 }
 
-static void virtio_9p_device_unrealize(DeviceState *dev, Error **errp)
+static void virtio_9p_device_unrealize(DeviceState *dev,
+                                       Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     V9fsVirtioState *v = VIRTIO_9P(dev);
diff --git a/hw/acpi/acpi-stub.c b/hw/acpi/acpi-stub.c
index 26bd22f7ec..26d3185f72 100644
--- a/hw/acpi/acpi-stub.c
+++ b/hw/acpi/acpi-stub.c
@@ -23,7 +23,7 @@
 #include "qmp-commands.h"
 #include "hw/acpi/acpi.h"
 
-void acpi_table_add(const QemuOpts *opts, Error **errp)
+void acpi_table_add(const QemuOpts *opts, Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
 }
diff --git a/hw/acpi/core.c b/hw/acpi/core.c
index 95fcac95a2..8669a8da6d 100644
--- a/hw/acpi/core.c
+++ b/hw/acpi/core.c
@@ -99,7 +99,7 @@ static int acpi_checksum(const uint8_t *data, int len)
 static void acpi_table_install(const char unsigned *blob, size_t bloblen,
                                bool has_header,
                                const struct AcpiTableOptions *hdrs,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     size_t body_start;
     const char unsigned *hdr_src;
@@ -229,7 +229,7 @@ static void acpi_table_install(const char unsigned *blob, 
size_t bloblen,
                                       ACPI_TABLE_PFX_SIZE, acpi_payload_size);
 }
 
-void acpi_table_add(const QemuOpts *opts, Error **errp)
+void acpi_table_add(const QemuOpts *opts, Error *errp[static 1])
 {
     AcpiTableOptions *hdrs = NULL;
     Error *err = NULL;
@@ -303,7 +303,7 @@ out:
 
 static bool acpi_table_builtin = false;
 
-void acpi_table_add_builtin(const QemuOpts *opts, Error **errp)
+void acpi_table_add_builtin(const QemuOpts *opts, Error *errp[static 1])
 {
     acpi_table_builtin = true;
     acpi_table_add(opts, errp);
diff --git a/hw/acpi/cpu.c b/hw/acpi/cpu.c
index 6dc138db89..f85facdda7 100644
--- a/hw/acpi/cpu.c
+++ b/hw/acpi/cpu.c
@@ -221,7 +221,8 @@ static AcpiCpuStatus *get_cpu_status(CPUHotplugState 
*cpu_st, DeviceState *dev)
 }
 
 void acpi_cpu_plug_cb(HotplugHandler *hotplug_dev,
-                      CPUHotplugState *cpu_st, DeviceState *dev, Error **errp)
+                      CPUHotplugState *cpu_st, DeviceState *dev,
+                      Error *errp[static 1])
 {
     AcpiCpuStatus *cdev;
 
@@ -239,7 +240,7 @@ void acpi_cpu_plug_cb(HotplugHandler *hotplug_dev,
 
 void acpi_cpu_unplug_request_cb(HotplugHandler *hotplug_dev,
                                 CPUHotplugState *cpu_st,
-                                DeviceState *dev, Error **errp)
+                                DeviceState *dev, Error *errp[static 1])
 {
     AcpiCpuStatus *cdev;
 
@@ -253,7 +254,7 @@ void acpi_cpu_unplug_request_cb(HotplugHandler *hotplug_dev,
 }
 
 void acpi_cpu_unplug_cb(CPUHotplugState *cpu_st,
-                        DeviceState *dev, Error **errp)
+                        DeviceState *dev, Error *errp[static 1])
 {
     AcpiCpuStatus *cdev;
 
diff --git a/hw/acpi/cpu_hotplug.c b/hw/acpi/cpu_hotplug.c
index c72a748bb3..e1ee4636fe 100644
--- a/hw/acpi/cpu_hotplug.c
+++ b/hw/acpi/cpu_hotplug.c
@@ -57,7 +57,7 @@ static const MemoryRegionOps AcpiCpuHotplug_ops = {
 };
 
 static void acpi_set_cpu_present_bit(AcpiCpuHotplug *g, CPUState *cpu,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     CPUClass *k = CPU_GET_CLASS(cpu);
     int64_t cpu_id;
@@ -73,7 +73,8 @@ static void acpi_set_cpu_present_bit(AcpiCpuHotplug *g, 
CPUState *cpu,
 }
 
 void legacy_acpi_cpu_plug_cb(HotplugHandler *hotplug_dev,
-                             AcpiCpuHotplug *g, DeviceState *dev, Error **errp)
+                             AcpiCpuHotplug *g, DeviceState *dev,
+                             Error *errp[static 1])
 {
     acpi_set_cpu_present_bit(g, CPU(dev), errp);
     if (ERR_IS_SET(errp)) {
diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c
index 54e422a39f..e4861cf8d6 100644
--- a/hw/acpi/ich9.c
+++ b/hw/acpi/ich9.c
@@ -312,7 +312,7 @@ void ich9_pm_init(PCIDevice *lpc_pci, ICH9LPCPMRegs *pm,
 }
 
 static void ich9_pm_get_gpe0_blk(Object *obj, Visitor *v, const char *name,
-                                 void *opaque, Error **errp)
+                                 void *opaque, Error *errp[static 1])
 {
     ICH9LPCPMRegs *pm = opaque;
     uint32_t value = pm->pm_io_base + ICH9_PMIO_GPE0_STS;
@@ -320,7 +320,8 @@ static void ich9_pm_get_gpe0_blk(Object *obj, Visitor *v, 
const char *name,
     visit_type_uint32(v, name, &value, errp);
 }
 
-static bool ich9_pm_get_memory_hotplug_support(Object *obj, Error **errp)
+static bool ich9_pm_get_memory_hotplug_support(Object *obj,
+                                               Error *errp[static 1])
 {
     ICH9LPCState *s = ICH9_LPC_DEVICE(obj);
 
@@ -328,14 +329,14 @@ static bool ich9_pm_get_memory_hotplug_support(Object 
*obj, Error **errp)
 }
 
 static void ich9_pm_set_memory_hotplug_support(Object *obj, bool value,
-                                               Error **errp)
+                                               Error *errp[static 1])
 {
     ICH9LPCState *s = ICH9_LPC_DEVICE(obj);
 
     s->pm.acpi_memory_hotplug.is_enabled = value;
 }
 
-static bool ich9_pm_get_cpu_hotplug_legacy(Object *obj, Error **errp)
+static bool ich9_pm_get_cpu_hotplug_legacy(Object *obj, Error *errp[static 1])
 {
     ICH9LPCState *s = ICH9_LPC_DEVICE(obj);
 
@@ -343,7 +344,7 @@ static bool ich9_pm_get_cpu_hotplug_legacy(Object *obj, 
Error **errp)
 }
 
 static void ich9_pm_set_cpu_hotplug_legacy(Object *obj, bool value,
-                                           Error **errp)
+                                           Error *errp[static 1])
 {
     ICH9LPCState *s = ICH9_LPC_DEVICE(obj);
 
@@ -356,7 +357,7 @@ static void ich9_pm_set_cpu_hotplug_legacy(Object *obj, 
bool value,
 }
 
 static void ich9_pm_get_disable_s3(Object *obj, Visitor *v, const char *name,
-                                   void *opaque, Error **errp)
+                                   void *opaque, Error *errp[static 1])
 {
     ICH9LPCPMRegs *pm = opaque;
     uint8_t value = pm->disable_s3;
@@ -365,7 +366,7 @@ static void ich9_pm_get_disable_s3(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void ich9_pm_set_disable_s3(Object *obj, Visitor *v, const char *name,
-                                   void *opaque, Error **errp)
+                                   void *opaque, Error *errp[static 1])
 {
     ICH9LPCPMRegs *pm = opaque;
     Error *local_err = NULL;
@@ -381,7 +382,7 @@ out:
 }
 
 static void ich9_pm_get_disable_s4(Object *obj, Visitor *v, const char *name,
-                                   void *opaque, Error **errp)
+                                   void *opaque, Error *errp[static 1])
 {
     ICH9LPCPMRegs *pm = opaque;
     uint8_t value = pm->disable_s4;
@@ -390,7 +391,7 @@ static void ich9_pm_get_disable_s4(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void ich9_pm_set_disable_s4(Object *obj, Visitor *v, const char *name,
-                                   void *opaque, Error **errp)
+                                   void *opaque, Error *errp[static 1])
 {
     ICH9LPCPMRegs *pm = opaque;
     Error *local_err = NULL;
@@ -406,7 +407,7 @@ out:
 }
 
 static void ich9_pm_get_s4_val(Object *obj, Visitor *v, const char *name,
-                               void *opaque, Error **errp)
+                               void *opaque, Error *errp[static 1])
 {
     ICH9LPCPMRegs *pm = opaque;
     uint8_t value = pm->s4_val;
@@ -415,7 +416,7 @@ static void ich9_pm_get_s4_val(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void ich9_pm_set_s4_val(Object *obj, Visitor *v, const char *name,
-                               void *opaque, Error **errp)
+                               void *opaque, Error *errp[static 1])
 {
     ICH9LPCPMRegs *pm = opaque;
     Error *local_err = NULL;
@@ -430,19 +431,21 @@ out:
     error_propagate(errp, local_err);
 }
 
-static bool ich9_pm_get_enable_tco(Object *obj, Error **errp)
+static bool ich9_pm_get_enable_tco(Object *obj, Error *errp[static 1])
 {
     ICH9LPCState *s = ICH9_LPC_DEVICE(obj);
     return s->pm.enable_tco;
 }
 
-static void ich9_pm_set_enable_tco(Object *obj, bool value, Error **errp)
+static void ich9_pm_set_enable_tco(Object *obj, bool value,
+                                   Error *errp[static 1])
 {
     ICH9LPCState *s = ICH9_LPC_DEVICE(obj);
     s->pm.enable_tco = value;
 }
 
-void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm, Error **errp)
+void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm,
+                            Error *errp[static 1])
 {
     static const uint32_t gpe0_len = ICH9_PMIO_GPE0_LEN;
     pm->acpi_memory_hotplug.is_enabled = true;
@@ -485,7 +488,7 @@ void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm, 
Error **errp)
 }
 
 void ich9_pm_device_plug_cb(HotplugHandler *hotplug_dev, DeviceState *dev,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     ICH9LPCState *lpc = ICH9_LPC_DEVICE(hotplug_dev);
 
@@ -510,7 +513,7 @@ void ich9_pm_device_plug_cb(HotplugHandler *hotplug_dev, 
DeviceState *dev,
 }
 
 void ich9_pm_device_unplug_request_cb(HotplugHandler *hotplug_dev,
-                                      DeviceState *dev, Error **errp)
+                                      DeviceState *dev, Error *errp[static 1])
 {
     ICH9LPCState *lpc = ICH9_LPC_DEVICE(hotplug_dev);
 
@@ -530,7 +533,7 @@ void ich9_pm_device_unplug_request_cb(HotplugHandler 
*hotplug_dev,
 }
 
 void ich9_pm_device_unplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     ICH9LPCState *lpc = ICH9_LPC_DEVICE(hotplug_dev);
 
diff --git a/hw/acpi/memory_hotplug.c b/hw/acpi/memory_hotplug.c
index f4b6a096c0..7444c7c085 100644
--- a/hw/acpi/memory_hotplug.c
+++ b/hw/acpi/memory_hotplug.c
@@ -236,7 +236,7 @@ void acpi_memory_hotplug_init(MemoryRegion *as, Object 
*owner,
  */
 static MemStatus *
 acpi_memory_slot_status(MemHotplugState *mem_st,
-                        DeviceState *dev, Error **errp)
+                        DeviceState *dev, Error *errp[static 1])
 {
     Error *local_err = NULL;
     int slot = object_property_get_int(OBJECT(dev), PC_DIMM_SLOT_PROP,
@@ -260,7 +260,7 @@ acpi_memory_slot_status(MemHotplugState *mem_st,
 }
 
 void acpi_memory_plug_cb(HotplugHandler *hotplug_dev, MemHotplugState *mem_st,
-                         DeviceState *dev, Error **errp)
+                         DeviceState *dev, Error *errp[static 1])
 {
     MemStatus *mdev;
     DeviceClass *dc = DEVICE_GET_CLASS(dev);
@@ -284,7 +284,7 @@ void acpi_memory_plug_cb(HotplugHandler *hotplug_dev, 
MemHotplugState *mem_st,
 
 void acpi_memory_unplug_request_cb(HotplugHandler *hotplug_dev,
                                    MemHotplugState *mem_st,
-                                   DeviceState *dev, Error **errp)
+                                   DeviceState *dev, Error *errp[static 1])
 {
     MemStatus *mdev;
 
@@ -298,7 +298,7 @@ void acpi_memory_unplug_request_cb(HotplugHandler 
*hotplug_dev,
 }
 
 void acpi_memory_unplug_cb(MemHotplugState *mem_st,
-                           DeviceState *dev, Error **errp)
+                           DeviceState *dev, Error *errp[static 1])
 {
     MemStatus *mdev;
 
diff --git a/hw/acpi/pcihp.c b/hw/acpi/pcihp.c
index 2b0f3e1bfb..42426ceb4a 100644
--- a/hw/acpi/pcihp.c
+++ b/hw/acpi/pcihp.c
@@ -182,7 +182,7 @@ void acpi_pcihp_reset(AcpiPciHpState *s)
 }
 
 void acpi_pcihp_device_plug_cb(HotplugHandler *hotplug_dev, AcpiPciHpState *s,
-                               DeviceState *dev, Error **errp)
+                               DeviceState *dev, Error *errp[static 1])
 {
     PCIDevice *pdev = PCI_DEVICE(dev);
     int slot = PCI_SLOT(pdev->devfn);
@@ -205,7 +205,7 @@ void acpi_pcihp_device_plug_cb(HotplugHandler *hotplug_dev, 
AcpiPciHpState *s,
 }
 
 void acpi_pcihp_device_unplug_cb(HotplugHandler *hotplug_dev, AcpiPciHpState 
*s,
-                                 DeviceState *dev, Error **errp)
+                                 DeviceState *dev, Error *errp[static 1])
 {
     PCIDevice *pdev = PCI_DEVICE(dev);
     int slot = PCI_SLOT(pdev->devfn);
diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c
index f3c5f03d35..cac9623a0d 100644
--- a/hw/acpi/piix4.c
+++ b/hw/acpi/piix4.c
@@ -372,7 +372,7 @@ static void piix4_pm_powerdown_req(Notifier *n, void 
*opaque)
 }
 
 static void piix4_device_plug_cb(HotplugHandler *hotplug_dev,
-                                 DeviceState *dev, Error **errp)
+                                 DeviceState *dev, Error *errp[static 1])
 {
     PIIX4PMState *s = PIIX4_PM(hotplug_dev);
 
@@ -402,7 +402,8 @@ static void piix4_device_plug_cb(HotplugHandler 
*hotplug_dev,
 }
 
 static void piix4_device_unplug_request_cb(HotplugHandler *hotplug_dev,
-                                           DeviceState *dev, Error **errp)
+                                           DeviceState *dev,
+                                           Error *errp[static 1])
 {
     PIIX4PMState *s = PIIX4_PM(hotplug_dev);
 
@@ -425,7 +426,7 @@ static void piix4_device_unplug_request_cb(HotplugHandler 
*hotplug_dev,
 }
 
 static void piix4_device_unplug_cb(HotplugHandler *hotplug_dev,
-                                   DeviceState *dev, Error **errp)
+                                   DeviceState *dev, Error *errp[static 1])
 {
     PIIX4PMState *s = PIIX4_PM(hotplug_dev);
 
@@ -493,7 +494,7 @@ static void piix4_pm_add_propeties(PIIX4PMState *s)
                                   &s->io_base, IGNORE_ERRORS);
 }
 
-static void piix4_pm_realize(PCIDevice *dev, Error **errp)
+static void piix4_pm_realize(PCIDevice *dev, Error *errp[static 1])
 {
     PIIX4PMState *s = PIIX4_PM(dev);
     uint8_t *pci_conf;
@@ -613,14 +614,15 @@ static const MemoryRegionOps piix4_gpe_ops = {
 };
 
 
-static bool piix4_get_cpu_hotplug_legacy(Object *obj, Error **errp)
+static bool piix4_get_cpu_hotplug_legacy(Object *obj, Error *errp[static 1])
 {
     PIIX4PMState *s = PIIX4_PM(obj);
 
     return s->cpu_hotplug_legacy;
 }
 
-static void piix4_set_cpu_hotplug_legacy(Object *obj, bool value, Error **errp)
+static void piix4_set_cpu_hotplug_legacy(Object *obj, bool value,
+                                         Error *errp[static 1])
 {
     PIIX4PMState *s = PIIX4_PM(obj);
 
diff --git a/hw/acpi/vmgenid.c b/hw/acpi/vmgenid.c
index 5bc495960c..e6380176d5 100644
--- a/hw/acpi/vmgenid.c
+++ b/hw/acpi/vmgenid.c
@@ -163,7 +163,8 @@ static void vmgenid_update_guest(VmGenIdState *vms)
     }
 }
 
-static void vmgenid_set_guid(Object *obj, const char *value, Error **errp)
+static void vmgenid_set_guid(Object *obj, const char *value,
+                             Error *errp[static 1])
 {
     VmGenIdState *vms = VMGENID(obj);
 
@@ -212,7 +213,7 @@ static Property vmgenid_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void vmgenid_realize(DeviceState *dev, Error **errp)
+static void vmgenid_realize(DeviceState *dev, Error *errp[static 1])
 {
     VmGenIdState *vms = VMGENID(dev);
 
@@ -264,7 +265,7 @@ static void vmgenid_register_types(void)
 
 type_init(vmgenid_register_types)
 
-GuidInfo *qmp_query_vm_generation_id(Error **errp)
+GuidInfo *qmp_query_vm_generation_id(Error *errp[static 1])
 {
     GuidInfo *info;
     VmGenIdState *vms;
diff --git a/hw/arm/allwinner-a10.c b/hw/arm/allwinner-a10.c
index 7d9c8691bb..e7d51935c8 100644
--- a/hw/arm/allwinner-a10.c
+++ b/hw/arm/allwinner-a10.c
@@ -48,7 +48,7 @@ static void aw_a10_init(Object *obj)
     qdev_set_parent_bus(DEVICE(&s->sata), sysbus_get_default());
 }
 
-static void aw_a10_realize(DeviceState *dev, Error **errp)
+static void aw_a10_realize(DeviceState *dev, Error *errp[static 1])
 {
     AwA10State *s = AW_A10(dev);
     SysBusDevice *sysbusdev;
diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c
index 2fa8bbb249..cf7cdd26b9 100644
--- a/hw/arm/armv7m.c
+++ b/hw/arm/armv7m.c
@@ -108,7 +108,7 @@ static void bitband_init(Object *obj)
     sysbus_init_mmio(dev, &s->iomem);
 }
 
-static void bitband_realize(DeviceState *dev, Error **errp)
+static void bitband_realize(DeviceState *dev, Error *errp[static 1])
 {
     BitBandState *s = BITBAND(dev);
 
@@ -157,7 +157,7 @@ static void armv7m_instance_init(Object *obj)
     }
 }
 
-static void armv7m_realize(DeviceState *dev, Error **errp)
+static void armv7m_realize(DeviceState *dev, Error *errp[static 1])
 {
     ARMv7MState *s = ARMV7M(dev);
     SysBusDevice *sbd;
diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
index e824ea87a9..eaaec43021 100644
--- a/hw/arm/aspeed.c
+++ b/hw/arm/aspeed.c
@@ -115,7 +115,7 @@ static const AspeedBoardConfig aspeed_boards[] = {
 #define FIRMWARE_ADDR 0x0
 
 static void write_boot_rom(DriveInfo *dinfo, hwaddr addr, size_t rom_size,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     BlockBackend *blk = blk_by_legacy_dinfo(dinfo);
     uint8_t *storage;
@@ -145,7 +145,7 @@ static void write_boot_rom(DriveInfo *dinfo, hwaddr addr, 
size_t rom_size,
 }
 
 static void aspeed_board_init_flashes(AspeedSMCState *s, const char *flashtype,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     int i ;
 
diff --git a/hw/arm/aspeed_soc.c b/hw/arm/aspeed_soc.c
index d546b6af91..585ec239fb 100644
--- a/hw/arm/aspeed_soc.c
+++ b/hw/arm/aspeed_soc.c
@@ -187,7 +187,7 @@ static void aspeed_soc_init(Object *obj)
     qdev_set_parent_bus(DEVICE(&s->ftgmac100), sysbus_get_default());
 }
 
-static void aspeed_soc_realize(DeviceState *dev, Error **errp)
+static void aspeed_soc_realize(DeviceState *dev, Error *errp[static 1])
 {
     int i;
     AspeedSoCState *s = ASPEED_SOC(dev);
diff --git a/hw/arm/bcm2835_peripherals.c b/hw/arm/bcm2835_peripherals.c
index 447870b5a7..8280a17a3a 100644
--- a/hw/arm/bcm2835_peripherals.c
+++ b/hw/arm/bcm2835_peripherals.c
@@ -123,7 +123,8 @@ static void bcm2835_peripherals_init(Object *obj)
                                    OBJECT(&s->sdhost.sdbus), &error_abort);
 }
 
-static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
+static void bcm2835_peripherals_realize(DeviceState *dev,
+                                        Error *errp[static 1])
 {
     BCM2835PeripheralState *s = BCM2835_PERIPHERALS(dev);
     Object *obj;
diff --git a/hw/arm/bcm2836.c b/hw/arm/bcm2836.c
index 2c6a082395..ec0bbdb3a5 100644
--- a/hw/arm/bcm2836.c
+++ b/hw/arm/bcm2836.c
@@ -51,7 +51,7 @@ static void bcm2836_init(Object *obj)
     qdev_set_parent_bus(DEVICE(&s->peripherals), sysbus_get_default());
 }
 
-static void bcm2836_realize(DeviceState *dev, Error **errp)
+static void bcm2836_realize(DeviceState *dev, Error *errp[static 1])
 {
     BCM2836State *s = BCM2836(dev);
     Object *obj;
diff --git a/hw/arm/digic.c b/hw/arm/digic.c
index eeaa8729ff..15bf47510f 100644
--- a/hw/arm/digic.c
+++ b/hw/arm/digic.c
@@ -56,7 +56,7 @@ static void digic_init(Object *obj)
     object_property_add_child(obj, "uart", OBJECT(&s->uart), IGNORE_ERRORS);
 }
 
-static void digic_realize(DeviceState *dev, Error **errp)
+static void digic_realize(DeviceState *dev, Error *errp[static 1])
 {
     DigicState *s = DIGIC(dev);
     SysBusDevice *sbd;
diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c
index c10f96d83c..9c6667adf2 100644
--- a/hw/arm/fsl-imx25.c
+++ b/hw/arm/fsl-imx25.c
@@ -74,7 +74,7 @@ static void fsl_imx25_init(Object *obj)
     }
 }
 
-static void fsl_imx25_realize(DeviceState *dev, Error **errp)
+static void fsl_imx25_realize(DeviceState *dev, Error *errp[static 1])
 {
     FslIMX25State *s = FSL_IMX25(dev);
     uint8_t i;
diff --git a/hw/arm/fsl-imx31.c b/hw/arm/fsl-imx31.c
index 0cc80f3aee..181ee404c7 100644
--- a/hw/arm/fsl-imx31.c
+++ b/hw/arm/fsl-imx31.c
@@ -66,7 +66,7 @@ static void fsl_imx31_init(Object *obj)
     }
 }
 
-static void fsl_imx31_realize(DeviceState *dev, Error **errp)
+static void fsl_imx31_realize(DeviceState *dev, Error *errp[static 1])
 {
     FslIMX31State *s = FSL_IMX31(dev);
     uint16_t i;
diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c
index 1bdf9dbd70..f7ae56d39b 100644
--- a/hw/arm/fsl-imx6.c
+++ b/hw/arm/fsl-imx6.c
@@ -119,7 +119,7 @@ static void fsl_imx6_init(Object *obj)
     object_property_add_child(obj, "eth", OBJECT(&s->eth), IGNORE_ERRORS);
 }
 
-static void fsl_imx6_realize(DeviceState *dev, Error **errp)
+static void fsl_imx6_realize(DeviceState *dev, Error *errp[static 1])
 {
     FslIMX6State *s = FSL_IMX6(dev);
     uint16_t i;
diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c
index 5af0d7fe5b..917ab3899b 100644
--- a/hw/arm/integratorcp.c
+++ b/hw/arm/integratorcp.c
@@ -288,7 +288,7 @@ static void integratorcm_init(Object *obj)
     /* ??? Save/restore.  */
 }
 
-static void integratorcm_realize(DeviceState *d, Error **errp)
+static void integratorcm_realize(DeviceState *d, Error *errp[static 1])
 {
     IntegratorCMState *s = INTEGRATOR_CM(d);
 
diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c
index 9c710f74b4..aab4449f73 100644
--- a/hw/arm/musicpal.c
+++ b/hw/arm/musicpal.c
@@ -396,7 +396,7 @@ static void mv88w8618_eth_init(Object *obj)
     sysbus_init_mmio(sbd, &s->iomem);
 }
 
-static void mv88w8618_eth_realize(DeviceState *dev, Error **errp)
+static void mv88w8618_eth_realize(DeviceState *dev, Error *errp[static 1])
 {
     mv88w8618_eth_state *s = MV88W8618_ETH(dev);
 
@@ -621,7 +621,7 @@ static const GraphicHwOps musicpal_gfx_ops = {
     .gfx_update  = lcd_refresh,
 };
 
-static void musicpal_lcd_realize(DeviceState *dev, Error **errp)
+static void musicpal_lcd_realize(DeviceState *dev, Error *errp[static 1])
 {
     musicpal_lcd_state *s = MUSICPAL_LCD(dev);
     s->con = graphic_console_init(dev, 0, &musicpal_gfx_ops, s);
diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c
index 629e6c64e6..0239068342 100644
--- a/hw/arm/pxa2xx.c
+++ b/hw/arm/pxa2xx.c
@@ -1965,7 +1965,7 @@ static void pxa2xx_fir_instance_init(Object *obj)
     sysbus_init_irq(sbd, &s->tx_dma);
 }
 
-static void pxa2xx_fir_realize(DeviceState *dev, Error **errp)
+static void pxa2xx_fir_realize(DeviceState *dev, Error *errp[static 1])
 {
     PXA2xxFIrState *s = PXA2XX_FIR(dev);
 
diff --git a/hw/arm/pxa2xx_gpio.c b/hw/arm/pxa2xx_gpio.c
index 521dbad039..e40c35a942 100644
--- a/hw/arm/pxa2xx_gpio.c
+++ b/hw/arm/pxa2xx_gpio.c
@@ -294,7 +294,7 @@ static void pxa2xx_gpio_initfn(Object *obj)
     sysbus_init_irq(sbd, &s->irqX);
 }
 
-static void pxa2xx_gpio_realize(DeviceState *dev, Error **errp)
+static void pxa2xx_gpio_realize(DeviceState *dev, Error *errp[static 1])
 {
     PXA2xxGPIOInfo *s = PXA2XX_GPIO(dev);
 
diff --git a/hw/arm/spitz.c b/hw/arm/spitz.c
index 93bde14743..bb52342196 100644
--- a/hw/arm/spitz.c
+++ b/hw/arm/spitz.c
@@ -599,7 +599,7 @@ static uint32_t spitz_lcdtg_transfer(SSISlave *dev, 
uint32_t value)
     return 0;
 }
 
-static void spitz_lcdtg_realize(SSISlave *dev, Error **errp)
+static void spitz_lcdtg_realize(SSISlave *dev, Error *errp[static 1])
 {
     SpitzLCDTG *s = FROM_SSI_SLAVE(SpitzLCDTG, dev);
 
@@ -665,7 +665,7 @@ static void spitz_adc_temp_on(void *opaque, int line, int 
level)
         max111x_set_input(max1111, MAX1111_BATT_TEMP, 0);
 }
 
-static void corgi_ssp_realize(SSISlave *d, Error **errp)
+static void corgi_ssp_realize(SSISlave *d, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(d);
     CorgiSSPState *s = FROM_SSI_SLAVE(CorgiSSPState, d);
diff --git a/hw/arm/stm32f205_soc.c b/hw/arm/stm32f205_soc.c
index 6e1260d2ed..50961aa252 100644
--- a/hw/arm/stm32f205_soc.c
+++ b/hw/arm/stm32f205_soc.c
@@ -82,7 +82,7 @@ static void stm32f205_soc_initfn(Object *obj)
     }
 }
 
-static void stm32f205_soc_realize(DeviceState *dev_soc, Error **errp)
+static void stm32f205_soc_realize(DeviceState *dev_soc, Error *errp[static 1])
 {
     STM32F205State *s = STM32F205_SOC(dev_soc);
     DeviceState *dev, *armv7m;
diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c
index 7683edc9e5..43e0048517 100644
--- a/hw/arm/strongarm.c
+++ b/hw/arm/strongarm.c
@@ -1239,7 +1239,7 @@ static void strongarm_uart_init(Object *obj)
     s->tx_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, strongarm_uart_tx, s);
 }
 
-static void strongarm_uart_realize(DeviceState *dev, Error **errp)
+static void strongarm_uart_realize(DeviceState *dev, Error *errp[static 1])
 {
     StrongARMUARTState *s = STRONGARM_UART(dev);
 
diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c
index 2421b8150d..3b43fa2e60 100644
--- a/hw/arm/tosa.c
+++ b/hw/arm/tosa.c
@@ -137,7 +137,7 @@ static uint32_t tosa_ssp_tansfer(SSISlave *dev, uint32_t 
value)
     return 0;
 }
 
-static void tosa_ssp_realize(SSISlave *dev, Error **errp)
+static void tosa_ssp_realize(SSISlave *dev, Error *errp[static 1])
 {
     /* Nothing to do.  */
 }
diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c
index d1e294f969..ec779d9f58 100644
--- a/hw/arm/vexpress.c
+++ b/hw/arm/vexpress.c
@@ -718,14 +718,15 @@ static void vexpress_common_init(MachineState *machine)
     arm_load_kernel(ARM_CPU(first_cpu), &daughterboard->bootinfo);
 }
 
-static bool vexpress_get_secure(Object *obj, Error **errp)
+static bool vexpress_get_secure(Object *obj, Error *errp[static 1])
 {
     VexpressMachineState *vms = VEXPRESS_MACHINE(obj);
 
     return vms->secure;
 }
 
-static void vexpress_set_secure(Object *obj, bool value, Error **errp)
+static void vexpress_set_secure(Object *obj, bool value,
+                                Error *errp[static 1])
 {
     VexpressMachineState *vms = VEXPRESS_MACHINE(obj);
 
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 4c187bba59..81a7a4bbf7 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -1484,63 +1484,63 @@ static void machvirt_init(MachineState *machine)
     create_platform_bus(vms, pic);
 }
 
-static bool virt_get_secure(Object *obj, Error **errp)
+static bool virt_get_secure(Object *obj, Error *errp[static 1])
 {
     VirtMachineState *vms = VIRT_MACHINE(obj);
 
     return vms->secure;
 }
 
-static void virt_set_secure(Object *obj, bool value, Error **errp)
+static void virt_set_secure(Object *obj, bool value, Error *errp[static 1])
 {
     VirtMachineState *vms = VIRT_MACHINE(obj);
 
     vms->secure = value;
 }
 
-static bool virt_get_virt(Object *obj, Error **errp)
+static bool virt_get_virt(Object *obj, Error *errp[static 1])
 {
     VirtMachineState *vms = VIRT_MACHINE(obj);
 
     return vms->virt;
 }
 
-static void virt_set_virt(Object *obj, bool value, Error **errp)
+static void virt_set_virt(Object *obj, bool value, Error *errp[static 1])
 {
     VirtMachineState *vms = VIRT_MACHINE(obj);
 
     vms->virt = value;
 }
 
-static bool virt_get_highmem(Object *obj, Error **errp)
+static bool virt_get_highmem(Object *obj, Error *errp[static 1])
 {
     VirtMachineState *vms = VIRT_MACHINE(obj);
 
     return vms->highmem;
 }
 
-static void virt_set_highmem(Object *obj, bool value, Error **errp)
+static void virt_set_highmem(Object *obj, bool value, Error *errp[static 1])
 {
     VirtMachineState *vms = VIRT_MACHINE(obj);
 
     vms->highmem = value;
 }
 
-static bool virt_get_its(Object *obj, Error **errp)
+static bool virt_get_its(Object *obj, Error *errp[static 1])
 {
     VirtMachineState *vms = VIRT_MACHINE(obj);
 
     return vms->its;
 }
 
-static void virt_set_its(Object *obj, bool value, Error **errp)
+static void virt_set_its(Object *obj, bool value, Error *errp[static 1])
 {
     VirtMachineState *vms = VIRT_MACHINE(obj);
 
     vms->its = value;
 }
 
-static char *virt_get_gic_version(Object *obj, Error **errp)
+static char *virt_get_gic_version(Object *obj, Error *errp[static 1])
 {
     VirtMachineState *vms = VIRT_MACHINE(obj);
     const char *val = vms->gic_version == 3 ? "3" : "2";
@@ -1548,7 +1548,8 @@ static char *virt_get_gic_version(Object *obj, Error 
**errp)
     return g_strdup(val);
 }
 
-static void virt_set_gic_version(Object *obj, const char *value, Error **errp)
+static void virt_set_gic_version(Object *obj, const char *value,
+                                 Error *errp[static 1])
 {
     VirtMachineState *vms = VIRT_MACHINE(obj);
 
diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c
index ee6c64b409..42f9cf396f 100644
--- a/hw/arm/xlnx-zynqmp.c
+++ b/hw/arm/xlnx-zynqmp.c
@@ -94,7 +94,7 @@ static inline int arm_gic_ppi_index(int cpu_nr, int ppi_index)
 }
 
 static void xlnx_zynqmp_create_rpu(XlnxZynqMPState *s, const char *boot_cpu,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     int i;
 
@@ -179,7 +179,7 @@ static void xlnx_zynqmp_init(Object *obj)
     qdev_set_parent_bus(DEVICE(&s->dpdma), sysbus_get_default());
 }
 
-static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp)
+static void xlnx_zynqmp_realize(DeviceState *dev, Error *errp[static 1])
 {
     XlnxZynqMPState *s = XLNX_ZYNQMP(dev);
     MemoryRegion *system_memory = get_system_memory();
diff --git a/hw/arm/z2.c b/hw/arm/z2.c
index 1607cbdb03..91fa782cc6 100644
--- a/hw/arm/z2.c
+++ b/hw/arm/z2.c
@@ -151,7 +151,7 @@ static void z2_lcd_cs(void *opaque, int line, int level)
     z2_lcd->selected = !level;
 }
 
-static void zipit_lcd_realize(SSISlave *dev, Error **errp)
+static void zipit_lcd_realize(SSISlave *dev, Error *errp[static 1])
 {
     ZipitLCD *z = FROM_SSI_SLAVE(ZipitLCD, dev);
     z->selected = 0;
diff --git a/hw/audio/ac97.c b/hw/audio/ac97.c
index 959c786261..84889fd4fe 100644
--- a/hw/audio/ac97.c
+++ b/hw/audio/ac97.c
@@ -1338,7 +1338,7 @@ static void ac97_on_reset (DeviceState *dev)
     mixer_reset (s);
 }
 
-static void ac97_realize(PCIDevice *dev, Error **errp)
+static void ac97_realize(PCIDevice *dev, Error *errp[static 1])
 {
     AC97LinkState *s = DO_UPCAST (AC97LinkState, dev, dev);
     uint8_t *c = s->dev.config;
diff --git a/hw/audio/adlib.c b/hw/audio/adlib.c
index c6e0f10c16..8870fe706d 100644
--- a/hw/audio/adlib.c
+++ b/hw/audio/adlib.c
@@ -254,7 +254,7 @@ static MemoryRegionPortio adlib_portio_list[] = {
     PORTIO_END_OF_LIST(),
 };
 
-static void adlib_realizefn (DeviceState *dev, Error **errp)
+static void adlib_realizefn (DeviceState *dev, Error *errp[static 1])
 {
     AdlibState *s = ADLIB(dev);
     struct audsettings as;
diff --git a/hw/audio/cs4231a.c b/hw/audio/cs4231a.c
index 096e8e98d7..2a1bc2aa16 100644
--- a/hw/audio/cs4231a.c
+++ b/hw/audio/cs4231a.c
@@ -657,7 +657,7 @@ static void cs4231a_initfn (Object *obj)
                            "cs4231a", 4);
 }
 
-static void cs4231a_realizefn (DeviceState *dev, Error **errp)
+static void cs4231a_realizefn (DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *d = ISA_DEVICE (dev);
     CSState *s = CS4231A (dev);
diff --git a/hw/audio/es1370.c b/hw/audio/es1370.c
index dd7c23d185..bec992255e 100644
--- a/hw/audio/es1370.c
+++ b/hw/audio/es1370.c
@@ -1016,7 +1016,7 @@ static void es1370_on_reset(DeviceState *dev)
     es1370_reset (s);
 }
 
-static void es1370_realize(PCIDevice *dev, Error **errp)
+static void es1370_realize(PCIDevice *dev, Error *errp[static 1])
 {
     ES1370State *s = ES1370(dev);
     uint8_t *c = s->dev.config;
diff --git a/hw/audio/gus.c b/hw/audio/gus.c
index 3e864cd36d..e894365592 100644
--- a/hw/audio/gus.c
+++ b/hw/audio/gus.c
@@ -234,7 +234,7 @@ static const MemoryRegionPortio gus_portio_list2[] = {
     PORTIO_END_OF_LIST (),
 };
 
-static void gus_realizefn (DeviceState *dev, Error **errp)
+static void gus_realizefn (DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *d = ISA_DEVICE(dev);
     GUSState *s = GUS (dev);
diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c
index 06acc98f7b..b11e55ac5d 100644
--- a/hw/audio/intel-hda.c
+++ b/hw/audio/intel-hda.c
@@ -51,7 +51,7 @@ void hda_codec_bus_init(DeviceState *dev, HDACodecBus *bus, 
size_t bus_size,
     bus->xfer = xfer;
 }
 
-static void hda_codec_dev_realize(DeviceState *qdev, Error **errp)
+static void hda_codec_dev_realize(DeviceState *qdev, Error *errp[static 1])
 {
     HDACodecBus *bus = HDA_BUS(qdev->parent_bus);
     HDACodecDevice *dev = HDA_CODEC_DEVICE(qdev);
@@ -70,7 +70,7 @@ static void hda_codec_dev_realize(DeviceState *qdev, Error 
**errp)
     }
 }
 
-static void hda_codec_dev_unrealize(DeviceState *qdev, Error **errp)
+static void hda_codec_dev_unrealize(DeviceState *qdev, Error *errp[static 1])
 {
     HDACodecDevice *dev = HDA_CODEC_DEVICE(qdev);
     HDACodecDeviceClass *cdc = HDA_CODEC_DEVICE_GET_CLASS(dev);
@@ -1128,7 +1128,7 @@ static void intel_hda_reset(DeviceState *dev)
     intel_hda_update_irq(d);
 }
 
-static void intel_hda_realize(PCIDevice *pci, Error **errp)
+static void intel_hda_realize(PCIDevice *pci, Error *errp[static 1])
 {
     IntelHDAState *d = INTEL_HDA(pci);
     uint8_t *conf = d->pci.config;
diff --git a/hw/audio/marvell_88w8618.c b/hw/audio/marvell_88w8618.c
index 4f65f8c199..0c2657bedd 100644
--- a/hw/audio/marvell_88w8618.c
+++ b/hw/audio/marvell_88w8618.c
@@ -253,7 +253,7 @@ static void mv88w8618_audio_init(Object *obj)
     sysbus_init_mmio(dev, &s->iomem);
 }
 
-static void mv88w8618_audio_realize(DeviceState *dev, Error **errp)
+static void mv88w8618_audio_realize(DeviceState *dev, Error *errp[static 1])
 {
     mv88w8618_audio_state *s = MV88W8618_AUDIO(dev);
 
diff --git a/hw/audio/milkymist-ac97.c b/hw/audio/milkymist-ac97.c
index bc8db71ae0..d33072979a 100644
--- a/hw/audio/milkymist-ac97.c
+++ b/hw/audio/milkymist-ac97.c
@@ -299,7 +299,7 @@ static void milkymist_ac97_init(Object *obj)
     sysbus_init_mmio(dev, &s->regs_region);
 }
 
-static void milkymist_ac97_realize(DeviceState *dev, Error **errp)
+static void milkymist_ac97_realize(DeviceState *dev, Error *errp[static 1])
 {
     MilkymistAC97State *s = MILKYMIST_AC97(dev);
     struct audsettings as;
diff --git a/hw/audio/pcspk.c b/hw/audio/pcspk.c
index f643b122bb..67ca88f5e1 100644
--- a/hw/audio/pcspk.c
+++ b/hw/audio/pcspk.c
@@ -178,7 +178,7 @@ static void pcspk_initfn(Object *obj)
                              0, &error_abort);
 }
 
-static void pcspk_realizefn(DeviceState *dev, Error **errp)
+static void pcspk_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *isadev = ISA_DEVICE(dev);
     PCSpkState *s = PC_SPEAKER(dev);
diff --git a/hw/audio/pl041.c b/hw/audio/pl041.c
index c8cc503236..ce03d3b602 100644
--- a/hw/audio/pl041.c
+++ b/hw/audio/pl041.c
@@ -534,7 +534,7 @@ static void pl041_init(Object *obj)
     sysbus_init_irq(dev, &s->irq);
 }
 
-static void pl041_realize(DeviceState *dev, Error **errp)
+static void pl041_realize(DeviceState *dev, Error *errp[static 1])
 {
     PL041State *s = PL041(dev);
 
diff --git a/hw/audio/sb16.c b/hw/audio/sb16.c
index 6ab2f6f89a..bc9e066cf9 100644
--- a/hw/audio/sb16.c
+++ b/hw/audio/sb16.c
@@ -1358,7 +1358,7 @@ static void sb16_initfn (Object *obj)
     s->cmd = -1;
 }
 
-static void sb16_realizefn (DeviceState *dev, Error **errp)
+static void sb16_realizefn (DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *isadev = ISA_DEVICE (dev);
     SB16State *s = SB16 (dev);
diff --git a/hw/block/block.c b/hw/block/block.c
index 27878d0087..bf13eb37fd 100644
--- a/hw/block/block.c
+++ b/hw/block/block.c
@@ -52,7 +52,7 @@ void blkconf_blocksizes(BlockConf *conf)
 }
 
 void blkconf_apply_backend_options(BlockConf *conf, bool readonly,
-                                   bool resizable, Error **errp)
+                                   bool resizable, Error *errp[static 1])
 {
     BlockBackend *blk = conf->blk;
     BlockdevOnError rerror, werror;
@@ -103,7 +103,7 @@ void blkconf_apply_backend_options(BlockConf *conf, bool 
readonly,
 
 void blkconf_geometry(BlockConf *conf, int *ptrans,
                       unsigned cyls_max, unsigned heads_max, unsigned secs_max,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     DriveInfo *dinfo;
 
diff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-blk.c
index 5556f0e64e..7d859e35a9 100644
--- a/hw/block/dataplane/virtio-blk.c
+++ b/hw/block/dataplane/virtio-blk.c
@@ -78,7 +78,7 @@ static void notify_guest_bh(void *opaque)
 /* Context: QEMU global mutex held */
 void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *conf,
                                   VirtIOBlockDataPlane **dataplane,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     VirtIOBlockDataPlane *s;
     BusState *qbus = BUS(qdev_get_parent_bus(DEVICE(vdev)));
diff --git a/hw/block/fdc.c b/hw/block/fdc.c
index 597ea719a7..d246858787 100644
--- a/hw/block/fdc.c
+++ b/hw/block/fdc.c
@@ -470,7 +470,7 @@ static void fd_revalidate(FDrive *drv)
     }
 }
 
-static void fd_change_cb(void *opaque, bool load, Error **errp)
+static void fd_change_cb(void *opaque, bool load, Error *errp[static 1])
 {
     FDrive *drive = opaque;
 
@@ -2520,7 +2520,7 @@ static void fdctrl_result_timer(void *opaque)
 
 /* Init functions */
 static void fdctrl_connect_drives(FDCtrl *fdctrl, DeviceState *fdc_dev,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     unsigned int i;
     FDrive *drive;
@@ -2630,7 +2630,7 @@ void sun4m_fdctrl_init(qemu_irq irq, hwaddr io_base,
 }
 
 static void fdctrl_realize_common(DeviceState *dev, FDCtrl *fdctrl,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     int i, j;
     static int command_tables_inited = 0;
@@ -2679,7 +2679,7 @@ static const MemoryRegionPortio fdc_portio_list[] = {
     PORTIO_END_OF_LIST(),
 };
 
-static void isabus_fdc_realize(DeviceState *dev, Error **errp)
+static void isabus_fdc_realize(DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *isadev = ISA_DEVICE(dev);
     FDCtrlISABus *isa = ISA_FDC(dev);
@@ -2742,7 +2742,7 @@ static void sysbus_fdc_common_initfn(Object *obj)
     qdev_init_gpio_in(dev, fdctrl_handle_tc, 1);
 }
 
-static void sysbus_fdc_common_realize(DeviceState *dev, Error **errp)
+static void sysbus_fdc_common_realize(DeviceState *dev, Error *errp[static 1])
 {
     FDCtrlSysBus *sys = SYSBUS_FDC(dev);
     FDCtrl *fdctrl = &sys->state;
diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c
index 190573cefa..2182855f66 100644
--- a/hw/block/m25p80.c
+++ b/hw/block/m25p80.c
@@ -1211,7 +1211,7 @@ static uint32_t m25p80_transfer8(SSISlave *ss, uint32_t 
tx)
     return r;
 }
 
-static void m25p80_realize(SSISlave *ss, Error **errp)
+static void m25p80_realize(SSISlave *ss, Error *errp[static 1])
 {
     Flash *s = M25P80(ss);
     M25P80Class *mc = M25P80_GET_CLASS(s);
diff --git a/hw/block/nand.c b/hw/block/nand.c
index 0d33ac281f..a2b6437d96 100644
--- a/hw/block/nand.c
+++ b/hw/block/nand.c
@@ -369,7 +369,7 @@ static const VMStateDescription vmstate_nand = {
     }
 };
 
-static void nand_realize(DeviceState *dev, Error **errp)
+static void nand_realize(DeviceState *dev, Error *errp[static 1])
 {
     int pagesize;
     NANDFlashState *s = NAND(dev);
diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c
index e634b128ce..caa6650513 100644
--- a/hw/block/pflash_cfi01.c
+++ b/hw/block/pflash_cfi01.c
@@ -699,7 +699,7 @@ static const MemoryRegionOps pflash_cfi01_ops = {
     .endianness = DEVICE_NATIVE_ENDIAN,
 };
 
-static void pflash_cfi01_realize(DeviceState *dev, Error **errp)
+static void pflash_cfi01_realize(DeviceState *dev, Error *errp[static 1])
 {
     pflash_t *pfl = CFI_PFLASH01(dev);
     uint64_t total_len;
diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c
index 2ef8c76b94..391024ce0e 100644
--- a/hw/block/pflash_cfi02.c
+++ b/hw/block/pflash_cfi02.c
@@ -593,7 +593,7 @@ static const MemoryRegionOps pflash_cfi02_ops_le = {
     .endianness = DEVICE_NATIVE_ENDIAN,
 };
 
-static void pflash_cfi02_realize(DeviceState *dev, Error **errp)
+static void pflash_cfi02_realize(DeviceState *dev, Error *errp[static 1])
 {
     pflash_t *pfl = CFI_PFLASH02(dev);
     uint32_t chip_len;
diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
index 11455faebc..389cd59421 100644
--- a/hw/block/virtio-blk.c
+++ b/hw/block/virtio-blk.c
@@ -776,7 +776,7 @@ static void virtio_blk_set_config(VirtIODevice *vdev, const 
uint8_t *config)
 }
 
 static uint64_t virtio_blk_get_features(VirtIODevice *vdev, uint64_t features,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     VirtIOBlock *s = VIRTIO_BLK(vdev);
 
@@ -904,7 +904,7 @@ static const BlockDevOps virtio_block_ops = {
     .resize_cb = virtio_blk_resize,
 };
 
-static void virtio_blk_device_realize(DeviceState *dev, Error **errp)
+static void virtio_blk_device_realize(DeviceState *dev, Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VirtIOBlock *s = VIRTIO_BLK(dev);
@@ -961,7 +961,8 @@ static void virtio_blk_device_realize(DeviceState *dev, 
Error **errp)
     blk_iostatus_enable(s->blk);
 }
 
-static void virtio_blk_device_unrealize(DeviceState *dev, Error **errp)
+static void virtio_blk_device_unrealize(DeviceState *dev,
+                                        Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VirtIOBlock *s = VIRTIO_BLK(dev);
diff --git a/hw/bt/hci-csr.c b/hw/bt/hci-csr.c
index d13192b9b5..c9732775e0 100644
--- a/hw/bt/hci-csr.c
+++ b/hw/bt/hci-csr.c
@@ -465,7 +465,7 @@ qemu_irq *csrhci_pins_get(Chardev *chr)
 static void csrhci_open(Chardev *chr,
                         ChardevBackend *backend,
                         bool *be_opened,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     struct csrhci_s *s = HCI_CHARDEV(chr);
 
diff --git a/hw/char/bcm2835_aux.c b/hw/char/bcm2835_aux.c
index 4d46ad60ae..b5d1bfa8f9 100644
--- a/hw/char/bcm2835_aux.c
+++ b/hw/char/bcm2835_aux.c
@@ -274,7 +274,7 @@ static void bcm2835_aux_init(Object *obj)
     sysbus_init_irq(sbd, &s->irq);
 }
 
-static void bcm2835_aux_realize(DeviceState *dev, Error **errp)
+static void bcm2835_aux_realize(DeviceState *dev, Error *errp[static 1])
 {
     BCM2835AuxState *s = BCM2835_AUX(dev);
 
diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c
index 4a2c124104..7aa4e091f0 100644
--- a/hw/char/cadence_uart.c
+++ b/hw/char/cadence_uart.c
@@ -477,7 +477,7 @@ static void cadence_uart_reset(DeviceState *dev)
     uart_update_status(s);
 }
 
-static void cadence_uart_realize(DeviceState *dev, Error **errp)
+static void cadence_uart_realize(DeviceState *dev, Error *errp[static 1])
 {
     CadenceUARTState *s = CADENCE_UART(dev);
 
diff --git a/hw/char/debugcon.c b/hw/char/debugcon.c
index 90e437edfb..fd97488501 100644
--- a/hw/char/debugcon.c
+++ b/hw/char/debugcon.c
@@ -85,7 +85,7 @@ static const MemoryRegionOps debugcon_ops = {
     .endianness = DEVICE_LITTLE_ENDIAN,
 };
 
-static void debugcon_realize_core(DebugconState *s, Error **errp)
+static void debugcon_realize_core(DebugconState *s, Error *errp[static 1])
 {
     if (!qemu_chr_fe_get_driver(&s->chr)) {
         error_setg(errp, "Can't create debugcon device, empty char device");
@@ -95,7 +95,7 @@ static void debugcon_realize_core(DebugconState *s, Error 
**errp)
     qemu_chr_fe_set_handlers(&s->chr, NULL, NULL, NULL, s, NULL, true);
 }
 
-static void debugcon_isa_realizefn(DeviceState *dev, Error **errp)
+static void debugcon_isa_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *d = ISA_DEVICE(dev);
     ISADebugconState *isa = ISA_DEBUGCON_DEVICE(dev);
diff --git a/hw/char/digic-uart.c b/hw/char/digic-uart.c
index 34306e11ff..ee353d1b90 100644
--- a/hw/char/digic-uart.c
+++ b/hw/char/digic-uart.c
@@ -141,7 +141,7 @@ static void digic_uart_reset(DeviceState *d)
     s->reg_st = ST_TX_RDY;
 }
 
-static void digic_uart_realize(DeviceState *dev, Error **errp)
+static void digic_uart_realize(DeviceState *dev, Error *errp[static 1])
 {
     DigicUartState *s = DIGIC_UART(dev);
 
diff --git a/hw/char/escc.c b/hw/char/escc.c
index 3f787632c7..ffd24cba71 100644
--- a/hw/char/escc.c
+++ b/hw/char/escc.c
@@ -1001,7 +1001,7 @@ static void escc_init1(Object *obj)
     sysbus_init_mmio(dev, &s->mmio);
 }
 
-static void escc_realize(DeviceState *dev, Error **errp)
+static void escc_realize(DeviceState *dev, Error *errp[static 1])
 {
     ESCCState *s = ESCC(dev);
     unsigned int i;
diff --git a/hw/char/etraxfs_ser.c b/hw/char/etraxfs_ser.c
index c1fba9f50f..2574d024c8 100644
--- a/hw/char/etraxfs_ser.c
+++ b/hw/char/etraxfs_ser.c
@@ -227,7 +227,7 @@ static void etraxfs_ser_init(Object *obj)
     sysbus_init_mmio(dev, &s->mmio);
 }
 
-static void etraxfs_ser_realize(DeviceState *dev, Error **errp)
+static void etraxfs_ser_realize(DeviceState *dev, Error *errp[static 1])
 {
     ETRAXSerial *s = ETRAX_SERIAL(dev);
 
diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c
index b51d44a321..77efa81781 100644
--- a/hw/char/exynos4210_uart.c
+++ b/hw/char/exynos4210_uart.c
@@ -639,7 +639,7 @@ static void exynos4210_uart_init(Object *obj)
     sysbus_init_irq(dev, &s->irq);
 }
 
-static void exynos4210_uart_realize(DeviceState *dev, Error **errp)
+static void exynos4210_uart_realize(DeviceState *dev, Error *errp[static 1])
 {
     Exynos4210UartState *s = EXYNOS4210_UART(dev);
 
diff --git a/hw/char/imx_serial.c b/hw/char/imx_serial.c
index af250305be..f410453273 100644
--- a/hw/char/imx_serial.c
+++ b/hw/char/imx_serial.c
@@ -308,7 +308,7 @@ static const struct MemoryRegionOps imx_serial_ops = {
     .endianness = DEVICE_NATIVE_ENDIAN,
 };
 
-static void imx_serial_realize(DeviceState *dev, Error **errp)
+static void imx_serial_realize(DeviceState *dev, Error *errp[static 1])
 {
     IMXSerialState *s = IMX_SERIAL(dev);
 
diff --git a/hw/char/ipoctal232.c b/hw/char/ipoctal232.c
index 337a3e566a..ee90bf1cdb 100644
--- a/hw/char/ipoctal232.c
+++ b/hw/char/ipoctal232.c
@@ -532,7 +532,7 @@ static void hostdev_event(void *opaque, int event)
     }
 }
 
-static void ipoctal_realize(DeviceState *dev, Error **errp)
+static void ipoctal_realize(DeviceState *dev, Error *errp[static 1])
 {
     IPOctalState *s = IPOCTAL(dev);
     unsigned i;
diff --git a/hw/char/lm32_juart.c b/hw/char/lm32_juart.c
index 3948dcd332..811e206009 100644
--- a/hw/char/lm32_juart.c
+++ b/hw/char/lm32_juart.c
@@ -114,7 +114,7 @@ static void juart_reset(DeviceState *d)
     s->jrx = 0;
 }
 
-static void lm32_juart_realize(DeviceState *dev, Error **errp)
+static void lm32_juart_realize(DeviceState *dev, Error *errp[static 1])
 {
     LM32JuartState *s = LM32_JUART(dev);
 
diff --git a/hw/char/lm32_uart.c b/hw/char/lm32_uart.c
index cff8c38f90..ffe951fa47 100644
--- a/hw/char/lm32_uart.c
+++ b/hw/char/lm32_uart.c
@@ -261,7 +261,7 @@ static void lm32_uart_init(Object *obj)
     sysbus_init_mmio(dev, &s->iomem);
 }
 
-static void lm32_uart_realize(DeviceState *dev, Error **errp)
+static void lm32_uart_realize(DeviceState *dev, Error *errp[static 1])
 {
     LM32UartState *s = LM32_UART(dev);
 
diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c
index fe12ad5ccb..a7677bd485 100644
--- a/hw/char/mcf_uart.c
+++ b/hw/char/mcf_uart.c
@@ -300,7 +300,7 @@ static void mcf_uart_instance_init(Object *obj)
     sysbus_init_irq(dev, &s->irq);
 }
 
-static void mcf_uart_realize(DeviceState *dev, Error **errp)
+static void mcf_uart_realize(DeviceState *dev, Error *errp[static 1])
 {
     mcf_uart_state *s = MCF_UART(dev);
 
diff --git a/hw/char/milkymist-uart.c b/hw/char/milkymist-uart.c
index e19d0f6520..e4b7e05ed3 100644
--- a/hw/char/milkymist-uart.c
+++ b/hw/char/milkymist-uart.c
@@ -194,7 +194,7 @@ static void milkymist_uart_reset(DeviceState *d)
     s->regs[R_STAT] = STAT_THRE;
 }
 
-static void milkymist_uart_realize(DeviceState *dev, Error **errp)
+static void milkymist_uart_realize(DeviceState *dev, Error *errp[static 1])
 {
     MilkymistUartState *s = MILKYMIST_UART(dev);
 
diff --git a/hw/char/parallel.c b/hw/char/parallel.c
index 75a1a2f55e..711e12e1fb 100644
--- a/hw/char/parallel.c
+++ b/hw/char/parallel.c
@@ -504,7 +504,7 @@ static const VMStateDescription vmstate_parallel_isa = {
 };
 
 
-static void parallel_isa_realizefn(DeviceState *dev, Error **errp)
+static void parallel_isa_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     static int index;
     ISADevice *isadev = ISA_DEVICE(dev);
diff --git a/hw/char/pl011.c b/hw/char/pl011.c
index 33802f00c8..c4946b3874 100644
--- a/hw/char/pl011.c
+++ b/hw/char/pl011.c
@@ -324,7 +324,7 @@ static void pl011_init(Object *obj)
     s->id = pl011_id_arm;
 }
 
-static void pl011_realize(DeviceState *dev, Error **errp)
+static void pl011_realize(DeviceState *dev, Error *errp[static 1])
 {
     PL011State *s = PL011(dev);
 
diff --git a/hw/char/serial-isa.c b/hw/char/serial-isa.c
index d7c5cc11fe..72525ba146 100644
--- a/hw/char/serial-isa.c
+++ b/hw/char/serial-isa.c
@@ -46,7 +46,7 @@ static const int isa_serial_irq[MAX_SERIAL_PORTS] = {
     4, 3, 4, 3
 };
 
-static void serial_isa_realizefn(DeviceState *dev, Error **errp)
+static void serial_isa_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     static int index;
     ISADevice *isadev = ISA_DEVICE(dev);
diff --git a/hw/char/serial-pci.c b/hw/char/serial-pci.c
index 60074eb114..9c599bf166 100644
--- a/hw/char/serial-pci.c
+++ b/hw/char/serial-pci.c
@@ -51,7 +51,7 @@ typedef struct PCIMultiSerialState {
 
 static void multi_serial_pci_exit(PCIDevice *dev);
 
-static void serial_pci_realize(PCIDevice *dev, Error **errp)
+static void serial_pci_realize(PCIDevice *dev, Error *errp[static 1])
 {
     PCISerialState *pci = DO_UPCAST(PCISerialState, dev, dev);
     SerialState *s = &pci->state;
@@ -84,7 +84,7 @@ static void multi_serial_irq_mux(void *opaque, int n, int 
level)
     pci_set_irq(&pci->dev, pending);
 }
 
-static void multi_serial_pci_realize(PCIDevice *dev, Error **errp)
+static void multi_serial_pci_realize(PCIDevice *dev, Error *errp[static 1])
 {
     PCIDeviceClass *pc = PCI_DEVICE_GET_CLASS(dev);
     PCIMultiSerialState *pci = DO_UPCAST(PCIMultiSerialState, dev, dev);
diff --git a/hw/char/serial.c b/hw/char/serial.c
index e1f12507bf..c0625b3481 100644
--- a/hw/char/serial.c
+++ b/hw/char/serial.c
@@ -884,7 +884,7 @@ static void serial_reset(void *opaque)
     s->msr &= ~UART_MSR_ANY_DELTA;
 }
 
-void serial_realize_core(SerialState *s, Error **errp)
+void serial_realize_core(SerialState *s, Error *errp[static 1])
 {
     if (!qemu_chr_fe_get_driver(&s->chr)) {
         error_setg(errp, "Can't create serial device, empty char device");
diff --git a/hw/char/spapr_vty.c b/hw/char/spapr_vty.c
index 8f02f3a612..4947d8dcd6 100644
--- a/hw/char/spapr_vty.c
+++ b/hw/char/spapr_vty.c
@@ -74,7 +74,7 @@ void vty_putchars(VIOsPAPRDevice *sdev, uint8_t *buf, int len)
     qemu_chr_fe_write_all(&dev->chardev, buf, len);
 }
 
-static void spapr_vty_realize(VIOsPAPRDevice *sdev, Error **errp)
+static void spapr_vty_realize(VIOsPAPRDevice *sdev, Error *errp[static 1])
 {
     VIOsPAPRVTYDevice *dev = VIO_SPAPR_VTY_DEVICE(sdev);
 
diff --git a/hw/char/stm32f2xx_usart.c b/hw/char/stm32f2xx_usart.c
index 59872e6d3b..244d173c14 100644
--- a/hw/char/stm32f2xx_usart.c
+++ b/hw/char/stm32f2xx_usart.c
@@ -202,7 +202,7 @@ static void stm32f2xx_usart_init(Object *obj)
     sysbus_init_mmio(SYS_BUS_DEVICE(obj), &s->mmio);
 }
 
-static void stm32f2xx_usart_realize(DeviceState *dev, Error **errp)
+static void stm32f2xx_usart_realize(DeviceState *dev, Error *errp[static 1])
 {
     STM32F2XXUsartState *s = STM32F2XX_USART(dev);
 
diff --git a/hw/char/terminal3270.c b/hw/char/terminal3270.c
index 7b10a04f18..9d13a57ff2 100644
--- a/hw/char/terminal3270.c
+++ b/hw/char/terminal3270.c
@@ -168,7 +168,7 @@ static void chr_event(void *opaque, int event)
     }
 }
 
-static void terminal_init(EmulatedCcw3270Device *dev, Error **errp)
+static void terminal_init(EmulatedCcw3270Device *dev, Error *errp[static 1])
 {
     Terminal3270 *t = TERMINAL_3270(dev);
     static bool terminal_available;
diff --git a/hw/char/virtio-console.c b/hw/char/virtio-console.c
index 0cb1668c8a..5feeea0b4d 100644
--- a/hw/char/virtio-console.c
+++ b/hw/char/virtio-console.c
@@ -163,7 +163,7 @@ static void chr_event(void *opaque, int event)
     }
 }
 
-static void virtconsole_realize(DeviceState *dev, Error **errp)
+static void virtconsole_realize(DeviceState *dev, Error *errp[static 1])
 {
     VirtIOSerialPort *port = VIRTIO_SERIAL_PORT(dev);
     VirtConsole *vcon = VIRTIO_CONSOLE(dev);
@@ -197,7 +197,7 @@ static void virtconsole_realize(DeviceState *dev, Error 
**errp)
     }
 }
 
-static void virtconsole_unrealize(DeviceState *dev, Error **errp)
+static void virtconsole_unrealize(DeviceState *dev, Error *errp[static 1])
 {
     VirtConsole *vcon = VIRTIO_CONSOLE(dev);
 
diff --git a/hw/char/virtio-serial-bus.c b/hw/char/virtio-serial-bus.c
index 8f0d130d49..a0a85b9332 100644
--- a/hw/char/virtio-serial-bus.c
+++ b/hw/char/virtio-serial-bus.c
@@ -548,7 +548,7 @@ static void handle_input(VirtIODevice *vdev, VirtQueue *vq)
 }
 
 static uint64_t get_features(VirtIODevice *vdev, uint64_t features,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     VirtIOSerial *vser;
 
@@ -919,7 +919,8 @@ static void remove_port(VirtIOSerial *vser, uint32_t 
port_id)
     send_control_event(vser, port->id, VIRTIO_CONSOLE_PORT_REMOVE, 1);
 }
 
-static void virtser_port_device_realize(DeviceState *dev, Error **errp)
+static void virtser_port_device_realize(DeviceState *dev,
+                                        Error *errp[static 1])
 {
     VirtIOSerialPort *port = VIRTIO_SERIAL_PORT(dev);
     VirtIOSerialPortClass *vsc = VIRTIO_SERIAL_PORT_GET_CLASS(port);
@@ -980,7 +981,7 @@ static void virtser_port_device_realize(DeviceState *dev, 
Error **errp)
 }
 
 static void virtser_port_device_plug(HotplugHandler *hotplug_dev,
-                                     DeviceState *dev, Error **errp)
+                                     DeviceState *dev, Error *errp[static 1])
 {
     VirtIOSerialPort *port = VIRTIO_SERIAL_PORT(dev);
 
@@ -994,7 +995,8 @@ static void virtser_port_device_plug(HotplugHandler 
*hotplug_dev,
     virtio_notify_config(VIRTIO_DEVICE(hotplug_dev));
 }
 
-static void virtser_port_device_unrealize(DeviceState *dev, Error **errp)
+static void virtser_port_device_unrealize(DeviceState *dev,
+                                          Error *errp[static 1])
 {
     VirtIOSerialPort *port = VIRTIO_SERIAL_PORT(dev);
     VirtIOSerialPortClass *vsc = VIRTIO_SERIAL_PORT_GET_CLASS(dev);
@@ -1010,7 +1012,8 @@ static void virtser_port_device_unrealize(DeviceState 
*dev, Error **errp)
     }
 }
 
-static void virtio_serial_device_realize(DeviceState *dev, Error **errp)
+static void virtio_serial_device_realize(DeviceState *dev,
+                                         Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VirtIOSerial *vser = VIRTIO_SERIAL(dev);
@@ -1106,7 +1109,8 @@ static const TypeInfo virtio_serial_port_type_info = {
     .class_init = virtio_serial_port_class_init,
 };
 
-static void virtio_serial_device_unrealize(DeviceState *dev, Error **errp)
+static void virtio_serial_device_unrealize(DeviceState *dev,
+                                           Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VirtIOSerial *vser = VIRTIO_SERIAL(dev);
diff --git a/hw/char/xilinx_uartlite.c b/hw/char/xilinx_uartlite.c
index 71ed2fc1be..e7a6e048b0 100644
--- a/hw/char/xilinx_uartlite.c
+++ b/hw/char/xilinx_uartlite.c
@@ -207,7 +207,7 @@ static void uart_event(void *opaque, int event)
 
 }
 
-static void xilinx_uartlite_realize(DeviceState *dev, Error **errp)
+static void xilinx_uartlite_realize(DeviceState *dev, Error *errp[static 1])
 {
     XilinxUARTLite *s = XILINX_UARTLITE(dev);
 
diff --git a/hw/core/bus.c b/hw/core/bus.c
index ab1925bee9..fc9133049f 100644
--- a/hw/core/bus.c
+++ b/hw/core/bus.c
@@ -23,19 +23,20 @@
 #include "qapi/error.h"
 
 static void qbus_set_hotplug_handler_internal(BusState *bus, Object *handler,
-                                              Error **errp)
+                                              Error *errp[static 1])
 {
 
     object_property_set_link(OBJECT(bus), OBJECT(handler),
                              QDEV_HOTPLUG_HANDLER_PROPERTY, errp);
 }
 
-void qbus_set_hotplug_handler(BusState *bus, DeviceState *handler, Error 
**errp)
+void qbus_set_hotplug_handler(BusState *bus, DeviceState *handler,
+                              Error *errp[static 1])
 {
     qbus_set_hotplug_handler_internal(bus, OBJECT(handler), errp);
 }
 
-void qbus_set_bus_hotplug_handler(BusState *bus, Error **errp)
+void qbus_set_bus_hotplug_handler(BusState *bus, Error *errp[static 1])
 {
     qbus_set_hotplug_handler_internal(bus, OBJECT(bus), errp);
 }
@@ -147,14 +148,14 @@ BusState *qbus_create(const char *typename, DeviceState 
*parent, const char *nam
     return bus;
 }
 
-static bool bus_get_realized(Object *obj, Error **errp)
+static bool bus_get_realized(Object *obj, Error *errp[static 1])
 {
     BusState *bus = BUS(obj);
 
     return bus->realized;
 }
 
-static void bus_set_realized(Object *obj, bool value, Error **errp)
+static void bus_set_realized(Object *obj, bool value, Error *errp[static 1])
 {
     BusState *bus = BUS(obj);
     BusClass *bc = BUS_GET_CLASS(bus);
diff --git a/hw/core/generic-loader.c b/hw/core/generic-loader.c
index 46012673c3..01f20d5a1f 100644
--- a/hw/core/generic-loader.c
+++ b/hw/core/generic-loader.c
@@ -58,7 +58,7 @@ static void generic_loader_reset(void *opaque)
     }
 }
 
-static void generic_loader_realize(DeviceState *dev, Error **errp)
+static void generic_loader_realize(DeviceState *dev, Error *errp[static 1])
 {
     GenericLoaderState *s = GENERIC_LOADER(dev);
     hwaddr entry;
@@ -170,7 +170,7 @@ static void generic_loader_realize(DeviceState *dev, Error 
**errp)
     }
 }
 
-static void generic_loader_unrealize(DeviceState *dev, Error **errp)
+static void generic_loader_unrealize(DeviceState *dev, Error *errp[static 1])
 {
     qemu_unregister_reset(generic_loader_reset, dev);
 }
diff --git a/hw/core/hotplug.c b/hw/core/hotplug.c
index 17ac986685..1390611be3 100644
--- a/hw/core/hotplug.c
+++ b/hw/core/hotplug.c
@@ -15,7 +15,7 @@
 
 void hotplug_handler_pre_plug(HotplugHandler *plug_handler,
                               DeviceState *plugged_dev,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     HotplugHandlerClass *hdc = HOTPLUG_HANDLER_GET_CLASS(plug_handler);
 
@@ -26,7 +26,7 @@ void hotplug_handler_pre_plug(HotplugHandler *plug_handler,
 
 void hotplug_handler_plug(HotplugHandler *plug_handler,
                           DeviceState *plugged_dev,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     HotplugHandlerClass *hdc = HOTPLUG_HANDLER_GET_CLASS(plug_handler);
 
@@ -37,7 +37,7 @@ void hotplug_handler_plug(HotplugHandler *plug_handler,
 
 void hotplug_handler_unplug_request(HotplugHandler *plug_handler,
                                     DeviceState *plugged_dev,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     HotplugHandlerClass *hdc = HOTPLUG_HANDLER_GET_CLASS(plug_handler);
 
@@ -48,7 +48,7 @@ void hotplug_handler_unplug_request(HotplugHandler 
*plug_handler,
 
 void hotplug_handler_unplug(HotplugHandler *plug_handler,
                             DeviceState *plugged_dev,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     HotplugHandlerClass *hdc = HOTPLUG_HANDLER_GET_CLASS(plug_handler);
 
diff --git a/hw/core/loader.c b/hw/core/loader.c
index f72930ca4a..ac6deb1f63 100644
--- a/hw/core/loader.c
+++ b/hw/core/loader.c
@@ -362,7 +362,8 @@ const char *load_elf_strerror(int error)
     }
 }
 
-void load_elf_hdr(const char *filename, void *hdr, bool *is64, Error **errp)
+void load_elf_hdr(const char *filename, void *hdr, bool *is64,
+                  Error *errp[static 1])
 {
     int fd;
     uint8_t e_ident_local[EI_NIDENT];
diff --git a/hw/core/machine.c b/hw/core/machine.c
index 61e921c9ef..4cc3bac899 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -23,14 +23,15 @@
 #include "sysemu/numa.h"
 #include "sysemu/qtest.h"
 
-static char *machine_get_accel(Object *obj, Error **errp)
+static char *machine_get_accel(Object *obj, Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
     return g_strdup(ms->accel);
 }
 
-static void machine_set_accel(Object *obj, const char *value, Error **errp)
+static void machine_set_accel(Object *obj, const char *value,
+                              Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
@@ -40,7 +41,7 @@ static void machine_set_accel(Object *obj, const char *value, 
Error **errp)
 
 static void machine_set_kernel_irqchip(Object *obj, Visitor *v,
                                        const char *name, void *opaque,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     Error *err = NULL;
     MachineState *ms = MACHINE(obj);
@@ -78,7 +79,7 @@ static void machine_set_kernel_irqchip(Object *obj, Visitor 
*v,
 
 static void machine_get_kvm_shadow_mem(Object *obj, Visitor *v,
                                        const char *name, void *opaque,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
     int64_t value = ms->kvm_shadow_mem;
@@ -88,7 +89,7 @@ static void machine_get_kvm_shadow_mem(Object *obj, Visitor 
*v,
 
 static void machine_set_kvm_shadow_mem(Object *obj, Visitor *v,
                                        const char *name, void *opaque,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
     int64_t value;
@@ -101,14 +102,15 @@ static void machine_set_kvm_shadow_mem(Object *obj, 
Visitor *v,
     ms->kvm_shadow_mem = value;
 }
 
-static char *machine_get_kernel(Object *obj, Error **errp)
+static char *machine_get_kernel(Object *obj, Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
     return g_strdup(ms->kernel_filename);
 }
 
-static void machine_set_kernel(Object *obj, const char *value, Error **errp)
+static void machine_set_kernel(Object *obj, const char *value,
+                               Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
@@ -116,14 +118,15 @@ static void machine_set_kernel(Object *obj, const char 
*value, Error **errp)
     ms->kernel_filename = g_strdup(value);
 }
 
-static char *machine_get_initrd(Object *obj, Error **errp)
+static char *machine_get_initrd(Object *obj, Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
     return g_strdup(ms->initrd_filename);
 }
 
-static void machine_set_initrd(Object *obj, const char *value, Error **errp)
+static void machine_set_initrd(Object *obj, const char *value,
+                               Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
@@ -131,14 +134,15 @@ static void machine_set_initrd(Object *obj, const char 
*value, Error **errp)
     ms->initrd_filename = g_strdup(value);
 }
 
-static char *machine_get_append(Object *obj, Error **errp)
+static char *machine_get_append(Object *obj, Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
     return g_strdup(ms->kernel_cmdline);
 }
 
-static void machine_set_append(Object *obj, const char *value, Error **errp)
+static void machine_set_append(Object *obj, const char *value,
+                               Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
@@ -146,14 +150,15 @@ static void machine_set_append(Object *obj, const char 
*value, Error **errp)
     ms->kernel_cmdline = g_strdup(value);
 }
 
-static char *machine_get_dtb(Object *obj, Error **errp)
+static char *machine_get_dtb(Object *obj, Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
     return g_strdup(ms->dtb);
 }
 
-static void machine_set_dtb(Object *obj, const char *value, Error **errp)
+static void machine_set_dtb(Object *obj, const char *value,
+                            Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
@@ -161,14 +166,15 @@ static void machine_set_dtb(Object *obj, const char 
*value, Error **errp)
     ms->dtb = g_strdup(value);
 }
 
-static char *machine_get_dumpdtb(Object *obj, Error **errp)
+static char *machine_get_dumpdtb(Object *obj, Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
     return g_strdup(ms->dumpdtb);
 }
 
-static void machine_set_dumpdtb(Object *obj, const char *value, Error **errp)
+static void machine_set_dumpdtb(Object *obj, const char *value,
+                                Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
@@ -178,7 +184,7 @@ static void machine_set_dumpdtb(Object *obj, const char 
*value, Error **errp)
 
 static void machine_get_phandle_start(Object *obj, Visitor *v,
                                       const char *name, void *opaque,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
     int64_t value = ms->phandle_start;
@@ -188,7 +194,7 @@ static void machine_get_phandle_start(Object *obj, Visitor 
*v,
 
 static void machine_set_phandle_start(Object *obj, Visitor *v,
                                       const char *name, void *opaque,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
     int64_t value;
@@ -201,14 +207,15 @@ static void machine_set_phandle_start(Object *obj, 
Visitor *v,
     ms->phandle_start = value;
 }
 
-static char *machine_get_dt_compatible(Object *obj, Error **errp)
+static char *machine_get_dt_compatible(Object *obj, Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
     return g_strdup(ms->dt_compatible);
 }
 
-static void machine_set_dt_compatible(Object *obj, const char *value, Error 
**errp)
+static void machine_set_dt_compatible(Object *obj, const char *value,
+                                      Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
@@ -216,42 +223,44 @@ static void machine_set_dt_compatible(Object *obj, const 
char *value, Error **er
     ms->dt_compatible = g_strdup(value);
 }
 
-static bool machine_get_dump_guest_core(Object *obj, Error **errp)
+static bool machine_get_dump_guest_core(Object *obj, Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
     return ms->dump_guest_core;
 }
 
-static void machine_set_dump_guest_core(Object *obj, bool value, Error **errp)
+static void machine_set_dump_guest_core(Object *obj, bool value,
+                                        Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
     ms->dump_guest_core = value;
 }
 
-static bool machine_get_mem_merge(Object *obj, Error **errp)
+static bool machine_get_mem_merge(Object *obj, Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
     return ms->mem_merge;
 }
 
-static void machine_set_mem_merge(Object *obj, bool value, Error **errp)
+static void machine_set_mem_merge(Object *obj, bool value,
+                                  Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
     ms->mem_merge = value;
 }
 
-static bool machine_get_usb(Object *obj, Error **errp)
+static bool machine_get_usb(Object *obj, Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
     return ms->usb;
 }
 
-static void machine_set_usb(Object *obj, bool value, Error **errp)
+static void machine_set_usb(Object *obj, bool value, Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
@@ -259,42 +268,45 @@ static void machine_set_usb(Object *obj, bool value, 
Error **errp)
     ms->usb_disabled = !value;
 }
 
-static bool machine_get_graphics(Object *obj, Error **errp)
+static bool machine_get_graphics(Object *obj, Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
     return ms->enable_graphics;
 }
 
-static void machine_set_graphics(Object *obj, bool value, Error **errp)
+static void machine_set_graphics(Object *obj, bool value,
+                                 Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
     ms->enable_graphics = value;
 }
 
-static bool machine_get_igd_gfx_passthru(Object *obj, Error **errp)
+static bool machine_get_igd_gfx_passthru(Object *obj, Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
     return ms->igd_gfx_passthru;
 }
 
-static void machine_set_igd_gfx_passthru(Object *obj, bool value, Error **errp)
+static void machine_set_igd_gfx_passthru(Object *obj, bool value,
+                                         Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
     ms->igd_gfx_passthru = value;
 }
 
-static char *machine_get_firmware(Object *obj, Error **errp)
+static char *machine_get_firmware(Object *obj, Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
     return g_strdup(ms->firmware);
 }
 
-static void machine_set_firmware(Object *obj, const char *value, Error **errp)
+static void machine_set_firmware(Object *obj, const char *value,
+                                 Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
@@ -302,14 +314,15 @@ static void machine_set_firmware(Object *obj, const char 
*value, Error **errp)
     ms->firmware = g_strdup(value);
 }
 
-static void machine_set_suppress_vmdesc(Object *obj, bool value, Error **errp)
+static void machine_set_suppress_vmdesc(Object *obj, bool value,
+                                        Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
     ms->suppress_vmdesc = value;
 }
 
-static bool machine_get_suppress_vmdesc(Object *obj, Error **errp)
+static bool machine_get_suppress_vmdesc(Object *obj, Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
@@ -317,14 +330,15 @@ static bool machine_get_suppress_vmdesc(Object *obj, 
Error **errp)
 }
 
 static void machine_set_enforce_config_section(Object *obj, bool value,
-                                             Error **errp)
+                                             Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
     ms->enforce_config_section = value;
 }
 
-static bool machine_get_enforce_config_section(Object *obj, Error **errp)
+static bool machine_get_enforce_config_section(Object *obj,
+                                               Error *errp[static 1])
 {
     MachineState *ms = MACHINE(obj);
 
@@ -413,7 +427,8 @@ HotpluggableCPUList 
*machine_query_hotpluggable_cpus(MachineState *machine)
  * Empty subset is disallowed and function will return with error in this case.
  */
 void machine_set_cpu_numa_node(MachineState *machine,
-                               const CpuInstanceProperties *props, Error 
**errp)
+                               const CpuInstanceProperties *props,
+                               Error *errp[static 1])
 {
     MachineClass *mc = MACHINE_GET_CLASS(machine);
     bool match = false;
diff --git a/hw/core/nmi.c b/hw/core/nmi.c
index bfd0896daf..948a9e09cf 100644
--- a/hw/core/nmi.c
+++ b/hw/core/nmi.c
@@ -57,7 +57,7 @@ static void nmi_children(Object *o, struct do_nmi_s *ns)
     object_child_foreach(o, do_nmi, ns);
 }
 
-void nmi_monitor_handle(int cpu_index, Error **errp)
+void nmi_monitor_handle(int cpu_index, Error *errp[static 1])
 {
     struct do_nmi_s ns = {
         .cpu_index = cpu_index,
diff --git a/hw/core/or-irq.c b/hw/core/or-irq.c
index f9d76c4641..cd4f0ddf7a 100644
--- a/hw/core/or-irq.c
+++ b/hw/core/or-irq.c
@@ -50,7 +50,7 @@ static void or_irq_reset(DeviceState *dev)
     }
 }
 
-static void or_irq_realize(DeviceState *dev, Error **errp)
+static void or_irq_realize(DeviceState *dev, Error *errp[static 1])
 {
     qemu_or_irq *s = OR_IRQ(dev);
 
diff --git a/hw/core/platform-bus.c b/hw/core/platform-bus.c
index d3286e6570..c967bc95da 100644
--- a/hw/core/platform-bus.c
+++ b/hw/core/platform-bus.c
@@ -195,7 +195,7 @@ static void platform_bus_init_notify(Notifier *notifier, 
void *data)
     foreach_dynamic_sysbus_device(link_sysbus_device, pb);
 }
 
-static void platform_bus_realize(DeviceState *dev, Error **errp)
+static void platform_bus_realize(DeviceState *dev, Error *errp[static 1])
 {
     PlatformBusDevice *pbus;
     SysBusDevice *d;
diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-system.c
index 68c97c08dc..c6e4d5d46c 100644
--- a/hw/core/qdev-properties-system.c
+++ b/hw/core/qdev-properties-system.c
@@ -25,7 +25,7 @@
 
 static void get_pointer(Object *obj, Visitor *v, Property *prop,
                         char *(*print)(void *ptr),
-                        const char *name, Error **errp)
+                        const char *name, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     void **ptr = qdev_get_prop_ptr(dev, prop);
@@ -40,7 +40,7 @@ static void set_pointer(Object *obj, Visitor *v, Property 
*prop,
                         void (*parse)(DeviceState *dev, const char *str,
                                       void **ptr, const char *propname,
                                       Error **errp),
-                        const char *name, Error **errp)
+                        const char *name, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     void **ptr = qdev_get_prop_ptr(dev, prop);
@@ -67,7 +67,7 @@ static void set_pointer(Object *obj, Visitor *v, Property 
*prop,
 /* --- drive --- */
 
 static void parse_drive(DeviceState *dev, const char *str, void **ptr,
-                        const char *propname, Error **errp)
+                        const char *propname, Error *errp[static 1])
 {
     BlockBackend *blk;
     bool blk_created = false;
@@ -146,13 +146,13 @@ static char *print_drive(void *ptr)
 }
 
 static void get_drive(Object *obj, Visitor *v, const char *name, void *opaque,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     get_pointer(obj, v, opaque, print_drive, name, errp);
 }
 
 static void set_drive(Object *obj, Visitor *v, const char *name, void *opaque,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     set_pointer(obj, v, opaque, parse_drive, name, errp);
 }
@@ -168,7 +168,7 @@ PropertyInfo qdev_prop_drive = {
 /* --- character device --- */
 
 static void get_chr(Object *obj, Visitor *v, const char *name, void *opaque,
-                    Error **errp)
+                    Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     CharBackend *be = qdev_get_prop_ptr(dev, opaque);
@@ -180,7 +180,7 @@ static void get_chr(Object *obj, Visitor *v, const char 
*name, void *opaque,
 }
 
 static void set_chr(Object *obj, Visitor *v, const char *name, void *opaque,
-                    Error **errp)
+                    Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -234,7 +234,7 @@ PropertyInfo qdev_prop_chr = {
 
 /* --- netdev device --- */
 static void get_netdev(Object *obj, Visitor *v, const char *name,
-                       void *opaque, Error **errp)
+                       void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -246,7 +246,7 @@ static void get_netdev(Object *obj, Visitor *v, const char 
*name,
 }
 
 static void set_netdev(Object *obj, Visitor *v, const char *name,
-                       void *opaque, Error **errp)
+                       void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -331,7 +331,7 @@ static int print_vlan(DeviceState *dev, Property *prop, 
char *dest, size_t len)
 }
 
 static void get_vlan(Object *obj, Visitor *v, const char *name, void *opaque,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -349,7 +349,7 @@ static void get_vlan(Object *obj, Visitor *v, const char 
*name, void *opaque,
 }
 
 static void set_vlan(Object *obj, Visitor *v, const char *name, void *opaque,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -394,7 +394,7 @@ PropertyInfo qdev_prop_vlan = {
 };
 
 void qdev_prop_set_drive(DeviceState *dev, const char *name,
-                         BlockBackend *value, Error **errp)
+                         BlockBackend *value, Error *errp[static 1])
 {
     const char *ref = "";
 
diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
index f289841484..dc440b69c6 100644
--- a/hw/core/qdev-properties.c
+++ b/hw/core/qdev-properties.c
@@ -12,7 +12,7 @@
 #include "chardev/char.h"
 
 void qdev_prop_set_after_realize(DeviceState *dev, const char *name,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     if (dev->id) {
         error_setg(errp, "Attempt to set property '%s' on device '%s' "
@@ -26,7 +26,8 @@ void qdev_prop_set_after_realize(DeviceState *dev, const char 
*name,
 }
 
 void qdev_prop_allow_set_link_before_realize(Object *obj, const char *name,
-                                             Object *val, Error **errp)
+                                             Object *val,
+                                             Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
 
@@ -45,7 +46,7 @@ void *qdev_get_prop_ptr(DeviceState *dev, Property *prop)
 }
 
 static void get_enum(Object *obj, Visitor *v, const char *name, void *opaque,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -55,7 +56,7 @@ static void get_enum(Object *obj, Visitor *v, const char 
*name, void *opaque,
 }
 
 static void set_enum(Object *obj, Visitor *v, const char *name, void *opaque,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -89,7 +90,7 @@ static void bit_prop_set(DeviceState *dev, Property *props, 
bool val)
 }
 
 static void prop_get_bit(Object *obj, Visitor *v, const char *name,
-                         void *opaque, Error **errp)
+                         void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -100,7 +101,7 @@ static void prop_get_bit(Object *obj, Visitor *v, const 
char *name,
 }
 
 static void prop_set_bit(Object *obj, Visitor *v, const char *name,
-                         void *opaque, Error **errp)
+                         void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -145,7 +146,7 @@ static void bit64_prop_set(DeviceState *dev, Property 
*props, bool val)
 }
 
 static void prop_get_bit64(Object *obj, Visitor *v, const char *name,
-                           void *opaque, Error **errp)
+                           void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -156,7 +157,7 @@ static void prop_get_bit64(Object *obj, Visitor *v, const 
char *name,
 }
 
 static void prop_set_bit64(Object *obj, Visitor *v, const char *name,
-                           void *opaque, Error **errp)
+                           void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -184,7 +185,7 @@ PropertyInfo qdev_prop_bit64 = {
 /* --- bool --- */
 
 static void get_bool(Object *obj, Visitor *v, const char *name, void *opaque,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -194,7 +195,7 @@ static void get_bool(Object *obj, Visitor *v, const char 
*name, void *opaque,
 }
 
 static void set_bool(Object *obj, Visitor *v, const char *name, void *opaque,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -217,7 +218,7 @@ PropertyInfo qdev_prop_bool = {
 /* --- 8bit integer --- */
 
 static void get_uint8(Object *obj, Visitor *v, const char *name, void *opaque,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -227,7 +228,7 @@ static void get_uint8(Object *obj, Visitor *v, const char 
*name, void *opaque,
 }
 
 static void set_uint8(Object *obj, Visitor *v, const char *name, void *opaque,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -250,7 +251,7 @@ PropertyInfo qdev_prop_uint8 = {
 /* --- 16bit integer --- */
 
 static void get_uint16(Object *obj, Visitor *v, const char *name,
-                       void *opaque, Error **errp)
+                       void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -260,7 +261,7 @@ static void get_uint16(Object *obj, Visitor *v, const char 
*name,
 }
 
 static void set_uint16(Object *obj, Visitor *v, const char *name,
-                       void *opaque, Error **errp)
+                       void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -283,7 +284,7 @@ PropertyInfo qdev_prop_uint16 = {
 /* --- 32bit integer --- */
 
 static void get_uint32(Object *obj, Visitor *v, const char *name,
-                       void *opaque, Error **errp)
+                       void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -293,7 +294,7 @@ static void get_uint32(Object *obj, Visitor *v, const char 
*name,
 }
 
 static void set_uint32(Object *obj, Visitor *v, const char *name,
-                       void *opaque, Error **errp)
+                       void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -308,7 +309,7 @@ static void set_uint32(Object *obj, Visitor *v, const char 
*name,
 }
 
 static void get_int32(Object *obj, Visitor *v, const char *name, void *opaque,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -318,7 +319,7 @@ static void get_int32(Object *obj, Visitor *v, const char 
*name, void *opaque,
 }
 
 static void set_int32(Object *obj, Visitor *v, const char *name, void *opaque,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -347,7 +348,7 @@ PropertyInfo qdev_prop_int32 = {
 /* --- 64bit integer --- */
 
 static void get_uint64(Object *obj, Visitor *v, const char *name,
-                       void *opaque, Error **errp)
+                       void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -357,7 +358,7 @@ static void get_uint64(Object *obj, Visitor *v, const char 
*name,
 }
 
 static void set_uint64(Object *obj, Visitor *v, const char *name,
-                       void *opaque, Error **errp)
+                       void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -386,7 +387,7 @@ static void release_string(Object *obj, const char *name, 
void *opaque)
 }
 
 static void get_string(Object *obj, Visitor *v, const char *name,
-                       void *opaque, Error **errp)
+                       void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -401,7 +402,7 @@ static void get_string(Object *obj, Visitor *v, const char 
*name,
 }
 
 static void set_string(Object *obj, Visitor *v, const char *name,
-                       void *opaque, Error **errp)
+                       void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -443,7 +444,7 @@ PropertyInfo qdev_prop_ptr = {
  *   01-02-03-04-05-06
  */
 static void get_mac(Object *obj, Visitor *v, const char *name, void *opaque,
-                    Error **errp)
+                    Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -459,7 +460,7 @@ static void get_mac(Object *obj, Visitor *v, const char 
*name, void *opaque,
 }
 
 static void set_mac(Object *obj, Visitor *v, const char *name, void *opaque,
-                    Error **errp)
+                    Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -574,7 +575,7 @@ PropertyInfo qdev_prop_fdc_drive_type = {
  * bus-local address, i.e. "$slot" or "$slot.$fn"
  */
 static void set_pci_devfn(Object *obj, Visitor *v, const char *name,
-                          void *opaque, Error **errp)
+                          void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -645,7 +646,7 @@ PropertyInfo qdev_prop_pci_devfn = {
 /* --- blocksize --- */
 
 static void set_blocksize(Object *obj, Visitor *v, const char *name,
-                          void *opaque, Error **errp)
+                          void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -690,7 +691,7 @@ PropertyInfo qdev_prop_blocksize = {
 /* --- pci host address --- */
 
 static void get_pci_host_devaddr(Object *obj, Visitor *v, const char *name,
-                                 void *opaque, Error **errp)
+                                 void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -717,7 +718,7 @@ static void get_pci_host_devaddr(Object *obj, Visitor *v, 
const char *name,
  *   if <domain> is not supplied, it's assumed to be 0.
  */
 static void set_pci_host_devaddr(Object *obj, Visitor *v, const char *name,
-                                 void *opaque, Error **errp)
+                                 void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -829,7 +830,7 @@ static void array_element_release(Object *obj, const char 
*name, void *opaque)
 }
 
 static void set_prop_arraylen(Object *obj, Visitor *v, const char *name,
-                              void *opaque, Error **errp)
+                              void *opaque, Error *errp[static 1])
 {
     /* Setter for the property which defines the length of a
      * variable-sized property array. As well as actually setting the
@@ -1115,7 +1116,7 @@ void qdev_prop_set_globals(DeviceState *dev)
 /* --- 64bit unsigned int 'size' type --- */
 
 static void get_size(Object *obj, Visitor *v, const char *name, void *opaque,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -1125,7 +1126,7 @@ static void get_size(Object *obj, Visitor *v, const char 
*name, void *opaque,
 }
 
 static void set_size(Object *obj, Visitor *v, const char *name, void *opaque,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index cd95d8ce63..cedb933a0a 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -219,7 +219,7 @@ void device_listener_unregister(DeviceListener *listener)
     QTAILQ_REMOVE(&device_listeners, listener, link);
 }
 
-static void device_realize(DeviceState *dev, Error **errp)
+static void device_realize(DeviceState *dev, Error *errp[static 1])
 {
     DeviceClass *dc = DEVICE_GET_CLASS(dev);
 
@@ -232,7 +232,7 @@ static void device_realize(DeviceState *dev, Error **errp)
     }
 }
 
-static void device_unrealize(DeviceState *dev, Error **errp)
+static void device_unrealize(DeviceState *dev, Error *errp[static 1])
 {
     DeviceClass *dc = DEVICE_GET_CLASS(dev);
 
@@ -309,7 +309,7 @@ void qbus_reset_all_fn(void *opaque)
 
 /* can be used as ->unplug() callback for the simple cases */
 void qdev_simple_device_unplug_cb(HotplugHandler *hotplug_dev,
-                                  DeviceState *dev, Error **errp)
+                                  DeviceState *dev, Error *errp[static 1])
 {
     /* just zap it */
     object_unparent(OBJECT(dev));
@@ -707,7 +707,7 @@ char *qdev_get_dev_path(DeviceState *dev)
 
 static void qdev_get_legacy_property(Object *obj, Visitor *v,
                                      const char *name, void *opaque,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -736,7 +736,7 @@ static void qdev_get_legacy_property(Object *obj, Visitor 
*v,
  * will be given names in the "legacy" namespace.
  */
 static void qdev_property_add_legacy(DeviceState *dev, Property *prop,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     gchar *name;
 
@@ -766,7 +766,7 @@ static void qdev_property_add_legacy(DeviceState *dev, 
Property *prop,
  * The type of the QOM property is derived from prop->info.
  */
 void qdev_property_add_static(DeviceState *dev, Property *prop,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     Object *obj = OBJECT(dev);
 
@@ -853,13 +853,13 @@ GSList *qdev_build_hotpluggable_device_list(Object 
*peripheral)
     return list;
 }
 
-static bool device_get_realized(Object *obj, Error **errp)
+static bool device_get_realized(Object *obj, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     return dev->realized;
 }
 
-static bool check_only_migratable(Object *obj, Error **err)
+static bool check_only_migratable(Object *obj, Error *err[static 1])
 {
     DeviceClass *dc = DEVICE_GET_CLASS(obj);
 
@@ -873,7 +873,8 @@ static bool check_only_migratable(Object *obj, Error **err)
     return true;
 }
 
-static void device_set_realized(Object *obj, bool value, Error **errp)
+static void device_set_realized(Object *obj, bool value,
+                                Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     DeviceClass *dc = DEVICE_GET_CLASS(dev);
@@ -997,7 +998,7 @@ fail:
     }
 }
 
-static bool device_get_hotpluggable(Object *obj, Error **errp)
+static bool device_get_hotpluggable(Object *obj, Error *errp[static 1])
 {
     DeviceClass *dc = DEVICE_GET_CLASS(obj);
     DeviceState *dev = DEVICE(obj);
@@ -1006,7 +1007,7 @@ static bool device_get_hotpluggable(Object *obj, Error 
**errp)
                                 qbus_is_hotpluggable(dev->parent_bus));
 }
 
-static bool device_get_hotplugged(Object *obj, Error **err)
+static bool device_get_hotplugged(Object *obj, Error *err[static 1])
 {
     DeviceState *dev = DEVICE(obj);
 
diff --git a/hw/cpu/a15mpcore.c b/hw/cpu/a15mpcore.c
index e9f5caee7d..b4eae63b0f 100644
--- a/hw/cpu/a15mpcore.c
+++ b/hw/cpu/a15mpcore.c
@@ -46,7 +46,7 @@ static void a15mp_priv_initfn(Object *obj)
     qdev_prop_set_uint32(gicdev, "revision", 2);
 }
 
-static void a15mp_priv_realize(DeviceState *dev, Error **errp)
+static void a15mp_priv_realize(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
     A15MPPrivState *s = A15MPCORE_PRIV(dev);
diff --git a/hw/cpu/a9mpcore.c b/hw/cpu/a9mpcore.c
index b32fbb7a44..a26228c9c8 100644
--- a/hw/cpu/a9mpcore.c
+++ b/hw/cpu/a9mpcore.c
@@ -43,7 +43,7 @@ static void a9mp_priv_initfn(Object *obj)
     qdev_set_parent_bus(DEVICE(&s->wdt), sysbus_get_default());
 }
 
-static void a9mp_priv_realize(DeviceState *dev, Error **errp)
+static void a9mp_priv_realize(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
     A9MPPrivState *s = A9MPCORE_PRIV(dev);
diff --git a/hw/cpu/arm11mpcore.c b/hw/cpu/arm11mpcore.c
index 60336b1c0a..e847fde273 100644
--- a/hw/cpu/arm11mpcore.c
+++ b/hw/cpu/arm11mpcore.c
@@ -64,7 +64,7 @@ static void mpcore_priv_map_setup(ARM11MPCorePriveState *s)
     }
 }
 
-static void mpcore_priv_realize(DeviceState *dev, Error **errp)
+static void mpcore_priv_realize(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
     ARM11MPCorePriveState *s = ARM11MPCORE_PRIV(dev);
diff --git a/hw/cpu/core.c b/hw/cpu/core.c
index a10e655d32..2bf05dcdc0 100644
--- a/hw/cpu/core.c
+++ b/hw/cpu/core.c
@@ -12,7 +12,7 @@
 #include "sysemu/cpus.h"
 
 static void core_prop_get_core_id(Object *obj, Visitor *v, const char *name,
-                                  void *opaque, Error **errp)
+                                  void *opaque, Error *errp[static 1])
 {
     CPUCore *core = CPU_CORE(obj);
     int64_t value = core->core_id;
@@ -21,7 +21,7 @@ static void core_prop_get_core_id(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void core_prop_set_core_id(Object *obj, Visitor *v, const char *name,
-                                  void *opaque, Error **errp)
+                                  void *opaque, Error *errp[static 1])
 {
     CPUCore *core = CPU_CORE(obj);
     int64_t value;
@@ -35,7 +35,7 @@ static void core_prop_set_core_id(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void core_prop_get_nr_threads(Object *obj, Visitor *v, const char *name,
-                                     void *opaque, Error **errp)
+                                     void *opaque, Error *errp[static 1])
 {
     CPUCore *core = CPU_CORE(obj);
     int64_t value = core->nr_threads;
@@ -44,7 +44,7 @@ static void core_prop_get_nr_threads(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void core_prop_set_nr_threads(Object *obj, Visitor *v, const char *name,
-                                     void *opaque, Error **errp)
+                                     void *opaque, Error *errp[static 1])
 {
     CPUCore *core = CPU_CORE(obj);
     int64_t value;
diff --git a/hw/cpu/realview_mpcore.c b/hw/cpu/realview_mpcore.c
index be5fad6d74..6a222ae7cf 100644
--- a/hw/cpu/realview_mpcore.c
+++ b/hw/cpu/realview_mpcore.c
@@ -55,7 +55,7 @@ static void mpcore_rirq_set_irq(void *opaque, int irq, int 
level)
     }
 }
 
-static void realview_mpcore_realize(DeviceState *dev, Error **errp)
+static void realview_mpcore_realize(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
     mpcore_rirq_state *s = REALVIEW_MPCORE_RIRQ(dev);
diff --git a/hw/display/ads7846.c b/hw/display/ads7846.c
index 166edade7d..a0b87408b8 100644
--- a/hw/display/ads7846.c
+++ b/hw/display/ads7846.c
@@ -133,7 +133,7 @@ static const VMStateDescription vmstate_ads7846 = {
     }
 };
 
-static void ads7846_realize(SSISlave *d, Error **errp)
+static void ads7846_realize(SSISlave *d, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(d);
     ADS7846State *s = FROM_SSI_SLAVE(ADS7846State, d);
diff --git a/hw/display/bcm2835_fb.c b/hw/display/bcm2835_fb.c
index 7eab927652..33769ef11d 100644
--- a/hw/display/bcm2835_fb.c
+++ b/hw/display/bcm2835_fb.c
@@ -361,7 +361,7 @@ static void bcm2835_fb_reset(DeviceState *dev)
     s->lock = false;
 }
 
-static void bcm2835_fb_realize(DeviceState *dev, Error **errp)
+static void bcm2835_fb_realize(DeviceState *dev, Error *errp[static 1])
 {
     BCM2835FBState *s = BCM2835_FB(dev);
     Error *err = NULL;
diff --git a/hw/display/cg3.c b/hw/display/cg3.c
index 1de15a1d34..487ef7e769 100644
--- a/hw/display/cg3.c
+++ b/hw/display/cg3.c
@@ -293,7 +293,7 @@ static void cg3_initfn(Object *obj)
     sysbus_init_mmio(sbd, &s->reg);
 }
 
-static void cg3_realizefn(DeviceState *dev, Error **errp)
+static void cg3_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
     CG3State *s = CG3(dev);
diff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c
index afc290ab91..984b578fa7 100644
--- a/hw/display/cirrus_vga.c
+++ b/hw/display/cirrus_vga.c
@@ -3037,7 +3037,7 @@ static void cirrus_init_common(CirrusVGAState *s, Object 
*owner,
  *
  ***************************************/
 
-static void isa_cirrus_vga_realizefn(DeviceState *dev, Error **errp)
+static void isa_cirrus_vga_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *isadev = ISA_DEVICE(dev);
     ISACirrusVGAState *d = ISA_CIRRUS_VGA(dev);
@@ -3092,7 +3092,7 @@ static const TypeInfo isa_cirrus_vga_info = {
  *
  ***************************************/
 
-static void pci_cirrus_vga_realize(PCIDevice *dev, Error **errp)
+static void pci_cirrus_vga_realize(PCIDevice *dev, Error *errp[static 1])
 {
      PCICirrusVGAState *d = PCI_CIRRUS_VGA(dev);
      CirrusVGAState *s = &d->cirrus_vga;
diff --git a/hw/display/exynos4210_fimd.c b/hw/display/exynos4210_fimd.c
index fd0b2bec65..1c887442c8 100644
--- a/hw/display/exynos4210_fimd.c
+++ b/hw/display/exynos4210_fimd.c
@@ -1926,7 +1926,7 @@ static void exynos4210_fimd_init(Object *obj)
     sysbus_init_mmio(dev, &s->iomem);
 }
 
-static void exynos4210_fimd_realize(DeviceState *dev, Error **errp)
+static void exynos4210_fimd_realize(DeviceState *dev, Error *errp[static 1])
 {
     Exynos4210fimdState *s = EXYNOS4210_FIMD(dev);
 
diff --git a/hw/display/jazz_led.c b/hw/display/jazz_led.c
index 3c97d56434..b38296c7eb 100644
--- a/hw/display/jazz_led.c
+++ b/hw/display/jazz_led.c
@@ -276,7 +276,7 @@ static void jazz_led_init(Object *obj)
     sysbus_init_mmio(dev, &s->iomem);
 }
 
-static void jazz_led_realize(DeviceState *dev, Error **errp)
+static void jazz_led_realize(DeviceState *dev, Error *errp[static 1])
 {
     LedState *s = JAZZ_LED(dev);
 
diff --git a/hw/display/milkymist-tmu2.c b/hw/display/milkymist-tmu2.c
index 59120ddb67..f84494a408 100644
--- a/hw/display/milkymist-tmu2.c
+++ b/hw/display/milkymist-tmu2.c
@@ -456,7 +456,7 @@ static void milkymist_tmu2_init(Object *obj)
     sysbus_init_mmio(dev, &s->regs_region);
 }
 
-static void milkymist_tmu2_realize(DeviceState *dev, Error **errp)
+static void milkymist_tmu2_realize(DeviceState *dev, Error *errp[static 1])
 {
     MilkymistTMU2State *s = MILKYMIST_TMU2(dev);
 
diff --git a/hw/display/milkymist-vgafb.c b/hw/display/milkymist-vgafb.c
index 177fdac7d8..ad1d7eba41 100644
--- a/hw/display/milkymist-vgafb.c
+++ b/hw/display/milkymist-vgafb.c
@@ -302,7 +302,7 @@ static void milkymist_vgafb_init(Object *obj)
     sysbus_init_mmio(dev, &s->regs_region);
 }
 
-static void milkymist_vgafb_realize(DeviceState *dev, Error **errp)
+static void milkymist_vgafb_realize(DeviceState *dev, Error *errp[static 1])
 {
     MilkymistVgafbState *s = MILKYMIST_VGAFB(dev);
 
diff --git a/hw/display/pl110.c b/hw/display/pl110.c
index 8c7dcc6f0a..9be0aa24fd 100644
--- a/hw/display/pl110.c
+++ b/hw/display/pl110.c
@@ -466,7 +466,7 @@ static const GraphicHwOps pl110_gfx_ops = {
     .gfx_update  = pl110_update_display,
 };
 
-static void pl110_realize(DeviceState *dev, Error **errp)
+static void pl110_realize(DeviceState *dev, Error *errp[static 1])
 {
     PL110State *s = PL110(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
diff --git a/hw/display/qxl.c b/hw/display/qxl.c
index 0013b29ca5..49546be0eb 100644
--- a/hw/display/qxl.c
+++ b/hw/display/qxl.c
@@ -2048,7 +2048,7 @@ static void qxl_init_ramsize(PCIQXLDevice *qxl)
     qxl->vram_size = pow2ceil(qxl->vram_size);
 }
 
-static void qxl_realize_common(PCIQXLDevice *qxl, Error **errp)
+static void qxl_realize_common(PCIQXLDevice *qxl, Error *errp[static 1])
 {
     uint8_t* config = qxl->pci.config;
     uint32_t pci_device_rev;
@@ -2159,7 +2159,7 @@ static void qxl_realize_common(PCIQXLDevice *qxl, Error 
**errp)
     qxl->ssd.cursor_bh = qemu_bh_new(qemu_spice_cursor_refresh_bh, &qxl->ssd);
 }
 
-static void qxl_realize_primary(PCIDevice *dev, Error **errp)
+static void qxl_realize_primary(PCIDevice *dev, Error *errp[static 1])
 {
     PCIQXLDevice *qxl = PCI_QXL(dev);
     VGACommonState *vga = &qxl->vga;
@@ -2189,7 +2189,7 @@ static void qxl_realize_primary(PCIDevice *dev, Error 
**errp)
     register_displaychangelistener(&qxl->ssd.dcl);
 }
 
-static void qxl_realize_secondary(PCIDevice *dev, Error **errp)
+static void qxl_realize_secondary(PCIDevice *dev, Error *errp[static 1])
 {
     static int device_id = 1;
     PCIQXLDevice *qxl = PCI_QXL(dev);
diff --git a/hw/display/sm501.c b/hw/display/sm501.c
index 9d254ef2e1..9874772383 100644
--- a/hw/display/sm501.c
+++ b/hw/display/sm501.c
@@ -1692,7 +1692,7 @@ typedef struct {
     void *chr_state;
 } SM501SysBusState;
 
-static void sm501_realize_sysbus(DeviceState *dev, Error **errp)
+static void sm501_realize_sysbus(DeviceState *dev, Error *errp[static 1])
 {
     SM501SysBusState *s = SYSBUS_SM501(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
@@ -1781,7 +1781,7 @@ typedef struct {
     uint32_t vram_size;
 } SM501PCIState;
 
-static void sm501_realize_pci(PCIDevice *dev, Error **errp)
+static void sm501_realize_pci(PCIDevice *dev, Error *errp[static 1])
 {
     SM501PCIState *s = PCI_SM501(dev);
 
diff --git a/hw/display/ssd0323.c b/hw/display/ssd0323.c
index e182893157..459008f2b7 100644
--- a/hw/display/ssd0323.c
+++ b/hw/display/ssd0323.c
@@ -340,7 +340,7 @@ static const GraphicHwOps ssd0323_ops = {
     .gfx_update  = ssd0323_update_display,
 };
 
-static void ssd0323_realize(SSISlave *d, Error **errp)
+static void ssd0323_realize(SSISlave *d, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(d);
     ssd0323_state *s = FROM_SSI_SLAVE(ssd0323_state, d);
diff --git a/hw/display/tcx.c b/hw/display/tcx.c
index 6593c1d6af..4c801de5e5 100644
--- a/hw/display/tcx.c
+++ b/hw/display/tcx.c
@@ -803,7 +803,7 @@ static void tcx_initfn(Object *obj)
     sysbus_init_mmio(sbd, &s->alt);
 }
 
-static void tcx_realizefn(DeviceState *dev, Error **errp)
+static void tcx_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
     TCXState *s = TCX(dev);
diff --git a/hw/display/vga-isa.c b/hw/display/vga-isa.c
index 1af95562f2..9ecd584899 100644
--- a/hw/display/vga-isa.c
+++ b/hw/display/vga-isa.c
@@ -51,7 +51,7 @@ static void vga_isa_reset(DeviceState *dev)
     vga_common_reset(s);
 }
 
-static void vga_isa_realizefn(DeviceState *dev, Error **errp)
+static void vga_isa_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *isadev = ISA_DEVICE(dev);
     ISAVGAState *d = ISA_VGA(dev);
diff --git a/hw/display/vga-pci.c b/hw/display/vga-pci.c
index 950fa207b5..f3e0541211 100644
--- a/hw/display/vga-pci.c
+++ b/hw/display/vga-pci.c
@@ -184,14 +184,15 @@ static void pci_vga_qext_write(void *ptr, hwaddr addr,
     }
 }
 
-static bool vga_get_big_endian_fb(Object *obj, Error **errp)
+static bool vga_get_big_endian_fb(Object *obj, Error *errp[static 1])
 {
     PCIVGAState *d = PCI_VGA(PCI_DEVICE(obj));
 
     return d->vga.big_endian_fb;
 }
 
-static void vga_set_big_endian_fb(Object *obj, bool value, Error **errp)
+static void vga_set_big_endian_fb(Object *obj, bool value,
+                                  Error *errp[static 1])
 {
     PCIVGAState *d = PCI_VGA(PCI_DEVICE(obj));
 
@@ -229,7 +230,7 @@ void pci_std_vga_mmio_region_init(VGACommonState *s,
     }
 }
 
-static void pci_std_vga_realize(PCIDevice *dev, Error **errp)
+static void pci_std_vga_realize(PCIDevice *dev, Error *errp[static 1])
 {
     PCIVGAState *d = PCI_VGA(dev);
     VGACommonState *s = &d->vga;
@@ -272,7 +273,7 @@ static void pci_std_vga_init(Object *obj)
                              IGNORE_ERRORS);
 }
 
-static void pci_secondary_vga_realize(PCIDevice *dev, Error **errp)
+static void pci_secondary_vga_realize(PCIDevice *dev, Error *errp[static 1])
 {
     PCIVGAState *d = PCI_VGA(dev);
     VGACommonState *s = &d->vga;
diff --git a/hw/display/virtio-gpu-pci.c b/hw/display/virtio-gpu-pci.c
index ef92c4ad6f..83fddfbca4 100644
--- a/hw/display/virtio-gpu-pci.c
+++ b/hw/display/virtio-gpu-pci.c
@@ -22,7 +22,8 @@ static Property virtio_gpu_pci_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void virtio_gpu_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
+static void virtio_gpu_pci_realize(VirtIOPCIProxy *vpci_dev,
+                                   Error *errp[static 1])
 {
     VirtIOGPUPCI *vgpu = VIRTIO_GPU_PCI(vpci_dev);
     VirtIOGPU *g = &vgpu->vdev;
diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
index 9c8ecd2d87..470d2b62e0 100644
--- a/hw/display/virtio-gpu.c
+++ b/hw/display/virtio-gpu.c
@@ -155,7 +155,7 @@ static void virtio_gpu_set_config(VirtIODevice *vdev, const 
uint8_t *config)
 }
 
 static uint64_t virtio_gpu_get_features(VirtIODevice *vdev, uint64_t features,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     VirtIOGPU *g = VIRTIO_GPU(vdev);
 
@@ -1099,7 +1099,8 @@ static int virtio_gpu_load(QEMUFile *f, void *opaque, 
size_t size,
     return 0;
 }
 
-static void virtio_gpu_device_realize(DeviceState *qdev, Error **errp)
+static void virtio_gpu_device_realize(DeviceState *qdev,
+                                      Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(qdev);
     VirtIOGPU *g = VIRTIO_GPU(qdev);
@@ -1166,7 +1167,8 @@ static void virtio_gpu_device_realize(DeviceState *qdev, 
Error **errp)
     }
 }
 
-static void virtio_gpu_device_unrealize(DeviceState *qdev, Error **errp)
+static void virtio_gpu_device_unrealize(DeviceState *qdev,
+                                        Error *errp[static 1])
 {
     VirtIOGPU *g = VIRTIO_GPU(qdev);
     if (g->migration_blocker) {
diff --git a/hw/display/virtio-vga.c b/hw/display/virtio-vga.c
index f18484e333..b6b5ec64ef 100644
--- a/hw/display/virtio-vga.c
+++ b/hw/display/virtio-vga.c
@@ -96,7 +96,8 @@ static const VMStateDescription vmstate_virtio_vga = {
 };
 
 /* VGA device wrapper around PCI device around virtio GPU */
-static void virtio_vga_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
+static void virtio_vga_realize(VirtIOPCIProxy *vpci_dev,
+                               Error *errp[static 1])
 {
     VirtIOVGA *vvga = VIRTIO_VGA(vpci_dev);
     VirtIOGPU *g = &vvga->vdev;
diff --git a/hw/display/vmware_vga.c b/hw/display/vmware_vga.c
index ec5f27d67e..5d288328c4 100644
--- a/hw/display/vmware_vga.c
+++ b/hw/display/vmware_vga.c
@@ -1294,7 +1294,7 @@ static const MemoryRegionOps vmsvga_io_ops = {
     },
 };
 
-static void pci_vmsvga_realize(PCIDevice *dev, Error **errp)
+static void pci_vmsvga_realize(PCIDevice *dev, Error *errp[static 1])
 {
     struct pci_vmsvga_state_s *s = VMWARE_SVGA(dev);
 
diff --git a/hw/display/xlnx_dp.c b/hw/display/xlnx_dp.c
index f7b7b80c68..96013aef27 100644
--- a/hw/display/xlnx_dp.c
+++ b/hw/display/xlnx_dp.c
@@ -516,7 +516,7 @@ static void xlnx_dp_aux_set_command(XlnxDPState *s, 
uint32_t value)
 }
 
 static void xlnx_dp_set_dpdma(Object *obj, const char *name, Object *val,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     XlnxDPState *s = XLNX_DP(obj);
     if (s->console) {
@@ -1236,7 +1236,7 @@ static void xlnx_dp_init(Object *obj)
     fifo8_create(&s->tx_fifo, 16);
 }
 
-static void xlnx_dp_realize(DeviceState *dev, Error **errp)
+static void xlnx_dp_realize(DeviceState *dev, Error *errp[static 1])
 {
     XlnxDPState *s = XLNX_DP(dev);
     DisplaySurface *surface;
diff --git a/hw/dma/bcm2835_dma.c b/hw/dma/bcm2835_dma.c
index 5d144a2633..43bf537b5f 100644
--- a/hw/dma/bcm2835_dma.c
+++ b/hw/dma/bcm2835_dma.c
@@ -366,7 +366,7 @@ static void bcm2835_dma_reset(DeviceState *dev)
     }
 }
 
-static void bcm2835_dma_realize(DeviceState *dev, Error **errp)
+static void bcm2835_dma_realize(DeviceState *dev, Error *errp[static 1])
 {
     BCM2835DMAState *s = BCM2835_DMA(dev);
     Error *err = NULL;
diff --git a/hw/dma/i82374.c b/hw/dma/i82374.c
index 6c0f975df0..d00336c84d 100644
--- a/hw/dma/i82374.c
+++ b/hw/dma/i82374.c
@@ -114,7 +114,7 @@ static const MemoryRegionPortio i82374_portio_list[] = {
     PORTIO_END_OF_LIST(),
 };
 
-static void i82374_realize(DeviceState *dev, Error **errp)
+static void i82374_realize(DeviceState *dev, Error *errp[static 1])
 {
     I82374State *s = I82374(dev);
 
diff --git a/hw/dma/i8257.c b/hw/dma/i8257.c
index bd23e893bf..2be3a71de3 100644
--- a/hw/dma/i8257.c
+++ b/hw/dma/i8257.c
@@ -542,7 +542,7 @@ static const VMStateDescription vmstate_i8257 = {
     }
 };
 
-static void i8257_realize(DeviceState *dev, Error **errp)
+static void i8257_realize(DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *isa = ISA_DEVICE(dev);
     I8257State *d = I8257(dev);
diff --git a/hw/dma/pl330.c b/hw/dma/pl330.c
index 32cf8399b8..007621a844 100644
--- a/hw/dma/pl330.c
+++ b/hw/dma/pl330.c
@@ -1537,7 +1537,7 @@ static void pl330_reset(DeviceState *d)
     timer_del(s->timer);
 }
 
-static void pl330_realize(DeviceState *dev, Error **errp)
+static void pl330_realize(DeviceState *dev, Error *errp[static 1])
 {
     int i;
     PL330State *s = PL330(dev);
diff --git a/hw/dma/pxa2xx_dma.c b/hw/dma/pxa2xx_dma.c
index 634a4328f0..80576f89f9 100644
--- a/hw/dma/pxa2xx_dma.c
+++ b/hw/dma/pxa2xx_dma.c
@@ -467,7 +467,7 @@ static void pxa2xx_dma_init(Object *obj)
     sysbus_init_irq(sbd, &s->irq);
 }
 
-static void pxa2xx_dma_realize(DeviceState *dev, Error **errp)
+static void pxa2xx_dma_realize(DeviceState *dev, Error *errp[static 1])
 {
     PXA2xxDMAState *s = PXA2XX_DMA(dev);
     int i;
diff --git a/hw/dma/rc4030.c b/hw/dma/rc4030.c
index edf9432051..356b07fb1f 100644
--- a/hw/dma/rc4030.c
+++ b/hw/dma/rc4030.c
@@ -664,7 +664,7 @@ static void rc4030_initfn(Object *obj)
     sysbus_init_mmio(sysbus, &s->iomem_jazzio);
 }
 
-static void rc4030_realize(DeviceState *dev, Error **errp)
+static void rc4030_realize(DeviceState *dev, Error *errp[static 1])
 {
     rc4030State *s = RC4030(dev);
     Object *o = OBJECT(dev);
@@ -682,7 +682,7 @@ static void rc4030_realize(DeviceState *dev, Error **errp)
     address_space_init(&s->dma_as, &s->dma_mr, "rc4030-dma");
 }
 
-static void rc4030_unrealize(DeviceState *dev, Error **errp)
+static void rc4030_unrealize(DeviceState *dev, Error *errp[static 1])
 {
     rc4030State *s = RC4030(dev);
 
diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c
index eb491b50ca..86eeb66eb9 100644
--- a/hw/dma/sparc32_dma.c
+++ b/hw/dma/sparc32_dma.c
@@ -284,7 +284,7 @@ static void sparc32_dma_init(Object *obj)
     qdev_init_gpio_out(dev, s->gpio, 2);
 }
 
-static void sparc32_dma_realize(DeviceState *dev, Error **errp)
+static void sparc32_dma_realize(DeviceState *dev, Error *errp[static 1])
 {
     DMAState *s = SPARC32_DMA(dev);
     int reg_size;
diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c
index 3987b5ff96..a6b299c50b 100644
--- a/hw/dma/xilinx_axidma.c
+++ b/hw/dma/xilinx_axidma.c
@@ -514,7 +514,7 @@ static const MemoryRegionOps axidma_ops = {
     .endianness = DEVICE_NATIVE_ENDIAN,
 };
 
-static void xilinx_axidma_realize(DeviceState *dev, Error **errp)
+static void xilinx_axidma_realize(DeviceState *dev, Error *errp[static 1])
 {
     XilinxAXIDMA *s = XILINX_AXI_DMA(dev);
     XilinxAXIDMAStreamSlave *ds = XILINX_AXI_DMA_DATA_STREAM(&s->rx_data_dev);
diff --git a/hw/gpio/bcm2835_gpio.c b/hw/gpio/bcm2835_gpio.c
index acc2e3cf9e..7622aa07f5 100644
--- a/hw/gpio/bcm2835_gpio.c
+++ b/hw/gpio/bcm2835_gpio.c
@@ -305,7 +305,7 @@ static void bcm2835_gpio_init(Object *obj)
     qdev_init_gpio_out(dev, s->out, 54);
 }
 
-static void bcm2835_gpio_realize(DeviceState *dev, Error **errp)
+static void bcm2835_gpio_realize(DeviceState *dev, Error *errp[static 1])
 {
     BCM2835GpioState *s = BCM2835_GPIO(dev);
     Object *obj;
diff --git a/hw/gpio/gpio_key.c b/hw/gpio/gpio_key.c
index b34aa49dfb..d7e4186e49 100644
--- a/hw/gpio/gpio_key.c
+++ b/hw/gpio/gpio_key.c
@@ -71,7 +71,7 @@ static void gpio_key_set_irq(void *opaque, int irq, int level)
               qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + GPIO_KEY_LATENCY);
 }
 
-static void gpio_key_realize(DeviceState *dev, Error **errp)
+static void gpio_key_realize(DeviceState *dev, Error *errp[static 1])
 {
     GPIOKEYState *s = GPIOKEY(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
diff --git a/hw/gpio/imx_gpio.c b/hw/gpio/imx_gpio.c
index c36c394fda..ead1ff2ec6 100644
--- a/hw/gpio/imx_gpio.c
+++ b/hw/gpio/imx_gpio.c
@@ -310,7 +310,7 @@ static void imx_gpio_reset(DeviceState *dev)
     imx_gpio_update_int(s);
 }
 
-static void imx_gpio_realize(DeviceState *dev, Error **errp)
+static void imx_gpio_realize(DeviceState *dev, Error *errp[static 1])
 {
     IMXGPIOState *s = IMX_GPIO(dev);
 
diff --git a/hw/gpio/omap_gpio.c b/hw/gpio/omap_gpio.c
index 1df394eb12..83181a1153 100644
--- a/hw/gpio/omap_gpio.c
+++ b/hw/gpio/omap_gpio.c
@@ -693,7 +693,7 @@ static void omap_gpio_init(Object *obj)
     sysbus_init_mmio(sbd, &s->iomem);
 }
 
-static void omap_gpio_realize(DeviceState *dev, Error **errp)
+static void omap_gpio_realize(DeviceState *dev, Error *errp[static 1])
 {
     struct omap_gpif_s *s = OMAP1_GPIO(dev);
 
@@ -702,7 +702,7 @@ static void omap_gpio_realize(DeviceState *dev, Error 
**errp)
     }
 }
 
-static void omap2_gpio_realize(DeviceState *dev, Error **errp)
+static void omap2_gpio_realize(DeviceState *dev, Error *errp[static 1])
 {
     struct omap2_gpif_s *s = OMAP2_GPIO(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
diff --git a/hw/i2c/aspeed_i2c.c b/hw/i2c/aspeed_i2c.c
index c762c7366a..4545fed5f0 100644
--- a/hw/i2c/aspeed_i2c.c
+++ b/hw/i2c/aspeed_i2c.c
@@ -422,7 +422,7 @@ static void aspeed_i2c_reset(DeviceState *dev)
  *   0x480 ... 0x4BF: Device 14
  *   0x800 ... 0xFFF: Buffer Pool  (unused in linux driver)
  */
-static void aspeed_i2c_realize(DeviceState *dev, Error **errp)
+static void aspeed_i2c_realize(DeviceState *dev, Error *errp[static 1])
 {
     int i;
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
diff --git a/hw/i2c/imx_i2c.c b/hw/i2c/imx_i2c.c
index 6c81b98ebd..1331260745 100644
--- a/hw/i2c/imx_i2c.c
+++ b/hw/i2c/imx_i2c.c
@@ -302,7 +302,7 @@ static const VMStateDescription imx_i2c_vmstate = {
     }
 };
 
-static void imx_i2c_realize(DeviceState *dev, Error **errp)
+static void imx_i2c_realize(DeviceState *dev, Error *errp[static 1])
 {
     IMXI2CState *s = IMX_I2C(dev);
 
diff --git a/hw/i2c/omap_i2c.c b/hw/i2c/omap_i2c.c
index f6e80bee25..352d7c94d1 100644
--- a/hw/i2c/omap_i2c.c
+++ b/hw/i2c/omap_i2c.c
@@ -459,7 +459,7 @@ static void omap_i2c_init(Object *obj)
     s->bus = i2c_init_bus(dev, NULL);
 }
 
-static void omap_i2c_realize(DeviceState *dev, Error **errp)
+static void omap_i2c_realize(DeviceState *dev, Error *errp[static 1])
 {
     OMAPI2CState *s = OMAP_I2C(dev);
 
diff --git a/hw/i2c/smbus_ich9.c b/hw/i2c/smbus_ich9.c
index ea51e09186..e4f0f23d84 100644
--- a/hw/i2c/smbus_ich9.c
+++ b/hw/i2c/smbus_ich9.c
@@ -71,7 +71,7 @@ static void ich9_smbus_write_config(PCIDevice *d, uint32_t 
address,
     }
 }
 
-static void ich9_smbus_realize(PCIDevice *d, Error **errp)
+static void ich9_smbus_realize(PCIDevice *d, Error *errp[static 1])
 {
     ICH9SMBState *s = ICH9_SMB_DEVICE(d);
 
diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c
index 7b6d4ea3f3..3aba398d31 100644
--- a/hw/i386/amd_iommu.c
+++ b/hw/i386/amd_iommu.c
@@ -1133,7 +1133,7 @@ static void amdvi_reset(DeviceState *dev)
     amdvi_init(s);
 }
 
-static void amdvi_realize(DeviceState *dev, Error **err)
+static void amdvi_realize(DeviceState *dev, Error *err[static 1])
 {
     int ret = 0;
     AMDVIState *s = AMD_IOMMU_DEVICE(dev);
diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index 15610b9de8..c1db89be67 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -3072,7 +3072,7 @@ static AddressSpace *vtd_host_dma_iommu(PCIBus *bus, void 
*opaque, int devfn)
     return &vtd_as->as;
 }
 
-static bool vtd_decide_config(IntelIOMMUState *s, Error **errp)
+static bool vtd_decide_config(IntelIOMMUState *s, Error *errp[static 1])
 {
     X86IOMMUState *x86_iommu = X86_IOMMU_DEVICE(s);
 
@@ -3108,7 +3108,7 @@ static bool vtd_decide_config(IntelIOMMUState *s, Error 
**errp)
     return true;
 }
 
-static void vtd_realize(DeviceState *dev, Error **errp)
+static void vtd_realize(DeviceState *dev, Error *errp[static 1])
 {
     MachineState *ms = MACHINE(qdev_get_machine());
     MachineClass *mc = MACHINE_GET_CLASS(ms);
diff --git a/hw/i386/kvm/apic.c b/hw/i386/kvm/apic.c
index 1df6d26816..ec06d28e9c 100644
--- a/hw/i386/kvm/apic.c
+++ b/hw/i386/kvm/apic.c
@@ -217,7 +217,7 @@ static void kvm_apic_reset(APICCommonState *s)
     run_on_cpu(CPU(s->cpu), kvm_apic_put, RUN_ON_CPU_HOST_PTR(s));
 }
 
-static void kvm_apic_realize(DeviceState *dev, Error **errp)
+static void kvm_apic_realize(DeviceState *dev, Error *errp[static 1])
 {
     APICCommonState *s = APIC_COMMON(dev);
 
@@ -229,7 +229,7 @@ static void kvm_apic_realize(DeviceState *dev, Error **errp)
     }
 }
 
-static void kvm_apic_unrealize(DeviceState *dev, Error **errp)
+static void kvm_apic_unrealize(DeviceState *dev, Error *errp[static 1])
 {
 }
 
diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c
index 363d1b5743..7454163a7e 100644
--- a/hw/i386/kvm/clock.c
+++ b/hw/i386/kvm/clock.c
@@ -208,7 +208,7 @@ static void kvmclock_vm_state_change(void *opaque, int 
running,
     }
 }
 
-static void kvmclock_realize(DeviceState *dev, Error **errp)
+static void kvmclock_realize(DeviceState *dev, Error *errp[static 1])
 {
     KVMClockState *s = KVM_CLOCK(dev);
 
diff --git a/hw/i386/kvm/i8254.c b/hw/i386/kvm/i8254.c
index 521a58498a..3b458276fb 100644
--- a/hw/i386/kvm/i8254.c
+++ b/hw/i386/kvm/i8254.c
@@ -252,7 +252,7 @@ static void kvm_pit_vm_state_change(void *opaque, int 
running,
     }
 }
 
-static void kvm_pit_realizefn(DeviceState *dev, Error **errp)
+static void kvm_pit_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     PITCommonState *pit = PIT_COMMON(dev);
     KVMPITClass *kpc = KVM_PIT_GET_CLASS(dev);
diff --git a/hw/i386/kvm/i8259.c b/hw/i386/kvm/i8259.c
index 11d1b726b6..b5ef982283 100644
--- a/hw/i386/kvm/i8259.c
+++ b/hw/i386/kvm/i8259.c
@@ -115,7 +115,7 @@ static void kvm_pic_set_irq(void *opaque, int irq, int 
level)
     apic_report_irq_delivered(delivered);
 }
 
-static void kvm_pic_realize(DeviceState *dev, Error **errp)
+static void kvm_pic_realize(DeviceState *dev, Error *errp[static 1])
 {
     PICCommonState *s = PIC_COMMON(dev);
     KVMPICClass *kpc = KVM_PIC_GET_CLASS(dev);
diff --git a/hw/i386/kvm/ioapic.c b/hw/i386/kvm/ioapic.c
index 98ca480792..fb9fc2908a 100644
--- a/hw/i386/kvm/ioapic.c
+++ b/hw/i386/kvm/ioapic.c
@@ -138,7 +138,7 @@ static void kvm_ioapic_set_irq(void *opaque, int irq, int 
level)
     apic_report_irq_delivered(delivered);
 }
 
-static void kvm_ioapic_realize(DeviceState *dev, Error **errp)
+static void kvm_ioapic_realize(DeviceState *dev, Error *errp[static 1])
 {
     IOAPICCommonState *s = IOAPIC_COMMON(dev);
 
diff --git a/hw/i386/kvm/pci-assign.c b/hw/i386/kvm/pci-assign.c
index 194ebb70f3..47ab2aa43a 100644
--- a/hw/i386/kvm/pci-assign.c
+++ b/hw/i386/kvm/pci-assign.c
@@ -387,7 +387,7 @@ static uint8_t pci_find_cap_offset(PCIDevice *d, uint8_t 
cap, uint8_t start)
 static void assigned_dev_register_regions(PCIRegion *io_regions,
                                           unsigned long regions_num,
                                           AssignedDevice *pci_dev,
-                                          Error **errp)
+                                          Error *errp[static 1])
 {
     uint32_t i;
     PCIRegion *cur_region = io_regions;
@@ -490,7 +490,7 @@ static void assigned_dev_register_regions(PCIRegion 
*io_regions,
 }
 
 static void get_real_id(const char *devpath, const char *idname, uint16_t *val,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     FILE *f;
     char name[128];
@@ -511,18 +511,18 @@ static void get_real_id(const char *devpath, const char 
*idname, uint16_t *val,
 }
 
 static void get_real_vendor_id(const char *devpath, uint16_t *val,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     get_real_id(devpath, "vendor", val, errp);
 }
 
 static void get_real_device_id(const char *devpath, uint16_t *val,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     get_real_id(devpath, "device", val, errp);
 }
 
-static void get_real_device(AssignedDevice *pci_dev, Error **errp)
+static void get_real_device(AssignedDevice *pci_dev, Error *errp[static 1])
 {
     char dir[128], name[128];
     int fd, r = 0;
@@ -779,7 +779,7 @@ fail:
     return g_strdup("Couldn't find out why.\n");
 }
 
-static void assign_device(AssignedDevice *dev, Error **errp)
+static void assign_device(AssignedDevice *dev, Error *errp[static 1])
 {
     uint32_t flags = KVM_DEV_ASSIGN_ENABLE_IOMMU;
     int r;
@@ -824,7 +824,7 @@ static void assign_device(AssignedDevice *dev, Error **errp)
     }
 }
 
-static void verify_irqchip_in_kernel(Error **errp)
+static void verify_irqchip_in_kernel(Error *errp[static 1])
 {
     if (kvm_irqchip_in_kernel()) {
         return;
@@ -832,7 +832,7 @@ static void verify_irqchip_in_kernel(Error **errp)
     error_setg(errp, "pci-assign requires KVM with in-kernel irqchip enabled");
 }
 
-static int assign_intx(AssignedDevice *dev, Error **errp)
+static int assign_intx(AssignedDevice *dev, Error *errp[static 1])
 {
     AssignedIRQType new_type;
     PCIINTxRoute intx_route;
@@ -1639,7 +1639,8 @@ static void assigned_dev_msix_reset(AssignedDevice *dev)
     }
 }
 
-static void assigned_dev_register_msix_mmio(AssignedDevice *dev, Error **errp)
+static void assigned_dev_register_msix_mmio(AssignedDevice *dev,
+                                            Error *errp[static 1])
 {
     dev->msix_table = mmap(NULL, dev->msix_table_size, PROT_READ | PROT_WRITE,
                            MAP_ANONYMOUS | MAP_PRIVATE, 0, 0);
@@ -1730,7 +1731,7 @@ static void reset_assigned_device(DeviceState *dev)
     assigned_dev_pci_write_config(pci_dev, PCI_COMMAND, 0, 1);
 }
 
-static void assigned_realize(struct PCIDevice *pci_dev, Error **errp)
+static void assigned_realize(struct PCIDevice *pci_dev, Error *errp[static 1])
 {
     AssignedDevice *dev = PCI_ASSIGN(pci_dev);
     uint8_t e_intx;
diff --git a/hw/i386/kvmvapic.c b/hw/i386/kvmvapic.c
index 82a49556af..cf02933e3a 100644
--- a/hw/i386/kvmvapic.c
+++ b/hw/i386/kvmvapic.c
@@ -724,7 +724,7 @@ static const MemoryRegionOps vapic_ops = {
     .endianness = DEVICE_NATIVE_ENDIAN,
 };
 
-static void vapic_realize(DeviceState *dev, Error **errp)
+static void vapic_realize(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
     VAPICROMState *s = VAPIC(dev);
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 7ce0ed96de..96977e1d6d 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -261,7 +261,8 @@ static int boot_device2nibble(char boot_device)
     return 0;
 }
 
-static void set_boot_dev(ISADevice *s, const char *boot_device, Error **errp)
+static void set_boot_dev(ISADevice *s, const char *boot_device,
+                         Error *errp[static 1])
 {
 #define PC_MAX_BOOT_DEVICES 3
     int nbds, bds[3] = { 0, };
@@ -284,7 +285,8 @@ static void set_boot_dev(ISADevice *s, const char 
*boot_device, Error **errp)
     rtc_set_memory(s, 0x38, (bds[2] << 4) | (fd_bootchk ? 0x0 : 0x1));
 }
 
-static void pc_boot_set(void *opaque, const char *boot_device, Error **errp)
+static void pc_boot_set(void *opaque, const char *boot_device,
+                        Error *errp[static 1])
 {
     set_boot_dev(opaque, boot_device, errp);
 }
@@ -578,7 +580,7 @@ static void port92_initfn(Object *obj)
     qdev_init_gpio_out_named(DEVICE(obj), &s->a20_out, PORT92_A20_LINE, 1);
 }
 
-static void port92_realizefn(DeviceState *dev, Error **errp)
+static void port92_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *isadev = ISA_DEVICE(dev);
     Port92State *s = PORT92(dev);
@@ -1092,7 +1094,8 @@ void pc_acpi_smi_interrupt(void *opaque, int irq, int 
level)
     }
 }
 
-static void pc_new_cpu(const char *typename, int64_t apic_id, Error **errp)
+static void pc_new_cpu(const char *typename, int64_t apic_id,
+                       Error *errp[static 1])
 {
     Object *cpu = NULL;
     Error *local_err = NULL;
@@ -1106,7 +1109,7 @@ static void pc_new_cpu(const char *typename, int64_t 
apic_id, Error **errp)
     error_propagate(errp, local_err);
 }
 
-void pc_hot_add_cpu(const int64_t id, Error **errp)
+void pc_hot_add_cpu(const int64_t id, Error *errp[static 1])
 {
     ObjectClass *oc;
     MachineState *ms = MACHINE(qdev_get_machine());
@@ -1681,7 +1684,7 @@ void ioapic_init_gsi(GSIState *gsi_state, const char 
*parent_name)
 }
 
 static void pc_dimm_plug(HotplugHandler *hotplug_dev,
-                         DeviceState *dev, Error **errp)
+                         DeviceState *dev, Error *errp[static 1])
 {
     HotplugHandlerClass *hhc;
     Error *local_err = NULL;
@@ -1723,7 +1726,7 @@ out:
 }
 
 static void pc_dimm_unplug_request(HotplugHandler *hotplug_dev,
-                                   DeviceState *dev, Error **errp)
+                                   DeviceState *dev, Error *errp[static 1])
 {
     HotplugHandlerClass *hhc;
     Error *local_err = NULL;
@@ -1749,7 +1752,7 @@ out:
 }
 
 static void pc_dimm_unplug(HotplugHandler *hotplug_dev,
-                           DeviceState *dev, Error **errp)
+                           DeviceState *dev, Error *errp[static 1])
 {
     PCMachineState *pcms = PC_MACHINE(hotplug_dev);
     PCDIMMDevice *dimm = PC_DIMM(dev);
@@ -1799,7 +1802,7 @@ static CPUArchId *pc_find_cpu_slot(MachineState *ms, 
uint32_t id, int *idx)
 }
 
 static void pc_cpu_plug(HotplugHandler *hotplug_dev,
-                        DeviceState *dev, Error **errp)
+                        DeviceState *dev, Error *errp[static 1])
 {
     CPUArchId *found_cpu;
     HotplugHandlerClass *hhc;
@@ -1830,7 +1833,7 @@ out:
     error_propagate(errp, local_err);
 }
 static void pc_cpu_unplug_request_cb(HotplugHandler *hotplug_dev,
-                                     DeviceState *dev, Error **errp)
+                                     DeviceState *dev, Error *errp[static 1])
 {
     int idx = -1;
     HotplugHandlerClass *hhc;
@@ -1858,7 +1861,7 @@ static void pc_cpu_unplug_request_cb(HotplugHandler 
*hotplug_dev,
 }
 
 static void pc_cpu_unplug_cb(HotplugHandler *hotplug_dev,
-                             DeviceState *dev, Error **errp)
+                             DeviceState *dev, Error *errp[static 1])
 {
     CPUArchId *found_cpu;
     HotplugHandlerClass *hhc;
@@ -1887,7 +1890,7 @@ static void pc_cpu_unplug_cb(HotplugHandler *hotplug_dev,
 }
 
 static void pc_cpu_pre_plug(HotplugHandler *hotplug_dev,
-                            DeviceState *dev, Error **errp)
+                            DeviceState *dev, Error *errp[static 1])
 {
     int idx;
     CPUState *cs;
@@ -1984,7 +1987,8 @@ static void pc_cpu_pre_plug(HotplugHandler *hotplug_dev,
 }
 
 static void pc_machine_device_pre_plug_cb(HotplugHandler *hotplug_dev,
-                                          DeviceState *dev, Error **errp)
+                                          DeviceState *dev,
+                                          Error *errp[static 1])
 {
     if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
         pc_cpu_pre_plug(hotplug_dev, dev, errp);
@@ -1992,7 +1996,7 @@ static void pc_machine_device_pre_plug_cb(HotplugHandler 
*hotplug_dev,
 }
 
 static void pc_machine_device_plug_cb(HotplugHandler *hotplug_dev,
-                                      DeviceState *dev, Error **errp)
+                                      DeviceState *dev, Error *errp[static 1])
 {
     if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) {
         pc_dimm_plug(hotplug_dev, dev, errp);
@@ -2002,7 +2006,8 @@ static void pc_machine_device_plug_cb(HotplugHandler 
*hotplug_dev,
 }
 
 static void pc_machine_device_unplug_request_cb(HotplugHandler *hotplug_dev,
-                                                DeviceState *dev, Error **errp)
+                                                DeviceState *dev,
+                                                Error *errp[static 1])
 {
     if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) {
         pc_dimm_unplug_request(hotplug_dev, dev, errp);
@@ -2015,7 +2020,8 @@ static void 
pc_machine_device_unplug_request_cb(HotplugHandler *hotplug_dev,
 }
 
 static void pc_machine_device_unplug_cb(HotplugHandler *hotplug_dev,
-                                        DeviceState *dev, Error **errp)
+                                        DeviceState *dev,
+                                        Error *errp[static 1])
 {
     if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) {
         pc_dimm_unplug(hotplug_dev, dev, errp);
@@ -2044,7 +2050,7 @@ static HotplugHandler *pc_get_hotpug_handler(MachineState 
*machine,
 static void
 pc_machine_get_hotplug_memory_region_size(Object *obj, Visitor *v,
                                           const char *name, void *opaque,
-                                          Error **errp)
+                                          Error *errp[static 1])
 {
     PCMachineState *pcms = PC_MACHINE(obj);
     int64_t value = memory_region_size(&pcms->hotplug_memory.mr);
@@ -2054,7 +2060,7 @@ pc_machine_get_hotplug_memory_region_size(Object *obj, 
Visitor *v,
 
 static void pc_machine_get_max_ram_below_4g(Object *obj, Visitor *v,
                                             const char *name, void *opaque,
-                                            Error **errp)
+                                            Error *errp[static 1])
 {
     PCMachineState *pcms = PC_MACHINE(obj);
     uint64_t value = pcms->max_ram_below_4g;
@@ -2064,7 +2070,7 @@ static void pc_machine_get_max_ram_below_4g(Object *obj, 
Visitor *v,
 
 static void pc_machine_set_max_ram_below_4g(Object *obj, Visitor *v,
                                             const char *name, void *opaque,
-                                            Error **errp)
+                                            Error *errp[static 1])
 {
     PCMachineState *pcms = PC_MACHINE(obj);
     Error *error = NULL;
@@ -2093,7 +2099,7 @@ static void pc_machine_set_max_ram_below_4g(Object *obj, 
Visitor *v,
 }
 
 static void pc_machine_get_vmport(Object *obj, Visitor *v, const char *name,
-                                  void *opaque, Error **errp)
+                                  void *opaque, Error *errp[static 1])
 {
     PCMachineState *pcms = PC_MACHINE(obj);
     OnOffAuto vmport = pcms->vmport;
@@ -2102,7 +2108,7 @@ static void pc_machine_get_vmport(Object *obj, Visitor 
*v, const char *name,
 }
 
 static void pc_machine_set_vmport(Object *obj, Visitor *v, const char *name,
-                                  void *opaque, Error **errp)
+                                  void *opaque, Error *errp[static 1])
 {
     PCMachineState *pcms = PC_MACHINE(obj);
 
@@ -2135,7 +2141,7 @@ bool pc_machine_is_smm_enabled(PCMachineState *pcms)
 }
 
 static void pc_machine_get_smm(Object *obj, Visitor *v, const char *name,
-                               void *opaque, Error **errp)
+                               void *opaque, Error *errp[static 1])
 {
     PCMachineState *pcms = PC_MACHINE(obj);
     OnOffAuto smm = pcms->smm;
@@ -2144,63 +2150,66 @@ static void pc_machine_get_smm(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void pc_machine_set_smm(Object *obj, Visitor *v, const char *name,
-                               void *opaque, Error **errp)
+                               void *opaque, Error *errp[static 1])
 {
     PCMachineState *pcms = PC_MACHINE(obj);
 
     visit_type_OnOffAuto(v, name, &pcms->smm, errp);
 }
 
-static bool pc_machine_get_nvdimm(Object *obj, Error **errp)
+static bool pc_machine_get_nvdimm(Object *obj, Error *errp[static 1])
 {
     PCMachineState *pcms = PC_MACHINE(obj);
 
     return pcms->acpi_nvdimm_state.is_enabled;
 }
 
-static void pc_machine_set_nvdimm(Object *obj, bool value, Error **errp)
+static void pc_machine_set_nvdimm(Object *obj, bool value,
+                                  Error *errp[static 1])
 {
     PCMachineState *pcms = PC_MACHINE(obj);
 
     pcms->acpi_nvdimm_state.is_enabled = value;
 }
 
-static bool pc_machine_get_smbus(Object *obj, Error **errp)
+static bool pc_machine_get_smbus(Object *obj, Error *errp[static 1])
 {
     PCMachineState *pcms = PC_MACHINE(obj);
 
     return pcms->smbus;
 }
 
-static void pc_machine_set_smbus(Object *obj, bool value, Error **errp)
+static void pc_machine_set_smbus(Object *obj, bool value,
+                                 Error *errp[static 1])
 {
     PCMachineState *pcms = PC_MACHINE(obj);
 
     pcms->smbus = value;
 }
 
-static bool pc_machine_get_sata(Object *obj, Error **errp)
+static bool pc_machine_get_sata(Object *obj, Error *errp[static 1])
 {
     PCMachineState *pcms = PC_MACHINE(obj);
 
     return pcms->sata;
 }
 
-static void pc_machine_set_sata(Object *obj, bool value, Error **errp)
+static void pc_machine_set_sata(Object *obj, bool value,
+                                Error *errp[static 1])
 {
     PCMachineState *pcms = PC_MACHINE(obj);
 
     pcms->sata = value;
 }
 
-static bool pc_machine_get_pit(Object *obj, Error **errp)
+static bool pc_machine_get_pit(Object *obj, Error *errp[static 1])
 {
     PCMachineState *pcms = PC_MACHINE(obj);
 
     return pcms->pit;
 }
 
-static void pc_machine_set_pit(Object *obj, bool value, Error **errp)
+static void pc_machine_set_pit(Object *obj, bool value, Error *errp[static 1])
 {
     PCMachineState *pcms = PC_MACHINE(obj);
 
@@ -2294,7 +2303,7 @@ static const CPUArchIdList 
*pc_possible_cpu_arch_ids(MachineState *ms)
     return ms->possible_cpus;
 }
 
-static void x86_nmi(NMIState *n, int cpu_index, Error **errp)
+static void x86_nmi(NMIState *n, int cpu_index, Error *errp[static 1])
 {
     /* cpu index isn't used */
     CPUState *cs;
diff --git a/hw/i386/x86-iommu.c b/hw/i386/x86-iommu.c
index 293caf83ef..3ca5142e81 100644
--- a/hw/i386/x86-iommu.c
+++ b/hw/i386/x86-iommu.c
@@ -76,7 +76,7 @@ IommuType x86_iommu_get_type(void)
     return x86_iommu_default->type;
 }
 
-static void x86_iommu_realize(DeviceState *dev, Error **errp)
+static void x86_iommu_realize(DeviceState *dev, Error *errp[static 1])
 {
     X86IOMMUState *x86_iommu = X86_IOMMU_DEVICE(dev);
     X86IOMMUClass *x86_class = X86_IOMMU_GET_CLASS(dev);
diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
index 1acd4de405..bf281a1967 100644
--- a/hw/i386/xen/xen-hvm.c
+++ b/hw/i386/xen/xen-hvm.c
@@ -239,7 +239,7 @@ static void xen_ram_init(PCMachineState *pcms,
 }
 
 void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size, MemoryRegion *mr,
-                   Error **errp)
+                   Error *errp[static 1])
 {
     unsigned long nr_pfn;
     xen_pfn_t *pfn_list;
@@ -1421,7 +1421,7 @@ void xen_hvm_modified_memory(ram_addr_t start, ram_addr_t 
length)
     }
 }
 
-void qmp_xen_set_global_dirty_log(bool enable, Error **errp)
+void qmp_xen_set_global_dirty_log(bool enable, Error *errp[static 1])
 {
     if (enable) {
         memory_global_dirty_log_start();
diff --git a/hw/i386/xen/xen_apic.c b/hw/i386/xen/xen_apic.c
index 55769eba7e..f99779f6cc 100644
--- a/hw/i386/xen/xen_apic.c
+++ b/hw/i386/xen/xen_apic.c
@@ -37,7 +37,7 @@ static const MemoryRegionOps xen_apic_io_ops = {
     .endianness = DEVICE_NATIVE_ENDIAN,
 };
 
-static void xen_apic_realize(DeviceState *dev, Error **errp)
+static void xen_apic_realize(DeviceState *dev, Error *errp[static 1])
 {
     APICCommonState *s = APIC_COMMON(dev);
 
diff --git a/hw/i386/xen/xen_platform.c b/hw/i386/xen/xen_platform.c
index 1419fc96d2..bffd503de5 100644
--- a/hw/i386/xen/xen_platform.c
+++ b/hw/i386/xen/xen_platform.c
@@ -423,7 +423,7 @@ static const VMStateDescription vmstate_xen_platform = {
     }
 };
 
-static void xen_platform_realize(PCIDevice *dev, Error **errp)
+static void xen_platform_realize(PCIDevice *dev, Error *errp[static 1])
 {
     PCIXenPlatformState *d = XEN_PLATFORM(dev);
     uint8_t *pci_conf;
diff --git a/hw/i386/xen/xen_pvdevice.c b/hw/i386/xen/xen_pvdevice.c
index c093b34458..f712a86fce 100644
--- a/hw/i386/xen/xen_pvdevice.c
+++ b/hw/i386/xen/xen_pvdevice.c
@@ -71,7 +71,7 @@ static const MemoryRegionOps xen_pv_mmio_ops = {
     .endianness = DEVICE_LITTLE_ENDIAN,
 };
 
-static void xen_pv_realize(PCIDevice *pci_dev, Error **errp)
+static void xen_pv_realize(PCIDevice *pci_dev, Error *errp[static 1])
 {
     XenPVDevice *d = XEN_PV_DEVICE(pci_dev);
     uint8_t *pci_conf;
diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
index f60826d6e0..86cba82270 100644
--- a/hw/ide/ahci.c
+++ b/hw/ide/ahci.c
@@ -1700,7 +1700,7 @@ static void sysbus_ahci_init(Object *obj)
     sysbus_init_irq(sbd, &s->ahci.irq);
 }
 
-static void sysbus_ahci_realize(DeviceState *dev, Error **errp)
+static void sysbus_ahci_realize(DeviceState *dev, Error *errp[static 1])
 {
     SysbusAHCIState *s = SYSBUS_AHCI(dev);
 
diff --git a/hw/ide/cmd646.c b/hw/ide/cmd646.c
index 9ebb8d4fb2..e6c4e30bf4 100644
--- a/hw/ide/cmd646.c
+++ b/hw/ide/cmd646.c
@@ -327,7 +327,7 @@ static void cmd646_pci_config_write(PCIDevice *d, uint32_t 
addr, uint32_t val,
 }
 
 /* CMD646 PCI IDE controller */
-static void pci_cmd646_ide_realize(PCIDevice *dev, Error **errp)
+static void pci_cmd646_ide_realize(PCIDevice *dev, Error *errp[static 1])
 {
     PCIIDEState *d = PCI_IDE(dev);
     uint8_t *pci_conf = dev->config;
diff --git a/hw/ide/core.c b/hw/ide/core.c
index 0b48b64d3a..117a2e54c6 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -1120,7 +1120,7 @@ static void ide_cfata_metadata_write(IDEState *s)
 }
 
 /* called when the inserted state of the media has changed */
-static void ide_cd_change_cb(void *opaque, bool load, Error **errp)
+static void ide_cd_change_cb(void *opaque, bool load, Error *errp[static 1])
 {
     IDEState *s = opaque;
     uint64_t nb_sectors;
diff --git a/hw/ide/ich.c b/hw/ide/ich.c
index 519d3d5e16..d04e9d9d06 100644
--- a/hw/ide/ich.c
+++ b/hw/ide/ich.c
@@ -105,7 +105,7 @@ static void pci_ich9_ahci_init(Object *obj)
     ahci_init(&d->ahci, DEVICE(obj));
 }
 
-static void pci_ich9_ahci_realize(PCIDevice *dev, Error **errp)
+static void pci_ich9_ahci_realize(PCIDevice *dev, Error *errp[static 1])
 {
     struct AHCIPCIState *d;
     int sata_cap_offset;
diff --git a/hw/ide/isa.c b/hw/ide/isa.c
index 40213d662c..bab1588837 100644
--- a/hw/ide/isa.c
+++ b/hw/ide/isa.c
@@ -65,7 +65,7 @@ static const VMStateDescription vmstate_ide_isa = {
     }
 };
 
-static void isa_ide_realizefn(DeviceState *dev, Error **errp)
+static void isa_ide_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *isadev = ISA_DEVICE(dev);
     ISAIDEState *s = ISA_IDE(dev);
diff --git a/hw/ide/macio.c b/hw/ide/macio.c
index 9742c005d1..9cdedc31e9 100644
--- a/hw/ide/macio.c
+++ b/hw/ide/macio.c
@@ -422,7 +422,7 @@ static const IDEDMAOps dbdma_ops = {
     .rw_buf         = ide_nop_int,
 };
 
-static void macio_ide_realizefn(DeviceState *dev, Error **errp)
+static void macio_ide_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     MACIOIDEState *s = MACIO_IDE(dev);
 
diff --git a/hw/ide/microdrive.c b/hw/ide/microdrive.c
index e3fd30e457..7d3e009015 100644
--- a/hw/ide/microdrive.c
+++ b/hw/ide/microdrive.c
@@ -589,7 +589,7 @@ static const TypeInfo dscm1xxxx_type_info = {
     .class_init = dscm1xxxx_class_init,
 };
 
-static void microdrive_realize(DeviceState *dev, Error **errp)
+static void microdrive_realize(DeviceState *dev, Error *errp[static 1])
 {
     MicroDriveState *md = MICRODRIVE(dev);
 
diff --git a/hw/ide/mmio.c b/hw/ide/mmio.c
index 6f12f456ed..e266a802f2 100644
--- a/hw/ide/mmio.c
+++ b/hw/ide/mmio.c
@@ -117,7 +117,7 @@ static const VMStateDescription vmstate_ide_mmio = {
     }
 };
 
-static void mmio_ide_realizefn(DeviceState *dev, Error **errp)
+static void mmio_ide_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *d = SYS_BUS_DEVICE(dev);
     MMIOState *s = MMIO_IDE(dev);
diff --git a/hw/ide/piix.c b/hw/ide/piix.c
index 7e2d76705d..bc2fdb9782 100644
--- a/hw/ide/piix.c
+++ b/hw/ide/piix.c
@@ -148,7 +148,7 @@ static void pci_piix_init_ports(PCIIDEState *d) {
     }
 }
 
-static void pci_piix_ide_realize(PCIDevice *dev, Error **errp)
+static void pci_piix_ide_realize(PCIDevice *dev, Error *errp[static 1])
 {
     PCIIDEState *d = PCI_IDE(dev);
     uint8_t *pci_conf = dev->config;
diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
index efa34e429a..68233a1a50 100644
--- a/hw/ide/qdev.c
+++ b/hw/ide/qdev.c
@@ -31,7 +31,7 @@
 /* --------------------------------- */
 
 static char *idebus_get_fw_dev_path(DeviceState *dev);
-static void idebus_unrealize(BusState *qdev, Error **errp);
+static void idebus_unrealize(BusState *qdev, Error *errp[static 1]);
 
 static Property ide_props[] = {
     DEFINE_PROP_UINT32("unit", IDEDevice, unit, -1),
@@ -46,7 +46,7 @@ static void ide_bus_class_init(ObjectClass *klass, void *data)
     k->unrealize = idebus_unrealize;
 }
 
-static void idebus_unrealize(BusState *bus, Error **errp)
+static void idebus_unrealize(BusState *bus, Error *errp[static 1])
 {
     IDEBus *ibus = IDE_BUS(bus);
 
@@ -225,7 +225,7 @@ static int ide_dev_initfn(IDEDevice *dev, IDEDriveKind kind)
 }
 
 static void ide_dev_get_bootindex(Object *obj, Visitor *v, const char *name,
-                                  void *opaque, Error **errp)
+                                  void *opaque, Error *errp[static 1])
 {
     IDEDevice *d = IDE_DEVICE(obj);
 
@@ -233,7 +233,7 @@ static void ide_dev_get_bootindex(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void ide_dev_set_bootindex(Object *obj, Visitor *v, const char *name,
-                                  void *opaque, Error **errp)
+                                  void *opaque, Error *errp[static 1])
 {
     IDEDevice *d = IDE_DEVICE(obj);
     int32_t boot_index;
diff --git a/hw/ide/via.c b/hw/ide/via.c
index 5b32ecb386..a6bdb639c1 100644
--- a/hw/ide/via.c
+++ b/hw/ide/via.c
@@ -172,7 +172,7 @@ static void vt82c686b_init_ports(PCIIDEState *d) {
 }
 
 /* via ide func */
-static void vt82c686b_ide_realize(PCIDevice *dev, Error **errp)
+static void vt82c686b_ide_realize(PCIDevice *dev, Error *errp[static 1])
 {
     PCIIDEState *d = PCI_IDE(dev);
     uint8_t *pci_conf = dev->config;
diff --git a/hw/input/adb.c b/hw/input/adb.c
index 43d3205472..48ac0fde4e 100644
--- a/hw/input/adb.c
+++ b/hw/input/adb.c
@@ -138,7 +138,7 @@ static const VMStateDescription vmstate_adb_device = {
     }
 };
 
-static void adb_device_realizefn(DeviceState *dev, Error **errp)
+static void adb_device_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     ADBDevice *d = ADB_DEVICE(dev);
     ADBBusState *bus = ADB_BUS(qdev_get_parent_bus(dev));
@@ -489,7 +489,7 @@ static QemuInputHandler adb_keyboard_handler = {
     .event = adb_keyboard_event,
 };
 
-static void adb_kbd_realizefn(DeviceState *dev, Error **errp)
+static void adb_kbd_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     ADBKeyboardClass *akc = ADB_KEYBOARD_GET_CLASS(dev);
     akc->parent_realize(dev, errp);
@@ -704,7 +704,7 @@ static const VMStateDescription vmstate_adb_mouse = {
     }
 };
 
-static void adb_mouse_realizefn(DeviceState *dev, Error **errp)
+static void adb_mouse_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     MouseState *s = ADB_MOUSE(dev);
     ADBMouseClass *amc = ADB_MOUSE_GET_CLASS(dev);
diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c
index c479f827b6..568741feef 100644
--- a/hw/input/pckbd.c
+++ b/hw/input/pckbd.c
@@ -547,7 +547,7 @@ static void i8042_initfn(Object *obj)
     qdev_init_gpio_out_named(DEVICE(obj), &s->a20_out, I8042_A20_LINE, 1);
 }
 
-static void i8042_realizefn(DeviceState *dev, Error **errp)
+static void i8042_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *isadev = ISA_DEVICE(dev);
     ISAKBDState *isa_s = I8042(dev);
diff --git a/hw/input/virtio-input-hid.c b/hw/input/virtio-input-hid.c
index ad1beb3b0b..dbaa71b67d 100644
--- a/hw/input/virtio-input-hid.c
+++ b/hw/input/virtio-input-hid.c
@@ -261,7 +261,7 @@ static void virtio_input_handle_sync(DeviceState *dev)
     virtio_input_send(vinput, &event);
 }
 
-static void virtio_input_hid_realize(DeviceState *dev, Error **errp)
+static void virtio_input_hid_realize(DeviceState *dev, Error *errp[static 1])
 {
     VirtIOInputHID *vhid = VIRTIO_INPUT_HID(dev);
 
@@ -272,7 +272,8 @@ static void virtio_input_hid_realize(DeviceState *dev, 
Error **errp)
     }
 }
 
-static void virtio_input_hid_unrealize(DeviceState *dev, Error **errp)
+static void virtio_input_hid_unrealize(DeviceState *dev,
+                                       Error *errp[static 1])
 {
     VirtIOInputHID *vhid = VIRTIO_INPUT_HID(dev);
     qemu_input_handler_unregister(vhid->hs);
diff --git a/hw/input/virtio-input-host.c b/hw/input/virtio-input-host.c
index cb79e80024..6e5f9ef2bf 100644
--- a/hw/input/virtio-input-host.c
+++ b/hw/input/virtio-input-host.c
@@ -95,7 +95,7 @@ static void virtio_input_abs_config(VirtIOInputHost *vih, int 
axis)
     virtio_input_add_config(VIRTIO_INPUT(vih), &config);
 }
 
-static void virtio_input_host_realize(DeviceState *dev, Error **errp)
+static void virtio_input_host_realize(DeviceState *dev, Error *errp[static 1])
 {
     VirtIOInputHost *vih = VIRTIO_INPUT_HOST(dev);
     VirtIOInput *vinput = VIRTIO_INPUT(dev);
@@ -178,7 +178,8 @@ err_close:
     return;
 }
 
-static void virtio_input_host_unrealize(DeviceState *dev, Error **errp)
+static void virtio_input_host_unrealize(DeviceState *dev,
+                                        Error *errp[static 1])
 {
     VirtIOInputHost *vih = VIRTIO_INPUT_HOST(dev);
 
diff --git a/hw/input/virtio-input.c b/hw/input/virtio-input.c
index beb38528bd..1d259d7df1 100644
--- a/hw/input/virtio-input.c
+++ b/hw/input/virtio-input.c
@@ -183,7 +183,7 @@ static void virtio_input_set_config(VirtIODevice *vdev,
 }
 
 static uint64_t virtio_input_get_features(VirtIODevice *vdev, uint64_t f,
-                                          Error **errp)
+                                          Error *errp[static 1])
 {
     return f;
 }
@@ -229,7 +229,8 @@ static int virtio_input_post_load(void *opaque, int 
version_id)
     return 0;
 }
 
-static void virtio_input_device_realize(DeviceState *dev, Error **errp)
+static void virtio_input_device_realize(DeviceState *dev,
+                                        Error *errp[static 1])
 {
     VirtIOInputClass *vic = VIRTIO_INPUT_GET_CLASS(dev);
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
@@ -272,7 +273,8 @@ static void virtio_input_finalize(Object *obj)
 
     g_free(vinput->queue);
 }
-static void virtio_input_device_unrealize(DeviceState *dev, Error **errp)
+static void virtio_input_device_unrealize(DeviceState *dev,
+                                          Error *errp[static 1])
 {
     VirtIOInputClass *vic = VIRTIO_INPUT_GET_CLASS(dev);
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
diff --git a/hw/input/vmmouse.c b/hw/input/vmmouse.c
index 4747da9a8d..0d4e0553fb 100644
--- a/hw/input/vmmouse.c
+++ b/hw/input/vmmouse.c
@@ -261,7 +261,7 @@ static void vmmouse_reset(DeviceState *d)
     vmmouse_disable(s);
 }
 
-static void vmmouse_realizefn(DeviceState *dev, Error **errp)
+static void vmmouse_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     VMMouseState *s = VMMOUSE(dev);
 
diff --git a/hw/intc/apic.c b/hw/intc/apic.c
index fe15fb6024..3f3e083838 100644
--- a/hw/intc/apic.c
+++ b/hw/intc/apic.c
@@ -875,7 +875,7 @@ static const MemoryRegionOps apic_io_ops = {
     .endianness = DEVICE_NATIVE_ENDIAN,
 };
 
-static void apic_realize(DeviceState *dev, Error **errp)
+static void apic_realize(DeviceState *dev, Error *errp[static 1])
 {
     APICCommonState *s = APIC(dev);
 
@@ -894,7 +894,7 @@ static void apic_realize(DeviceState *dev, Error **errp)
     msi_nonbroken = true;
 }
 
-static void apic_unrealize(DeviceState *dev, Error **errp)
+static void apic_unrealize(DeviceState *dev, Error *errp[static 1])
 {
     APICCommonState *s = APIC(dev);
 
diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c
index 536cbad4d0..02b5a81f88 100644
--- a/hw/intc/apic_common.c
+++ b/hw/intc/apic_common.c
@@ -307,7 +307,7 @@ static int apic_load_old(QEMUFile *f, void *opaque, int 
version_id)
 
 static const VMStateDescription vmstate_apic_common;
 
-static void apic_common_realize(DeviceState *dev, Error **errp)
+static void apic_common_realize(DeviceState *dev, Error *errp[static 1])
 {
     APICCommonState *s = APIC_COMMON(dev);
     APICCommonClass *info;
@@ -334,7 +334,7 @@ static void apic_common_realize(DeviceState *dev, Error 
**errp)
                                    s, -1, 0, IGNORE_ERRORS);
 }
 
-static void apic_common_unrealize(DeviceState *dev, Error **errp)
+static void apic_common_unrealize(DeviceState *dev, Error *errp[static 1])
 {
     APICCommonState *s = APIC_COMMON(dev);
     APICCommonClass *info = APIC_COMMON_GET_CLASS(s);
@@ -447,7 +447,7 @@ static Property apic_properties_common[] = {
 };
 
 static void apic_common_get_id(Object *obj, Visitor *v, const char *name,
-                               void *opaque, Error **errp)
+                               void *opaque, Error *errp[static 1])
 {
     APICCommonState *s = APIC_COMMON(obj);
     int64_t value;
@@ -457,7 +457,7 @@ static void apic_common_get_id(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void apic_common_set_id(Object *obj, Visitor *v, const char *name,
-                               void *opaque, Error **errp)
+                               void *opaque, Error *errp[static 1])
 {
     APICCommonState *s = APIC_COMMON(obj);
     DeviceState *dev = DEVICE(obj);
diff --git a/hw/intc/arm_gic.c b/hw/intc/arm_gic.c
index aa01bac522..5e7ab0784b 100644
--- a/hw/intc/arm_gic.c
+++ b/hw/intc/arm_gic.c
@@ -1397,7 +1397,7 @@ void gic_init_irqs_and_distributor(GICState *s)
     gic_init_irqs_and_mmio(s, gic_set_irq, gic_ops);
 }
 
-static void arm_gic_realize(DeviceState *dev, Error **errp)
+static void arm_gic_realize(DeviceState *dev, Error *errp[static 1])
 {
     /* Device instance realize function for the GIC sysbus device */
     int i;
diff --git a/hw/intc/arm_gic_common.c b/hw/intc/arm_gic_common.c
index 70f1134823..73560aaf97 100644
--- a/hw/intc/arm_gic_common.c
+++ b/hw/intc/arm_gic_common.c
@@ -127,7 +127,7 @@ void gic_init_irqs_and_mmio(GICState *s, qemu_irq_handler 
handler,
     sysbus_init_mmio(sbd, &s->cpuiomem[0]);
 }
 
-static void arm_gic_common_realize(DeviceState *dev, Error **errp)
+static void arm_gic_common_realize(DeviceState *dev, Error *errp[static 1])
 {
     GICState *s = ARM_GIC_COMMON(dev);
     int num_irq = s->num_irq;
diff --git a/hw/intc/arm_gic_kvm.c b/hw/intc/arm_gic_kvm.c
index 00f1b704be..543f1cfdea 100644
--- a/hw/intc/arm_gic_kvm.c
+++ b/hw/intc/arm_gic_kvm.c
@@ -490,7 +490,7 @@ static void kvm_arm_gic_reset(DeviceState *dev)
     }
 }
 
-static void kvm_arm_gic_realize(DeviceState *dev, Error **errp)
+static void kvm_arm_gic_realize(DeviceState *dev, Error *errp[static 1])
 {
     int i;
     GICState *s = KVM_ARM_GIC(dev);
diff --git a/hw/intc/arm_gicv2m.c b/hw/intc/arm_gicv2m.c
index 3922fbc1c1..707e4fe34c 100644
--- a/hw/intc/arm_gicv2m.c
+++ b/hw/intc/arm_gicv2m.c
@@ -128,7 +128,7 @@ static const MemoryRegionOps gicv2m_ops = {
     .endianness = DEVICE_LITTLE_ENDIAN,
 };
 
-static void gicv2m_realize(DeviceState *dev, Error **errp)
+static void gicv2m_realize(DeviceState *dev, Error *errp[static 1])
 {
     ARMGICv2mState *s = ARM_GICV2M(dev);
     int i;
diff --git a/hw/intc/arm_gicv3.c b/hw/intc/arm_gicv3.c
index 1dd941fef3..56ad8e14be 100644
--- a/hw/intc/arm_gicv3.c
+++ b/hw/intc/arm_gicv3.c
@@ -360,7 +360,7 @@ static const MemoryRegionOps gic_ops[] = {
     }
 };
 
-static void arm_gic_realize(DeviceState *dev, Error **errp)
+static void arm_gic_realize(DeviceState *dev, Error *errp[static 1])
 {
     /* Device instance realize function for the GIC sysbus device */
     GICv3State *s = ARM_GICV3(dev);
diff --git a/hw/intc/arm_gicv3_common.c b/hw/intc/arm_gicv3_common.c
index 3fcd6dfaa9..e5ab078292 100644
--- a/hw/intc/arm_gicv3_common.c
+++ b/hw/intc/arm_gicv3_common.c
@@ -203,7 +203,7 @@ void gicv3_init_irqs_and_mmio(GICv3State *s, 
qemu_irq_handler handler,
     sysbus_init_mmio(sbd, &s->iomem_redist);
 }
 
-static void arm_gicv3_common_realize(DeviceState *dev, Error **errp)
+static void arm_gicv3_common_realize(DeviceState *dev, Error *errp[static 1])
 {
     GICv3State *s = ARM_GICV3_COMMON(dev);
     int i;
diff --git a/hw/intc/arm_gicv3_its_kvm.c b/hw/intc/arm_gicv3_its_kvm.c
index edeb4334d1..e0fa1ca972 100644
--- a/hw/intc/arm_gicv3_its_kvm.c
+++ b/hw/intc/arm_gicv3_its_kvm.c
@@ -53,7 +53,7 @@ static int kvm_its_send_msi(GICv3ITSState *s, uint32_t value, 
uint16_t devid)
     return kvm_vm_ioctl(kvm_state, KVM_SIGNAL_MSI, &msi);
 }
 
-static void kvm_arm_its_realize(DeviceState *dev, Error **errp)
+static void kvm_arm_its_realize(DeviceState *dev, Error *errp[static 1])
 {
     GICv3ITSState *s = ARM_GICV3_ITS_COMMON(dev);
 
diff --git a/hw/intc/arm_gicv3_kvm.c b/hw/intc/arm_gicv3_kvm.c
index 21e86edb17..e5e01b8403 100644
--- a/hw/intc/arm_gicv3_kvm.c
+++ b/hw/intc/arm_gicv3_kvm.c
@@ -680,7 +680,7 @@ static const ARMCPRegInfo gicv3_cpuif_reginfo[] = {
     REGINFO_SENTINEL
 };
 
-static void kvm_arm_gicv3_realize(DeviceState *dev, Error **errp)
+static void kvm_arm_gicv3_realize(DeviceState *dev, Error *errp[static 1])
 {
     GICv3State *s = KVM_ARM_GICV3(dev);
     KVMARMGICv3Class *kgc = KVM_ARM_GICV3_GET_CLASS(s);
diff --git a/hw/intc/armv7m_nvic.c b/hw/intc/armv7m_nvic.c
index 7795c0623f..491a257877 100644
--- a/hw/intc/armv7m_nvic.c
+++ b/hw/intc/armv7m_nvic.c
@@ -999,7 +999,7 @@ static void nvic_systick_trigger(void *opaque, int n, int 
level)
     }
 }
 
-static void armv7m_nvic_realize(DeviceState *dev, Error **errp)
+static void armv7m_nvic_realize(DeviceState *dev, Error *errp[static 1])
 {
     NVICState *s = NVIC(dev);
     SysBusDevice *systick_sbd;
diff --git a/hw/intc/aspeed_vic.c b/hw/intc/aspeed_vic.c
index 2370e7485f..7fe079e71a 100644
--- a/hw/intc/aspeed_vic.c
+++ b/hw/intc/aspeed_vic.c
@@ -283,7 +283,7 @@ static void aspeed_vic_reset(DeviceState *dev)
 
 #define AVIC_IO_REGION_SIZE 0x20000
 
-static void aspeed_vic_realize(DeviceState *dev, Error **errp)
+static void aspeed_vic_realize(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
     AspeedVICState *s = ASPEED_VIC(dev);
diff --git a/hw/intc/exynos4210_gic.c b/hw/intc/exynos4210_gic.c
index 2a55817b76..e411a91456 100644
--- a/hw/intc/exynos4210_gic.c
+++ b/hw/intc/exynos4210_gic.c
@@ -436,7 +436,8 @@ static void exynos4210_irq_gate_init(Object *obj)
     sysbus_init_irq(sbd, &s->out);
 }
 
-static void exynos4210_irq_gate_realize(DeviceState *dev, Error **errp)
+static void exynos4210_irq_gate_realize(DeviceState *dev,
+                                        Error *errp[static 1])
 {
     Exynos4210IRQGateState *s = EXYNOS4210_IRQ_GATE(dev);
 
diff --git a/hw/intc/grlib_irqmp.c b/hw/intc/grlib_irqmp.c
index 94659ee256..0a9498cb1c 100644
--- a/hw/intc/grlib_irqmp.c
+++ b/hw/intc/grlib_irqmp.c
@@ -337,7 +337,7 @@ static void grlib_irqmp_init(Object *obj)
     sysbus_init_mmio(dev, &irqmp->iomem);
 }
 
-static void grlib_irqmp_realize(DeviceState *dev, Error **errp)
+static void grlib_irqmp_realize(DeviceState *dev, Error *errp[static 1])
 {
     IRQMP *irqmp = GRLIB_IRQMP(dev);
 
diff --git a/hw/intc/i8259.c b/hw/intc/i8259.c
index fe9ecd6bd4..7bd6c3d092 100644
--- a/hw/intc/i8259.c
+++ b/hw/intc/i8259.c
@@ -445,7 +445,7 @@ static const MemoryRegionOps pic_elcr_ioport_ops = {
     },
 };
 
-static void pic_realize(DeviceState *dev, Error **errp)
+static void pic_realize(DeviceState *dev, Error *errp[static 1])
 {
     PICCommonState *s = PIC_COMMON(dev);
     PICClass *pc = PIC_GET_CLASS(dev);
diff --git a/hw/intc/i8259_common.c b/hw/intc/i8259_common.c
index c2fd563b5b..47f1ec25f9 100644
--- a/hw/intc/i8259_common.c
+++ b/hw/intc/i8259_common.c
@@ -67,7 +67,7 @@ static int pic_dispatch_post_load(void *opaque, int 
version_id)
     return 0;
 }
 
-static void pic_common_realize(DeviceState *dev, Error **errp)
+static void pic_common_realize(DeviceState *dev, Error *errp[static 1])
 {
     PICCommonState *s = PIC_COMMON(dev);
     ISADevice *isa = ISA_DEVICE(dev);
diff --git a/hw/intc/ioapic.c b/hw/intc/ioapic.c
index 37c4386ae3..7479d89061 100644
--- a/hw/intc/ioapic.c
+++ b/hw/intc/ioapic.c
@@ -410,7 +410,7 @@ static void ioapic_machine_done_notify(Notifier *notifier, 
void *data)
 
 #define IOAPIC_VER_DEF 0x20
 
-static void ioapic_realize(DeviceState *dev, Error **errp)
+static void ioapic_realize(DeviceState *dev, Error *errp[static 1])
 {
     IOAPICCommonState *s = IOAPIC_COMMON(dev);
 
diff --git a/hw/intc/ioapic_common.c b/hw/intc/ioapic_common.c
index 97c4f9c2df..b9f9035860 100644
--- a/hw/intc/ioapic_common.c
+++ b/hw/intc/ioapic_common.c
@@ -123,7 +123,7 @@ static int ioapic_dispatch_post_load(void *opaque, int 
version_id)
     return 0;
 }
 
-static void ioapic_common_realize(DeviceState *dev, Error **errp)
+static void ioapic_common_realize(DeviceState *dev, Error *errp[static 1])
 {
     IOAPICCommonState *s = IOAPIC_COMMON(dev);
     IOAPICCommonClass *info;
diff --git a/hw/intc/mips_gic.c b/hw/intc/mips_gic.c
index 15e6e40f9f..f821701993 100644
--- a/hw/intc/mips_gic.c
+++ b/hw/intc/mips_gic.c
@@ -401,7 +401,7 @@ static void mips_gic_init(Object *obj)
     qemu_register_reset(gic_reset, s);
 }
 
-static void mips_gic_realize(DeviceState *dev, Error **errp)
+static void mips_gic_realize(DeviceState *dev, Error *errp[static 1])
 {
     MIPSGICState *s = MIPS_GIC(dev);
     CPUState *cs = first_cpu;
diff --git a/hw/intc/nios2_iic.c b/hw/intc/nios2_iic.c
index 016426f964..6ed48f7fc6 100644
--- a/hw/intc/nios2_iic.c
+++ b/hw/intc/nios2_iic.c
@@ -62,7 +62,7 @@ static void altera_iic_init(Object *obj)
     sysbus_init_irq(SYS_BUS_DEVICE(obj), &pv->parent_irq);
 }
 
-static void altera_iic_realize(DeviceState *dev, Error **errp)
+static void altera_iic_realize(DeviceState *dev, Error *errp[static 1])
 {
     struct AlteraIIC *pv = ALTERA_IIC(dev);
     Error *err = NULL;
diff --git a/hw/intc/omap_intc.c b/hw/intc/omap_intc.c
index ccdda89dab..d4824b6a29 100644
--- a/hw/intc/omap_intc.c
+++ b/hw/intc/omap_intc.c
@@ -379,7 +379,7 @@ static void omap_intc_init(Object *obj)
     sysbus_init_mmio(sbd, &s->mmio);
 }
 
-static void omap_intc_realize(DeviceState *dev, Error **errp)
+static void omap_intc_realize(DeviceState *dev, Error *errp[static 1])
 {
     struct omap_intr_handler_s *s = OMAP_INTC(dev);
 
@@ -627,7 +627,7 @@ static void omap2_intc_init(Object *obj)
     sysbus_init_mmio(sbd, &s->mmio);
 }
 
-static void omap2_intc_realize(DeviceState *dev, Error **errp)
+static void omap2_intc_realize(DeviceState *dev, Error *errp[static 1])
 {
     struct omap_intr_handler_s *s = OMAP_INTC(dev);
 
diff --git a/hw/intc/openpic.c b/hw/intc/openpic.c
index f966d0604a..a801248537 100644
--- a/hw/intc/openpic.c
+++ b/hw/intc/openpic.c
@@ -1520,7 +1520,7 @@ static void openpic_init(Object *obj)
     memory_region_init(&opp->mem, obj, "openpic", 0x40000);
 }
 
-static void openpic_realize(DeviceState *dev, Error **errp)
+static void openpic_realize(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *d = SYS_BUS_DEVICE(dev);
     OpenPICState *opp = OPENPIC(dev);
diff --git a/hw/intc/openpic_kvm.c b/hw/intc/openpic_kvm.c
index 0518e017c4..0786ab4a95 100644
--- a/hw/intc/openpic_kvm.c
+++ b/hw/intc/openpic_kvm.c
@@ -197,7 +197,7 @@ static void kvm_openpic_init(Object *obj)
                           "kvm-openpic", 0x40000);
 }
 
-static void kvm_openpic_realize(DeviceState *dev, Error **errp)
+static void kvm_openpic_realize(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *d = SYS_BUS_DEVICE(dev);
     KVMOpenPICState *opp = KVM_OPENPIC(dev);
diff --git a/hw/intc/realview_gic.c b/hw/intc/realview_gic.c
index 1b114e7065..ca3e54edeb 100644
--- a/hw/intc/realview_gic.c
+++ b/hw/intc/realview_gic.c
@@ -18,7 +18,7 @@ static void realview_gic_set_irq(void *opaque, int irq, int 
level)
     qemu_set_irq(qdev_get_gpio_in(DEVICE(&s->gic), irq), level);
 }
 
-static void realview_gic_realize(DeviceState *dev, Error **errp)
+static void realview_gic_realize(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
     RealViewGICState *s = REALVIEW_GIC(dev);
diff --git a/hw/intc/s390_flic.c b/hw/intc/s390_flic.c
index cc14ddc4bd..90be2eb552 100644
--- a/hw/intc/s390_flic.c
+++ b/hw/intc/s390_flic.c
@@ -95,7 +95,7 @@ static Property s390_flic_common_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void s390_flic_common_realize(DeviceState *dev, Error **errp)
+static void s390_flic_common_realize(DeviceState *dev, Error *errp[static 1])
 {
     uint32_t max_batch = S390_FLIC_COMMON(dev)->adapter_routes_max_batch;
 
diff --git a/hw/intc/s390_flic_kvm.c b/hw/intc/s390_flic_kvm.c
index 4ee59628d0..ecd803fb7f 100644
--- a/hw/intc/s390_flic_kvm.c
+++ b/hw/intc/s390_flic_kvm.c
@@ -392,7 +392,7 @@ static const VMStateDescription kvm_s390_flic_vmstate = {
     }
 };
 
-static void kvm_s390_flic_realize(DeviceState *dev, Error **errp)
+static void kvm_s390_flic_realize(DeviceState *dev, Error *errp[static 1])
 {
     KVMS390FLICState *flic_state = KVM_S390_FLIC(dev);
     struct kvm_create_device cd = {0};
diff --git a/hw/intc/xics.c b/hw/intc/xics.c
index ea3516794a..74536c0c0b 100644
--- a/hw/intc/xics.c
+++ b/hw/intc/xics.c
@@ -334,7 +334,7 @@ static void icp_reset(void *dev)
     qemu_set_irq(icp->output, 0);
 }
 
-static void icp_realize(DeviceState *dev, Error **errp)
+static void icp_realize(DeviceState *dev, Error *errp[static 1])
 {
     ICPState *icp = ICP(dev);
     ICPStateClass *icpc = ICP_GET_CLASS(dev);
@@ -357,7 +357,7 @@ static void icp_realize(DeviceState *dev, Error **errp)
     qemu_register_reset(icp_reset, dev);
 }
 
-static void icp_unrealize(DeviceState *dev, Error **errp)
+static void icp_unrealize(DeviceState *dev, Error *errp[static 1])
 {
     qemu_unregister_reset(icp_reset, dev);
 }
@@ -601,7 +601,7 @@ static void ics_simple_initfn(Object *obj)
     ics->offset = XICS_IRQ_BASE;
 }
 
-static void ics_simple_realize(DeviceState *dev, Error **errp)
+static void ics_simple_realize(DeviceState *dev, Error *errp[static 1])
 {
     ICSState *ics = ICS_SIMPLE(dev);
 
@@ -642,7 +642,7 @@ static const TypeInfo ics_simple_info = {
     .instance_init = ics_simple_initfn,
 };
 
-static void ics_base_realize(DeviceState *dev, Error **errp)
+static void ics_base_realize(DeviceState *dev, Error *errp[static 1])
 {
     ICSStateClass *icsc = ICS_BASE_GET_CLASS(dev);
     ICSState *ics = ICS_BASE(dev);
diff --git a/hw/intc/xics_kvm.c b/hw/intc/xics_kvm.c
index 14b8f6f6e4..49f3e943e3 100644
--- a/hw/intc/xics_kvm.c
+++ b/hw/intc/xics_kvm.c
@@ -159,12 +159,12 @@ static void icp_kvm_cpu_setup(ICPState *icp, PowerPCCPU 
*cpu)
     QLIST_INSERT_HEAD(&kvm_enabled_icps, enabled_icp, node);
 }
 
-static void icp_kvm_realize(DeviceState *dev, Error **errp)
+static void icp_kvm_realize(DeviceState *dev, Error *errp[static 1])
 {
     qemu_register_reset(icp_kvm_reset, dev);
 }
 
-static void icp_kvm_unrealize(DeviceState *dev, Error **errp)
+static void icp_kvm_unrealize(DeviceState *dev, Error *errp[static 1])
 {
     qemu_unregister_reset(icp_kvm_reset, dev);
 }
@@ -351,7 +351,7 @@ static void ics_kvm_reset(void *dev)
     ics_set_kvm_state(ics, 1);
 }
 
-static void ics_kvm_realize(DeviceState *dev, Error **errp)
+static void ics_kvm_realize(DeviceState *dev, Error *errp[static 1])
 {
     ICSState *ics = ICS_SIMPLE(dev);
 
@@ -394,7 +394,7 @@ static void rtas_dummy(PowerPCCPU *cpu, sPAPRMachineState 
*spapr,
                  __func__);
 }
 
-int xics_kvm_init(sPAPRMachineState *spapr, Error **errp)
+int xics_kvm_init(sPAPRMachineState *spapr, Error *errp[static 1])
 {
     int rc;
     struct kvm_create_device xics_create_device = {
diff --git a/hw/intc/xics_pnv.c b/hw/intc/xics_pnv.c
index 12ae605f10..a00004bdf3 100644
--- a/hw/intc/xics_pnv.c
+++ b/hw/intc/xics_pnv.c
@@ -159,7 +159,7 @@ static const MemoryRegionOps pnv_icp_ops = {
     },
 };
 
-static void pnv_icp_realize(DeviceState *dev, Error **errp)
+static void pnv_icp_realize(DeviceState *dev, Error *errp[static 1])
 {
     PnvICPState *icp = PNV_ICP(dev);
 
diff --git a/hw/intc/xics_spapr.c b/hw/intc/xics_spapr.c
index d98ea8b130..b88a239dbc 100644
--- a/hw/intc/xics_spapr.c
+++ b/hw/intc/xics_spapr.c
@@ -269,7 +269,8 @@ static int ics_find_free_block(ICSState *ics, int num, int 
alignnum)
     return -1;
 }
 
-int spapr_ics_alloc(ICSState *ics, int irq_hint, bool lsi, Error **errp)
+int spapr_ics_alloc(ICSState *ics, int irq_hint, bool lsi,
+                    Error *errp[static 1])
 {
     int irq;
 
@@ -302,7 +303,7 @@ int spapr_ics_alloc(ICSState *ics, int irq_hint, bool lsi, 
Error **errp)
  * the block. If align==true, aligns the first IRQ number to num.
  */
 int spapr_ics_alloc_block(ICSState *ics, int num, bool lsi,
-                          bool align, Error **errp)
+                          bool align, Error *errp[static 1])
 {
     int i, first = -1;
 
diff --git a/hw/ipack/ipack.c b/hw/ipack/ipack.c
index e380f4f369..cf7c5e7bfb 100644
--- a/hw/ipack/ipack.c
+++ b/hw/ipack/ipack.c
@@ -36,7 +36,7 @@ void ipack_bus_new_inplace(IPackBus *bus, size_t bus_size,
     bus->set_irq = handler;
 }
 
-static void ipack_device_realize(DeviceState *dev, Error **errp)
+static void ipack_device_realize(DeviceState *dev, Error *errp[static 1])
 {
     IPackDevice *idev = IPACK_DEVICE(dev);
     IPackBus *bus = IPACK_BUS(qdev_get_parent_bus(dev));
@@ -56,7 +56,7 @@ static void ipack_device_realize(DeviceState *dev, Error 
**errp)
     k->realize(dev, errp);
 }
 
-static void ipack_device_unrealize(DeviceState *dev, Error **errp)
+static void ipack_device_unrealize(DeviceState *dev, Error *errp[static 1])
 {
     IPackDevice *idev = IPACK_DEVICE(dev);
     IPackDeviceClass *k = IPACK_DEVICE_GET_CLASS(dev);
diff --git a/hw/ipack/tpci200.c b/hw/ipack/tpci200.c
index 4dfa6b33f3..d0bc3e573d 100644
--- a/hw/ipack/tpci200.c
+++ b/hw/ipack/tpci200.c
@@ -573,7 +573,7 @@ static const MemoryRegionOps tpci200_las3_ops = {
     }
 };
 
-static void tpci200_realize(PCIDevice *pci_dev, Error **errp)
+static void tpci200_realize(PCIDevice *pci_dev, Error *errp[static 1])
 {
     TPCI200State *s = TPCI200(pci_dev);
     uint8_t *c = s->dev.config;
diff --git a/hw/ipmi/ipmi.c b/hw/ipmi/ipmi.c
index 5dd057cd39..ef5db1b247 100644
--- a/hw/ipmi/ipmi.c
+++ b/hw/ipmi/ipmi.c
@@ -92,7 +92,7 @@ static TypeInfo ipmi_interface_type_info = {
 };
 
 static void isa_ipmi_bmc_check(Object *obj, const char *name,
-                               Object *val, Error **errp)
+                               Object *val, Error *errp[static 1])
 {
     IPMIBmc *bmc = IPMI_BMC(val);
 
diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c
index 329b03e17f..a98dbd3c77 100644
--- a/hw/ipmi/ipmi_bmc_extern.c
+++ b/hw/ipmi/ipmi_bmc_extern.c
@@ -443,7 +443,7 @@ static void ipmi_bmc_extern_handle_reset(IPMIBmc *b)
     continue_send(ibe);
 }
 
-static void ipmi_bmc_extern_realize(DeviceState *dev, Error **errp)
+static void ipmi_bmc_extern_realize(DeviceState *dev, Error *errp[static 1])
 {
     IPMIBmcExtern *ibe = IPMI_BMC_EXTERN(dev);
 
diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c
index 277c28cb40..8dc71db08b 100644
--- a/hw/ipmi/ipmi_bmc_sim.c
+++ b/hw/ipmi/ipmi_bmc_sim.c
@@ -1924,7 +1924,7 @@ out:
     fru->nentries = size / fru->areasize;
 }
 
-static void ipmi_sim_realize(DeviceState *dev, Error **errp)
+static void ipmi_sim_realize(DeviceState *dev, Error *errp[static 1])
 {
     IPMIBmc *b = IPMI_BMC(dev);
     unsigned int i;
diff --git a/hw/ipmi/isa_ipmi_bt.c b/hw/ipmi/isa_ipmi_bt.c
index c7480f5f78..7c1bedf7d9 100644
--- a/hw/ipmi/isa_ipmi_bt.c
+++ b/hw/ipmi/isa_ipmi_bt.c
@@ -370,7 +370,7 @@ static void ipmi_bt_set_irq_enable(IPMIInterface *ii, int 
val)
     ib->irqs_enabled = val;
 }
 
-static void ipmi_bt_init(IPMIInterface *ii, Error **errp)
+static void ipmi_bt_init(IPMIInterface *ii, Error *errp[static 1])
 {
     IPMIInterfaceClass *iic = IPMI_INTERFACE_GET_CLASS(ii);
     IPMIBT *ib = iic->get_backend_data(ii);
@@ -421,7 +421,7 @@ static void ipmi_bt_class_init(IPMIInterfaceClass *iic)
     iic->get_fwinfo = ipmi_bt_get_fwinfo;
 }
 
-static void isa_ipmi_bt_realize(DeviceState *dev, Error **errp)
+static void isa_ipmi_bt_realize(DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *isadev = ISA_DEVICE(dev);
     ISAIPMIBTDevice *iib = ISA_IPMI_BT(dev);
diff --git a/hw/ipmi/isa_ipmi_kcs.c b/hw/ipmi/isa_ipmi_kcs.c
index 41e3c12b1e..e442f2febf 100644
--- a/hw/ipmi/isa_ipmi_kcs.c
+++ b/hw/ipmi/isa_ipmi_kcs.c
@@ -345,7 +345,7 @@ static void ipmi_kcs_set_irq_enable(IPMIInterface *ii, int 
val)
     ik->irqs_enabled = val;
 }
 
-static void ipmi_kcs_init(IPMIInterface *ii, Error **errp)
+static void ipmi_kcs_init(IPMIInterface *ii, Error *errp[static 1])
 {
     IPMIInterfaceClass *iic = IPMI_INTERFACE_GET_CLASS(ii);
     IPMIKCS *ik = iic->get_backend_data(ii);
@@ -393,7 +393,7 @@ static void ipmi_kcs_class_init(IPMIInterfaceClass *iic)
     iic->get_fwinfo = ipmi_kcs_get_fwinfo;
 }
 
-static void ipmi_isa_realize(DeviceState *dev, Error **errp)
+static void ipmi_isa_realize(DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *isadev = ISA_DEVICE(dev);
     ISAIPMIKCSDevice *iik = ISA_IPMI_KCS(dev);
diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c
index 4d29a9900c..8f7c8144e1 100644
--- a/hw/isa/i82378.c
+++ b/hw/isa/i82378.c
@@ -59,7 +59,7 @@ static void i82378_request_pic_irq(void *opaque, int irq, int 
level)
     qemu_set_irq(s->i8259[irq], level);
 }
 
-static void i82378_realize(PCIDevice *pci, Error **errp)
+static void i82378_realize(PCIDevice *pci, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(pci);
     I82378State *s = I82378(dev);
diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c
index 348e0eab9d..ebed529457 100644
--- a/hw/isa/isa-bus.c
+++ b/hw/isa/isa-bus.c
@@ -52,7 +52,7 @@ static const TypeInfo isa_bus_info = {
 };
 
 ISABus *isa_bus_new(DeviceState *dev, MemoryRegion* address_space,
-                    MemoryRegion *address_space_io, Error **errp)
+                    MemoryRegion *address_space_io, Error *errp[static 1])
 {
     if (isabus) {
         error_setg(errp, "Can't create a second ISA bus");
diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c
index ffa8f3ba03..49ecf764d8 100644
--- a/hw/isa/lpc_ich9.c
+++ b/hw/isa/lpc_ich9.c
@@ -638,7 +638,7 @@ Object *ich9_lpc_find(void)
 }
 
 static void ich9_lpc_get_sci_int(Object *obj, Visitor *v, const char *name,
-                                 void *opaque, Error **errp)
+                                 void *opaque, Error *errp[static 1])
 {
     ICH9LPCState *lpc = ICH9_LPC_DEVICE(obj);
     uint32_t value = lpc->sci_gsi;
@@ -669,7 +669,7 @@ static void ich9_lpc_initfn(Object *obj)
     ich9_lpc_add_properties(lpc);
 }
 
-static void ich9_lpc_realize(PCIDevice *d, Error **errp)
+static void ich9_lpc_realize(PCIDevice *d, Error *errp[static 1])
 {
     ICH9LPCState *lpc = ICH9_LPC_DEVICE(d);
     DeviceState *dev = DEVICE(d);
diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c
index 5ce9f0a062..da69d41155 100644
--- a/hw/isa/pc87312.c
+++ b/hw/isa/pc87312.c
@@ -262,7 +262,7 @@ static void pc87312_reset(DeviceState *d)
     pc87312_soft_reset(s);
 }
 
-static void pc87312_realize(DeviceState *dev, Error **errp)
+static void pc87312_realize(DeviceState *dev, Error *errp[static 1])
 {
     PC87312State *s;
     DeviceState *d;
diff --git a/hw/isa/piix4.c b/hw/isa/piix4.c
index f811eba59d..220d4a88dc 100644
--- a/hw/isa/piix4.c
+++ b/hw/isa/piix4.c
@@ -87,7 +87,7 @@ static const VMStateDescription vmstate_piix4 = {
     }
 };
 
-static void piix4_realize(PCIDevice *dev, Error **errp)
+static void piix4_realize(PCIDevice *dev, Error *errp[static 1])
 {
     PIIX4State *d = PIIX4_PCI_DEVICE(dev);
 
diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c
index 50dc83df77..ad09cf9719 100644
--- a/hw/isa/vt82c686.c
+++ b/hw/isa/vt82c686.c
@@ -262,7 +262,7 @@ static const VMStateDescription vmstate_acpi = {
  * just register a PCI device now, functionalities will be implemented later.
  */
 
-static void vt82c686b_ac97_realize(PCIDevice *dev, Error **errp)
+static void vt82c686b_ac97_realize(PCIDevice *dev, Error *errp[static 1])
 {
     VT686AC97State *s = VT82C686B_AC97_DEVICE(dev);
     uint8_t *pci_conf = s->dev.config;
@@ -303,7 +303,7 @@ static const TypeInfo via_ac97_info = {
     .class_init    = via_ac97_class_init,
 };
 
-static void vt82c686b_mc97_realize(PCIDevice *dev, Error **errp)
+static void vt82c686b_mc97_realize(PCIDevice *dev, Error *errp[static 1])
 {
     VT686MC97State *s = VT82C686B_MC97_DEVICE(dev);
     uint8_t *pci_conf = s->dev.config;
@@ -344,7 +344,7 @@ static const TypeInfo via_mc97_info = {
 };
 
 /* vt82c686 pm init */
-static void vt82c686b_pm_realize(PCIDevice *dev, Error **errp)
+static void vt82c686b_pm_realize(PCIDevice *dev, Error *errp[static 1])
 {
     VT686PMState *s = VT82C686B_PM_DEVICE(dev);
     uint8_t *pci_conf;
@@ -432,7 +432,7 @@ static const VMStateDescription vmstate_via = {
 };
 
 /* init the PCI-to-ISA bridge */
-static void vt82c686b_realize(PCIDevice *d, Error **errp)
+static void vt82c686b_realize(PCIDevice *d, Error *errp[static 1])
 {
     VT82C686BState *vt82c = VT82C686B_DEVICE(d);
     uint8_t *pci_conf;
diff --git a/hw/mem/nvdimm.c b/hw/mem/nvdimm.c
index 3843eb6110..10793b5d7d 100644
--- a/hw/mem/nvdimm.c
+++ b/hw/mem/nvdimm.c
@@ -28,7 +28,7 @@
 #include "hw/mem/nvdimm.h"
 
 static void nvdimm_get_label_size(Object *obj, Visitor *v, const char *name,
-                                  void *opaque, Error **errp)
+                                  void *opaque, Error *errp[static 1])
 {
     NVDIMMDevice *nvdimm = NVDIMM(obj);
     uint64_t value = nvdimm->label_size;
@@ -37,7 +37,7 @@ static void nvdimm_get_label_size(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void nvdimm_set_label_size(Object *obj, Visitor *v, const char *name,
-                                  void *opaque, Error **errp)
+                                  void *opaque, Error *errp[static 1])
 {
     NVDIMMDevice *nvdimm = NVDIMM(obj);
     Error *local_err = NULL;
@@ -78,7 +78,7 @@ static MemoryRegion *nvdimm_get_memory_region(PCDIMMDevice 
*dimm)
     return &nvdimm->nvdimm_mr;
 }
 
-static void nvdimm_realize(PCDIMMDevice *dimm, Error **errp)
+static void nvdimm_realize(PCDIMMDevice *dimm, Error *errp[static 1])
 {
     MemoryRegion *mr = host_memory_backend_get_memory(dimm->hostmem, errp);
     NVDIMMDevice *nvdimm = NVDIMM(dimm);
diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c
index 13f43ab658..ce1cb153be 100644
--- a/hw/mem/pc-dimm.c
+++ b/hw/mem/pc-dimm.c
@@ -35,7 +35,8 @@ typedef struct pc_dimms_capacity {
 } pc_dimms_capacity;
 
 void pc_dimm_memory_plug(DeviceState *dev, MemoryHotplugState *hpms,
-                         MemoryRegion *mr, uint64_t align, Error **errp)
+                         MemoryRegion *mr, uint64_t align,
+                         Error *errp[static 1])
 {
     int slot;
     MachineState *machine = MACHINE(qdev_get_machine());
@@ -147,7 +148,7 @@ static int pc_existing_dimms_capacity_internal(Object *obj, 
void *opaque)
     return 0;
 }
 
-uint64_t pc_existing_dimms_capacity(Error **errp)
+uint64_t pc_existing_dimms_capacity(Error *errp[static 1])
 {
     pc_dimms_capacity cap;
 
@@ -213,7 +214,8 @@ static int pc_dimm_slot2bitmap(Object *obj, void *opaque)
     return 0;
 }
 
-int pc_dimm_get_free_slot(const int *hint, int max_slots, Error **errp)
+int pc_dimm_get_free_slot(const int *hint, int max_slots,
+                          Error *errp[static 1])
 {
     unsigned long *bitmap = bitmap_new(max_slots);
     int slot = 0;
@@ -275,7 +277,7 @@ static int pc_dimm_built_list(Object *obj, void *opaque)
 uint64_t pc_dimm_get_free_addr(uint64_t address_space_start,
                                uint64_t address_space_size,
                                uint64_t *hint, uint64_t align, uint64_t size,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     GSList *list = NULL, *item;
     uint64_t new_addr, ret = 0;
@@ -353,7 +355,7 @@ static Property pc_dimm_properties[] = {
 };
 
 static void pc_dimm_get_size(Object *obj, Visitor *v, const char *name,
-                             void *opaque, Error **errp)
+                             void *opaque, Error *errp[static 1])
 {
     int64_t value;
     MemoryRegion *mr;
@@ -367,7 +369,7 @@ static void pc_dimm_get_size(Object *obj, Visitor *v, const 
char *name,
 }
 
 static void pc_dimm_check_memdev_is_busy(Object *obj, const char *name,
-                                      Object *val, Error **errp)
+                                      Object *val, Error *errp[static 1])
 {
     Error *local_err = NULL;
 
@@ -395,7 +397,7 @@ static void pc_dimm_init(Object *obj)
                              &error_abort);
 }
 
-static void pc_dimm_realize(DeviceState *dev, Error **errp)
+static void pc_dimm_realize(DeviceState *dev, Error *errp[static 1])
 {
     PCDIMMDevice *dimm = PC_DIMM(dev);
     PCDIMMDeviceClass *ddc = PC_DIMM_GET_CLASS(dimm);
@@ -419,7 +421,7 @@ static void pc_dimm_realize(DeviceState *dev, Error **errp)
     host_memory_backend_set_mapped(dimm->hostmem, true);
 }
 
-static void pc_dimm_unrealize(DeviceState *dev, Error **errp)
+static void pc_dimm_unrealize(DeviceState *dev, Error *errp[static 1])
 {
     PCDIMMDevice *dimm = PC_DIMM(dev);
 
diff --git a/hw/mips/cps.c b/hw/mips/cps.c
index 4ef337d5c4..2842ddebf5 100644
--- a/hw/mips/cps.c
+++ b/hw/mips/cps.c
@@ -60,7 +60,7 @@ static bool cpu_mips_itu_supported(CPUMIPSState *env)
     return is_mt && !kvm_enabled();
 }
 
-static void mips_cps_realize(DeviceState *dev, Error **errp)
+static void mips_cps_realize(DeviceState *dev, Error *errp[static 1])
 {
     MIPSCPSState *s = MIPS_CPS(dev);
     CPUMIPSState *env;
diff --git a/hw/mips/gt64xxx_pci.c b/hw/mips/gt64xxx_pci.c
index e8b2eef688..93975f766f 100644
--- a/hw/mips/gt64xxx_pci.c
+++ b/hw/mips/gt64xxx_pci.c
@@ -1194,7 +1194,7 @@ static int gt64120_init(SysBusDevice *dev)
     return 0;
 }
 
-static void gt64120_pci_realize(PCIDevice *d, Error **errp)
+static void gt64120_pci_realize(PCIDevice *d, Error *errp[static 1])
 {
     /* FIXME: Malta specific hw assumptions ahead */
     pci_set_word(d->config + PCI_COMMAND, 0);
diff --git a/hw/misc/applesmc.c b/hw/misc/applesmc.c
index 77fab5b9d2..7e4bc090cf 100644
--- a/hw/misc/applesmc.c
+++ b/hw/misc/applesmc.c
@@ -225,7 +225,7 @@ static const MemoryRegionOps applesmc_cmd_io_ops = {
     },
 };
 
-static void applesmc_isa_realize(DeviceState *dev, Error **errp)
+static void applesmc_isa_realize(DeviceState *dev, Error *errp[static 1])
 {
     AppleSMCState *s = APPLE_SMC(dev);
 
diff --git a/hw/misc/arm11scu.c b/hw/misc/arm11scu.c
index 7042ce11e8..9f4a147ee8 100644
--- a/hw/misc/arm11scu.c
+++ b/hw/misc/arm11scu.c
@@ -59,7 +59,7 @@ static const MemoryRegionOps mpcore_scu_ops = {
     .endianness = DEVICE_NATIVE_ENDIAN,
 };
 
-static void arm11_scu_realize(DeviceState *dev, Error **errp)
+static void arm11_scu_realize(DeviceState *dev, Error *errp[static 1])
 {
 }
 
diff --git a/hw/misc/arm_sysctl.c b/hw/misc/arm_sysctl.c
index b20b44ea20..d9386aa694 100644
--- a/hw/misc/arm_sysctl.c
+++ b/hw/misc/arm_sysctl.c
@@ -604,7 +604,7 @@ static void arm_sysctl_init(Object *obj)
     qdev_init_gpio_out(dev, &s->pl110_mux_ctrl, 1);
 }
 
-static void arm_sysctl_realize(DeviceState *d, Error **errp)
+static void arm_sysctl_realize(DeviceState *d, Error *errp[static 1])
 {
     arm_sysctl_state *s = ARM_SYSCTL(d);
 
diff --git a/hw/misc/aspeed_scu.c b/hw/misc/aspeed_scu.c
index 95022d3607..3e4136d5c4 100644
--- a/hw/misc/aspeed_scu.c
+++ b/hw/misc/aspeed_scu.c
@@ -268,7 +268,7 @@ bool is_supported_silicon_rev(uint32_t silicon_rev)
     return false;
 }
 
-static void aspeed_scu_realize(DeviceState *dev, Error **errp)
+static void aspeed_scu_realize(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
     AspeedSCUState *s = ASPEED_SCU(dev);
diff --git a/hw/misc/aspeed_sdmc.c b/hw/misc/aspeed_sdmc.c
index 5f3ac0b6f6..9d9b351a1e 100644
--- a/hw/misc/aspeed_sdmc.c
+++ b/hw/misc/aspeed_sdmc.c
@@ -213,7 +213,7 @@ static void aspeed_sdmc_reset(DeviceState *dev)
     }
 }
 
-static void aspeed_sdmc_realize(DeviceState *dev, Error **errp)
+static void aspeed_sdmc_realize(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
     AspeedSDMCState *s = ASPEED_SDMC(dev);
diff --git a/hw/misc/bcm2835_mbox.c b/hw/misc/bcm2835_mbox.c
index e97cc814af..4b299ce7db 100644
--- a/hw/misc/bcm2835_mbox.c
+++ b/hw/misc/bcm2835_mbox.c
@@ -293,7 +293,7 @@ static void bcm2835_mbox_reset(DeviceState *dev)
     }
 }
 
-static void bcm2835_mbox_realize(DeviceState *dev, Error **errp)
+static void bcm2835_mbox_realize(DeviceState *dev, Error *errp[static 1])
 {
     BCM2835MboxState *s = BCM2835_MBOX(dev);
     Object *obj;
diff --git a/hw/misc/bcm2835_property.c b/hw/misc/bcm2835_property.c
index 70eaafd325..933deb1302 100644
--- a/hw/misc/bcm2835_property.c
+++ b/hw/misc/bcm2835_property.c
@@ -379,7 +379,7 @@ static void bcm2835_property_reset(DeviceState *dev)
     s->pending = false;
 }
 
-static void bcm2835_property_realize(DeviceState *dev, Error **errp)
+static void bcm2835_property_realize(DeviceState *dev, Error *errp[static 1])
 {
     BCM2835PropertyState *s = BCM2835_PROPERTY(dev);
     Object *obj;
diff --git a/hw/misc/debugexit.c b/hw/misc/debugexit.c
index 84fa1a5b9d..eb00684ab1 100644
--- a/hw/misc/debugexit.c
+++ b/hw/misc/debugexit.c
@@ -36,7 +36,7 @@ static const MemoryRegionOps debug_exit_ops = {
     .endianness = DEVICE_LITTLE_ENDIAN,
 };
 
-static void debug_exit_realizefn(DeviceState *d, Error **errp)
+static void debug_exit_realizefn(DeviceState *d, Error *errp[static 1])
 {
     ISADevice *dev = ISA_DEVICE(d);
     ISADebugExitState *isa = ISA_DEBUG_EXIT_DEVICE(d);
diff --git a/hw/misc/eccmemctl.c b/hw/misc/eccmemctl.c
index bb7cc52b5e..6913da0086 100644
--- a/hw/misc/eccmemctl.c
+++ b/hw/misc/eccmemctl.c
@@ -306,7 +306,7 @@ static void ecc_init(Object *obj)
     sysbus_init_mmio(dev, &s->iomem);
 }
 
-static void ecc_realize(DeviceState *dev, Error **errp)
+static void ecc_realize(DeviceState *dev, Error *errp[static 1])
 {
     ECCState *s = ECC_MEMCTL(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
diff --git a/hw/misc/edu.c b/hw/misc/edu.c
index 48735517f4..40fd715816 100644
--- a/hw/misc/edu.c
+++ b/hw/misc/edu.c
@@ -339,7 +339,7 @@ static void *edu_fact_thread(void *opaque)
     return NULL;
 }
 
-static void pci_edu_realize(PCIDevice *pdev, Error **errp)
+static void pci_edu_realize(PCIDevice *pdev, Error *errp[static 1])
 {
     EduState *edu = DO_UPCAST(EduState, pdev, pdev);
     uint8_t *pci_conf = pdev->config;
@@ -379,7 +379,7 @@ static void pci_edu_uninit(PCIDevice *pdev)
 }
 
 static void edu_obj_uint64(Object *obj, Visitor *v, const char *name,
-                           void *opaque, Error **errp)
+                           void *opaque, Error *errp[static 1])
 {
     uint64_t *val = opaque;
 
diff --git a/hw/misc/hyperv_testdev.c b/hw/misc/hyperv_testdev.c
index dbd7cdda07..3eab6c10af 100644
--- a/hw/misc/hyperv_testdev.c
+++ b/hw/misc/hyperv_testdev.c
@@ -133,7 +133,7 @@ static const MemoryRegionOps synic_test_sint_ops = {
     .endianness = DEVICE_LITTLE_ENDIAN,
 };
 
-static void hv_test_dev_realizefn(DeviceState *d, Error **errp)
+static void hv_test_dev_realizefn(DeviceState *d, Error *errp[static 1])
 {
     ISADevice *isa = ISA_DEVICE(d);
     HypervTestDev *dev = HYPERV_TEST_DEV(d);
diff --git a/hw/misc/imx6_src.c b/hw/misc/imx6_src.c
index cfb08710fb..44f9e480d4 100644
--- a/hw/misc/imx6_src.c
+++ b/hw/misc/imx6_src.c
@@ -275,7 +275,7 @@ static const struct MemoryRegionOps imx6_src_ops = {
     },
 };
 
-static void imx6_src_realize(DeviceState *dev, Error **errp)
+static void imx6_src_realize(DeviceState *dev, Error *errp[static 1])
 {
     IMX6SRCState *s = IMX6_SRC(dev);
 
diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c
index a68342bd0e..e9dde565b7 100644
--- a/hw/misc/ivshmem.c
+++ b/hw/misc/ivshmem.c
@@ -439,7 +439,7 @@ static void resize_peers(IVShmemState *s, int nb_peers)
 }
 
 static void ivshmem_add_kvm_msi_virq(IVShmemState *s, int vector,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     PCIDevice *pdev = PCI_DEVICE(s);
     int ret;
@@ -457,7 +457,8 @@ static void ivshmem_add_kvm_msi_virq(IVShmemState *s, int 
vector,
     s->msi_vectors[vector].pdev = pdev;
 }
 
-static void setup_interrupt(IVShmemState *s, int vector, Error **errp)
+static void setup_interrupt(IVShmemState *s, int vector,
+                            Error *errp[static 1])
 {
     EventNotifier *n = &s->peers[s->vm_id].eventfds[vector];
     bool with_irqfd = kvm_msi_via_irqfd_enabled() &&
@@ -487,7 +488,7 @@ static void setup_interrupt(IVShmemState *s, int vector, 
Error **errp)
     }
 }
 
-static void process_msg_shmem(IVShmemState *s, int fd, Error **errp)
+static void process_msg_shmem(IVShmemState *s, int fd, Error *errp[static 1])
 {
     struct stat buf;
     size_t size;
@@ -533,7 +534,7 @@ static void process_msg_shmem(IVShmemState *s, int fd, 
Error **errp)
 }
 
 static void process_msg_disconnect(IVShmemState *s, uint16_t posn,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     IVSHMEM_DPRINTF("posn %d has gone away\n", posn);
     if (posn >= s->nb_peers || posn == s->vm_id) {
@@ -544,7 +545,7 @@ static void process_msg_disconnect(IVShmemState *s, 
uint16_t posn,
 }
 
 static void process_msg_connect(IVShmemState *s, uint16_t posn, int fd,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     Peer *peer = &s->peers[posn];
     int vector;
@@ -575,7 +576,8 @@ static void process_msg_connect(IVShmemState *s, uint16_t 
posn, int fd,
     }
 }
 
-static void process_msg(IVShmemState *s, int64_t msg, int fd, Error **errp)
+static void process_msg(IVShmemState *s, int64_t msg, int fd,
+                        Error *errp[static 1])
 {
     IVSHMEM_DPRINTF("posn is %" PRId64 ", fd is %d\n", msg, fd);
 
@@ -633,7 +635,8 @@ static void ivshmem_read(void *opaque, const uint8_t *buf, 
int size)
     }
 }
 
-static int64_t ivshmem_recv_msg(IVShmemState *s, int *pfd, Error **errp)
+static int64_t ivshmem_recv_msg(IVShmemState *s, int *pfd,
+                                Error *errp[static 1])
 {
     int64_t msg;
     int n, ret;
@@ -653,7 +656,7 @@ static int64_t ivshmem_recv_msg(IVShmemState *s, int *pfd, 
Error **errp)
     return msg;
 }
 
-static void ivshmem_recv_setup(IVShmemState *s, Error **errp)
+static void ivshmem_recv_setup(IVShmemState *s, Error *errp[static 1])
 {
     Error *err = NULL;
     int64_t msg;
@@ -747,7 +750,7 @@ static void ivshmem_reset(DeviceState *d)
     }
 }
 
-static int ivshmem_setup_interrupts(IVShmemState *s, Error **errp)
+static int ivshmem_setup_interrupts(IVShmemState *s, Error *errp[static 1])
 {
     /* allocate QEMU callback data for receiving interrupts */
     s->msi_vectors = g_malloc0(s->vectors * sizeof(MSIVector));
@@ -831,7 +834,7 @@ static void ivshmem_write_config(PCIDevice *pdev, uint32_t 
address,
     }
 }
 
-static void ivshmem_common_realize(PCIDevice *dev, Error **errp)
+static void ivshmem_common_realize(PCIDevice *dev, Error *errp[static 1])
 {
     IVShmemState *s = IVSHMEM_COMMON(dev);
     uint8_t *pci_conf;
@@ -1006,7 +1009,7 @@ static const TypeInfo ivshmem_common_info = {
 };
 
 static void ivshmem_check_memdev_is_busy(Object *obj, const char *name,
-                                         Object *val, Error **errp)
+                                         Object *val, Error *errp[static 1])
 {
     if (host_memory_backend_is_mapped(MEMORY_BACKEND(val))) {
         char *path = object_get_canonical_path_component(val);
@@ -1048,7 +1051,7 @@ static void ivshmem_plain_init(Object *obj)
     s->not_legacy_32bit = 1;
 }
 
-static void ivshmem_plain_realize(PCIDevice *dev, Error **errp)
+static void ivshmem_plain_realize(PCIDevice *dev, Error *errp[static 1])
 {
     IVShmemState *s = IVSHMEM_COMMON(dev);
 
@@ -1120,7 +1123,7 @@ static void ivshmem_doorbell_init(Object *obj)
     s->not_legacy_32bit = 1;
 }
 
-static void ivshmem_doorbell_realize(PCIDevice *dev, Error **errp)
+static void ivshmem_doorbell_realize(PCIDevice *dev, Error *errp[static 1])
 {
     IVShmemState *s = IVSHMEM_COMMON(dev);
 
@@ -1244,7 +1247,7 @@ static void desugar_shm(IVShmemState *s)
     s->hostmem = MEMORY_BACKEND(obj);
 }
 
-static void ivshmem_realize(PCIDevice *dev, Error **errp)
+static void ivshmem_realize(PCIDevice *dev, Error *errp[static 1])
 {
     IVShmemState *s = IVSHMEM_COMMON(dev);
 
diff --git a/hw/misc/macio/cuda.c b/hw/misc/macio/cuda.c
index 008d8bd4d5..563294f1a5 100644
--- a/hw/misc/macio/cuda.c
+++ b/hw/misc/macio/cuda.c
@@ -897,7 +897,7 @@ static void cuda_reset(DeviceState *dev)
     s->sr_delay_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, cuda_set_sr_int, s);
 }
 
-static void cuda_realizefn(DeviceState *dev, Error **errp)
+static void cuda_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CUDAState *s = CUDA(dev);
     struct tm tm;
diff --git a/hw/misc/macio/macio.c b/hw/misc/macio/macio.c
index c5945b81f7..fc84d67098 100644
--- a/hw/misc/macio/macio.c
+++ b/hw/misc/macio/macio.c
@@ -122,7 +122,7 @@ static void macio_bar_setup(MacIOState *macio_state)
     }
 }
 
-static void macio_common_realize(PCIDevice *d, Error **errp)
+static void macio_common_realize(PCIDevice *d, Error *errp[static 1])
 {
     MacIOState *s = MACIO(d);
     SysBusDevice *sysbus_dev;
@@ -145,7 +145,7 @@ static void macio_common_realize(PCIDevice *d, Error **errp)
 
 static void macio_realize_ide(MacIOState *s, MACIOIDEState *ide,
                               qemu_irq irq0, qemu_irq irq1, int dmaid,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     SysBusDevice *sysbus_dev;
 
@@ -156,7 +156,7 @@ static void macio_realize_ide(MacIOState *s, MACIOIDEState 
*ide,
     object_property_set_bool(OBJECT(ide), true, "realized", errp);
 }
 
-static void macio_oldworld_realize(PCIDevice *d, Error **errp)
+static void macio_oldworld_realize(PCIDevice *d, Error *errp[static 1])
 {
     MacIOState *s = MACIO(d);
     OldWorldMacIOState *os = OLDWORLD_MACIO(d);
@@ -263,7 +263,7 @@ static const MemoryRegionOps timer_ops = {
     .endianness = DEVICE_LITTLE_ENDIAN,
 };
 
-static void macio_newworld_realize(PCIDevice *d, Error **errp)
+static void macio_newworld_realize(PCIDevice *d, Error *errp[static 1])
 {
     MacIOState *s = MACIO(d);
     NewWorldMacIOState *ns = NEWWORLD_MACIO(d);
diff --git a/hw/misc/max111x.c b/hw/misc/max111x.c
index 2a277bdb86..7876f6788a 100644
--- a/hw/misc/max111x.c
+++ b/hw/misc/max111x.c
@@ -147,12 +147,12 @@ static int max111x_init(SSISlave *d, int inputs)
     return 0;
 }
 
-static void max1110_realize(SSISlave *dev, Error **errp)
+static void max1110_realize(SSISlave *dev, Error *errp[static 1])
 {
     max111x_init(dev, 8);
 }
 
-static void max1111_realize(SSISlave *dev, Error **errp)
+static void max1111_realize(SSISlave *dev, Error *errp[static 1])
 {
     max111x_init(dev, 4);
 }
diff --git a/hw/misc/mips_cmgcr.c b/hw/misc/mips_cmgcr.c
index a1edb53f95..20b0e6a991 100644
--- a/hw/misc/mips_cmgcr.c
+++ b/hw/misc/mips_cmgcr.c
@@ -230,7 +230,7 @@ static Property mips_gcr_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void mips_gcr_realize(DeviceState *dev, Error **errp)
+static void mips_gcr_realize(DeviceState *dev, Error *errp[static 1])
 {
     MIPSGCRState *s = MIPS_GCR(dev);
 
diff --git a/hw/misc/mips_cpc.c b/hw/misc/mips_cpc.c
index 6d345745f6..d756277abd 100644
--- a/hw/misc/mips_cpc.c
+++ b/hw/misc/mips_cpc.c
@@ -113,7 +113,7 @@ static void mips_cpc_init(Object *obj)
     sysbus_init_mmio(sbd, &s->mr);
 }
 
-static void mips_cpc_realize(DeviceState *dev, Error **errp)
+static void mips_cpc_realize(DeviceState *dev, Error *errp[static 1])
 {
     MIPSCPCState *s = MIPS_CPC(dev);
 
diff --git a/hw/misc/mips_itu.c b/hw/misc/mips_itu.c
index ef935b51a8..0831aee83b 100644
--- a/hw/misc/mips_itu.c
+++ b/hw/misc/mips_itu.c
@@ -460,7 +460,7 @@ static void mips_itu_init(Object *obj)
                           "mips-itc-tag", ITC_TAG_ADDRSPACE_SZ);
 }
 
-static void mips_itu_realize(DeviceState *dev, Error **errp)
+static void mips_itu_realize(DeviceState *dev, Error *errp[static 1])
 {
     MIPSITUState *s = MIPS_ITU(dev);
 
diff --git a/hw/misc/pc-testdev.c b/hw/misc/pc-testdev.c
index b81d820084..510931eea3 100644
--- a/hw/misc/pc-testdev.c
+++ b/hw/misc/pc-testdev.c
@@ -155,7 +155,7 @@ static const MemoryRegionOps test_iomem_ops = {
     .endianness = DEVICE_LITTLE_ENDIAN,
 };
 
-static void testdev_realizefn(DeviceState *d, Error **errp)
+static void testdev_realizefn(DeviceState *d, Error *errp[static 1])
 {
     ISADevice *isa = ISA_DEVICE(d);
     PCTestdev *dev = TESTDEV(d);
diff --git a/hw/misc/pci-testdev.c b/hw/misc/pci-testdev.c
index 7d5990213e..5517800d19 100644
--- a/hw/misc/pci-testdev.c
+++ b/hw/misc/pci-testdev.c
@@ -234,7 +234,7 @@ static const MemoryRegionOps pci_testdev_pio_ops = {
     },
 };
 
-static void pci_testdev_realize(PCIDevice *pci_dev, Error **errp)
+static void pci_testdev_realize(PCIDevice *pci_dev, Error *errp[static 1])
 {
     PCITestDevState *d = PCI_TEST_DEV(pci_dev);
     uint8_t *pci_conf;
diff --git a/hw/misc/pvpanic.c b/hw/misc/pvpanic.c
index 0badd7b0a0..bd07b4e85c 100644
--- a/hw/misc/pvpanic.c
+++ b/hw/misc/pvpanic.c
@@ -85,7 +85,7 @@ static void pvpanic_isa_initfn(Object *obj)
     memory_region_init_io(&s->io, OBJECT(s), &pvpanic_ops, s, "pvpanic", 1);
 }
 
-static void pvpanic_isa_realizefn(DeviceState *dev, Error **errp)
+static void pvpanic_isa_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *d = ISA_DEVICE(dev);
     PVPanicState *s = ISA_PVPANIC_DEVICE(dev);
diff --git a/hw/misc/sga.c b/hw/misc/sga.c
index 03b006d6f0..191762eff2 100644
--- a/hw/misc/sga.c
+++ b/hw/misc/sga.c
@@ -39,7 +39,7 @@ typedef struct ISASGAState {
     ISADevice parent_obj;
 } ISASGAState;
 
-static void sga_realizefn(DeviceState *dev, Error **errp)
+static void sga_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     rom_add_vga(SGABIOS_FILENAME);
 }
diff --git a/hw/misc/tmp105.c b/hw/misc/tmp105.c
index 1b0584d14b..12163425a7 100644
--- a/hw/misc/tmp105.c
+++ b/hw/misc/tmp105.c
@@ -55,7 +55,7 @@ static void tmp105_alarm_update(TMP105State *s)
 }
 
 static void tmp105_get_temperature(Object *obj, Visitor *v, const char *name,
-                                   void *opaque, Error **errp)
+                                   void *opaque, Error *errp[static 1])
 {
     TMP105State *s = TMP105(obj);
     int64_t value = s->temperature * 1000 / 256;
@@ -67,7 +67,7 @@ static void tmp105_get_temperature(Object *obj, Visitor *v, 
const char *name,
  * fixed point, so units are 1/256 centigrades.  A simple ratio will do.
  */
 static void tmp105_set_temperature(Object *obj, Visitor *v, const char *name,
-                                   void *opaque, Error **errp)
+                                   void *opaque, Error *errp[static 1])
 {
     TMP105State *s = TMP105(obj);
     int64_t temp;
diff --git a/hw/misc/unimp.c b/hw/misc/unimp.c
index bcbb585888..3f63d3af54 100644
--- a/hw/misc/unimp.c
+++ b/hw/misc/unimp.c
@@ -59,7 +59,7 @@ static const MemoryRegionOps unimp_ops = {
     .endianness = DEVICE_NATIVE_ENDIAN,
 };
 
-static void unimp_realize(DeviceState *dev, Error **errp)
+static void unimp_realize(DeviceState *dev, Error *errp[static 1])
 {
     UnimplementedDeviceState *s = UNIMPLEMENTED_DEVICE(dev);
 
diff --git a/hw/misc/vmport.c b/hw/misc/vmport.c
index 165500223f..4e690ca6b9 100644
--- a/hw/misc/vmport.c
+++ b/hw/misc/vmport.c
@@ -143,7 +143,7 @@ static const MemoryRegionOps vmport_ops = {
     .endianness = DEVICE_LITTLE_ENDIAN,
 };
 
-static void vmport_realizefn(DeviceState *dev, Error **errp)
+static void vmport_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *isadev = ISA_DEVICE(dev);
     VMPortState *s = VMPORT(dev);
diff --git a/hw/net/allwinner_emac.c b/hw/net/allwinner_emac.c
index 50e8361e52..7dbbe629fa 100644
--- a/hw/net/allwinner_emac.c
+++ b/hw/net/allwinner_emac.c
@@ -442,7 +442,7 @@ static void aw_emac_init(Object *obj)
     sysbus_init_irq(sbd, &s->irq);
 }
 
-static void aw_emac_realize(DeviceState *dev, Error **errp)
+static void aw_emac_realize(DeviceState *dev, Error *errp[static 1])
 {
     AwEmacState *s = AW_EMAC(dev);
 
diff --git a/hw/net/cadence_gem.c b/hw/net/cadence_gem.c
index 3943187572..5fdc51551e 100644
--- a/hw/net/cadence_gem.c
+++ b/hw/net/cadence_gem.c
@@ -1458,7 +1458,7 @@ static NetClientInfo net_gem_info = {
     .link_status_changed = gem_set_link,
 };
 
-static void gem_realize(DeviceState *dev, Error **errp)
+static void gem_realize(DeviceState *dev, Error *errp[static 1])
 {
     CadenceGEMState *s = CADENCE_GEM(dev);
     int i;
diff --git a/hw/net/dp8393x.c b/hw/net/dp8393x.c
index 5142003d07..068a040a37 100644
--- a/hw/net/dp8393x.c
+++ b/hw/net/dp8393x.c
@@ -869,7 +869,7 @@ static void dp8393x_instance_init(Object *obj)
     sysbus_init_irq(sbd, &s->irq);
 }
 
-static void dp8393x_realize(DeviceState *dev, Error **errp)
+static void dp8393x_realize(DeviceState *dev, Error *errp[static 1])
 {
     dp8393xState *s = DP8393X(dev);
     int i, checksum;
diff --git a/hw/net/e1000.c b/hw/net/e1000.c
index 4141e7e108..7320b7beec 100644
--- a/hw/net/e1000.c
+++ b/hw/net/e1000.c
@@ -1585,7 +1585,7 @@ static void e1000_write_config(PCIDevice *pci_dev, 
uint32_t address,
     }
 }
 
-static void pci_e1000_realize(PCIDevice *pci_dev, Error **errp)
+static void pci_e1000_realize(PCIDevice *pci_dev, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(pci_dev);
     E1000State *d = E1000(pci_dev);
diff --git a/hw/net/e1000e.c b/hw/net/e1000e.c
index 34167c0384..4838a68cf8 100644
--- a/hw/net/e1000e.c
+++ b/hw/net/e1000e.c
@@ -405,7 +405,7 @@ static void e1000e_write_config(PCIDevice *pci_dev, 
uint32_t address,
     }
 }
 
-static void e1000e_pci_realize(PCIDevice *pci_dev, Error **errp)
+static void e1000e_pci_realize(PCIDevice *pci_dev, Error *errp[static 1])
 {
     static const uint16_t e1000e_pmrb_offset = 0x0C8;
     static const uint16_t e1000e_pcie_offset = 0x0E0;
diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c
index 663addc758..2d07a2b0a7 100644
--- a/hw/net/eepro100.c
+++ b/hw/net/eepro100.c
@@ -1855,7 +1855,7 @@ static NetClientInfo net_eepro100_info = {
     .receive = nic_receive,
 };
 
-static void e100_nic_realize(PCIDevice *pci_dev, Error **errp)
+static void e100_nic_realize(PCIDevice *pci_dev, Error *errp[static 1])
 {
     EEPRO100State *s = DO_UPCAST(EEPRO100State, dev, pci_dev);
     E100PCIDeviceInfo *info = eepro100_get_class(s);
diff --git a/hw/net/fsl_etsec/etsec.c b/hw/net/fsl_etsec/etsec.c
index 9da1932970..39c2597f7a 100644
--- a/hw/net/fsl_etsec/etsec.c
+++ b/hw/net/fsl_etsec/etsec.c
@@ -376,7 +376,7 @@ static NetClientInfo net_etsec_info = {
     .link_status_changed = etsec_set_link_status,
 };
 
-static void etsec_realize(DeviceState *dev, Error **errp)
+static void etsec_realize(DeviceState *dev, Error *errp[static 1])
 {
     eTSEC        *etsec = ETSEC_COMMON(dev);
 
diff --git a/hw/net/ftgmac100.c b/hw/net/ftgmac100.c
index 3c36ab9cec..f14d76a67a 100644
--- a/hw/net/ftgmac100.c
+++ b/hw/net/ftgmac100.c
@@ -918,7 +918,7 @@ static NetClientInfo net_ftgmac100_info = {
     .link_status_changed = ftgmac100_set_link,
 };
 
-static void ftgmac100_realize(DeviceState *dev, Error **errp)
+static void ftgmac100_realize(DeviceState *dev, Error *errp[static 1])
 {
     FTGMAC100State *s = FTGMAC100(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c
index 90e6ee35ba..4589f47533 100644
--- a/hw/net/imx_fec.c
+++ b/hw/net/imx_fec.c
@@ -1158,7 +1158,7 @@ static NetClientInfo imx_eth_net_info = {
 };
 
 
-static void imx_eth_realize(DeviceState *dev, Error **errp)
+static void imx_eth_realize(DeviceState *dev, Error *errp[static 1])
 {
     IMXFECState *s = IMX_FEC(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
diff --git a/hw/net/mcf_fec.c b/hw/net/mcf_fec.c
index bfa6b4bcce..3fea8754a0 100644
--- a/hw/net/mcf_fec.c
+++ b/hw/net/mcf_fec.c
@@ -632,7 +632,7 @@ static NetClientInfo net_mcf_fec_info = {
     .receive = mcf_fec_receive,
 };
 
-static void mcf_fec_realize(DeviceState *dev, Error **errp)
+static void mcf_fec_realize(DeviceState *dev, Error *errp[static 1])
 {
     mcf_fec_state *s = MCF_FEC_NET(dev);
 
diff --git a/hw/net/ne2000-isa.c b/hw/net/ne2000-isa.c
index 6065c80f27..7a525d93d9 100644
--- a/hw/net/ne2000-isa.c
+++ b/hw/net/ne2000-isa.c
@@ -59,7 +59,7 @@ static const VMStateDescription vmstate_isa_ne2000 = {
     }
 };
 
-static void isa_ne2000_realizefn(DeviceState *dev, Error **errp)
+static void isa_ne2000_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *isadev = ISA_DEVICE(dev);
     ISANE2000State *isa = ISA_NE2000(dev);
@@ -97,7 +97,7 @@ static void isa_ne2000_class_initfn(ObjectClass *klass, void 
*data)
 
 static void isa_ne2000_get_bootindex(Object *obj, Visitor *v,
                                      const char *name, void *opaque,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     ISANE2000State *isa = ISA_NE2000(obj);
     NE2000State *s = &isa->ne2000;
@@ -107,7 +107,7 @@ static void isa_ne2000_get_bootindex(Object *obj, Visitor 
*v,
 
 static void isa_ne2000_set_bootindex(Object *obj, Visitor *v,
                                      const char *name, void *opaque,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     ISANE2000State *isa = ISA_NE2000(obj);
     NE2000State *s = &isa->ne2000;
diff --git a/hw/net/ne2000.c b/hw/net/ne2000.c
index 2aec2b80b0..4e3ce23d8c 100644
--- a/hw/net/ne2000.c
+++ b/hw/net/ne2000.c
@@ -718,7 +718,7 @@ static NetClientInfo net_ne2000_info = {
     .receive = ne2000_receive,
 };
 
-static void pci_ne2000_realize(PCIDevice *pci_dev, Error **errp)
+static void pci_ne2000_realize(PCIDevice *pci_dev, Error *errp[static 1])
 {
     PCINE2000State *d = DO_UPCAST(PCINE2000State, dev, pci_dev);
     NE2000State *s;
diff --git a/hw/net/pcnet-pci.c b/hw/net/pcnet-pci.c
index 598b60e0eb..8a382b20c8 100644
--- a/hw/net/pcnet-pci.c
+++ b/hw/net/pcnet-pci.c
@@ -279,7 +279,7 @@ static NetClientInfo net_pci_pcnet_info = {
     .link_status_changed = pcnet_set_link_status,
 };
 
-static void pci_pcnet_realize(PCIDevice *pci_dev, Error **errp)
+static void pci_pcnet_realize(PCIDevice *pci_dev, Error *errp[static 1])
 {
     PCIPCNetState *d = PCI_PCNET(pci_dev);
     PCNetState *s = &d->state;
diff --git a/hw/net/rocker/qmp-norocker.c b/hw/net/rocker/qmp-norocker.c
index 6acbcdb02b..5f27b044e7 100644
--- a/hw/net/rocker/qmp-norocker.c
+++ b/hw/net/rocker/qmp-norocker.c
@@ -20,13 +20,14 @@
 #include "qmp-commands.h"
 #include "qapi/qmp/qerror.h"
 
-RockerSwitch *qmp_query_rocker(const char *name, Error **errp)
+RockerSwitch *qmp_query_rocker(const char *name, Error *errp[static 1])
 {
     error_setg(errp, QERR_FEATURE_DISABLED, "rocker");
     return NULL;
 };
 
-RockerPortList *qmp_query_rocker_ports(const char *name, Error **errp)
+RockerPortList *qmp_query_rocker_ports(const char *name,
+                                       Error *errp[static 1])
 {
     error_setg(errp, QERR_FEATURE_DISABLED, "rocker");
     return NULL;
@@ -35,7 +36,7 @@ RockerPortList *qmp_query_rocker_ports(const char *name, 
Error **errp)
 RockerOfDpaFlowList *qmp_query_rocker_of_dpa_flows(const char *name,
                                                    bool has_tbl_id,
                                                    uint32_t tbl_id,
-                                                   Error **errp)
+                                                   Error *errp[static 1])
 {
     error_setg(errp, QERR_FEATURE_DISABLED, "rocker");
     return NULL;
@@ -44,7 +45,7 @@ RockerOfDpaFlowList *qmp_query_rocker_of_dpa_flows(const char 
*name,
 RockerOfDpaGroupList *qmp_query_rocker_of_dpa_groups(const char *name,
                                                      bool has_type,
                                                      uint8_t type,
-                                                     Error **errp)
+                                                     Error *errp[static 1])
 {
     error_setg(errp, QERR_FEATURE_DISABLED, "rocker");
     return NULL;
diff --git a/hw/net/rocker/rocker.c b/hw/net/rocker/rocker.c
index 4f0f6d71e5..e3da533cb8 100644
--- a/hw/net/rocker/rocker.c
+++ b/hw/net/rocker/rocker.c
@@ -96,7 +96,7 @@ World *rocker_get_world(Rocker *r, enum rocker_world_type 
type)
     return NULL;
 }
 
-RockerSwitch *qmp_query_rocker(const char *name, Error **errp)
+RockerSwitch *qmp_query_rocker(const char *name, Error *errp[static 1])
 {
     RockerSwitch *rocker;
     Rocker *r;
@@ -115,7 +115,8 @@ RockerSwitch *qmp_query_rocker(const char *name, Error 
**errp)
     return rocker;
 }
 
-RockerPortList *qmp_query_rocker_ports(const char *name, Error **errp)
+RockerPortList *qmp_query_rocker_ports(const char *name,
+                                       Error *errp[static 1])
 {
     RockerPortList *list = NULL;
     Rocker *r;
diff --git a/hw/net/rocker/rocker_of_dpa.c b/hw/net/rocker/rocker_of_dpa.c
index 9b1e0d2441..78b2e07485 100644
--- a/hw/net/rocker/rocker_of_dpa.c
+++ b/hw/net/rocker/rocker_of_dpa.c
@@ -2450,7 +2450,7 @@ static void of_dpa_flow_fill(void *cookie, void *value, 
void *user_data)
 RockerOfDpaFlowList *qmp_query_rocker_of_dpa_flows(const char *name,
                                                    bool has_tbl_id,
                                                    uint32_t tbl_id,
-                                                   Error **errp)
+                                                   Error *errp[static 1])
 {
     struct rocker *r;
     struct world *w;
diff --git a/hw/net/rtl8139.c b/hw/net/rtl8139.c
index 04e1044cd6..6c43a7d3d6 100644
--- a/hw/net/rtl8139.c
+++ b/hw/net/rtl8139.c
@@ -3409,7 +3409,7 @@ static NetClientInfo net_rtl8139_info = {
     .link_status_changed = rtl8139_set_link_status,
 };
 
-static void pci_rtl8139_realize(PCIDevice *dev, Error **errp)
+static void pci_rtl8139_realize(PCIDevice *dev, Error *errp[static 1])
 {
     RTL8139State *s = RTL8139(dev);
     DeviceState *d = DEVICE(dev);
diff --git a/hw/net/spapr_llan.c b/hw/net/spapr_llan.c
index 3e2a9896eb..c3745e4d6f 100644
--- a/hw/net/spapr_llan.c
+++ b/hw/net/spapr_llan.c
@@ -317,7 +317,7 @@ static void spapr_vlan_reset(VIOsPAPRDevice *sdev)
     qemu_format_nic_info_str(qemu_get_queue(dev->nic), dev->nicconf.macaddr.a);
 }
 
-static void spapr_vlan_realize(VIOsPAPRDevice *sdev, Error **errp)
+static void spapr_vlan_realize(VIOsPAPRDevice *sdev, Error *errp[static 1])
 {
     VIOsPAPRVLANDevice *dev = VIO_SPAPR_VLAN_DEVICE(sdev);
 
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index b94c23e7ff..fc5aa32e67 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -560,7 +560,7 @@ static void virtio_net_set_queues(VirtIONet *n)
 static void virtio_net_set_multiqueue(VirtIONet *n, int multiqueue);
 
 static uint64_t virtio_net_get_features(VirtIODevice *vdev, uint64_t features,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     VirtIONet *n = VIRTIO_NET(vdev);
     NetClientState *nc = qemu_get_queue(n->nic);
@@ -1897,7 +1897,7 @@ void virtio_net_set_netclient_name(VirtIONet *n, const 
char *name,
     n->netclient_type = g_strdup(type);
 }
 
-static void virtio_net_device_realize(DeviceState *dev, Error **errp)
+static void virtio_net_device_realize(DeviceState *dev, Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VirtIONet *n = VIRTIO_NET(dev);
@@ -1996,7 +1996,8 @@ static void virtio_net_device_realize(DeviceState *dev, 
Error **errp)
     n->qdev = dev;
 }
 
-static void virtio_net_device_unrealize(DeviceState *dev, Error **errp)
+static void virtio_net_device_unrealize(DeviceState *dev,
+                                        Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VirtIONet *n = VIRTIO_NET(dev);
diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c
index 5d8f150e9d..11cb4330bf 100644
--- a/hw/net/vmxnet3.c
+++ b/hw/net/vmxnet3.c
@@ -2288,7 +2288,7 @@ static uint64_t vmxnet3_device_serial_num(VMXNET3State *s)
 #define VMXNET3_USE_64BIT         (true)
 #define VMXNET3_PER_VECTOR_MASK   (false)
 
-static void vmxnet3_pci_realize(PCIDevice *pci_dev, Error **errp)
+static void vmxnet3_pci_realize(PCIDevice *pci_dev, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(pci_dev);
     VMXNET3State *s = VMXNET3(pci_dev);
@@ -2607,7 +2607,7 @@ static Property vmxnet3_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void vmxnet3_realize(DeviceState *qdev, Error **errp)
+static void vmxnet3_realize(DeviceState *qdev, Error *errp[static 1])
 {
     VMXNET3Class *vc = VMXNET3_DEVICE_GET_CLASS(qdev);
     PCIDevice *pci_dev = PCI_DEVICE(qdev);
diff --git a/hw/net/xilinx_axienet.c b/hw/net/xilinx_axienet.c
index 5ffa739f68..eee37f69f6 100644
--- a/hw/net/xilinx_axienet.c
+++ b/hw/net/xilinx_axienet.c
@@ -940,7 +940,7 @@ static NetClientInfo net_xilinx_enet_info = {
     .receive = eth_rx,
 };
 
-static void xilinx_enet_realize(DeviceState *dev, Error **errp)
+static void xilinx_enet_realize(DeviceState *dev, Error *errp[static 1])
 {
     XilinxAXIEnet *s = XILINX_AXI_ENET(dev);
     XilinxAXIEnetStreamSlave *ds = 
XILINX_AXI_ENET_DATA_STREAM(&s->rx_data_dev);
diff --git a/hw/net/xilinx_ethlite.c b/hw/net/xilinx_ethlite.c
index 35de353b7c..5b948f3b20 100644
--- a/hw/net/xilinx_ethlite.c
+++ b/hw/net/xilinx_ethlite.c
@@ -227,7 +227,7 @@ static NetClientInfo net_xilinx_ethlite_info = {
     .receive = eth_rx,
 };
 
-static void xilinx_ethlite_realize(DeviceState *dev, Error **errp)
+static void xilinx_ethlite_realize(DeviceState *dev, Error *errp[static 1])
 {
     struct xlx_ethlite *s = XILINX_ETHLITE(dev);
 
diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c
index 43118044f1..109c095a0f 100644
--- a/hw/nvram/fw_cfg.c
+++ b/hw/nvram/fw_cfg.c
@@ -1034,7 +1034,7 @@ static const TypeInfo fw_cfg_info = {
     .class_init    = fw_cfg_class_init,
 };
 
-static void fw_cfg_file_slots_allocate(FWCfgState *s, Error **errp)
+static void fw_cfg_file_slots_allocate(FWCfgState *s, Error *errp[static 1])
 {
     uint16_t file_slots_max;
 
@@ -1069,7 +1069,7 @@ static Property fw_cfg_io_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void fw_cfg_io_realize(DeviceState *dev, Error **errp)
+static void fw_cfg_io_realize(DeviceState *dev, Error *errp[static 1])
 {
     FWCfgIoState *s = FW_CFG_IO(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
@@ -1119,7 +1119,7 @@ static Property fw_cfg_mem_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void fw_cfg_mem_realize(DeviceState *dev, Error **errp)
+static void fw_cfg_mem_realize(DeviceState *dev, Error *errp[static 1])
 {
     FWCfgMemState *s = FW_CFG_MEM(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
diff --git a/hw/nvram/mac_nvram.c b/hw/nvram/mac_nvram.c
index aef80e64df..6f93833f07 100644
--- a/hw/nvram/mac_nvram.c
+++ b/hw/nvram/mac_nvram.c
@@ -92,7 +92,7 @@ static void macio_nvram_reset(DeviceState *dev)
 {
 }
 
-static void macio_nvram_realizefn(DeviceState *dev, Error **errp)
+static void macio_nvram_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *d = SYS_BUS_DEVICE(dev);
     MacIONVRAMState *s = MACIO_NVRAM(dev);
@@ -104,7 +104,7 @@ static void macio_nvram_realizefn(DeviceState *dev, Error 
**errp)
     sysbus_init_mmio(d, &s->mem);
 }
 
-static void macio_nvram_unrealizefn(DeviceState *dev, Error **errp)
+static void macio_nvram_unrealizefn(DeviceState *dev, Error *errp[static 1])
 {
     MacIONVRAMState *s = MACIO_NVRAM(dev);
 
diff --git a/hw/nvram/spapr_nvram.c b/hw/nvram/spapr_nvram.c
index bc355a4348..28c77250bd 100644
--- a/hw/nvram/spapr_nvram.c
+++ b/hw/nvram/spapr_nvram.c
@@ -138,7 +138,7 @@ static void rtas_nvram_store(PowerPCCPU *cpu, 
sPAPRMachineState *spapr,
     rtas_st(rets, 1, (alen < 0) ? 0 : alen);
 }
 
-static void spapr_nvram_realize(VIOsPAPRDevice *dev, Error **errp)
+static void spapr_nvram_realize(VIOsPAPRDevice *dev, Error *errp[static 1])
 {
     sPAPRNVRAM *nvram = VIO_SPAPR_NVRAM(dev);
     int ret;
diff --git a/hw/pci-bridge/dec.c b/hw/pci-bridge/dec.c
index cca93620ac..b7471f97b4 100644
--- a/hw/pci-bridge/dec.c
+++ b/hw/pci-bridge/dec.c
@@ -52,7 +52,7 @@ static int dec_map_irq(PCIDevice *pci_dev, int irq_num)
     return irq_num;
 }
 
-static void dec_pci_bridge_realize(PCIDevice *pci_dev, Error **errp)
+static void dec_pci_bridge_realize(PCIDevice *pci_dev, Error *errp[static 1])
 {
     pci_bridge_initfn(pci_dev, TYPE_PCI_BUS);
 }
@@ -108,7 +108,7 @@ static int pci_dec_21154_device_init(SysBusDevice *dev)
     return 0;
 }
 
-static void dec_21154_pci_host_realize(PCIDevice *d, Error **errp)
+static void dec_21154_pci_host_realize(PCIDevice *d, Error *errp[static 1])
 {
     /* PCI2PCI bridge same values as PearPC - check this */
 }
diff --git a/hw/pci-bridge/gen_pcie_root_port.c 
b/hw/pci-bridge/gen_pcie_root_port.c
index 8ebffa8bb0..9082452fee 100644
--- a/hw/pci-bridge/gen_pcie_root_port.c
+++ b/hw/pci-bridge/gen_pcie_root_port.c
@@ -25,7 +25,7 @@ static uint8_t gen_rp_aer_vector(const PCIDevice *d)
     return 0;
 }
 
-static int gen_rp_interrupts_init(PCIDevice *d, Error **errp)
+static int gen_rp_interrupts_init(PCIDevice *d, Error *errp[static 1])
 {
     int rc;
 
diff --git a/hw/pci-bridge/ioh3420.c b/hw/pci-bridge/ioh3420.c
index da4e5bdf04..9b50754d6e 100644
--- a/hw/pci-bridge/ioh3420.c
+++ b/hw/pci-bridge/ioh3420.c
@@ -61,7 +61,7 @@ static uint8_t ioh3420_aer_vector(const PCIDevice *d)
     return 0;
 }
 
-static int ioh3420_interrupts_init(PCIDevice *d, Error **errp)
+static int ioh3420_interrupts_init(PCIDevice *d, Error *errp[static 1])
 {
     int rc;
     Error *local_err = NULL;
diff --git a/hw/pci-bridge/pci_bridge_dev.c b/hw/pci-bridge/pci_bridge_dev.c
index 5dbd933cc1..c596d3b51b 100644
--- a/hw/pci-bridge/pci_bridge_dev.c
+++ b/hw/pci-bridge/pci_bridge_dev.c
@@ -184,7 +184,7 @@ static const VMStateDescription pci_bridge_dev_vmstate = {
 };
 
 static void pci_bridge_dev_hotplug_cb(HotplugHandler *hotplug_dev,
-                                      DeviceState *dev, Error **errp)
+                                      DeviceState *dev, Error *errp[static 1])
 {
     PCIDevice *pci_hotplug_dev = PCI_DEVICE(hotplug_dev);
 
@@ -198,7 +198,7 @@ static void pci_bridge_dev_hotplug_cb(HotplugHandler 
*hotplug_dev,
 
 static void pci_bridge_dev_hot_unplug_request_cb(HotplugHandler *hotplug_dev,
                                                  DeviceState *dev,
-                                                 Error **errp)
+                                                 Error *errp[static 1])
 {
     PCIDevice *pci_hotplug_dev = PCI_DEVICE(hotplug_dev);
 
diff --git a/hw/pci-bridge/pci_expander_bridge.c 
b/hw/pci-bridge/pci_expander_bridge.c
index 54132c52ad..28e7dd51e5 100644
--- a/hw/pci-bridge/pci_expander_bridge.c
+++ b/hw/pci-bridge/pci_expander_bridge.c
@@ -164,7 +164,8 @@ static const TypeInfo pxb_host_info = {
 /*
  * Registers the PXB bus as a child of pci host root bus.
  */
-static void pxb_register_bus(PCIDevice *dev, PCIBus *pxb_bus, Error **errp)
+static void pxb_register_bus(PCIDevice *dev, PCIBus *pxb_bus,
+                             Error *errp[static 1])
 {
     PCIBus *bus = dev->bus;
     int pxb_bus_num = pci_bus_num(pxb_bus);
@@ -210,7 +211,8 @@ static gint pxb_compare(gconstpointer a, gconstpointer b)
            0;
 }
 
-static void pxb_dev_realize_common(PCIDevice *dev, bool pcie, Error **errp)
+static void pxb_dev_realize_common(PCIDevice *dev, bool pcie,
+                                   Error *errp[static 1])
 {
     PXBDev *pxb = convert_to_pxb(dev);
     DeviceState *ds, *bds = NULL;
@@ -268,7 +270,7 @@ err_register_bus:
     object_unref(OBJECT(ds));
 }
 
-static void pxb_dev_realize(PCIDevice *dev, Error **errp)
+static void pxb_dev_realize(PCIDevice *dev, Error *errp[static 1])
 {
     if (pci_bus_is_express(dev->bus)) {
         error_setg(errp, "pxb devices cannot reside on a PCIe bus");
@@ -316,7 +318,7 @@ static const TypeInfo pxb_dev_info = {
     .class_init    = pxb_dev_class_init,
 };
 
-static void pxb_pcie_dev_realize(PCIDevice *dev, Error **errp)
+static void pxb_pcie_dev_realize(PCIDevice *dev, Error *errp[static 1])
 {
     if (!pci_bus_is_express(dev->bus)) {
         error_setg(errp, "pxb-pcie devices cannot reside on a PCI bus");
diff --git a/hw/pci-bridge/pcie_root_port.c b/hw/pci-bridge/pcie_root_port.c
index cf3631806f..90158f3942 100644
--- a/hw/pci-bridge/pcie_root_port.c
+++ b/hw/pci-bridge/pcie_root_port.c
@@ -52,7 +52,7 @@ static void rp_reset(DeviceState *qdev)
     pci_bridge_disable_base_limit(d);
 }
 
-static void rp_realize(PCIDevice *d, Error **errp)
+static void rp_realize(PCIDevice *d, Error *errp[static 1])
 {
     PCIEPort *p = PCIE_PORT(d);
     PCIESlot *s = PCIE_SLOT(d);
diff --git a/hw/pci-host/apb.c b/hw/pci-host/apb.c
index 326f5ef024..d0cf801673 100644
--- a/hw/pci-host/apb.c
+++ b/hw/pci-host/apb.c
@@ -634,7 +634,7 @@ static void pci_apb_set_irq(void *opaque, int irq_num, int 
level)
     }
 }
 
-static void apb_pci_bridge_realize(PCIDevice *dev, Error **errp)
+static void apb_pci_bridge_realize(PCIDevice *dev, Error *errp[static 1])
 {
     pci_bridge_initfn(dev, TYPE_PCI_BUS);
 
@@ -788,7 +788,7 @@ static int pci_pbm_init_device(SysBusDevice *dev)
     return 0;
 }
 
-static void pbm_pci_host_realize(PCIDevice *d, Error **errp)
+static void pbm_pci_host_realize(PCIDevice *d, Error *errp[static 1])
 {
     pci_set_word(d->config + PCI_COMMAND,
                  PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER);
diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c
index 89133a9dd3..e2790b50b1 100644
--- a/hw/pci-host/bonito.c
+++ b/hw/pci-host/bonito.c
@@ -722,7 +722,7 @@ static int bonito_pcihost_initfn(SysBusDevice *dev)
     return 0;
 }
 
-static void bonito_realize(PCIDevice *dev, Error **errp)
+static void bonito_realize(PCIDevice *dev, Error *errp[static 1])
 {
     PCIBonitoState *s = PCI_BONITO(dev);
     SysBusDevice *sysbus = SYS_BUS_DEVICE(s->pcihost);
diff --git a/hw/pci-host/gpex.c b/hw/pci-host/gpex.c
index e069ba03da..e1b406eef1 100644
--- a/hw/pci-host/gpex.c
+++ b/hw/pci-host/gpex.c
@@ -44,7 +44,7 @@ static void gpex_set_irq(void *opaque, int irq_num, int level)
     qemu_set_irq(s->irq[irq_num], level);
 }
 
-static void gpex_host_realize(DeviceState *dev, Error **errp)
+static void gpex_host_realize(DeviceState *dev, Error *errp[static 1])
 {
     PCIHostState *pci = PCI_HOST_BRIDGE(dev);
     GPEXHost *s = GPEX_HOST(dev);
diff --git a/hw/pci-host/grackle.c b/hw/pci-host/grackle.c
index 2e281f6155..1b5a185c9b 100644
--- a/hw/pci-host/grackle.c
+++ b/hw/pci-host/grackle.c
@@ -115,7 +115,7 @@ static int pci_grackle_init_device(SysBusDevice *dev)
     return 0;
 }
 
-static void grackle_pci_host_realize(PCIDevice *d, Error **errp)
+static void grackle_pci_host_realize(PCIDevice *d, Error *errp[static 1])
 {
     d->config[0x09] = 0x01;
 }
diff --git a/hw/pci-host/piix.c b/hw/pci-host/piix.c
index 98f3810cc6..d1ba1fdb5a 100644
--- a/hw/pci-host/piix.c
+++ b/hw/pci-host/piix.c
@@ -212,7 +212,7 @@ static const VMStateDescription vmstate_i440fx = {
 
 static void i440fx_pcihost_get_pci_hole_start(Object *obj, Visitor *v,
                                               const char *name, void *opaque,
-                                              Error **errp)
+                                              Error *errp[static 1])
 {
     I440FXState *s = I440FX_PCI_HOST_BRIDGE(obj);
     uint64_t val64;
@@ -226,7 +226,7 @@ static void i440fx_pcihost_get_pci_hole_start(Object *obj, 
Visitor *v,
 
 static void i440fx_pcihost_get_pci_hole_end(Object *obj, Visitor *v,
                                             const char *name, void *opaque,
-                                            Error **errp)
+                                            Error *errp[static 1])
 {
     I440FXState *s = I440FX_PCI_HOST_BRIDGE(obj);
     uint64_t val64;
@@ -240,7 +240,8 @@ static void i440fx_pcihost_get_pci_hole_end(Object *obj, 
Visitor *v,
 
 static void i440fx_pcihost_get_pci_hole64_start(Object *obj, Visitor *v,
                                                 const char *name,
-                                                void *opaque, Error **errp)
+                                                void *opaque,
+                                                Error *errp[static 1])
 {
     PCIHostState *h = PCI_HOST_BRIDGE(obj);
     Range w64;
@@ -253,7 +254,7 @@ static void i440fx_pcihost_get_pci_hole64_start(Object 
*obj, Visitor *v,
 
 static void i440fx_pcihost_get_pci_hole64_end(Object *obj, Visitor *v,
                                               const char *name, void *opaque,
-                                              Error **errp)
+                                              Error *errp[static 1])
 {
     PCIHostState *h = PCI_HOST_BRIDGE(obj);
     Range w64;
@@ -290,7 +291,7 @@ static void i440fx_pcihost_initfn(Object *obj)
                         NULL, NULL, NULL, IGNORE_ERRORS);
 }
 
-static void i440fx_pcihost_realize(DeviceState *dev, Error **errp)
+static void i440fx_pcihost_realize(DeviceState *dev, Error *errp[static 1])
 {
     PCIHostState *s = PCI_HOST_BRIDGE(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
@@ -302,7 +303,7 @@ static void i440fx_pcihost_realize(DeviceState *dev, Error 
**errp)
     sysbus_init_ioports(sbd, 0xcfc, 4);
 }
 
-static void i440fx_realize(PCIDevice *dev, Error **errp)
+static void i440fx_realize(PCIDevice *dev, Error *errp[static 1])
 {
     dev->config[I440FX_SMRAM] = 0x02;
 
@@ -652,7 +653,7 @@ static const MemoryRegionOps rcr_ops = {
     .endianness = DEVICE_LITTLE_ENDIAN
 };
 
-static void piix3_realize(PCIDevice *dev, Error **errp)
+static void piix3_realize(PCIDevice *dev, Error *errp[static 1])
 {
     PIIX3State *d = PIIX3_PCI_DEVICE(dev);
 
diff --git a/hw/pci-host/ppce500.c b/hw/pci-host/ppce500.c
index becc0eeb76..bd9fe872db 100644
--- a/hw/pci-host/ppce500.c
+++ b/hw/pci-host/ppce500.c
@@ -417,7 +417,7 @@ static const VMStateDescription vmstate_ppce500_pci = {
 
 #include "exec/address-spaces.h"
 
-static void e500_pcihost_bridge_realize(PCIDevice *d, Error **errp)
+static void e500_pcihost_bridge_realize(PCIDevice *d, Error *errp[static 1])
 {
     PPCE500PCIBridgeState *b = PPC_E500_PCI_BRIDGE(d);
     PPCE500CCSRState *ccsr = CCSR(container_get(qdev_get_machine(),
diff --git a/hw/pci-host/prep.c b/hw/pci-host/prep.c
index f3a8afcd9f..57f4b942a9 100644
--- a/hw/pci-host/prep.c
+++ b/hw/pci-host/prep.c
@@ -213,7 +213,7 @@ static void raven_change_gpio(void *opaque, int n, int 
level)
     s->contiguous_map = level;
 }
 
-static void raven_pcihost_realizefn(DeviceState *d, Error **errp)
+static void raven_pcihost_realizefn(DeviceState *d, Error *errp[static 1])
 {
     SysBusDevice *dev = SYS_BUS_DEVICE(d);
     PCIHostState *h = PCI_HOST_BRIDGE(dev);
@@ -294,7 +294,7 @@ static void raven_pcihost_initfn(Object *obj)
     qdev_prop_set_bit(pci_dev, "multifunction", false);
 }
 
-static void raven_realize(PCIDevice *d, Error **errp)
+static void raven_realize(PCIDevice *d, Error *errp[static 1])
 {
     RavenPCIState *s = RAVEN_PCI_DEVICE(d);
     char *filename;
diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c
index 65eba73939..2e0abf9c22 100644
--- a/hw/pci-host/q35.c
+++ b/hw/pci-host/q35.c
@@ -37,7 +37,7 @@
  * Q35 host
  */
 
-static void q35_host_realize(DeviceState *dev, Error **errp)
+static void q35_host_realize(DeviceState *dev, Error *errp[static 1])
 {
     PCIHostState *pci = PCI_HOST_BRIDGE(dev);
     Q35PCIHost *s = Q35_HOST_DEVICE(dev);
@@ -71,7 +71,7 @@ static const char *q35_host_root_bus_path(PCIHostState 
*host_bridge,
 
 static void q35_host_get_pci_hole_start(Object *obj, Visitor *v,
                                         const char *name, void *opaque,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     Q35PCIHost *s = Q35_HOST_DEVICE(obj);
     uint64_t val64;
@@ -86,7 +86,7 @@ static void q35_host_get_pci_hole_start(Object *obj, Visitor 
*v,
 
 static void q35_host_get_pci_hole_end(Object *obj, Visitor *v,
                                       const char *name, void *opaque,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     Q35PCIHost *s = Q35_HOST_DEVICE(obj);
     uint64_t val64;
@@ -101,7 +101,7 @@ static void q35_host_get_pci_hole_end(Object *obj, Visitor 
*v,
 
 static void q35_host_get_pci_hole64_start(Object *obj, Visitor *v,
                                           const char *name, void *opaque,
-                                          Error **errp)
+                                          Error *errp[static 1])
 {
     PCIHostState *h = PCI_HOST_BRIDGE(obj);
     Range w64;
@@ -114,7 +114,7 @@ static void q35_host_get_pci_hole64_start(Object *obj, 
Visitor *v,
 
 static void q35_host_get_pci_hole64_end(Object *obj, Visitor *v,
                                         const char *name, void *opaque,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     PCIHostState *h = PCI_HOST_BRIDGE(obj);
     Range w64;
@@ -126,7 +126,7 @@ static void q35_host_get_pci_hole64_end(Object *obj, 
Visitor *v,
 }
 
 static void q35_host_get_mmcfg_size(Object *obj, Visitor *v, const char *name,
-                                    void *opaque, Error **errp)
+                                    void *opaque, Error *errp[static 1])
 {
     PCIExpressHost *e = PCIE_HOST_BRIDGE(obj);
     uint32_t value = e->size;
@@ -465,7 +465,7 @@ static void mch_reset(DeviceState *qdev)
     mch_update(mch);
 }
 
-static void mch_realize(PCIDevice *d, Error **errp)
+static void mch_realize(PCIDevice *d, Error *errp[static 1])
 {
     int i;
     MCHPCIState *mch = MCH_PCI_DEVICE(d);
diff --git a/hw/pci-host/uninorth.c b/hw/pci-host/uninorth.c
index 6cf5e59f86..9a34313c5a 100644
--- a/hw/pci-host/uninorth.c
+++ b/hw/pci-host/uninorth.c
@@ -314,14 +314,14 @@ PCIBus *pci_pmac_u3_init(qemu_irq *pic,
     return h->bus;
 }
 
-static void unin_main_pci_host_realize(PCIDevice *d, Error **errp)
+static void unin_main_pci_host_realize(PCIDevice *d, Error *errp[static 1])
 {
     d->config[0x0C] = 0x08; // cache_line_size
     d->config[0x0D] = 0x10; // latency_timer
     d->config[0x34] = 0x00; // capabilities_pointer
 }
 
-static void unin_agp_pci_host_realize(PCIDevice *d, Error **errp)
+static void unin_agp_pci_host_realize(PCIDevice *d, Error *errp[static 1])
 {
     d->config[0x0C] = 0x08; // cache_line_size
     d->config[0x0D] = 0x10; // latency_timer
@@ -337,7 +337,7 @@ static void unin_agp_pci_host_realize(PCIDevice *d, Error 
**errp)
     d->config[0x4b] = 0x1;
 }
 
-static void u3_agp_pci_host_realize(PCIDevice *d, Error **errp)
+static void u3_agp_pci_host_realize(PCIDevice *d, Error *errp[static 1])
 {
     /* cache line size */
     d->config[0x0C] = 0x08;
@@ -345,7 +345,8 @@ static void u3_agp_pci_host_realize(PCIDevice *d, Error 
**errp)
     d->config[0x0D] = 0x10;
 }
 
-static void unin_internal_pci_host_realize(PCIDevice *d, Error **errp)
+static void unin_internal_pci_host_realize(PCIDevice *d,
+                                           Error *errp[static 1])
 {
     d->config[0x0C] = 0x08; // cache_line_size
     d->config[0x0D] = 0x10; // latency_timer
diff --git a/hw/pci-host/versatile.c b/hw/pci-host/versatile.c
index aa1fdf75fd..a9fe27d962 100644
--- a/hw/pci-host/versatile.c
+++ b/hw/pci-host/versatile.c
@@ -388,7 +388,7 @@ static void pci_vpb_init(Object *obj)
     s->mem_win_size[2] = 0x10000000;
 }
 
-static void pci_vpb_realize(DeviceState *dev, Error **errp)
+static void pci_vpb_realize(DeviceState *dev, Error *errp[static 1])
 {
     PCIVPBState *s = PCI_VPB(dev);
     PCIHostState *h = PCI_HOST_BRIDGE(dev);
@@ -459,7 +459,7 @@ static void pci_vpb_realize(DeviceState *dev, Error **errp)
     object_property_set_bool(OBJECT(&s->pci_dev), true, "realized", errp);
 }
 
-static void versatile_pci_host_realize(PCIDevice *d, Error **errp)
+static void versatile_pci_host_realize(PCIDevice *d, Error *errp[static 1])
 {
     pci_set_word(d->config + PCI_STATUS,
                  PCI_STATUS_66MHZ | PCI_STATUS_DEVSEL_MEDIUM);
diff --git a/hw/pci-host/xilinx-pcie.c b/hw/pci-host/xilinx-pcie.c
index 0cc54f167d..29e0fbabeb 100644
--- a/hw/pci-host/xilinx-pcie.c
+++ b/hw/pci-host/xilinx-pcie.c
@@ -104,7 +104,7 @@ static void xilinx_pcie_set_irq(void *opaque, int irq_num, 
int level)
        0);
 }
 
-static void xilinx_pcie_host_realize(DeviceState *dev, Error **errp)
+static void xilinx_pcie_host_realize(DeviceState *dev, Error *errp[static 1])
 {
     PCIHostState *pci = PCI_HOST_BRIDGE(dev);
     XilinxPCIEHost *s = XILINX_PCIE_HOST(dev);
diff --git a/hw/pci/msi.c b/hw/pci/msi.c
index a87b2278a3..4a3fdae4a5 100644
--- a/hw/pci/msi.c
+++ b/hw/pci/msi.c
@@ -184,7 +184,7 @@ bool msi_enabled(const PCIDevice *dev)
  */
 int msi_init(struct PCIDevice *dev, uint8_t offset,
              unsigned int nr_vectors, bool msi64bit,
-             bool msi_per_vector_mask, Error **errp)
+             bool msi_per_vector_mask, Error *errp[static 1])
 {
     unsigned int vectors_order;
     uint16_t flags;
diff --git a/hw/pci/msix.c b/hw/pci/msix.c
index fc5fe511b3..c247402785 100644
--- a/hw/pci/msix.c
+++ b/hw/pci/msix.c
@@ -270,7 +270,7 @@ int msix_init(struct PCIDevice *dev, unsigned short 
nentries,
               MemoryRegion *table_bar, uint8_t table_bar_nr,
               unsigned table_offset, MemoryRegion *pba_bar,
               uint8_t pba_bar_nr, unsigned pba_offset, uint8_t cap_pos,
-              Error **errp)
+              Error *errp[static 1])
 {
     int cap;
     unsigned table_size, pba_size;
@@ -339,7 +339,7 @@ int msix_init(struct PCIDevice *dev, unsigned short 
nentries,
 }
 
 int msix_init_exclusive_bar(PCIDevice *dev, unsigned short nentries,
-                            uint8_t bar_nr, Error **errp)
+                            uint8_t bar_nr, Error *errp[static 1])
 {
     int ret;
     char *name;
diff --git a/hw/pci/pci-stub.c b/hw/pci/pci-stub.c
index 36d2c430c5..94c5c62012 100644
--- a/hw/pci/pci-stub.c
+++ b/hw/pci/pci-stub.c
@@ -25,7 +25,7 @@
 #include "hw/pci/pci.h"
 #include "qmp-commands.h"
 
-PciInfoList *qmp_query_pci(Error **errp)
+PciInfoList *qmp_query_pci(Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
     return NULL;
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 4e25eee0ad..53852e4af2 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -107,7 +107,7 @@ static void pcibus_machine_done(Notifier *notifier, void 
*data)
     }
 }
 
-static void pci_bus_realize(BusState *qbus, Error **errp)
+static void pci_bus_realize(BusState *qbus, Error *errp[static 1])
 {
     PCIBus *bus = PCI_BUS(qbus);
 
@@ -117,7 +117,7 @@ static void pci_bus_realize(BusState *qbus, Error **errp)
     vmstate_register(NULL, -1, &vmstate_pcibus, bus);
 }
 
-static void pci_bus_unrealize(BusState *qbus, Error **errp)
+static void pci_bus_unrealize(BusState *qbus, Error *errp[static 1])
 {
     PCIBus *bus = PCI_BUS(qbus);
 
@@ -177,7 +177,8 @@ static const TypeInfo pcie_bus_info = {
 static PCIBus *pci_find_bus_nr(PCIBus *bus, int bus_num);
 static void pci_update_mappings(PCIDevice *d);
 static void pci_irq_handler(void *opaque, int irq_num, int level);
-static void pci_add_option_rom(PCIDevice *pdev, bool is_default_rom, Error **);
+static void pci_add_option_rom(PCIDevice *pdev, bool is_default_rom,
+                              Error *[static 1]);
 static void pci_del_option_rom(PCIDevice *pdev);
 
 static uint16_t pci_default_sub_vendor_id = PCI_SUBVENDOR_ID_REDHAT_QUMRANET;
@@ -798,7 +799,8 @@ static void pci_init_mask_bridge(PCIDevice *d)
                                PCI_PREF_RANGE_TYPE_MASK);
 }
 
-static void pci_init_multifunction(PCIBus *bus, PCIDevice *dev, Error **errp)
+static void pci_init_multifunction(PCIBus *bus, PCIDevice *dev,
+                                   Error *errp[static 1])
 {
     uint8_t slot = PCI_SLOT(dev->devfn);
     uint8_t func;
@@ -955,7 +957,7 @@ uint16_t pci_requester_id(PCIDevice *dev)
 /* -1 for devfn means auto assign */
 static PCIDevice *do_pci_register_device(PCIDevice *pci_dev, PCIBus *bus,
                                          const char *name, int devfn,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     PCIDeviceClass *pc = PCI_DEVICE_GET_CLASS(pci_dev);
     PCIConfigReadFunc *config_read = pc->config_read;
@@ -1070,7 +1072,7 @@ static void pci_unregister_io_regions(PCIDevice *pci_dev)
     pci_unregister_vga(pci_dev);
 }
 
-static void pci_qdev_unrealize(DeviceState *dev, Error **errp)
+static void pci_qdev_unrealize(DeviceState *dev, Error *errp[static 1])
 {
     PCIDevice *pci_dev = PCI_DEVICE(dev);
     PCIDeviceClass *pc = PCI_DEVICE_GET_CLASS(pci_dev);
@@ -1769,7 +1771,7 @@ static PciInfo *qmp_query_pci_bus(PCIBus *bus, int 
bus_num)
     return info;
 }
 
-PciInfoList *qmp_query_pci(Error **errp)
+PciInfoList *qmp_query_pci(Error *errp[static 1])
 {
     PciInfoList *info, *head = NULL, *cur_item = NULL;
     PCIHostState *host_bridge;
@@ -1977,7 +1979,7 @@ PCIDevice *pci_find_device(PCIBus *bus, int bus_num, 
uint8_t devfn)
     return bus->devices[devfn];
 }
 
-static void pci_qdev_realize(DeviceState *qdev, Error **errp)
+static void pci_qdev_realize(DeviceState *qdev, Error *errp[static 1])
 {
     PCIDevice *pci_dev = (PCIDevice *)qdev;
     PCIDeviceClass *pc = PCI_DEVICE_GET_CLASS(pci_dev);
@@ -2018,7 +2020,7 @@ static void pci_qdev_realize(DeviceState *qdev, Error 
**errp)
     }
 }
 
-static void pci_default_realize(PCIDevice *dev, Error **errp)
+static void pci_default_realize(PCIDevice *dev, Error *errp[static 1])
 {
     PCIDeviceClass *pc = PCI_DEVICE_GET_CLASS(dev);
 
@@ -2168,7 +2170,7 @@ static void pci_patch_ids(PCIDevice *pdev, uint8_t *ptr, 
int size)
 
 /* Add an option rom for the device */
 static void pci_add_option_rom(PCIDevice *pdev, bool is_default_rom,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     int size;
     char *path;
@@ -2278,7 +2280,7 @@ int pci_add_capability(PCIDevice *pdev, uint8_t cap_id,
 
 int pci_add_capability2(PCIDevice *pdev, uint8_t cap_id,
                        uint8_t offset, uint8_t size,
-                       Error **errp)
+                       Error *errp[static 1])
 {
     uint8_t *config;
     int i, overlapping_cap;
diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c
index 15bd92086c..6c89ce10ec 100644
--- a/hw/pci/pcie.c
+++ b/hw/pci/pcie.c
@@ -300,7 +300,8 @@ static void pcie_cap_slot_event(PCIDevice *dev, 
PCIExpressHotPlugEvent event)
 
 static void pcie_cap_slot_hotplug_common(PCIDevice *hotplug_dev,
                                          DeviceState *dev,
-                                         uint8_t **exp_cap, Error **errp)
+                                         uint8_t **exp_cap,
+                                         Error *errp[static 1])
 {
     *exp_cap = hotplug_dev->config + hotplug_dev->exp.exp_cap;
     uint16_t sltsta = pci_get_word(*exp_cap + PCI_EXP_SLTSTA);
@@ -315,7 +316,7 @@ static void pcie_cap_slot_hotplug_common(PCIDevice 
*hotplug_dev,
 }
 
 void pcie_cap_slot_hotplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     uint8_t *exp_cap;
     PCIDevice *pci_dev = PCI_DEVICE(dev);
@@ -349,7 +350,8 @@ static void pcie_unplug_device(PCIBus *bus, PCIDevice *dev, 
void *opaque)
 }
 
 void pcie_cap_slot_hot_unplug_request_cb(HotplugHandler *hotplug_dev,
-                                         DeviceState *dev, Error **errp)
+                                         DeviceState *dev,
+                                         Error *errp[static 1])
 {
     uint8_t *exp_cap;
     PCIDevice *pci_dev = PCI_DEVICE(dev);
diff --git a/hw/pci/pcie_aer.c b/hw/pci/pcie_aer.c
index 828052b0c0..52ec70e5e7 100644
--- a/hw/pci/pcie_aer.c
+++ b/hw/pci/pcie_aer.c
@@ -105,7 +105,7 @@ static void aer_log_clear_all_err(PCIEAERLog *aer_log)
 }
 
 int pcie_aer_init(PCIDevice *dev, uint8_t cap_ver, uint16_t offset,
-                  uint16_t size, Error **errp)
+                  uint16_t size, Error *errp[static 1])
 {
     pcie_add_capability(dev, PCI_EXT_CAP_ID_ERR, cap_ver,
                         offset, size);
diff --git a/hw/pci/shpc.c b/hw/pci/shpc.c
index f3ea297a4d..5c2160c634 100644
--- a/hw/pci/shpc.c
+++ b/hw/pci/shpc.c
@@ -491,7 +491,8 @@ static const MemoryRegionOps shpc_mmio_ops = {
     },
 };
 static void shpc_device_hotplug_common(PCIDevice *affected_dev, int *slot,
-                                       SHPCDevice *shpc, Error **errp)
+                                       SHPCDevice *shpc,
+                                       Error *errp[static 1])
 {
     int pci_slot = PCI_SLOT(affected_dev->devfn);
     *slot = SHPC_PCI_TO_IDX(pci_slot);
@@ -506,7 +507,7 @@ static void shpc_device_hotplug_common(PCIDevice 
*affected_dev, int *slot,
 }
 
 void shpc_device_hotplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     PCIDevice *pci_hotplug_dev = PCI_DEVICE(hotplug_dev);
     SHPCDevice *shpc = pci_hotplug_dev->shpc;
@@ -547,7 +548,8 @@ void shpc_device_hotplug_cb(HotplugHandler *hotplug_dev, 
DeviceState *dev,
 }
 
 void shpc_device_hot_unplug_request_cb(HotplugHandler *hotplug_dev,
-                                       DeviceState *dev, Error **errp)
+                                       DeviceState *dev,
+                                       Error *errp[static 1])
 {
     PCIDevice *pci_hotplug_dev = PCI_DEVICE(hotplug_dev);
     SHPCDevice *shpc = pci_hotplug_dev->shpc;
diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index 1b9abbb094..7a875c43f1 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -706,7 +706,8 @@ static DeviceState *ppce500_init_mpic_qemu(PPCE500Params 
*params,
 }
 
 static DeviceState *ppce500_init_mpic_kvm(PPCE500Params *params,
-                                          qemu_irq **irqs, Error **errp)
+                                          qemu_irq **irqs,
+                                          Error *errp[static 1])
 {
     DeviceState *dev;
     CPUState *cs;
diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index bae1c0ac99..1d690d0c46 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -114,7 +114,7 @@ static const MemoryRegionOps unin_ops = {
 };
 
 static void fw_cfg_boot_set(void *opaque, const char *boot_device,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     fw_cfg_modify_i16(opaque, FW_CFG_BOOT_DEVICE, boot_device[0]);
 }
diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
index 97bb8541d7..86480f5176 100644
--- a/hw/ppc/mac_oldworld.c
+++ b/hw/ppc/mac_oldworld.c
@@ -56,7 +56,7 @@
 #define NDRV_VGA_FILENAME "qemu_vga.ndrv"
 
 static void fw_cfg_boot_set(void *opaque, const char *boot_device,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     fw_cfg_modify_i16(opaque, FW_CFG_BOOT_DEVICE, boot_device[0]);
 }
diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
index 0e5236e577..d721131cca 100644
--- a/hw/ppc/pnv.c
+++ b/hw/ppc/pnv.c
@@ -795,7 +795,7 @@ static const TypeInfo pnv_chip_power9_info = {
     .class_init    = pnv_chip_power9_class_init,
 };
 
-static void pnv_chip_core_sanitize(PnvChip *chip, Error **errp)
+static void pnv_chip_core_sanitize(PnvChip *chip, Error *errp[static 1])
 {
     PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
     int cores_max;
@@ -850,7 +850,7 @@ static void pnv_chip_init(Object *obj)
                                    OBJECT(&chip->psi), &error_abort);
 }
 
-static void pnv_chip_icp_realize(PnvChip *chip, Error **errp)
+static void pnv_chip_icp_realize(PnvChip *chip, Error *errp[static 1])
 {
     PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
     char *typename = pnv_core_typename(pcc->cpu_model);
@@ -882,7 +882,7 @@ static void pnv_chip_icp_realize(PnvChip *chip, Error 
**errp)
     g_free(typename);
 }
 
-static void pnv_chip_realize(DeviceState *dev, Error **errp)
+static void pnv_chip_realize(DeviceState *dev, Error *errp[static 1])
 {
     PnvChip *chip = PNV_CHIP(dev);
     PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
@@ -1067,13 +1067,13 @@ static void pnv_pic_print_info(InterruptStatsProvider 
*obj,
 }
 
 static void pnv_get_num_chips(Object *obj, Visitor *v, const char *name,
-                              void *opaque, Error **errp)
+                              void *opaque, Error *errp[static 1])
 {
     visit_type_uint32(v, name, &POWERNV_MACHINE(obj)->num_chips, errp);
 }
 
 static void pnv_set_num_chips(Object *obj, Visitor *v, const char *name,
-                              void *opaque, Error **errp)
+                              void *opaque, Error *errp[static 1])
 {
     PnvMachineState *pnv = POWERNV_MACHINE(obj);
     uint32_t num_chips;
diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
index 24d132cc3e..b61f63b7c0 100644
--- a/hw/ppc/pnv_core.c
+++ b/hw/ppc/pnv_core.c
@@ -44,7 +44,7 @@ static void powernv_cpu_reset(void *opaque)
     env->msr |= MSR_HVB; /* Hypervisor mode */
 }
 
-static void powernv_cpu_init(PowerPCCPU *cpu, Error **errp)
+static void powernv_cpu_init(PowerPCCPU *cpu, Error *errp[static 1])
 {
     CPUPPCState *env = &cpu->env;
     int core_pir;
@@ -111,7 +111,8 @@ static const MemoryRegionOps pnv_core_xscom_ops = {
     .endianness = DEVICE_BIG_ENDIAN,
 };
 
-static void pnv_core_realize_child(Object *child, XICSFabric *xi, Error **errp)
+static void pnv_core_realize_child(Object *child, XICSFabric *xi,
+                                   Error *errp[static 1])
 {
     CPUState *cs = CPU(child);
     PowerPCCPU *cpu = POWERPC_CPU(cs);
@@ -140,7 +141,7 @@ static void pnv_core_realize_child(Object *child, 
XICSFabric *xi, Error **errp)
     xics_cpu_setup(xi, cpu, ICP(obj));
 }
 
-static void pnv_core_realize(DeviceState *dev, Error **errp)
+static void pnv_core_realize(DeviceState *dev, Error *errp[static 1])
 {
     PnvCore *pc = PNV_CORE(OBJECT(dev));
     CPUCore *cc = CPU_CORE(OBJECT(dev));
diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c
index f03a80a29b..700dabd9fc 100644
--- a/hw/ppc/pnv_lpc.c
+++ b/hw/ppc/pnv_lpc.c
@@ -418,7 +418,7 @@ static const MemoryRegionOps opb_master_ops = {
     },
 };
 
-static void pnv_lpc_realize(DeviceState *dev, Error **errp)
+static void pnv_lpc_realize(DeviceState *dev, Error *errp[static 1])
 {
     PnvLpcController *lpc = PNV_LPC(dev);
     Object *obj;
diff --git a/hw/ppc/pnv_occ.c b/hw/ppc/pnv_occ.c
index 04880f26d6..6e77014264 100644
--- a/hw/ppc/pnv_occ.c
+++ b/hw/ppc/pnv_occ.c
@@ -92,7 +92,7 @@ static const MemoryRegionOps pnv_occ_xscom_ops = {
 };
 
 
-static void pnv_occ_realize(DeviceState *dev, Error **errp)
+static void pnv_occ_realize(DeviceState *dev, Error *errp[static 1])
 {
     PnvOCC *occ = PNV_OCC(dev);
     Object *obj;
diff --git a/hw/ppc/pnv_psi.c b/hw/ppc/pnv_psi.c
index 5dd697bdb4..370d662c0d 100644
--- a/hw/ppc/pnv_psi.c
+++ b/hw/ppc/pnv_psi.c
@@ -459,7 +459,7 @@ static const uint8_t irq_to_xivr[] = {
     PSIHB_XSCOM_XIVR_EXT,
 };
 
-static void pnv_psi_realize(DeviceState *dev, Error **errp)
+static void pnv_psi_realize(DeviceState *dev, Error *errp[static 1])
 {
     PnvPsi *psi = PNV_PSI(dev);
     ICSState *ics = &psi->ics;
diff --git a/hw/ppc/pnv_xscom.c b/hw/ppc/pnv_xscom.c
index 38bc85f117..4f1b7c4de0 100644
--- a/hw/ppc/pnv_xscom.c
+++ b/hw/ppc/pnv_xscom.c
@@ -174,7 +174,7 @@ const MemoryRegionOps pnv_xscom_ops = {
     .endianness = DEVICE_BIG_ENDIAN,
 };
 
-void pnv_xscom_realize(PnvChip *chip, Error **errp)
+void pnv_xscom_realize(PnvChip *chip, Error *errp[static 1])
 {
     SysBusDevice *sbd = SYS_BUS_DEVICE(chip);
     char *name;
diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
index bc7b2fd287..05d197dea1 100644
--- a/hw/ppc/prep.c
+++ b/hw/ppc/prep.c
@@ -324,7 +324,7 @@ static uint32_t PREP_io_800_readb (void *opaque, uint32_t 
addr)
 #define NVRAM_SIZE        0x2000
 
 static void fw_cfg_boot_set(void *opaque, const char *boot_device,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     fw_cfg_modify_i16(opaque, FW_CFG_BOOT_DEVICE, boot_device[0]);
 }
diff --git a/hw/ppc/prep_systemio.c b/hw/ppc/prep_systemio.c
index 50893ec529..eccdeb0ed7 100644
--- a/hw/ppc/prep_systemio.c
+++ b/hw/ppc/prep_systemio.c
@@ -239,7 +239,7 @@ static const MemoryRegionOps ppc_parity_error_ops = {
     },
 };
 
-static void prep_systemio_realize(DeviceState *dev, Error **errp)
+static void prep_systemio_realize(DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *isa = ISA_DEVICE(dev);
     PrepSystemIoState *s = PREP_SYSTEMIO(dev);
diff --git a/hw/ppc/rs6000_mc.c b/hw/ppc/rs6000_mc.c
index b6135650bd..ef6bfd56c8 100644
--- a/hw/ppc/rs6000_mc.c
+++ b/hw/ppc/rs6000_mc.c
@@ -136,7 +136,7 @@ static const MemoryRegionPortio rs6000mc_port_list[] = {
     PORTIO_END_OF_LIST()
 };
 
-static void rs6000mc_realize(DeviceState *dev, Error **errp)
+static void rs6000mc_realize(DeviceState *dev, Error *errp[static 1])
 {
     RS6000MCState *s = RS6000MC_DEVICE(dev);
     int socket = 0;
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index f39fd1e06f..b3da0853de 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -100,7 +100,7 @@
 
 static ICSState *spapr_ics_create(sPAPRMachineState *spapr,
                                   const char *type_ics,
-                                  int nr_irqs, Error **errp)
+                                  int nr_irqs, Error *errp[static 1])
 {
     Error *local_err = NULL;
     Object *obj;
@@ -124,7 +124,8 @@ error:
     return NULL;
 }
 
-static void xics_system_init(MachineState *machine, int nr_irqs, Error **errp)
+static void xics_system_init(MachineState *machine, int nr_irqs,
+                             Error *errp[static 1])
 {
     sPAPRMachineState *spapr = SPAPR_MACHINE(machine);
 
@@ -1230,7 +1231,7 @@ void spapr_free_hpt(sPAPRMachineState *spapr)
 }
 
 static void spapr_reallocate_hpt(sPAPRMachineState *spapr, int shift,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     long rc;
 
@@ -1402,7 +1403,7 @@ static void spapr_rtc_create(sPAPRMachineState *spapr)
 }
 
 /* Returns whether we want to use VGA or not */
-static bool spapr_vga_init(PCIBus *pci_bus, Error **errp)
+static bool spapr_vga_init(PCIBus *pci_bus, Error *errp[static 1])
 {
     switch (vga_interface_type) {
     case VGA_NONE:
@@ -1874,7 +1875,7 @@ static SaveVMHandlers savevm_htab_handlers = {
 };
 
 static void spapr_boot_set(void *opaque, const char *boot_device,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     MachineState *machine = MACHINE(qdev_get_machine());
     machine->boot_order = g_strdup(boot_device);
@@ -1921,7 +1922,8 @@ static void 
spapr_create_lmb_dr_connectors(sPAPRMachineState *spapr)
  * to SPAPR_MEMORY_BLOCK_SIZE(256MB), then refuse to start the guest
  * since we can't support such unaligned sizes with DRCONF_MEMORY.
  */
-static void spapr_validate_node_memory(MachineState *machine, Error **errp)
+static void spapr_validate_node_memory(MachineState *machine,
+                                       Error *errp[static 1])
 {
     int i;
 
@@ -2444,14 +2446,15 @@ static char *spapr_get_fw_dev_path(FWPathProvider *p, 
BusState *bus,
     return NULL;
 }
 
-static char *spapr_get_kvm_type(Object *obj, Error **errp)
+static char *spapr_get_kvm_type(Object *obj, Error *errp[static 1])
 {
     sPAPRMachineState *spapr = SPAPR_MACHINE(obj);
 
     return g_strdup(spapr->kvm_type);
 }
 
-static void spapr_set_kvm_type(Object *obj, const char *value, Error **errp)
+static void spapr_set_kvm_type(Object *obj, const char *value,
+                               Error *errp[static 1])
 {
     sPAPRMachineState *spapr = SPAPR_MACHINE(obj);
 
@@ -2459,7 +2462,8 @@ static void spapr_set_kvm_type(Object *obj, const char 
*value, Error **errp)
     spapr->kvm_type = g_strdup(value);
 }
 
-static bool spapr_get_modern_hotplug_events(Object *obj, Error **errp)
+static bool spapr_get_modern_hotplug_events(Object *obj,
+                                            Error *errp[static 1])
 {
     sPAPRMachineState *spapr = SPAPR_MACHINE(obj);
 
@@ -2467,7 +2471,7 @@ static bool spapr_get_modern_hotplug_events(Object *obj, 
Error **errp)
 }
 
 static void spapr_set_modern_hotplug_events(Object *obj, bool value,
-                                            Error **errp)
+                                            Error *errp[static 1])
 {
     sPAPRMachineState *spapr = SPAPR_MACHINE(obj);
 
@@ -2510,7 +2514,7 @@ void spapr_do_system_reset_on_cpu(CPUState *cs, 
run_on_cpu_data arg)
     ppc_cpu_do_system_reset(cs);
 }
 
-static void spapr_nmi(NMIState *n, int cpu_index, Error **errp)
+static void spapr_nmi(NMIState *n, int cpu_index, Error *errp[static 1])
 {
     CPUState *cs;
 
@@ -2521,7 +2525,7 @@ static void spapr_nmi(NMIState *n, int cpu_index, Error 
**errp)
 
 static void spapr_add_lmbs(DeviceState *dev, uint64_t addr_start, uint64_t 
size,
                            uint32_t node, bool dedicated_hp_event_source,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     sPAPRDRConnector *drc;
     sPAPRDRConnectorClass *drck;
@@ -2567,7 +2571,7 @@ static void spapr_add_lmbs(DeviceState *dev, uint64_t 
addr_start, uint64_t size,
 }
 
 static void spapr_memory_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
-                              uint32_t node, Error **errp)
+                              uint32_t node, Error *errp[static 1])
 {
     Error *local_err = NULL;
     sPAPRMachineState *ms = SPAPR_MACHINE(hotplug_dev);
@@ -2598,7 +2602,7 @@ out:
 }
 
 static void spapr_memory_pre_plug(HotplugHandler *hotplug_dev, DeviceState 
*dev,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     PCDIMMDevice *dimm = PC_DIMM(dev);
     PCDIMMDeviceClass *ddc = PC_DIMM_GET_CLASS(dimm);
@@ -2716,7 +2720,7 @@ void spapr_lmb_release(DeviceState *dev)
 }
 
 static void spapr_memory_unplug(HotplugHandler *hotplug_dev, DeviceState *dev,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     sPAPRMachineState *ms = SPAPR_MACHINE(hotplug_dev);
     PCDIMMDevice *dimm = PC_DIMM(dev);
@@ -2728,7 +2732,8 @@ static void spapr_memory_unplug(HotplugHandler 
*hotplug_dev, DeviceState *dev,
 }
 
 static void spapr_memory_unplug_request(HotplugHandler *hotplug_dev,
-                                        DeviceState *dev, Error **errp)
+                                        DeviceState *dev,
+                                        Error *errp[static 1])
 {
     sPAPRMachineState *spapr = SPAPR_MACHINE(hotplug_dev);
     Error *local_err = NULL;
@@ -2796,7 +2801,7 @@ void *spapr_populate_hotplug_cpu_dt(CPUState *cs, int 
*fdt_offset,
 }
 
 static void spapr_core_unplug(HotplugHandler *hotplug_dev, DeviceState *dev,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     MachineState *ms = MACHINE(qdev_get_machine());
     CPUCore *cc = CPU_CORE(dev);
@@ -2818,7 +2823,7 @@ void spapr_core_release(DeviceState *dev)
 
 static
 void spapr_core_unplug_request(HotplugHandler *hotplug_dev, DeviceState *dev,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     int index;
     sPAPRDRConnector *drc;
@@ -2849,7 +2854,7 @@ void spapr_core_unplug_request(HotplugHandler 
*hotplug_dev, DeviceState *dev,
 }
 
 static void spapr_core_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     sPAPRMachineState *spapr = SPAPR_MACHINE(OBJECT(hotplug_dev));
     MachineClass *mc = MACHINE_GET_CLASS(spapr);
@@ -2910,7 +2915,7 @@ static void spapr_core_plug(HotplugHandler *hotplug_dev, 
DeviceState *dev,
 }
 
 static void spapr_core_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     MachineState *machine = MACHINE(OBJECT(hotplug_dev));
     MachineClass *mc = MACHINE_GET_CLASS(hotplug_dev);
@@ -2967,7 +2972,7 @@ out:
 }
 
 static void spapr_machine_device_plug(HotplugHandler *hotplug_dev,
-                                      DeviceState *dev, Error **errp)
+                                      DeviceState *dev, Error *errp[static 1])
 {
     sPAPRMachineClass *smc = SPAPR_MACHINE_GET_CLASS(qdev_get_machine());
 
@@ -3016,7 +3021,7 @@ static void spapr_machine_device_plug(HotplugHandler 
*hotplug_dev,
 }
 
 static void spapr_machine_device_unplug(HotplugHandler *hotplug_dev,
-                                      DeviceState *dev, Error **errp)
+                                      DeviceState *dev, Error *errp[static 1])
 {
     sPAPRMachineState *sms = SPAPR_MACHINE(qdev_get_machine());
     MachineClass *mc = MACHINE_GET_CLASS(qdev_get_machine());
@@ -3037,7 +3042,8 @@ static void spapr_machine_device_unplug(HotplugHandler 
*hotplug_dev,
 }
 
 static void spapr_machine_device_unplug_request(HotplugHandler *hotplug_dev,
-                                                DeviceState *dev, Error **errp)
+                                                DeviceState *dev,
+                                                Error *errp[static 1])
 {
     sPAPRMachineState *sms = SPAPR_MACHINE(qdev_get_machine());
     MachineClass *mc = MACHINE_GET_CLASS(qdev_get_machine());
@@ -3064,7 +3070,8 @@ static void 
spapr_machine_device_unplug_request(HotplugHandler *hotplug_dev,
 }
 
 static void spapr_machine_device_pre_plug(HotplugHandler *hotplug_dev,
-                                          DeviceState *dev, Error **errp)
+                                          DeviceState *dev,
+                                          Error *errp[static 1])
 {
     if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) {
         spapr_memory_pre_plug(hotplug_dev, dev, errp);
@@ -3137,7 +3144,8 @@ static const CPUArchIdList 
*spapr_possible_cpu_arch_ids(MachineState *machine)
 static void spapr_phb_placement(sPAPRMachineState *spapr, uint32_t index,
                                 uint64_t *buid, hwaddr *pio,
                                 hwaddr *mmio32, hwaddr *mmio64,
-                                unsigned n_dma, uint32_t *liobns, Error **errp)
+                                unsigned n_dma, uint32_t *liobns,
+                                Error *errp[static 1])
 {
     /*
      * New-style PHB window placement.
@@ -3417,7 +3425,8 @@ DEFINE_SPAPR_MACHINE(2_8, "2.8", false);
 static void phb_placement_2_7(sPAPRMachineState *spapr, uint32_t index,
                               uint64_t *buid, hwaddr *pio,
                               hwaddr *mmio32, hwaddr *mmio64,
-                              unsigned n_dma, uint32_t *liobns, Error **errp)
+                              unsigned n_dma, uint32_t *liobns,
+                              Error *errp[static 1])
 {
     /* Legacy PHB placement for pseries-2.7 and earlier machine types */
     const uint64_t base_buid = 0x800000020000000ULL;
diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
index 029a14120e..4b8ef5c2ab 100644
--- a/hw/ppc/spapr_cpu_core.c
+++ b/hw/ppc/spapr_cpu_core.c
@@ -60,7 +60,7 @@ static void spapr_cpu_destroy(PowerPCCPU *cpu)
 }
 
 static void spapr_cpu_init(sPAPRMachineState *spapr, PowerPCCPU *cpu,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     CPUPPCState *env = &cpu->env;
 
@@ -111,7 +111,8 @@ char *spapr_get_cpu_core_type(const char *model)
     return core_type;
 }
 
-static void spapr_cpu_core_unrealizefn(DeviceState *dev, Error **errp)
+static void spapr_cpu_core_unrealizefn(DeviceState *dev,
+                                       Error *errp[static 1])
 {
     sPAPRCPUCore *sc = SPAPR_CPU_CORE(OBJECT(dev));
     sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_GET_CLASS(OBJECT(dev));
@@ -134,7 +135,7 @@ static void spapr_cpu_core_unrealizefn(DeviceState *dev, 
Error **errp)
     g_free(sc->threads);
 }
 
-static void spapr_cpu_core_realize_child(Object *child, Error **errp)
+static void spapr_cpu_core_realize_child(Object *child, Error *errp[static 1])
 {
     Error *local_err = NULL;
     sPAPRMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());
@@ -169,7 +170,7 @@ error:
     error_propagate(errp, local_err);
 }
 
-static void spapr_cpu_core_realize(DeviceState *dev, Error **errp)
+static void spapr_cpu_core_realize(DeviceState *dev, Error *errp[static 1])
 {
     sPAPRCPUCore *sc = SPAPR_CPU_CORE(OBJECT(dev));
     sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_GET_CLASS(OBJECT(dev));
diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c
index 867fe9cd84..8968f11654 100644
--- a/hw/ppc/spapr_drc.c
+++ b/hw/ppc/spapr_drc.c
@@ -221,14 +221,14 @@ static uint32_t entity_sense(sPAPRDRConnector *drc, 
sPAPRDREntitySense *state)
 }
 
 static void prop_get_index(Object *obj, Visitor *v, const char *name,
-                           void *opaque, Error **errp)
+                           void *opaque, Error *errp[static 1])
 {
     sPAPRDRConnector *drc = SPAPR_DR_CONNECTOR(obj);
     uint32_t value = spapr_drc_index(drc);
     visit_type_uint32(v, name, &value, errp);
 }
 
-static char *prop_get_name(Object *obj, Error **errp)
+static char *prop_get_name(Object *obj, Error *errp[static 1])
 {
     sPAPRDRConnector *drc = SPAPR_DR_CONNECTOR(obj);
     sPAPRDRConnectorClass *drck = SPAPR_DR_CONNECTOR_GET_CLASS(drc);
@@ -236,7 +236,7 @@ static char *prop_get_name(Object *obj, Error **errp)
 }
 
 static void prop_get_fdt(Object *obj, Visitor *v, const char *name,
-                         void *opaque, Error **errp)
+                         void *opaque, Error *errp[static 1])
 {
     sPAPRDRConnector *drc = SPAPR_DR_CONNECTOR(obj);
     int fdt_offset_next, fdt_offset, fdt_depth;
@@ -306,7 +306,7 @@ static void prop_get_fdt(Object *obj, Visitor *v, const 
char *name,
 }
 
 static void attach(sPAPRDRConnector *drc, DeviceState *d, void *fdt,
-                   int fdt_start_offset, bool coldplug, Error **errp)
+                   int fdt_start_offset, bool coldplug, Error *errp[static 1])
 {
     trace_spapr_drc_attach(spapr_drc_index(drc));
 
@@ -357,7 +357,8 @@ static void attach(sPAPRDRConnector *drc, DeviceState *d, 
void *fdt,
                              NULL, 0, IGNORE_ERRORS);
 }
 
-static void detach(sPAPRDRConnector *drc, DeviceState *d, Error **errp)
+static void detach(sPAPRDRConnector *drc, DeviceState *d,
+                   Error *errp[static 1])
 {
     trace_spapr_drc_detach(spapr_drc_index(drc));
 
@@ -527,7 +528,7 @@ static const VMStateDescription vmstate_spapr_drc = {
     }
 };
 
-static void realize(DeviceState *d, Error **errp)
+static void realize(DeviceState *d, Error *errp[static 1])
 {
     sPAPRDRConnector *drc = SPAPR_DR_CONNECTOR(d);
     Object *root_container;
@@ -559,7 +560,7 @@ static void realize(DeviceState *d, Error **errp)
     trace_spapr_drc_realize_complete(spapr_drc_index(drc));
 }
 
-static void unrealize(DeviceState *d, Error **errp)
+static void unrealize(DeviceState *d, Error *errp[static 1])
 {
     sPAPRDRConnector *drc = SPAPR_DR_CONNECTOR(d);
     Object *root_container;
diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c
index aa1ffea9e5..b52375a2b9 100644
--- a/hw/ppc/spapr_hcall.c
+++ b/hw/ppc/spapr_hcall.c
@@ -1046,7 +1046,7 @@ static target_ulong h_signal_sys_reset(PowerPCCPU *cpu,
 }
 
 static uint32_t cas_check_pvr(PowerPCCPU *cpu, target_ulong *addr,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     bool explicit_match = false; /* Matched the CPU's real PVR */
     uint32_t max_compat = cpu->max_compat;
diff --git a/hw/ppc/spapr_iommu.c b/hw/ppc/spapr_iommu.c
index bee492de12..e792c3fbe0 100644
--- a/hw/ppc/spapr_iommu.c
+++ b/hw/ppc/spapr_iommu.c
@@ -371,7 +371,7 @@ void spapr_tce_table_disable(sPAPRTCETable *tcet)
     tcet->nb_table = 0;
 }
 
-static void spapr_tce_table_unrealize(DeviceState *dev, Error **errp)
+static void spapr_tce_table_unrealize(DeviceState *dev, Error *errp[static 1])
 {
     sPAPRTCETable *tcet = SPAPR_TCE_TABLE(dev);
 
diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index 03eff2f67c..32bf290921 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -1347,7 +1347,7 @@ static int spapr_create_pci_child_dt(sPAPRPHBState *phb, 
PCIDevice *dev,
 static void spapr_phb_add_pci_device(sPAPRDRConnector *drc,
                                      sPAPRPHBState *phb,
                                      PCIDevice *pdev,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     sPAPRDRConnectorClass *drck = SPAPR_DR_CONNECTOR_GET_CLASS(drc);
     DeviceState *dev = DEVICE(pdev);
@@ -1389,7 +1389,7 @@ void spapr_phb_remove_pci_device_cb(DeviceState *dev)
 static void spapr_phb_remove_pci_device(sPAPRDRConnector *drc,
                                         sPAPRPHBState *phb,
                                         PCIDevice *pdev,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     sPAPRDRConnectorClass *drck = SPAPR_DR_CONNECTOR_GET_CLASS(drc);
 
@@ -1424,7 +1424,8 @@ static uint32_t spapr_phb_get_pci_drc_index(sPAPRPHBState 
*phb,
 }
 
 static void spapr_phb_hot_plug_child(HotplugHandler *plug_handler,
-                                     DeviceState *plugged_dev, Error **errp)
+                                     DeviceState *plugged_dev,
+                                     Error *errp[static 1])
 {
     sPAPRPHBState *phb = SPAPR_PCI_HOST_BRIDGE(DEVICE(plug_handler));
     PCIDevice *pdev = PCI_DEVICE(plugged_dev);
@@ -1489,7 +1490,8 @@ static void spapr_phb_hot_plug_child(HotplugHandler 
*plug_handler,
 }
 
 static void spapr_phb_hot_unplug_child(HotplugHandler *plug_handler,
-                                       DeviceState *plugged_dev, Error **errp)
+                                       DeviceState *plugged_dev,
+                                       Error *errp[static 1])
 {
     sPAPRPHBState *phb = SPAPR_PCI_HOST_BRIDGE(DEVICE(plug_handler));
     PCIDevice *pdev = PCI_DEVICE(plugged_dev);
@@ -1553,7 +1555,7 @@ static void spapr_phb_hot_unplug_child(HotplugHandler 
*plug_handler,
     }
 }
 
-static void spapr_phb_realize(DeviceState *dev, Error **errp)
+static void spapr_phb_realize(DeviceState *dev, Error *errp[static 1])
 {
     sPAPRMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());
     SysBusDevice *s = SYS_BUS_DEVICE(dev);
diff --git a/hw/ppc/spapr_rng.c b/hw/ppc/spapr_rng.c
index 1d0968358e..f3feaf27fb 100644
--- a/hw/ppc/spapr_rng.c
+++ b/hw/ppc/spapr_rng.c
@@ -112,7 +112,7 @@ static void spapr_rng_instance_init(Object *obj)
                                     IGNORE_ERRORS);
 }
 
-static void spapr_rng_realize(DeviceState *dev, Error **errp)
+static void spapr_rng_realize(DeviceState *dev, Error *errp[static 1])
 {
 
     sPAPRRngState *rngstate = SPAPR_RNG(dev);
diff --git a/hw/ppc/spapr_rtc.c b/hw/ppc/spapr_rtc.c
index 5f4489ac1b..5990c69de3 100644
--- a/hw/ppc/spapr_rtc.c
+++ b/hw/ppc/spapr_rtc.c
@@ -127,12 +127,13 @@ static void rtas_set_time_of_day(PowerPCCPU *cpu, 
sPAPRMachineState *spapr,
     rtas_st(rets, 0, RTAS_OUT_SUCCESS);
 }
 
-static void spapr_rtc_qom_date(Object *obj, struct tm *current_tm, Error 
**errp)
+static void spapr_rtc_qom_date(Object *obj, struct tm *current_tm,
+                               Error *errp[static 1])
 {
     spapr_rtc_read(SPAPR_RTC(obj), current_tm, NULL);
 }
 
-static void spapr_rtc_realize(DeviceState *dev, Error **errp)
+static void spapr_rtc_realize(DeviceState *dev, Error *errp[static 1])
 {
     sPAPRRTCState *rtc = SPAPR_RTC(dev);
     struct tm tm;
diff --git a/hw/ppc/spapr_vio.c b/hw/ppc/spapr_vio.c
index a0ee4fd265..a7ed564c77 100644
--- a/hw/ppc/spapr_vio.c
+++ b/hw/ppc/spapr_vio.c
@@ -415,7 +415,7 @@ static void spapr_vio_busdev_reset(DeviceState *qdev)
     }
 }
 
-static void spapr_vio_busdev_realize(DeviceState *qdev, Error **errp)
+static void spapr_vio_busdev_realize(DeviceState *qdev, Error *errp[static 1])
 {
     sPAPRMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());
     VIOsPAPRDevice *dev = (VIOsPAPRDevice *)qdev;
diff --git a/hw/s390x/3270-ccw.c b/hw/s390x/3270-ccw.c
index 6e6eee4e90..eeb889d62f 100644
--- a/hw/s390x/3270-ccw.c
+++ b/hw/s390x/3270-ccw.c
@@ -91,7 +91,7 @@ static int emulated_ccw_3270_cb(SubchDev *sch, CCW1 ccw)
     return rc;
 }
 
-static void emulated_ccw_3270_realize(DeviceState *ds, Error **errp)
+static void emulated_ccw_3270_realize(DeviceState *ds, Error *errp[static 1])
 {
     uint16_t chpid;
     EmulatedCcw3270Device *dev = EMULATED_CCW_3270(ds);
diff --git a/hw/s390x/ccw-device.c b/hw/s390x/ccw-device.c
index fb8d640a7e..6826d99565 100644
--- a/hw/s390x/ccw-device.c
+++ b/hw/s390x/ccw-device.c
@@ -28,7 +28,7 @@ static void ccw_device_refill_ids(CcwDevice *dev)
     dev->subch_id.valid = true;
 }
 
-static void ccw_device_realize(CcwDevice *dev, Error **errp)
+static void ccw_device_realize(CcwDevice *dev, Error *errp[static 1])
 {
     ccw_device_refill_ids(dev);
 }
diff --git a/hw/s390x/css-bridge.c b/hw/s390x/css-bridge.c
index 49e20a5786..6ae8b20227 100644
--- a/hw/s390x/css-bridge.c
+++ b/hw/s390x/css-bridge.c
@@ -25,7 +25,7 @@
  * device from the virtual css bus.
  */
 static void ccw_device_unplug(HotplugHandler *hotplug_dev,
-                              DeviceState *dev, Error **errp)
+                              DeviceState *dev, Error *errp[static 1])
 {
     CcwDevice *ccw_dev = CCW_DEVICE(dev);
     CCWDeviceClass *k = CCW_DEVICE_GET_CLASS(ccw_dev);
diff --git a/hw/s390x/css.c b/hw/s390x/css.c
index cf3a3fa70a..9c020e7357 100644
--- a/hw/s390x/css.c
+++ b/hw/s390x/css.c
@@ -1524,7 +1524,7 @@ static uint32_t css_find_free_subch(uint8_t cssid, 
uint8_t ssid)
  */
 static bool css_find_free_subch_for_devno(uint8_t cssid, uint8_t ssid,
                                           uint16_t devno, uint16_t *schid,
-                                          Error **errp)
+                                          Error *errp[static 1])
 {
     uint32_t free_schid;
 
@@ -1558,7 +1558,7 @@ static bool css_find_free_subch_for_devno(uint8_t cssid, 
uint8_t ssid,
  */
 static bool css_find_free_subch_and_devno(uint8_t cssid, uint8_t *ssid,
                                           uint16_t *devno, uint16_t *schid,
-                                          Error **errp)
+                                          Error *errp[static 1])
 {
     uint32_t free_schid, free_devno;
 
@@ -1939,7 +1939,7 @@ void css_reset(void)
 }
 
 static void get_css_devid(Object *obj, Visitor *v, const char *name,
-                          void *opaque, Error **errp)
+                          void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -1969,7 +1969,7 @@ static void get_css_devid(Object *obj, Visitor *v, const 
char *name,
  * parse <cssid>.<ssid>.<devid> and assert valid range for cssid/ssid
  */
 static void set_css_devid(Object *obj, Visitor *v, const char *name,
-                          void *opaque, Error **errp)
+                          void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
@@ -2024,7 +2024,7 @@ PropertyInfo css_devid_ro_propinfo = {
 };
 
 SubchDev *css_create_sch(CssDevId bus_id, bool is_virtual, bool squash_mcss,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     uint16_t schid = 0;
     SubchDev *sch;
diff --git a/hw/s390x/event-facility.c b/hw/s390x/event-facility.c
index 6eac626212..448418a82e 100644
--- a/hw/s390x/event-facility.c
+++ b/hw/s390x/event-facility.c
@@ -287,7 +287,7 @@ out:
 
 #define TYPE_SCLP_EVENTS_BUS "s390-sclp-events-bus"
 
-static void sclp_events_bus_realize(BusState *bus, Error **errp)
+static void sclp_events_bus_realize(BusState *bus, Error *errp[static 1])
 {
     BusChild *kid;
 
@@ -394,7 +394,7 @@ static const TypeInfo sclp_event_facility_info = {
     .class_size    = sizeof(SCLPEventFacilityClass),
 };
 
-static void event_realize(DeviceState *qdev, Error **errp)
+static void event_realize(DeviceState *qdev, Error *errp[static 1])
 {
     SCLPEvent *event = SCLP_EVENT(qdev);
     SCLPEventClass *child = SCLP_EVENT_GET_CLASS(event);
@@ -408,7 +408,7 @@ static void event_realize(DeviceState *qdev, Error **errp)
     }
 }
 
-static void event_unrealize(DeviceState *qdev, Error **errp)
+static void event_unrealize(DeviceState *qdev, Error *errp[static 1])
 {
     SCLPEvent *event = SCLP_EVENT(qdev);
     SCLPEventClass *child = SCLP_EVENT_GET_CLASS(event);
diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c
index 1a9fd04692..f953941071 100644
--- a/hw/s390x/ipl.c
+++ b/hw/s390x/ipl.c
@@ -98,7 +98,7 @@ static uint64_t bios_translate_addr(void *opaque, uint64_t 
srcaddr)
     return srcaddr + dstaddr;
 }
 
-static void s390_ipl_realize(DeviceState *dev, Error **errp)
+static void s390_ipl_realize(DeviceState *dev, Error *errp[static 1])
 {
     S390IPLState *ipl = S390_IPL(dev);
     uint64_t pentry = KERN_IMAGE_START;
@@ -300,7 +300,7 @@ int s390_ipl_set_loadparm(uint8_t *loadparm)
     return -1;
 }
 
-static int load_netboot_image(Error **errp)
+static int load_netboot_image(Error *errp[static 1])
 {
     S390IPLState *ipl = get_ipl_device();
     char *netboot_filename;
diff --git a/hw/s390x/s390-ccw.c b/hw/s390x/s390-ccw.c
index 8614dda6f8..1aee8220dc 100644
--- a/hw/s390x/s390-ccw.c
+++ b/hw/s390x/s390-ccw.c
@@ -31,7 +31,7 @@ int s390_ccw_cmd_request(ORB *orb, SCSW *scsw, void *data)
 
 static void s390_ccw_get_dev_info(S390CCWDevice *cdev,
                                   char *sysfsdev,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     unsigned int cssid, ssid, devid;
     char dev_path[PATH_MAX] = {0}, *tmp;
@@ -62,7 +62,8 @@ static void s390_ccw_get_dev_info(S390CCWDevice *cdev,
     cdev->hostid.valid = true;
 }
 
-static void s390_ccw_realize(S390CCWDevice *cdev, char *sysfsdev, Error **errp)
+static void s390_ccw_realize(S390CCWDevice *cdev, char *sysfsdev,
+                             Error *errp[static 1])
 {
     CcwDevice *ccw_dev = CCW_DEVICE(cdev);
     CCWDeviceClass *ck = CCW_DEVICE_GET_CLASS(ccw_dev);
@@ -112,7 +113,7 @@ out_err_propagate:
     error_propagate(errp, err);
 }
 
-static void s390_ccw_unrealize(S390CCWDevice *cdev, Error **errp)
+static void s390_ccw_unrealize(S390CCWDevice *cdev, Error *errp[static 1])
 {
     CcwDevice *ccw_dev = CCW_DEVICE(cdev);
     SubchDev *sch = ccw_dev->sch;
diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c
index aa4d7f5aa4..644e51b11e 100644
--- a/hw/s390x/s390-pci-bus.c
+++ b/hw/s390x/s390-pci-bus.c
@@ -665,7 +665,7 @@ static bool s390_pci_alloc_idx(S390pciState *s, 
S390PCIBusDevice *pbdev)
 }
 
 static void s390_pcihost_hot_plug(HotplugHandler *hotplug_dev,
-                                  DeviceState *dev, Error **errp)
+                                  DeviceState *dev, Error *errp[static 1])
 {
     PCIDevice *pdev = NULL;
     S390PCIBusDevice *pbdev = NULL;
@@ -765,7 +765,7 @@ static void s390_pcihost_timer_cb(void *opaque)
 }
 
 static void s390_pcihost_hot_unplug(HotplugHandler *hotplug_dev,
-                                    DeviceState *dev, Error **errp)
+                                    DeviceState *dev, Error *errp[static 1])
 {
     PCIDevice *pci_dev = NULL;
     PCIBus *bus;
@@ -910,7 +910,7 @@ static uint16_t s390_pci_generate_uid(S390pciState *s)
     return UID_UNDEFINED;
 }
 
-static uint32_t s390_pci_generate_fid(S390pciState *s, Error **errp)
+static uint32_t s390_pci_generate_fid(S390pciState *s, Error *errp[static 1])
 {
     uint32_t fid = 0;
 
@@ -924,7 +924,7 @@ static uint32_t s390_pci_generate_fid(S390pciState *s, 
Error **errp)
     return 0;
 }
 
-static void s390_pci_device_realize(DeviceState *dev, Error **errp)
+static void s390_pci_device_realize(DeviceState *dev, Error *errp[static 1])
 {
     S390PCIBusDevice *zpci = S390_PCI_DEVICE(dev);
     S390pciState *s = s390_get_phb();
@@ -993,7 +993,7 @@ static void s390_pci_device_reset(DeviceState *dev)
 }
 
 static void s390_pci_get_fid(Object *obj, Visitor *v, const char *name,
-                         void *opaque, Error **errp)
+                         void *opaque, Error *errp[static 1])
 {
     Property *prop = opaque;
     uint32_t *ptr = qdev_get_prop_ptr(DEVICE(obj), prop);
@@ -1002,7 +1002,7 @@ static void s390_pci_get_fid(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void s390_pci_set_fid(Object *obj, Visitor *v, const char *name,
-                         void *opaque, Error **errp)
+                         void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     S390PCIBusDevice *zpci = S390_PCI_DEVICE(obj);
diff --git a/hw/s390x/s390-skeys.c b/hw/s390x/s390-skeys.c
index 251882a9dc..ad10b25e6f 100644
--- a/hw/s390x/s390-skeys.c
+++ b/hw/s390x/s390-skeys.c
@@ -48,7 +48,7 @@ void s390_skeys_init(void)
 }
 
 static void write_keys(FILE *f, uint8_t *keys, uint64_t startgfn,
-                       uint64_t count, Error **errp)
+                       uint64_t count, Error *errp[static 1])
 {
     uint64_t curpage = startgfn;
     uint64_t maxpage = curpage + count - 1;
@@ -101,7 +101,7 @@ void hmp_dump_skeys(Monitor *mon, const QDict *qdict)
     }
 }
 
-void qmp_dump_skeys(const char *filename, Error **errp)
+void qmp_dump_skeys(const char *filename, Error *errp[static 1])
 {
     S390SKeysState *ss = s390_get_skeys_device();
     S390SKeysClass *skeyclass = S390_SKEYS_GET_CLASS(ss);
@@ -356,7 +356,8 @@ static int s390_storage_keys_load(QEMUFile *f, void 
*opaque, int version_id)
     return ret;
 }
 
-static inline bool s390_skeys_get_migration_enabled(Object *obj, Error **errp)
+static inline bool s390_skeys_get_migration_enabled(Object *obj,
+                                                    Error *errp[static 1])
 {
     S390SKeysState *ss = S390_SKEYS(obj);
 
@@ -369,7 +370,7 @@ static SaveVMHandlers savevm_s390_storage_keys = {
 };
 
 static inline void s390_skeys_set_migration_enabled(Object *obj, bool value,
-                                            Error **errp)
+                                            Error *errp[static 1])
 {
     S390SKeysState *ss = S390_SKEYS(obj);
 
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index ae81723914..f82bf20533 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -160,7 +160,7 @@ static void ccw_init(MachineState *machine)
 }
 
 static void s390_cpu_plug(HotplugHandler *hotplug_dev,
-                        DeviceState *dev, Error **errp)
+                        DeviceState *dev, Error *errp[static 1])
 {
     gchar *name;
     S390CPU *cpu = S390_CPU(dev);
@@ -173,7 +173,7 @@ static void s390_cpu_plug(HotplugHandler *hotplug_dev,
 }
 
 static void s390_machine_device_plug(HotplugHandler *hotplug_dev,
-                                     DeviceState *dev, Error **errp)
+                                     DeviceState *dev, Error *errp[static 1])
 {
     if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
         s390_cpu_plug(hotplug_dev, dev, errp);
@@ -189,7 +189,7 @@ static HotplugHandler 
*s390_get_hotplug_handler(MachineState *machine,
     return NULL;
 }
 
-static void s390_hot_add_cpu(const int64_t id, Error **errp)
+static void s390_hot_add_cpu(const int64_t id, Error *errp[static 1])
 {
     MachineState *machine = MACHINE(qdev_get_machine());
 
@@ -221,7 +221,8 @@ static void ccw_machine_class_init(ObjectClass *oc, void 
*data)
     nc->nmi_monitor_handler = s390_nmi;
 }
 
-static inline bool machine_get_aes_key_wrap(Object *obj, Error **errp)
+static inline bool machine_get_aes_key_wrap(Object *obj,
+                                            Error *errp[static 1])
 {
     S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
 
@@ -229,14 +230,15 @@ static inline bool machine_get_aes_key_wrap(Object *obj, 
Error **errp)
 }
 
 static inline void machine_set_aes_key_wrap(Object *obj, bool value,
-                                            Error **errp)
+                                            Error *errp[static 1])
 {
     S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
 
     ms->aes_key_wrap = value;
 }
 
-static inline bool machine_get_dea_key_wrap(Object *obj, Error **errp)
+static inline bool machine_get_dea_key_wrap(Object *obj,
+                                            Error *errp[static 1])
 {
     S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
 
@@ -244,7 +246,7 @@ static inline bool machine_get_dea_key_wrap(Object *obj, 
Error **errp)
 }
 
 static inline void machine_set_dea_key_wrap(Object *obj, bool value,
-                                            Error **errp)
+                                            Error *errp[static 1])
 {
     S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
 
@@ -283,14 +285,15 @@ bool cpu_model_allowed(void)
     return true;
 }
 
-static char *machine_get_loadparm(Object *obj, Error **errp)
+static char *machine_get_loadparm(Object *obj, Error *errp[static 1])
 {
     S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
 
     return g_memdup(ms->loadparm, sizeof(ms->loadparm));
 }
 
-static void machine_set_loadparm(Object *obj, const char *val, Error **errp)
+static void machine_set_loadparm(Object *obj, const char *val,
+                                 Error *errp[static 1])
 {
     S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
     int i;
@@ -312,7 +315,7 @@ static void machine_set_loadparm(Object *obj, const char 
*val, Error **errp)
         ms->loadparm[i] = ' '; /* pad right with spaces */
     }
 }
-static inline bool machine_get_squash_mcss(Object *obj, Error **errp)
+static inline bool machine_get_squash_mcss(Object *obj, Error *errp[static 1])
 {
     S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
 
@@ -320,7 +323,7 @@ static inline bool machine_get_squash_mcss(Object *obj, 
Error **errp)
 }
 
 static inline void machine_set_squash_mcss(Object *obj, bool value,
-                                           Error **errp)
+                                           Error *errp[static 1])
 {
     S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
 
diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c
index 79a1fa3b49..d861321d42 100644
--- a/hw/s390x/s390-virtio.c
+++ b/hw/s390x/s390-virtio.c
@@ -183,7 +183,7 @@ int gtod_load(QEMUFile *f, void *opaque, int version_id)
     return 0;
 }
 
-void s390_nmi(NMIState *n, int cpu_index, Error **errp)
+void s390_nmi(NMIState *n, int cpu_index, Error *errp[static 1])
 {
     CPUState *cs = qemu_get_cpu(cpu_index);
 
diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c
index 1bd6b568f4..a4d2952a85 100644
--- a/hw/s390x/sclp.c
+++ b/hw/s390x/sclp.c
@@ -483,7 +483,7 @@ void s390_sclp_init(void)
     qdev_init_nofail(DEVICE(new));
 }
 
-static void sclp_realize(DeviceState *dev, Error **errp)
+static void sclp_realize(DeviceState *dev, Error *errp[static 1])
 {
     MachineState *machine = MACHINE(qdev_get_machine());
     SCLPDevice *sclp = SCLP(dev);
diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
index 5cace901e0..772c1b759d 100644
--- a/hw/s390x/virtio-ccw.c
+++ b/hw/s390x/virtio-ccw.c
@@ -675,7 +675,8 @@ static void virtio_sch_disable_cb(SubchDev *sch)
     dev->revision = -1;
 }
 
-static void virtio_ccw_device_realize(VirtioCcwDevice *dev, Error **errp)
+static void virtio_ccw_device_realize(VirtioCcwDevice *dev,
+                                      Error *errp[static 1])
 {
     VirtIOCCWDeviceClass *k = VIRTIO_CCW_DEVICE_GET_CLASS(dev);
     CcwDevice *ccw_dev = CCW_DEVICE(dev);
@@ -752,7 +753,8 @@ static int virtio_ccw_exit(VirtioCcwDevice *dev)
     return 0;
 }
 
-static void virtio_ccw_net_realize(VirtioCcwDevice *ccw_dev, Error **errp)
+static void virtio_ccw_net_realize(VirtioCcwDevice *ccw_dev,
+                                   Error *errp[static 1])
 {
     DeviceState *qdev = DEVICE(ccw_dev);
     VirtIONetCcw *dev = VIRTIO_NET_CCW(ccw_dev);
@@ -774,7 +776,8 @@ static void virtio_ccw_net_instance_init(Object *obj)
                               "bootindex", &error_abort);
 }
 
-static void virtio_ccw_blk_realize(VirtioCcwDevice *ccw_dev, Error **errp)
+static void virtio_ccw_blk_realize(VirtioCcwDevice *ccw_dev,
+                                   Error *errp[static 1])
 {
     VirtIOBlkCcw *dev = VIRTIO_BLK_CCW(ccw_dev);
     DeviceState *vdev = DEVICE(&dev->vdev);
@@ -795,7 +798,8 @@ static void virtio_ccw_blk_instance_init(Object *obj)
                               "bootindex", &error_abort);
 }
 
-static void virtio_ccw_serial_realize(VirtioCcwDevice *ccw_dev, Error **errp)
+static void virtio_ccw_serial_realize(VirtioCcwDevice *ccw_dev,
+                                      Error *errp[static 1])
 {
     VirtioSerialCcw *dev = VIRTIO_SERIAL_CCW(ccw_dev);
     DeviceState *vdev = DEVICE(&dev->vdev);
@@ -825,7 +829,8 @@ static void virtio_ccw_serial_instance_init(Object *obj)
                                 TYPE_VIRTIO_SERIAL);
 }
 
-static void virtio_ccw_balloon_realize(VirtioCcwDevice *ccw_dev, Error **errp)
+static void virtio_ccw_balloon_realize(VirtioCcwDevice *ccw_dev,
+                                       Error *errp[static 1])
 {
     VirtIOBalloonCcw *dev = VIRTIO_BALLOON_CCW(ccw_dev);
     DeviceState *vdev = DEVICE(&dev->vdev);
@@ -847,7 +852,8 @@ static void virtio_ccw_balloon_instance_init(Object *obj)
                               "guest-stats-polling-interval", &error_abort);
 }
 
-static void virtio_ccw_scsi_realize(VirtioCcwDevice *ccw_dev, Error **errp)
+static void virtio_ccw_scsi_realize(VirtioCcwDevice *ccw_dev,
+                                    Error *errp[static 1])
 {
     VirtIOSCSICcw *dev = VIRTIO_SCSI_CCW(ccw_dev);
     DeviceState *vdev = DEVICE(&dev->vdev);
@@ -879,7 +885,8 @@ static void virtio_ccw_scsi_instance_init(Object *obj)
 }
 
 #ifdef CONFIG_VHOST_SCSI
-static void vhost_ccw_scsi_realize(VirtioCcwDevice *ccw_dev, Error **errp)
+static void vhost_ccw_scsi_realize(VirtioCcwDevice *ccw_dev,
+                                   Error *errp[static 1])
 {
     VHostSCSICcw *dev = VHOST_SCSI_CCW(ccw_dev);
     DeviceState *vdev = DEVICE(&dev->vdev);
@@ -897,7 +904,8 @@ static void vhost_ccw_scsi_instance_init(Object *obj)
 }
 #endif
 
-static void virtio_ccw_rng_realize(VirtioCcwDevice *ccw_dev, Error **errp)
+static void virtio_ccw_rng_realize(VirtioCcwDevice *ccw_dev,
+                                   Error *errp[static 1])
 {
     VirtIORNGCcw *dev = VIRTIO_RNG_CCW(ccw_dev);
     DeviceState *vdev = DEVICE(&dev->vdev);
@@ -913,7 +921,8 @@ static void virtio_ccw_rng_realize(VirtioCcwDevice 
*ccw_dev, Error **errp)
                              IGNORE_ERRORS);
 }
 
-static void virtio_ccw_crypto_realize(VirtioCcwDevice *ccw_dev, Error **errp)
+static void virtio_ccw_crypto_realize(VirtioCcwDevice *ccw_dev,
+                                      Error *errp[static 1])
 {
     VirtIOCryptoCcw *dev = VIRTIO_CRYPTO_CCW(ccw_dev);
     DeviceState *vdev = DEVICE(&dev->vdev);
@@ -1316,7 +1325,7 @@ static int virtio_ccw_load_config(DeviceState *d, 
QEMUFile *f)
     return 0;
 }
 
-static void virtio_ccw_pre_plugged(DeviceState *d, Error **errp)
+static void virtio_ccw_pre_plugged(DeviceState *d, Error *errp[static 1])
 {
    VirtioCcwDevice *dev = VIRTIO_CCW_DEVICE(d);
    VirtIODevice *vdev = virtio_bus_get_device(&dev->bus);
@@ -1327,7 +1336,7 @@ static void virtio_ccw_pre_plugged(DeviceState *d, Error 
**errp)
 }
 
 /* This is called by virtio-bus just after the device is plugged. */
-static void virtio_ccw_device_plugged(DeviceState *d, Error **errp)
+static void virtio_ccw_device_plugged(DeviceState *d, Error *errp[static 1])
 {
     VirtioCcwDevice *dev = VIRTIO_CCW_DEVICE(d);
     VirtIODevice *vdev = virtio_bus_get_device(&dev->bus);
@@ -1615,7 +1624,7 @@ static const TypeInfo virtio_ccw_crypto = {
     .class_init    = virtio_ccw_crypto_class_init,
 };
 
-static void virtio_ccw_busdev_realize(DeviceState *dev, Error **errp)
+static void virtio_ccw_busdev_realize(DeviceState *dev, Error *errp[static 1])
 {
     VirtioCcwDevice *_dev = (VirtioCcwDevice *)dev;
 
@@ -1632,7 +1641,7 @@ static int virtio_ccw_busdev_exit(DeviceState *dev)
 }
 
 static void virtio_ccw_busdev_unplug(HotplugHandler *hotplug_dev,
-                                     DeviceState *dev, Error **errp)
+                                     DeviceState *dev, Error *errp[static 1])
 {
     VirtioCcwDevice *_dev = to_virtio_ccw_dev_fast(dev);
 
@@ -1708,7 +1717,8 @@ static Property virtio_ccw_9p_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void virtio_ccw_9p_realize(VirtioCcwDevice *ccw_dev, Error **errp)
+static void virtio_ccw_9p_realize(VirtioCcwDevice *ccw_dev,
+                                  Error *errp[static 1])
 {
     V9fsCCWState *dev = VIRTIO_9P_CCW(ccw_dev);
     DeviceState *vdev = DEVICE(&dev->vdev);
@@ -1754,7 +1764,8 @@ static Property vhost_vsock_ccw_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void vhost_vsock_ccw_realize(VirtioCcwDevice *ccw_dev, Error **errp)
+static void vhost_vsock_ccw_realize(VirtioCcwDevice *ccw_dev,
+                                    Error *errp[static 1])
 {
     VHostVSockCCWState *dev = VHOST_VSOCK_CCW(ccw_dev);
     DeviceState *vdev = DEVICE(&dev->vdev);
diff --git a/hw/scsi/esp-pci.c b/hw/scsi/esp-pci.c
index 30f866d5a0..39cffa083b 100644
--- a/hw/scsi/esp-pci.c
+++ b/hw/scsi/esp-pci.c
@@ -344,7 +344,7 @@ static const struct SCSIBusInfo esp_pci_scsi_info = {
     .cancel = esp_request_cancelled,
 };
 
-static void esp_pci_scsi_realize(PCIDevice *dev, Error **errp)
+static void esp_pci_scsi_realize(PCIDevice *dev, Error *errp[static 1])
 {
     PCIESPState *pci = PCI_ESP(dev);
     DeviceState *d = DEVICE(dev);
@@ -459,7 +459,7 @@ static void dc390_write_config(PCIDevice *dev,
     }
 }
 
-static void dc390_scsi_realize(PCIDevice *dev, Error **errp)
+static void dc390_scsi_realize(PCIDevice *dev, Error *errp[static 1])
 {
     DC390State *pci = DC390(dev);
     uint8_t *contents;
diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c
index eee831efeb..1929a18abd 100644
--- a/hw/scsi/esp.c
+++ b/hw/scsi/esp.c
@@ -685,7 +685,7 @@ static void sysbus_esp_gpio_demux(void *opaque, int irq, 
int level)
     }
 }
 
-static void sysbus_esp_realize(DeviceState *dev, Error **errp)
+static void sysbus_esp_realize(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
     SysBusESPState *sysbus = ESP(dev);
diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
index 3e56ab267c..0612f4e80b 100644
--- a/hw/scsi/lsi53c895a.c
+++ b/hw/scsi/lsi53c895a.c
@@ -2186,7 +2186,7 @@ static const struct SCSIBusInfo lsi_scsi_info = {
     .cancel = lsi_request_cancelled
 };
 
-static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
+static void lsi_scsi_realize(PCIDevice *dev, Error *errp[static 1])
 {
     LSIState *s = LSI53C895A(dev);
     DeviceState *d = DEVICE(dev);
@@ -2216,7 +2216,7 @@ static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
     scsi_bus_new(&s->bus, sizeof(s->bus), d, &lsi_scsi_info, NULL);
 }
 
-static void lsi_scsi_unrealize(DeviceState *dev, Error **errp)
+static void lsi_scsi_unrealize(DeviceState *dev, Error *errp[static 1])
 {
     LSIState *s = LSI53C895A(dev);
 
diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c
index e5a3e20a69..ca45d98898 100644
--- a/hw/scsi/megasas.c
+++ b/hw/scsi/megasas.c
@@ -2323,7 +2323,7 @@ static const struct SCSIBusInfo megasas_scsi_info = {
     .cancel = megasas_command_cancelled,
 };
 
-static void megasas_scsi_realize(PCIDevice *dev, Error **errp)
+static void megasas_scsi_realize(PCIDevice *dev, Error *errp[static 1])
 {
     MegasasState *s = MEGASAS(dev);
     MegasasBaseClass *b = MEGASAS_DEVICE_GET_CLASS(s);
diff --git a/hw/scsi/mptsas.c b/hw/scsi/mptsas.c
index 765ab53c34..c7bead1f6e 100644
--- a/hw/scsi/mptsas.c
+++ b/hw/scsi/mptsas.c
@@ -1269,7 +1269,7 @@ static const struct SCSIBusInfo mptsas_scsi_info = {
     .load_request = mptsas_load_request,
 };
 
-static void mptsas_scsi_realize(PCIDevice *dev, Error **errp)
+static void mptsas_scsi_realize(PCIDevice *dev, Error *errp[static 1])
 {
     MPTSASState *s = MPT_SAS(dev);
     Error *err = NULL;
diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c
index bb9f5628db..43deaf6c12 100644
--- a/hw/scsi/scsi-bus.c
+++ b/hw/scsi/scsi-bus.c
@@ -46,7 +46,7 @@ static const TypeInfo scsi_bus_info = {
 };
 static int next_scsi_bus;
 
-static void scsi_device_realize(SCSIDevice *s, Error **errp)
+static void scsi_device_realize(SCSIDevice *s, Error *errp[static 1])
 {
     SCSIDeviceClass *sc = SCSI_DEVICE_GET_CLASS(s);
     if (sc->realize) {
@@ -147,7 +147,7 @@ static void scsi_dma_restart_cb(void *opaque, int running, 
RunState state)
     }
 }
 
-static void scsi_qdev_realize(DeviceState *qdev, Error **errp)
+static void scsi_qdev_realize(DeviceState *qdev, Error *errp[static 1])
 {
     SCSIDevice *dev = SCSI_DEVICE(qdev);
     SCSIBus *bus = DO_UPCAST(SCSIBus, qbus, dev->qdev.parent_bus);
@@ -207,7 +207,7 @@ static void scsi_qdev_realize(DeviceState *qdev, Error 
**errp)
                                                      dev);
 }
 
-static void scsi_qdev_unrealize(DeviceState *qdev, Error **errp)
+static void scsi_qdev_unrealize(DeviceState *qdev, Error *errp[static 1])
 {
     SCSIDevice *dev = SCSI_DEVICE(qdev);
 
@@ -222,7 +222,8 @@ static void scsi_qdev_unrealize(DeviceState *qdev, Error 
**errp)
 /* handle legacy '-drive if=scsi,...' cmd line args */
 SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, BlockBackend *blk,
                                       int unit, bool removable, int bootindex,
-                                      const char *serial, Error **errp)
+                                      const char *serial,
+                                      Error *errp[static 1])
 {
     const char *driver;
     char *name;
diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c
index d5c984504b..512f93bad0 100644
--- a/hw/scsi/scsi-disk.c
+++ b/hw/scsi/scsi-disk.c
@@ -2240,7 +2240,8 @@ static void scsi_disk_resize_cb(void *opaque)
     }
 }
 
-static void scsi_cd_change_media_cb(void *opaque, bool load, Error **errp)
+static void scsi_cd_change_media_cb(void *opaque, bool load,
+                                    Error *errp[static 1])
 {
     SCSIDiskState *s = opaque;
 
@@ -2303,7 +2304,7 @@ static void scsi_disk_unit_attention_reported(SCSIDevice 
*dev)
     }
 }
 
-static void scsi_realize(SCSIDevice *dev, Error **errp)
+static void scsi_realize(SCSIDevice *dev, Error *errp[static 1])
 {
     SCSIDiskState *s = DO_UPCAST(SCSIDiskState, qdev, dev);
 
@@ -2361,7 +2362,7 @@ static void scsi_realize(SCSIDevice *dev, Error **errp)
     blk_iostatus_enable(s->qdev.conf.blk);
 }
 
-static void scsi_hd_realize(SCSIDevice *dev, Error **errp)
+static void scsi_hd_realize(SCSIDevice *dev, Error *errp[static 1])
 {
     SCSIDiskState *s = DO_UPCAST(SCSIDiskState, qdev, dev);
     /* can happen for devices without drive. The error message for missing
@@ -2378,7 +2379,7 @@ static void scsi_hd_realize(SCSIDevice *dev, Error **errp)
     scsi_realize(&s->qdev, errp);
 }
 
-static void scsi_cd_realize(SCSIDevice *dev, Error **errp)
+static void scsi_cd_realize(SCSIDevice *dev, Error *errp[static 1])
 {
     SCSIDiskState *s = DO_UPCAST(SCSIDiskState, qdev, dev);
 
@@ -2395,7 +2396,7 @@ static void scsi_cd_realize(SCSIDevice *dev, Error **errp)
     scsi_realize(&s->qdev, errp);
 }
 
-static void scsi_disk_realize(SCSIDevice *dev, Error **errp)
+static void scsi_disk_realize(SCSIDevice *dev, Error *errp[static 1])
 {
     DriveInfo *dinfo;
     Error *local_err = NULL;
@@ -2540,7 +2541,7 @@ static int get_device_type(SCSIDiskState *s)
     return 0;
 }
 
-static void scsi_block_realize(SCSIDevice *dev, Error **errp)
+static void scsi_block_realize(SCSIDevice *dev, Error *errp[static 1])
 {
     SCSIDiskState *s = DO_UPCAST(SCSIDiskState, qdev, dev);
     int sg_version;
diff --git a/hw/scsi/scsi-generic.c b/hw/scsi/scsi-generic.c
index a55ff87c22..1957f5810c 100644
--- a/hw/scsi/scsi-generic.c
+++ b/hw/scsi/scsi-generic.c
@@ -511,7 +511,7 @@ static void scsi_generic_reset(DeviceState *dev)
     scsi_device_purge_requests(s, SENSE_CODE(RESET));
 }
 
-static void scsi_generic_realize(SCSIDevice *s, Error **errp)
+static void scsi_generic_realize(SCSIDevice *s, Error *errp[static 1])
 {
     int rc;
     int sg_version;
diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c
index 55ee48c4da..a94edb0efc 100644
--- a/hw/scsi/spapr_vscsi.c
+++ b/hw/scsi/spapr_vscsi.c
@@ -1198,7 +1198,7 @@ static void spapr_vscsi_reset(VIOsPAPRDevice *dev)
     }
 }
 
-static void spapr_vscsi_realize(VIOsPAPRDevice *dev, Error **errp)
+static void spapr_vscsi_realize(VIOsPAPRDevice *dev, Error *errp[static 1])
 {
     VSCSIState *s = VIO_SPAPR_VSCSI_DEVICE(dev);
 
diff --git a/hw/scsi/vhost-scsi-common.c b/hw/scsi/vhost-scsi-common.c
index e41c0314db..ddadc775c2 100644
--- a/hw/scsi/vhost-scsi-common.c
+++ b/hw/scsi/vhost-scsi-common.c
@@ -95,7 +95,7 @@ void vhost_scsi_common_stop(VHostSCSICommon *vsc)
 }
 
 uint64_t vhost_scsi_common_get_features(VirtIODevice *vdev, uint64_t features,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     VHostSCSICommon *vsc = VHOST_SCSI_COMMON(vdev);
 
diff --git a/hw/scsi/vhost-scsi.c b/hw/scsi/vhost-scsi.c
index dea479b7ba..32098da6d4 100644
--- a/hw/scsi/vhost-scsi.c
+++ b/hw/scsi/vhost-scsi.c
@@ -135,7 +135,7 @@ static void vhost_dummy_handle_output(VirtIODevice *vdev, 
VirtQueue *vq)
 {
 }
 
-static void vhost_scsi_realize(DeviceState *dev, Error **errp)
+static void vhost_scsi_realize(DeviceState *dev, Error *errp[static 1])
 {
     VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(dev);
     VHostSCSICommon *vsc = VHOST_SCSI_COMMON(dev);
@@ -208,7 +208,7 @@ static void vhost_scsi_realize(DeviceState *dev, Error 
**errp)
     return;
 }
 
-static void vhost_scsi_unrealize(DeviceState *dev, Error **errp)
+static void vhost_scsi_unrealize(DeviceState *dev, Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VHostSCSICommon *vsc = VHOST_SCSI_COMMON(dev);
diff --git a/hw/scsi/virtio-scsi-dataplane.c b/hw/scsi/virtio-scsi-dataplane.c
index 944ea4eb53..7519dae4e9 100644
--- a/hw/scsi/virtio-scsi-dataplane.c
+++ b/hw/scsi/virtio-scsi-dataplane.c
@@ -22,7 +22,7 @@
 #include "hw/virtio/virtio-access.h"
 
 /* Context: QEMU global mutex held */
-void virtio_scsi_dataplane_setup(VirtIOSCSI *s, Error **errp)
+void virtio_scsi_dataplane_setup(VirtIOSCSI *s, Error *errp[static 1])
 {
     VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(s);
     VirtIODevice *vdev = VIRTIO_DEVICE(s);
diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c
index a253b5df59..098c660d6d 100644
--- a/hw/scsi/virtio-scsi.c
+++ b/hw/scsi/virtio-scsi.c
@@ -673,7 +673,7 @@ static void virtio_scsi_set_config(VirtIODevice *vdev,
 
 static uint64_t virtio_scsi_get_features(VirtIODevice *vdev,
                                          uint64_t requested_features,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     VirtIOSCSI *s = VIRTIO_SCSI(vdev);
 
@@ -783,7 +783,7 @@ static void virtio_scsi_change(SCSIBus *bus, SCSIDevice 
*dev, SCSISense sense)
 }
 
 static void virtio_scsi_hotplug(HotplugHandler *hotplug_dev, DeviceState *dev,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(hotplug_dev);
     VirtIOSCSI *s = VIRTIO_SCSI(vdev);
@@ -809,7 +809,7 @@ static void virtio_scsi_hotplug(HotplugHandler 
*hotplug_dev, DeviceState *dev,
 }
 
 static void virtio_scsi_hotunplug(HotplugHandler *hotplug_dev, DeviceState 
*dev,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(hotplug_dev);
     VirtIOSCSI *s = VIRTIO_SCSI(vdev);
@@ -845,7 +845,7 @@ void virtio_scsi_common_realize(DeviceState *dev,
                                 VirtIOHandleOutput ctrl,
                                 VirtIOHandleOutput evt,
                                 VirtIOHandleOutput cmd,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VirtIOSCSICommon *s = VIRTIO_SCSI_COMMON(dev);
@@ -873,7 +873,8 @@ void virtio_scsi_common_realize(DeviceState *dev,
     }
 }
 
-static void virtio_scsi_device_realize(DeviceState *dev, Error **errp)
+static void virtio_scsi_device_realize(DeviceState *dev,
+                                       Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VirtIOSCSI *s = VIRTIO_SCSI(dev);
@@ -905,7 +906,7 @@ static void virtio_scsi_instance_init(Object *obj)
                              OBJ_PROP_LINK_UNREF_ON_RELEASE, &error_abort);
 }
 
-void virtio_scsi_common_unrealize(DeviceState *dev, Error **errp)
+void virtio_scsi_common_unrealize(DeviceState *dev, Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(dev);
@@ -914,7 +915,8 @@ void virtio_scsi_common_unrealize(DeviceState *dev, Error 
**errp)
     virtio_cleanup(vdev);
 }
 
-static void virtio_scsi_device_unrealize(DeviceState *dev, Error **errp)
+static void virtio_scsi_device_unrealize(DeviceState *dev,
+                                         Error *errp[static 1])
 {
     VirtIOSCSI *s = VIRTIO_SCSI(dev);
 
diff --git a/hw/scsi/vmw_pvscsi.c b/hw/scsi/vmw_pvscsi.c
index e5133595dc..edb2ea975c 100644
--- a/hw/scsi/vmw_pvscsi.c
+++ b/hw/scsi/vmw_pvscsi.c
@@ -560,7 +560,8 @@ pvscsi_send_msg(PVSCSIState *s, SCSIDevice *dev, uint32_t 
msg_type)
 }
 
 static void
-pvscsi_hotplug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp)
+pvscsi_hotplug(HotplugHandler *hotplug_dev, DeviceState *dev,
+               Error *errp[static 1])
 {
     PVSCSIState *s = PVSCSI(hotplug_dev);
 
@@ -568,7 +569,8 @@ pvscsi_hotplug(HotplugHandler *hotplug_dev, DeviceState 
*dev, Error **errp)
 }
 
 static void
-pvscsi_hot_unplug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp)
+pvscsi_hot_unplug(HotplugHandler *hotplug_dev, DeviceState *dev,
+                  Error *errp[static 1])
 {
     PVSCSIState *s = PVSCSI(hotplug_dev);
 
@@ -1262,7 +1264,7 @@ static Property pvscsi_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void pvscsi_realize(DeviceState *qdev, Error **errp)
+static void pvscsi_realize(DeviceState *qdev, Error *errp[static 1])
 {
     PVSCSIClass *pvs_c = PVSCSI_DEVICE_GET_CLASS(qdev);
     PCIDevice *pci_dev = PCI_DEVICE(qdev);
diff --git a/hw/sd/pl181.c b/hw/sd/pl181.c
index 55c8098ecd..d310360bed 100644
--- a/hw/sd/pl181.c
+++ b/hw/sd/pl181.c
@@ -495,7 +495,7 @@ static void pl181_init(Object *obj)
     qdev_init_gpio_out(dev, s->cardstatus, 2);
 }
 
-static void pl181_realize(DeviceState *dev, Error **errp)
+static void pl181_realize(DeviceState *dev, Error *errp[static 1])
 {
     PL181State *s = PL181(dev);
     DriveInfo *dinfo;
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index ba47bff4db..f9c696d177 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -458,7 +458,7 @@ static bool sd_get_readonly(SDState *sd)
     return sd->wp_switch;
 }
 
-static void sd_cardchange(void *opaque, bool load, Error **errp)
+static void sd_cardchange(void *opaque, bool load, Error *errp[static 1])
 {
     SDState *sd = opaque;
     DeviceState *dev = DEVICE(sd);
@@ -1884,7 +1884,7 @@ static void sd_instance_finalize(Object *obj)
     timer_free(sd->ocr_power_timer);
 }
 
-static void sd_realize(DeviceState *dev, Error **errp)
+static void sd_realize(DeviceState *dev, Error *errp[static 1])
 {
     SDState *sd = SD_CARD(dev);
     int ret;
diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c
index 6d6a791ee9..b75fe59795 100644
--- a/hw/sd/sdhci.c
+++ b/hw/sd/sdhci.c
@@ -1274,7 +1274,7 @@ static Property sdhci_pci_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void sdhci_pci_realize(PCIDevice *dev, Error **errp)
+static void sdhci_pci_realize(PCIDevice *dev, Error *errp[static 1])
 {
     SDHCIState *s = PCI_SDHCI(dev);
     dev->config[PCI_CLASS_PROG] = 0x01; /* Standard Host supported DMA */
@@ -1339,7 +1339,7 @@ static void sdhci_sysbus_finalize(Object *obj)
     sdhci_uninitfn(s);
 }
 
-static void sdhci_sysbus_realize(DeviceState *dev, Error ** errp)
+static void sdhci_sysbus_realize(DeviceState *dev, Error *errp[static 1])
 {
     SDHCIState *s = SYSBUS_SDHCI(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
diff --git a/hw/sd/ssi-sd.c b/hw/sd/ssi-sd.c
index 24001dc3e6..3aa128c860 100644
--- a/hw/sd/ssi-sd.c
+++ b/hw/sd/ssi-sd.c
@@ -236,7 +236,7 @@ static const VMStateDescription vmstate_ssi_sd = {
     }
 };
 
-static void ssi_sd_realize(SSISlave *d, Error **errp)
+static void ssi_sd_realize(SSISlave *d, Error *errp[static 1])
 {
     ssi_sd_state *s = FROM_SSI_SLAVE(ssi_sd_state, d);
     DriveInfo *dinfo;
diff --git a/hw/sh4/sh_pci.c b/hw/sh4/sh_pci.c
index 38395c082b..5b01fcabbf 100644
--- a/hw/sh4/sh_pci.c
+++ b/hw/sh4/sh_pci.c
@@ -152,7 +152,7 @@ static int sh_pci_device_init(SysBusDevice *dev)
     return 0;
 }
 
-static void sh_pci_host_realize(PCIDevice *d, Error **errp)
+static void sh_pci_host_realize(PCIDevice *d, Error *errp[static 1])
 {
     pci_set_word(d->config + PCI_COMMAND, PCI_COMMAND_WAIT);
     pci_set_word(d->config + PCI_STATUS, PCI_STATUS_CAP_LIST |
diff --git a/hw/smbios/smbios-stub.c b/hw/smbios/smbios-stub.c
index 308739410f..1a88bd5aa0 100644
--- a/hw/smbios/smbios-stub.c
+++ b/hw/smbios/smbios-stub.c
@@ -25,7 +25,7 @@
 #include "qmp-commands.h"
 #include "hw/smbios/smbios.h"
 
-void smbios_entry_add(QemuOpts *opts, Error **errp)
+void smbios_entry_add(QemuOpts *opts, Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
 }
diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c
index 1a5437a07d..8cee645525 100644
--- a/hw/smbios/smbios.c
+++ b/hw/smbios/smbios.c
@@ -882,7 +882,7 @@ static void save_opt(const char **dest, QemuOpts *opts, 
const char *name)
     }
 }
 
-void smbios_entry_add(QemuOpts *opts, Error **errp)
+void smbios_entry_add(QemuOpts *opts, Error *errp[static 1])
 {
     const char *val;
 
diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
index 0faff4619f..cf433fae03 100644
--- a/hw/sparc/sun4m.c
+++ b/hw/sparc/sun4m.c
@@ -106,7 +106,7 @@ void DMA_init(ISABus *bus, int high_page_enable)
 }
 
 static void fw_cfg_boot_set(void *opaque, const char *boot_device,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     fw_cfg_modify_i16(opaque, FW_CFG_BOOT_DEVICE, boot_device[0]);
 }
@@ -735,7 +735,7 @@ typedef struct RamDevice {
 } RamDevice;
 
 /* System RAM */
-static void ram_realize(DeviceState *dev, Error **errp)
+static void ram_realize(DeviceState *dev, Error *errp[static 1])
 {
     RamDevice *d = SUN4M_RAM(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
index 69f565db25..171fed7dad 100644
--- a/hw/sparc64/sun4u.c
+++ b/hw/sparc64/sun4u.c
@@ -90,7 +90,7 @@ void DMA_init(ISABus *bus, int high_page_enable)
 }
 
 static void fw_cfg_boot_set(void *opaque, const char *boot_device,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     fw_cfg_modify_i16(opaque, FW_CFG_BOOT_DEVICE, boot_device[0]);
 }
@@ -237,7 +237,7 @@ pci_ebus_init(PCIBus *bus, int devfn, qemu_irq *irqs)
     return isa_bus;
 }
 
-static void pci_ebus_realize(PCIDevice *pci_dev, Error **errp)
+static void pci_ebus_realize(PCIDevice *pci_dev, Error *errp[static 1])
 {
     EbusState *s = DO_UPCAST(EbusState, pci_dev, pci_dev);
 
@@ -372,7 +372,7 @@ typedef struct RamDevice {
 } RamDevice;
 
 /* System RAM */
-static void ram_realize(DeviceState *dev, Error **errp)
+static void ram_realize(DeviceState *dev, Error *errp[static 1])
 {
     RamDevice *d = SUN4U_RAM(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c
index cb515730c5..03c7e45d11 100644
--- a/hw/ssi/aspeed_smc.c
+++ b/hw/ssi/aspeed_smc.c
@@ -710,7 +710,7 @@ static const MemoryRegionOps aspeed_smc_ops = {
     .valid.unaligned = true,
 };
 
-static void aspeed_smc_realize(DeviceState *dev, Error **errp)
+static void aspeed_smc_realize(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
     AspeedSMCState *s = ASPEED_SMC(dev);
diff --git a/hw/ssi/imx_spi.c b/hw/ssi/imx_spi.c
index b66505ca49..2f52d36d19 100644
--- a/hw/ssi/imx_spi.c
+++ b/hw/ssi/imx_spi.c
@@ -411,7 +411,7 @@ static const struct MemoryRegionOps imx_spi_ops = {
     },
 };
 
-static void imx_spi_realize(DeviceState *dev, Error **errp)
+static void imx_spi_realize(DeviceState *dev, Error *errp[static 1])
 {
     IMXSPIState *s = IMX_SPI(dev);
     int i;
diff --git a/hw/ssi/ssi.c b/hw/ssi/ssi.c
index 7eaaf565fd..58880fe4cf 100644
--- a/hw/ssi/ssi.c
+++ b/hw/ssi/ssi.c
@@ -54,7 +54,7 @@ static uint32_t ssi_transfer_raw_default(SSISlave *dev, 
uint32_t val)
     return 0;
 }
 
-static void ssi_slave_realize(DeviceState *dev, Error **errp)
+static void ssi_slave_realize(DeviceState *dev, Error *errp[static 1])
 {
     SSISlave *s = SSI_SLAVE(dev);
     SSISlaveClass *ssc = SSI_SLAVE_GET_CLASS(s);
diff --git a/hw/ssi/xilinx_spips.c b/hw/ssi/xilinx_spips.c
index da8adfa443..3a0d23ab09 100644
--- a/hw/ssi/xilinx_spips.c
+++ b/hw/ssi/xilinx_spips.c
@@ -602,7 +602,7 @@ static const MemoryRegionOps lqspi_ops = {
     }
 };
 
-static void xilinx_spips_realize(DeviceState *dev, Error **errp)
+static void xilinx_spips_realize(DeviceState *dev, Error *errp[static 1])
 {
     XilinxSPIPS *s = XILINX_SPIPS(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
@@ -639,7 +639,7 @@ static void xilinx_spips_realize(DeviceState *dev, Error 
**errp)
     fifo8_create(&s->tx_fifo, xsc->tx_fifo_size);
 }
 
-static void xilinx_qspips_realize(DeviceState *dev, Error **errp)
+static void xilinx_qspips_realize(DeviceState *dev, Error *errp[static 1])
 {
     XilinxSPIPS *s = XILINX_SPIPS(dev);
     XilinxQSPIPS *q = XILINX_QSPIPS(dev);
diff --git a/hw/timer/a9gtimer.c b/hw/timer/a9gtimer.c
index ce1dc63911..e2060deec5 100644
--- a/hw/timer/a9gtimer.c
+++ b/hw/timer/a9gtimer.c
@@ -285,7 +285,7 @@ static void a9_gtimer_reset(DeviceState *dev)
     a9_gtimer_update(s, false);
 }
 
-static void a9_gtimer_realize(DeviceState *dev, Error **errp)
+static void a9_gtimer_realize(DeviceState *dev, Error *errp[static 1])
 {
     A9GTimerState *s = A9_GTIMER(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
diff --git a/hw/timer/altera_timer.c b/hw/timer/altera_timer.c
index c9a0fc5dca..2c6ba35eca 100644
--- a/hw/timer/altera_timer.c
+++ b/hw/timer/altera_timer.c
@@ -171,7 +171,7 @@ static void timer_hit(void *opaque)
     qemu_set_irq(t->irq, timer_irq_state(t));
 }
 
-static void altera_timer_realize(DeviceState *dev, Error **errp)
+static void altera_timer_realize(DeviceState *dev, Error *errp[static 1])
 {
     AlteraTimer *t = ALTERA_TIMER(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
diff --git a/hw/timer/arm_mptimer.c b/hw/timer/arm_mptimer.c
index daf6c48797..ff1a38d992 100644
--- a/hw/timer/arm_mptimer.c
+++ b/hw/timer/arm_mptimer.c
@@ -232,7 +232,7 @@ static void arm_mptimer_init(Object *obj)
     sysbus_init_mmio(SYS_BUS_DEVICE(obj), &s->iomem);
 }
 
-static void arm_mptimer_realize(DeviceState *dev, Error **errp)
+static void arm_mptimer_realize(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
     ARMMPTimerState *s = ARM_MPTIMER(dev);
diff --git a/hw/timer/arm_timer.c b/hw/timer/arm_timer.c
index 98fddd7ac1..58420067ab 100644
--- a/hw/timer/arm_timer.c
+++ b/hw/timer/arm_timer.c
@@ -289,7 +289,7 @@ static void sp804_init(Object *obj)
     sysbus_init_mmio(sbd, &s->iomem);
 }
 
-static void sp804_realize(DeviceState *dev, Error **errp)
+static void sp804_realize(DeviceState *dev, Error *errp[static 1])
 {
     SP804State *s = SP804(dev);
 
diff --git a/hw/timer/aspeed_timer.c b/hw/timer/aspeed_timer.c
index 9b70ee09b0..e3006dfbf3 100644
--- a/hw/timer/aspeed_timer.c
+++ b/hw/timer/aspeed_timer.c
@@ -423,7 +423,7 @@ static void aspeed_init_one_timer(AspeedTimerCtrlState *s, 
uint8_t id)
     timer_init_ns(&t->timer, QEMU_CLOCK_VIRTUAL, aspeed_timer_expire, t);
 }
 
-static void aspeed_timer_realize(DeviceState *dev, Error **errp)
+static void aspeed_timer_realize(DeviceState *dev, Error *errp[static 1])
 {
     int i;
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c
index a2c18b30c3..f8dc4ea3cf 100644
--- a/hw/timer/hpet.c
+++ b/hw/timer/hpet.c
@@ -709,7 +709,7 @@ static void hpet_init(Object *obj)
     sysbus_init_mmio(sbd, &s->iomem);
 }
 
-static void hpet_realize(DeviceState *dev, Error **errp)
+static void hpet_realize(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
     HPETState *s = HPET(dev);
diff --git a/hw/timer/i8254.c b/hw/timer/i8254.c
index 5e61ad50a8..10b8163d08 100644
--- a/hw/timer/i8254.c
+++ b/hw/timer/i8254.c
@@ -329,7 +329,7 @@ static void pit_post_load(PITCommonState *s)
     }
 }
 
-static void pit_realizefn(DeviceState *dev, Error **errp)
+static void pit_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     PITCommonState *pit = PIT_COMMON(dev);
     PITClass *pc = PIT_GET_CLASS(dev);
diff --git a/hw/timer/i8254_common.c b/hw/timer/i8254_common.c
index 976d5200f1..8bea8c2809 100644
--- a/hw/timer/i8254_common.c
+++ b/hw/timer/i8254_common.c
@@ -167,7 +167,7 @@ void pit_reset_common(PITCommonState *pit)
     }
 }
 
-static void pit_common_realize(DeviceState *dev, Error **errp)
+static void pit_common_realize(DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *isadev = ISA_DEVICE(dev);
     PITCommonState *pit = PIT_COMMON(dev);
diff --git a/hw/timer/imx_epit.c b/hw/timer/imx_epit.c
index 8677b753b1..d1a6dc7725 100644
--- a/hw/timer/imx_epit.c
+++ b/hw/timer/imx_epit.c
@@ -301,7 +301,7 @@ static const VMStateDescription vmstate_imx_timer_epit = {
     }
 };
 
-static void imx_epit_realize(DeviceState *dev, Error **errp)
+static void imx_epit_realize(DeviceState *dev, Error *errp[static 1])
 {
     IMXEPITState *s = IMX_EPIT(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
diff --git a/hw/timer/imx_gpt.c b/hw/timer/imx_gpt.c
index 4b9b54bf2e..fa193fbc0a 100644
--- a/hw/timer/imx_gpt.c
+++ b/hw/timer/imx_gpt.c
@@ -466,7 +466,7 @@ static const MemoryRegionOps imx_gpt_ops = {
 };
 
 
-static void imx_gpt_realize(DeviceState *dev, Error **errp)
+static void imx_gpt_realize(DeviceState *dev, Error *errp[static 1])
 {
     IMXGPTState *s = IMX_GPT(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
diff --git a/hw/timer/lm32_timer.c b/hw/timer/lm32_timer.c
index 2a07b59524..d09a91161a 100644
--- a/hw/timer/lm32_timer.c
+++ b/hw/timer/lm32_timer.c
@@ -191,7 +191,7 @@ static void lm32_timer_init(Object *obj)
     sysbus_init_mmio(dev, &s->iomem);
 }
 
-static void lm32_timer_realize(DeviceState *dev, Error **errp)
+static void lm32_timer_realize(DeviceState *dev, Error *errp[static 1])
 {
     LM32TimerState *s = LM32_TIMER(dev);
 
diff --git a/hw/timer/m48t59-isa.c b/hw/timer/m48t59-isa.c
index ea1ba703d7..1c8e737514 100644
--- a/hw/timer/m48t59-isa.c
+++ b/hw/timer/m48t59-isa.c
@@ -110,7 +110,7 @@ static void m48t59_reset_isa(DeviceState *d)
     m48t59_reset_common(NVRAM);
 }
 
-static void m48t59_isa_realize(DeviceState *dev, Error **errp)
+static void m48t59_isa_realize(DeviceState *dev, Error *errp[static 1])
 {
     M48txxISADeviceClass *u = M48TXX_ISA_GET_CLASS(dev);
     ISADevice *isadev = ISA_DEVICE(dev);
diff --git a/hw/timer/m48t59.c b/hw/timer/m48t59.c
index 844aad540e..a0bed45551 100644
--- a/hw/timer/m48t59.c
+++ b/hw/timer/m48t59.c
@@ -632,7 +632,7 @@ Nvram *m48t59_init(qemu_irq IRQ, hwaddr mem_base,
     return NULL;
 }
 
-void m48t59_realize_common(M48t59State *s, Error **errp)
+void m48t59_realize_common(M48t59State *s, Error *errp[static 1])
 {
     s->buffer = g_malloc0(s->size);
     if (s->model == 59) {
@@ -658,7 +658,7 @@ static void m48t59_init1(Object *obj)
     memory_region_init_io(&d->io, obj, &m48t59_io_ops, s, "m48t59", 4);
 }
 
-static void m48t59_realize(DeviceState *dev, Error **errp)
+static void m48t59_realize(DeviceState *dev, Error *errp[static 1])
 {
     M48txxSysBusState *d = M48TXX_SYS_BUS(dev);
     M48t59State *s = &d->state;
diff --git a/hw/timer/mc146818rtc.c b/hw/timer/mc146818rtc.c
index b7b9e0f754..023f6e2877 100644
--- a/hw/timer/mc146818rtc.c
+++ b/hw/timer/mc146818rtc.c
@@ -130,7 +130,7 @@ static QLIST_HEAD(, RTCState) rtc_devices =
     QLIST_HEAD_INITIALIZER(rtc_devices);
 
 #ifdef TARGET_I386
-void qmp_rtc_reset_reinjection(Error **errp)
+void qmp_rtc_reset_reinjection(Error *errp[static 1])
 {
     RTCState *s;
 
@@ -925,7 +925,8 @@ static const MemoryRegionOps cmos_ops = {
     .endianness = DEVICE_LITTLE_ENDIAN,
 };
 
-static void rtc_get_date(Object *obj, struct tm *current_tm, Error **errp)
+static void rtc_get_date(Object *obj, struct tm *current_tm,
+                         Error *errp[static 1])
 {
     RTCState *s = MC146818_RTC(obj);
 
@@ -933,7 +934,7 @@ static void rtc_get_date(Object *obj, struct tm 
*current_tm, Error **errp)
     rtc_get_time(s, current_tm);
 }
 
-static void rtc_realizefn(DeviceState *dev, Error **errp)
+static void rtc_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     ISADevice *isadev = ISA_DEVICE(dev);
     RTCState *s = MC146818_RTC(dev);
diff --git a/hw/timer/milkymist-sysctl.c b/hw/timer/milkymist-sysctl.c
index 93bc6e1790..09ee22592d 100644
--- a/hw/timer/milkymist-sysctl.c
+++ b/hw/timer/milkymist-sysctl.c
@@ -289,7 +289,7 @@ static void milkymist_sysctl_init(Object *obj)
     sysbus_init_mmio(dev, &s->regs_region);
 }
 
-static void milkymist_sysctl_realize(DeviceState *dev, Error **errp)
+static void milkymist_sysctl_realize(DeviceState *dev, Error *errp[static 1])
 {
     MilkymistSysctlState *s = MILKYMIST_SYSCTL(dev);
 
diff --git a/hw/timer/pxa2xx_timer.c b/hw/timer/pxa2xx_timer.c
index 68ba5a70b3..fbbce15198 100644
--- a/hw/timer/pxa2xx_timer.c
+++ b/hw/timer/pxa2xx_timer.c
@@ -451,7 +451,7 @@ static void pxa2xx_timer_init(Object *obj)
     sysbus_init_mmio(dev, &s->iomem);
 }
 
-static void pxa2xx_timer_realize(DeviceState *dev, Error **errp)
+static void pxa2xx_timer_realize(DeviceState *dev, Error *errp[static 1])
 {
     PXA2xxTimerInfo *s = PXA2XX_TIMER(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
diff --git a/hw/timer/xilinx_timer.c b/hw/timer/xilinx_timer.c
index 59439c05be..696012db96 100644
--- a/hw/timer/xilinx_timer.c
+++ b/hw/timer/xilinx_timer.c
@@ -205,7 +205,7 @@ static void timer_hit(void *opaque)
     timer_update_irq(t);
 }
 
-static void xilinx_timer_realize(DeviceState *dev, Error **errp)
+static void xilinx_timer_realize(DeviceState *dev, Error *errp[static 1])
 {
     struct timerblock *t = XILINX_TIMER(dev);
     unsigned int i;
diff --git a/hw/tpm/tpm_tis.c b/hw/tpm/tpm_tis.c
index a6440fef91..e5d08b942c 100644
--- a/hw/tpm/tpm_tis.c
+++ b/hw/tpm/tpm_tis.c
@@ -1030,7 +1030,7 @@ static Property tpm_tis_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void tpm_tis_realizefn(DeviceState *dev, Error **errp)
+static void tpm_tis_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     TPMState *s = TPM(dev);
     TPMTISEmuState *tis = &s->s.tis;
diff --git a/hw/usb/bus.c b/hw/usb/bus.c
index 9c747821d2..75806177dd 100644
--- a/hw/usb/bus.c
+++ b/hw/usb/bus.c
@@ -13,7 +13,7 @@ static void usb_bus_dev_print(Monitor *mon, DeviceState 
*qdev, int indent);
 
 static char *usb_get_dev_path(DeviceState *dev);
 static char *usb_get_fw_dev_path(DeviceState *qdev);
-static void usb_qdev_unrealize(DeviceState *qdev, Error **errp);
+static void usb_qdev_unrealize(DeviceState *qdev, Error *errp[static 1]);
 
 static Property usb_props[] = {
     DEFINE_PROP_STRING("port", USBDevice, port_path),
@@ -117,7 +117,7 @@ USBBus *usb_bus_find(int busnr)
     return NULL;
 }
 
-static void usb_device_realize(USBDevice *dev, Error **errp)
+static void usb_device_realize(USBDevice *dev, Error *errp[static 1])
 {
     USBDeviceClass *klass = USB_DEVICE_GET_CLASS(dev);
 
@@ -135,7 +135,7 @@ USBDevice *usb_device_find_device(USBDevice *dev, uint8_t 
addr)
     return NULL;
 }
 
-static void usb_device_unrealize(USBDevice *dev, Error **errp)
+static void usb_device_unrealize(USBDevice *dev, Error *errp[static 1])
 {
     USBDeviceClass *klass = USB_DEVICE_GET_CLASS(dev);
 
@@ -243,7 +243,7 @@ void usb_device_free_streams(USBDevice *dev, USBEndpoint 
**eps, int nr_eps)
     }
 }
 
-static void usb_qdev_realize(DeviceState *qdev, Error **errp)
+static void usb_qdev_realize(DeviceState *qdev, Error *errp[static 1])
 {
     USBDevice *dev = USB_DEVICE(qdev);
 
@@ -273,7 +273,7 @@ static void usb_qdev_realize(DeviceState *qdev, Error 
**errp)
     }
 }
 
-static void usb_qdev_unrealize(DeviceState *qdev, Error **errp)
+static void usb_qdev_unrealize(DeviceState *qdev, Error *errp[static 1])
 {
     USBDevice *dev = USB_DEVICE(qdev);
     USBDescString *s, *next;
@@ -324,7 +324,7 @@ USBDevice *usb_create(USBBus *bus, const char *name)
 }
 
 static USBDevice *usb_try_create_simple(USBBus *bus, const char *name,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     USBDevice *dev;
 
@@ -369,7 +369,7 @@ void usb_register_port(USBBus *bus, USBPort *port, void 
*opaque, int index,
 void usb_register_companion(const char *masterbus, USBPort *ports[],
                             uint32_t portcount, uint32_t firstport,
                             void *opaque, USBPortOps *ops, int speedmask,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     USBBus *bus;
     int i;
@@ -419,7 +419,7 @@ void usb_unregister_port(USBBus *bus, USBPort *port)
     bus->nfree--;
 }
 
-void usb_claim_port(USBDevice *dev, Error **errp)
+void usb_claim_port(USBDevice *dev, Error *errp[static 1])
 {
     USBBus *bus = usb_bus_from_device(dev);
     USBPort *port;
@@ -501,7 +501,7 @@ static void usb_mask_to_str(char *dest, size_t size,
     }
 }
 
-void usb_check_attach(USBDevice *dev, Error **errp)
+void usb_check_attach(USBDevice *dev, Error *errp[static 1])
 {
     USBBus *bus = usb_bus_from_device(dev);
     USBPort *port = dev->port;
@@ -524,7 +524,7 @@ void usb_check_attach(USBDevice *dev, Error **errp)
     }
 }
 
-void usb_device_attach(USBDevice *dev, Error **errp)
+void usb_device_attach(USBDevice *dev, Error *errp[static 1])
 {
     USBPort *port = dev->port;
 
@@ -736,14 +736,14 @@ USBDevice *usbdevice_create(const char *cmdline)
     return dev;
 }
 
-static bool usb_get_attached(Object *obj, Error **errp)
+static bool usb_get_attached(Object *obj, Error *errp[static 1])
 {
     USBDevice *dev = USB_DEVICE(obj);
 
     return dev->attached;
 }
 
-static void usb_set_attached(Object *obj, bool value, Error **errp)
+static void usb_set_attached(Object *obj, bool value, Error *errp[static 1])
 {
     USBDevice *dev = USB_DEVICE(obj);
 
diff --git a/hw/usb/dev-audio.c b/hw/usb/dev-audio.c
index 343345235c..5b104a2781 100644
--- a/hw/usb/dev-audio.c
+++ b/hw/usb/dev-audio.c
@@ -617,7 +617,7 @@ static void usb_audio_handle_data(USBDevice *dev, USBPacket 
*p)
     }
 }
 
-static void usb_audio_unrealize(USBDevice *dev, Error **errp)
+static void usb_audio_unrealize(USBDevice *dev, Error *errp[static 1])
 {
     USBAudioState *s = USB_AUDIO(dev);
 
@@ -632,7 +632,7 @@ static void usb_audio_unrealize(USBDevice *dev, Error 
**errp)
     streambuf_fini(&s->out.buf);
 }
 
-static void usb_audio_realize(USBDevice *dev, Error **errp)
+static void usb_audio_realize(USBDevice *dev, Error *errp[static 1])
 {
     USBAudioState *s = USB_AUDIO(dev);
 
diff --git a/hw/usb/dev-bluetooth.c b/hw/usb/dev-bluetooth.c
index 443e3c301d..2591415b7d 100644
--- a/hw/usb/dev-bluetooth.c
+++ b/hw/usb/dev-bluetooth.c
@@ -496,7 +496,7 @@ static void usb_bt_out_hci_packet_acl(void *opaque,
     usb_bt_fifo_enqueue(&s->acl, data, len);
 }
 
-static void usb_bt_unrealize(USBDevice *dev, Error **errp)
+static void usb_bt_unrealize(USBDevice *dev, Error *errp[static 1])
 {
     struct USBBtState *s = (struct USBBtState *) dev->opaque;
 
@@ -505,7 +505,7 @@ static void usb_bt_unrealize(USBDevice *dev, Error **errp)
     s->hci->acl_recv = NULL;
 }
 
-static void usb_bt_realize(USBDevice *dev, Error **errp)
+static void usb_bt_realize(USBDevice *dev, Error *errp[static 1])
 {
     struct USBBtState *s = USB_BT(dev);
 
diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c
index 5b31791392..289b8a7f53 100644
--- a/hw/usb/dev-hid.c
+++ b/hw/usb/dev-hid.c
@@ -690,7 +690,7 @@ static void usb_hid_handle_data(USBDevice *dev, USBPacket 
*p)
     }
 }
 
-static void usb_hid_unrealize(USBDevice *dev, Error **errp)
+static void usb_hid_unrealize(USBDevice *dev, Error *errp[static 1])
 {
     USBHIDState *us = USB_HID(dev);
 
@@ -699,7 +699,7 @@ static void usb_hid_unrealize(USBDevice *dev, Error **errp)
 
 static void usb_hid_initfn(USBDevice *dev, int kind,
                            const USBDesc *usb1, const USBDesc *usb2,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     USBHIDState *us = USB_HID(dev);
     switch (us->usb_version) {
@@ -730,18 +730,18 @@ static void usb_hid_initfn(USBDevice *dev, int kind,
     }
 }
 
-static void usb_tablet_realize(USBDevice *dev, Error **errp)
+static void usb_tablet_realize(USBDevice *dev, Error *errp[static 1])
 {
 
     usb_hid_initfn(dev, HID_TABLET, &desc_tablet, &desc_tablet2, errp);
 }
 
-static void usb_mouse_realize(USBDevice *dev, Error **errp)
+static void usb_mouse_realize(USBDevice *dev, Error *errp[static 1])
 {
     usb_hid_initfn(dev, HID_MOUSE, &desc_mouse, &desc_mouse2, errp);
 }
 
-static void usb_keyboard_realize(USBDevice *dev, Error **errp)
+static void usb_keyboard_realize(USBDevice *dev, Error *errp[static 1])
 {
     usb_hid_initfn(dev, HID_KEYBOARD, &desc_keyboard, &desc_keyboard2, errp);
 }
diff --git a/hw/usb/dev-hub.c b/hw/usb/dev-hub.c
index e82a6a6c44..820d8a383a 100644
--- a/hw/usb/dev-hub.c
+++ b/hw/usb/dev-hub.c
@@ -511,7 +511,7 @@ static void usb_hub_handle_data(USBDevice *dev, USBPacket 
*p)
     }
 }
 
-static void usb_hub_unrealize(USBDevice *dev, Error **errp)
+static void usb_hub_unrealize(USBDevice *dev, Error *errp[static 1])
 {
     USBHubState *s = (USBHubState *)dev;
     int i;
@@ -530,7 +530,7 @@ static USBPortOps usb_hub_port_ops = {
     .complete = usb_hub_complete,
 };
 
-static void usb_hub_realize(USBDevice *dev, Error **errp)
+static void usb_hub_realize(USBDevice *dev, Error *errp[static 1])
 {
     USBHubState *s = USB_HUB(dev);
     USBHubPort *port;
diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c
index 94c2e94f10..f0dfa6fb8c 100644
--- a/hw/usb/dev-mtp.c
+++ b/hw/usb/dev-mtp.c
@@ -1529,7 +1529,7 @@ static void usb_mtp_handle_data(USBDevice *dev, USBPacket 
*p)
     }
 }
 
-static void usb_mtp_realize(USBDevice *dev, Error **errp)
+static void usb_mtp_realize(USBDevice *dev, Error *errp[static 1])
 {
     MTPState *s = USB_MTP(dev);
 
diff --git a/hw/usb/dev-network.c b/hw/usb/dev-network.c
index 4c2536ed8c..a1b5a04d97 100644
--- a/hw/usb/dev-network.c
+++ b/hw/usb/dev-network.c
@@ -1324,7 +1324,7 @@ static void usbnet_cleanup(NetClientState *nc)
     s->nic = NULL;
 }
 
-static void usb_net_unrealize(USBDevice *dev, Error **errp)
+static void usb_net_unrealize(USBDevice *dev, Error *errp[static 1])
 {
     USBNetState *s = (USBNetState *) dev;
 
@@ -1340,7 +1340,7 @@ static NetClientInfo net_usbnet_info = {
     .cleanup = usbnet_cleanup,
 };
 
-static void usb_net_realize(USBDevice *dev, Error **errrp)
+static void usb_net_realize(USBDevice *dev, Error *errrp[static 1])
 {
     USBNetState *s = USB_NET(dev);
 
diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c
index cc9dd8b533..890817ddba 100644
--- a/hw/usb/dev-serial.c
+++ b/hw/usb/dev-serial.c
@@ -480,7 +480,7 @@ static void usb_serial_event(void *opaque, int event)
     }
 }
 
-static void usb_serial_realize(USBDevice *dev, Error **errp)
+static void usb_serial_realize(USBDevice *dev, Error *errp[static 1])
 {
     USBSerialState *s = USB_SERIAL_DEV(dev);
     Chardev *chr = qemu_chr_fe_get_driver(&s->cs);
diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c
index 49cb1829b5..1ec84c3019 100644
--- a/hw/usb/dev-smartcard-reader.c
+++ b/hw/usb/dev-smartcard-reader.c
@@ -1166,7 +1166,7 @@ static void ccid_handle_data(USBDevice *dev, USBPacket *p)
     }
 }
 
-static void ccid_unrealize(USBDevice *dev, Error **errp)
+static void ccid_unrealize(USBDevice *dev, Error *errp[static 1])
 {
     USBCCIDState *s = USB_CCID_DEV(dev);
 
@@ -1329,7 +1329,7 @@ static int ccid_card_init(DeviceState *qdev)
     return ret;
 }
 
-static void ccid_realize(USBDevice *dev, Error **errp)
+static void ccid_realize(USBDevice *dev, Error *errp[static 1])
 {
     USBCCIDState *s = USB_CCID_DEV(dev);
 
diff --git a/hw/usb/dev-storage.c b/hw/usb/dev-storage.c
index b3173553c5..1d28cf05ef 100644
--- a/hw/usb/dev-storage.c
+++ b/hw/usb/dev-storage.c
@@ -589,14 +589,14 @@ static const struct SCSIBusInfo usb_msd_scsi_info_bot = {
     .load_request = usb_msd_load_request,
 };
 
-static void usb_msd_unrealize_storage(USBDevice *dev, Error **errp)
+static void usb_msd_unrealize_storage(USBDevice *dev, Error *errp[static 1])
 {
     MSDState *s = USB_STORAGE_DEV(dev);
 
     object_unref(OBJECT(&s->bus));
 }
 
-static void usb_msd_realize_storage(USBDevice *dev, Error **errp)
+static void usb_msd_realize_storage(USBDevice *dev, Error *errp[static 1])
 {
     MSDState *s = USB_STORAGE_DEV(dev);
     BlockBackend *blk = s->conf.blk;
@@ -646,14 +646,14 @@ static void usb_msd_realize_storage(USBDevice *dev, Error 
**errp)
     s->scsi_dev = scsi_dev;
 }
 
-static void usb_msd_unrealize_bot(USBDevice *dev, Error **errp)
+static void usb_msd_unrealize_bot(USBDevice *dev, Error *errp[static 1])
 {
     MSDState *s = USB_STORAGE_DEV(dev);
 
     object_unref(OBJECT(&s->bus));
 }
 
-static void usb_msd_realize_bot(USBDevice *dev, Error **errp)
+static void usb_msd_realize_bot(USBDevice *dev, Error *errp[static 1])
 {
     MSDState *s = USB_STORAGE_DEV(dev);
     DeviceState *d = DEVICE(dev);
@@ -778,7 +778,7 @@ static void usb_msd_class_initfn_storage(ObjectClass 
*klass, void *data)
 }
 
 static void usb_msd_get_bootindex(Object *obj, Visitor *v, const char *name,
-                                  void *opaque, Error **errp)
+                                  void *opaque, Error *errp[static 1])
 {
     USBDevice *dev = USB_DEVICE(obj);
     MSDState *s = USB_STORAGE_DEV(dev);
@@ -787,7 +787,7 @@ static void usb_msd_get_bootindex(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void usb_msd_set_bootindex(Object *obj, Visitor *v, const char *name,
-                                  void *opaque, Error **errp)
+                                  void *opaque, Error *errp[static 1])
 {
     USBDevice *dev = USB_DEVICE(obj);
     MSDState *s = USB_STORAGE_DEV(dev);
diff --git a/hw/usb/dev-uas.c b/hw/usb/dev-uas.c
index fffc424396..eb777c5953 100644
--- a/hw/usb/dev-uas.c
+++ b/hw/usb/dev-uas.c
@@ -891,7 +891,7 @@ static void usb_uas_handle_data(USBDevice *dev, USBPacket 
*p)
     }
 }
 
-static void usb_uas_unrealize(USBDevice *dev, Error **errp)
+static void usb_uas_unrealize(USBDevice *dev, Error *errp[static 1])
 {
     UASDevice *uas = USB_UAS(dev);
 
@@ -900,7 +900,7 @@ static void usb_uas_unrealize(USBDevice *dev, Error **errp)
     object_unref(OBJECT(&uas->bus));
 }
 
-static void usb_uas_realize(USBDevice *dev, Error **errp)
+static void usb_uas_realize(USBDevice *dev, Error *errp[static 1])
 {
     UASDevice *uas = USB_UAS(dev);
     DeviceState *d = DEVICE(dev);
diff --git a/hw/usb/dev-wacom.c b/hw/usb/dev-wacom.c
index bf70013059..efd3b155df 100644
--- a/hw/usb/dev-wacom.c
+++ b/hw/usb/dev-wacom.c
@@ -329,7 +329,7 @@ static void usb_wacom_handle_data(USBDevice *dev, USBPacket 
*p)
     }
 }
 
-static void usb_wacom_unrealize(USBDevice *dev, Error **errp)
+static void usb_wacom_unrealize(USBDevice *dev, Error *errp[static 1])
 {
     USBWacomState *s = (USBWacomState *) dev;
 
@@ -339,7 +339,7 @@ static void usb_wacom_unrealize(USBDevice *dev, Error 
**errp)
     }
 }
 
-static void usb_wacom_realize(USBDevice *dev, Error **errp)
+static void usb_wacom_realize(USBDevice *dev, Error *errp[static 1])
 {
     USBWacomState *s = USB_WACOM(dev);
     usb_desc_create_serial(dev);
diff --git a/hw/usb/hcd-ehci-pci.c b/hw/usb/hcd-ehci-pci.c
index 6a19b23ebe..bcb6cf4350 100644
--- a/hw/usb/hcd-ehci-pci.c
+++ b/hw/usb/hcd-ehci-pci.c
@@ -28,7 +28,7 @@ typedef struct EHCIPCIInfo {
     bool companion;
 } EHCIPCIInfo;
 
-static void usb_ehci_pci_realize(PCIDevice *dev, Error **errp)
+static void usb_ehci_pci_realize(PCIDevice *dev, Error *errp[static 1])
 {
     EHCIPCIState *i = PCI_EHCI(dev);
     EHCIState *s = &i->ehci;
diff --git a/hw/usb/hcd-ehci-sysbus.c b/hw/usb/hcd-ehci-sysbus.c
index 6c20604d07..7267915f1f 100644
--- a/hw/usb/hcd-ehci-sysbus.c
+++ b/hw/usb/hcd-ehci-sysbus.c
@@ -33,7 +33,7 @@ static Property ehci_sysbus_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void usb_ehci_sysbus_realize(DeviceState *dev, Error **errp)
+static void usb_ehci_sysbus_realize(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *d = SYS_BUS_DEVICE(dev);
     EHCISysBusState *i = SYS_BUS_EHCI(dev);
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
index 17c572c55f..689b536651 100644
--- a/hw/usb/hcd-ehci.c
+++ b/hw/usb/hcd-ehci.c
@@ -773,7 +773,7 @@ static void ehci_wakeup(USBPort *port)
 
 static void ehci_register_companion(USBBus *bus, USBPort *ports[],
                                     uint32_t portcount, uint32_t firstport,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     EHCIState *s = container_of(bus, EHCIState, bus);
     uint32_t i;
@@ -2467,7 +2467,7 @@ const VMStateDescription vmstate_ehci = {
     }
 };
 
-void usb_ehci_realize(EHCIState *s, DeviceState *dev, Error **errp)
+void usb_ehci_realize(EHCIState *s, DeviceState *dev, Error *errp[static 1])
 {
     int i;
 
@@ -2492,7 +2492,7 @@ void usb_ehci_realize(EHCIState *s, DeviceState *dev, 
Error **errp)
     s->vmstate = qemu_add_vm_change_state_handler(usb_ehci_vm_state_change, s);
 }
 
-void usb_ehci_unrealize(EHCIState *s, DeviceState *dev, Error **errp)
+void usb_ehci_unrealize(EHCIState *s, DeviceState *dev, Error *errp[static 1])
 {
     trace_usb_ehci_unrealize();
 
diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c
index 2c221d23be..d93087106c 100644
--- a/hw/usb/hcd-ohci.c
+++ b/hw/usb/hcd-ohci.c
@@ -1848,7 +1848,7 @@ static USBBusOps ohci_bus_ops = {
 static void usb_ohci_init(OHCIState *ohci, DeviceState *dev,
                           int num_ports, dma_addr_t localmem_base,
                           char *masterbus, uint32_t firstport,
-                          AddressSpace *as, Error **errp)
+                          AddressSpace *as, Error *errp[static 1])
 {
     int i;
 
@@ -1940,7 +1940,7 @@ static void ohci_die(OHCIState *ohci)
                  PCI_STATUS_DETECTED_PARITY);
 }
 
-static void usb_ohci_realize_pci(PCIDevice *dev, Error **errp)
+static void usb_ohci_realize_pci(PCIDevice *dev, Error *errp[static 1])
 {
     OHCIPCIState *ohci = PCI_OHCI(dev);
 
@@ -2002,7 +2002,7 @@ typedef struct {
     dma_addr_t dma_offset;
 } OHCISysBusState;
 
-static void ohci_realize_pxa(DeviceState *dev, Error **errp)
+static void ohci_realize_pxa(DeviceState *dev, Error *errp[static 1])
 {
     OHCISysBusState *s = SYSBUS_OHCI(dev);
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c
index b99a4d6429..82beb7ce6e 100644
--- a/hw/usb/hcd-uhci.c
+++ b/hw/usb/hcd-uhci.c
@@ -1206,7 +1206,7 @@ static USBPortOps uhci_port_ops = {
 static USBBusOps uhci_bus_ops = {
 };
 
-static void usb_uhci_common_realize(PCIDevice *dev, Error **errp)
+static void usb_uhci_common_realize(PCIDevice *dev, Error *errp[static 1])
 {
     PCIDeviceClass *pc = PCI_DEVICE_GET_CLASS(dev);
     UHCIPCIDeviceClass *u = container_of(pc, UHCIPCIDeviceClass, parent_class);
@@ -1252,7 +1252,7 @@ static void usb_uhci_common_realize(PCIDevice *dev, Error 
**errp)
     pci_register_bar(&s->dev, 4, PCI_BASE_ADDRESS_SPACE_IO, &s->io_bar);
 }
 
-static void usb_uhci_vt82c686b_realize(PCIDevice *dev, Error **errp)
+static void usb_uhci_vt82c686b_realize(PCIDevice *dev, Error *errp[static 1])
 {
     UHCIState *s = UHCI(dev);
     uint8_t *pci_conf = s->dev.config;
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index 05364b6955..b52743eca8 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -3330,7 +3330,7 @@ static void usb_xhci_init(XHCIState *xhci)
     }
 }
 
-static void usb_xhci_realize(struct PCIDevice *dev, Error **errp)
+static void usb_xhci_realize(struct PCIDevice *dev, Error *errp[static 1])
 {
     int i, ret;
     Error *err = NULL;
diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c
index c32ee8864c..ed6adfc620 100644
--- a/hw/usb/host-libusb.c
+++ b/hw/usb/host-libusb.c
@@ -1004,7 +1004,7 @@ static libusb_device *usb_host_find_ref(int bus, int addr)
     return ret;
 }
 
-static void usb_host_realize(USBDevice *udev, Error **errp)
+static void usb_host_realize(USBDevice *udev, Error *errp[static 1])
 {
     USBHostDevice *s = USB_HOST_DEVICE(udev);
     libusb_device *ldev;
@@ -1068,7 +1068,7 @@ static void usb_host_instance_init(Object *obj)
                                   &udev->qdev, IGNORE_ERRORS);
 }
 
-static void usb_host_unrealize(USBDevice *udev, Error **errp)
+static void usb_host_unrealize(USBDevice *udev, Error *errp[static 1])
 {
     USBHostDevice *s = USB_HOST_DEVICE(udev);
 
diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
index d50239e588..285145e170 100644
--- a/hw/usb/redirect.c
+++ b/hw/usb/redirect.c
@@ -1361,7 +1361,7 @@ static void usbredir_init_endpoints(USBRedirDevice *dev)
     }
 }
 
-static void usbredir_realize(USBDevice *udev, Error **errp)
+static void usbredir_realize(USBDevice *udev, Error *errp[static 1])
 {
     USBRedirDevice *dev = USB_REDIRECT(udev);
     int i;
@@ -1416,7 +1416,7 @@ static void usbredir_cleanup_device_queues(USBRedirDevice 
*dev)
     }
 }
 
-static void usbredir_unrealize(USBDevice *udev, Error **errp)
+static void usbredir_unrealize(USBDevice *udev, Error *errp[static 1])
 {
     USBRedirDevice *dev = USB_REDIRECT(udev);
 
diff --git a/hw/vfio/amd-xgbe.c b/hw/vfio/amd-xgbe.c
index fab196cebf..7fdfde4f5f 100644
--- a/hw/vfio/amd-xgbe.c
+++ b/hw/vfio/amd-xgbe.c
@@ -14,7 +14,7 @@
 #include "qemu/osdep.h"
 #include "hw/vfio/vfio-amd-xgbe.h"
 
-static void amd_xgbe_realize(DeviceState *dev, Error **errp)
+static void amd_xgbe_realize(DeviceState *dev, Error *errp[static 1])
 {
     VFIOPlatformDevice *vdev = VFIO_PLATFORM_DEVICE(dev);
     VFIOAmdXgbeDeviceClass *k = VFIO_AMD_XGBE_DEVICE_GET_CLASS(dev);
diff --git a/hw/vfio/calxeda-xgmac.c b/hw/vfio/calxeda-xgmac.c
index 7bb17af7ad..4f13b7ea26 100644
--- a/hw/vfio/calxeda-xgmac.c
+++ b/hw/vfio/calxeda-xgmac.c
@@ -14,7 +14,7 @@
 #include "qemu/osdep.h"
 #include "hw/vfio/vfio-calxeda-xgmac.h"
 
-static void calxeda_xgmac_realize(DeviceState *dev, Error **errp)
+static void calxeda_xgmac_realize(DeviceState *dev, Error *errp[static 1])
 {
     VFIOPlatformDevice *vdev = VFIO_PLATFORM_DEVICE(dev);
     VFIOCalxedaXgmacDeviceClass *k = VFIO_CALXEDA_XGMAC_DEVICE_GET_CLASS(dev);
diff --git a/hw/vfio/ccw.c b/hw/vfio/ccw.c
index d8dfbe321a..bd3929d354 100644
--- a/hw/vfio/ccw.c
+++ b/hw/vfio/ccw.c
@@ -154,7 +154,8 @@ read_err:
     css_inject_io_interrupt(sch);
 }
 
-static void vfio_ccw_register_io_notifier(VFIOCCWDevice *vcdev, Error **errp)
+static void vfio_ccw_register_io_notifier(VFIOCCWDevice *vcdev,
+                                          Error *errp[static 1])
 {
     VFIODevice *vdev = &vcdev->vdev;
     struct vfio_irq_info *irq_info;
@@ -236,7 +237,7 @@ static void vfio_ccw_unregister_io_notifier(VFIOCCWDevice 
*vcdev)
     g_free(irq_set);
 }
 
-static void vfio_ccw_get_region(VFIOCCWDevice *vcdev, Error **errp)
+static void vfio_ccw_get_region(VFIOCCWDevice *vcdev, Error *errp[static 1])
 {
     VFIODevice *vdev = &vcdev->vdev;
     struct vfio_region_info *info;
@@ -284,7 +285,8 @@ static void vfio_put_device(VFIOCCWDevice *vcdev)
     vfio_put_base_device(&vcdev->vdev);
 }
 
-static VFIOGroup *vfio_ccw_get_group(S390CCWDevice *cdev, Error **errp)
+static VFIOGroup *vfio_ccw_get_group(S390CCWDevice *cdev,
+                                     Error *errp[static 1])
 {
     char *tmp, group_path[PATH_MAX];
     ssize_t len;
@@ -311,7 +313,7 @@ static VFIOGroup *vfio_ccw_get_group(S390CCWDevice *cdev, 
Error **errp)
     return vfio_get_group(groupid, &address_space_memory, errp);
 }
 
-static void vfio_ccw_realize(DeviceState *dev, Error **errp)
+static void vfio_ccw_realize(DeviceState *dev, Error *errp[static 1])
 {
     VFIODevice *vbasedev;
     VFIOGroup *group;
@@ -376,7 +378,7 @@ out_err_propagate:
     error_propagate(errp, err);
 }
 
-static void vfio_ccw_unrealize(DeviceState *dev, Error **errp)
+static void vfio_ccw_unrealize(DeviceState *dev, Error *errp[static 1])
 {
     CcwDevice *ccw_dev = DO_UPCAST(CcwDevice, parent_obj, dev);
     S390CCWDevice *cdev = DO_UPCAST(S390CCWDevice, parent_obj, ccw_dev);
diff --git a/hw/vfio/common.c b/hw/vfio/common.c
index b9abe77f5a..5b80852786 100644
--- a/hw/vfio/common.c
+++ b/hw/vfio/common.c
@@ -953,7 +953,7 @@ static void vfio_put_address_space(VFIOAddressSpace *space)
 }
 
 static int vfio_connect_container(VFIOGroup *group, AddressSpace *as,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     VFIOContainer *container;
     int ret, fd;
@@ -1174,7 +1174,8 @@ static void vfio_disconnect_container(VFIOGroup *group)
     }
 }
 
-VFIOGroup *vfio_get_group(int groupid, AddressSpace *as, Error **errp)
+VFIOGroup *vfio_get_group(int groupid, AddressSpace *as,
+                          Error *errp[static 1])
 {
     VFIOGroup *group;
     char path[32];
@@ -1262,7 +1263,7 @@ void vfio_put_group(VFIOGroup *group)
 }
 
 int vfio_get_device(VFIOGroup *group, const char *name,
-                    VFIODevice *vbasedev, Error **errp)
+                    VFIODevice *vbasedev, Error *errp[static 1])
 {
     struct vfio_device_info dev_info = { .argsz = sizeof(dev_info) };
     int ret, fd;
diff --git a/hw/vfio/pci-quirks.c b/hw/vfio/pci-quirks.c
index 349085ea12..ed17a8f83c 100644
--- a/hw/vfio/pci-quirks.c
+++ b/hw/vfio/pci-quirks.c
@@ -1057,7 +1057,8 @@ typedef struct VFIOIGDQuirk {
  * of the IGD device.
  */
 int vfio_pci_igd_opregion_init(VFIOPCIDevice *vdev,
-                               struct vfio_region_info *info, Error **errp)
+                               struct vfio_region_info *info,
+                               Error *errp[static 1])
 {
     int ret;
 
@@ -1174,7 +1175,8 @@ static int vfio_pci_igd_host_init(VFIOPCIDevice *vdev,
  * to handle if the user has created it for us, which they might want to do
  * to enable multifunction so we don't occupy the whole PCI slot.
  */
-static void vfio_pci_igd_lpc_bridge_realize(PCIDevice *pdev, Error **errp)
+static void vfio_pci_igd_lpc_bridge_realize(PCIDevice *pdev,
+                                            Error *errp[static 1])
 {
     if (pdev->devfn != PCI_DEVFN(0x1f, 0)) {
         error_setg(errp, "VFIO dummy ISA/LPC bridge must have address 1f.0");
diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
index ae34f35a55..6a38239643 100644
--- a/hw/vfio/pci.c
+++ b/hw/vfio/pci.c
@@ -100,7 +100,7 @@ static void vfio_intx_eoi(VFIODevice *vbasedev)
     vfio_unmask_single_irqindex(vbasedev, VFIO_PCI_INTX_IRQ_INDEX);
 }
 
-static void vfio_intx_enable_kvm(VFIOPCIDevice *vdev, Error **errp)
+static void vfio_intx_enable_kvm(VFIOPCIDevice *vdev, Error *errp[static 1])
 {
 #ifdef CONFIG_KVM
     struct kvm_irqfd irqfd = {
@@ -254,7 +254,7 @@ static void vfio_intx_update(PCIDevice *pdev)
     vfio_intx_eoi(&vdev->vbasedev);
 }
 
-static int vfio_intx_enable(VFIOPCIDevice *vdev, Error **errp)
+static int vfio_intx_enable(VFIOPCIDevice *vdev, Error *errp[static 1])
 {
     uint8_t pin = vfio_pci_read_config(&vdev->pdev, PCI_INTERRUPT_PIN, 1);
     int ret, argsz;
@@ -1247,7 +1247,7 @@ static void vfio_disable_interrupts(VFIOPCIDevice *vdev)
     }
 }
 
-static int vfio_msi_setup(VFIOPCIDevice *vdev, int pos, Error **errp)
+static int vfio_msi_setup(VFIOPCIDevice *vdev, int pos, Error *errp[static 1])
 {
     uint16_t ctrl;
     bool msi_64bit, msi_maskbit;
@@ -1357,7 +1357,7 @@ static void vfio_pci_fixup_msix_region(VFIOPCIDevice 
*vdev)
  * need to first look for where the MSI-X table lives.  So we
  * unfortunately split MSI-X setup across two functions.
  */
-static void vfio_msix_early_setup(VFIOPCIDevice *vdev, Error **errp)
+static void vfio_msix_early_setup(VFIOPCIDevice *vdev, Error *errp[static 1])
 {
     uint8_t pos;
     uint16_t ctrl;
@@ -1429,7 +1429,8 @@ static void vfio_msix_early_setup(VFIOPCIDevice *vdev, 
Error **errp)
     vfio_pci_fixup_msix_region(vdev);
 }
 
-static int vfio_msix_setup(VFIOPCIDevice *vdev, int pos, Error **errp)
+static int vfio_msix_setup(VFIOPCIDevice *vdev, int pos,
+                           Error *errp[static 1])
 {
     int ret;
     Error *err = NULL;
@@ -1781,7 +1782,8 @@ static void vfio_check_af_flr(VFIOPCIDevice *vdev, 
uint8_t pos)
     }
 }
 
-static int vfio_add_std_cap(VFIOPCIDevice *vdev, uint8_t pos, Error **errp)
+static int vfio_add_std_cap(VFIOPCIDevice *vdev, uint8_t pos,
+                            Error *errp[static 1])
 {
     PCIDevice *pdev = &vdev->pdev;
     uint8_t cap_id, next, size;
@@ -1945,7 +1947,7 @@ static void vfio_add_ext_cap(VFIOPCIDevice *vdev)
     return;
 }
 
-static int vfio_add_capabilities(VFIOPCIDevice *vdev, Error **errp)
+static int vfio_add_capabilities(VFIOPCIDevice *vdev, Error *errp[static 1])
 {
     PCIDevice *pdev = &vdev->pdev;
     int ret;
@@ -2253,7 +2255,7 @@ static VFIODeviceOps vfio_pci_ops = {
     .vfio_eoi = vfio_intx_eoi,
 };
 
-int vfio_populate_vga(VFIOPCIDevice *vdev, Error **errp)
+int vfio_populate_vga(VFIOPCIDevice *vdev, Error *errp[static 1])
 {
     VFIODevice *vbasedev = &vdev->vbasedev;
     struct vfio_region_info *reg_info;
@@ -2321,7 +2323,7 @@ int vfio_populate_vga(VFIOPCIDevice *vdev, Error **errp)
     return 0;
 }
 
-static void vfio_populate_device(VFIOPCIDevice *vdev, Error **errp)
+static void vfio_populate_device(VFIOPCIDevice *vdev, Error *errp[static 1])
 {
     VFIODevice *vbasedev = &vdev->vbasedev;
     struct vfio_region_info *reg_info;
@@ -2609,7 +2611,7 @@ static void vfio_unregister_req_notifier(VFIOPCIDevice 
*vdev)
     vdev->req_enabled = false;
 }
 
-static void vfio_realize(PCIDevice *pdev, Error **errp)
+static void vfio_realize(PCIDevice *pdev, Error *errp[static 1])
 {
     VFIOPCIDevice *vdev = DO_UPCAST(VFIOPCIDevice, pdev, pdev);
     VFIODevice *vbasedev_iter;
diff --git a/hw/vfio/platform.c b/hw/vfio/platform.c
index a4663c918e..572111d558 100644
--- a/hw/vfio/platform.c
+++ b/hw/vfio/platform.c
@@ -47,7 +47,8 @@ static inline bool vfio_irq_is_automasked(VFIOINTp *intp)
  * @errp: error object
  */
 static VFIOINTp *vfio_init_intp(VFIODevice *vbasedev,
-                                struct vfio_irq_info info, Error **errp)
+                                struct vfio_irq_info info,
+                                Error *errp[static 1])
 {
     int ret;
     VFIOPlatformDevice *vdev =
@@ -462,7 +463,7 @@ static int vfio_platform_hot_reset_multi(VFIODevice 
*vbasedev)
  * @errp: error object
  *
  */
-static int vfio_populate_device(VFIODevice *vbasedev, Error **errp)
+static int vfio_populate_device(VFIODevice *vbasedev, Error *errp[static 1])
 {
     VFIOINTp *intp, *tmp;
     int i, ret = -1;
@@ -548,7 +549,7 @@ static VFIODeviceOps vfio_platform_ops = {
  * fd retrieval, resource query.
  * Precondition: the device name must be initialized
  */
-static int vfio_base_device_init(VFIODevice *vbasedev, Error **errp)
+static int vfio_base_device_init(VFIODevice *vbasedev, Error *errp[static 1])
 {
     VFIOGroup *group;
     VFIODevice *vbasedev_iter;
@@ -632,7 +633,7 @@ static int vfio_base_device_init(VFIODevice *vbasedev, 
Error **errp)
  * initialize the device, its memory regions and IRQ structures
  * IRQ are started separately
  */
-static void vfio_platform_realize(DeviceState *dev, Error **errp)
+static void vfio_platform_realize(DeviceState *dev, Error *errp[static 1])
 {
     VFIOPlatformDevice *vdev = VFIO_PLATFORM_DEVICE(dev);
     SysBusDevice *sbdev = SYS_BUS_DEVICE(dev);
diff --git a/hw/virtio/vhost-vsock.c b/hw/virtio/vhost-vsock.c
index 49e0022533..71af3b7b28 100644
--- a/hw/virtio/vhost-vsock.c
+++ b/hw/virtio/vhost-vsock.c
@@ -176,7 +176,7 @@ static void vhost_vsock_set_status(VirtIODevice *vdev, 
uint8_t status)
 
 static uint64_t vhost_vsock_get_features(VirtIODevice *vdev,
                                          uint64_t requested_features,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     /* No feature bits used yet */
     return requested_features;
@@ -294,7 +294,8 @@ static const VMStateDescription vmstate_virtio_vhost_vsock 
= {
     .post_load = vhost_vsock_post_load,
 };
 
-static void vhost_vsock_device_realize(DeviceState *dev, Error **errp)
+static void vhost_vsock_device_realize(DeviceState *dev,
+                                       Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VHostVSock *vsock = VHOST_VSOCK(dev);
@@ -364,7 +365,8 @@ err_virtio:
     return;
 }
 
-static void vhost_vsock_device_unrealize(DeviceState *dev, Error **errp)
+static void vhost_vsock_device_unrealize(DeviceState *dev,
+                                         Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VHostVSock *vsock = VHOST_VSOCK(dev);
diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c
index 09ac3b7d12..5015b4b083 100644
--- a/hw/virtio/virtio-balloon.c
+++ b/hw/virtio/virtio-balloon.c
@@ -111,7 +111,7 @@ static void balloon_stats_poll_cb(void *opaque)
 }
 
 static void balloon_stats_get_all(Object *obj, Visitor *v, const char *name,
-                                  void *opaque, Error **errp)
+                                  void *opaque, Error *errp[static 1])
 {
     Error *err = NULL;
     VirtIOBalloon *s = opaque;
@@ -151,7 +151,7 @@ out:
 
 static void balloon_stats_get_poll_interval(Object *obj, Visitor *v,
                                             const char *name, void *opaque,
-                                            Error **errp)
+                                            Error *errp[static 1])
 {
     VirtIOBalloon *s = opaque;
     visit_type_int(v, name, &s->stats_poll_interval, errp);
@@ -159,7 +159,7 @@ static void balloon_stats_get_poll_interval(Object *obj, 
Visitor *v,
 
 static void balloon_stats_set_poll_interval(Object *obj, Visitor *v,
                                             const char *name, void *opaque,
-                                            Error **errp)
+                                            Error *errp[static 1])
 {
     VirtIOBalloon *s = opaque;
     int64_t value;
@@ -367,7 +367,7 @@ static void virtio_balloon_set_config(VirtIODevice *vdev,
 }
 
 static uint64_t virtio_balloon_get_features(VirtIODevice *vdev, uint64_t f,
-                                            Error **errp)
+                                            Error *errp[static 1])
 {
     VirtIOBalloon *dev = VIRTIO_BALLOON(vdev);
     f |= dev->host_features;
@@ -420,7 +420,8 @@ static const VMStateDescription 
vmstate_virtio_balloon_device = {
     },
 };
 
-static void virtio_balloon_device_realize(DeviceState *dev, Error **errp)
+static void virtio_balloon_device_realize(DeviceState *dev,
+                                          Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VirtIOBalloon *s = VIRTIO_BALLOON(dev);
@@ -445,7 +446,8 @@ static void virtio_balloon_device_realize(DeviceState *dev, 
Error **errp)
     reset_stats(s);
 }
 
-static void virtio_balloon_device_unrealize(DeviceState *dev, Error **errp)
+static void virtio_balloon_device_unrealize(DeviceState *dev,
+                                            Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VirtIOBalloon *s = VIRTIO_BALLOON(dev);
diff --git a/hw/virtio/virtio-bus.c b/hw/virtio/virtio-bus.c
index 3042232daf..27e15e2734 100644
--- a/hw/virtio/virtio-bus.c
+++ b/hw/virtio/virtio-bus.c
@@ -41,7 +41,7 @@ do { printf("virtio_bus: " fmt , ## __VA_ARGS__); } while (0)
 #endif
 
 /* A VirtIODevice is being plugged */
-void virtio_bus_device_plugged(VirtIODevice *vdev, Error **errp)
+void virtio_bus_device_plugged(VirtIODevice *vdev, Error *errp[static 1])
 {
     DeviceState *qdev = DEVICE(vdev);
     BusState *qbus = BUS(qdev_get_parent_bus(qdev));
diff --git a/hw/virtio/virtio-crypto-pci.c b/hw/virtio/virtio-crypto-pci.c
index fe66425540..46c7670afa 100644
--- a/hw/virtio/virtio-crypto-pci.c
+++ b/hw/virtio/virtio-crypto-pci.c
@@ -26,7 +26,8 @@ static Property virtio_crypto_pci_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void virtio_crypto_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
+static void virtio_crypto_pci_realize(VirtIOPCIProxy *vpci_dev,
+                                      Error *errp[static 1])
 {
     VirtIOCryptoPCI *vcrypto = VIRTIO_CRYPTO_PCI(vpci_dev);
     DeviceState *vdev = DEVICE(&vcrypto->vdev);
diff --git a/hw/virtio/virtio-crypto.c b/hw/virtio/virtio-crypto.c
index a4714af54a..6fb6b0e674 100644
--- a/hw/virtio/virtio-crypto.c
+++ b/hw/virtio/virtio-crypto.c
@@ -733,7 +733,7 @@ virtio_crypto_handle_dataq_bh(VirtIODevice *vdev, VirtQueue 
*vq)
 
 static uint64_t virtio_crypto_get_features(VirtIODevice *vdev,
                                            uint64_t features,
-                                           Error **errp)
+                                           Error *errp[static 1])
 {
     return features;
 }
@@ -771,7 +771,8 @@ static void virtio_crypto_init_config(VirtIODevice *vdev)
     vcrypto->conf.max_size = vcrypto->conf.cryptodev->conf.max_size;
 }
 
-static void virtio_crypto_device_realize(DeviceState *dev, Error **errp)
+static void virtio_crypto_device_realize(DeviceState *dev,
+                                         Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VirtIOCrypto *vcrypto = VIRTIO_CRYPTO(dev);
@@ -813,7 +814,8 @@ static void virtio_crypto_device_realize(DeviceState *dev, 
Error **errp)
     cryptodev_backend_set_used(vcrypto->cryptodev, true);
 }
 
-static void virtio_crypto_device_unrealize(DeviceState *dev, Error **errp)
+static void virtio_crypto_device_unrealize(DeviceState *dev,
+                                           Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VirtIOCrypto *vcrypto = VIRTIO_CRYPTO(dev);
@@ -890,7 +892,7 @@ static void virtio_crypto_class_init(ObjectClass *klass, 
void *data)
 
 static void
 virtio_crypto_check_cryptodev_is_used(Object *obj, const char *name,
-                                      Object *val, Error **errp)
+                                      Object *val, Error *errp[static 1])
 {
     if (cryptodev_backend_is_used(CRYPTODEV_BACKEND(val))) {
         char *path = object_get_canonical_path_component(val);
diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c
index 5807aa87fe..9595ff5ae6 100644
--- a/hw/virtio/virtio-mmio.c
+++ b/hw/virtio/virtio-mmio.c
@@ -429,7 +429,7 @@ static Property virtio_mmio_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void virtio_mmio_realizefn(DeviceState *d, Error **errp)
+static void virtio_mmio_realizefn(DeviceState *d, Error *errp[static 1])
 {
     VirtIOMMIOProxy *proxy = VIRTIO_MMIO(d);
     SysBusDevice *sbd = SYS_BUS_DEVICE(d);
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
index d6a8b6be5f..2c707cccc4 100644
--- a/hw/virtio/virtio-pci.c
+++ b/hw/virtio/virtio-pci.c
@@ -1089,7 +1089,8 @@ static void virtio_pci_vmstate_change(DeviceState *d, 
bool running)
 }
 
 #ifdef CONFIG_VIRTFS
-static void virtio_9p_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
+static void virtio_9p_pci_realize(VirtIOPCIProxy *vpci_dev,
+                                  Error *errp[static 1])
 {
     V9fsPCIState *dev = VIRTIO_9P_PCI(vpci_dev);
     DeviceState *vdev = DEVICE(&dev->vdev);
@@ -1563,7 +1564,7 @@ static void 
virtio_pci_modern_io_region_unmap(VirtIOPCIProxy *proxy,
                                 &region->mr);
 }
 
-static void virtio_pci_pre_plugged(DeviceState *d, Error **errp)
+static void virtio_pci_pre_plugged(DeviceState *d, Error *errp[static 1])
 {
     VirtIOPCIProxy *proxy = VIRTIO_PCI(d);
     VirtIODevice *vdev = virtio_bus_get_device(&proxy->bus);
@@ -1576,7 +1577,7 @@ static void virtio_pci_pre_plugged(DeviceState *d, Error 
**errp)
 }
 
 /* This is called by virtio-bus just after the device is plugged. */
-static void virtio_pci_device_plugged(DeviceState *d, Error **errp)
+static void virtio_pci_device_plugged(DeviceState *d, Error *errp[static 1])
 {
     VirtIOPCIProxy *proxy = VIRTIO_PCI(d);
     VirtioBusState *bus = &proxy->bus;
@@ -1733,7 +1734,7 @@ static void virtio_pci_device_unplugged(DeviceState *d)
     }
 }
 
-static void virtio_pci_realize(PCIDevice *pci_dev, Error **errp)
+static void virtio_pci_realize(PCIDevice *pci_dev, Error *errp[static 1])
 {
     VirtIOPCIProxy *proxy = VIRTIO_PCI(pci_dev);
     VirtioPCIClass *k = VIRTIO_PCI_GET_CLASS(pci_dev);
@@ -1916,7 +1917,7 @@ static Property virtio_pci_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void virtio_pci_dc_realize(DeviceState *qdev, Error **errp)
+static void virtio_pci_dc_realize(DeviceState *qdev, Error *errp[static 1])
 {
     VirtioPCIClass *vpciklass = VIRTIO_PCI_GET_CLASS(qdev);
     VirtIOPCIProxy *proxy = VIRTIO_PCI(qdev);
@@ -1966,7 +1967,8 @@ static Property virtio_blk_pci_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void virtio_blk_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
+static void virtio_blk_pci_realize(VirtIOPCIProxy *vpci_dev,
+                                   Error *errp[static 1])
 {
     VirtIOBlkPCI *dev = VIRTIO_BLK_PCI(vpci_dev);
     DeviceState *vdev = DEVICE(&dev->vdev);
@@ -2020,7 +2022,8 @@ static Property virtio_scsi_pci_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void virtio_scsi_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
+static void virtio_scsi_pci_realize(VirtIOPCIProxy *vpci_dev,
+                                    Error *errp[static 1])
 {
     VirtIOSCSIPCI *dev = VIRTIO_SCSI_PCI(vpci_dev);
     DeviceState *vdev = DEVICE(&dev->vdev);
@@ -2088,7 +2091,8 @@ static Property vhost_scsi_pci_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void vhost_scsi_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
+static void vhost_scsi_pci_realize(VirtIOPCIProxy *vpci_dev,
+                                   Error *errp[static 1])
 {
     VHostSCSIPCI *dev = VHOST_SCSI_PCI(vpci_dev);
     DeviceState *vdev = DEVICE(&dev->vdev);
@@ -2143,7 +2147,8 @@ static Property vhost_vsock_pci_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void vhost_vsock_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
+static void vhost_vsock_pci_realize(VirtIOPCIProxy *vpci_dev,
+                                    Error *errp[static 1])
 {
     VHostVSockPCI *dev = VHOST_VSOCK_PCI(vpci_dev);
     DeviceState *vdev = DEVICE(&dev->vdev);
@@ -2190,7 +2195,8 @@ static Property virtio_balloon_pci_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void virtio_balloon_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
+static void virtio_balloon_pci_realize(VirtIOPCIProxy *vpci_dev,
+                                       Error *errp[static 1])
 {
     VirtIOBalloonPCI *dev = VIRTIO_BALLOON_PCI(vpci_dev);
     DeviceState *vdev = DEVICE(&dev->vdev);
@@ -2241,7 +2247,8 @@ static const TypeInfo virtio_balloon_pci_info = {
 
 /* virtio-serial-pci */
 
-static void virtio_serial_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
+static void virtio_serial_pci_realize(VirtIOPCIProxy *vpci_dev,
+                                      Error *errp[static 1])
 {
     VirtIOSerialPCI *dev = VIRTIO_SERIAL_PCI(vpci_dev);
     DeviceState *vdev = DEVICE(&dev->vdev);
@@ -2321,7 +2328,8 @@ static Property virtio_net_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void virtio_net_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
+static void virtio_net_pci_realize(VirtIOPCIProxy *vpci_dev,
+                                   Error *errp[static 1])
 {
     DeviceState *qdev = DEVICE(vpci_dev);
     VirtIONetPCI *dev = VIRTIO_NET_PCI(vpci_dev);
@@ -2369,7 +2377,8 @@ static const TypeInfo virtio_net_pci_info = {
 
 /* virtio-rng-pci */
 
-static void virtio_rng_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
+static void virtio_rng_pci_realize(VirtIOPCIProxy *vpci_dev,
+                                   Error *errp[static 1])
 {
     VirtIORngPCI *vrng = VIRTIO_RNG_PCI(vpci_dev);
     DeviceState *vdev = DEVICE(&vrng->vdev);
@@ -2425,7 +2434,8 @@ static Property virtio_input_pci_properties[] = {
     DEFINE_PROP_END_OF_LIST(),
 };
 
-static void virtio_input_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
+static void virtio_input_pci_realize(VirtIOPCIProxy *vpci_dev,
+                                     Error *errp[static 1])
 {
     VirtIOInputPCI *vinput = VIRTIO_INPUT_PCI(vpci_dev);
     DeviceState *vdev = DEVICE(&vinput->vdev);
diff --git a/hw/virtio/virtio-rng.c b/hw/virtio/virtio-rng.c
index 964c775e41..1de59642e9 100644
--- a/hw/virtio/virtio-rng.c
+++ b/hw/virtio/virtio-rng.c
@@ -125,7 +125,8 @@ static void handle_input(VirtIODevice *vdev, VirtQueue *vq)
     virtio_rng_process(vrng);
 }
 
-static uint64_t get_features(VirtIODevice *vdev, uint64_t f, Error **errp)
+static uint64_t get_features(VirtIODevice *vdev, uint64_t f,
+                             Error *errp[static 1])
 {
     return f;
 }
@@ -156,7 +157,7 @@ static void check_rate_limit(void *opaque)
     vrng->activate_timer = true;
 }
 
-static void virtio_rng_device_realize(DeviceState *dev, Error **errp)
+static void virtio_rng_device_realize(DeviceState *dev, Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VirtIORNG *vrng = VIRTIO_RNG(dev);
@@ -215,7 +216,8 @@ static void virtio_rng_device_realize(DeviceState *dev, 
Error **errp)
                                                      vrng);
 }
 
-static void virtio_rng_device_unrealize(DeviceState *dev, Error **errp)
+static void virtio_rng_device_unrealize(DeviceState *dev,
+                                        Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VirtIORNG *vrng = VIRTIO_RNG(dev);
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 530b5e568e..b007358a19 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -2473,7 +2473,7 @@ static void virtio_memory_listener_commit(MemoryListener 
*listener)
     }
 }
 
-static void virtio_device_realize(DeviceState *dev, Error **errp)
+static void virtio_device_realize(DeviceState *dev, Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VirtioDeviceClass *vdc = VIRTIO_DEVICE_GET_CLASS(dev);
@@ -2497,7 +2497,7 @@ static void virtio_device_realize(DeviceState *dev, Error 
**errp)
     memory_listener_register(&vdev->listener, vdev->dma_as);
 }
 
-static void virtio_device_unrealize(DeviceState *dev, Error **errp)
+static void virtio_device_unrealize(DeviceState *dev, Error *errp[static 1])
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VirtioDeviceClass *vdc = VIRTIO_DEVICE_GET_CLASS(dev);
diff --git a/hw/watchdog/wdt_aspeed.c b/hw/watchdog/wdt_aspeed.c
index 8bbe579b6b..caf9dd9bfa 100644
--- a/hw/watchdog/wdt_aspeed.c
+++ b/hw/watchdog/wdt_aspeed.c
@@ -182,7 +182,7 @@ static void aspeed_wdt_timer_expired(void *dev)
 
 #define PCLK_HZ 24000000
 
-static void aspeed_wdt_realize(DeviceState *dev, Error **errp)
+static void aspeed_wdt_realize(DeviceState *dev, Error *errp[static 1])
 {
     SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
     AspeedWDTState *s = ASPEED_WDT(dev);
diff --git a/hw/watchdog/wdt_diag288.c b/hw/watchdog/wdt_diag288.c
index a7b64e2c40..1e0cec8b33 100644
--- a/hw/watchdog/wdt_diag288.c
+++ b/hw/watchdog/wdt_diag288.c
@@ -96,7 +96,7 @@ static int wdt_diag288_handle_timer(DIAG288State *diag288,
     return 0;
 }
 
-static void wdt_diag288_realize(DeviceState *dev, Error **errp)
+static void wdt_diag288_realize(DeviceState *dev, Error *errp[static 1])
 {
     DIAG288State *diag288 = DIAG288(dev);
 
@@ -105,7 +105,7 @@ static void wdt_diag288_realize(DeviceState *dev, Error 
**errp)
                                   dev);
 }
 
-static void wdt_diag288_unrealize(DeviceState *dev, Error **errp)
+static void wdt_diag288_unrealize(DeviceState *dev, Error *errp[static 1])
 {
     DIAG288State *diag288 = DIAG288(dev);
 
diff --git a/hw/watchdog/wdt_i6300esb.c b/hw/watchdog/wdt_i6300esb.c
index 49b3cd188a..3d966d6db0 100644
--- a/hw/watchdog/wdt_i6300esb.c
+++ b/hw/watchdog/wdt_i6300esb.c
@@ -413,7 +413,7 @@ static const VMStateDescription vmstate_i6300esb = {
     }
 };
 
-static void i6300esb_realize(PCIDevice *dev, Error **errp)
+static void i6300esb_realize(PCIDevice *dev, Error *errp[static 1])
 {
     I6300State *d = WATCHDOG_I6300ESB_DEVICE(dev);
 
diff --git a/hw/watchdog/wdt_ib700.c b/hw/watchdog/wdt_ib700.c
index 532afe89e7..90427e4a3f 100644
--- a/hw/watchdog/wdt_ib700.c
+++ b/hw/watchdog/wdt_ib700.c
@@ -105,7 +105,7 @@ static const MemoryRegionPortio wdt_portio_list[] = {
     PORTIO_END_OF_LIST(),
 };
 
-static void wdt_ib700_realize(DeviceState *dev, Error **errp)
+static void wdt_ib700_realize(DeviceState *dev, Error *errp[static 1])
 {
     IB700State *s = IB700(dev);
 
diff --git a/hw/xen/xen-host-pci-device.c b/hw/xen/xen-host-pci-device.c
index eed8cc88e3..00a07fbf17 100644
--- a/hw/xen/xen-host-pci-device.c
+++ b/hw/xen/xen-host-pci-device.c
@@ -136,7 +136,8 @@ out:
 /* This size should be enough to read a long from a file */
 #define XEN_HOST_PCI_GET_VALUE_BUFFER_SIZE 22
 static void xen_host_pci_get_value(XenHostPCIDevice *d, const char *name,
-                                   unsigned int *pvalue, int base, Error 
**errp)
+                                   unsigned int *pvalue, int base,
+                                   Error *errp[static 1])
 {
     char path[PATH_MAX];
     char buf[XEN_HOST_PCI_GET_VALUE_BUFFER_SIZE];
@@ -176,7 +177,7 @@ out:
 static inline void xen_host_pci_get_hex_value(XenHostPCIDevice *d,
                                               const char *name,
                                               unsigned int *pvalue,
-                                              Error **errp)
+                                              Error *errp[static 1])
 {
     xen_host_pci_get_value(d, name, pvalue, 16, errp);
 }
@@ -184,7 +185,7 @@ static inline void 
xen_host_pci_get_hex_value(XenHostPCIDevice *d,
 static inline void xen_host_pci_get_dec_value(XenHostPCIDevice *d,
                                               const char *name,
                                               unsigned int *pvalue,
-                                              Error **errp)
+                                              Error *errp[static 1])
 {
     xen_host_pci_get_value(d, name, pvalue, 10, errp);
 }
@@ -199,7 +200,8 @@ static bool xen_host_pci_dev_is_virtfn(XenHostPCIDevice *d)
     return !stat(path, &buf);
 }
 
-static void xen_host_pci_config_open(XenHostPCIDevice *d, Error **errp)
+static void xen_host_pci_config_open(XenHostPCIDevice *d,
+                                     Error *errp[static 1])
 {
     char path[PATH_MAX];
 
@@ -332,7 +334,7 @@ int xen_host_pci_find_ext_cap_offset(XenHostPCIDevice *d, 
uint32_t cap)
 
 void xen_host_pci_device_get(XenHostPCIDevice *d, uint16_t domain,
                              uint8_t bus, uint8_t dev, uint8_t func,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     unsigned int v;
     Error *err = NULL;
diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c
index b6d71bb52a..33aaf0bfa7 100644
--- a/hw/xen/xen_pt.c
+++ b/hw/xen/xen_pt.c
@@ -762,7 +762,7 @@ static void xen_pt_destroy(PCIDevice *d) {
 }
 /* init */
 
-static void xen_pt_realize(PCIDevice *d, Error **errp)
+static void xen_pt_realize(PCIDevice *d, Error *errp[static 1])
 {
     XenPCIPassthroughState *s = XEN_PT_DEVICE(d);
     int i, rc = 0;
diff --git a/hw/xen/xen_pt_config_init.c b/hw/xen/xen_pt_config_init.c
index 6f18366f67..3d944cc1be 100644
--- a/hw/xen/xen_pt_config_init.c
+++ b/hw/xen/xen_pt_config_init.c
@@ -1891,7 +1891,7 @@ static uint8_t find_cap_offset(XenPCIPassthroughState *s, 
uint8_t cap)
 
 static void xen_pt_config_reg_init(XenPCIPassthroughState *s,
                                    XenPTRegGroup *reg_grp, XenPTRegInfo *reg,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     XenPTReg *reg_entry;
     uint32_t data = 0;
@@ -1985,7 +1985,7 @@ static void xen_pt_config_reg_init(XenPCIPassthroughState 
*s,
     QLIST_INSERT_HEAD(&reg_grp->reg_tbl_list, reg_entry, entries);
 }
 
-void xen_pt_config_init(XenPCIPassthroughState *s, Error **errp)
+void xen_pt_config_init(XenPCIPassthroughState *s, Error *errp[static 1])
 {
     int i, rc;
     Error *err = NULL;
diff --git a/hw/xen/xen_pt_graphics.c b/hw/xen/xen_pt_graphics.c
index 0f4c8d77e2..ba878974e3 100644
--- a/hw/xen/xen_pt_graphics.c
+++ b/hw/xen/xen_pt_graphics.c
@@ -164,7 +164,7 @@ struct pci_data {
 } __attribute__((packed));
 
 void xen_pt_setup_vga(XenPCIPassthroughState *s, XenHostPCIDevice *dev,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     unsigned char *bios = NULL;
     struct rom_header *rom;
diff --git a/io/channel-buffer.c b/io/channel-buffer.c
index 43d795976d..fe9710cf99 100644
--- a/io/channel-buffer.c
+++ b/io/channel-buffer.c
@@ -53,7 +53,7 @@ static ssize_t qio_channel_buffer_readv(QIOChannel *ioc,
                                         size_t niov,
                                         int **fds,
                                         size_t *nfds,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     QIOChannelBuffer *bioc = QIO_CHANNEL_BUFFER(ioc);
     ssize_t ret = 0;
@@ -80,7 +80,7 @@ static ssize_t qio_channel_buffer_writev(QIOChannel *ioc,
                                          size_t niov,
                                          int *fds,
                                          size_t nfds,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     QIOChannelBuffer *bioc = QIO_CHANNEL_BUFFER(ioc);
     ssize_t ret = 0;
@@ -115,7 +115,7 @@ static ssize_t qio_channel_buffer_writev(QIOChannel *ioc,
 
 static int qio_channel_buffer_set_blocking(QIOChannel *ioc G_GNUC_UNUSED,
                                            bool enabled G_GNUC_UNUSED,
-                                           Error **errp G_GNUC_UNUSED)
+                                           Error *errp[static 1] G_GNUC_UNUSED)
 {
     return 0;
 }
@@ -124,7 +124,7 @@ static int qio_channel_buffer_set_blocking(QIOChannel *ioc 
G_GNUC_UNUSED,
 static off_t qio_channel_buffer_seek(QIOChannel *ioc,
                                      off_t offset,
                                      int whence,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     QIOChannelBuffer *bioc = QIO_CHANNEL_BUFFER(ioc);
 
@@ -135,7 +135,7 @@ static off_t qio_channel_buffer_seek(QIOChannel *ioc,
 
 
 static int qio_channel_buffer_close(QIOChannel *ioc,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     QIOChannelBuffer *bioc = QIO_CHANNEL_BUFFER(ioc);
 
diff --git a/io/channel-command.c b/io/channel-command.c
index 2eea0135b0..fd4c89e5ee 100644
--- a/io/channel-command.c
+++ b/io/channel-command.c
@@ -48,7 +48,7 @@ qio_channel_command_new_pid(int writefd,
 QIOChannelCommand *
 qio_channel_command_new_spawn(const char *const argv[],
                               int flags,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     pid_t pid = -1;
     int stdinfd[2] = { -1, -1 };
@@ -144,7 +144,7 @@ qio_channel_command_new_spawn(const char *const argv[],
 QIOChannelCommand *
 qio_channel_command_new_spawn(const char *const argv[],
                               int flags,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     error_setg_errno(errp, ENOSYS,
                      "Command spawn not supported on this platform");
@@ -154,7 +154,7 @@ qio_channel_command_new_spawn(const char *const argv[],
 
 #ifndef WIN32
 static int qio_channel_command_abort(QIOChannelCommand *ioc,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     pid_t ret;
     int status;
@@ -229,7 +229,7 @@ static ssize_t qio_channel_command_readv(QIOChannel *ioc,
                                          size_t niov,
                                          int **fds,
                                          size_t *nfds,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     QIOChannelCommand *cioc = QIO_CHANNEL_COMMAND(ioc);
     ssize_t ret;
@@ -257,7 +257,7 @@ static ssize_t qio_channel_command_writev(QIOChannel *ioc,
                                           size_t niov,
                                           int *fds,
                                           size_t nfds,
-                                          Error **errp)
+                                          Error *errp[static 1])
 {
     QIOChannelCommand *cioc = QIO_CHANNEL_COMMAND(ioc);
     ssize_t ret;
@@ -280,7 +280,7 @@ static ssize_t qio_channel_command_writev(QIOChannel *ioc,
 
 static int qio_channel_command_set_blocking(QIOChannel *ioc,
                                             bool enabled,
-                                            Error **errp)
+                                            Error *errp[static 1])
 {
     QIOChannelCommand *cioc = QIO_CHANNEL_COMMAND(ioc);
 
@@ -297,7 +297,7 @@ static int qio_channel_command_set_blocking(QIOChannel *ioc,
 
 
 static int qio_channel_command_close(QIOChannel *ioc,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     QIOChannelCommand *cioc = QIO_CHANNEL_COMMAND(ioc);
     int rv = 0;
diff --git a/io/channel-file.c b/io/channel-file.c
index b383273201..e433ba25d7 100644
--- a/io/channel-file.c
+++ b/io/channel-file.c
@@ -44,7 +44,7 @@ QIOChannelFile *
 qio_channel_file_new_path(const char *path,
                           int flags,
                           mode_t mode,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     QIOChannelFile *ioc;
 
@@ -89,7 +89,7 @@ static ssize_t qio_channel_file_readv(QIOChannel *ioc,
                                       size_t niov,
                                       int **fds,
                                       size_t *nfds,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     QIOChannelFile *fioc = QIO_CHANNEL_FILE(ioc);
     ssize_t ret;
@@ -117,7 +117,7 @@ static ssize_t qio_channel_file_writev(QIOChannel *ioc,
                                        size_t niov,
                                        int *fds,
                                        size_t nfds,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     QIOChannelFile *fioc = QIO_CHANNEL_FILE(ioc);
     ssize_t ret;
@@ -140,7 +140,7 @@ static ssize_t qio_channel_file_writev(QIOChannel *ioc,
 
 static int qio_channel_file_set_blocking(QIOChannel *ioc,
                                          bool enabled,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     QIOChannelFile *fioc = QIO_CHANNEL_FILE(ioc);
 
@@ -156,7 +156,7 @@ static int qio_channel_file_set_blocking(QIOChannel *ioc,
 static off_t qio_channel_file_seek(QIOChannel *ioc,
                                    off_t offset,
                                    int whence,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     QIOChannelFile *fioc = QIO_CHANNEL_FILE(ioc);
     off_t ret;
@@ -173,7 +173,7 @@ static off_t qio_channel_file_seek(QIOChannel *ioc,
 
 
 static int qio_channel_file_close(QIOChannel *ioc,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     QIOChannelFile *fioc = QIO_CHANNEL_FILE(ioc);
 
diff --git a/io/channel-socket.c b/io/channel-socket.c
index 53386b7ba3..9da8cd956d 100644
--- a/io/channel-socket.c
+++ b/io/channel-socket.c
@@ -29,7 +29,7 @@
 
 SocketAddress *
 qio_channel_socket_get_local_address(QIOChannelSocket *ioc,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     return socket_sockaddr_to_address(&ioc->localAddr,
                                       ioc->localAddrLen,
@@ -38,7 +38,7 @@ qio_channel_socket_get_local_address(QIOChannelSocket *ioc,
 
 SocketAddress *
 qio_channel_socket_get_remote_address(QIOChannelSocket *ioc,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     return socket_sockaddr_to_address(&ioc->remoteAddr,
                                       ioc->remoteAddrLen,
@@ -70,7 +70,7 @@ qio_channel_socket_new(void)
 static int
 qio_channel_socket_set_fd(QIOChannelSocket *sioc,
                           int fd,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     if (sioc->fd != -1) {
         error_setg(errp, "Socket is already open");
@@ -117,7 +117,7 @@ qio_channel_socket_set_fd(QIOChannelSocket *sioc,
 
 QIOChannelSocket *
 qio_channel_socket_new_fd(int fd,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     QIOChannelSocket *ioc;
 
@@ -135,7 +135,7 @@ qio_channel_socket_new_fd(int fd,
 
 int qio_channel_socket_connect_sync(QIOChannelSocket *ioc,
                                     SocketAddress *addr,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     int fd;
 
@@ -193,7 +193,7 @@ void qio_channel_socket_connect_async(QIOChannelSocket *ioc,
 
 int qio_channel_socket_listen_sync(QIOChannelSocket *ioc,
                                    SocketAddress *addr,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     int fd;
 
@@ -252,7 +252,7 @@ void qio_channel_socket_listen_async(QIOChannelSocket *ioc,
 int qio_channel_socket_dgram_sync(QIOChannelSocket *ioc,
                                   SocketAddress *localAddr,
                                   SocketAddress *remoteAddr,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     int fd;
 
@@ -327,7 +327,7 @@ void qio_channel_socket_dgram_async(QIOChannelSocket *ioc,
 
 QIOChannelSocket *
 qio_channel_socket_accept(QIOChannelSocket *ioc,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     QIOChannelSocket *cioc;
 
@@ -451,7 +451,7 @@ static ssize_t qio_channel_socket_readv(QIOChannel *ioc,
                                         size_t niov,
                                         int **fds,
                                         size_t *nfds,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     QIOChannelSocket *sioc = QIO_CHANNEL_SOCKET(ioc);
     ssize_t ret;
@@ -499,7 +499,7 @@ static ssize_t qio_channel_socket_writev(QIOChannel *ioc,
                                          size_t niov,
                                          int *fds,
                                          size_t nfds,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     QIOChannelSocket *sioc = QIO_CHANNEL_SOCKET(ioc);
     ssize_t ret;
@@ -552,7 +552,7 @@ static ssize_t qio_channel_socket_readv(QIOChannel *ioc,
                                         size_t niov,
                                         int **fds,
                                         size_t *nfds,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     QIOChannelSocket *sioc = QIO_CHANNEL_SOCKET(ioc);
     ssize_t done = 0;
@@ -594,7 +594,7 @@ static ssize_t qio_channel_socket_writev(QIOChannel *ioc,
                                          size_t niov,
                                          int *fds,
                                          size_t nfds,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     QIOChannelSocket *sioc = QIO_CHANNEL_SOCKET(ioc);
     ssize_t done = 0;
@@ -635,7 +635,7 @@ static ssize_t qio_channel_socket_writev(QIOChannel *ioc,
 static int
 qio_channel_socket_set_blocking(QIOChannel *ioc,
                                 bool enabled,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     QIOChannelSocket *sioc = QIO_CHANNEL_SOCKET(ioc);
 
@@ -674,7 +674,7 @@ qio_channel_socket_set_cork(QIOChannel *ioc,
 
 static int
 qio_channel_socket_close(QIOChannel *ioc,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     QIOChannelSocket *sioc = QIO_CHANNEL_SOCKET(ioc);
 
@@ -696,7 +696,7 @@ qio_channel_socket_close(QIOChannel *ioc,
 static int
 qio_channel_socket_shutdown(QIOChannel *ioc,
                             QIOChannelShutdown how,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     QIOChannelSocket *sioc = QIO_CHANNEL_SOCKET(ioc);
     int sockhow;
diff --git a/io/channel-tls.c b/io/channel-tls.c
index 6350f5b25f..52aeaacae4 100644
--- a/io/channel-tls.c
+++ b/io/channel-tls.c
@@ -65,7 +65,7 @@ QIOChannelTLS *
 qio_channel_tls_new_server(QIOChannel *master,
                            QCryptoTLSCreds *creds,
                            const char *aclname,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     QIOChannelTLS *ioc;
 
@@ -102,7 +102,7 @@ QIOChannelTLS *
 qio_channel_tls_new_client(QIOChannel *master,
                            QCryptoTLSCreds *creds,
                            const char *hostname,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     QIOChannelTLS *tioc;
     QIOChannel *ioc;
@@ -235,7 +235,7 @@ static ssize_t qio_channel_tls_readv(QIOChannel *ioc,
                                      size_t niov,
                                      int **fds,
                                      size_t *nfds,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     QIOChannelTLS *tioc = QIO_CHANNEL_TLS(ioc);
     size_t i;
@@ -272,7 +272,7 @@ static ssize_t qio_channel_tls_writev(QIOChannel *ioc,
                                       size_t niov,
                                       int *fds,
                                       size_t nfds,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     QIOChannelTLS *tioc = QIO_CHANNEL_TLS(ioc);
     size_t i;
@@ -305,7 +305,7 @@ static ssize_t qio_channel_tls_writev(QIOChannel *ioc,
 
 static int qio_channel_tls_set_blocking(QIOChannel *ioc,
                                         bool enabled,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     QIOChannelTLS *tioc = QIO_CHANNEL_TLS(ioc);
 
@@ -330,7 +330,7 @@ static void qio_channel_tls_set_cork(QIOChannel *ioc,
 
 static int qio_channel_tls_shutdown(QIOChannel *ioc,
                                     QIOChannelShutdown how,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     QIOChannelTLS *tioc = QIO_CHANNEL_TLS(ioc);
 
@@ -338,7 +338,7 @@ static int qio_channel_tls_shutdown(QIOChannel *ioc,
 }
 
 static int qio_channel_tls_close(QIOChannel *ioc,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     QIOChannelTLS *tioc = QIO_CHANNEL_TLS(ioc);
 
diff --git a/io/channel-util.c b/io/channel-util.c
index 0fb4bd0837..cd9a5da1d8 100644
--- a/io/channel-util.c
+++ b/io/channel-util.c
@@ -38,7 +38,7 @@ static bool fd_is_socket(int fd)
 
 
 QIOChannel *qio_channel_new_fd(int fd,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     QIOChannel *ioc;
 
diff --git a/io/channel-websock.c b/io/channel-websock.c
index 5a3badbec2..29bd041e0e 100644
--- a/io/channel-websock.c
+++ b/io/channel-websock.c
@@ -127,7 +127,7 @@ static size_t
 qio_channel_websock_extract_headers(char *buffer,
                                     QIOChannelWebsockHTTPHeader *hdrs,
                                     size_t nhdrsalloc,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     char *nl, *sep, *tmp;
     size_t nhdrs = 0;
@@ -252,7 +252,7 @@ qio_channel_websock_find_header(QIOChannelWebsockHTTPHeader 
*hdrs,
 
 static int qio_channel_websock_handshake_send_response(QIOChannelWebsock *ioc,
                                                        const char *key,
-                                                       Error **errp)
+                                                       Error *errp[static 1])
 {
     char combined_key[QIO_CHANNEL_WEBSOCK_CLIENT_KEY_LEN +
                       QIO_CHANNEL_WEBSOCK_GUID_LEN + 1];
@@ -287,7 +287,7 @@ static int 
qio_channel_websock_handshake_send_response(QIOChannelWebsock *ioc,
 
 static int qio_channel_websock_handshake_process(QIOChannelWebsock *ioc,
                                                  char *buffer,
-                                                 Error **errp)
+                                                 Error *errp[static 1])
 {
     QIOChannelWebsockHTTPHeader hdrs[32];
     size_t nhdrs = G_N_ELEMENTS(hdrs);
@@ -373,7 +373,7 @@ static int 
qio_channel_websock_handshake_process(QIOChannelWebsock *ioc,
 }
 
 static int qio_channel_websock_handshake_read(QIOChannelWebsock *ioc,
-                                              Error **errp)
+                                              Error *errp[static 1])
 {
     char *handshake_end;
     ssize_t ret;
@@ -520,7 +520,7 @@ static void qio_channel_websock_encode(QIOChannelWebsock 
*ioc)
 
 
 static ssize_t qio_channel_websock_decode_header(QIOChannelWebsock *ioc,
-                                                 Error **errp)
+                                                 Error *errp[static 1])
 {
     unsigned char opcode, fin, has_mask;
     size_t header_size;
@@ -594,7 +594,7 @@ static ssize_t 
qio_channel_websock_decode_header(QIOChannelWebsock *ioc,
 
 
 static ssize_t qio_channel_websock_decode_payload(QIOChannelWebsock *ioc,
-                                                  Error **errp)
+                                                  Error *errp[static 1])
 {
     size_t i;
     size_t payload_len;
@@ -699,7 +699,7 @@ static void qio_channel_websock_finalize(Object *obj)
 
 
 static ssize_t qio_channel_websock_read_wire(QIOChannelWebsock *ioc,
-                                             Error **errp)
+                                             Error *errp[static 1])
 {
     ssize_t ret;
 
@@ -744,7 +744,7 @@ static ssize_t 
qio_channel_websock_read_wire(QIOChannelWebsock *ioc,
 
 
 static ssize_t qio_channel_websock_write_wire(QIOChannelWebsock *ioc,
-                                              Error **errp)
+                                              Error *errp[static 1])
 {
     ssize_t ret;
     ssize_t done = 0;
@@ -848,7 +848,7 @@ static ssize_t qio_channel_websock_readv(QIOChannel *ioc,
                                          size_t niov,
                                          int **fds,
                                          size_t *nfds,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     QIOChannelWebsock *wioc = QIO_CHANNEL_WEBSOCK(ioc);
     size_t i;
@@ -894,7 +894,7 @@ static ssize_t qio_channel_websock_writev(QIOChannel *ioc,
                                           size_t niov,
                                           int *fds,
                                           size_t nfds,
-                                          Error **errp)
+                                          Error *errp[static 1])
 {
     QIOChannelWebsock *wioc = QIO_CHANNEL_WEBSOCK(ioc);
     size_t i;
@@ -947,7 +947,7 @@ static ssize_t qio_channel_websock_writev(QIOChannel *ioc,
 
 static int qio_channel_websock_set_blocking(QIOChannel *ioc,
                                             bool enabled,
-                                            Error **errp)
+                                            Error *errp[static 1])
 {
     QIOChannelWebsock *wioc = QIO_CHANNEL_WEBSOCK(ioc);
 
@@ -973,7 +973,7 @@ static void qio_channel_websock_set_cork(QIOChannel *ioc,
 
 static int qio_channel_websock_shutdown(QIOChannel *ioc,
                                         QIOChannelShutdown how,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     QIOChannelWebsock *tioc = QIO_CHANNEL_WEBSOCK(ioc);
 
@@ -981,7 +981,7 @@ static int qio_channel_websock_shutdown(QIOChannel *ioc,
 }
 
 static int qio_channel_websock_close(QIOChannel *ioc,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     QIOChannelWebsock *wioc = QIO_CHANNEL_WEBSOCK(ioc);
 
diff --git a/io/channel.c b/io/channel.c
index cdf74540c1..78fc21768e 100644
--- a/io/channel.c
+++ b/io/channel.c
@@ -50,7 +50,7 @@ ssize_t qio_channel_readv_full(QIOChannel *ioc,
                                size_t niov,
                                int **fds,
                                size_t *nfds,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     QIOChannelClass *klass = QIO_CHANNEL_GET_CLASS(ioc);
 
@@ -70,7 +70,7 @@ ssize_t qio_channel_writev_full(QIOChannel *ioc,
                                 size_t niov,
                                 int *fds,
                                 size_t nfds,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     QIOChannelClass *klass = QIO_CHANNEL_GET_CLASS(ioc);
 
@@ -88,7 +88,7 @@ ssize_t qio_channel_writev_full(QIOChannel *ioc,
 ssize_t qio_channel_readv(QIOChannel *ioc,
                           const struct iovec *iov,
                           size_t niov,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     return qio_channel_readv_full(ioc, iov, niov, NULL, NULL, errp);
 }
@@ -97,7 +97,7 @@ ssize_t qio_channel_readv(QIOChannel *ioc,
 ssize_t qio_channel_writev(QIOChannel *ioc,
                            const struct iovec *iov,
                            size_t niov,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     return qio_channel_writev_full(ioc, iov, niov, NULL, 0, errp);
 }
@@ -106,7 +106,7 @@ ssize_t qio_channel_writev(QIOChannel *ioc,
 ssize_t qio_channel_read(QIOChannel *ioc,
                          char *buf,
                          size_t buflen,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     struct iovec iov = { .iov_base = buf, .iov_len = buflen };
     return qio_channel_readv_full(ioc, &iov, 1, NULL, NULL, errp);
@@ -116,7 +116,7 @@ ssize_t qio_channel_read(QIOChannel *ioc,
 ssize_t qio_channel_write(QIOChannel *ioc,
                           const char *buf,
                           size_t buflen,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     struct iovec iov = { .iov_base = (char *)buf, .iov_len = buflen };
     return qio_channel_writev_full(ioc, &iov, 1, NULL, 0, errp);
@@ -125,7 +125,7 @@ ssize_t qio_channel_write(QIOChannel *ioc,
 
 int qio_channel_set_blocking(QIOChannel *ioc,
                               bool enabled,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     QIOChannelClass *klass = QIO_CHANNEL_GET_CLASS(ioc);
     return klass->io_set_blocking(ioc, enabled, errp);
@@ -133,7 +133,7 @@ int qio_channel_set_blocking(QIOChannel *ioc,
 
 
 int qio_channel_close(QIOChannel *ioc,
-                      Error **errp)
+                      Error *errp[static 1])
 {
     QIOChannelClass *klass = QIO_CHANNEL_GET_CLASS(ioc);
     return klass->io_close(ioc, errp);
@@ -187,7 +187,7 @@ guint qio_channel_add_watch(QIOChannel *ioc,
 
 int qio_channel_shutdown(QIOChannel *ioc,
                          QIOChannelShutdown how,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     QIOChannelClass *klass = QIO_CHANNEL_GET_CLASS(ioc);
 
@@ -225,7 +225,7 @@ void qio_channel_set_cork(QIOChannel *ioc,
 off_t qio_channel_io_seek(QIOChannel *ioc,
                           off_t offset,
                           int whence,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     QIOChannelClass *klass = QIO_CHANNEL_GET_CLASS(ioc);
 
diff --git a/io/dns-resolver.c b/io/dns-resolver.c
index 57a8896cbb..e728a8894d 100644
--- a/io/dns-resolver.c
+++ b/io/dns-resolver.c
@@ -48,7 +48,7 @@ static int qio_dns_resolver_lookup_sync_inet(QIODNSResolver 
*resolver,
                                              SocketAddress *addr,
                                              size_t *naddrs,
                                              SocketAddress ***addrs,
-                                             Error **errp)
+                                             Error *errp[static 1])
 {
     struct addrinfo ai, *res, *e;
     InetSocketAddress *iaddr = &addr->u.inet;
@@ -131,7 +131,7 @@ static int qio_dns_resolver_lookup_sync_nop(QIODNSResolver 
*resolver,
                                             SocketAddress *addr,
                                             size_t *naddrs,
                                             SocketAddress ***addrs,
-                                            Error **errp)
+                                            Error *errp[static 1])
 {
     *naddrs = 1;
     *addrs = g_new0(SocketAddress *, 1);
@@ -145,7 +145,7 @@ int qio_dns_resolver_lookup_sync(QIODNSResolver *resolver,
                                  SocketAddress *addr,
                                  size_t *naddrs,
                                  SocketAddress ***addrs,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     switch (addr->type) {
     case SOCKET_ADDRESS_TYPE_INET:
diff --git a/io/task.c b/io/task.c
index 3ce556017c..8a3dcf1537 100644
--- a/io/task.c
+++ b/io/task.c
@@ -153,7 +153,7 @@ void qio_task_set_error(QIOTask *task,
 
 
 bool qio_task_propagate_error(QIOTask *task,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     if (task->err) {
         error_propagate(errp, task->err);
diff --git a/iothread.c b/iothread.c
index beeb870534..cebd5a6780 100644
--- a/iothread.c
+++ b/iothread.c
@@ -97,7 +97,7 @@ static void iothread_instance_finalize(Object *obj)
     aio_context_unref(iothread->ctx);
 }
 
-static void iothread_complete(UserCreatable *obj, Error **errp)
+static void iothread_complete(UserCreatable *obj, Error *errp[static 1])
 {
     Error *local_error = NULL;
     IOThread *iothread = IOTHREAD(obj);
@@ -161,7 +161,7 @@ static PollParamInfo poll_shrink_info = {
 };
 
 static void iothread_get_poll_param(Object *obj, Visitor *v,
-        const char *name, void *opaque, Error **errp)
+        const char *name, void *opaque, Error *errp[static 1])
 {
     IOThread *iothread = IOTHREAD(obj);
     PollParamInfo *info = opaque;
@@ -171,7 +171,7 @@ static void iothread_get_poll_param(Object *obj, Visitor *v,
 }
 
 static void iothread_set_poll_param(Object *obj, Visitor *v,
-        const char *name, void *opaque, Error **errp)
+        const char *name, void *opaque, Error *errp[static 1])
 {
     IOThread *iothread = IOTHREAD(obj);
     PollParamInfo *info = opaque;
@@ -281,7 +281,7 @@ static int query_one_iothread(Object *object, void *opaque)
     return 0;
 }
 
-IOThreadInfoList *qmp_query_iothreads(Error **errp)
+IOThreadInfoList *qmp_query_iothreads(Error *errp[static 1])
 {
     IOThreadInfoList *head = NULL;
     IOThreadInfoList **prev = &head;
diff --git a/memory.c b/memory.c
index 0ddc4cc28d..d6a2d056c7 100644
--- a/memory.c
+++ b/memory.c
@@ -1005,7 +1005,7 @@ void memory_region_init(MemoryRegion *mr,
 }
 
 static void memory_region_get_addr(Object *obj, Visitor *v, const char *name,
-                                   void *opaque, Error **errp)
+                                   void *opaque, Error *errp[static 1])
 {
     MemoryRegion *mr = MEMORY_REGION(obj);
     uint64_t value = mr->addr;
@@ -1015,7 +1015,7 @@ static void memory_region_get_addr(Object *obj, Visitor 
*v, const char *name,
 
 static void memory_region_get_container(Object *obj, Visitor *v,
                                         const char *name, void *opaque,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     MemoryRegion *mr = MEMORY_REGION(obj);
     gchar *path = (gchar *)"";
@@ -1039,7 +1039,7 @@ static Object *memory_region_resolve_container(Object 
*obj, void *opaque,
 
 static void memory_region_get_priority(Object *obj, Visitor *v,
                                        const char *name, void *opaque,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     MemoryRegion *mr = MEMORY_REGION(obj);
     int32_t value = mr->priority;
@@ -1048,7 +1048,7 @@ static void memory_region_get_priority(Object *obj, 
Visitor *v,
 }
 
 static void memory_region_get_size(Object *obj, Visitor *v, const char *name,
-                                   void *opaque, Error **errp)
+                                   void *opaque, Error *errp[static 1])
 {
     MemoryRegion *mr = MEMORY_REGION(obj);
     uint64_t value = memory_region_size(mr);
@@ -1352,7 +1352,7 @@ void memory_region_init_ram(MemoryRegion *mr,
                             Object *owner,
                             const char *name,
                             uint64_t size,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     memory_region_init(mr, owner, name, size);
     mr->ram = true;
@@ -1370,7 +1370,7 @@ void memory_region_init_resizeable_ram(MemoryRegion *mr,
                                        void (*resized)(const char*,
                                                        uint64_t length,
                                                        void *host),
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     memory_region_init(mr, owner, name, size);
     mr->ram = true;
@@ -1388,7 +1388,7 @@ void memory_region_init_ram_from_file(MemoryRegion *mr,
                                       uint64_t size,
                                       bool share,
                                       const char *path,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     memory_region_init(mr, owner, name, size);
     mr->ram = true;
@@ -1444,7 +1444,7 @@ void memory_region_init_rom(MemoryRegion *mr,
                             struct Object *owner,
                             const char *name,
                             uint64_t size,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     memory_region_init(mr, owner, name, size);
     mr->ram = true;
@@ -1461,7 +1461,7 @@ void memory_region_init_rom_device(MemoryRegion *mr,
                                    void *opaque,
                                    const char *name,
                                    uint64_t size,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     assert(ops);
     memory_region_init(mr, owner, name, size);
@@ -1879,7 +1879,8 @@ ram_addr_t memory_region_get_ram_addr(MemoryRegion *mr)
     return mr->ram_block ? mr->ram_block->offset : RAM_ADDR_INVALID;
 }
 
-void memory_region_ram_resize(MemoryRegion *mr, ram_addr_t newsize, Error 
**errp)
+void memory_region_ram_resize(MemoryRegion *mr, ram_addr_t newsize,
+                              Error *errp[static 1])
 {
     assert(mr->ram_block);
 
diff --git a/memory_mapping.c b/memory_mapping.c
index a5d38552a6..a04f2611a4 100644
--- a/memory_mapping.c
+++ b/memory_mapping.c
@@ -286,7 +286,7 @@ static CPUState *find_paging_enabled_cpu(CPUState 
*start_cpu)
 
 void qemu_get_guest_memory_mapping(MemoryMappingList *list,
                                    const GuestPhysBlockList *guest_phys_blocks,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     CPUState *cpu, *first_paging_enabled_cpu;
     GuestPhysBlock *block;
diff --git a/migration/colo-failover.c b/migration/colo-failover.c
index cc229f5ab1..87114f8d7a 100644
--- a/migration/colo-failover.c
+++ b/migration/colo-failover.c
@@ -39,7 +39,7 @@ static void colo_failover_bh(void *opaque)
     colo_do_failover(NULL);
 }
 
-void failover_request_active(Error **errp)
+void failover_request_active(Error *errp[static 1])
 {
    if (failover_set_state(FAILOVER_STATUS_NONE,
         FAILOVER_STATUS_REQUIRE) != FAILOVER_STATUS_NONE) {
@@ -72,7 +72,7 @@ FailoverStatus failover_get_state(void)
     return atomic_read(&failover_state);
 }
 
-void qmp_x_colo_lost_heartbeat(Error **errp)
+void qmp_x_colo_lost_heartbeat(Error *errp[static 1])
 {
     if (get_colo_mode() == COLO_MODE_UNKNOWN) {
         error_setg(errp, QERR_FEATURE_DISABLED, "colo");
diff --git a/migration/colo.c b/migration/colo.c
index 039b8afa03..581ba6af8f 100644
--- a/migration/colo.c
+++ b/migration/colo.c
@@ -156,7 +156,7 @@ void colo_do_failover(MigrationState *s)
 
 void qmp_xen_set_replication(bool enable, bool primary,
                              bool has_failover, bool failover,
-                             Error **errp)
+                             Error *errp[static 1])
 {
 #ifdef CONFIG_REPLICATION
     ReplicationMode mode = primary ?
@@ -182,7 +182,7 @@ void qmp_xen_set_replication(bool enable, bool primary,
 #endif
 }
 
-ReplicationStatus *qmp_query_xen_replication_status(Error **errp)
+ReplicationStatus *qmp_query_xen_replication_status(Error *errp[static 1])
 {
 #ifdef CONFIG_REPLICATION
     Error *err = NULL;
@@ -204,7 +204,7 @@ ReplicationStatus *qmp_query_xen_replication_status(Error 
**errp)
 #endif
 }
 
-void qmp_xen_colo_do_checkpoint(Error **errp)
+void qmp_xen_colo_do_checkpoint(Error *errp[static 1])
 {
 #ifdef CONFIG_REPLICATION
     replication_do_checkpoint_all(errp);
@@ -214,7 +214,7 @@ void qmp_xen_colo_do_checkpoint(Error **errp)
 }
 
 static void colo_send_message(QEMUFile *f, COLOMessage msg,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     int ret;
 
@@ -233,7 +233,7 @@ static void colo_send_message(QEMUFile *f, COLOMessage msg,
 }
 
 static void colo_send_message_value(QEMUFile *f, COLOMessage msg,
-                                    uint64_t value, Error **errp)
+                                    uint64_t value, Error *errp[static 1])
 {
     int ret;
 
@@ -251,7 +251,7 @@ static void colo_send_message_value(QEMUFile *f, 
COLOMessage msg,
     }
 }
 
-static COLOMessage colo_receive_message(QEMUFile *f, Error **errp)
+static COLOMessage colo_receive_message(QEMUFile *f, Error *errp[static 1])
 {
     COLOMessage msg;
     int ret;
@@ -271,7 +271,7 @@ static COLOMessage colo_receive_message(QEMUFile *f, Error 
**errp)
 }
 
 static void colo_receive_check_message(QEMUFile *f, COLOMessage expect_msg,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     COLOMessage msg;
     Error *local_err = NULL;
@@ -288,7 +288,7 @@ static void colo_receive_check_message(QEMUFile *f, 
COLOMessage expect_msg,
 }
 
 static uint64_t colo_receive_message_value(QEMUFile *f, uint32_t expect_msg,
-                                           Error **errp)
+                                           Error *errp[static 1])
 {
     uint64_t value;
     int ret;
@@ -505,7 +505,7 @@ void migrate_start_colo_process(MigrationState *s)
 }
 
 static void colo_wait_handle_message(QEMUFile *f, int *checkpoint_request,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     COLOMessage msg;
     Error *local_err = NULL;
diff --git a/migration/exec.c b/migration/exec.c
index 9077024286..02f2529b54 100644
--- a/migration/exec.c
+++ b/migration/exec.c
@@ -27,7 +27,8 @@
 #include "trace.h"
 
 
-void exec_start_outgoing_migration(MigrationState *s, const char *command, 
Error **errp)
+void exec_start_outgoing_migration(MigrationState *s, const char *command,
+                                   Error *errp[static 1])
 {
     QIOChannel *ioc;
     const char *argv[] = { "/bin/sh", "-c", command, NULL };
@@ -54,7 +55,7 @@ static gboolean exec_accept_incoming_migration(QIOChannel 
*ioc,
     return FALSE; /* unregister */
 }
 
-void exec_start_incoming_migration(const char *command, Error **errp)
+void exec_start_incoming_migration(const char *command, Error *errp[static 1])
 {
     QIOChannel *ioc;
     const char *argv[] = { "/bin/sh", "-c", command, NULL };
diff --git a/migration/fd.c b/migration/fd.c
index 0077a505a3..91dc29b4fb 100644
--- a/migration/fd.c
+++ b/migration/fd.c
@@ -25,7 +25,8 @@
 #include "trace.h"
 
 
-void fd_start_outgoing_migration(MigrationState *s, const char *fdname, Error 
**errp)
+void fd_start_outgoing_migration(MigrationState *s, const char *fdname,
+                                 Error *errp[static 1])
 {
     QIOChannel *ioc;
     int fd = monitor_get_fd(cur_mon, fdname, errp);
@@ -54,7 +55,7 @@ static gboolean fd_accept_incoming_migration(QIOChannel *ioc,
     return FALSE; /* unregister */
 }
 
-void fd_start_incoming_migration(const char *infd, Error **errp)
+void fd_start_incoming_migration(const char *infd, Error *errp[static 1])
 {
     QIOChannel *ioc;
     int fd;
diff --git a/migration/migration.c b/migration/migration.c
index 16bdd0a8d6..9f6b65f29c 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -284,7 +284,7 @@ static void migrate_generate_event(int new_state)
  * The migration can be started later after any parameters have been
  * changed.
  */
-static void deferred_incoming_migration(Error **errp)
+static void deferred_incoming_migration(Error *errp[static 1])
 {
     if (deferred_incoming) {
         error_setg(errp, "Incoming migration already deferred");
@@ -321,7 +321,7 @@ void migrate_send_rp_req_pages(MigrationIncomingState *mis, 
const char *rbname,
     }
 }
 
-void qemu_start_incoming_migration(const char *uri, Error **errp)
+void qemu_start_incoming_migration(const char *uri, Error *errp[static 1])
 {
     const char *p;
 
@@ -505,7 +505,7 @@ void migrate_send_rp_pong(MigrationIncomingState *mis,
     migrate_send_rp_message(mis, MIG_RP_MSG_PONG, sizeof(buf), &buf);
 }
 
-MigrationCapabilityStatusList *qmp_query_migrate_capabilities(Error **errp)
+MigrationCapabilityStatusList *qmp_query_migrate_capabilities(Error 
*errp[static 1])
 {
     MigrationCapabilityStatusList *head = NULL;
     MigrationCapabilityStatusList *caps;
@@ -538,7 +538,7 @@ MigrationCapabilityStatusList 
*qmp_query_migrate_capabilities(Error **errp)
     return head;
 }
 
-MigrationParameters *qmp_query_migrate_parameters(Error **errp)
+MigrationParameters *qmp_query_migrate_parameters(Error *errp[static 1])
 {
     MigrationParameters *params;
     MigrationState *s = migrate_get_current();
@@ -627,7 +627,7 @@ static void populate_ram_info(MigrationInfo *info, 
MigrationState *s)
     }
 }
 
-MigrationInfo *qmp_query_migrate(Error **errp)
+MigrationInfo *qmp_query_migrate(Error *errp[static 1])
 {
     MigrationInfo *info = g_malloc0(sizeof(*info));
     MigrationState *s = migrate_get_current();
@@ -716,7 +716,7 @@ MigrationInfo *qmp_query_migrate(Error **errp)
 }
 
 void qmp_migrate_set_capabilities(MigrationCapabilityStatusList *params,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     MigrationState *s = migrate_get_current();
     MigrationCapabilityStatusList *cap;
@@ -776,7 +776,8 @@ void 
qmp_migrate_set_capabilities(MigrationCapabilityStatusList *params,
     }
 }
 
-void qmp_migrate_set_parameters(MigrationParameters *params, Error **errp)
+void qmp_migrate_set_parameters(MigrationParameters *params,
+                                Error *errp[static 1])
 {
     MigrationState *s = migrate_get_current();
 
@@ -882,7 +883,7 @@ void qmp_migrate_set_parameters(MigrationParameters 
*params, Error **errp)
 }
 
 
-void qmp_migrate_start_postcopy(Error **errp)
+void qmp_migrate_start_postcopy(Error *errp[static 1])
 {
     MigrationState *s = migrate_get_current();
 
@@ -914,7 +915,7 @@ void migrate_set_state(int *state, int old_state, int 
new_state)
     }
 }
 
-void migrate_set_block_enabled(bool value, Error **errp)
+void migrate_set_block_enabled(bool value, Error *errp[static 1])
 {
     MigrationCapabilityStatusList *cap;
 
@@ -1124,7 +1125,7 @@ MigrationState *migrate_init(void)
 
 static GSList *migration_blockers;
 
-int migrate_add_blocker(Error *reason, Error **errp)
+int migrate_add_blocker(Error *reason, Error *errp[static 1])
 {
     if (only_migratable) {
         error_propagate(errp, error_copy(reason));
@@ -1149,7 +1150,7 @@ void migrate_del_blocker(Error *reason)
     migration_blockers = g_slist_remove(migration_blockers, reason);
 }
 
-void qmp_migrate_incoming(const char *uri, Error **errp)
+void qmp_migrate_incoming(const char *uri, Error *errp[static 1])
 {
     static bool once = true;
 
@@ -1170,7 +1171,7 @@ void qmp_migrate_incoming(const char *uri, Error **errp)
     once = false;
 }
 
-bool migration_is_blocked(Error **errp)
+bool migration_is_blocked(Error *errp[static 1])
 {
     if (qemu_savevm_state_blocked(errp)) {
         return true;
@@ -1186,7 +1187,7 @@ bool migration_is_blocked(Error **errp)
 
 void qmp_migrate(const char *uri, bool has_blk, bool blk,
                  bool has_inc, bool inc, bool has_detach, bool detach,
-                 Error **errp)
+                 Error *errp[static 1])
 {
     Error *local_err = NULL;
     MigrationState *s = migrate_get_current();
@@ -1254,12 +1255,12 @@ void qmp_migrate(const char *uri, bool has_blk, bool 
blk,
     }
 }
 
-void qmp_migrate_cancel(Error **errp)
+void qmp_migrate_cancel(Error *errp[static 1])
 {
     migrate_fd_cancel(migrate_get_current());
 }
 
-void qmp_migrate_set_cache_size(int64_t value, Error **errp)
+void qmp_migrate_set_cache_size(int64_t value, Error *errp[static 1])
 {
     MigrationState *s = migrate_get_current();
     int64_t new_size;
@@ -1288,12 +1289,12 @@ void qmp_migrate_set_cache_size(int64_t value, Error 
**errp)
     s->xbzrle_cache_size = new_size;
 }
 
-int64_t qmp_query_migrate_cache_size(Error **errp)
+int64_t qmp_query_migrate_cache_size(Error *errp[static 1])
 {
     return migrate_xbzrle_cache_size();
 }
 
-void qmp_migrate_set_speed(int64_t value, Error **errp)
+void qmp_migrate_set_speed(int64_t value, Error *errp[static 1])
 {
     MigrationParameters p = {
         .has_max_bandwidth = true,
@@ -1303,7 +1304,7 @@ void qmp_migrate_set_speed(int64_t value, Error **errp)
     qmp_migrate_set_parameters(&p, errp);
 }
 
-void qmp_migrate_set_downtime(double value, Error **errp)
+void qmp_migrate_set_downtime(double value, Error *errp[static 1])
 {
     if (value < 0 || value > MAX_MIGRATE_DOWNTIME_SECONDS) {
         error_setg(errp, "Parameter 'downtime_limit' expects an integer in "
diff --git a/migration/rdma.c b/migration/rdma.c
index 5cb9572a5c..5e9ed12138 100644
--- a/migration/rdma.c
+++ b/migration/rdma.c
@@ -811,7 +811,8 @@ static void qemu_rdma_dump_gid(const char *who, struct 
rdma_cm_id *id)
  *
  * Patches are being reviewed on linux-rdma.
  */
-static int qemu_rdma_broken_ipv6_kernel(struct ibv_context *verbs, Error 
**errp)
+static int qemu_rdma_broken_ipv6_kernel(struct ibv_context *verbs,
+                                        Error *errp[static 1])
 {
     struct ibv_port_attr port_attr;
 
@@ -906,7 +907,7 @@ static int qemu_rdma_broken_ipv6_kernel(struct ibv_context 
*verbs, Error **errp)
  * Also create the initial connection manager identifiers for opening
  * the connection.
  */
-static int qemu_rdma_resolve_host(RDMAContext *rdma, Error **errp)
+static int qemu_rdma_resolve_host(RDMAContext *rdma, Error *errp[static 1])
 {
     int ret;
     struct rdma_addrinfo *res;
@@ -2279,7 +2280,8 @@ static void qemu_rdma_cleanup(RDMAContext *rdma)
 }
 
 
-static int qemu_rdma_source_init(RDMAContext *rdma, bool pin_all, Error **errp)
+static int qemu_rdma_source_init(RDMAContext *rdma, bool pin_all,
+                                 Error *errp[static 1])
 {
     int ret, idx;
     Error *local_err = NULL;
@@ -2341,7 +2343,7 @@ err_rdma_source_init:
     return -1;
 }
 
-static int qemu_rdma_connect(RDMAContext *rdma, Error **errp)
+static int qemu_rdma_connect(RDMAContext *rdma, Error *errp[static 1])
 {
     RDMACapabilities cap = {
                                 .version = RDMA_CONTROL_VERSION_CURRENT,
@@ -2421,7 +2423,7 @@ err_rdma_source_connect:
     return -1;
 }
 
-static int qemu_rdma_dest_init(RDMAContext *rdma, Error **errp)
+static int qemu_rdma_dest_init(RDMAContext *rdma, Error *errp[static 1])
 {
     int ret, idx;
     struct rdma_cm_id *listen_id;
@@ -2499,7 +2501,7 @@ err_dest_init_create_listen_id:
 
 }
 
-static void *qemu_rdma_data_init(const char *host_port, Error **errp)
+static void *qemu_rdma_data_init(const char *host_port, Error *errp[static 1])
 {
     RDMAContext *rdma = NULL;
     InetSocketAddress *addr;
@@ -2535,7 +2537,7 @@ static ssize_t qio_channel_rdma_writev(QIOChannel *ioc,
                                        size_t niov,
                                        int *fds,
                                        size_t nfds,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     QIOChannelRDMA *rioc = QIO_CHANNEL_RDMA(ioc);
     QEMUFile *f = rioc->file;
@@ -2610,7 +2612,7 @@ static ssize_t qio_channel_rdma_readv(QIOChannel *ioc,
                                       size_t niov,
                                       int **fds,
                                       size_t *nfds,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     QIOChannelRDMA *rioc = QIO_CHANNEL_RDMA(ioc);
     RDMAContext *rdma = rioc->rdma;
@@ -2702,7 +2704,7 @@ static int qemu_rdma_drain_cq(QEMUFile *f, RDMAContext 
*rdma)
 
 static int qio_channel_rdma_set_blocking(QIOChannel *ioc,
                                          bool blocking,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     QIOChannelRDMA *rioc = QIO_CHANNEL_RDMA(ioc);
     /* XXX we should make readv/writev actually honour this :-) */
@@ -2806,7 +2808,7 @@ static GSource *qio_channel_rdma_create_watch(QIOChannel 
*ioc,
 
 
 static int qio_channel_rdma_close(QIOChannel *ioc,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     QIOChannelRDMA *rioc = QIO_CHANNEL_RDMA(ioc);
     trace_qemu_rdma_close();
@@ -3632,7 +3634,8 @@ static void rdma_accept_incoming_migration(void *opaque)
     migration_fd_process_incoming(f);
 }
 
-void rdma_start_incoming_migration(const char *host_port, Error **errp)
+void rdma_start_incoming_migration(const char *host_port,
+                                   Error *errp[static 1])
 {
     int ret;
     RDMAContext *rdma;
@@ -3671,7 +3674,7 @@ err:
 }
 
 void rdma_start_outgoing_migration(void *opaque,
-                            const char *host_port, Error **errp)
+                            const char *host_port, Error *errp[static 1])
 {
     MigrationState *s = opaque;
     RDMAContext *rdma = qemu_rdma_data_init(host_port, errp);
diff --git a/migration/savevm.c b/migration/savevm.c
index 745caaebef..fa3332ff5f 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -673,7 +673,7 @@ int vmstate_register_with_alias_id(DeviceState *dev, int 
instance_id,
                                    const VMStateDescription *vmsd,
                                    void *opaque, int alias_id,
                                    int required_for_version,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     SaveStateEntry *se;
 
@@ -947,7 +947,7 @@ void qemu_savevm_send_postcopy_run(QEMUFile *f)
     qemu_savevm_command_send(f, MIG_CMD_POSTCOPY_RUN, 0, NULL);
 }
 
-bool qemu_savevm_state_blocked(Error **errp)
+bool qemu_savevm_state_blocked(Error *errp[static 1])
 {
     SaveStateEntry *se;
 
@@ -1235,7 +1235,7 @@ void qemu_savevm_state_cleanup(void)
     }
 }
 
-static int qemu_savevm_state(QEMUFile *f, Error **errp)
+static int qemu_savevm_state(QEMUFile *f, Error *errp[static 1])
 {
     int ret;
     MigrationState *ms = migrate_init();
@@ -2055,7 +2055,7 @@ int qemu_loadvm_state(QEMUFile *f)
     return ret;
 }
 
-int save_snapshot(const char *name, Error **errp)
+int save_snapshot(const char *name, Error *errp[static 1])
 {
     BlockDriverState *bs, *bs1;
     QEMUSnapshotInfo sn1, *sn = &sn1, old_sn1, *old_sn = &old_sn1;
@@ -2153,7 +2153,7 @@ int save_snapshot(const char *name, Error **errp)
     return ret;
 }
 
-void qmp_xen_save_devices_state(const char *filename, Error **errp)
+void qmp_xen_save_devices_state(const char *filename, Error *errp[static 1])
 {
     QEMUFile *f;
     QIOChannelFile *ioc;
@@ -2182,7 +2182,7 @@ void qmp_xen_save_devices_state(const char *filename, 
Error **errp)
     }
 }
 
-void qmp_xen_load_devices_state(const char *filename, Error **errp)
+void qmp_xen_load_devices_state(const char *filename, Error *errp[static 1])
 {
     QEMUFile *f;
     QIOChannelFile *ioc;
@@ -2212,7 +2212,7 @@ void qmp_xen_load_devices_state(const char *filename, 
Error **errp)
     migration_incoming_state_destroy();
 }
 
-int load_snapshot(const char *name, Error **errp)
+int load_snapshot(const char *name, Error *errp[static 1])
 {
     BlockDriverState *bs, *bs_vm_state;
     QEMUSnapshotInfo sn;
diff --git a/migration/socket.c b/migration/socket.c
index 018e1d1191..a8a2e3efb1 100644
--- a/migration/socket.c
+++ b/migration/socket.c
@@ -27,7 +27,8 @@
 #include "trace.h"
 
 
-static SocketAddress *tcp_build_address(const char *host_port, Error **errp)
+static SocketAddress *tcp_build_address(const char *host_port,
+                                        Error *errp[static 1])
 {
     SocketAddress *saddr;
 
@@ -90,7 +91,7 @@ static void socket_outgoing_migration(QIOTask *task,
 
 static void socket_start_outgoing_migration(MigrationState *s,
                                             SocketAddress *saddr,
-                                            Error **errp)
+                                            Error *errp[static 1])
 {
     QIOChannelSocket *sioc = qio_channel_socket_new();
     struct SocketConnectData *data = g_new0(struct SocketConnectData, 1);
@@ -111,7 +112,7 @@ static void socket_start_outgoing_migration(MigrationState 
*s,
 
 void tcp_start_outgoing_migration(MigrationState *s,
                                   const char *host_port,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     Error *err = NULL;
     SocketAddress *saddr = tcp_build_address(host_port, &err);
@@ -123,7 +124,7 @@ void tcp_start_outgoing_migration(MigrationState *s,
 
 void unix_start_outgoing_migration(MigrationState *s,
                                    const char *path,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     SocketAddress *saddr = unix_build_address(path);
     socket_start_outgoing_migration(s, saddr, errp);
@@ -160,7 +161,7 @@ out:
 
 
 static void socket_start_incoming_migration(SocketAddress *saddr,
-                                            Error **errp)
+                                            Error *errp[static 1])
 {
     QIOChannelSocket *listen_ioc = qio_channel_socket_new();
 
@@ -181,7 +182,8 @@ static void socket_start_incoming_migration(SocketAddress 
*saddr,
     qapi_free_SocketAddress(saddr);
 }
 
-void tcp_start_incoming_migration(const char *host_port, Error **errp)
+void tcp_start_incoming_migration(const char *host_port,
+                                  Error *errp[static 1])
 {
     Error *err = NULL;
     SocketAddress *saddr = tcp_build_address(host_port, &err);
@@ -191,7 +193,7 @@ void tcp_start_incoming_migration(const char *host_port, 
Error **errp)
     error_propagate(errp, err);
 }
 
-void unix_start_incoming_migration(const char *path, Error **errp)
+void unix_start_incoming_migration(const char *path, Error *errp[static 1])
 {
     SocketAddress *saddr = unix_build_address(path);
     socket_start_incoming_migration(saddr, errp);
diff --git a/migration/tls.c b/migration/tls.c
index bae9acad6c..42b8235552 100644
--- a/migration/tls.c
+++ b/migration/tls.c
@@ -31,7 +31,7 @@
 static QCryptoTLSCreds *
 migration_tls_get_creds(MigrationState *s,
                         QCryptoTLSCredsEndpoint endpoint,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     Object *creds;
     QCryptoTLSCreds *ret;
@@ -81,7 +81,7 @@ static void migration_tls_incoming_handshake(QIOTask *task,
 
 void migration_tls_channel_process_incoming(MigrationState *s,
                                             QIOChannel *ioc,
-                                            Error **errp)
+                                            Error *errp[static 1])
 {
     QCryptoTLSCreds *creds;
     QIOChannelTLS *tioc;
@@ -131,7 +131,7 @@ static void migration_tls_outgoing_handshake(QIOTask *task,
 void migration_tls_channel_connect(MigrationState *s,
                                    QIOChannel *ioc,
                                    const char *hostname,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     QCryptoTLSCreds *creds;
     QIOChannelTLS *tioc;
diff --git a/monitor.c b/monitor.c
index 7c4327a175..71e2e80bbd 100644
--- a/monitor.c
+++ b/monitor.c
@@ -429,7 +429,7 @@ static void monitor_qapi_event_handler(void *opaque);
  * applying any rate limiting if required.
  */
 static void
-monitor_qapi_event_queue(QAPIEvent event, QDict *qdict, Error **errp)
+monitor_qapi_event_queue(QAPIEvent event, QDict *qdict, Error *errp[static 1])
 {
     MonitorQAPIEventConf *evconf;
     MonitorQAPIEventState *evstate;
@@ -588,7 +588,7 @@ static void monitor_data_destroy(Monitor *mon)
 }
 
 char *qmp_human_monitor_command(const char *command_line, bool has_cpu_index,
-                                int64_t cpu_index, Error **errp)
+                                int64_t cpu_index, Error *errp[static 1])
 {
     char *output = NULL;
     Monitor *old_mon, hmp;
@@ -912,7 +912,7 @@ static void query_commands_cb(QmpCommand *cmd, void *opaque)
     *list = info;
 }
 
-CommandInfoList *qmp_query_commands(Error **errp)
+CommandInfoList *qmp_query_commands(Error *errp[static 1])
 {
     CommandInfoList *list = NULL;
 
@@ -921,7 +921,7 @@ CommandInfoList *qmp_query_commands(Error **errp)
     return list;
 }
 
-EventInfoList *qmp_query_events(Error **errp)
+EventInfoList *qmp_query_events(Error *errp[static 1])
 {
     EventInfoList *info, *ev_list = NULL;
     QAPIEvent e;
@@ -950,7 +950,7 @@ EventInfoList *qmp_query_events(Error **errp)
  * qapi-introspect.py's output actually conforms to the schema.
  */
 static void qmp_query_qmp_schema(QDict *qdict, QObject **ret_data,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     *ret_data = qobject_from_json(qmp_schema_json, &error_abort);
 }
@@ -1025,7 +1025,7 @@ void monitor_init_qmp_commands(void)
                          qmp_marshal_qmp_capabilities, QCO_NO_OPTIONS);
 }
 
-void qmp_qmp_capabilities(Error **errp)
+void qmp_qmp_capabilities(Error *errp[static 1])
 {
     if (cur_mon->qmp.commands == &qmp_commands) {
         error_set(errp, ERROR_CLASS_COMMAND_NOT_FOUND,
@@ -1166,7 +1166,7 @@ void qmp_client_migrate_info(const char *protocol, const 
char *hostname,
                              bool has_port, int64_t port,
                              bool has_tls_port, int64_t tls_port,
                              bool has_cert_subject, const char *cert_subject,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     if (strcmp(protocol, "spice") == 0) {
         if (!qemu_using_spice(errp)) {
@@ -1429,7 +1429,7 @@ static void hmp_physical_memory_dump(Monitor *mon, const 
QDict *qdict)
     memory_dump(mon, count, format, size, addr, 1);
 }
 
-static void *gpa2hva(MemoryRegion **p_mr, hwaddr addr, Error **errp)
+static void *gpa2hva(MemoryRegion **p_mr, hwaddr addr, Error *errp[static 1])
 {
     MemoryRegionSection mrs = memory_region_find(get_system_memory(),
                                                  addr, 1);
@@ -1470,7 +1470,7 @@ static void hmp_gpa2hva(Monitor *mon, const QDict *qdict)
 }
 
 #ifdef CONFIG_LINUX
-static uint64_t vtop(void *ptr, Error **errp)
+static uint64_t vtop(void *ptr, Error *errp[static 1])
 {
     uint64_t pinfo;
     uint64_t ret = -1;
@@ -1901,7 +1901,7 @@ static void hmp_acl_remove(Monitor *mon, const QDict 
*qdict)
     }
 }
 
-void qmp_getfd(const char *fdname, Error **errp)
+void qmp_getfd(const char *fdname, Error *errp[static 1])
 {
     mon_fd_t *monfd;
     int fd;
@@ -1936,7 +1936,7 @@ void qmp_getfd(const char *fdname, Error **errp)
     QLIST_INSERT_HEAD(&cur_mon->fds, monfd, next);
 }
 
-void qmp_closefd(const char *fdname, Error **errp)
+void qmp_closefd(const char *fdname, Error *errp[static 1])
 {
     mon_fd_t *monfd;
 
@@ -1955,7 +1955,7 @@ void qmp_closefd(const char *fdname, Error **errp)
     error_setg(errp, QERR_FD_NOT_FOUND, fdname);
 }
 
-int monitor_get_fd(Monitor *mon, const char *fdname, Error **errp)
+int monitor_get_fd(Monitor *mon, const char *fdname, Error *errp[static 1])
 {
     mon_fd_t *monfd;
 
@@ -2013,7 +2013,7 @@ static void monitor_fdsets_cleanup(void)
 }
 
 AddfdInfo *qmp_add_fd(bool has_fdset_id, int64_t fdset_id, bool has_opaque,
-                      const char *opaque, Error **errp)
+                      const char *opaque, Error *errp[static 1])
 {
     int fd;
     Monitor *mon = cur_mon;
@@ -2038,7 +2038,8 @@ error:
     return NULL;
 }
 
-void qmp_remove_fd(int64_t fdset_id, bool has_fd, int64_t fd, Error **errp)
+void qmp_remove_fd(int64_t fdset_id, bool has_fd, int64_t fd,
+                   Error *errp[static 1])
 {
     MonFdset *mon_fdset;
     MonFdsetFd *mon_fdset_fd;
@@ -2076,7 +2077,7 @@ error:
     error_setg(errp, QERR_FD_NOT_FOUND, fd_str);
 }
 
-FdsetInfoList *qmp_query_fdsets(Error **errp)
+FdsetInfoList *qmp_query_fdsets(Error *errp[static 1])
 {
     MonFdset *mon_fdset;
     MonFdsetFd *mon_fdset_fd;
@@ -2117,7 +2118,7 @@ FdsetInfoList *qmp_query_fdsets(Error **errp)
 
 AddfdInfo *monitor_fdset_add_fd(int fd, bool has_fdset_id, int64_t fdset_id,
                                 bool has_opaque, const char *opaque,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     MonFdset *mon_fdset = NULL;
     MonFdsetFd *mon_fdset_fd;
@@ -2281,7 +2282,7 @@ void monitor_fdset_dup_fd_remove(int dup_fd)
     monitor_fdset_dup_fd_find_remove(dup_fd, true);
 }
 
-int monitor_fd_param(Monitor *mon, const char *fdname, Error **errp)
+int monitor_fd_param(Monitor *mon, const char *fdname, Error *errp[static 1])
 {
     int fd;
     Error *local_err = NULL;
@@ -4207,28 +4208,28 @@ QemuOptsList qemu_mon_opts = {
 };
 
 #ifndef TARGET_I386
-void qmp_rtc_reset_reinjection(Error **errp)
+void qmp_rtc_reset_reinjection(Error *errp[static 1])
 {
     error_setg(errp, QERR_FEATURE_DISABLED, "rtc-reset-reinjection");
 }
 #endif
 
 #ifndef TARGET_S390X
-void qmp_dump_skeys(const char *filename, Error **errp)
+void qmp_dump_skeys(const char *filename, Error *errp[static 1])
 {
     error_setg(errp, QERR_FEATURE_DISABLED, "dump-skeys");
 }
 #endif
 
 #ifndef TARGET_ARM
-GICCapabilityList *qmp_query_gic_capabilities(Error **errp)
+GICCapabilityList *qmp_query_gic_capabilities(Error *errp[static 1])
 {
     error_setg(errp, QERR_FEATURE_DISABLED, "query-gic-capabilities");
     return NULL;
 }
 #endif
 
-HotpluggableCPUList *qmp_query_hotpluggable_cpus(Error **errp)
+HotpluggableCPUList *qmp_query_hotpluggable_cpus(Error *errp[static 1])
 {
     MachineState *ms = MACHINE(qdev_get_machine());
     MachineClass *mc = MACHINE_GET_CLASS(ms);
diff --git a/nbd/client.c b/nbd/client.c
index 8541e109a7..1e5b81f9f8 100644
--- a/nbd/client.c
+++ b/nbd/client.c
@@ -88,7 +88,7 @@ static QTAILQ_HEAD(, NBDExport) exports = 
QTAILQ_HEAD_INITIALIZER(exports);
 
 /* Discard length bytes from channel.  Return -errno on failure and 0 on
  * success*/
-static int drop_sync(QIOChannel *ioc, size_t size, Error **errp)
+static int drop_sync(QIOChannel *ioc, size_t size, Error *errp[static 1])
 {
     ssize_t ret = 0;
     char small[1024];
@@ -121,7 +121,7 @@ static int drop_sync(QIOChannel *ioc, size_t size, Error 
**errp)
  * continue. */
 static int nbd_send_option_request(QIOChannel *ioc, uint32_t opt,
                                    uint32_t len, const char *data,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     nbd_option req;
     QEMU_BUILD_BUG_ON(sizeof(req) != 16);
@@ -166,7 +166,8 @@ static void nbd_send_opt_abort(QIOChannel *ioc)
  * payload. Return 0 if successful, -1 with errp set if it is
  * impossible to continue. */
 static int nbd_receive_option_reply(QIOChannel *ioc, uint32_t opt,
-                                    nbd_opt_reply *reply, Error **errp)
+                                    nbd_opt_reply *reply,
+                                    Error *errp[static 1])
 {
     QEMU_BUILD_BUG_ON(sizeof(*reply) != 20);
     if (read_sync(ioc, reply, sizeof(*reply), errp) < 0) {
@@ -203,7 +204,7 @@ static int nbd_receive_option_reply(QIOChannel *ioc, 
uint32_t opt,
  * errors.
  */
 static int nbd_handle_reply_err(QIOChannel *ioc, nbd_opt_reply *reply,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     char *msg = NULL;
     int result = -1;
@@ -281,7 +282,7 @@ static int nbd_handle_reply_err(QIOChannel *ioc, 
nbd_opt_reply *reply,
  * is complete, positive if more replies are expected, or negative
  * with @errp set if an unrecoverable error occurred. */
 static int nbd_receive_list(QIOChannel *ioc, const char *want, bool *match,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     nbd_opt_reply reply;
     uint32_t len;
@@ -364,7 +365,7 @@ static int nbd_receive_list(QIOChannel *ioc, const char 
*want, bool *match,
 /* Return -1 on failure, 0 if wantname is an available export. */
 static int nbd_receive_query_exports(QIOChannel *ioc,
                                      const char *wantname,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     bool foundExport = false;
 
@@ -396,7 +397,8 @@ static int nbd_receive_query_exports(QIOChannel *ioc,
 
 static QIOChannel *nbd_receive_starttls(QIOChannel *ioc,
                                         QCryptoTLSCreds *tlscreds,
-                                        const char *hostname, Error **errp)
+                                        const char *hostname,
+                                        Error *errp[static 1])
 {
     nbd_opt_reply reply;
     QIOChannelTLS *tioc;
@@ -456,7 +458,7 @@ static QIOChannel *nbd_receive_starttls(QIOChannel *ioc,
 int nbd_receive_negotiate(QIOChannel *ioc, const char *name, uint16_t *flags,
                           QCryptoTLSCreds *tlscreds, const char *hostname,
                           QIOChannel **outioc,
-                          off_t *size, Error **errp)
+                          off_t *size, Error *errp[static 1])
 {
     char buf[256];
     uint64_t magic, s;
@@ -628,7 +630,7 @@ fail:
 
 #ifdef __linux__
 int nbd_init(int fd, QIOChannelSocket *sioc, uint16_t flags, off_t size,
-             Error **errp)
+             Error *errp[static 1])
 {
     unsigned long sectors = size / BDRV_SECTOR_SIZE;
     if (size / BDRV_SECTOR_SIZE != sectors) {
@@ -726,7 +728,7 @@ int nbd_disconnect(int fd)
 
 #else
 int nbd_init(int fd, QIOChannelSocket *ioc, uint16_t flags, off_t size,
-            Error **errp)
+            Error *errp[static 1])
 {
     error_setg(errp, "nbd_init is only supported on Linux");
     return -ENOTSUP;
@@ -762,7 +764,8 @@ ssize_t nbd_send_request(QIOChannel *ioc, NBDRequest 
*request)
     return write_sync(ioc, buf, sizeof(buf), IGNORE_ERRORS);
 }
 
-ssize_t nbd_receive_reply(QIOChannel *ioc, NBDReply *reply, Error **errp)
+ssize_t nbd_receive_reply(QIOChannel *ioc, NBDReply *reply,
+                          Error *errp[static 1])
 {
     uint8_t buf[NBD_REPLY_SIZE];
     uint32_t magic;
diff --git a/nbd/common.c b/nbd/common.c
index bd81637ab9..eaa94072f9 100644
--- a/nbd/common.c
+++ b/nbd/common.c
@@ -29,7 +29,7 @@ ssize_t nbd_wr_syncv(QIOChannel *ioc,
                      size_t niov,
                      size_t length,
                      bool do_read,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     ssize_t done = 0;
     struct iovec *local_iov = g_new(struct iovec, niov);
diff --git a/nbd/server.c b/nbd/server.c
index b617ad5a4b..464e8caa8c 100644
--- a/nbd/server.c
+++ b/nbd/server.c
@@ -869,7 +869,7 @@ static void nbd_eject_notifier(Notifier *n, void *data)
 NBDExport *nbd_export_new(BlockDriverState *bs, off_t dev_offset, off_t size,
                           uint16_t nbdflags, void (*close)(NBDExport *),
                           bool writethrough, BlockBackend *on_eject_blk,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     BlockBackend *blk;
     NBDExport *exp = g_malloc0(sizeof(NBDExport));
diff --git a/net/colo-compare.c b/net/colo-compare.c
index 16e46c3a6c..11d4391404 100644
--- a/net/colo-compare.c
+++ b/net/colo-compare.c
@@ -608,14 +608,15 @@ static void *colo_compare_thread(void *opaque)
     return NULL;
 }
 
-static char *compare_get_pri_indev(Object *obj, Error **errp)
+static char *compare_get_pri_indev(Object *obj, Error *errp[static 1])
 {
     CompareState *s = COLO_COMPARE(obj);
 
     return g_strdup(s->pri_indev);
 }
 
-static void compare_set_pri_indev(Object *obj, const char *value, Error **errp)
+static void compare_set_pri_indev(Object *obj, const char *value,
+                                  Error *errp[static 1])
 {
     CompareState *s = COLO_COMPARE(obj);
 
@@ -623,14 +624,15 @@ static void compare_set_pri_indev(Object *obj, const char 
*value, Error **errp)
     s->pri_indev = g_strdup(value);
 }
 
-static char *compare_get_sec_indev(Object *obj, Error **errp)
+static char *compare_get_sec_indev(Object *obj, Error *errp[static 1])
 {
     CompareState *s = COLO_COMPARE(obj);
 
     return g_strdup(s->sec_indev);
 }
 
-static void compare_set_sec_indev(Object *obj, const char *value, Error **errp)
+static void compare_set_sec_indev(Object *obj, const char *value,
+                                  Error *errp[static 1])
 {
     CompareState *s = COLO_COMPARE(obj);
 
@@ -638,14 +640,15 @@ static void compare_set_sec_indev(Object *obj, const char 
*value, Error **errp)
     s->sec_indev = g_strdup(value);
 }
 
-static char *compare_get_outdev(Object *obj, Error **errp)
+static char *compare_get_outdev(Object *obj, Error *errp[static 1])
 {
     CompareState *s = COLO_COMPARE(obj);
 
     return g_strdup(s->outdev);
 }
 
-static void compare_set_outdev(Object *obj, const char *value, Error **errp)
+static void compare_set_outdev(Object *obj, const char *value,
+                               Error *errp[static 1])
 {
     CompareState *s = COLO_COMPARE(obj);
 
@@ -685,7 +688,7 @@ static void compare_sec_rs_finalize(SocketReadState *sec_rs)
  */
 static int find_and_check_chardev(Chardev **chr,
                                   char *chr_name,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     *chr = qemu_chr_find(chr_name);
     if (*chr == NULL) {
@@ -707,7 +710,7 @@ static int find_and_check_chardev(Chardev **chr,
  * Called from the main thread on the primary
  * to setup colo-compare.
  */
-static void colo_compare_complete(UserCreatable *uc, Error **errp)
+static void colo_compare_complete(UserCreatable *uc, Error *errp[static 1])
 {
     CompareState *s = COLO_COMPARE(uc);
     Chardev *chr;
diff --git a/net/dump.c b/net/dump.c
index b66d56e06c..02ec91d784 100644
--- a/net/dump.c
+++ b/net/dump.c
@@ -101,7 +101,7 @@ static void dump_cleanup(DumpState *s)
 }
 
 static int net_dump_state_init(DumpState *s, const char *filename,
-                               int len, Error **errp)
+                               int len, Error *errp[static 1])
 {
     struct pcap_file_hdr hdr;
     struct tm tm;
@@ -180,7 +180,7 @@ static NetClientInfo net_dump_info = {
 };
 
 int net_init_dump(const Netdev *netdev, const char *name,
-                  NetClientState *peer, Error **errp)
+                  NetClientState *peer, Error *errp[static 1])
 {
     int len, rc;
     const char *file;
@@ -264,7 +264,7 @@ static void filter_dump_cleanup(NetFilterState *nf)
     dump_cleanup(&nfds->ds);
 }
 
-static void filter_dump_setup(NetFilterState *nf, Error **errp)
+static void filter_dump_setup(NetFilterState *nf, Error *errp[static 1])
 {
     NetFilterDumpState *nfds = FILTER_DUMP(nf);
 
@@ -277,7 +277,7 @@ static void filter_dump_setup(NetFilterState *nf, Error 
**errp)
 }
 
 static void filter_dump_get_maxlen(Object *obj, Visitor *v, const char *name,
-                                   void *opaque, Error **errp)
+                                   void *opaque, Error *errp[static 1])
 {
     NetFilterDumpState *nfds = FILTER_DUMP(obj);
     uint32_t value = nfds->maxlen;
@@ -286,7 +286,7 @@ static void filter_dump_get_maxlen(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void filter_dump_set_maxlen(Object *obj, Visitor *v, const char *name,
-                                   void *opaque, Error **errp)
+                                   void *opaque, Error *errp[static 1])
 {
     NetFilterDumpState *nfds = FILTER_DUMP(obj);
     Error *local_err = NULL;
@@ -307,14 +307,15 @@ out:
     error_propagate(errp, local_err);
 }
 
-static char *file_dump_get_filename(Object *obj, Error **errp)
+static char *file_dump_get_filename(Object *obj, Error *errp[static 1])
 {
     NetFilterDumpState *nfds = FILTER_DUMP(obj);
 
     return g_strdup(nfds->filename);
 }
 
-static void file_dump_set_filename(Object *obj, const char *value, Error 
**errp)
+static void file_dump_set_filename(Object *obj, const char *value,
+                                   Error *errp[static 1])
 {
    NetFilterDumpState *nfds = FILTER_DUMP(obj);
 
diff --git a/net/filter-buffer.c b/net/filter-buffer.c
index 0a9c12aa1a..485b263a92 100644
--- a/net/filter-buffer.c
+++ b/net/filter-buffer.c
@@ -114,7 +114,7 @@ static void filter_buffer_setup_timer(NetFilterState *nf)
     }
 }
 
-static void filter_buffer_setup(NetFilterState *nf, Error **errp)
+static void filter_buffer_setup(NetFilterState *nf, Error *errp[static 1])
 {
     FilterBufferState *s = FILTER_BUFFER(nf);
 
@@ -132,7 +132,8 @@ static void filter_buffer_setup(NetFilterState *nf, Error 
**errp)
     filter_buffer_setup_timer(nf);
 }
 
-static void filter_buffer_status_changed(NetFilterState *nf, Error **errp)
+static void filter_buffer_status_changed(NetFilterState *nf,
+                                         Error *errp[static 1])
 {
     FilterBufferState *s = FILTER_BUFFER(nf);
 
@@ -158,7 +159,7 @@ static void filter_buffer_class_init(ObjectClass *oc, void 
*data)
 
 static void filter_buffer_get_interval(Object *obj, Visitor *v,
                                        const char *name, void *opaque,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     FilterBufferState *s = FILTER_BUFFER(obj);
     uint32_t value = s->interval;
@@ -168,7 +169,7 @@ static void filter_buffer_get_interval(Object *obj, Visitor 
*v,
 
 static void filter_buffer_set_interval(Object *obj, Visitor *v,
                                        const char *name, void *opaque,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     FilterBufferState *s = FILTER_BUFFER(obj);
     Error *local_err = NULL;
diff --git a/net/filter-mirror.c b/net/filter-mirror.c
index c86d355c93..c73a50ab65 100644
--- a/net/filter-mirror.c
+++ b/net/filter-mirror.c
@@ -189,7 +189,7 @@ static void filter_redirector_cleanup(NetFilterState *nf)
     qemu_chr_fe_deinit(&s->chr_out, false);
 }
 
-static void filter_mirror_setup(NetFilterState *nf, Error **errp)
+static void filter_mirror_setup(NetFilterState *nf, Error *errp[static 1])
 {
     MirrorState *s = FILTER_MIRROR(nf);
     Chardev *chr;
@@ -212,7 +212,7 @@ static void redirector_rs_finalize(SocketReadState *rs)
     redirector_to_filter(nf, rs->buf, rs->packet_len);
 }
 
-static void filter_redirector_setup(NetFilterState *nf, Error **errp)
+static void filter_redirector_setup(NetFilterState *nf, Error *errp[static 1])
 {
     MirrorState *s = FILTER_REDIRECTOR(nf);
     Chardev *chr;
@@ -279,7 +279,7 @@ static void filter_redirector_class_init(ObjectClass *oc, 
void *data)
     nfc->receive_iov = filter_redirector_receive_iov;
 }
 
-static char *filter_redirector_get_indev(Object *obj, Error **errp)
+static char *filter_redirector_get_indev(Object *obj, Error *errp[static 1])
 {
     MirrorState *s = FILTER_REDIRECTOR(obj);
 
@@ -288,7 +288,7 @@ static char *filter_redirector_get_indev(Object *obj, Error 
**errp)
 
 static void filter_redirector_set_indev(Object *obj,
                                         const char *value,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     MirrorState *s = FILTER_REDIRECTOR(obj);
 
@@ -296,7 +296,7 @@ static void filter_redirector_set_indev(Object *obj,
     s->indev = g_strdup(value);
 }
 
-static char *filter_mirror_get_outdev(Object *obj, Error **errp)
+static char *filter_mirror_get_outdev(Object *obj, Error *errp[static 1])
 {
     MirrorState *s = FILTER_MIRROR(obj);
 
@@ -305,7 +305,7 @@ static char *filter_mirror_get_outdev(Object *obj, Error 
**errp)
 
 static void filter_mirror_set_outdev(Object *obj,
                                      const char *value,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     MirrorState *s = FILTER_MIRROR(obj);
 
@@ -318,7 +318,7 @@ static void filter_mirror_set_outdev(Object *obj,
     }
 }
 
-static char *filter_redirector_get_outdev(Object *obj, Error **errp)
+static char *filter_redirector_get_outdev(Object *obj, Error *errp[static 1])
 {
     MirrorState *s = FILTER_REDIRECTOR(obj);
 
@@ -327,7 +327,7 @@ static char *filter_redirector_get_outdev(Object *obj, 
Error **errp)
 
 static void filter_redirector_set_outdev(Object *obj,
                                          const char *value,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     MirrorState *s = FILTER_REDIRECTOR(obj);
 
diff --git a/net/filter-rewriter.c b/net/filter-rewriter.c
index afa06e8919..b0d64140e1 100644
--- a/net/filter-rewriter.c
+++ b/net/filter-rewriter.c
@@ -226,7 +226,7 @@ static void colo_rewriter_cleanup(NetFilterState *nf)
     }
 }
 
-static void colo_rewriter_setup(NetFilterState *nf, Error **errp)
+static void colo_rewriter_setup(NetFilterState *nf, Error *errp[static 1])
 {
     RewriterState *s = FILTER_COLO_REWRITER(nf);
 
diff --git a/net/filter.c b/net/filter.c
index 43af9f3733..9687d1ee28 100644
--- a/net/filter.c
+++ b/net/filter.c
@@ -117,40 +117,44 @@ out:
     return iov_size(iov, iovcnt);
 }
 
-static char *netfilter_get_netdev_id(Object *obj, Error **errp)
+static char *netfilter_get_netdev_id(Object *obj, Error *errp[static 1])
 {
     NetFilterState *nf = NETFILTER(obj);
 
     return g_strdup(nf->netdev_id);
 }
 
-static void netfilter_set_netdev_id(Object *obj, const char *str, Error **errp)
+static void netfilter_set_netdev_id(Object *obj, const char *str,
+                                    Error *errp[static 1])
 {
     NetFilterState *nf = NETFILTER(obj);
 
     nf->netdev_id = g_strdup(str);
 }
 
-static int netfilter_get_direction(Object *obj, Error **errp G_GNUC_UNUSED)
+static int netfilter_get_direction(Object *obj,
+                                   Error *errp[static 1] G_GNUC_UNUSED)
 {
     NetFilterState *nf = NETFILTER(obj);
     return nf->direction;
 }
 
-static void netfilter_set_direction(Object *obj, int direction, Error **errp)
+static void netfilter_set_direction(Object *obj, int direction,
+                                    Error *errp[static 1])
 {
     NetFilterState *nf = NETFILTER(obj);
     nf->direction = direction;
 }
 
-static char *netfilter_get_status(Object *obj, Error **errp)
+static char *netfilter_get_status(Object *obj, Error *errp[static 1])
 {
     NetFilterState *nf = NETFILTER(obj);
 
     return nf->on ? g_strdup("on") : g_strdup("off");
 }
 
-static void netfilter_set_status(Object *obj, const char *str, Error **errp)
+static void netfilter_set_status(Object *obj, const char *str,
+                                 Error *errp[static 1])
 {
     NetFilterState *nf = NETFILTER(obj);
     NetFilterClass *nfc = NETFILTER_GET_CLASS(obj);
@@ -187,7 +191,7 @@ static void netfilter_init(Object *obj)
                             IGNORE_ERRORS);
 }
 
-static void netfilter_complete(UserCreatable *uc, Error **errp)
+static void netfilter_complete(UserCreatable *uc, Error *errp[static 1])
 {
     NetFilterState *nf = NETFILTER(uc);
     NetClientState *ncs[MAX_QUEUE_NUM];
diff --git a/net/hub.c b/net/hub.c
index 32d8cf5cd4..a50d7f92bd 100644
--- a/net/hub.c
+++ b/net/hub.c
@@ -282,7 +282,7 @@ int net_hub_id_for_client(NetClientState *nc, int *id)
 }
 
 int net_init_hubport(const Netdev *netdev, const char *name,
-                     NetClientState *peer, Error **errp)
+                     NetClientState *peer, Error *errp[static 1])
 {
     const NetdevHubPortOptions *hubport;
 
diff --git a/net/l2tpv3.c b/net/l2tpv3.c
index 6745b78990..e86ab39f7a 100644
--- a/net/l2tpv3.c
+++ b/net/l2tpv3.c
@@ -526,7 +526,7 @@ static NetClientInfo net_l2tpv3_info = {
 
 int net_init_l2tpv3(const Netdev *netdev,
                     const char *name,
-                    NetClientState *peer, Error **errp)
+                    NetClientState *peer, Error *errp[static 1])
 {
     /* FIXME error_setg(errp, ...) on failure */
     const NetdevL2TPv3Options *l2tpv3;
diff --git a/net/net.c b/net/net.c
index 5c09301692..cf86e6a298 100644
--- a/net/net.c
+++ b/net/net.c
@@ -868,7 +868,7 @@ int qemu_find_nic_model(NICInfo *nd, const char * const 
*models,
 }
 
 static int net_init_nic(const Netdev *netdev, const char *name,
-                        NetClientState *peer, Error **errp)
+                        NetClientState *peer, Error *errp[static 1])
 {
     int idx;
     NICInfo *nd;
@@ -965,7 +965,8 @@ static int (* const 
net_client_init_fun[NET_CLIENT_DRIVER__MAX])(
 };
 
 
-static int net_client_init1(const void *object, bool is_netdev, Error **errp)
+static int net_client_init1(const void *object, bool is_netdev,
+                            Error *errp[static 1])
 {
     Netdev legacy = {0};
     const Netdev *netdev;
@@ -1071,7 +1072,7 @@ static int net_client_init1(const void *object, bool 
is_netdev, Error **errp)
 }
 
 
-int net_client_init(QemuOpts *opts, bool is_netdev, Error **errp)
+int net_client_init(QemuOpts *opts, bool is_netdev, Error *errp[static 1])
 {
     void *object = NULL;
     Error *err = NULL;
@@ -1205,12 +1206,12 @@ void hmp_host_net_remove(Monitor *mon, const QDict 
*qdict)
     qemu_opts_del(qemu_opts_find(qemu_find_opts("net"), device));
 }
 
-void netdev_add(QemuOpts *opts, Error **errp)
+void netdev_add(QemuOpts *opts, Error *errp[static 1])
 {
     net_client_init(opts, true, errp);
 }
 
-void qmp_netdev_add(QDict *qdict, QObject **ret, Error **errp)
+void qmp_netdev_add(QDict *qdict, QObject **ret, Error *errp[static 1])
 {
     Error *local_err = NULL;
     QemuOptsList *opts_list;
@@ -1236,7 +1237,7 @@ out:
     error_propagate(errp, local_err);
 }
 
-void qmp_netdev_del(const char *id, Error **errp)
+void qmp_netdev_del(const char *id, Error *errp[static 1])
 {
     NetClientState *nc;
     QemuOpts *opts;
@@ -1303,7 +1304,7 @@ void print_net_client(Monitor *mon, NetClientState *nc)
 }
 
 RxFilterInfoList *qmp_query_rx_filter(bool has_name, const char *name,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     NetClientState *nc;
     RxFilterInfoList *filter_list = NULL, *last_entry = NULL;
@@ -1386,7 +1387,7 @@ void hmp_info_network(Monitor *mon, const QDict *qdict)
     }
 }
 
-void qmp_set_link(const char *name, bool up, Error **errp)
+void qmp_set_link(const char *name, bool up, Error *errp[static 1])
 {
     NetClientState *ncs[MAX_QUEUE_NUM];
     NetClientState *nc;
@@ -1501,7 +1502,7 @@ void net_check_clients(void)
     }
 }
 
-static int net_init_client(void *dummy, QemuOpts *opts, Error **errp)
+static int net_init_client(void *dummy, QemuOpts *opts, Error *errp[static 1])
 {
     Error *local_err = NULL;
 
@@ -1514,7 +1515,7 @@ static int net_init_client(void *dummy, QemuOpts *opts, 
Error **errp)
     return 0;
 }
 
-static int net_init_netdev(void *dummy, QemuOpts *opts, Error **errp)
+static int net_init_netdev(void *dummy, QemuOpts *opts, Error *errp[static 1])
 {
     Error *local_err = NULL;
     int ret;
diff --git a/net/netmap.c b/net/netmap.c
index 2d11a8f4be..a1a8b3fb7b 100644
--- a/net/netmap.c
+++ b/net/netmap.c
@@ -82,7 +82,7 @@ pkt_copy(const void *_src, void *_dst, int l)
  * (which is the case for the VALE bridge).
  */
 static struct nm_desc *netmap_open(const NetdevNetmapOptions *nm_opts,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     struct nm_desc *nmd;
     struct nmreq req;
@@ -419,7 +419,8 @@ static NetClientInfo net_netmap_info = {
  * ... -net netmap,ifname="..."
  */
 int net_init_netmap(const Netdev *netdev,
-                    const char *name, NetClientState *peer, Error **errp)
+                    const char *name, NetClientState *peer,
+                    Error *errp[static 1])
 {
     const NetdevNetmapOptions *netmap_opts = &netdev->u.netmap;
     struct nm_desc *nmd;
diff --git a/net/slirp.c b/net/slirp.c
index 6a6d727999..5325cb1e30 100644
--- a/net/slirp.c
+++ b/net/slirp.c
@@ -843,7 +843,7 @@ static const char **slirp_dnssearch(const StringList 
*dnsname)
 }
 
 int net_init_slirp(const Netdev *netdev, const char *name,
-                   NetClientState *peer, Error **errp)
+                   NetClientState *peer, Error *errp[static 1])
 {
     /* FIXME error_setg(errp, ...) on failure */
     struct slirp_config_str *config;
diff --git a/net/socket.c b/net/socket.c
index dcae1ae2c0..7c041ff5bd 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -666,7 +666,7 @@ static int net_socket_udp_init(NetClientState *peer,
 }
 
 int net_init_socket(const Netdev *netdev, const char *name,
-                    NetClientState *peer, Error **errp)
+                    NetClientState *peer, Error *errp[static 1])
 {
     /* FIXME error_setg(errp, ...) on failure */
     Error *err = NULL;
diff --git a/net/tap-bsd.c b/net/tap-bsd.c
index 6c9692263d..5b6fb50090 100644
--- a/net/tap-bsd.c
+++ b/net/tap-bsd.c
@@ -41,7 +41,7 @@
 
 #ifndef __FreeBSD__
 int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
-             int vnet_hdr_required, int mq_required, Error **errp)
+             int vnet_hdr_required, int mq_required, Error *errp[static 1])
 {
     int fd;
 #ifdef TAPGIFNAME
@@ -115,7 +115,8 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
 
 #define PATH_NET_TAP "/dev/tap"
 
-static int tap_open_clone(char *ifname, int ifname_size, Error **errp)
+static int tap_open_clone(char *ifname, int ifname_size,
+                          Error *errp[static 1])
 {
     int fd, s, ret;
     struct ifreq ifr;
@@ -160,7 +161,7 @@ static int tap_open_clone(char *ifname, int ifname_size, 
Error **errp)
 }
 
 int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
-             int vnet_hdr_required, int mq_required, Error **errp)
+             int vnet_hdr_required, int mq_required, Error *errp[static 1])
 {
     int fd = -1;
 
@@ -207,7 +208,8 @@ error:
 }
 #endif /* __FreeBSD__ */
 
-void tap_set_sndbuf(int fd, const NetdevTapOptions *tap, Error **errp)
+void tap_set_sndbuf(int fd, const NetdevTapOptions *tap,
+                   Error *errp[static 1])
 {
 }
 
diff --git a/net/tap-linux.c b/net/tap-linux.c
index a503fa9c6e..6032377666 100644
--- a/net/tap-linux.c
+++ b/net/tap-linux.c
@@ -39,7 +39,7 @@
 #define PATH_NET_TUN "/dev/net/tun"
 
 int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
-             int vnet_hdr_required, int mq_required, Error **errp)
+             int vnet_hdr_required, int mq_required, Error *errp[static 1])
 {
     struct ifreq ifr;
     int fd, ret;
@@ -130,7 +130,8 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
  */
 #define TAP_DEFAULT_SNDBUF 0
 
-void tap_set_sndbuf(int fd, const NetdevTapOptions *tap, Error **errp)
+void tap_set_sndbuf(int fd, const NetdevTapOptions *tap,
+                    Error *errp[static 1])
 {
     int sndbuf;
 
diff --git a/net/tap-solaris.c b/net/tap-solaris.c
index a2a92356c1..a44d4ec6c7 100644
--- a/net/tap-solaris.c
+++ b/net/tap-solaris.c
@@ -57,7 +57,7 @@ ssize_t tap_read_packet(int tapfd, uint8_t *buf, int maxlen)
  * Allocate TAP device, returns opened fd.
  * Stores dev name in the first arg(must be large enough).
  */
-static int tap_alloc(char *dev, size_t dev_size, Error **errp)
+static int tap_alloc(char *dev, size_t dev_size, Error *errp[static 1])
 {
     /* FIXME leaks like a sieve on error paths */
     /* FIXME suspicious: many errors are reported, then ignored */
@@ -177,7 +177,7 @@ static int tap_alloc(char *dev, size_t dev_size, Error 
**errp)
 }
 
 int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
-             int vnet_hdr_required, int mq_required, Error **errp)
+             int vnet_hdr_required, int mq_required, Error *errp[static 1])
 {
     char  dev[10]="";
     int fd;
@@ -202,7 +202,8 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
     return fd;
 }
 
-void tap_set_sndbuf(int fd, const NetdevTapOptions *tap, Error **errp)
+void tap_set_sndbuf(int fd, const NetdevTapOptions *tap,
+                   Error *errp[static 1])
 {
 }
 
diff --git a/net/tap-stub.c b/net/tap-stub.c
index a9ab8f8293..b3bdfc731f 100644
--- a/net/tap-stub.c
+++ b/net/tap-stub.c
@@ -27,13 +27,14 @@
 #include "tap_int.h"
 
 int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
-             int vnet_hdr_required, int mq_required, Error **errp)
+             int vnet_hdr_required, int mq_required, Error *errp[static 1])
 {
     error_setg(errp, "tap is not supported in this build");
     return -1;
 }
 
-void tap_set_sndbuf(int fd, const NetdevTapOptions *tap, Error **errp)
+void tap_set_sndbuf(int fd, const NetdevTapOptions *tap,
+                   Error *errp[static 1])
 {
 }
 
diff --git a/net/tap-win32.c b/net/tap-win32.c
index 662f9b63e1..4872d0cdb5 100644
--- a/net/tap-win32.c
+++ b/net/tap-win32.c
@@ -789,7 +789,7 @@ static int tap_win32_init(NetClientState *peer, const char 
*model,
 }
 
 int net_init_tap(const Netdev *netdev, const char *name,
-                 NetClientState *peer, Error **errp)
+                 NetClientState *peer, Error *errp[static 1])
 {
     /* FIXME error_setg(errp, ...) on failure */
     const NetdevTapOptions *tap;
diff --git a/net/tap.c b/net/tap.c
index 70e5dda82a..15a12beb02 100644
--- a/net/tap.c
+++ b/net/tap.c
@@ -62,7 +62,7 @@ typedef struct TAPState {
 } TAPState;
 
 static void launch_script(const char *setup_script, const char *ifname,
-                          int fd, Error **errp);
+                          int fd, Error *errp[static 1]);
 
 static void tap_send(void *opaque);
 static void tap_writable(void *opaque);
@@ -397,7 +397,7 @@ static TAPState *net_tap_fd_init(NetClientState *peer,
 }
 
 static void launch_script(const char *setup_script, const char *ifname,
-                          int fd, Error **errp)
+                          int fd, Error *errp[static 1])
 {
     int pid, status;
     char *args[3];
@@ -472,7 +472,7 @@ static int recv_fd(int c)
 }
 
 static int net_bridge_run_helper(const char *helper, const char *bridge,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     sigset_t oldmask, mask;
     int pid, status;
@@ -573,7 +573,7 @@ static int net_bridge_run_helper(const char *helper, const 
char *bridge,
 }
 
 int net_init_bridge(const Netdev *netdev, const char *name,
-                    NetClientState *peer, Error **errp)
+                    NetClientState *peer, Error *errp[static 1])
 {
     const NetdevBridgeOptions *bridge;
     const char *helper, *br;
@@ -603,7 +603,8 @@ int net_init_bridge(const Netdev *netdev, const char *name,
 
 static int net_tap_init(const NetdevTapOptions *tap, int *vnet_hdr,
                         const char *setup_script, char *ifname,
-                        size_t ifname_sz, int mq_required, Error **errp)
+                        size_t ifname_sz, int mq_required,
+                        Error *errp[static 1])
 {
     int fd, vnet_hdr_required;
 
@@ -640,7 +641,7 @@ static void net_init_tap_one(const NetdevTapOptions *tap, 
NetClientState *peer,
                              const char *model, const char *name,
                              const char *ifname, const char *script,
                              const char *downscript, const char *vhostfdname,
-                             int vnet_hdr, int fd, Error **errp)
+                             int vnet_hdr, int fd, Error *errp[static 1])
 {
     Error *err = NULL;
     TAPState *s = net_tap_fd_init(peer, model, name, fd, vnet_hdr);
@@ -736,7 +737,7 @@ static int get_fds(char *str, char *fds[], int max)
 }
 
 int net_init_tap(const Netdev *netdev, const char *name,
-                 NetClientState *peer, Error **errp)
+                 NetClientState *peer, Error *errp[static 1])
 {
     const NetdevTapOptions *tap;
     int fd, vnet_hdr = 0, i = 0, queues;
diff --git a/net/vde.c b/net/vde.c
index e50e5d6394..a4aedd25d7 100644
--- a/net/vde.c
+++ b/net/vde.c
@@ -110,7 +110,7 @@ static int net_vde_init(NetClientState *peer, const char 
*model,
 }
 
 int net_init_vde(const Netdev *netdev, const char *name,
-                 NetClientState *peer, Error **errp)
+                 NetClientState *peer, Error *errp[static 1])
 {
     /* FIXME error_setg(errp, ...) on failure */
     const NetdevVdeOptions *vde;
diff --git a/net/vhost-user.c b/net/vhost-user.c
index a042ec6a34..5774fb4377 100644
--- a/net/vhost-user.c
+++ b/net/vhost-user.c
@@ -314,7 +314,7 @@ static int net_vhost_user_init(NetClientState *peer, const 
char *device,
 }
 
 static Chardev *net_vhost_claim_chardev(
-    const NetdevVhostUserOptions *opts, Error **errp)
+    const NetdevVhostUserOptions *opts, Error *errp[static 1])
 {
     Chardev *chr = qemu_chr_find(opts->chardev);
 
@@ -337,7 +337,8 @@ static Chardev *net_vhost_claim_chardev(
     return chr;
 }
 
-static int net_vhost_check_net(void *opaque, QemuOpts *opts, Error **errp)
+static int net_vhost_check_net(void *opaque, QemuOpts *opts,
+                               Error *errp[static 1])
 {
     const char *name = opaque;
     const char *driver, *netdev;
@@ -359,7 +360,7 @@ static int net_vhost_check_net(void *opaque, QemuOpts 
*opts, Error **errp)
 }
 
 int net_init_vhost_user(const Netdev *netdev, const char *name,
-                        NetClientState *peer, Error **errp)
+                        NetClientState *peer, Error *errp[static 1])
 {
     int queues;
     const NetdevVhostUserOptions *vhost_user_opts;
diff --git a/numa.c b/numa.c
index 7886d31e09..49ad92804a 100644
--- a/numa.c
+++ b/numa.c
@@ -120,7 +120,7 @@ static bool numa_addr_belongs_to_node(ram_addr_t addr, 
uint32_t node)
  * Given an address, return the index of the NUMA node to which the
  * address belongs to.
  */
-uint32_t numa_get_node(ram_addr_t addr, Error **errp)
+uint32_t numa_get_node(ram_addr_t addr, Error *errp[static 1])
 {
     uint32_t i;
 
@@ -143,7 +143,7 @@ uint32_t numa_get_node(ram_addr_t addr, Error **errp)
 }
 
 static void parse_numa_node(MachineState *ms, NumaNodeOptions *node,
-                            QemuOpts *opts, Error **errp)
+                            QemuOpts *opts, Error *errp[static 1])
 {
     uint16_t nodenr;
     uint16List *cpus = NULL;
@@ -225,7 +225,7 @@ static void parse_numa_node(MachineState *ms, 
NumaNodeOptions *node,
     max_numa_nodeid = MAX(max_numa_nodeid, nodenr + 1);
 }
 
-static void parse_numa_distance(NumaDistOptions *dist, Error **errp)
+static void parse_numa_distance(NumaDistOptions *dist, Error *errp[static 1])
 {
     uint16_t src = dist->src;
     uint16_t dst = dist->dst;
@@ -261,7 +261,7 @@ static void parse_numa_distance(NumaDistOptions *dist, 
Error **errp)
     have_numa_distance = true;
 }
 
-static int parse_numa(void *opaque, QemuOpts *opts, Error **errp)
+static int parse_numa(void *opaque, QemuOpts *opts, Error *errp[static 1])
 {
     NumaOptions *object = NULL;
     MachineState *ms = opaque;
@@ -509,7 +509,8 @@ void parse_numa_opts(MachineState *ms)
     }
 }
 
-void numa_cpu_pre_plug(const CPUArchId *slot, DeviceState *dev, Error **errp)
+void numa_cpu_pre_plug(const CPUArchId *slot, DeviceState *dev,
+                       Error *errp[static 1])
 {
     int node_id = object_property_get_int(OBJECT(dev), "node-id", 
&error_abort);
 
@@ -667,7 +668,7 @@ static int query_memdev(Object *obj, void *opaque)
     return 0;
 }
 
-MemdevList *qmp_query_memdev(Error **errp)
+MemdevList *qmp_query_memdev(Error *errp[static 1])
 {
     Object *obj = object_get_objects_root();
     MemdevList *list = NULL;
diff --git a/qapi/opts-visitor.c b/qapi/opts-visitor.c
index 3e408e4bf0..16b8b04b09 100644
--- a/qapi/opts-visitor.c
+++ b/qapi/opts-visitor.c
@@ -126,7 +126,7 @@ opts_visitor_insert(GHashTable *unprocessed_opts, const 
QemuOpt *opt)
 
 static void
 opts_start_struct(Visitor *v, const char *name, void **obj,
-                  size_t size, Error **errp)
+                  size_t size, Error *errp[static 1])
 {
     OptsVisitor *ov = to_ov(v);
     const QemuOpt *opt;
@@ -158,7 +158,7 @@ opts_start_struct(Visitor *v, const char *name, void **obj,
 
 
 static void
-opts_check_struct(Visitor *v, Error **errp)
+opts_check_struct(Visitor *v, Error *errp[static 1])
 {
     OptsVisitor *ov = to_ov(v);
     GHashTableIter iter;
@@ -200,7 +200,8 @@ opts_end_struct(Visitor *v, void **obj)
 
 
 static GQueue *
-lookup_distinct(const OptsVisitor *ov, const char *name, Error **errp)
+lookup_distinct(const OptsVisitor *ov, const char *name,
+                Error *errp[static 1])
 {
     GQueue *list;
 
@@ -214,7 +215,7 @@ lookup_distinct(const OptsVisitor *ov, const char *name, 
Error **errp)
 
 static void
 opts_start_list(Visitor *v, const char *name, GenericList **list, size_t size,
-                Error **errp)
+                Error *errp[static 1])
 {
     OptsVisitor *ov = to_ov(v);
 
@@ -273,7 +274,7 @@ opts_next_list(Visitor *v, GenericList *tail, size_t size)
 
 
 static void
-opts_check_list(Visitor *v, Error **errp)
+opts_check_list(Visitor *v, Error *errp[static 1])
 {
     /*
      * Unvisited list elements will be reported later when checking
@@ -296,7 +297,7 @@ opts_end_list(Visitor *v, void **obj)
 
 
 static const QemuOpt *
-lookup_scalar(const OptsVisitor *ov, const char *name, Error **errp)
+lookup_scalar(const OptsVisitor *ov, const char *name, Error *errp[static 1])
 {
     if (ov->list_mode == LM_NONE) {
         GQueue *list;
@@ -324,7 +325,7 @@ processed(OptsVisitor *ov, const char *name)
 
 
 static void
-opts_type_str(Visitor *v, const char *name, char **obj, Error **errp)
+opts_type_str(Visitor *v, const char *name, char **obj, Error *errp[static 1])
 {
     OptsVisitor *ov = to_ov(v);
     const QemuOpt *opt;
@@ -346,7 +347,7 @@ opts_type_str(Visitor *v, const char *name, char **obj, 
Error **errp)
 
 /* mimics qemu-option.c::parse_option_bool() */
 static void
-opts_type_bool(Visitor *v, const char *name, bool *obj, Error **errp)
+opts_type_bool(Visitor *v, const char *name, bool *obj, Error *errp[static 1])
 {
     OptsVisitor *ov = to_ov(v);
     const QemuOpt *opt;
@@ -379,7 +380,8 @@ opts_type_bool(Visitor *v, const char *name, bool *obj, 
Error **errp)
 
 
 static void
-opts_type_int64(Visitor *v, const char *name, int64_t *obj, Error **errp)
+opts_type_int64(Visitor *v, const char *name, int64_t *obj,
+                Error *errp[static 1])
 {
     OptsVisitor *ov = to_ov(v);
     const QemuOpt *opt;
@@ -435,7 +437,8 @@ opts_type_int64(Visitor *v, const char *name, int64_t *obj, 
Error **errp)
 
 
 static void
-opts_type_uint64(Visitor *v, const char *name, uint64_t *obj, Error **errp)
+opts_type_uint64(Visitor *v, const char *name, uint64_t *obj,
+                 Error *errp[static 1])
 {
     OptsVisitor *ov = to_ov(v);
     const QemuOpt *opt;
@@ -487,7 +490,8 @@ opts_type_uint64(Visitor *v, const char *name, uint64_t 
*obj, Error **errp)
 
 
 static void
-opts_type_size(Visitor *v, const char *name, uint64_t *obj, Error **errp)
+opts_type_size(Visitor *v, const char *name, uint64_t *obj,
+               Error *errp[static 1])
 {
     OptsVisitor *ov = to_ov(v);
     const QemuOpt *opt;
diff --git a/qapi/qapi-clone-visitor.c b/qapi/qapi-clone-visitor.c
index de756bfb33..bfb3ea88e4 100644
--- a/qapi/qapi-clone-visitor.c
+++ b/qapi/qapi-clone-visitor.c
@@ -24,7 +24,7 @@ static QapiCloneVisitor *to_qcv(Visitor *v)
 }
 
 static void qapi_clone_start_struct(Visitor *v, const char *name, void **obj,
-                                    size_t size, Error **errp)
+                                    size_t size, Error *errp[static 1])
 {
     QapiCloneVisitor *qcv = to_qcv(v);
 
@@ -52,7 +52,7 @@ static void qapi_clone_end(Visitor *v, void **obj)
 
 static void qapi_clone_start_list(Visitor *v, const char *name,
                                   GenericList **listp, size_t size,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     qapi_clone_start_struct(v, name, (void **)listp, size, errp);
 }
@@ -70,13 +70,14 @@ static GenericList *qapi_clone_next_list(Visitor *v, 
GenericList *tail,
 
 static void qapi_clone_start_alternate(Visitor *v, const char *name,
                                        GenericAlternate **obj, size_t size,
-                                       bool promote_int, Error **errp)
+                                       bool promote_int,
+                                       Error *errp[static 1])
 {
     qapi_clone_start_struct(v, name, (void **)obj, size, errp);
 }
 
 static void qapi_clone_type_int64(Visitor *v, const char *name, int64_t *obj,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     QapiCloneVisitor *qcv = to_qcv(v);
 
@@ -85,7 +86,7 @@ static void qapi_clone_type_int64(Visitor *v, const char 
*name, int64_t *obj,
 }
 
 static void qapi_clone_type_uint64(Visitor *v, const char *name,
-                                    uint64_t *obj, Error **errp)
+                                    uint64_t *obj, Error *errp[static 1])
 {
     QapiCloneVisitor *qcv = to_qcv(v);
 
@@ -94,7 +95,7 @@ static void qapi_clone_type_uint64(Visitor *v, const char 
*name,
 }
 
 static void qapi_clone_type_bool(Visitor *v, const char *name, bool *obj,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     QapiCloneVisitor *qcv = to_qcv(v);
 
@@ -103,7 +104,7 @@ static void qapi_clone_type_bool(Visitor *v, const char 
*name, bool *obj,
 }
 
 static void qapi_clone_type_str(Visitor *v, const char *name, char **obj,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     QapiCloneVisitor *qcv = to_qcv(v);
 
@@ -119,7 +120,7 @@ static void qapi_clone_type_str(Visitor *v, const char 
*name, char **obj,
 }
 
 static void qapi_clone_type_number(Visitor *v, const char *name, double *obj,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     QapiCloneVisitor *qcv = to_qcv(v);
 
@@ -127,7 +128,8 @@ static void qapi_clone_type_number(Visitor *v, const char 
*name, double *obj,
     /* Value was already cloned by g_memdup() */
 }
 
-static void qapi_clone_type_null(Visitor *v, const char *name, Error **errp)
+static void qapi_clone_type_null(Visitor *v, const char *name,
+                                 Error *errp[static 1])
 {
     QapiCloneVisitor *qcv = to_qcv(v);
 
diff --git a/qapi/qapi-dealloc-visitor.c b/qapi/qapi-dealloc-visitor.c
index e39457bc79..29584f999e 100644
--- a/qapi/qapi-dealloc-visitor.c
+++ b/qapi/qapi-dealloc-visitor.c
@@ -25,7 +25,7 @@ struct QapiDeallocVisitor
 };
 
 static void qapi_dealloc_start_struct(Visitor *v, const char *name, void **obj,
-                                      size_t unused, Error **errp)
+                                      size_t unused, Error *errp[static 1])
 {
 }
 
@@ -38,7 +38,8 @@ static void qapi_dealloc_end_struct(Visitor *v, void **obj)
 
 static void qapi_dealloc_start_alternate(Visitor *v, const char *name,
                                          GenericAlternate **obj, size_t size,
-                                         bool promote_int, Error **errp)
+                                         bool promote_int,
+                                         Error *errp[static 1])
 {
 }
 
@@ -51,7 +52,7 @@ static void qapi_dealloc_end_alternate(Visitor *v, void **obj)
 
 static void qapi_dealloc_start_list(Visitor *v, const char *name,
                                     GenericList **list, size_t size,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
 }
 
@@ -68,7 +69,7 @@ static void qapi_dealloc_end_list(Visitor *v, void **obj)
 }
 
 static void qapi_dealloc_type_str(Visitor *v, const char *name, char **obj,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     if (obj) {
         g_free(*obj);
@@ -76,34 +77,35 @@ static void qapi_dealloc_type_str(Visitor *v, const char 
*name, char **obj,
 }
 
 static void qapi_dealloc_type_int64(Visitor *v, const char *name, int64_t *obj,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
 }
 
 static void qapi_dealloc_type_uint64(Visitor *v, const char *name,
-                                     uint64_t *obj, Error **errp)
+                                     uint64_t *obj, Error *errp[static 1])
 {
 }
 
 static void qapi_dealloc_type_bool(Visitor *v, const char *name, bool *obj,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
 }
 
 static void qapi_dealloc_type_number(Visitor *v, const char *name, double *obj,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
 }
 
 static void qapi_dealloc_type_anything(Visitor *v, const char *name,
-                                       QObject **obj, Error **errp)
+                                       QObject **obj, Error *errp[static 1])
 {
     if (obj) {
         qobject_decref(*obj);
     }
 }
 
-static void qapi_dealloc_type_null(Visitor *v, const char *name, Error **errp)
+static void qapi_dealloc_type_null(Visitor *v, const char *name,
+                                  Error *errp[static 1])
 {
 }
 
diff --git a/qapi/qapi-util.c b/qapi/qapi-util.c
index e28dbd0ac3..65e09c5571 100644
--- a/qapi/qapi-util.c
+++ b/qapi/qapi-util.c
@@ -16,7 +16,7 @@
 #include "qapi/util.h"
 
 int qapi_enum_parse(const char * const lookup[], const char *buf,
-                    int max, int def, Error **errp)
+                    int max, int def, Error *errp[static 1])
 {
     int i;
 
diff --git a/qapi/qmp-dispatch.c b/qapi/qmp-dispatch.c
index 5ad36f8a09..4eadb5adb5 100644
--- a/qapi/qmp-dispatch.c
+++ b/qapi/qmp-dispatch.c
@@ -20,7 +20,8 @@
 #include "qapi-types.h"
 #include "qapi/qmp/qerror.h"
 
-static QDict *qmp_dispatch_check_obj(const QObject *request, Error **errp)
+static QDict *qmp_dispatch_check_obj(const QObject *request,
+                                     Error *errp[static 1])
 {
     const QDictEntry *ent;
     const char *arg_name;
@@ -68,7 +69,7 @@ static QDict *qmp_dispatch_check_obj(const QObject *request, 
Error **errp)
 }
 
 static QObject *do_qmp_dispatch(QmpCommandList *cmds, QObject *request,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     Error *local_err = NULL;
     const char *command;
diff --git a/qapi/qobject-input-visitor.c b/qapi/qobject-input-visitor.c
index 7da822b3a2..9724c6ba4f 100644
--- a/qapi/qobject-input-visitor.c
+++ b/qapi/qobject-input-visitor.c
@@ -158,7 +158,7 @@ static QObject 
*qobject_input_try_get_object(QObjectInputVisitor *qiv,
 
 static QObject *qobject_input_get_object(QObjectInputVisitor *qiv,
                                          const char *name,
-                                         bool consume, Error **errp)
+                                         bool consume, Error *errp[static 1])
 {
     QObject *obj = qobject_input_try_get_object(qiv, name, consume);
 
@@ -170,7 +170,7 @@ static QObject 
*qobject_input_get_object(QObjectInputVisitor *qiv,
 
 static const char *qobject_input_get_keyval(QObjectInputVisitor *qiv,
                                             const char *name,
-                                            Error **errp)
+                                            Error *errp[static 1])
 {
     QObject *qobj;
     QString *qstr;
@@ -232,7 +232,7 @@ static const QListEntry 
*qobject_input_push(QObjectInputVisitor *qiv,
 }
 
 
-static void qobject_input_check_struct(Visitor *v, Error **errp)
+static void qobject_input_check_struct(Visitor *v, Error *errp[static 1])
 {
     QObjectInputVisitor *qiv = to_qiv(v);
     StackObject *tos = QSLIST_FIRST(&qiv->stack);
@@ -268,7 +268,7 @@ static void qobject_input_pop(Visitor *v, void **obj)
 }
 
 static void qobject_input_start_struct(Visitor *v, const char *name, void 
**obj,
-                                       size_t size, Error **errp)
+                                       size_t size, Error *errp[static 1])
 {
     QObjectInputVisitor *qiv = to_qiv(v);
     QObject *qobj = qobject_input_get_object(qiv, name, true, errp);
@@ -304,7 +304,7 @@ static void qobject_input_end_struct(Visitor *v, void **obj)
 
 static void qobject_input_start_list(Visitor *v, const char *name,
                                      GenericList **list, size_t size,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     QObjectInputVisitor *qiv = to_qiv(v);
     QObject *qobj = qobject_input_get_object(qiv, name, true, errp);
@@ -343,7 +343,7 @@ static GenericList *qobject_input_next_list(Visitor *v, 
GenericList *tail,
     return tail->next;
 }
 
-static void qobject_input_check_list(Visitor *v, Error **errp)
+static void qobject_input_check_list(Visitor *v, Error *errp[static 1])
 {
     QObjectInputVisitor *qiv = to_qiv(v);
     StackObject *tos = QSLIST_FIRST(&qiv->stack);
@@ -367,7 +367,8 @@ static void qobject_input_end_list(Visitor *v, void **obj)
 
 static void qobject_input_start_alternate(Visitor *v, const char *name,
                                           GenericAlternate **obj, size_t size,
-                                          bool promote_int, Error **errp)
+                                          bool promote_int,
+                                          Error *errp[static 1])
 {
     QObjectInputVisitor *qiv = to_qiv(v);
     QObject *qobj = qobject_input_get_object(qiv, name, false, errp);
@@ -384,7 +385,7 @@ static void qobject_input_start_alternate(Visitor *v, const 
char *name,
 }
 
 static void qobject_input_type_int64(Visitor *v, const char *name, int64_t 
*obj,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     QObjectInputVisitor *qiv = to_qiv(v);
     QObject *qobj = qobject_input_get_object(qiv, name, true, errp);
@@ -405,7 +406,8 @@ static void qobject_input_type_int64(Visitor *v, const char 
*name, int64_t *obj,
 
 
 static void qobject_input_type_int64_keyval(Visitor *v, const char *name,
-                                            int64_t *obj, Error **errp)
+                                            int64_t *obj,
+                                            Error *errp[static 1])
 {
     QObjectInputVisitor *qiv = to_qiv(v);
     const char *str = qobject_input_get_keyval(qiv, name, errp);
@@ -422,7 +424,7 @@ static void qobject_input_type_int64_keyval(Visitor *v, 
const char *name,
 }
 
 static void qobject_input_type_uint64(Visitor *v, const char *name,
-                                      uint64_t *obj, Error **errp)
+                                      uint64_t *obj, Error *errp[static 1])
 {
     /* FIXME: qobject_to_qint mishandles values over INT64_MAX */
     QObjectInputVisitor *qiv = to_qiv(v);
@@ -443,7 +445,8 @@ static void qobject_input_type_uint64(Visitor *v, const 
char *name,
 }
 
 static void qobject_input_type_uint64_keyval(Visitor *v, const char *name,
-                                             uint64_t *obj, Error **errp)
+                                             uint64_t *obj,
+                                             Error *errp[static 1])
 {
     QObjectInputVisitor *qiv = to_qiv(v);
     const char *str = qobject_input_get_keyval(qiv, name, errp);
@@ -460,7 +463,7 @@ static void qobject_input_type_uint64_keyval(Visitor *v, 
const char *name,
 }
 
 static void qobject_input_type_bool(Visitor *v, const char *name, bool *obj,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     QObjectInputVisitor *qiv = to_qiv(v);
     QObject *qobj = qobject_input_get_object(qiv, name, true, errp);
@@ -480,7 +483,7 @@ static void qobject_input_type_bool(Visitor *v, const char 
*name, bool *obj,
 }
 
 static void qobject_input_type_bool_keyval(Visitor *v, const char *name,
-                                           bool *obj, Error **errp)
+                                           bool *obj, Error *errp[static 1])
 {
     QObjectInputVisitor *qiv = to_qiv(v);
     const char *str = qobject_input_get_keyval(qiv, name, errp);
@@ -500,7 +503,7 @@ static void qobject_input_type_bool_keyval(Visitor *v, 
const char *name,
 }
 
 static void qobject_input_type_str(Visitor *v, const char *name, char **obj,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     QObjectInputVisitor *qiv = to_qiv(v);
     QObject *qobj = qobject_input_get_object(qiv, name, true, errp);
@@ -521,7 +524,7 @@ static void qobject_input_type_str(Visitor *v, const char 
*name, char **obj,
 }
 
 static void qobject_input_type_str_keyval(Visitor *v, const char *name,
-                                          char **obj, Error **errp)
+                                          char **obj, Error *errp[static 1])
 {
     QObjectInputVisitor *qiv = to_qiv(v);
     const char *str = qobject_input_get_keyval(qiv, name, errp);
@@ -530,7 +533,7 @@ static void qobject_input_type_str_keyval(Visitor *v, const 
char *name,
 }
 
 static void qobject_input_type_number(Visitor *v, const char *name, double 
*obj,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     QObjectInputVisitor *qiv = to_qiv(v);
     QObject *qobj = qobject_input_get_object(qiv, name, true, errp);
@@ -557,7 +560,8 @@ static void qobject_input_type_number(Visitor *v, const 
char *name, double *obj,
 }
 
 static void qobject_input_type_number_keyval(Visitor *v, const char *name,
-                                             double *obj, Error **errp)
+                                             double *obj,
+                                             Error *errp[static 1])
 {
     QObjectInputVisitor *qiv = to_qiv(v);
     const char *str = qobject_input_get_keyval(qiv, name, errp);
@@ -577,7 +581,7 @@ static void qobject_input_type_number_keyval(Visitor *v, 
const char *name,
 }
 
 static void qobject_input_type_any(Visitor *v, const char *name, QObject **obj,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     QObjectInputVisitor *qiv = to_qiv(v);
     QObject *qobj = qobject_input_get_object(qiv, name, true, errp);
@@ -591,7 +595,8 @@ static void qobject_input_type_any(Visitor *v, const char 
*name, QObject **obj,
     *obj = qobj;
 }
 
-static void qobject_input_type_null(Visitor *v, const char *name, Error **errp)
+static void qobject_input_type_null(Visitor *v, const char *name,
+                                    Error *errp[static 1])
 {
     QObjectInputVisitor *qiv = to_qiv(v);
     QObject *qobj = qobject_input_get_object(qiv, name, true, errp);
@@ -607,7 +612,8 @@ static void qobject_input_type_null(Visitor *v, const char 
*name, Error **errp)
 }
 
 static void qobject_input_type_size_keyval(Visitor *v, const char *name,
-                                           uint64_t *obj, Error **errp)
+                                           uint64_t *obj,
+                                           Error *errp[static 1])
 {
     QObjectInputVisitor *qiv = to_qiv(v);
     const char *str = qobject_input_get_keyval(qiv, name, errp);
@@ -712,7 +718,7 @@ Visitor *qobject_input_visitor_new_keyval(QObject *obj)
 
 Visitor *qobject_input_visitor_new_str(const char *str,
                                        const char *implied_key,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     bool is_json = str[0] == '{';
     QObject *obj;
diff --git a/qapi/qobject-output-visitor.c b/qapi/qobject-output-visitor.c
index 871127079d..1892698d84 100644
--- a/qapi/qobject-output-visitor.c
+++ b/qapi/qobject-output-visitor.c
@@ -100,7 +100,8 @@ static void qobject_output_add_obj(QObjectOutputVisitor 
*qov, const char *name,
 }
 
 static void qobject_output_start_struct(Visitor *v, const char *name,
-                                        void **obj, size_t unused, Error 
**errp)
+                                        void **obj, size_t unused,
+                                        Error *errp[static 1])
 {
     QObjectOutputVisitor *qov = to_qov(v);
     QDict *dict = qdict_new();
@@ -118,7 +119,7 @@ static void qobject_output_end_struct(Visitor *v, void 
**obj)
 
 static void qobject_output_start_list(Visitor *v, const char *name,
                                       GenericList **listp, size_t size,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     QObjectOutputVisitor *qov = to_qov(v);
     QList *list = qlist_new();
@@ -141,14 +142,14 @@ static void qobject_output_end_list(Visitor *v, void 
**obj)
 }
 
 static void qobject_output_type_int64(Visitor *v, const char *name,
-                                      int64_t *obj, Error **errp)
+                                      int64_t *obj, Error *errp[static 1])
 {
     QObjectOutputVisitor *qov = to_qov(v);
     qobject_output_add(qov, name, qint_from_int(*obj));
 }
 
 static void qobject_output_type_uint64(Visitor *v, const char *name,
-                                       uint64_t *obj, Error **errp)
+                                       uint64_t *obj, Error *errp[static 1])
 {
     /* FIXME values larger than INT64_MAX become negative */
     QObjectOutputVisitor *qov = to_qov(v);
@@ -156,14 +157,14 @@ static void qobject_output_type_uint64(Visitor *v, const 
char *name,
 }
 
 static void qobject_output_type_bool(Visitor *v, const char *name, bool *obj,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     QObjectOutputVisitor *qov = to_qov(v);
     qobject_output_add(qov, name, qbool_from_bool(*obj));
 }
 
 static void qobject_output_type_str(Visitor *v, const char *name, char **obj,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     QObjectOutputVisitor *qov = to_qov(v);
     if (*obj) {
@@ -174,21 +175,22 @@ static void qobject_output_type_str(Visitor *v, const 
char *name, char **obj,
 }
 
 static void qobject_output_type_number(Visitor *v, const char *name,
-                                       double *obj, Error **errp)
+                                       double *obj, Error *errp[static 1])
 {
     QObjectOutputVisitor *qov = to_qov(v);
     qobject_output_add(qov, name, qfloat_from_double(*obj));
 }
 
 static void qobject_output_type_any(Visitor *v, const char *name,
-                                    QObject **obj, Error **errp)
+                                    QObject **obj, Error *errp[static 1])
 {
     QObjectOutputVisitor *qov = to_qov(v);
     qobject_incref(*obj);
     qobject_output_add_obj(qov, name, *obj);
 }
 
-static void qobject_output_type_null(Visitor *v, const char *name, Error 
**errp)
+static void qobject_output_type_null(Visitor *v, const char *name,
+                                     Error *errp[static 1])
 {
     QObjectOutputVisitor *qov = to_qov(v);
     qobject_output_add_obj(qov, name, qnull());
diff --git a/qapi/string-input-visitor.c b/qapi/string-input-visitor.c
index bb4a21ce0d..f75ca82225 100644
--- a/qapi/string-input-visitor.c
+++ b/qapi/string-input-visitor.c
@@ -43,7 +43,8 @@ static void free_range(void *range, void *dummy)
     g_free(range);
 }
 
-static int parse_str(StringInputVisitor *siv, const char *name, Error **errp)
+static int parse_str(StringInputVisitor *siv, const char *name,
+                     Error *errp[static 1])
 {
     char *str = (char *) siv->string;
     long long start, end;
@@ -119,7 +120,7 @@ error:
 
 static void
 start_list(Visitor *v, const char *name, GenericList **list, size_t size,
-           Error **errp)
+           Error *errp[static 1])
 {
     StringInputVisitor *siv = to_siv(v);
 
@@ -174,7 +175,7 @@ static GenericList *next_list(Visitor *v, GenericList 
*tail, size_t size)
     return tail->next;
 }
 
-static void check_list(Visitor *v, Error **errp)
+static void check_list(Visitor *v, Error *errp[static 1])
 {
     const StringInputVisitor *siv = to_siv(v);
     Range *r;
@@ -211,7 +212,7 @@ static void end_list(Visitor *v, void **obj)
 }
 
 static void parse_type_int64(Visitor *v, const char *name, int64_t *obj,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     StringInputVisitor *siv = to_siv(v);
 
@@ -249,7 +250,7 @@ error:
 }
 
 static void parse_type_uint64(Visitor *v, const char *name, uint64_t *obj,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     /* FIXME: parse_type_int64 mishandles values over INT64_MAX */
     int64_t i;
@@ -263,7 +264,7 @@ static void parse_type_uint64(Visitor *v, const char *name, 
uint64_t *obj,
 }
 
 static void parse_type_size(Visitor *v, const char *name, uint64_t *obj,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     StringInputVisitor *siv = to_siv(v);
     uint64_t val;
@@ -277,7 +278,7 @@ static void parse_type_size(Visitor *v, const char *name, 
uint64_t *obj,
 }
 
 static void parse_type_bool(Visitor *v, const char *name, bool *obj,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     StringInputVisitor *siv = to_siv(v);
 
@@ -299,7 +300,7 @@ static void parse_type_bool(Visitor *v, const char *name, 
bool *obj,
 }
 
 static void parse_type_str(Visitor *v, const char *name, char **obj,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     StringInputVisitor *siv = to_siv(v);
 
@@ -307,7 +308,7 @@ static void parse_type_str(Visitor *v, const char *name, 
char **obj,
 }
 
 static void parse_type_number(Visitor *v, const char *name, double *obj,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     StringInputVisitor *siv = to_siv(v);
     char *endp = (char *) siv->string;
diff --git a/qapi/string-output-visitor.c b/qapi/string-output-visitor.c
index 53c2175d81..7122717abb 100644
--- a/qapi/string-output-visitor.c
+++ b/qapi/string-output-visitor.c
@@ -124,7 +124,7 @@ static void format_string(StringOutputVisitor *sov, Range 
*r, bool next,
 }
 
 static void print_type_int64(Visitor *v, const char *name, int64_t *obj,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     StringOutputVisitor *sov = to_sov(v);
     GList *l;
@@ -200,7 +200,7 @@ static void print_type_int64(Visitor *v, const char *name, 
int64_t *obj,
 }
 
 static void print_type_uint64(Visitor *v, const char *name, uint64_t *obj,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     /* FIXME: print_type_int64 mishandles values over INT64_MAX */
     int64_t i = *obj;
@@ -208,7 +208,7 @@ static void print_type_uint64(Visitor *v, const char *name, 
uint64_t *obj,
 }
 
 static void print_type_size(Visitor *v, const char *name, uint64_t *obj,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     StringOutputVisitor *sov = to_sov(v);
     uint64_t val;
@@ -229,14 +229,14 @@ static void print_type_size(Visitor *v, const char *name, 
uint64_t *obj,
 }
 
 static void print_type_bool(Visitor *v, const char *name, bool *obj,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     StringOutputVisitor *sov = to_sov(v);
     string_output_set(sov, g_strdup(*obj ? "true" : "false"));
 }
 
 static void print_type_str(Visitor *v, const char *name, char **obj,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     StringOutputVisitor *sov = to_sov(v);
     char *out;
@@ -250,7 +250,7 @@ static void print_type_str(Visitor *v, const char *name, 
char **obj,
 }
 
 static void print_type_number(Visitor *v, const char *name, double *obj,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     StringOutputVisitor *sov = to_sov(v);
     string_output_set(sov, g_strdup_printf("%f", *obj));
@@ -258,7 +258,7 @@ static void print_type_number(Visitor *v, const char *name, 
double *obj,
 
 static void
 start_list(Visitor *v, const char *name, GenericList **list, size_t size,
-           Error **errp)
+           Error *errp[static 1])
 {
     StringOutputVisitor *sov = to_sov(v);
 
diff --git a/qdev-monitor.c b/qdev-monitor.c
index 7a802c6b37..c4f355aa24 100644
--- a/qdev-monitor.c
+++ b/qdev-monitor.c
@@ -172,7 +172,7 @@ static void qdev_print_devinfos(bool show_no_user)
 }
 
 static int set_property(void *opaque, const char *name, const char *value,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     Object *obj = opaque;
 
@@ -206,7 +206,8 @@ static const char *find_typename_by_alias(const char *alias)
     return NULL;
 }
 
-static DeviceClass *qdev_get_device_class(const char **driver, Error **errp)
+static DeviceClass *qdev_get_device_class(const char **driver,
+                                          Error *errp[static 1])
 {
     ObjectClass *oc;
     DeviceClass *dc;
@@ -321,7 +322,7 @@ static Object *qdev_get_peripheral_anon(void)
     return dev;
 }
 
-static void qbus_list_bus(DeviceState *dev, Error **errp)
+static void qbus_list_bus(DeviceState *dev, Error *errp[static 1])
 {
     BusState *child;
     const char *sep = " ";
@@ -335,7 +336,7 @@ static void qbus_list_bus(DeviceState *dev, Error **errp)
     error_append_hint(errp, "\n");
 }
 
-static void qbus_list_dev(BusState *bus, Error **errp)
+static void qbus_list_dev(BusState *bus, Error *errp[static 1])
 {
     BusChild *kid;
     const char *sep = " ";
@@ -450,7 +451,7 @@ static BusState *qbus_find_recursive(BusState *bus, const 
char *name,
     return pick;
 }
 
-static BusState *qbus_find(const char *path, Error **errp)
+static BusState *qbus_find(const char *path, Error *errp[static 1])
 {
     DeviceState *dev;
     BusState *bus;
@@ -557,7 +558,7 @@ void qdev_set_id(DeviceState *dev, const char *id)
     }
 }
 
-DeviceState *qdev_device_add(QemuOpts *opts, Error **errp)
+DeviceState *qdev_device_add(QemuOpts *opts, Error *errp[static 1])
 {
     DeviceClass *dc;
     const char *driver, *path;
@@ -787,7 +788,7 @@ void hmp_info_qom_tree(Monitor *mon, const QDict *dict)
     print_qom_composition(mon, obj, 0);
 }
 
-void qmp_device_add(QDict *qdict, QObject **ret_data, Error **errp)
+void qmp_device_add(QDict *qdict, QObject **ret_data, Error *errp[static 1])
 {
     Error *local_err = NULL;
     QemuOpts *opts;
@@ -811,7 +812,7 @@ void qmp_device_add(QDict *qdict, QObject **ret_data, Error 
**errp)
     object_unref(OBJECT(dev));
 }
 
-static DeviceState *find_device_state(const char *id, Error **errp)
+static DeviceState *find_device_state(const char *id, Error *errp[static 1])
 {
     Object *obj;
 
@@ -840,7 +841,7 @@ static DeviceState *find_device_state(const char *id, Error 
**errp)
     return DEVICE(obj);
 }
 
-void qdev_unplug(DeviceState *dev, Error **errp)
+void qdev_unplug(DeviceState *dev, Error *errp[static 1])
 {
     DeviceClass *dc = DEVICE_GET_CLASS(dev);
     HotplugHandler *hotplug_ctrl;
@@ -879,7 +880,7 @@ void qdev_unplug(DeviceState *dev, Error **errp)
     }
 }
 
-void qmp_device_del(const char *id, Error **errp)
+void qmp_device_del(const char *id, Error *errp[static 1])
 {
     DeviceState *dev = find_device_state(id, errp);
     if (dev != NULL) {
@@ -887,7 +888,7 @@ void qmp_device_del(const char *id, Error **errp)
     }
 }
 
-BlockBackend *blk_by_qdev_id(const char *id, Error **errp)
+BlockBackend *blk_by_qdev_id(const char *id, Error *errp[static 1])
 {
     DeviceState *dev;
     BlockBackend *blk;
diff --git a/qemu-img.c b/qemu-img.c
index d0ab3af44b..0e387f5d4b 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -350,7 +350,7 @@ static BlockBackend *img_open_file(const char *filename,
 
 static int img_add_key_secrets(void *opaque,
                                const char *name, const char *value,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     QDict *options = opaque;
 
@@ -884,7 +884,7 @@ static void common_block_job_cb(void *opaque, int ret)
     }
 }
 
-static void run_block_job(BlockJob *job, Error **errp)
+static void run_block_job(BlockJob *job, Error *errp[static 1])
 {
     AioContext *aio_context = blk_get_aio_context(job->blk);
 
diff --git a/qemu-nbd.c b/qemu-nbd.c
index 6ff0b0c070..3361aac577 100644
--- a/qemu-nbd.c
+++ b/qemu-nbd.c
@@ -435,7 +435,8 @@ static QemuOptsList qemu_object_opts = {
 
 
 
-static QCryptoTLSCreds *nbd_get_tls_creds(const char *id, Error **errp)
+static QCryptoTLSCreds *nbd_get_tls_creds(const char *id,
+                                          Error *errp[static 1])
 {
     Object *obj;
     QCryptoTLSCreds *creds;
diff --git a/qga/commands-posix.c b/qga/commands-posix.c
index 6d3476477f..20c576c7b2 100644
--- a/qga/commands-posix.c
+++ b/qga/commands-posix.c
@@ -50,7 +50,7 @@ extern char **environ;
 #endif
 #endif
 
-static void ga_wait_child(pid_t pid, int *status, Error **errp)
+static void ga_wait_child(pid_t pid, int *status, Error *errp[static 1])
 {
     pid_t rpid;
 
@@ -69,7 +69,8 @@ static void ga_wait_child(pid_t pid, int *status, Error 
**errp)
     g_assert(rpid == pid);
 }
 
-void qmp_guest_shutdown(bool has_mode, const char *mode, Error **errp)
+void qmp_guest_shutdown(bool has_mode, const char *mode,
+                        Error *errp[static 1])
 {
     const char *shutdown_flag;
     pid_t pid;
@@ -122,7 +123,7 @@ void qmp_guest_shutdown(bool has_mode, const char *mode, 
Error **errp)
     /* succeeded */
 }
 
-int64_t qmp_guest_get_time(Error **errp)
+int64_t qmp_guest_get_time(Error *errp[static 1])
 {
    int ret;
    qemu_timeval tq;
@@ -136,7 +137,7 @@ int64_t qmp_guest_get_time(Error **errp)
    return tq.tv_sec * 1000000000LL + tq.tv_usec * 1000;
 }
 
-void qmp_guest_set_time(bool has_time, int64_t time_ns, Error **errp)
+void qmp_guest_set_time(bool has_time, int64_t time_ns, Error *errp[static 1])
 {
     int ret;
     int status;
@@ -224,7 +225,7 @@ static struct {
     .filehandles = QTAILQ_HEAD_INITIALIZER(guest_file_state.filehandles),
 };
 
-static int64_t guest_file_handle_add(FILE *fh, Error **errp)
+static int64_t guest_file_handle_add(FILE *fh, Error *errp[static 1])
 {
     GuestFileHandle *gfh;
     int64_t handle;
@@ -242,7 +243,8 @@ static int64_t guest_file_handle_add(FILE *fh, Error **errp)
     return handle;
 }
 
-static GuestFileHandle *guest_file_handle_find(int64_t id, Error **errp)
+static GuestFileHandle *guest_file_handle_find(int64_t id,
+                                               Error *errp[static 1])
 {
     GuestFileHandle *gfh;
 
@@ -283,7 +285,7 @@ static const struct {
 };
 
 static int
-find_open_flag(const char *mode_str, Error **errp)
+find_open_flag(const char *mode_str, Error *errp[static 1])
 {
     unsigned mode;
 
@@ -311,7 +313,7 @@ find_open_flag(const char *mode_str, Error **errp)
                                S_IROTH | S_IWOTH)
 
 static FILE *
-safe_open_or_create(const char *path, const char *mode, Error **errp)
+safe_open_or_create(const char *path, const char *mode, Error *errp[static 1])
 {
     Error *local_err = NULL;
     int oflag;
@@ -383,7 +385,7 @@ safe_open_or_create(const char *path, const char *mode, 
Error **errp)
 }
 
 int64_t qmp_guest_file_open(const char *path, bool has_mode, const char *mode,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     FILE *fh;
     Error *local_err = NULL;
@@ -414,7 +416,7 @@ int64_t qmp_guest_file_open(const char *path, bool 
has_mode, const char *mode,
     return handle;
 }
 
-void qmp_guest_file_close(int64_t handle, Error **errp)
+void qmp_guest_file_close(int64_t handle, Error *errp[static 1])
 {
     GuestFileHandle *gfh = guest_file_handle_find(handle, errp);
     int ret;
@@ -435,7 +437,8 @@ void qmp_guest_file_close(int64_t handle, Error **errp)
 }
 
 struct GuestFileRead *qmp_guest_file_read(int64_t handle, bool has_count,
-                                          int64_t count, Error **errp)
+                                          int64_t count,
+                                          Error *errp[static 1])
 {
     GuestFileHandle *gfh = guest_file_handle_find(handle, errp);
     GuestFileRead *read_data = NULL;
@@ -490,7 +493,7 @@ struct GuestFileRead *qmp_guest_file_read(int64_t handle, 
bool has_count,
 
 GuestFileWrite *qmp_guest_file_write(int64_t handle, const char *buf_b64,
                                      bool has_count, int64_t count,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     GuestFileWrite *write_data = NULL;
     guchar *buf;
@@ -546,7 +549,7 @@ GuestFileWrite *qmp_guest_file_write(int64_t handle, const 
char *buf_b64,
 
 struct GuestFileSeek *qmp_guest_file_seek(int64_t handle, int64_t offset,
                                           GuestFileWhence *whence_code,
-                                          Error **errp)
+                                          Error *errp[static 1])
 {
     GuestFileHandle *gfh = guest_file_handle_find(handle, errp);
     GuestFileSeek *seek_data = NULL;
@@ -585,7 +588,7 @@ struct GuestFileSeek *qmp_guest_file_seek(int64_t handle, 
int64_t offset,
     return seek_data;
 }
 
-void qmp_guest_file_flush(int64_t handle, Error **errp)
+void qmp_guest_file_flush(int64_t handle, Error *errp[static 1])
 {
     GuestFileHandle *gfh = guest_file_handle_find(handle, errp);
     FILE *fh;
@@ -660,7 +663,8 @@ static int dev_major_minor(const char *devpath,
 /*
  * Walk the mount table and build a list of local file systems
  */
-static void build_fs_mount_list_from_mtab(FsMountList *mounts, Error **errp)
+static void build_fs_mount_list_from_mtab(FsMountList *mounts,
+                                          Error *errp[static 1])
 {
     struct mntent *ment;
     FsMount *mount;
@@ -725,7 +729,7 @@ static void decode_mntname(char *name, int len)
     }
 }
 
-static void build_fs_mount_list(FsMountList *mounts, Error **errp)
+static void build_fs_mount_list(FsMountList *mounts, Error *errp[static 1])
 {
     FsMount *mount;
     char const *mountinfo = "/proc/self/mountinfo";
@@ -786,7 +790,8 @@ static void build_fs_mount_list(FsMountList *mounts, Error 
**errp)
 
 #if defined(CONFIG_FSFREEZE)
 
-static char *get_pci_driver(char const *syspath, int pathlen, Error **errp)
+static char *get_pci_driver(char const *syspath, int pathlen,
+                            Error *errp[static 1])
 {
     char *path;
     char *dpath;
@@ -816,7 +821,8 @@ static int compare_uint(const void *_a, const void *_b)
 
 /* Walk the specified sysfs and build a sorted list of host or ata numbers */
 static int build_hosts(char const *syspath, char const *host, bool ata,
-                       unsigned int *hosts, int hosts_max, Error **errp)
+                       unsigned int *hosts, int hosts_max,
+                       Error *errp[static 1])
 {
     char *path;
     DIR *dir;
@@ -853,7 +859,7 @@ static int build_hosts(char const *syspath, char const 
*host, bool ata,
 /* Store disk device info specified by @sysfs into @fs */
 static void build_guest_fsinfo_for_real_device(char const *syspath,
                                                GuestFilesystemInfo *fs,
-                                               Error **errp)
+                                               Error *errp[static 1])
 {
     unsigned int pci[4], host, hosts[8], tgt[3];
     int i, nhosts = 0, pcilen;
@@ -981,13 +987,13 @@ cleanup:
 
 static void build_guest_fsinfo_for_device(char const *devpath,
                                           GuestFilesystemInfo *fs,
-                                          Error **errp);
+                                          Error *errp[static 1]);
 
 /* Store a list of slave devices of virtual volume specified by @syspath into
  * @fs */
 static void build_guest_fsinfo_for_virtual_device(char const *syspath,
                                                   GuestFilesystemInfo *fs,
-                                                  Error **errp)
+                                                  Error *errp[static 1])
 {
     DIR *dir;
     char *dirpath;
@@ -1034,7 +1040,7 @@ static void build_guest_fsinfo_for_virtual_device(char 
const *syspath,
 /* Dispatch to functions for virtual/real device */
 static void build_guest_fsinfo_for_device(char const *devpath,
                                           GuestFilesystemInfo *fs,
-                                          Error **errp)
+                                          Error *errp[static 1])
 {
     char *syspath = realpath(devpath, NULL);
 
@@ -1060,7 +1066,7 @@ static void build_guest_fsinfo_for_device(char const 
*devpath,
 
 /* Return a list of the disk device(s)' info which @mount lies on */
 static GuestFilesystemInfo *build_guest_fsinfo(struct FsMount *mount,
-                                               Error **errp)
+                                               Error *errp[static 1])
 {
     GuestFilesystemInfo *fs = g_malloc0(sizeof(*fs));
     char *devpath = g_strdup_printf("/sys/dev/block/%u:%u",
@@ -1074,7 +1080,7 @@ static GuestFilesystemInfo *build_guest_fsinfo(struct 
FsMount *mount,
     return fs;
 }
 
-GuestFilesystemInfoList *qmp_guest_get_fsinfo(Error **errp)
+GuestFilesystemInfoList *qmp_guest_get_fsinfo(Error *errp[static 1])
 {
     FsMountList mounts;
     struct FsMount *mount;
@@ -1171,7 +1177,7 @@ static void execute_fsfreeze_hook(FsfreezeHookArg arg, 
Error **errp)
 /*
  * Return status of freeze/thaw
  */
-GuestFsfreezeStatus qmp_guest_fsfreeze_status(Error **errp)
+GuestFsfreezeStatus qmp_guest_fsfreeze_status(Error *errp[static 1])
 {
     if (ga_is_frozen(ga_state)) {
         return GUEST_FSFREEZE_STATUS_FROZEN;
@@ -1180,7 +1186,7 @@ GuestFsfreezeStatus qmp_guest_fsfreeze_status(Error 
**errp)
     return GUEST_FSFREEZE_STATUS_THAWED;
 }
 
-int64_t qmp_guest_fsfreeze_freeze(Error **errp)
+int64_t qmp_guest_fsfreeze_freeze(Error *errp[static 1])
 {
     return qmp_guest_fsfreeze_freeze_list(false, NULL, errp);
 }
@@ -1191,7 +1197,7 @@ int64_t qmp_guest_fsfreeze_freeze(Error **errp)
  */
 int64_t qmp_guest_fsfreeze_freeze_list(bool has_mountpoints,
                                        strList *mountpoints,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     int ret = 0, i = 0;
     strList *list;
@@ -1273,7 +1279,7 @@ error:
 /*
  * Walk list of frozen file systems in the guest, and thaw them.
  */
-int64_t qmp_guest_fsfreeze_thaw(Error **errp)
+int64_t qmp_guest_fsfreeze_thaw(Error *errp[static 1])
 {
     int ret;
     FsMountList mounts;
@@ -1346,7 +1352,7 @@ static void guest_fsfreeze_cleanup(void)
  * Walk list of mounted file systems in the guest, and trim them.
  */
 GuestFilesystemTrimResponse *
-qmp_guest_fstrim(bool has_minimum, int64_t minimum, Error **errp)
+qmp_guest_fstrim(bool has_minimum, int64_t minimum, Error *errp[static 1])
 {
     GuestFilesystemTrimResponse *response;
     GuestFilesystemTrimResultList *list;
@@ -1424,7 +1430,7 @@ qmp_guest_fstrim(bool has_minimum, int64_t minimum, Error 
**errp)
 #define SUSPEND_NOT_SUPPORTED 1
 
 static void bios_supports_mode(const char *pmutils_bin, const char 
*pmutils_arg,
-                               const char *sysfile_str, Error **errp)
+                               const char *sysfile_str, Error *errp[static 1])
 {
     char *pmutils_path;
     pid_t pid;
@@ -1506,7 +1512,7 @@ out:
 }
 
 static void guest_suspend(const char *pmutils_bin, const char *sysfile_str,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     char *pmutils_path;
     pid_t pid;
@@ -1571,7 +1577,7 @@ out:
     g_free(pmutils_path);
 }
 
-void qmp_guest_suspend_disk(Error **errp)
+void qmp_guest_suspend_disk(Error *errp[static 1])
 {
     bios_supports_mode("pm-is-supported", "--hibernate", "disk", errp);
     if (ERR_IS_SET(errp)) {
@@ -1581,7 +1587,7 @@ void qmp_guest_suspend_disk(Error **errp)
     guest_suspend("pm-hibernate", "disk", errp);
 }
 
-void qmp_guest_suspend_ram(Error **errp)
+void qmp_guest_suspend_ram(Error *errp[static 1])
 {
     bios_supports_mode("pm-is-supported", "--suspend", "mem", errp);
     if (ERR_IS_SET(errp)) {
@@ -1591,7 +1597,7 @@ void qmp_guest_suspend_ram(Error **errp)
     guest_suspend("pm-suspend", "mem", errp);
 }
 
-void qmp_guest_suspend_hybrid(Error **errp)
+void qmp_guest_suspend_hybrid(Error *errp[static 1])
 {
     bios_supports_mode("pm-is-supported", "--suspend-hybrid", NULL,
                        errp);
@@ -1618,7 +1624,7 @@ guest_find_interface(GuestNetworkInterfaceList *head,
 /*
  * Build information about guest interfaces
  */
-GuestNetworkInterfaceList *qmp_guest_network_get_interfaces(Error **errp)
+GuestNetworkInterfaceList *qmp_guest_network_get_interfaces(Error *errp[static 
1])
 {
     GuestNetworkInterfaceList *head = NULL, *cur_item = NULL;
     struct ifaddrs *ifap, *ifa;
@@ -1764,7 +1770,8 @@ error:
 
 #define SYSCONF_EXACT(name, errp) sysconf_exact((name), #name, (errp))
 
-static long sysconf_exact(int name, const char *name_str, Error **errp)
+static long sysconf_exact(int name, const char *name_str,
+                          Error *errp[static 1])
 {
     long ret;
 
@@ -1796,7 +1803,7 @@ static long sysconf_exact(int name, const char *name_str, 
Error **errp)
  * Written members remain unmodified on error.
  */
 static void transfer_vcpu(GuestLogicalProcessor *vcpu, bool sys2vcpu,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     char *dirpath;
     int dirfd;
@@ -1853,7 +1860,7 @@ static void transfer_vcpu(GuestLogicalProcessor *vcpu, 
bool sys2vcpu,
     g_free(dirpath);
 }
 
-GuestLogicalProcessorList *qmp_guest_get_vcpus(Error **errp)
+GuestLogicalProcessorList *qmp_guest_get_vcpus(Error *errp[static 1])
 {
     int64_t current;
     GuestLogicalProcessorList *head, **link;
@@ -1892,7 +1899,8 @@ GuestLogicalProcessorList *qmp_guest_get_vcpus(Error 
**errp)
     return NULL;
 }
 
-int64_t qmp_guest_set_vcpus(GuestLogicalProcessorList *vcpus, Error **errp)
+int64_t qmp_guest_set_vcpus(GuestLogicalProcessorList *vcpus,
+                            Error *errp[static 1])
 {
     int64_t processed;
     Error *local_err = NULL;
@@ -1921,7 +1929,7 @@ int64_t qmp_guest_set_vcpus(GuestLogicalProcessorList 
*vcpus, Error **errp)
 void qmp_guest_set_user_password(const char *username,
                                  const char *password,
                                  bool crypted,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     char *passwd_path = NULL;
     pid_t pid;
@@ -2022,7 +2030,7 @@ out:
 }
 
 static void ga_read_sysfs_file(int dirfd, const char *pathname, char *buf,
-                               int size, Error **errp)
+                               int size, Error *errp[static 1])
 {
     int fd;
     int res;
@@ -2044,7 +2052,8 @@ static void ga_read_sysfs_file(int dirfd, const char 
*pathname, char *buf,
 }
 
 static void ga_write_sysfs_file(int dirfd, const char *pathname,
-                                const char *buf, int size, Error **errp)
+                                const char *buf, int size,
+                                Error *errp[static 1])
 {
     int fd;
 
@@ -2079,7 +2088,7 @@ static void ga_write_sysfs_file(int dirfd, const char 
*pathname,
  */
 static void transfer_memory_block(GuestMemoryBlock *mem_blk, bool sys2memblk,
                                   GuestMemoryBlockResponse *result,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     char *dirpath;
     int dirfd;
@@ -2200,7 +2209,7 @@ out1:
     }
 }
 
-GuestMemoryBlockList *qmp_guest_get_memory_blocks(Error **errp)
+GuestMemoryBlockList *qmp_guest_get_memory_blocks(Error *errp[static 1])
 {
     GuestMemoryBlockList *head, **link;
     Error *local_err = NULL;
@@ -2265,7 +2274,8 @@ GuestMemoryBlockList *qmp_guest_get_memory_blocks(Error 
**errp)
 }
 
 GuestMemoryBlockResponseList *
-qmp_guest_set_memory_blocks(GuestMemoryBlockList *mem_blks, Error **errp)
+qmp_guest_set_memory_blocks(GuestMemoryBlockList *mem_blks,
+                            Error *errp[static 1])
 {
     GuestMemoryBlockResponseList *head, **link;
     Error *local_err = NULL;
@@ -2299,7 +2309,7 @@ err:
     return NULL;
 }
 
-GuestMemoryBlockInfo *qmp_guest_get_memory_block_info(Error **errp)
+GuestMemoryBlockInfo *qmp_guest_get_memory_block_info(Error *errp[static 1])
 {
     char *dirpath;
     int dirfd;
@@ -2333,34 +2343,35 @@ GuestMemoryBlockInfo 
*qmp_guest_get_memory_block_info(Error **errp)
 
 #else /* defined(__linux__) */
 
-void qmp_guest_suspend_disk(Error **errp)
+void qmp_guest_suspend_disk(Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
 }
 
-void qmp_guest_suspend_ram(Error **errp)
+void qmp_guest_suspend_ram(Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
 }
 
-void qmp_guest_suspend_hybrid(Error **errp)
+void qmp_guest_suspend_hybrid(Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
 }
 
-GuestNetworkInterfaceList *qmp_guest_network_get_interfaces(Error **errp)
+GuestNetworkInterfaceList *qmp_guest_network_get_interfaces(Error *errp[static 
1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
     return NULL;
 }
 
-GuestLogicalProcessorList *qmp_guest_get_vcpus(Error **errp)
+GuestLogicalProcessorList *qmp_guest_get_vcpus(Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
     return NULL;
 }
 
-int64_t qmp_guest_set_vcpus(GuestLogicalProcessorList *vcpus, Error **errp)
+int64_t qmp_guest_set_vcpus(GuestLogicalProcessorList *vcpus,
+                            Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
     return -1;
@@ -2369,25 +2380,26 @@ int64_t qmp_guest_set_vcpus(GuestLogicalProcessorList 
*vcpus, Error **errp)
 void qmp_guest_set_user_password(const char *username,
                                  const char *password,
                                  bool crypted,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
 }
 
-GuestMemoryBlockList *qmp_guest_get_memory_blocks(Error **errp)
+GuestMemoryBlockList *qmp_guest_get_memory_blocks(Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
     return NULL;
 }
 
 GuestMemoryBlockResponseList *
-qmp_guest_set_memory_blocks(GuestMemoryBlockList *mem_blks, Error **errp)
+qmp_guest_set_memory_blocks(GuestMemoryBlockList *mem_blks,
+                            Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
     return NULL;
 }
 
-GuestMemoryBlockInfo *qmp_guest_get_memory_block_info(Error **errp)
+GuestMemoryBlockInfo *qmp_guest_get_memory_block_info(Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
     return NULL;
@@ -2397,20 +2409,20 @@ GuestMemoryBlockInfo 
*qmp_guest_get_memory_block_info(Error **errp)
 
 #if !defined(CONFIG_FSFREEZE)
 
-GuestFilesystemInfoList *qmp_guest_get_fsinfo(Error **errp)
+GuestFilesystemInfoList *qmp_guest_get_fsinfo(Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
     return NULL;
 }
 
-GuestFsfreezeStatus qmp_guest_fsfreeze_status(Error **errp)
+GuestFsfreezeStatus qmp_guest_fsfreeze_status(Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
 
     return 0;
 }
 
-int64_t qmp_guest_fsfreeze_freeze(Error **errp)
+int64_t qmp_guest_fsfreeze_freeze(Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
 
@@ -2419,14 +2431,14 @@ int64_t qmp_guest_fsfreeze_freeze(Error **errp)
 
 int64_t qmp_guest_fsfreeze_freeze_list(bool has_mountpoints,
                                        strList *mountpoints,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
 
     return 0;
 }
 
-int64_t qmp_guest_fsfreeze_thaw(Error **errp)
+int64_t qmp_guest_fsfreeze_thaw(Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
 
@@ -2436,7 +2448,7 @@ int64_t qmp_guest_fsfreeze_thaw(Error **errp)
 
 #if !defined(CONFIG_FSTRIM)
 GuestFilesystemTrimResponse *
-qmp_guest_fstrim(bool has_minimum, int64_t minimum, Error **errp)
+qmp_guest_fstrim(bool has_minimum, int64_t minimum, Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
     return NULL;
@@ -2501,7 +2513,7 @@ static double ga_get_login_time(struct utmpx *user_info)
     return seconds + useconds;
 }
 
-GuestUserList *qmp_guest_get_users(Error **err)
+GuestUserList *qmp_guest_get_users(Error *err[static 1])
 {
     GHashTable *cache = NULL;
     GuestUserList *head = NULL, *cur_item = NULL;
diff --git a/qga/commands-win32.c b/qga/commands-win32.c
index 9f7936eeeb..34eeafb096 100644
--- a/qga/commands-win32.c
+++ b/qga/commands-win32.c
@@ -103,7 +103,7 @@ static OpenFlags *find_open_flag(const char *mode_str)
     return NULL;
 }
 
-static int64_t guest_file_handle_add(HANDLE fh, Error **errp)
+static int64_t guest_file_handle_add(HANDLE fh, Error *errp[static 1])
 {
     GuestFileHandle *gfh;
     int64_t handle;
@@ -120,7 +120,8 @@ static int64_t guest_file_handle_add(HANDLE fh, Error 
**errp)
     return handle;
 }
 
-static GuestFileHandle *guest_file_handle_find(int64_t id, Error **errp)
+static GuestFileHandle *guest_file_handle_find(int64_t id,
+                                               Error *errp[static 1])
 {
     GuestFileHandle *gfh;
     QTAILQ_FOREACH(gfh, &guest_file_state.filehandles, next) {
@@ -155,7 +156,7 @@ static void handle_set_nonblocking(HANDLE fh)
 }
 
 int64_t qmp_guest_file_open(const char *path, bool has_mode,
-                            const char *mode, Error **errp)
+                            const char *mode, Error *errp[static 1])
 {
     int64_t fd;
     HANDLE fh;
@@ -200,7 +201,7 @@ int64_t qmp_guest_file_open(const char *path, bool has_mode,
     return fd;
 }
 
-void qmp_guest_file_close(int64_t handle, Error **errp)
+void qmp_guest_file_close(int64_t handle, Error *errp[static 1])
 {
     bool ret;
     GuestFileHandle *gfh = guest_file_handle_find(handle, errp);
@@ -218,7 +219,7 @@ void qmp_guest_file_close(int64_t handle, Error **errp)
     g_free(gfh);
 }
 
-static void acquire_privilege(const char *name, Error **errp)
+static void acquire_privilege(const char *name, Error *errp[static 1])
 {
     HANDLE token = NULL;
     TOKEN_PRIVILEGES priv;
@@ -255,7 +256,7 @@ out:
 }
 
 static void execute_async(DWORD WINAPI (*func)(LPVOID), LPVOID opaque,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     Error *local_err = NULL;
 
@@ -267,7 +268,8 @@ static void execute_async(DWORD WINAPI (*func)(LPVOID), 
LPVOID opaque,
     }
 }
 
-void qmp_guest_shutdown(bool has_mode, const char *mode, Error **errp)
+void qmp_guest_shutdown(bool has_mode, const char *mode,
+                        Error *errp[static 1])
 {
     UINT shutdown_flag = EWX_FORCE;
 
@@ -299,7 +301,7 @@ void qmp_guest_shutdown(bool has_mode, const char *mode, 
Error **errp)
 }
 
 GuestFileRead *qmp_guest_file_read(int64_t handle, bool has_count,
-                                   int64_t count, Error **errp)
+                                   int64_t count, Error *errp[static 1])
 {
     GuestFileRead *read_data = NULL;
     guchar *buf;
@@ -342,7 +344,7 @@ GuestFileRead *qmp_guest_file_read(int64_t handle, bool 
has_count,
 
 GuestFileWrite *qmp_guest_file_write(int64_t handle, const char *buf_b64,
                                      bool has_count, int64_t count,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     GuestFileWrite *write_data = NULL;
     guchar *buf;
@@ -385,7 +387,7 @@ done:
 
 GuestFileSeek *qmp_guest_file_seek(int64_t handle, int64_t offset,
                                    GuestFileWhence *whence_code,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     GuestFileHandle *gfh;
     GuestFileSeek *seek_data;
@@ -419,7 +421,7 @@ GuestFileSeek *qmp_guest_file_seek(int64_t handle, int64_t 
offset,
     return seek_data;
 }
 
-void qmp_guest_file_flush(int64_t handle, Error **errp)
+void qmp_guest_file_flush(int64_t handle, Error *errp[static 1])
 {
     HANDLE fh;
     GuestFileHandle *gfh = guest_file_handle_find(handle, errp);
@@ -470,7 +472,7 @@ DEFINE_GUID(GUID_DEVINTERFACE_VOLUME,
         0x53f5630dL, 0xb6bf, 0x11d0, 0x94, 0xf2,
         0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
 
-static GuestPCIAddress *get_pci_info(char *guid, Error **errp)
+static GuestPCIAddress *get_pci_info(char *guid, Error *errp[static 1])
 {
     HDEVINFO dev_info;
     SP_DEVINFO_DATA dev_info_data;
@@ -564,7 +566,7 @@ out:
     return pci;
 }
 
-static int get_disk_bus_type(HANDLE vol_h, Error **errp)
+static int get_disk_bus_type(HANDLE vol_h, Error *errp[static 1])
 {
     STORAGE_PROPERTY_QUERY query;
     STORAGE_DEVICE_DESCRIPTOR *dev_desc, buf;
@@ -588,7 +590,8 @@ static int get_disk_bus_type(HANDLE vol_h, Error **errp)
 /* VSS provider works with volumes, thus there is no difference if
  * the volume consist of spanned disks. Info about the first disk in the
  * volume is returned for the spanned disk group (LVM) */
-static GuestDiskAddressList *build_guest_disk_info(char *guid, Error **errp)
+static GuestDiskAddressList *build_guest_disk_info(char *guid,
+                                                   Error *errp[static 1])
 {
     GuestDiskAddressList *list = NULL;
     GuestDiskAddress *disk;
@@ -648,14 +651,16 @@ out_free:
 
 #else
 
-static GuestDiskAddressList *build_guest_disk_info(char *guid, Error **errp)
+static GuestDiskAddressList *build_guest_disk_info(char *guid,
+                                                   Error *errp[static 1])
 {
     return NULL;
 }
 
 #endif /* CONFIG_QGA_NTDDSCSI */
 
-static GuestFilesystemInfo *build_guest_fsinfo(char *guid, Error **errp)
+static GuestFilesystemInfo *build_guest_fsinfo(char *guid,
+                                               Error *errp[static 1])
 {
     DWORD info_size;
     char mnt, *mnt_point;
@@ -703,7 +708,7 @@ free:
     return fs;
 }
 
-GuestFilesystemInfoList *qmp_guest_get_fsinfo(Error **errp)
+GuestFilesystemInfoList *qmp_guest_get_fsinfo(Error *errp[static 1])
 {
     HANDLE vol_h;
     GuestFilesystemInfoList *new, *ret = NULL;
@@ -737,7 +742,7 @@ GuestFilesystemInfoList *qmp_guest_get_fsinfo(Error **errp)
 /*
  * Return status of freeze/thaw
  */
-GuestFsfreezeStatus qmp_guest_fsfreeze_status(Error **errp)
+GuestFsfreezeStatus qmp_guest_fsfreeze_status(Error *errp[static 1])
 {
     if (!vss_initialized()) {
         error_setg(errp, QERR_UNSUPPORTED);
@@ -755,7 +760,7 @@ GuestFsfreezeStatus qmp_guest_fsfreeze_status(Error **errp)
  * Freeze local file systems using Volume Shadow-copy Service.
  * The frozen state is limited for up to 10 seconds by VSS.
  */
-int64_t qmp_guest_fsfreeze_freeze(Error **errp)
+int64_t qmp_guest_fsfreeze_freeze(Error *errp[static 1])
 {
     int i;
 
@@ -788,7 +793,7 @@ error:
 
 int64_t qmp_guest_fsfreeze_freeze_list(bool has_mountpoints,
                                        strList *mountpoints,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
 
@@ -798,7 +803,7 @@ int64_t qmp_guest_fsfreeze_freeze_list(bool has_mountpoints,
 /*
  * Thaw local file systems using Volume Shadow-copy Service.
  */
-int64_t qmp_guest_fsfreeze_thaw(Error **errp)
+int64_t qmp_guest_fsfreeze_thaw(Error *errp[static 1])
 {
     int i;
 
@@ -838,7 +843,7 @@ static void guest_fsfreeze_cleanup(void)
  * areas.
  */
 GuestFilesystemTrimResponse *
-qmp_guest_fstrim(bool has_minimum, int64_t minimum, Error **errp)
+qmp_guest_fstrim(bool has_minimum, int64_t minimum, Error *errp[static 1])
 {
     GuestFilesystemTrimResponse *resp;
     HANDLE handle;
@@ -940,7 +945,7 @@ typedef enum {
     GUEST_SUSPEND_MODE_RAM
 } GuestSuspendMode;
 
-static void check_suspend_mode(GuestSuspendMode mode, Error **errp)
+static void check_suspend_mode(GuestSuspendMode mode, Error *errp[static 1])
 {
     SYSTEM_POWER_CAPABILITIES sys_pwr_caps;
     Error *local_err = NULL;
@@ -987,7 +992,7 @@ static DWORD WINAPI do_suspend(LPVOID opaque)
     return ret;
 }
 
-void qmp_guest_suspend_disk(Error **errp)
+void qmp_guest_suspend_disk(Error *errp[static 1])
 {
     Error *local_err = NULL;
     GuestSuspendMode *mode = g_new(GuestSuspendMode, 1);
@@ -1003,7 +1008,7 @@ void qmp_guest_suspend_disk(Error **errp)
     }
 }
 
-void qmp_guest_suspend_ram(Error **errp)
+void qmp_guest_suspend_ram(Error *errp[static 1])
 {
     Error *local_err = NULL;
     GuestSuspendMode *mode = g_new(GuestSuspendMode, 1);
@@ -1019,12 +1024,12 @@ void qmp_guest_suspend_ram(Error **errp)
     }
 }
 
-void qmp_guest_suspend_hybrid(Error **errp)
+void qmp_guest_suspend_hybrid(Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
 }
 
-static IP_ADAPTER_ADDRESSES *guest_get_adapters_addresses(Error **errp)
+static IP_ADAPTER_ADDRESSES *guest_get_adapters_addresses(Error *errp[static 
1])
 {
     IP_ADAPTER_ADDRESSES *adptr_addrs = NULL;
     ULONG adptr_addrs_len = 0;
@@ -1058,7 +1063,7 @@ static char *guest_wctomb_dup(WCHAR *wstr)
 }
 
 static char *guest_addr_to_str(IP_ADAPTER_UNICAST_ADDRESS *ip_addr,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     char addr_str[INET6_ADDRSTRLEN + INET_ADDRSTRLEN];
     DWORD len;
@@ -1145,7 +1150,7 @@ out:
 }
 #endif
 
-GuestNetworkInterfaceList *qmp_guest_network_get_interfaces(Error **errp)
+GuestNetworkInterfaceList *qmp_guest_network_get_interfaces(Error *errp[static 
1])
 {
     IP_ADAPTER_ADDRESSES *adptr_addrs, *addr;
     IP_ADAPTER_UNICAST_ADDRESS *ip_addr = NULL;
@@ -1238,7 +1243,7 @@ out:
     return head;
 }
 
-int64_t qmp_guest_get_time(Error **errp)
+int64_t qmp_guest_get_time(Error *errp[static 1])
 {
     SYSTEMTIME ts = {0};
     FILETIME tf;
@@ -1258,7 +1263,7 @@ int64_t qmp_guest_get_time(Error **errp)
                 - W32_FT_OFFSET) * 100;
 }
 
-void qmp_guest_set_time(bool has_time, int64_t time_ns, Error **errp)
+void qmp_guest_set_time(bool has_time, int64_t time_ns, Error *errp[static 1])
 {
     SYSTEMTIME ts;
     FILETIME tf;
@@ -1302,7 +1307,7 @@ void qmp_guest_set_time(bool has_time, int64_t time_ns, 
Error **errp)
     }
 }
 
-GuestLogicalProcessorList *qmp_guest_get_vcpus(Error **errp)
+GuestLogicalProcessorList *qmp_guest_get_vcpus(Error *errp[static 1])
 {
     PSYSTEM_LOGICAL_PROCESSOR_INFORMATION pslpi, ptr;
     DWORD length;
@@ -1372,7 +1377,8 @@ GuestLogicalProcessorList *qmp_guest_get_vcpus(Error 
**errp)
     return NULL;
 }
 
-int64_t qmp_guest_set_vcpus(GuestLogicalProcessorList *vcpus, Error **errp)
+int64_t qmp_guest_set_vcpus(GuestLogicalProcessorList *vcpus,
+                            Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
     return -1;
@@ -1425,7 +1431,7 @@ get_net_error_message(gint error)
 void qmp_guest_set_user_password(const char *username,
                                  const char *password,
                                  bool crypted,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     NET_API_STATUS nas;
     char *rawpasswddata = NULL;
@@ -1477,20 +1483,21 @@ done:
     g_free(rawpasswddata);
 }
 
-GuestMemoryBlockList *qmp_guest_get_memory_blocks(Error **errp)
+GuestMemoryBlockList *qmp_guest_get_memory_blocks(Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
     return NULL;
 }
 
 GuestMemoryBlockResponseList *
-qmp_guest_set_memory_blocks(GuestMemoryBlockList *mem_blks, Error **errp)
+qmp_guest_set_memory_blocks(GuestMemoryBlockList *mem_blks,
+                            Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
     return NULL;
 }
 
-GuestMemoryBlockInfo *qmp_guest_get_memory_block_info(Error **errp)
+GuestMemoryBlockInfo *qmp_guest_get_memory_block_info(Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
     return NULL;
@@ -1556,7 +1563,7 @@ typedef struct _GA_WTSINFOA {
 
 } GA_WTSINFOA;
 
-GuestUserList *qmp_guest_get_users(Error **err)
+GuestUserList *qmp_guest_get_users(Error *err[static 1])
 {
 #if (_WIN32_WINNT >= 0x0600)
 #define QGA_NANOSECONDS 10000000
diff --git a/qga/commands.c b/qga/commands.c
index 3333ed50b2..6a1e5c9176 100644
--- a/qga/commands.c
+++ b/qga/commands.c
@@ -37,18 +37,18 @@ void slog(const gchar *fmt, ...)
     va_end(ap);
 }
 
-int64_t qmp_guest_sync_delimited(int64_t id, Error **errp)
+int64_t qmp_guest_sync_delimited(int64_t id, Error *errp[static 1])
 {
     ga_set_response_delimited(ga_state);
     return id;
 }
 
-int64_t qmp_guest_sync(int64_t id, Error **errp)
+int64_t qmp_guest_sync(int64_t id, Error *errp[static 1])
 {
     return id;
 }
 
-void qmp_guest_ping(Error **errp)
+void qmp_guest_ping(Error *errp[static 1])
 {
     slog("guest-ping called");
 }
@@ -70,7 +70,7 @@ static void qmp_command_info(QmpCommand *cmd, void *opaque)
     info->supported_commands = cmd_info_list;
 }
 
-struct GuestAgentInfo *qmp_guest_info(Error **errp)
+struct GuestAgentInfo *qmp_guest_info(Error *errp[static 1])
 {
     GuestAgentInfo *info = g_new0(GuestAgentInfo, 1);
 
@@ -142,7 +142,7 @@ static GuestExecInfo *guest_exec_info_find(int64_t 
pid_numeric)
     return NULL;
 }
 
-GuestExecStatus *qmp_guest_exec_status(int64_t pid, Error **err)
+GuestExecStatus *qmp_guest_exec_status(int64_t pid, Error *err[static 1])
 {
     GuestExecInfo *gei;
     GuestExecStatus *ges;
@@ -481,7 +481,7 @@ done:
 
 /* Convert GuestFileWhence (either a raw integer or an enum value) into
  * the guest's SEEK_ constants.  */
-int ga_parse_whence(GuestFileWhence *whence, Error **errp)
+int ga_parse_whence(GuestFileWhence *whence, Error *errp[static 1])
 {
     /* Exploit the fact that we picked values to match QGA_SEEK_*. */
     if (whence->type == QTYPE_QSTRING) {
@@ -500,7 +500,7 @@ int ga_parse_whence(GuestFileWhence *whence, Error **errp)
     return -1;
 }
 
-GuestHostName *qmp_guest_get_host_name(Error **err)
+GuestHostName *qmp_guest_get_host_name(Error *err[static 1])
 {
     GuestHostName *result = NULL;
     gchar const *hostname = g_get_host_name();
@@ -511,7 +511,7 @@ GuestHostName *qmp_guest_get_host_name(Error **err)
     return result;
 }
 
-GuestTimezone *qmp_guest_get_timezone(Error **errp)
+GuestTimezone *qmp_guest_get_timezone(Error *errp[static 1])
 {
 #if GLIB_CHECK_VERSION(2, 28, 0)
     GuestTimezone *info = NULL;
diff --git a/qga/main.c b/qga/main.c
index 00b064d1e0..8fff47fc1a 100644
--- a/qga/main.c
+++ b/qga/main.c
@@ -896,7 +896,7 @@ out:
     return ret;
 }
 
-int64_t ga_get_fd_handle(GAState *s, Error **errp)
+int64_t ga_get_fd_handle(GAState *s, Error *errp[static 1])
 {
     int64_t handle;
 
diff --git a/qga/vss-win32.c b/qga/vss-win32.c
index a80933c98b..2300b71adf 100644
--- a/qga/vss-win32.c
+++ b/qga/vss-win32.c
@@ -145,7 +145,7 @@ void ga_uninstall_vss_provider(void)
 }
 
 /* Call VSS requester and freeze/thaw filesystems and applications */
-void qga_vss_fsfreeze(int *nr_volume, bool freeze, Error **errp)
+void qga_vss_fsfreeze(int *nr_volume, bool freeze, Error *errp[static 1])
 {
     const char *func_name = freeze ? "requester_freeze" : "requester_thaw";
     QGAVSSRequesterFunc func;
diff --git a/qmp.c b/qmp.c
index 9821343ad4..454c77f721 100644
--- a/qmp.c
+++ b/qmp.c
@@ -38,7 +38,7 @@
 #include "hw/mem/pc-dimm.h"
 #include "hw/acpi/acpi_dev_interface.h"
 
-NameInfo *qmp_query_name(Error **errp)
+NameInfo *qmp_query_name(Error *errp[static 1])
 {
     NameInfo *info = g_malloc0(sizeof(*info));
 
@@ -50,7 +50,7 @@ NameInfo *qmp_query_name(Error **errp)
     return info;
 }
 
-VersionInfo *qmp_query_version(Error **errp)
+VersionInfo *qmp_query_version(Error *errp[static 1])
 {
     VersionInfo *info = g_new0(VersionInfo, 1);
 
@@ -63,7 +63,7 @@ VersionInfo *qmp_query_version(Error **errp)
     return info;
 }
 
-KvmInfo *qmp_query_kvm(Error **errp)
+KvmInfo *qmp_query_kvm(Error *errp[static 1])
 {
     KvmInfo *info = g_malloc0(sizeof(*info));
 
@@ -73,7 +73,7 @@ KvmInfo *qmp_query_kvm(Error **errp)
     return info;
 }
 
-UuidInfo *qmp_query_uuid(Error **errp)
+UuidInfo *qmp_query_uuid(Error *errp[static 1])
 {
     UuidInfo *info = g_malloc0(sizeof(*info));
 
@@ -81,13 +81,13 @@ UuidInfo *qmp_query_uuid(Error **errp)
     return info;
 }
 
-void qmp_quit(Error **errp)
+void qmp_quit(Error *errp[static 1])
 {
     no_shutdown = 0;
     qemu_system_shutdown_request(SHUTDOWN_CAUSE_HOST_QMP);
 }
 
-void qmp_stop(Error **errp)
+void qmp_stop(Error *errp[static 1])
 {
     /* if there is a dump in background, we should wait until the dump
      * finished */
@@ -103,22 +103,22 @@ void qmp_stop(Error **errp)
     }
 }
 
-void qmp_system_reset(Error **errp)
+void qmp_system_reset(Error *errp[static 1])
 {
     qemu_system_reset_request(SHUTDOWN_CAUSE_HOST_QMP);
 }
 
-void qmp_system_powerdown(Error **erp)
+void qmp_system_powerdown(Error *erp[static 1])
 {
     qemu_system_powerdown_request();
 }
 
-void qmp_cpu(int64_t index, Error **errp)
+void qmp_cpu(int64_t index, Error *errp[static 1])
 {
     /* Just do nothing */
 }
 
-void qmp_cpu_add(int64_t id, Error **errp)
+void qmp_cpu_add(int64_t id, Error *errp[static 1])
 {
     MachineClass *mc;
 
@@ -133,13 +133,13 @@ void qmp_cpu_add(int64_t id, Error **errp)
 #ifndef CONFIG_VNC
 /* If VNC support is enabled, the "true" query-vnc command is
    defined in the VNC subsystem */
-VncInfo *qmp_query_vnc(Error **errp)
+VncInfo *qmp_query_vnc(Error *errp[static 1])
 {
     error_setg(errp, QERR_FEATURE_DISABLED, "vnc");
     return NULL;
 };
 
-VncInfo2List *qmp_query_vnc_servers(Error **errp)
+VncInfo2List *qmp_query_vnc_servers(Error *errp[static 1])
 {
     error_setg(errp, QERR_FEATURE_DISABLED, "vnc");
     return NULL;
@@ -156,13 +156,13 @@ VncInfo2List *qmp_query_vnc_servers(Error **errp)
  * one, or else linking fails.  FIXME Educate the QAPI schema on
  * CONFIG_SPICE.
  */
-SpiceInfo *qmp_query_spice(Error **errp)
+SpiceInfo *qmp_query_spice(Error *errp[static 1])
 {
     abort();
 };
 #endif
 
-void qmp_cont(Error **errp)
+void qmp_cont(Error *errp[static 1])
 {
     BlockBackend *blk;
     BlockDriverState *bs;
@@ -211,12 +211,12 @@ void qmp_cont(Error **errp)
     }
 }
 
-void qmp_system_wakeup(Error **errp)
+void qmp_system_wakeup(Error *errp[static 1])
 {
     qemu_system_wakeup_request(QEMU_WAKEUP_REASON_OTHER);
 }
 
-ObjectPropertyInfoList *qmp_qom_list(const char *path, Error **errp)
+ObjectPropertyInfoList *qmp_qom_list(const char *path, Error *errp[static 1])
 {
     Object *obj;
     bool ambiguous = false;
@@ -251,7 +251,7 @@ ObjectPropertyInfoList *qmp_qom_list(const char *path, 
Error **errp)
 }
 
 void qmp_qom_set(const char *path, const char *property, QObject *value,
-                 Error **errp)
+                 Error *errp[static 1])
 {
     Object *obj;
 
@@ -265,7 +265,8 @@ void qmp_qom_set(const char *path, const char *property, 
QObject *value,
     object_property_set_qobject(obj, value, property, errp);
 }
 
-QObject *qmp_qom_get(const char *path, const char *property, Error **errp)
+QObject *qmp_qom_get(const char *path, const char *property,
+                     Error *errp[static 1])
 {
     Object *obj;
 
@@ -280,7 +281,8 @@ QObject *qmp_qom_get(const char *path, const char 
*property, Error **errp)
 }
 
 void qmp_set_password(const char *protocol, const char *password,
-                      bool has_connected, const char *connected, Error **errp)
+                      bool has_connected, const char *connected,
+                      Error *errp[static 1])
 {
     int disconnect_if_connected = 0;
     int fail_if_connected = 0;
@@ -330,7 +332,7 @@ void qmp_set_password(const char *protocol, const char 
*password,
 }
 
 void qmp_expire_password(const char *protocol, const char *whenstr,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     time_t when;
     int rc;
@@ -368,14 +370,14 @@ void qmp_expire_password(const char *protocol, const char 
*whenstr,
 }
 
 #ifdef CONFIG_VNC
-void qmp_change_vnc_password(const char *password, Error **errp)
+void qmp_change_vnc_password(const char *password, Error *errp[static 1])
 {
     if (vnc_display_password(NULL, password) < 0) {
         error_setg(errp, QERR_SET_PASSWD_FAILED);
     }
 }
 
-static void qmp_change_vnc_listen(const char *target, Error **errp)
+static void qmp_change_vnc_listen(const char *target, Error *errp[static 1])
 {
     QemuOptsList *olist = qemu_find_opts("vnc");
     QemuOpts *opts;
@@ -398,7 +400,7 @@ static void qmp_change_vnc_listen(const char *target, Error 
**errp)
 }
 
 static void qmp_change_vnc(const char *target, bool has_arg, const char *arg,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     if (strcmp(target, "passwd") == 0 || strcmp(target, "password") == 0) {
         if (!has_arg) {
@@ -411,19 +413,19 @@ static void qmp_change_vnc(const char *target, bool 
has_arg, const char *arg,
     }
 }
 #else
-void qmp_change_vnc_password(const char *password, Error **errp)
+void qmp_change_vnc_password(const char *password, Error *errp[static 1])
 {
     error_setg(errp, QERR_FEATURE_DISABLED, "vnc");
 }
 static void qmp_change_vnc(const char *target, bool has_arg, const char *arg,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     error_setg(errp, QERR_FEATURE_DISABLED, "vnc");
 }
 #endif /* !CONFIG_VNC */
 
 void qmp_change(const char *device, const char *target,
-                bool has_arg, const char *arg, Error **errp)
+                bool has_arg, const char *arg, Error *errp[static 1])
 {
     if (strcmp(device, "vnc") == 0) {
         qmp_change_vnc(target, has_arg, arg, errp);
@@ -451,7 +453,7 @@ ObjectTypeInfoList *qmp_qom_list_types(bool has_implements,
                                        const char *implements,
                                        bool has_abstract,
                                        bool abstract,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     ObjectTypeInfoList *ret = NULL;
 
@@ -512,7 +514,7 @@ static DevicePropertyInfo 
*make_device_property_info(ObjectClass *klass,
 }
 
 DevicePropertyInfoList *qmp_device_list_properties(const char *typename,
-                                                   Error **errp)
+                                                   Error *errp[static 1])
 {
     ObjectClass *klass;
     Object *obj;
@@ -579,35 +581,35 @@ DevicePropertyInfoList *qmp_device_list_properties(const 
char *typename,
     return prop_list;
 }
 
-CpuDefinitionInfoList *qmp_query_cpu_definitions(Error **errp)
+CpuDefinitionInfoList *qmp_query_cpu_definitions(Error *errp[static 1])
 {
     return arch_query_cpu_definitions(errp);
 }
 
 CpuModelExpansionInfo *qmp_query_cpu_model_expansion(CpuModelExpansionType 
type,
                                                      CpuModelInfo *model,
-                                                     Error **errp)
+                                                     Error *errp[static 1])
 {
     return arch_query_cpu_model_expansion(type, model, errp);
 }
 
 CpuModelCompareInfo *qmp_query_cpu_model_comparison(CpuModelInfo *modela,
                                                     CpuModelInfo *modelb,
-                                                    Error **errp)
+                                                    Error *errp[static 1])
 {
     return arch_query_cpu_model_comparison(modela, modelb, errp);
 }
 
 CpuModelBaselineInfo *qmp_query_cpu_model_baseline(CpuModelInfo *modela,
                                                    CpuModelInfo *modelb,
-                                                   Error **errp)
+                                                   Error *errp[static 1])
 {
     return arch_query_cpu_model_baseline(modela, modelb, errp);
 }
 
 void qmp_add_client(const char *protocol, const char *fdname,
                     bool has_skipauth, bool skipauth, bool has_tls, bool tls,
-                    Error **errp)
+                    Error *errp[static 1])
 {
     Chardev *s;
     int fd;
@@ -650,7 +652,7 @@ void qmp_add_client(const char *protocol, const char 
*fdname,
 
 
 void qmp_object_add(const char *type, const char *id,
-                    bool has_props, QObject *props, Error **errp)
+                    bool has_props, QObject *props, Error *errp[static 1])
 {
     QDict *pdict;
     Visitor *v;
@@ -676,12 +678,12 @@ void qmp_object_add(const char *type, const char *id,
     QDECREF(pdict);
 }
 
-void qmp_object_del(const char *id, Error **errp)
+void qmp_object_del(const char *id, Error *errp[static 1])
 {
     user_creatable_del(id, errp);
 }
 
-MemoryDeviceInfoList *qmp_query_memory_devices(Error **errp)
+MemoryDeviceInfoList *qmp_query_memory_devices(Error *errp[static 1])
 {
     MemoryDeviceInfoList *head = NULL;
     MemoryDeviceInfoList **prev = &head;
@@ -691,7 +693,7 @@ MemoryDeviceInfoList *qmp_query_memory_devices(Error **errp)
     return head;
 }
 
-ACPIOSTInfoList *qmp_query_acpi_ospm_status(Error **errp)
+ACPIOSTInfoList *qmp_query_acpi_ospm_status(Error *errp[static 1])
 {
     bool ambig;
     ACPIOSTInfoList *head = NULL;
diff --git a/qobject/json-parser.c b/qobject/json-parser.c
index 506514100c..24a63ef61c 100644
--- a/qobject/json-parser.c
+++ b/qobject/json-parser.c
@@ -556,7 +556,8 @@ QObject *json_parser_parse(GQueue *tokens, va_list *ap)
     return json_parser_parse_err(tokens, ap, IGNORE_ERRORS);
 }
 
-QObject *json_parser_parse_err(GQueue *tokens, va_list *ap, Error **errp)
+QObject *json_parser_parse_err(GQueue *tokens, va_list *ap,
+                               Error *errp[static 1])
 {
     JSONParserContext *ctxt = parser_context_new(tokens);
     QObject *result;
diff --git a/qobject/qdict.c b/qobject/qdict.c
index 88e2ecd658..5a9ea24ffc 100644
--- a/qobject/qdict.c
+++ b/qobject/qdict.c
@@ -732,7 +732,7 @@ static void qdict_split_flat_key(const char *key, char 
**prefix,
  *
  * Returns: 1 if a valid list, 0 if a dict, -1 on error
  */
-static int qdict_is_list(QDict *maybe_list, Error **errp)
+static int qdict_is_list(QDict *maybe_list, Error *errp[static 1])
 {
     const QDictEntry *ent;
     ssize_t len = 0;
@@ -825,7 +825,7 @@ static int qdict_is_list(QDict *maybe_list, Error **errp)
  * Returns: either a QDict or QList for the nested data structure, or NULL
  * on error
  */
-QObject *qdict_crumple(const QDict *src, Error **errp)
+QObject *qdict_crumple(const QDict *src, Error *errp[static 1])
 {
     const QDictEntry *ent;
     QDict *two_level, *multi_level = NULL;
diff --git a/qobject/qjson.c b/qobject/qjson.c
index b2f3bfec53..fb9b5e8ebc 100644
--- a/qobject/qjson.c
+++ b/qobject/qjson.c
@@ -35,7 +35,8 @@ static void parse_json(JSONMessageParser *parser, GQueue 
*tokens)
     s->result = json_parser_parse_err(tokens, s->ap, &s->err);
 }
 
-QObject *qobject_from_jsonv(const char *string, va_list *ap, Error **errp)
+QObject *qobject_from_jsonv(const char *string, va_list *ap,
+                            Error *errp[static 1])
 {
     JSONParsingState state = {};
 
@@ -50,7 +51,7 @@ QObject *qobject_from_jsonv(const char *string, va_list *ap, 
Error **errp)
     return state.result;
 }
 
-QObject *qobject_from_json(const char *string, Error **errp)
+QObject *qobject_from_json(const char *string, Error *errp[static 1])
 {
     return qobject_from_jsonv(string, NULL, errp);
 }
diff --git a/qom/cpu.c b/qom/cpu.c
index 50698767dd..b724df7416 100644
--- a/qom/cpu.c
+++ b/qom/cpu.c
@@ -99,7 +99,7 @@ static bool cpu_common_get_paging_enabled(const CPUState *cpu)
 }
 
 void cpu_get_memory_mapping(CPUState *cpu, MemoryMappingList *list,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     CPUClass *cc = CPU_GET_CLASS(cpu);
 
@@ -108,7 +108,7 @@ void cpu_get_memory_mapping(CPUState *cpu, 
MemoryMappingList *list,
 
 static void cpu_common_get_memory_mapping(CPUState *cpu,
                                           MemoryMappingList *list,
-                                          Error **errp)
+                                          Error *errp[static 1])
 {
     error_setg(errp, "Obtaining memory mappings is unsupported on this CPU.");
 }
@@ -320,7 +320,7 @@ static ObjectClass *cpu_common_class_by_name(const char 
*cpu_model)
 }
 
 static void cpu_common_parse_features(const char *typename, char *features,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     char *featurestr; /* Single "key=value" string being parsed */
     char *val;
@@ -359,7 +359,7 @@ static void cpu_common_parse_features(const char *typename, 
char *features,
     }
 }
 
-static void cpu_common_realizefn(DeviceState *dev, Error **errp)
+static void cpu_common_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cpu = CPU(dev);
 
@@ -372,7 +372,7 @@ static void cpu_common_realizefn(DeviceState *dev, Error 
**errp)
     trace_init_vcpu(cpu);
 }
 
-static void cpu_common_unrealizefn(DeviceState *dev, Error **errp)
+static void cpu_common_unrealizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cpu = CPU(dev);
     /* NOTE: latest generic point before the cpu is fully unrealized */
diff --git a/qom/object.c b/qom/object.c
index 2a0084ea96..8d9e1e8dc5 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -414,7 +414,8 @@ static void object_property_del_all(Object *obj)
     g_hash_table_unref(obj->properties);
 }
 
-static void object_property_del_child(Object *obj, Object *child, Error **errp)
+static void object_property_del_child(Object *obj, Object *child,
+                                      Error *errp[static 1])
 {
     ObjectProperty *prop;
     GHashTableIter iter;
@@ -498,7 +499,7 @@ Object *object_new(const char *typename)
 Object *object_new_with_props(const char *typename,
                               Object *parent,
                               const char *id,
-                              Error **errp,
+                              Error *errp[static 1],
                               ...)
 {
     va_list vargs;
@@ -562,7 +563,7 @@ Object *object_new_with_propv(const char *typename,
 
 
 int object_set_props(Object *obj,
-                     Error **errp,
+                     Error *errp[static 1],
                      ...)
 {
     va_list vargs;
@@ -909,7 +910,7 @@ object_property_add(Object *obj, const char *name, const 
char *type,
                     ObjectPropertyAccessor *get,
                     ObjectPropertyAccessor *set,
                     ObjectPropertyRelease *release,
-                    void *opaque, Error **errp)
+                    void *opaque, Error *errp[static 1])
 {
     ObjectProperty *prop;
     size_t name_len = strlen(name);
@@ -963,7 +964,7 @@ object_class_property_add(ObjectClass *klass,
                           ObjectPropertyAccessor *set,
                           ObjectPropertyRelease *release,
                           void *opaque,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     ObjectProperty *prop;
 
@@ -990,7 +991,7 @@ object_class_property_add(ObjectClass *klass,
 }
 
 ObjectProperty *object_property_find(Object *obj, const char *name,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     ObjectProperty *prop;
     ObjectClass *klass = object_get_class(obj);
@@ -1030,7 +1031,7 @@ ObjectProperty 
*object_property_iter_next(ObjectPropertyIterator *iter)
 }
 
 ObjectProperty *object_class_property_find(ObjectClass *klass, const char 
*name,
-                                           Error **errp)
+                                           Error *errp[static 1])
 {
     ObjectProperty *prop;
     ObjectClass *parent_klass;
@@ -1050,7 +1051,7 @@ ObjectProperty *object_class_property_find(ObjectClass 
*klass, const char *name,
     return prop;
 }
 
-void object_property_del(Object *obj, const char *name, Error **errp)
+void object_property_del(Object *obj, const char *name, Error *errp[static 1])
 {
     ObjectProperty *prop = g_hash_table_lookup(obj->properties, name);
 
@@ -1066,7 +1067,7 @@ void object_property_del(Object *obj, const char *name, 
Error **errp)
 }
 
 void object_property_get(Object *obj, Visitor *v, const char *name,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     ObjectProperty *prop = object_property_find(obj, name, errp);
     if (prop == NULL) {
@@ -1081,7 +1082,7 @@ void object_property_get(Object *obj, Visitor *v, const 
char *name,
 }
 
 void object_property_set(Object *obj, Visitor *v, const char *name,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     ObjectProperty *prop = object_property_find(obj, name, errp);
     if (prop == NULL) {
@@ -1096,7 +1097,7 @@ void object_property_set(Object *obj, Visitor *v, const 
char *name,
 }
 
 void object_property_set_str(Object *obj, const char *value,
-                             const char *name, Error **errp)
+                             const char *name, Error *errp[static 1])
 {
     QString *qstr = qstring_from_str(value);
     object_property_set_qobject(obj, QOBJECT(qstr), name, errp);
@@ -1105,7 +1106,7 @@ void object_property_set_str(Object *obj, const char 
*value,
 }
 
 char *object_property_get_str(Object *obj, const char *name,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     QObject *ret = object_property_get_qobject(obj, name, errp);
     QString *qstring;
@@ -1127,7 +1128,7 @@ char *object_property_get_str(Object *obj, const char 
*name,
 }
 
 void object_property_set_link(Object *obj, Object *value,
-                              const char *name, Error **errp)
+                              const char *name, Error *errp[static 1])
 {
     if (value) {
         gchar *path = object_get_canonical_path(value);
@@ -1139,7 +1140,7 @@ void object_property_set_link(Object *obj, Object *value,
 }
 
 Object *object_property_get_link(Object *obj, const char *name,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     char *str = object_property_get_str(obj, name, errp);
     Object *target = NULL;
@@ -1157,7 +1158,7 @@ Object *object_property_get_link(Object *obj, const char 
*name,
 }
 
 void object_property_set_bool(Object *obj, bool value,
-                              const char *name, Error **errp)
+                              const char *name, Error *errp[static 1])
 {
     QBool *qbool = qbool_from_bool(value);
     object_property_set_qobject(obj, QOBJECT(qbool), name, errp);
@@ -1166,7 +1167,7 @@ void object_property_set_bool(Object *obj, bool value,
 }
 
 bool object_property_get_bool(Object *obj, const char *name,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     QObject *ret = object_property_get_qobject(obj, name, errp);
     QBool *qbool;
@@ -1188,7 +1189,7 @@ bool object_property_get_bool(Object *obj, const char 
*name,
 }
 
 void object_property_set_int(Object *obj, int64_t value,
-                             const char *name, Error **errp)
+                             const char *name, Error *errp[static 1])
 {
     QInt *qint = qint_from_int(value);
     object_property_set_qobject(obj, QOBJECT(qint), name, errp);
@@ -1197,7 +1198,7 @@ void object_property_set_int(Object *obj, int64_t value,
 }
 
 int64_t object_property_get_int(Object *obj, const char *name,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     QObject *ret = object_property_get_qobject(obj, name, errp);
     QInt *qint;
@@ -1225,7 +1226,7 @@ typedef struct EnumProperty {
 } EnumProperty;
 
 int object_property_get_enum(Object *obj, const char *name,
-                             const char *typename, Error **errp)
+                             const char *typename, Error *errp[static 1])
 {
     Visitor *v;
     char *str;
@@ -1264,7 +1265,7 @@ int object_property_get_enum(Object *obj, const char 
*name,
 }
 
 void object_property_get_uint16List(Object *obj, const char *name,
-                                    uint16List **list, Error **errp)
+                                    uint16List **list, Error *errp[static 1])
 {
     Visitor *v;
     char *str;
@@ -1285,7 +1286,7 @@ out:
 }
 
 void object_property_parse(Object *obj, const char *string,
-                           const char *name, Error **errp)
+                           const char *name, Error *errp[static 1])
 {
     Visitor *v = string_input_visitor_new(string);
     object_property_set(obj, v, name, errp);
@@ -1293,7 +1294,7 @@ void object_property_parse(Object *obj, const char 
*string,
 }
 
 char *object_property_print(Object *obj, const char *name, bool human,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     Visitor *v;
     char *string = NULL;
@@ -1311,7 +1312,8 @@ out:
     return string;
 }
 
-const char *object_property_get_type(Object *obj, const char *name, Error 
**errp)
+const char *object_property_get_type(Object *obj, const char *name,
+                                     Error *errp[static 1])
 {
     ObjectProperty *prop = object_property_find(obj, name, errp);
     if (prop == NULL) {
@@ -1339,7 +1341,7 @@ Object *object_get_objects_root(void)
 
 static void object_get_child_property(Object *obj, Visitor *v,
                                       const char *name, void *opaque,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     Object *child = opaque;
     gchar *path;
@@ -1367,7 +1369,7 @@ static void object_finalize_child_property(Object *obj, 
const char *name,
 }
 
 void object_property_add_child(Object *obj, const char *name,
-                               Object *child, Error **errp)
+                               Object *child, Error *errp[static 1])
 {
     Error *local_err = NULL;
     gchar *type;
@@ -1396,7 +1398,7 @@ out:
 }
 
 void object_property_allow_set_link(Object *obj, const char *name,
-                                    Object *val, Error **errp)
+                                    Object *val, Error *errp[static 1])
 {
     /* Allow the link to be set, always */
 }
@@ -1409,7 +1411,7 @@ typedef struct {
 
 static void object_get_link_property(Object *obj, Visitor *v,
                                      const char *name, void *opaque,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     LinkProperty *lprop = opaque;
     Object **child = lprop->child;
@@ -1435,7 +1437,7 @@ static void object_get_link_property(Object *obj, Visitor 
*v,
  * Returns: The matched object or NULL on path lookup failures.
  */
 static Object *object_resolve_link(Object *obj, const char *name,
-                                   const char *path, Error **errp)
+                                   const char *path, Error *errp[static 1])
 {
     const char *type;
     gchar *target_type;
@@ -1467,7 +1469,7 @@ static Object *object_resolve_link(Object *obj, const 
char *name,
 
 static void object_set_link_property(Object *obj, Visitor *v,
                                      const char *name, void *opaque,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     Error *local_err = NULL;
     LinkProperty *prop = opaque;
@@ -1522,7 +1524,7 @@ void object_property_add_link(Object *obj, const char 
*name,
                               void (*check)(Object *, const char *,
                                             Object *, Error **),
                               ObjectPropertyLinkFlags flags,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     Error *local_err = NULL;
     LinkProperty *prop = g_malloc(sizeof(*prop));
@@ -1554,7 +1556,7 @@ out:
 }
 
 void object_property_add_const_link(Object *obj, const char *name,
-                                    Object *target, Error **errp)
+                                    Object *target, Error *errp[static 1])
 {
     char *link_type;
     ObjectProperty *op;
@@ -1731,7 +1733,7 @@ typedef struct StringProperty
 } StringProperty;
 
 static void property_get_str(Object *obj, Visitor *v, const char *name,
-                             void *opaque, Error **errp)
+                             void *opaque, Error *errp[static 1])
 {
     StringProperty *prop = opaque;
     char *value;
@@ -1748,7 +1750,7 @@ static void property_get_str(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void property_set_str(Object *obj, Visitor *v, const char *name,
-                             void *opaque, Error **errp)
+                             void *opaque, Error *errp[static 1])
 {
     StringProperty *prop = opaque;
     char *value;
@@ -1772,7 +1774,7 @@ static void property_release_str(Object *obj, const char 
*name,
 void object_property_add_str(Object *obj, const char *name,
                            char *(*get)(Object *, Error **),
                            void (*set)(Object *, const char *, Error **),
-                           Error **errp)
+                           Error *errp[static 1])
 {
     StringProperty *prop = g_malloc0(sizeof(*prop));
 
@@ -1793,7 +1795,7 @@ void object_class_property_add_str(ObjectClass *klass, 
const char *name,
                                    char *(*get)(Object *, Error **),
                                    void (*set)(Object *, const char *,
                                                Error **),
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     StringProperty *prop = g_malloc0(sizeof(*prop));
 
@@ -1817,7 +1819,7 @@ typedef struct BoolProperty
 } BoolProperty;
 
 static void property_get_bool(Object *obj, Visitor *v, const char *name,
-                              void *opaque, Error **errp)
+                              void *opaque, Error *errp[static 1])
 {
     BoolProperty *prop = opaque;
     bool value;
@@ -1833,7 +1835,7 @@ static void property_get_bool(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void property_set_bool(Object *obj, Visitor *v, const char *name,
-                              void *opaque, Error **errp)
+                              void *opaque, Error *errp[static 1])
 {
     BoolProperty *prop = opaque;
     bool value;
@@ -1856,7 +1858,7 @@ static void property_release_bool(Object *obj, const char 
*name,
 void object_property_add_bool(Object *obj, const char *name,
                               bool (*get)(Object *, Error **),
                               void (*set)(Object *, bool, Error **),
-                              Error **errp)
+                              Error *errp[static 1])
 {
     BoolProperty *prop = g_malloc0(sizeof(*prop));
 
@@ -1876,7 +1878,7 @@ void object_property_add_bool(Object *obj, const char 
*name,
 void object_class_property_add_bool(ObjectClass *klass, const char *name,
                                     bool (*get)(Object *, Error **),
                                     void (*set)(Object *, bool, Error **),
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     BoolProperty *prop = g_malloc0(sizeof(*prop));
 
@@ -1894,7 +1896,7 @@ void object_class_property_add_bool(ObjectClass *klass, 
const char *name,
 }
 
 static void property_get_enum(Object *obj, Visitor *v, const char *name,
-                              void *opaque, Error **errp)
+                              void *opaque, Error *errp[static 1])
 {
     EnumProperty *prop = opaque;
     int value;
@@ -1910,7 +1912,7 @@ static void property_get_enum(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void property_set_enum(Object *obj, Visitor *v, const char *name,
-                              void *opaque, Error **errp)
+                              void *opaque, Error *errp[static 1])
 {
     EnumProperty *prop = opaque;
     int value;
@@ -1934,7 +1936,7 @@ void object_property_add_enum(Object *obj, const char 
*name,
                               const char * const *strings,
                               int (*get)(Object *, Error **),
                               void (*set)(Object *, int, Error **),
-                              Error **errp)
+                              Error *errp[static 1])
 {
     EnumProperty *prop = g_malloc(sizeof(*prop));
 
@@ -1957,7 +1959,7 @@ void object_class_property_add_enum(ObjectClass *klass, 
const char *name,
                                     const char * const *strings,
                                     int (*get)(Object *, Error **),
                                     void (*set)(Object *, int, Error **),
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     EnumProperty *prop = g_malloc(sizeof(*prop));
 
@@ -1980,7 +1982,7 @@ typedef struct TMProperty {
 } TMProperty;
 
 static void property_get_tm(Object *obj, Visitor *v, const char *name,
-                            void *opaque, Error **errp)
+                            void *opaque, Error *errp[static 1])
 {
     TMProperty *prop = opaque;
     Error *err = NULL;
@@ -2036,7 +2038,7 @@ static void property_release_tm(Object *obj, const char 
*name,
 
 void object_property_add_tm(Object *obj, const char *name,
                             void (*get)(Object *, struct tm *, Error **),
-                            Error **errp)
+                            Error *errp[static 1])
 {
     TMProperty *prop = g_malloc0(sizeof(*prop));
 
@@ -2053,7 +2055,7 @@ void object_property_add_tm(Object *obj, const char *name,
 
 void object_class_property_add_tm(ObjectClass *klass, const char *name,
                                   void (*get)(Object *, struct tm *, Error **),
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     TMProperty *prop = g_malloc0(sizeof(*prop));
 
@@ -2068,90 +2070,94 @@ void object_class_property_add_tm(ObjectClass *klass, 
const char *name,
     }
 }
 
-static char *qdev_get_type(Object *obj, Error **errp)
+static char *qdev_get_type(Object *obj, Error *errp[static 1])
 {
     return g_strdup(object_get_typename(obj));
 }
 
 static void property_get_uint8_ptr(Object *obj, Visitor *v, const char *name,
-                                   void *opaque, Error **errp)
+                                   void *opaque, Error *errp[static 1])
 {
     uint8_t value = *(uint8_t *)opaque;
     visit_type_uint8(v, name, &value, errp);
 }
 
 static void property_get_uint16_ptr(Object *obj, Visitor *v, const char *name,
-                                    void *opaque, Error **errp)
+                                    void *opaque, Error *errp[static 1])
 {
     uint16_t value = *(uint16_t *)opaque;
     visit_type_uint16(v, name, &value, errp);
 }
 
 static void property_get_uint32_ptr(Object *obj, Visitor *v, const char *name,
-                                    void *opaque, Error **errp)
+                                    void *opaque, Error *errp[static 1])
 {
     uint32_t value = *(uint32_t *)opaque;
     visit_type_uint32(v, name, &value, errp);
 }
 
 static void property_get_uint64_ptr(Object *obj, Visitor *v, const char *name,
-                                    void *opaque, Error **errp)
+                                    void *opaque, Error *errp[static 1])
 {
     uint64_t value = *(uint64_t *)opaque;
     visit_type_uint64(v, name, &value, errp);
 }
 
 void object_property_add_uint8_ptr(Object *obj, const char *name,
-                                   const uint8_t *v, Error **errp)
+                                   const uint8_t *v, Error *errp[static 1])
 {
     object_property_add(obj, name, "uint8", property_get_uint8_ptr,
                         NULL, NULL, (void *)v, errp);
 }
 
 void object_class_property_add_uint8_ptr(ObjectClass *klass, const char *name,
-                                         const uint8_t *v, Error **errp)
+                                         const uint8_t *v,
+                                         Error *errp[static 1])
 {
     object_class_property_add(klass, name, "uint8", property_get_uint8_ptr,
                               NULL, NULL, (void *)v, errp);
 }
 
 void object_property_add_uint16_ptr(Object *obj, const char *name,
-                                    const uint16_t *v, Error **errp)
+                                    const uint16_t *v, Error *errp[static 1])
 {
     object_property_add(obj, name, "uint16", property_get_uint16_ptr,
                         NULL, NULL, (void *)v, errp);
 }
 
 void object_class_property_add_uint16_ptr(ObjectClass *klass, const char *name,
-                                          const uint16_t *v, Error **errp)
+                                          const uint16_t *v,
+                                          Error *errp[static 1])
 {
     object_class_property_add(klass, name, "uint16", property_get_uint16_ptr,
                               NULL, NULL, (void *)v, errp);
 }
 
 void object_property_add_uint32_ptr(Object *obj, const char *name,
-                                    const uint32_t *v, Error **errp)
+                                    const uint32_t *v, Error *errp[static 1])
 {
     object_property_add(obj, name, "uint32", property_get_uint32_ptr,
                         NULL, NULL, (void *)v, errp);
 }
 
 void object_class_property_add_uint32_ptr(ObjectClass *klass, const char *name,
-                                          const uint32_t *v, Error **errp)
+                                          const uint32_t *v,
+                                          Error *errp[static 1])
 {
     object_class_property_add(klass, name, "uint32", property_get_uint32_ptr,
                               NULL, NULL, (void *)v, errp);
 }
 
 void object_property_add_uint64_ptr(Object *obj, const char *name,
-                                    const uint64_t *v, Error **errp)
+                                    const uint64_t *v, Error *errp[static 1])
 {
     object_property_add(obj, name, "uint64", property_get_uint64_ptr,
                         NULL, NULL, (void *)v, errp);
 }
 
 void object_class_property_add_uint64_ptr(ObjectClass *klass, const char *name,
-                                          const uint64_t *v, Error **errp)
+                                          const uint64_t *v,
+                                          Error *errp[static 1])
 {
     object_class_property_add(klass, name, "uint64", property_get_uint64_ptr,
                               NULL, NULL, (void *)v, errp);
@@ -2163,7 +2169,7 @@ typedef struct {
 } AliasProperty;
 
 static void property_get_alias(Object *obj, Visitor *v, const char *name,
-                               void *opaque, Error **errp)
+                               void *opaque, Error *errp[static 1])
 {
     AliasProperty *prop = opaque;
 
@@ -2171,7 +2177,7 @@ static void property_get_alias(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void property_set_alias(Object *obj, Visitor *v, const char *name,
-                               void *opaque, Error **errp)
+                               void *opaque, Error *errp[static 1])
 {
     AliasProperty *prop = opaque;
 
@@ -2196,7 +2202,7 @@ static void property_release_alias(Object *obj, const 
char *name, void *opaque)
 
 void object_property_add_alias(Object *obj, const char *name,
                                Object *target_obj, const char *target_name,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     AliasProperty *prop;
     ObjectProperty *op;
@@ -2241,7 +2247,8 @@ out:
 }
 
 void object_property_set_description(Object *obj, const char *name,
-                                     const char *description, Error **errp)
+                                     const char *description,
+                                     Error *errp[static 1])
 {
     ObjectProperty *op;
 
@@ -2257,7 +2264,7 @@ void object_property_set_description(Object *obj, const 
char *name,
 void object_class_property_set_description(ObjectClass *klass,
                                            const char *name,
                                            const char *description,
-                                           Error **errp)
+                                           Error *errp[static 1])
 {
     ObjectProperty *op;
 
diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c
index e8f0fa9b8d..08e09951fc 100644
--- a/qom/object_interfaces.c
+++ b/qom/object_interfaces.c
@@ -6,7 +6,7 @@
 #include "qapi/opts-visitor.h"
 #include "qemu/config-file.h"
 
-void user_creatable_complete(Object *obj, Error **errp)
+void user_creatable_complete(Object *obj, Error *errp[static 1])
 {
 
     UserCreatableClass *ucc;
@@ -23,7 +23,7 @@ void user_creatable_complete(Object *obj, Error **errp)
     }
 }
 
-bool user_creatable_can_be_deleted(UserCreatable *uc, Error **errp)
+bool user_creatable_can_be_deleted(UserCreatable *uc, Error *errp[static 1])
 {
 
     UserCreatableClass *ucc = USER_CREATABLE_GET_CLASS(uc);
@@ -37,7 +37,7 @@ bool user_creatable_can_be_deleted(UserCreatable *uc, Error 
**errp)
 
 Object *user_creatable_add_type(const char *type, const char *id,
                                 const QDict *qdict,
-                                Visitor *v, Error **errp)
+                                Visitor *v, Error *errp[static 1])
 {
     Object *obj;
     ObjectClass *klass;
@@ -109,7 +109,7 @@ out:
 }
 
 
-Object *user_creatable_add_opts(QemuOpts *opts, Error **errp)
+Object *user_creatable_add_opts(QemuOpts *opts, Error *errp[static 1])
 {
     Visitor *v;
     QDict *pdict;
@@ -143,7 +143,8 @@ Object *user_creatable_add_opts(QemuOpts *opts, Error 
**errp)
 }
 
 
-int user_creatable_add_opts_foreach(void *opaque, QemuOpts *opts, Error **errp)
+int user_creatable_add_opts_foreach(void *opaque, QemuOpts *opts,
+                                    Error *errp[static 1])
 {
     bool (*type_predicate)(const char *) = opaque;
     Object *obj = NULL;
@@ -166,7 +167,7 @@ int user_creatable_add_opts_foreach(void *opaque, QemuOpts 
*opts, Error **errp)
 }
 
 
-void user_creatable_del(const char *id, Error **errp)
+void user_creatable_del(const char *id, Error *errp[static 1])
 {
     Object *container;
     Object *obj;
diff --git a/qom/qom-qobject.c b/qom/qom-qobject.c
index 4aec20d73c..cd7d143f18 100644
--- a/qom/qom-qobject.c
+++ b/qom/qom-qobject.c
@@ -19,7 +19,7 @@
 #include "qapi/qobject-output-visitor.h"
 
 void object_property_set_qobject(Object *obj, QObject *value,
-                                 const char *name, Error **errp)
+                                 const char *name, Error *errp[static 1])
 {
     Visitor *v;
 
@@ -29,7 +29,7 @@ void object_property_set_qobject(Object *obj, QObject *value,
 }
 
 QObject *object_property_get_qobject(Object *obj, const char *name,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     QObject *ret = NULL;
     Error *local_err = NULL;
diff --git a/qtest.c b/qtest.c
index 9a5d1dc50d..7c79a4a5c0 100644
--- a/qtest.c
+++ b/qtest.c
@@ -669,7 +669,8 @@ static int qtest_init_accel(MachineState *ms)
     return 0;
 }
 
-void qtest_init(const char *qtest_chrdev, const char *qtest_log, Error **errp)
+void qtest_init(const char *qtest_chrdev, const char *qtest_log,
+                Error *errp[static 1])
 {
     Chardev *chr;
 
diff --git a/replication.c b/replication.c
index d8f00e75b2..174b2c7008 100644
--- a/replication.c
+++ b/replication.c
@@ -42,7 +42,7 @@ void replication_remove(ReplicationState *rs)
 /*
  * The caller of the function MUST make sure vm stopped
  */
-void replication_start_all(ReplicationMode mode, Error **errp)
+void replication_start_all(ReplicationMode mode, Error *errp[static 1])
 {
     ReplicationState *rs, *next;
 
@@ -56,7 +56,7 @@ void replication_start_all(ReplicationMode mode, Error **errp)
     }
 }
 
-void replication_do_checkpoint_all(Error **errp)
+void replication_do_checkpoint_all(Error *errp[static 1])
 {
     ReplicationState *rs, *next;
 
@@ -70,7 +70,7 @@ void replication_do_checkpoint_all(Error **errp)
     }
 }
 
-void replication_get_error_all(Error **errp)
+void replication_get_error_all(Error *errp[static 1])
 {
     ReplicationState *rs, *next;
 
@@ -84,7 +84,7 @@ void replication_get_error_all(Error **errp)
     }
 }
 
-void replication_stop_all(bool failover, Error **errp)
+void replication_stop_all(bool failover, Error *errp[static 1])
 {
     ReplicationState *rs, *next;
 
diff --git a/stubs/arch-query-cpu-def.c b/stubs/arch-query-cpu-def.c
index cefe4beb82..051811a10a 100644
--- a/stubs/arch-query-cpu-def.c
+++ b/stubs/arch-query-cpu-def.c
@@ -3,7 +3,7 @@
 #include "sysemu/arch_init.h"
 #include "qapi/qmp/qerror.h"
 
-CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp)
+CpuDefinitionInfoList *arch_query_cpu_definitions(Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
     return NULL;
diff --git a/stubs/arch-query-cpu-model-baseline.c 
b/stubs/arch-query-cpu-model-baseline.c
index 094ec13c2c..aca479b75b 100644
--- a/stubs/arch-query-cpu-model-baseline.c
+++ b/stubs/arch-query-cpu-model-baseline.c
@@ -5,7 +5,7 @@
 
 CpuModelBaselineInfo *arch_query_cpu_model_baseline(CpuModelInfo *modela,
                                                     CpuModelInfo *modelb,
-                                                    Error **errp)
+                                                    Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
     return NULL;
diff --git a/stubs/arch-query-cpu-model-comparison.c 
b/stubs/arch-query-cpu-model-comparison.c
index d5486ae980..2e384ce2da 100644
--- a/stubs/arch-query-cpu-model-comparison.c
+++ b/stubs/arch-query-cpu-model-comparison.c
@@ -5,7 +5,7 @@
 
 CpuModelCompareInfo *arch_query_cpu_model_comparison(CpuModelInfo *modela,
                                                      CpuModelInfo *modelb,
-                                                     Error **errp)
+                                                     Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
     return NULL;
diff --git a/stubs/arch-query-cpu-model-expansion.c 
b/stubs/arch-query-cpu-model-expansion.c
index ae7cf554d1..39167206a8 100644
--- a/stubs/arch-query-cpu-model-expansion.c
+++ b/stubs/arch-query-cpu-model-expansion.c
@@ -5,7 +5,7 @@
 
 CpuModelExpansionInfo *arch_query_cpu_model_expansion(CpuModelExpansionType 
type,
                                                       CpuModelInfo *mode,
-                                                      Error **errp)
+                                                      Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
     return NULL;
diff --git a/stubs/migr-blocker.c b/stubs/migr-blocker.c
index 2b64ac9560..c1545510bb 100644
--- a/stubs/migr-blocker.c
+++ b/stubs/migr-blocker.c
@@ -2,7 +2,7 @@
 #include "qemu-common.h"
 #include "migration/blocker.h"
 
-int migrate_add_blocker(Error *reason, Error **errp)
+int migrate_add_blocker(Error *reason, Error *errp[static 1])
 {
     return 0;
 }
diff --git a/stubs/monitor.c b/stubs/monitor.c
index e018c8f594..2d6092441b 100644
--- a/stubs/monitor.c
+++ b/stubs/monitor.c
@@ -5,7 +5,7 @@
 
 Monitor *cur_mon = NULL;
 
-int monitor_get_fd(Monitor *mon, const char *name, Error **errp)
+int monitor_get_fd(Monitor *mon, const char *name, Error *errp[static 1])
 {
     error_setg(errp, "only QEMU supports file descriptor passing");
     return -1;
diff --git a/stubs/uuid.c b/stubs/uuid.c
index a880de8d61..49cbda99a4 100644
--- a/stubs/uuid.c
+++ b/stubs/uuid.c
@@ -3,7 +3,7 @@
 #include "qemu/uuid.h"
 #include "qmp-commands.h"
 
-UuidInfo *qmp_query_uuid(Error **errp)
+UuidInfo *qmp_query_uuid(Error *errp[static 1])
 {
     UuidInfo *info = g_malloc0(sizeof(*info));
 
diff --git a/stubs/vmgenid.c b/stubs/vmgenid.c
index c64eb7a16e..b42a5e5a47 100644
--- a/stubs/vmgenid.c
+++ b/stubs/vmgenid.c
@@ -2,7 +2,7 @@
 #include "qmp-commands.h"
 #include "qapi/qmp/qerror.h"
 
-GuidInfo *qmp_query_vm_generation_id(Error **errp)
+GuidInfo *qmp_query_vm_generation_id(Error *errp[static 1])
 {
     error_setg(errp, QERR_UNSUPPORTED);
     return NULL;
diff --git a/stubs/vmstate.c b/stubs/vmstate.c
index 6399474e49..a5356ccc0e 100644
--- a/stubs/vmstate.c
+++ b/stubs/vmstate.c
@@ -9,7 +9,7 @@ int vmstate_register_with_alias_id(DeviceState *dev,
                                    const VMStateDescription *vmsd,
                                    void *base, int alias_id,
                                    int required_for_version,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     return 0;
 }
diff --git a/stubs/xen-hvm.c b/stubs/xen-hvm.c
index 3ca6c51b21..9a8e3ae9ba 100644
--- a/stubs/xen-hvm.c
+++ b/stubs/xen-hvm.c
@@ -37,7 +37,7 @@ int xen_is_pirq_msi(uint32_t msi_data)
 }
 
 void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size, MemoryRegion *mr,
-                   Error **errp)
+                   Error *errp[static 1])
 {
 }
 
@@ -58,6 +58,6 @@ void xen_hvm_init(PCMachineState *pcms, MemoryRegion 
**ram_memory)
 {
 }
 
-void qmp_xen_set_global_dirty_log(bool enable, Error **errp)
+void qmp_xen_set_global_dirty_log(bool enable, Error *errp[static 1])
 {
 }
diff --git a/target/alpha/cpu.c b/target/alpha/cpu.c
index b0a391f54b..c48e270428 100644
--- a/target/alpha/cpu.c
+++ b/target/alpha/cpu.c
@@ -54,7 +54,7 @@ static void alpha_cpu_disas_set_info(CPUState *cpu, 
disassemble_info *info)
     info->print_insn = print_insn_alpha;
 }
 
-static void alpha_cpu_realizefn(DeviceState *dev, Error **errp)
+static void alpha_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     AlphaCPUClass *acc = ALPHA_CPU_GET_CLASS(dev);
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
index 00b17ca6af..d990141c2c 100644
--- a/target/arm/cpu.c
+++ b/target/arm/cpu.c
@@ -621,7 +621,7 @@ static void arm_cpu_finalizefn(Object *obj)
     g_hash_table_destroy(cpu->cp_regs);
 }
 
-static void arm_cpu_realizefn(DeviceState *dev, Error **errp)
+static void arm_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     ARMCPU *cpu = ARM_CPU(dev);
diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c
index 7d6055bb63..86cbb2caa0 100644
--- a/target/arm/cpu64.c
+++ b/target/arm/cpu64.c
@@ -246,14 +246,15 @@ static const ARMCPUInfo aarch64_cpus[] = {
     { .name = NULL }
 };
 
-static bool aarch64_cpu_get_aarch64(Object *obj, Error **errp)
+static bool aarch64_cpu_get_aarch64(Object *obj, Error *errp[static 1])
 {
     ARMCPU *cpu = ARM_CPU(obj);
 
     return arm_feature(&cpu->env, ARM_FEATURE_AARCH64);
 }
 
-static void aarch64_cpu_set_aarch64(Object *obj, bool value, Error **errp)
+static void aarch64_cpu_set_aarch64(Object *obj, bool value,
+                                    Error *errp[static 1])
 {
     ARMCPU *cpu = ARM_CPU(obj);
 
diff --git a/target/arm/helper.c b/target/arm/helper.c
index 2594faa9b8..a24d666546 100644
--- a/target/arm/helper.c
+++ b/target/arm/helper.c
@@ -5336,7 +5336,7 @@ static void arm_cpu_add_definition(gpointer data, 
gpointer user_data)
     *cpu_list = entry;
 }
 
-CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp)
+CpuDefinitionInfoList *arch_query_cpu_definitions(Error *errp[static 1])
 {
     CpuDefinitionInfoList *cpu_list = NULL;
     GSList *list;
diff --git a/target/arm/monitor.c b/target/arm/monitor.c
index 299cb80ae7..eba32bc41f 100644
--- a/target/arm/monitor.c
+++ b/target/arm/monitor.c
@@ -66,7 +66,7 @@ static inline void gic_cap_kvm_probe(GICCapability *v2, 
GICCapability *v3)
 #endif
 }
 
-GICCapabilityList *qmp_query_gic_capabilities(Error **errp)
+GICCapabilityList *qmp_query_gic_capabilities(Error *errp[static 1])
 {
     GICCapabilityList *head = NULL;
     GICCapability *v2 = gic_cap_new(2), *v3 = gic_cap_new(3);
diff --git a/target/cris/cpu.c b/target/cris/cpu.c
index 32815e3fa3..cf015e97cf 100644
--- a/target/cris/cpu.c
+++ b/target/cris/cpu.c
@@ -137,7 +137,7 @@ void cris_cpu_list(FILE *f, fprintf_function cpu_fprintf)
     g_slist_free(list);
 }
 
-static void cris_cpu_realizefn(DeviceState *dev, Error **errp)
+static void cris_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     CRISCPUClass *ccc = CRIS_CPU_GET_CLASS(dev);
diff --git a/target/hppa/cpu.c b/target/hppa/cpu.c
index 500414752e..d36fe2be8d 100644
--- a/target/hppa/cpu.c
+++ b/target/hppa/cpu.c
@@ -48,7 +48,7 @@ static void hppa_cpu_disas_set_info(CPUState *cs, 
disassemble_info *info)
     info->print_insn = print_insn_hppa;
 }
 
-static void hppa_cpu_realizefn(DeviceState *dev, Error **errp)
+static void hppa_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     HPPACPUClass *acc = HPPA_CPU_GET_CLASS(dev);
diff --git a/target/i386/arch_memory_mapping.c 
b/target/i386/arch_memory_mapping.c
index 647cff2829..014e7c816a 100644
--- a/target/i386/arch_memory_mapping.c
+++ b/target/i386/arch_memory_mapping.c
@@ -268,7 +268,7 @@ static void walk_pml5e(MemoryMappingList *list, 
AddressSpace *as,
 #endif
 
 void x86_cpu_get_memory_mapping(CPUState *cs, MemoryMappingList *list,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     X86CPU *cpu = X86_CPU(cs);
     CPUX86State *env = &cpu->env;
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index e0a5862568..4c0582a70b 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -1575,7 +1575,8 @@ static void max_x86_cpu_class_init(ObjectClass *oc, void 
*data)
     dc->props = max_x86_cpu_properties;
 }
 
-static void x86_cpu_load_def(X86CPU *cpu, X86CPUDefinition *def, Error **errp);
+static void x86_cpu_load_def(X86CPU *cpu, X86CPUDefinition *def,
+                            Error *errp[static 1]);
 
 static void max_x86_cpu_initfn(Object *obj)
 {
@@ -1678,7 +1679,7 @@ static void report_unavailable_features(FeatureWord w, 
uint32_t mask)
 
 static void x86_cpuid_version_get_family(Object *obj, Visitor *v,
                                          const char *name, void *opaque,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     X86CPU *cpu = X86_CPU(obj);
     CPUX86State *env = &cpu->env;
@@ -1693,7 +1694,7 @@ static void x86_cpuid_version_get_family(Object *obj, 
Visitor *v,
 
 static void x86_cpuid_version_set_family(Object *obj, Visitor *v,
                                          const char *name, void *opaque,
-                                         Error **errp)
+                                         Error *errp[static 1])
 {
     X86CPU *cpu = X86_CPU(obj);
     CPUX86State *env = &cpu->env;
@@ -1721,7 +1722,7 @@ static void x86_cpuid_version_set_family(Object *obj, 
Visitor *v,
 
 static void x86_cpuid_version_get_model(Object *obj, Visitor *v,
                                         const char *name, void *opaque,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     X86CPU *cpu = X86_CPU(obj);
     CPUX86State *env = &cpu->env;
@@ -1734,7 +1735,7 @@ static void x86_cpuid_version_get_model(Object *obj, 
Visitor *v,
 
 static void x86_cpuid_version_set_model(Object *obj, Visitor *v,
                                         const char *name, void *opaque,
-                                        Error **errp)
+                                        Error *errp[static 1])
 {
     X86CPU *cpu = X86_CPU(obj);
     CPUX86State *env = &cpu->env;
@@ -1758,7 +1759,7 @@ static void x86_cpuid_version_set_model(Object *obj, 
Visitor *v,
 
 static void x86_cpuid_version_get_stepping(Object *obj, Visitor *v,
                                            const char *name, void *opaque,
-                                           Error **errp)
+                                           Error *errp[static 1])
 {
     X86CPU *cpu = X86_CPU(obj);
     CPUX86State *env = &cpu->env;
@@ -1770,7 +1771,7 @@ static void x86_cpuid_version_get_stepping(Object *obj, 
Visitor *v,
 
 static void x86_cpuid_version_set_stepping(Object *obj, Visitor *v,
                                            const char *name, void *opaque,
-                                           Error **errp)
+                                           Error *errp[static 1])
 {
     X86CPU *cpu = X86_CPU(obj);
     CPUX86State *env = &cpu->env;
@@ -1792,7 +1793,7 @@ static void x86_cpuid_version_set_stepping(Object *obj, 
Visitor *v,
     env->cpuid_version |= value & 0xf;
 }
 
-static char *x86_cpuid_get_vendor(Object *obj, Error **errp)
+static char *x86_cpuid_get_vendor(Object *obj, Error *errp[static 1])
 {
     X86CPU *cpu = X86_CPU(obj);
     CPUX86State *env = &cpu->env;
@@ -1805,7 +1806,7 @@ static char *x86_cpuid_get_vendor(Object *obj, Error 
**errp)
 }
 
 static void x86_cpuid_set_vendor(Object *obj, const char *value,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     X86CPU *cpu = X86_CPU(obj);
     CPUX86State *env = &cpu->env;
@@ -1826,7 +1827,7 @@ static void x86_cpuid_set_vendor(Object *obj, const char 
*value,
     }
 }
 
-static char *x86_cpuid_get_model_id(Object *obj, Error **errp)
+static char *x86_cpuid_get_model_id(Object *obj, Error *errp[static 1])
 {
     X86CPU *cpu = X86_CPU(obj);
     CPUX86State *env = &cpu->env;
@@ -1842,7 +1843,7 @@ static char *x86_cpuid_get_model_id(Object *obj, Error 
**errp)
 }
 
 static void x86_cpuid_set_model_id(Object *obj, const char *model_id,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     X86CPU *cpu = X86_CPU(obj);
     CPUX86State *env = &cpu->env;
@@ -1864,7 +1865,7 @@ static void x86_cpuid_set_model_id(Object *obj, const 
char *model_id,
 }
 
 static void x86_cpuid_get_tsc_freq(Object *obj, Visitor *v, const char *name,
-                                   void *opaque, Error **errp)
+                                   void *opaque, Error *errp[static 1])
 {
     X86CPU *cpu = X86_CPU(obj);
     int64_t value;
@@ -1874,7 +1875,7 @@ static void x86_cpuid_get_tsc_freq(Object *obj, Visitor 
*v, const char *name,
 }
 
 static void x86_cpuid_set_tsc_freq(Object *obj, Visitor *v, const char *name,
-                                   void *opaque, Error **errp)
+                                   void *opaque, Error *errp[static 1])
 {
     X86CPU *cpu = X86_CPU(obj);
     const int64_t min = 0;
@@ -1897,7 +1898,7 @@ static void x86_cpuid_set_tsc_freq(Object *obj, Visitor 
*v, const char *name,
 /* Generic getter for "feature-words" and "filtered-features" properties */
 static void x86_cpu_get_feature_words(Object *obj, Visitor *v,
                                       const char *name, void *opaque,
-                                      Error **errp)
+                                      Error *errp[static 1])
 {
     uint32_t *array = (uint32_t *)opaque;
     FeatureWord w;
@@ -1924,7 +1925,7 @@ static void x86_cpu_get_feature_words(Object *obj, 
Visitor *v,
 }
 
 static void x86_get_hv_spinlocks(Object *obj, Visitor *v, const char *name,
-                                 void *opaque, Error **errp)
+                                 void *opaque, Error *errp[static 1])
 {
     X86CPU *cpu = X86_CPU(obj);
     int64_t value = cpu->hyperv_spinlock_attempts;
@@ -1933,7 +1934,7 @@ static void x86_get_hv_spinlocks(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void x86_set_hv_spinlocks(Object *obj, Visitor *v, const char *name,
-                                 void *opaque, Error **errp)
+                                 void *opaque, Error *errp[static 1])
 {
     const int64_t min = 0xFFF;
     const int64_t max = UINT_MAX;
@@ -2007,7 +2008,7 @@ static gint compare_string(gconstpointer a, gconstpointer 
b)
 /* Parse "+feature,-feature,feature=foo" CPU feature string
  */
 static void x86_cpu_parse_featurestr(const char *typename, char *features,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     char *featurestr; /* Single 'key=value" string being parsed */
     static bool cpu_globals_initialized;
@@ -2095,7 +2096,7 @@ static void x86_cpu_parse_featurestr(const char 
*typename, char *features,
     }
 }
 
-static void x86_cpu_expand_features(X86CPU *cpu, Error **errp);
+static void x86_cpu_expand_features(X86CPU *cpu, Error *errp[static 1]);
 static int x86_cpu_filter_features(X86CPU *cpu);
 
 /* Check for missing features that may prevent the CPU class from
@@ -2252,7 +2253,7 @@ static void x86_cpu_definition_entry(gpointer data, 
gpointer user_data)
     *cpu_list = entry;
 }
 
-CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp)
+CpuDefinitionInfoList *arch_query_cpu_definitions(Error *errp[static 1])
 {
     CpuDefinitionInfoList *cpu_list = NULL;
     GSList *list = get_sorted_cpu_model_list();
@@ -2305,7 +2306,8 @@ static void x86_cpu_apply_props(X86CPU *cpu, PropValue 
*props)
 
 /* Load data from X86CPUDefinition into a X86CPU object
  */
-static void x86_cpu_load_def(X86CPU *cpu, X86CPUDefinition *def, Error **errp)
+static void x86_cpu_load_def(X86CPU *cpu, X86CPUDefinition *def,
+                             Error *errp[static 1])
 {
     CPUX86State *env = &cpu->env;
     const char *vendor;
@@ -2456,7 +2458,8 @@ static void x86_cpu_to_dict_full(X86CPU *cpu, QDict 
*props)
     }
 }
 
-static void object_apply_props(Object *obj, QDict *props, Error **errp)
+static void object_apply_props(Object *obj, QDict *props,
+                               Error *errp[static 1])
 {
     const QDictEntry *prop;
     Error *err = NULL;
@@ -2473,7 +2476,8 @@ static void object_apply_props(Object *obj, QDict *props, 
Error **errp)
 }
 
 /* Create X86CPU object according to model+props specification */
-static X86CPU *x86_cpu_from_model(const char *model, QDict *props, Error 
**errp)
+static X86CPU *x86_cpu_from_model(const char *model, QDict *props,
+                                  Error *errp[static 1])
 {
     X86CPU *xc = NULL;
     X86CPUClass *xcc;
@@ -3178,7 +3182,7 @@ APICCommonClass *apic_get_class(void)
     return APIC_COMMON_CLASS(object_class_by_name(apic_type));
 }
 
-static void x86_cpu_apic_create(X86CPU *cpu, Error **errp)
+static void x86_cpu_apic_create(X86CPU *cpu, Error *errp[static 1])
 {
     APICCommonState *apic;
     ObjectClass *apic_class = OBJECT_CLASS(apic_get_class());
@@ -3196,7 +3200,7 @@ static void x86_cpu_apic_create(X86CPU *cpu, Error **errp)
     apic->apicbase = APIC_DEFAULT_ADDRESS | MSR_IA32_APICBASE_ENABLE;
 }
 
-static void x86_cpu_apic_realize(X86CPU *cpu, Error **errp)
+static void x86_cpu_apic_realize(X86CPU *cpu, Error *errp[static 1])
 {
     APICCommonState *apic;
     static bool apic_mmio_map_once;
@@ -3234,7 +3238,7 @@ static void x86_cpu_machine_done(Notifier *n, void 
*unused)
     }
 }
 #else
-static void x86_cpu_apic_realize(X86CPU *cpu, Error **errp)
+static void x86_cpu_apic_realize(X86CPU *cpu, Error *errp[static 1])
 {
 }
 #endif
@@ -3360,7 +3364,7 @@ static void x86_cpu_enable_xsave_components(X86CPU *cpu)
 /* Expand CPU configuration data, based on configured features
  * and host/accelerator capabilities when appropriate.
  */
-static void x86_cpu_expand_features(X86CPU *cpu, Error **errp)
+static void x86_cpu_expand_features(X86CPU *cpu, Error *errp[static 1])
 {
     CPUX86State *env = &cpu->env;
     FeatureWord w;
@@ -3473,7 +3477,7 @@ static int x86_cpu_filter_features(X86CPU *cpu)
 #define IS_AMD_CPU(env) ((env)->cpuid_vendor1 == CPUID_VENDOR_AMD_1 && \
                          (env)->cpuid_vendor2 == CPUID_VENDOR_AMD_2 && \
                          (env)->cpuid_vendor3 == CPUID_VENDOR_AMD_3)
-static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
+static void x86_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     X86CPU *cpu = X86_CPU(dev);
@@ -3670,7 +3674,7 @@ out:
     }
 }
 
-static void x86_cpu_unrealizefn(DeviceState *dev, Error **errp)
+static void x86_cpu_unrealizefn(DeviceState *dev, Error *errp[static 1])
 {
     X86CPU *cpu = X86_CPU(dev);
     X86CPUClass *xcc = X86_CPU_GET_CLASS(dev);
@@ -3697,7 +3701,7 @@ typedef struct BitProperty {
 } BitProperty;
 
 static void x86_cpu_get_bit_prop(Object *obj, Visitor *v, const char *name,
-                                 void *opaque, Error **errp)
+                                 void *opaque, Error *errp[static 1])
 {
     X86CPU *cpu = X86_CPU(obj);
     BitProperty *fp = opaque;
@@ -3707,7 +3711,7 @@ static void x86_cpu_get_bit_prop(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void x86_cpu_set_bit_prop(Object *obj, Visitor *v, const char *name,
-                                 void *opaque, Error **errp)
+                                 void *opaque, Error *errp[static 1])
 {
     DeviceState *dev = DEVICE(obj);
     X86CPU *cpu = X86_CPU(obj);
@@ -3815,7 +3819,7 @@ static GuestPanicInformation 
*x86_cpu_get_crash_info(CPUState *cs)
 }
 static void x86_cpu_get_crash_info_qom(Object *obj, Visitor *v,
                                        const char *name, void *opaque,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     CPUState *cs = CPU(obj);
     GuestPanicInformation *panic_info;
diff --git a/target/lm32/cpu.c b/target/lm32/cpu.c
index 8bd90c09dc..5dc57cbae0 100644
--- a/target/lm32/cpu.c
+++ b/target/lm32/cpu.c
@@ -139,7 +139,7 @@ static void lm32_cpu_disas_set_info(CPUState *cpu, 
disassemble_info *info)
     info->print_insn = print_insn_lm32;
 }
 
-static void lm32_cpu_realizefn(DeviceState *dev, Error **errp)
+static void lm32_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     LM32CPUClass *lcc = LM32_CPU_GET_CLASS(dev);
diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c
index ae7fa0e1b0..311ae39417 100644
--- a/target/m68k/cpu.c
+++ b/target/m68k/cpu.c
@@ -216,7 +216,7 @@ static const M68kCPUInfo m68k_cpus[] = {
     { .name = "any",   .instance_init = any_cpu_initfn },
 };
 
-static void m68k_cpu_realizefn(DeviceState *dev, Error **errp)
+static void m68k_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     M68kCPU *cpu = M68K_CPU(dev);
diff --git a/target/microblaze/cpu.c b/target/microblaze/cpu.c
index 026b5b3e3f..8ba789d711 100644
--- a/target/microblaze/cpu.c
+++ b/target/microblaze/cpu.c
@@ -129,7 +129,7 @@ static void mb_disas_set_info(CPUState *cpu, 
disassemble_info *info)
     info->print_insn = print_insn_microblaze;
 }
 
-static void mb_cpu_realizefn(DeviceState *dev, Error **errp)
+static void mb_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     MicroBlazeCPUClass *mcc = MICROBLAZE_CPU_GET_CLASS(dev);
diff --git a/target/mips/cpu.c b/target/mips/cpu.c
index 07c82ebb9d..73edc58e93 100644
--- a/target/mips/cpu.c
+++ b/target/mips/cpu.c
@@ -119,7 +119,7 @@ static void mips_cpu_disas_set_info(CPUState *s, 
disassemble_info *info) {
 #endif
 }
 
-static void mips_cpu_realizefn(DeviceState *dev, Error **errp)
+static void mips_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     MIPSCPUClass *mcc = MIPS_CPU_GET_CLASS(dev);
diff --git a/target/moxie/cpu.c b/target/moxie/cpu.c
index ad7435ecbd..9887f98e34 100644
--- a/target/moxie/cpu.c
+++ b/target/moxie/cpu.c
@@ -55,7 +55,7 @@ static void moxie_cpu_disas_set_info(CPUState *cpu, 
disassemble_info *info)
     info->print_insn = print_insn_moxie;
 }
 
-static void moxie_cpu_realizefn(DeviceState *dev, Error **errp)
+static void moxie_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     MoxieCPUClass *mcc = MOXIE_CPU_GET_CLASS(dev);
diff --git a/target/nios2/cpu.c b/target/nios2/cpu.c
index 227c5352a7..f2dce11e80 100644
--- a/target/nios2/cpu.c
+++ b/target/nios2/cpu.c
@@ -92,7 +92,7 @@ Nios2CPU *cpu_nios2_init(const char *cpu_model)
     return cpu;
 }
 
-static void nios2_cpu_realizefn(DeviceState *dev, Error **errp)
+static void nios2_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     Nios2CPUClass *ncc = NIOS2_CPU_GET_CLASS(dev);
diff --git a/target/openrisc/cpu.c b/target/openrisc/cpu.c
index 8cd0a46bf1..a5ec210b53 100644
--- a/target/openrisc/cpu.c
+++ b/target/openrisc/cpu.c
@@ -65,7 +65,7 @@ static void openrisc_cpu_reset(CPUState *s)
 #endif
 }
 
-static void openrisc_cpu_realizefn(DeviceState *dev, Error **errp)
+static void openrisc_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     OpenRISCCPUClass *occ = OPENRISC_CPU_GET_CLASS(dev);
diff --git a/target/ppc/compat.c b/target/ppc/compat.c
index e8ec1e19e7..c93f80ef50 100644
--- a/target/ppc/compat.c
+++ b/target/ppc/compat.c
@@ -111,7 +111,8 @@ bool ppc_check_compat(PowerPCCPU *cpu, uint32_t compat_pvr,
     return true;
 }
 
-void ppc_set_compat(PowerPCCPU *cpu, uint32_t compat_pvr, Error **errp)
+void ppc_set_compat(PowerPCCPU *cpu, uint32_t compat_pvr,
+                    Error *errp[static 1])
 {
     const CompatInfo *compat = compat_by_pvr(compat_pvr);
     CPUPPCState *env = &cpu->env;
@@ -158,7 +159,7 @@ static void do_set_compat(CPUState *cs, run_on_cpu_data arg)
     ppc_set_compat(cpu, s->compat_pvr, &s->err);
 }
 
-void ppc_set_compat_all(uint32_t compat_pvr, Error **errp)
+void ppc_set_compat_all(uint32_t compat_pvr, Error *errp[static 1])
 {
     CPUState *cs;
 
diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c
index 0597df737e..cb0bcf2bd9 100644
--- a/target/ppc/translate_init.c
+++ b/target/ppc/translate_init.c
@@ -8414,7 +8414,7 @@ POWERPC_FAMILY(POWER5P)(ObjectClass *oc, void *data)
 }
 
 static void powerpc_get_compat(Object *obj, Visitor *v, const char *name,
-                               void *opaque, Error **errp)
+                               void *opaque, Error *errp[static 1])
 {
     char *value = (char *)"";
     Property *prop = opaque;
@@ -8442,7 +8442,7 @@ static void powerpc_get_compat(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void powerpc_set_compat(Object *obj, Visitor *v, const char *name,
-                               void *opaque, Error **errp)
+                               void *opaque, Error *errp[static 1])
 {
     char *value = NULL;
     Property *prop = opaque;
@@ -9503,7 +9503,7 @@ static void fix_opcode_tables(opc_handler_t **ppc_opcodes)
 }
 
 /*****************************************************************************/
-static void create_ppc_opcodes(PowerPCCPU *cpu, Error **errp)
+static void create_ppc_opcodes(PowerPCCPU *cpu, Error *errp[static 1])
 {
     PowerPCCPUClass *pcc = POWERPC_CPU_GET_CLASS(cpu);
     CPUPPCState *env = &cpu->env;
@@ -9818,7 +9818,7 @@ static inline bool ppc_cpu_is_valid(PowerPCCPUClass *pcc)
 #endif
 }
 
-static void ppc_cpu_realizefn(DeviceState *dev, Error **errp)
+static void ppc_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     PowerPCCPU *cpu = POWERPC_CPU(dev);
@@ -10064,7 +10064,7 @@ static void ppc_cpu_realizefn(DeviceState *dev, Error 
**errp)
 #endif
 }
 
-static void ppc_cpu_unrealizefn(DeviceState *dev, Error **errp)
+static void ppc_cpu_unrealizefn(DeviceState *dev, Error *errp[static 1])
 {
     PowerPCCPU *cpu = POWERPC_CPU(dev);
     PowerPCCPUClass *pcc = POWERPC_CPU_GET_CLASS(cpu);
@@ -10403,7 +10403,7 @@ static void ppc_cpu_defs_entry(gpointer data, gpointer 
user_data)
     *first = entry;
 }
 
-CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp)
+CpuDefinitionInfoList *arch_query_cpu_definitions(Error *errp[static 1])
 {
     CpuDefinitionInfoList *cpu_list = NULL;
     GSList *list;
diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
index 7d9e104151..313634b6d6 100644
--- a/target/s390x/cpu.c
+++ b/target/s390x/cpu.c
@@ -171,7 +171,7 @@ static void s390_cpu_disas_set_info(CPUState *cpu, 
disassemble_info *info)
     info->print_insn = print_insn_s390;
 }
 
-static void s390_cpu_realizefn(DeviceState *dev, Error **errp)
+static void s390_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     S390CPUClass *scc = S390_CPU_GET_CLASS(dev);
@@ -235,7 +235,7 @@ out:
 }
 
 static void s390x_cpu_get_id(Object *obj, Visitor *v, const char *name,
-                             void *opaque, Error **errp)
+                             void *opaque, Error *errp[static 1])
 {
     S390CPU *cpu = S390_CPU(obj);
     int64_t value = cpu->id;
@@ -244,7 +244,7 @@ static void s390x_cpu_get_id(Object *obj, Visitor *v, const 
char *name,
 }
 
 static void s390x_cpu_set_id(Object *obj, Visitor *v, const char *name,
-                             void *opaque, Error **errp)
+                             void *opaque, Error *errp[static 1])
 {
     S390CPU *cpu = S390_CPU(obj);
     DeviceState *dev = DEVICE(obj);
diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c
index 4fde8f41fd..4e60f9f340 100644
--- a/target/s390x/cpu_models.c
+++ b/target/s390x/cpu_models.c
@@ -299,7 +299,7 @@ static void create_cpu_model_list(ObjectClass *klass, void 
*opaque)
     *cpu_list = entry;
 }
 
-CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp)
+CpuDefinitionInfoList *arch_query_cpu_definitions(Error *errp[static 1])
 {
     CpuDefinitionInfoList *list = NULL;
 
@@ -309,7 +309,7 @@ CpuDefinitionInfoList *arch_query_cpu_definitions(Error 
**errp)
 }
 
 static void cpu_model_from_info(S390CPUModel *model, const CpuModelInfo *info,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     const QDict *qdict = NULL;
     const QDictEntry *e;
@@ -465,7 +465,7 @@ static void list_add_feat(const char *name, void *opaque)
 
 CpuModelCompareInfo *arch_query_cpu_model_comparison(CpuModelInfo *infoa,
                                                      CpuModelInfo *infob,
-                                                     Error **errp)
+                                                     Error *errp[static 1])
 {
     CpuModelCompareResult feat_result, gen_result;
     CpuModelCompareInfo *compare_info;
@@ -538,7 +538,7 @@ CpuModelCompareInfo 
*arch_query_cpu_model_comparison(CpuModelInfo *infoa,
 
 CpuModelBaselineInfo *arch_query_cpu_model_baseline(CpuModelInfo *infoa,
                                                     CpuModelInfo *infob,
-                                                    Error **errp)
+                                                    Error *errp[static 1])
 {
     CpuModelBaselineInfo *baseline_info;
     S390CPUModel modela, modelb, model;
@@ -629,7 +629,8 @@ static void error_prepend_missing_feat(const char *name, 
void *opaque)
 }
 
 static void check_compatibility(const S390CPUModel *max_model,
-                                const S390CPUModel *model, Error **errp)
+                                const S390CPUModel *model,
+                                Error *errp[static 1])
 {
     S390FeatBitmap missing;
 
@@ -684,7 +685,7 @@ static void add_qemu_cpu_model_features(S390FeatBitmap fbm)
     }
 }
 
-static S390CPUModel *get_max_cpu_model(Error **errp)
+static S390CPUModel *get_max_cpu_model(Error *errp[static 1])
 {
     static S390CPUModel max_model;
     static bool cached;
@@ -709,7 +710,8 @@ static S390CPUModel *get_max_cpu_model(Error **errp)
     return NULL;
 }
 
-static inline void apply_cpu_model(const S390CPUModel *model, Error **errp)
+static inline void apply_cpu_model(const S390CPUModel *model,
+                                   Error *errp[static 1])
 {
 #ifndef CONFIG_USER_ONLY
     static S390CPUModel applied_model;
@@ -741,7 +743,7 @@ static inline void apply_cpu_model(const S390CPUModel 
*model, Error **errp)
 #endif
 }
 
-void s390_realize_cpu_model(CPUState *cs, Error **errp)
+void s390_realize_cpu_model(CPUState *cs, Error *errp[static 1])
 {
     S390CPUClass *xcc = S390_CPU_GET_CLASS(cs);
     S390CPU *cpu = S390_CPU(cs);
@@ -779,7 +781,7 @@ void s390_realize_cpu_model(CPUState *cs, Error **errp)
 }
 
 static void get_feature(Object *obj, Visitor *v, const char *name,
-                        void *opaque, Error **errp)
+                        void *opaque, Error *errp[static 1])
 {
     S390Feat feat = (S390Feat) opaque;
     S390CPU *cpu = S390_CPU(obj);
@@ -796,7 +798,7 @@ static void get_feature(Object *obj, Visitor *v, const char 
*name,
 }
 
 static void set_feature(Object *obj, Visitor *v, const char *name,
-                        void *opaque, Error **errp)
+                        void *opaque, Error *errp[static 1])
 {
     S390Feat feat = (S390Feat) opaque;
     DeviceState *dev = DEVICE(obj);
@@ -831,7 +833,7 @@ static void set_feature(Object *obj, Visitor *v, const char 
*name,
 }
 
 static void get_feature_group(Object *obj, Visitor *v, const char *name,
-                              void *opaque, Error **errp)
+                              void *opaque, Error *errp[static 1])
 {
     S390FeatGroup group = (S390FeatGroup) opaque;
     const S390FeatGroupDef *def = s390_feat_group_def(group);
@@ -852,7 +854,7 @@ static void get_feature_group(Object *obj, Visitor *v, 
const char *name,
 }
 
 static void set_feature_group(Object *obj, Visitor *v, const char *name,
-                              void *opaque, Error **errp)
+                              void *opaque, Error *errp[static 1])
 {
     S390FeatGroup group = (S390FeatGroup) opaque;
     const S390FeatGroupDef *def = s390_feat_group_def(group);
@@ -975,17 +977,17 @@ static void s390_cpu_model_finalize(Object *obj)
     cpu->model = NULL;
 }
 
-static bool get_is_migration_safe(Object *obj, Error **errp)
+static bool get_is_migration_safe(Object *obj, Error *errp[static 1])
 {
     return S390_CPU_GET_CLASS(obj)->is_migration_safe;
 }
 
-static bool get_is_static(Object *obj, Error **errp)
+static bool get_is_static(Object *obj, Error *errp[static 1])
 {
     return S390_CPU_GET_CLASS(obj)->is_static;
 }
 
-static char *get_description(Object *obj, Error **errp)
+static char *get_description(Object *obj, Error *errp[static 1])
 {
     return g_strdup(S390_CPU_GET_CLASS(obj)->desc);
 }
diff --git a/target/s390x/helper.c b/target/s390x/helper.c
index 1408ce2b4a..1a5c83b812 100644
--- a/target/s390x/helper.c
+++ b/target/s390x/helper.c
@@ -68,7 +68,7 @@ void s390x_cpu_timer(void *opaque)
 }
 #endif
 
-S390CPU *cpu_s390x_create(const char *cpu_model, Error **errp)
+S390CPU *cpu_s390x_create(const char *cpu_model, Error *errp[static 1])
 {
     static bool features_parsed;
     char *name, *features;
@@ -104,7 +104,8 @@ S390CPU *cpu_s390x_create(const char *cpu_model, Error 
**errp)
     return S390_CPU(CPU(object_new(typename)));
 }
 
-S390CPU *s390x_new_cpu(const char *cpu_model, int64_t id, Error **errp)
+S390CPU *s390x_new_cpu(const char *cpu_model, int64_t id,
+                       Error *errp[static 1])
 {
     S390CPU *cpu;
     Error *err = NULL;
diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c
index 0979c1fc27..4d023c24b4 100644
--- a/target/s390x/kvm.c
+++ b/target/s390x/kvm.c
@@ -2550,7 +2550,7 @@ bool kvm_s390_cpu_models_supported(void)
                              KVM_S390_VM_CPU_MACHINE_SUBFUNC);
 }
 
-void kvm_s390_get_host_cpu_model(S390CPUModel *model, Error **errp)
+void kvm_s390_get_host_cpu_model(S390CPUModel *model, Error *errp[static 1])
 {
     struct kvm_s390_vm_cpu_machine prop = {};
     struct kvm_device_attr attr = {
@@ -2627,7 +2627,8 @@ void kvm_s390_get_host_cpu_model(S390CPUModel *model, 
Error **errp)
                S390_FEAT_MAX);
 }
 
-void kvm_s390_apply_cpu_model(const S390CPUModel *model, Error **errp)
+void kvm_s390_apply_cpu_model(const S390CPUModel *model,
+                              Error *errp[static 1])
 {
     struct kvm_s390_vm_cpu_processor prop  = {
         .fac_list = { 0 },
diff --git a/target/sh4/cpu.c b/target/sh4/cpu.c
index dc2cbce478..54cc3b0433 100644
--- a/target/sh4/cpu.c
+++ b/target/sh4/cpu.c
@@ -239,7 +239,7 @@ static const TypeInfo sh7785_type_info = {
     .instance_init = sh7785_cpu_initfn,
 };
 
-static void superh_cpu_realizefn(DeviceState *dev, Error **errp)
+static void superh_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     SuperHCPUClass *scc = SUPERH_CPU_GET_CLASS(dev);
diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c
index 51a6f129a1..7f8e991033 100644
--- a/target/sparc/cpu.c
+++ b/target/sparc/cpu.c
@@ -105,7 +105,7 @@ static void cpu_sparc_disas_set_info(CPUState *cpu, 
disassemble_info *info)
 }
 
 static void sparc_cpu_parse_features(CPUState *cs, char *features,
-                                     Error **errp);
+                                     Error *errp[static 1]);
 
 static int cpu_sparc_register(SPARCCPU *cpu, const char *cpu_model)
 {
@@ -571,7 +571,7 @@ static int cpu_sparc_find_by_name(sparc_def_t *cpu_def, 
const char *name)
 }
 
 static void sparc_cpu_parse_features(CPUState *cs, char *features,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     SPARCCPU *cpu = SPARC_CPU(cs);
     sparc_def_t *cpu_def = cpu->env.def;
@@ -796,7 +796,7 @@ static bool sparc_cpu_has_work(CPUState *cs)
            cpu_interrupts_enabled(env);
 }
 
-static void sparc_cpu_realizefn(DeviceState *dev, Error **errp)
+static void sparc_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     SPARCCPUClass *scc = SPARC_CPU_GET_CLASS(dev);
diff --git a/target/tilegx/cpu.c b/target/tilegx/cpu.c
index f8448c4c9e..c65e13f7f5 100644
--- a/target/tilegx/cpu.c
+++ b/target/tilegx/cpu.c
@@ -86,7 +86,7 @@ static void tilegx_cpu_reset(CPUState *s)
     memset(env, 0, offsetof(CPUTLGState, end_reset_fields));
 }
 
-static void tilegx_cpu_realizefn(DeviceState *dev, Error **errp)
+static void tilegx_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     TileGXCPUClass *tcc = TILEGX_CPU_GET_CLASS(dev);
diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c
index efeb6553d0..1f66439825 100644
--- a/target/tricore/cpu.c
+++ b/target/tricore/cpu.c
@@ -61,7 +61,7 @@ static bool tricore_cpu_has_work(CPUState *cs)
     return true;
 }
 
-static void tricore_cpu_realizefn(DeviceState *dev, Error **errp)
+static void tricore_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     TriCoreCPU *cpu = TRICORE_CPU(dev);
diff --git a/target/unicore32/cpu.c b/target/unicore32/cpu.c
index 3b14cfa37d..b52a9d513b 100644
--- a/target/unicore32/cpu.c
+++ b/target/unicore32/cpu.c
@@ -99,7 +99,7 @@ static const UniCore32CPUInfo uc32_cpus[] = {
     { .name = "any",        .instance_init = uc32_any_cpu_initfn },
 };
 
-static void uc32_cpu_realizefn(DeviceState *dev, Error **errp)
+static void uc32_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     UniCore32CPUClass *ucc = UNICORE32_CPU_GET_CLASS(dev);
diff --git a/target/xtensa/cpu.c b/target/xtensa/cpu.c
index 69bf002489..8045e9b33c 100644
--- a/target/xtensa/cpu.c
+++ b/target/xtensa/cpu.c
@@ -97,7 +97,7 @@ static ObjectClass *xtensa_cpu_class_by_name(const char 
*cpu_model)
     return oc;
 }
 
-static void xtensa_cpu_realizefn(DeviceState *dev, Error **errp)
+static void xtensa_cpu_realizefn(DeviceState *dev, Error *errp[static 1])
 {
     CPUState *cs = CPU(dev);
     XtensaCPUClass *xcc = XTENSA_CPU_GET_CLASS(dev);
diff --git a/tests/check-qom-proplist.c b/tests/check-qom-proplist.c
index 6145fcbab6..33cb4cc693 100644
--- a/tests/check-qom-proplist.c
+++ b/tests/check-qom-proplist.c
@@ -68,7 +68,7 @@ struct DummyObjectClass {
 
 static void dummy_set_bv(Object *obj,
                          bool value,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     DummyObject *dobj = DUMMY_OBJECT(obj);
 
@@ -76,7 +76,7 @@ static void dummy_set_bv(Object *obj,
 }
 
 static bool dummy_get_bv(Object *obj,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     DummyObject *dobj = DUMMY_OBJECT(obj);
 
@@ -86,7 +86,7 @@ static bool dummy_get_bv(Object *obj,
 
 static void dummy_set_av(Object *obj,
                          int value,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     DummyObject *dobj = DUMMY_OBJECT(obj);
 
@@ -94,7 +94,7 @@ static void dummy_set_av(Object *obj,
 }
 
 static int dummy_get_av(Object *obj,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     DummyObject *dobj = DUMMY_OBJECT(obj);
 
@@ -104,7 +104,7 @@ static int dummy_get_av(Object *obj,
 
 static void dummy_set_sv(Object *obj,
                          const char *value,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     DummyObject *dobj = DUMMY_OBJECT(obj);
 
@@ -113,7 +113,7 @@ static void dummy_set_sv(Object *obj,
 }
 
 static char *dummy_get_sv(Object *obj,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     DummyObject *dobj = DUMMY_OBJECT(obj);
 
diff --git a/tests/test-crypto-block.c b/tests/test-crypto-block.c
index 95c4bd5da3..e4e2d0b837 100644
--- a/tests/test-crypto-block.c
+++ b/tests/test-crypto-block.c
@@ -191,7 +191,7 @@ static ssize_t test_block_read_func(QCryptoBlock *block,
                                     uint8_t *buf,
                                     size_t buflen,
                                     void *opaque,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     Buffer *header = opaque;
 
@@ -206,7 +206,7 @@ static ssize_t test_block_read_func(QCryptoBlock *block,
 static ssize_t test_block_init_func(QCryptoBlock *block,
                                     size_t headerlen,
                                     void *opaque,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     Buffer *header = opaque;
 
@@ -223,7 +223,7 @@ static ssize_t test_block_write_func(QCryptoBlock *block,
                                      const uint8_t *buf,
                                      size_t buflen,
                                      void *opaque,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     Buffer *header = opaque;
 
diff --git a/tests/test-crypto-tlscredsx509.c b/tests/test-crypto-tlscredsx509.c
index a14b4b1cad..71103db19c 100644
--- a/tests/test-crypto-tlscredsx509.c
+++ b/tests/test-crypto-tlscredsx509.c
@@ -39,7 +39,7 @@ struct QCryptoTLSCredsTestData {
 
 static QCryptoTLSCreds *test_tls_creds_create(QCryptoTLSCredsEndpoint endpoint,
                                               const char *certdir,
-                                              Error **errp)
+                                              Error *errp[static 1])
 {
     Object *parent = object_get_objects_root();
     Object *creds = object_new_with_props(
diff --git a/tests/test-crypto-tlssession.c b/tests/test-crypto-tlssession.c
index 1a4a066d76..6f9be98eb0 100644
--- a/tests/test-crypto-tlssession.c
+++ b/tests/test-crypto-tlssession.c
@@ -61,7 +61,7 @@ static ssize_t testRead(char *buf, size_t len, void *opaque)
 
 static QCryptoTLSCreds *test_tls_creds_create(QCryptoTLSCredsEndpoint endpoint,
                                               const char *certdir,
-                                              Error **errp)
+                                              Error *errp[static 1])
 {
     Error *err = NULL;
     Object *parent = object_get_objects_root();
diff --git a/tests/test-io-channel-tls.c b/tests/test-io-channel-tls.c
index 6509ab1045..b298674d28 100644
--- a/tests/test-io-channel-tls.c
+++ b/tests/test-io-channel-tls.c
@@ -66,7 +66,7 @@ static void test_tls_handshake_done(QIOTask *task,
 
 static QCryptoTLSCreds *test_tls_creds_create(QCryptoTLSCredsEndpoint endpoint,
                                               const char *certdir,
-                                              Error **errp)
+                                              Error *errp[static 1])
 {
     Object *parent = object_get_objects_root();
     Object *creds = object_new_with_props(
diff --git a/tests/test-logging.c b/tests/test-logging.c
index a12585f70a..2f85342208 100644
--- a/tests/test-logging.c
+++ b/tests/test-logging.c
@@ -87,7 +87,8 @@ static void test_parse_range(void)
     error_free_or_abort(&err);
 }
 
-static void set_log_path_tmp(char const *dir, char const *tpl, Error **errp)
+static void set_log_path_tmp(char const *dir, char const *tpl,
+                             Error *errp[static 1])
 {
     gchar *file_path = g_build_filename(dir, tpl, NULL);
 
diff --git a/tests/test-qapi-util.c b/tests/test-qapi-util.c
index 0305b9201b..d377e23bc2 100644
--- a/tests/test-qapi-util.c
+++ b/tests/test-qapi-util.c
@@ -75,12 +75,12 @@ static void test_parse_qapi_name(void)
     g_assert(ret == -1);
 }
 
-static void successfn(Error **errp)
+static void successfn(Error *errp[static 1])
 {
     g_assert(!ERR_IS_SET(errp));
 }
 
-static void fail1(Error **errp)
+static void fail1(Error *errp[static 1])
 {
     g_assert(!ERR_IS_SET(errp));
 
@@ -89,7 +89,7 @@ static void fail1(Error **errp)
     g_assert(ERR_IS_SET(errp));
 }
 
-static void fail2(Error **errp)
+static void fail2(Error *errp[static 1])
 {
     g_assert(!ERR_IS_SET(errp));
 
@@ -98,7 +98,7 @@ static void fail2(Error **errp)
     g_assert(ERR_IS_SET(errp));
 }
 
-static void multifn(Error **errp)
+static void multifn(Error *errp[static 1])
 {
     Error *err1 = NULL, *err2 = NULL;
     successfn(&err1);
@@ -119,7 +119,7 @@ static void multifn(Error **errp)
     error_propagate(errp, err1);
 }
 
-static void test_propagate(void (*fn)(Error **), Error **errp)
+static void test_propagate(void (*fn)(Error **), Error *errp[static 1])
 {
     bool failed;
     Error *local_err = NULL;
diff --git a/tests/test-qdev-global-props.c b/tests/test-qdev-global-props.c
index 91ea932869..802c5cfb6a 100644
--- a/tests/test-qdev-global-props.c
+++ b/tests/test-qdev-global-props.c
@@ -117,7 +117,7 @@ static void test_static_globalprop(void)
 #define TYPE_UNUSED_NOHOTPLUG "nohotplug-type"
 
 static void prop1_accessor(Object *obj, Visitor *v, const char *name,
-                           void *opaque, Error **errp)
+                           void *opaque, Error *errp[static 1])
 {
     MyType *mt = DYNAMIC_TYPE(obj);
 
@@ -125,7 +125,7 @@ static void prop1_accessor(Object *obj, Visitor *v, const 
char *name,
 }
 
 static void prop2_accessor(Object *obj, Visitor *v, const char *name,
-                           void *opaque, Error **errp)
+                           void *opaque, Error *errp[static 1])
 {
     MyType *mt = DYNAMIC_TYPE(obj);
 
diff --git a/tests/test-qemu-opts.c b/tests/test-qemu-opts.c
index 5a596a6e7b..a3119078c4 100644
--- a/tests/test-qemu-opts.c
+++ b/tests/test-qemu-opts.c
@@ -435,7 +435,7 @@ static void test_qemu_opts_set(void)
 }
 
 static int opts_count_iter(void *opaque, const char *name, const char *value,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     (*(size_t *)opaque)++;
     return 0;
diff --git a/tests/test-qmp-commands.c b/tests/test-qmp-commands.c
index acdded4d67..78caddfe4c 100644
--- a/tests/test-qmp-commands.c
+++ b/tests/test-qmp-commands.c
@@ -10,22 +10,22 @@
 
 static QmpCommandList qmp_commands;
 
-void qmp_user_def_cmd(Error **errp)
+void qmp_user_def_cmd(Error *errp[static 1])
 {
 }
 
-Empty2 *qmp_user_def_cmd0(Error **errp)
+Empty2 *qmp_user_def_cmd0(Error *errp[static 1])
 {
     return g_new0(Empty2, 1);
 }
 
-void qmp_user_def_cmd1(UserDefOne * ud1, Error **errp)
+void qmp_user_def_cmd1(UserDefOne * ud1, Error *errp[static 1])
 {
 }
 
 UserDefTwo *qmp_user_def_cmd2(UserDefOne *ud1a,
                               bool has_udb1, UserDefOne *ud1b,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     UserDefTwo *ret;
     UserDefOne *ud1c = g_malloc0(sizeof(UserDefOne));
@@ -51,7 +51,8 @@ UserDefTwo *qmp_user_def_cmd2(UserDefOne *ud1a,
     return ret;
 }
 
-int64_t qmp_guest_get_time(int64_t a, bool has_b, int64_t b, Error **errp)
+int64_t qmp_guest_get_time(int64_t a, bool has_b, int64_t b,
+                           Error *errp[static 1])
 {
     return a + (has_b ? b : 0);
 }
@@ -61,11 +62,11 @@ QObject *qmp_guest_sync(QObject *arg, Error **errp)
     return arg;
 }
 
-void qmp_boxed_struct(UserDefZero *arg, Error **errp)
+void qmp_boxed_struct(UserDefZero *arg, Error *errp[static 1])
 {
 }
 
-void qmp_boxed_union(UserDefNativeListUnion *arg, Error **errp)
+void qmp_boxed_union(UserDefNativeListUnion *arg, Error *errp[static 1])
 {
 }
 
@@ -73,7 +74,7 @@ __org_qemu_x_Union1 
*qmp___org_qemu_x_command(__org_qemu_x_EnumList *a,
                                               __org_qemu_x_StructList *b,
                                               __org_qemu_x_Union2 *c,
                                               __org_qemu_x_Alt *d,
-                                              Error **errp)
+                                              Error *errp[static 1])
 {
     __org_qemu_x_Union1 *ret = g_new0(__org_qemu_x_Union1, 1);
 
diff --git a/tests/test-qmp-event.c b/tests/test-qmp-event.c
index 4c0f09601d..e4fa2c5e3f 100644
--- a/tests/test-qmp-event.c
+++ b/tests/test-qmp-event.c
@@ -93,7 +93,8 @@ static bool qdict_cmp_simple(QDict *a, QDict *b)
 
 /* This function is hooked as final emit function, which can verify the
    correctness. */
-static void event_test_emit(test_QAPIEvent event, QDict *d, Error **errp)
+static void event_test_emit(test_QAPIEvent event, QDict *d,
+                            Error *errp[static 1])
 {
     QDict *t;
     int64_t s, ms;
diff --git a/tests/test-visitor-serialization.c 
b/tests/test-visitor-serialization.c
index 4d47ceec7a..9399ea5dcf 100644
--- a/tests/test-visitor-serialization.c
+++ b/tests/test-visitor-serialization.c
@@ -87,7 +87,8 @@ typedef struct PrimitiveList {
 
 typedef void (*VisitorFunc)(Visitor *v, void **native, Error **errp);
 
-static void dealloc_helper(void *native_in, VisitorFunc visit, Error **errp)
+static void dealloc_helper(void *native_in, VisitorFunc visit,
+                           Error *errp[static 1])
 {
     Visitor *v = qapi_dealloc_visitor_new();
 
@@ -96,7 +97,8 @@ static void dealloc_helper(void *native_in, VisitorFunc 
visit, Error **errp)
     visit_free(v);
 }
 
-static void visit_primitive_type(Visitor *v, void **native, Error **errp)
+static void visit_primitive_type(Visitor *v, void **native,
+                                 Error *errp[static 1])
 {
     PrimitiveType *pt = *native;
     switch(pt->type) {
@@ -141,7 +143,8 @@ static void visit_primitive_type(Visitor *v, void **native, 
Error **errp)
     }
 }
 
-static void visit_primitive_list(Visitor *v, void **native, Error **errp)
+static void visit_primitive_list(Visitor *v, void **native,
+                                 Error *errp[static 1])
 {
     PrimitiveList *pl = *native;
     switch (pl->type) {
@@ -211,7 +214,7 @@ static void struct_cleanup(TestStruct *ts)
     g_free(ts);
 }
 
-static void visit_struct(Visitor *v, void **native, Error **errp)
+static void visit_struct(Visitor *v, void **native, Error *errp[static 1])
 {
     visit_type_TestStruct(v, NULL, (TestStruct **)native, errp);
 }
@@ -262,12 +265,14 @@ static void nested_struct_cleanup(UserDefTwo *udnp)
     qapi_free_UserDefTwo(udnp);
 }
 
-static void visit_nested_struct(Visitor *v, void **native, Error **errp)
+static void visit_nested_struct(Visitor *v, void **native,
+                                Error *errp[static 1])
 {
     visit_type_UserDefTwo(v, NULL, (UserDefTwo **)native, errp);
 }
 
-static void visit_nested_struct_list(Visitor *v, void **native, Error **errp)
+static void visit_nested_struct_list(Visitor *v, void **native,
+                                     Error *errp[static 1])
 {
     visit_type_UserDefTwoList(v, NULL, (UserDefTwoList **)native, errp);
 }
@@ -1018,7 +1023,7 @@ typedef struct QmpSerializeData {
 } QmpSerializeData;
 
 static void qmp_serialize(void *native_in, void **datap,
-                          VisitorFunc visit, Error **errp)
+                          VisitorFunc visit, Error *errp[static 1])
 {
     QmpSerializeData *d = g_malloc0(sizeof(*d));
 
@@ -1028,7 +1033,7 @@ static void qmp_serialize(void *native_in, void **datap,
 }
 
 static void qmp_deserialize(void **native_out, void *datap,
-                            VisitorFunc visit, Error **errp)
+                            VisitorFunc visit, Error *errp[static 1])
 {
     QmpSerializeData *d = datap;
     QString *output_json;
@@ -1062,7 +1067,7 @@ typedef struct StringSerializeData {
 } StringSerializeData;
 
 static void string_serialize(void *native_in, void **datap,
-                             VisitorFunc visit, Error **errp)
+                             VisitorFunc visit, Error *errp[static 1])
 {
     StringSerializeData *d = g_malloc0(sizeof(*d));
 
@@ -1072,7 +1077,7 @@ static void string_serialize(void *native_in, void 
**datap,
 }
 
 static void string_deserialize(void **native_out, void *datap,
-                               VisitorFunc visit, Error **errp)
+                               VisitorFunc visit, Error *errp[static 1])
 {
     StringSerializeData *d = datap;
 
diff --git a/tpm.c b/tpm.c
index d89b1e6cd6..0f028c5a78 100644
--- a/tpm.c
+++ b/tpm.c
@@ -182,7 +182,7 @@ static int configure_tpm(QemuOpts *opts)
     return 0;
 }
 
-static int tpm_init_tpmdev(void *dummy, QemuOpts *opts, Error **errp)
+static int tpm_init_tpmdev(void *dummy, QemuOpts *opts, Error *errp[static 1])
 {
     return configure_tpm(opts);
 }
@@ -283,7 +283,7 @@ static TPMInfo *qmp_query_tpm_inst(TPMBackend *drv)
  * Walk the list of active TPM backends and collect information about them
  * following the schema description in qapi-schema.json.
  */
-TPMInfoList *qmp_query_tpm(Error **errp)
+TPMInfoList *qmp_query_tpm(Error *errp[static 1])
 {
     TPMBackend *drv;
     TPMInfoList *info, *head = NULL, *cur_item = NULL;
@@ -306,7 +306,7 @@ TPMInfoList *qmp_query_tpm(Error **errp)
     return head;
 }
 
-TpmTypeList *qmp_query_tpm_types(Error **errp)
+TpmTypeList *qmp_query_tpm_types(Error *errp[static 1])
 {
     unsigned int i = 0;
     TpmTypeList *head = NULL, *prev = NULL, *cur_item;
@@ -330,7 +330,7 @@ TpmTypeList *qmp_query_tpm_types(Error **errp)
     return head;
 }
 
-TpmModelList *qmp_query_tpm_models(Error **errp)
+TpmModelList *qmp_query_tpm_models(Error *errp[static 1])
 {
     unsigned int i = 0;
     TpmModelList *head = NULL, *prev = NULL, *cur_item;
diff --git a/trace/qmp.c b/trace/qmp.c
index ac777d154f..528f02b785 100644
--- a/trace/qmp.c
+++ b/trace/qmp.c
@@ -12,7 +12,7 @@
 #include "trace/control.h"
 
 
-static CPUState *get_cpu(bool has_vcpu, int vcpu, Error **errp)
+static CPUState *get_cpu(bool has_vcpu, int vcpu, Error *errp[static 1])
 {
     if (has_vcpu) {
         CPUState *cpu = qemu_get_cpu(vcpu);
@@ -26,7 +26,7 @@ static CPUState *get_cpu(bool has_vcpu, int vcpu, Error 
**errp)
 }
 
 static bool check_events(bool has_vcpu, bool ignore_unavailable, bool 
is_pattern,
-                         const char *name, Error **errp)
+                         const char *name, Error *errp[static 1])
 {
     if (!is_pattern) {
         TraceEvent *ev = trace_event_name(name);
@@ -67,7 +67,7 @@ static bool check_events(bool has_vcpu, bool 
ignore_unavailable, bool is_pattern
 
 TraceEventInfoList *qmp_trace_event_get_state(const char *name,
                                               bool has_vcpu, int64_t vcpu,
-                                              Error **errp)
+                                              Error *errp[static 1])
 {
     Error *err = NULL;
     TraceEventInfoList *events = NULL;
@@ -132,7 +132,7 @@ TraceEventInfoList *qmp_trace_event_get_state(const char 
*name,
 void qmp_trace_event_set_state(const char *name, bool enable,
                                bool has_ignore_unavailable, bool 
ignore_unavailable,
                                bool has_vcpu, int64_t vcpu,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     Error *err = NULL;
     TraceEventIter iter;
diff --git a/ui/console.c b/ui/console.c
index d914cced53..e6a09e446f 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -295,7 +295,7 @@ void graphic_hw_invalidate(QemuConsole *con)
 }
 
 static void ppm_save(const char *filename, DisplaySurface *ds,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     int width = pixman_image_get_width(ds->image);
     int height = pixman_image_get_height(ds->image);
@@ -342,7 +342,7 @@ write_err:
     goto out;
 }
 
-void qmp_screendump(const char *filename, Error **errp)
+void qmp_screendump(const char *filename, Error *errp[static 1])
 {
     QemuConsole *con = qemu_console_lookup_by_index(0);
     DisplaySurface *surface;
@@ -1883,7 +1883,8 @@ QemuConsole *qemu_console_lookup_by_device(DeviceState 
*dev, uint32_t head)
 }
 
 QemuConsole *qemu_console_lookup_by_device_name(const char *device_id,
-                                                uint32_t head, Error **errp)
+                                                uint32_t head,
+                                                Error *errp[static 1])
 {
     DeviceState *dev;
     QemuConsole *con;
@@ -2082,7 +2083,7 @@ static void text_console_do_init(Chardev *chr, 
DisplayState *ds)
 static void vc_chr_open(Chardev *chr,
                         ChardevBackend *backend,
                         bool *be_opened,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     ChardevVC *vc = backend->u.vc.data;
     VCChardev *drv = VC_CHARDEV(chr);
@@ -2156,7 +2157,8 @@ PixelFormat qemu_default_pixelformat(int bpp)
     return pf;
 }
 
-void qemu_chr_parse_vc(QemuOpts *opts, ChardevBackend *backend, Error **errp)
+void qemu_chr_parse_vc(QemuOpts *opts, ChardevBackend *backend,
+                       Error *errp[static 1])
 {
     int val;
     ChardevVC *vc;
diff --git a/ui/gtk.c b/ui/gtk.c
index 49921fa5a5..9242382591 100644
--- a/ui/gtk.c
+++ b/ui/gtk.c
@@ -1744,7 +1744,7 @@ static Chardev *vcs[MAX_VCS];
 static void gd_vc_open(Chardev *chr,
                        ChardevBackend *backend,
                        bool *be_opened,
-                       Error **errp)
+                       Error *errp[static 1])
 {
     if (nb_vcs == MAX_VCS) {
         error_setg(errp, "Maximum number of consoles reached");
diff --git a/ui/input-legacy.c b/ui/input-legacy.c
index 7159747404..720a184ccb 100644
--- a/ui/input-legacy.c
+++ b/ui/input-legacy.c
@@ -80,7 +80,7 @@ static KeyValue *copy_key_value(KeyValue *src)
 }
 
 void qmp_send_key(KeyValueList *keys, bool has_hold_time, int64_t hold_time,
-                  Error **errp)
+                  Error *errp[static 1])
 {
     KeyValueList *p;
     KeyValue **up = NULL;
diff --git a/ui/input-linux.c b/ui/input-linux.c
index 6783ac1e5d..cb881b8a30 100644
--- a/ui/input-linux.c
+++ b/ui/input-linux.c
@@ -373,7 +373,7 @@ static void input_linux_event(void *opaque)
     }
 }
 
-static void input_linux_complete(UserCreatable *uc, Error **errp)
+static void input_linux_complete(UserCreatable *uc, Error *errp[static 1])
 {
     InputLinux *il = INPUT_LINUX(uc);
     uint8_t evtmap, relmap, absmap;
@@ -474,7 +474,7 @@ static void input_linux_instance_finalize(Object *obj)
     g_free(il->evdev);
 }
 
-static char *input_linux_get_evdev(Object *obj, Error **errp)
+static char *input_linux_get_evdev(Object *obj, Error *errp[static 1])
 {
     InputLinux *il = INPUT_LINUX(obj);
 
@@ -482,7 +482,7 @@ static char *input_linux_get_evdev(Object *obj, Error 
**errp)
 }
 
 static void input_linux_set_evdev(Object *obj, const char *value,
-                                  Error **errp)
+                                  Error *errp[static 1])
 {
     InputLinux *il = INPUT_LINUX(obj);
 
@@ -493,7 +493,7 @@ static void input_linux_set_evdev(Object *obj, const char 
*value,
     il->evdev = g_strdup(value);
 }
 
-static bool input_linux_get_grab_all(Object *obj, Error **errp)
+static bool input_linux_get_grab_all(Object *obj, Error *errp[static 1])
 {
     InputLinux *il = INPUT_LINUX(obj);
 
@@ -501,14 +501,14 @@ static bool input_linux_get_grab_all(Object *obj, Error 
**errp)
 }
 
 static void input_linux_set_grab_all(Object *obj, bool value,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     InputLinux *il = INPUT_LINUX(obj);
 
     il->grab_all = value;
 }
 
-static bool input_linux_get_repeat(Object *obj, Error **errp)
+static bool input_linux_get_repeat(Object *obj, Error *errp[static 1])
 {
     InputLinux *il = INPUT_LINUX(obj);
 
@@ -516,7 +516,7 @@ static bool input_linux_get_repeat(Object *obj, Error 
**errp)
 }
 
 static void input_linux_set_repeat(Object *obj, bool value,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     InputLinux *il = INPUT_LINUX(obj);
 
diff --git a/ui/input.c b/ui/input.c
index 290ca9f54d..4ae91052c3 100644
--- a/ui/input.c
+++ b/ui/input.c
@@ -82,7 +82,7 @@ void qemu_input_handler_unregister(QemuInputHandlerState *s)
 
 void qemu_input_handler_bind(QemuInputHandlerState *s,
                              const char *device_id, int head,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     QemuConsole *con;
     Error *err = NULL;
@@ -123,7 +123,7 @@ qemu_input_find_handler(uint32_t mask, QemuConsole *con)
 
 void qmp_input_send_event(bool has_device, const char *device,
                           bool has_head, int64_t head,
-                          InputEventList *events, Error **errp)
+                          InputEventList *events, Error *errp[static 1])
 {
     InputEventList *e;
     QemuConsole *con;
@@ -543,7 +543,7 @@ void qemu_remove_mouse_mode_change_notifier(Notifier 
*notify)
     notifier_remove(notify);
 }
 
-MouseInfoList *qmp_query_mice(Error **errp)
+MouseInfoList *qmp_query_mice(Error *errp[static 1])
 {
     MouseInfoList *mice_list = NULL;
     MouseInfoList *info;
diff --git a/ui/spice-core.c b/ui/spice-core.c
index 88d6d16faf..f22f71da1f 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -517,7 +517,7 @@ static QemuOptsList qemu_spice_opts = {
     },
 };
 
-SpiceInfo *qmp_query_spice(Error **errp)
+SpiceInfo *qmp_query_spice(Error *errp[static 1])
 {
     QemuOpts *opts = QTAILQ_FIRST(&qemu_spice_opts.head);
     int port, tls_port;
@@ -605,7 +605,7 @@ int qemu_spice_migrate_info(const char *hostname, int port, 
int tls_port,
 }
 
 static int add_channel(void *opaque, const char *name, const char *value,
-                       Error **errp)
+                       Error *errp[static 1])
 {
     int security = 0;
     int rc;
diff --git a/ui/vnc-auth-sasl.c b/ui/vnc-auth-sasl.c
index 4b6f0e5d5a..4e70fe15d4 100644
--- a/ui/vnc-auth-sasl.c
+++ b/ui/vnc-auth-sasl.c
@@ -496,7 +496,7 @@ static int protocol_client_auth_sasl_mechname_len(VncState 
*vs, uint8_t *data, s
 static char *
 vnc_socket_ip_addr_string(QIOChannelSocket *ioc,
                           bool local,
-                          Error **errp)
+                          Error *errp[static 1])
 {
     SocketAddress *addr;
     char *ret;
diff --git a/ui/vnc.c b/ui/vnc.c
index 7acd3fe225..b4dcea747a 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -110,7 +110,7 @@ static void vnc_set_share_mode(VncState *vs, VncShareMode 
mode)
 
 static void vnc_init_basic_info(SocketAddress *addr,
                                 VncBasicInfo *info,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     switch (addr->type) {
     case SOCKET_ADDRESS_TYPE_INET:
@@ -143,7 +143,7 @@ static void vnc_init_basic_info(SocketAddress *addr,
 
 static void vnc_init_basic_info_from_server_addr(QIOChannelSocket *ioc,
                                                  VncBasicInfo *info,
-                                                 Error **errp)
+                                                 Error *errp[static 1])
 {
     SocketAddress *addr = NULL;
 
@@ -163,7 +163,7 @@ static void 
vnc_init_basic_info_from_server_addr(QIOChannelSocket *ioc,
 
 static void vnc_init_basic_info_from_remote_addr(QIOChannelSocket *ioc,
                                                  VncBasicInfo *info,
-                                                 Error **errp)
+                                                 Error *errp[static 1])
 {
     SocketAddress *addr = NULL;
 
@@ -373,7 +373,7 @@ static VncClientInfoList *qmp_query_client_list(VncDisplay 
*vd)
     return prev;
 }
 
-VncInfo *qmp_query_vnc(Error **errp)
+VncInfo *qmp_query_vnc(Error *errp[static 1])
 {
     VncInfo *info = g_malloc0(sizeof(*info));
     VncDisplay *vd = vnc_display_find(NULL);
@@ -552,7 +552,7 @@ static void qmp_query_auth(int auth, int subauth,
     }
 }
 
-VncInfo2List *qmp_query_vnc_servers(Error **errp)
+VncInfo2List *qmp_query_vnc_servers(Error *errp[static 1])
 {
     VncInfo2List *item, *prev = NULL;
     VncInfo2 *info;
@@ -3261,7 +3261,7 @@ vnc_display_setup_auth(int *auth,
                        bool password,
                        bool sasl,
                        bool websocket,
-                       Error **errp)
+                       Error *errp[static 1])
 {
     /*
      * We have a choice of 3 authentication options
@@ -3375,7 +3375,7 @@ vnc_display_create_creds(bool x509,
                          bool x509verify,
                          const char *dir,
                          const char *id,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     gchar *credsid = g_strdup_printf("tlsvnc%s", id);
     Object *parent = object_get_objects_root();
@@ -3421,7 +3421,7 @@ static int vnc_display_get_address(const char *addrstr,
                                    bool ipv4,
                                    bool ipv6,
                                    SocketAddress **retaddr,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     int ret = -1;
     SocketAddress *addr = NULL;
@@ -3534,7 +3534,7 @@ static int vnc_display_get_addresses(QemuOpts *opts,
                                      size_t *retnsaddr,
                                      SocketAddress ***retwsaddr,
                                      size_t *retnwsaddr,
-                                     Error **errp)
+                                     Error *errp[static 1])
 {
     SocketAddress *saddr = NULL;
     SocketAddress *wsaddr = NULL;
@@ -3640,7 +3640,7 @@ static int vnc_display_connect(VncDisplay *vd,
                                size_t nsaddr,
                                SocketAddress **wsaddr,
                                size_t nwsaddr,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     /* connect to viewer */
     QIOChannelSocket *sioc = NULL;
@@ -3671,7 +3671,7 @@ static int vnc_display_listen_addr(VncDisplay *vd,
                                    QIOChannelSocket ***lsock,
                                    guint **lsock_tag,
                                    size_t *nlsock,
-                                   Error **errp)
+                                   Error *errp[static 1])
 {
     QIODNSResolver *resolver = qio_dns_resolver_get_instance();
     SocketAddress **rawaddrs = NULL;
@@ -3732,7 +3732,7 @@ static int vnc_display_listen(VncDisplay *vd,
                               size_t nsaddr,
                               SocketAddress **wsaddr,
                               size_t nwsaddr,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     size_t i;
 
@@ -3761,7 +3761,7 @@ static int vnc_display_listen(VncDisplay *vd,
 }
 
 
-void vnc_display_open(const char *id, Error **errp)
+void vnc_display_open(const char *id, Error *errp[static 1])
 {
     VncDisplay *vd = vnc_display_find(id);
     QemuOpts *opts = qemu_opts_find(&qemu_vnc_opts, id);
@@ -4043,7 +4043,7 @@ static void vnc_auto_assign_id(QemuOptsList *olist, 
QemuOpts *opts)
     qemu_opts_set_id(opts, id);
 }
 
-QemuOpts *vnc_parse(const char *str, Error **errp)
+QemuOpts *vnc_parse(const char *str, Error *errp[static 1])
 {
     QemuOptsList *olist = qemu_find_opts("vnc");
     QemuOpts *opts = qemu_opts_parse(olist, str, true, errp);
@@ -4061,7 +4061,7 @@ QemuOpts *vnc_parse(const char *str, Error **errp)
     return opts;
 }
 
-int vnc_init_func(void *opaque, QemuOpts *opts, Error **errp)
+int vnc_init_func(void *opaque, QemuOpts *opts, Error *errp[static 1])
 {
     Error *local_err = NULL;
     char *id = (char *)qemu_opts_id(opts);
diff --git a/util/aio-posix.c b/util/aio-posix.c
index 2d51239ec6..2286ae64cf 100644
--- a/util/aio-posix.c
+++ b/util/aio-posix.c
@@ -714,7 +714,8 @@ void aio_context_setup(AioContext *ctx)
 }
 
 void aio_context_set_poll_params(AioContext *ctx, int64_t max_ns,
-                                 int64_t grow, int64_t shrink, Error **errp)
+                                 int64_t grow, int64_t shrink,
+                                 Error *errp[static 1])
 {
     /* No thread synchronization here, it doesn't matter if an incorrect value
      * is used once.
diff --git a/util/aio-win32.c b/util/aio-win32.c
index bca496a47a..d29162d459 100644
--- a/util/aio-win32.c
+++ b/util/aio-win32.c
@@ -401,7 +401,8 @@ void aio_context_setup(AioContext *ctx)
 }
 
 void aio_context_set_poll_params(AioContext *ctx, int64_t max_ns,
-                                 int64_t grow, int64_t shrink, Error **errp)
+                                 int64_t grow, int64_t shrink,
+                                 Error *errp[static 1])
 {
     error_setg(errp, "AioContext polling is not implemented on Windows");
 }
diff --git a/util/async.c b/util/async.c
index 355af73ee7..900655f4f9 100644
--- a/util/async.c
+++ b/util/async.c
@@ -393,7 +393,7 @@ static void co_schedule_bh_cb(void *opaque)
     }
 }
 
-AioContext *aio_context_new(Error **errp)
+AioContext *aio_context_new(Error *errp[static 1])
 {
     int ret;
     AioContext *ctx;
diff --git a/util/base64.c b/util/base64.c
index 9d3c46cbcc..e998eb4f50 100644
--- a/util/base64.c
+++ b/util/base64.c
@@ -28,7 +28,7 @@ static const char *base64_valid_chars =
 uint8_t *qbase64_decode(const char *input,
                         size_t in_len,
                         size_t *out_len,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     *out_len = 0;
 
diff --git a/util/error.c b/util/error.c
index 2e16ad371c..8d765204e1 100644
--- a/util/error.c
+++ b/util/error.c
@@ -262,7 +262,7 @@ void error_free(Error *err)
     }
 }
 
-void error_free_or_abort(Error **errp)
+void error_free_or_abort(Error *errp[static 1])
 {
     assert(!ERR_IS_IGNORED(errp) && ERR_IS_SET(errp));
     error_free(*errp);
diff --git a/util/keyval.c b/util/keyval.c
index 7dbda62305..2c5d9d0aa5 100644
--- a/util/keyval.c
+++ b/util/keyval.c
@@ -133,7 +133,7 @@ static int key_to_index(const char *key, const char **end)
 static QObject *keyval_parse_put(QDict *cur,
                                  const char *key_in_cur, QString *value,
                                  const char *key, const char *key_cursor,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     QObject *old, *new;
 
@@ -166,7 +166,7 @@ static QObject *keyval_parse_put(QDict *cur,
  */
 static const char *keyval_parse_one(QDict *qdict, const char *params,
                                     const char *implied_key,
-                                    Error **errp)
+                                    Error *errp[static 1])
 {
     const char *key, *key_end, *s, *end;
     size_t len;
@@ -285,7 +285,8 @@ static char *reassemble_key(GSList *key)
  * On success, return either @cur or its replacement.
  * On failure, store an error through @errp and return NULL.
  */
-static QObject *keyval_listify(QDict *cur, GSList *key_of_cur, Error **errp)
+static QObject *keyval_listify(QDict *cur, GSList *key_of_cur,
+                               Error *errp[static 1])
 {
     GSList key_node;
     bool has_index, has_member;
@@ -393,7 +394,7 @@ static QObject *keyval_listify(QDict *cur, GSList 
*key_of_cur, Error **errp)
  * On failure, store an error through @errp and return NULL.
  */
 QDict *keyval_parse(const char *params, const char *implied_key,
-                    Error **errp)
+                    Error *errp[static 1])
 {
     QDict *qdict = qdict_new();
     QObject *listified;
diff --git a/util/log.c b/util/log.c
index 96f30dd21a..7244acbc6b 100644
--- a/util/log.c
+++ b/util/log.c
@@ -110,7 +110,7 @@ void qemu_log_needs_buffers(void)
  * substituted with the current PID. This is useful for debugging many
  * nested linux-user tasks but will result in lots of logs.
  */
-void qemu_set_log_filename(const char *filename, Error **errp)
+void qemu_set_log_filename(const char *filename, Error *errp[static 1])
 {
     char *pidstr;
     g_free(logfilename);
@@ -150,7 +150,7 @@ bool qemu_log_in_addr_range(uint64_t addr)
 }
 
 
-void qemu_set_dfilter_ranges(const char *filter_spec, Error **errp)
+void qemu_set_dfilter_ranges(const char *filter_spec, Error *errp[static 1])
 {
     gchar **ranges = g_strsplit(filter_spec, ",", 0);
     int i;
diff --git a/util/main-loop.c b/util/main-loop.c
index 19cad6b8b6..750000776d 100644
--- a/util/main-loop.c
+++ b/util/main-loop.c
@@ -138,7 +138,7 @@ void qemu_notify_event(void)
 
 static GArray *gpollfds;
 
-int qemu_init_main_loop(Error **errp)
+int qemu_init_main_loop(Error *errp[static 1])
 {
     int ret;
     GSource *src;
diff --git a/util/qemu-config.c b/util/qemu-config.c
index 48e5691f8d..4008d184ff 100644
--- a/util/qemu-config.c
+++ b/util/qemu-config.c
@@ -10,7 +10,7 @@ static QemuOptsList *vm_config_groups[48];
 static QemuOptsList *drive_config_groups[5];
 
 static QemuOptsList *find_list(QemuOptsList **lists, const char *group,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     int i;
 
@@ -241,7 +241,7 @@ static QemuOptsList machine_opts = {
 
 CommandLineOptionInfoList *qmp_query_command_line_options(bool has_option,
                                                           const char *option,
-                                                          Error **errp)
+                                                          Error *errp[static 
1])
 {
     CommandLineOptionInfoList *conf_list = NULL, *entry;
     CommandLineOptionInfo *info;
@@ -273,7 +273,7 @@ CommandLineOptionInfoList 
*qmp_query_command_line_options(bool has_option,
     return conf_list;
 }
 
-QemuOptsList *qemu_find_opts_err(const char *group, Error **errp)
+QemuOptsList *qemu_find_opts_err(const char *group, Error *errp[static 1])
 {
     return find_list(vm_config_groups, group, errp);
 }
@@ -350,7 +350,7 @@ struct ConfigWriteData {
 };
 
 static int config_write_opt(void *opaque, const char *name, const char *value,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     struct ConfigWriteData *data = opaque;
 
@@ -358,7 +358,8 @@ static int config_write_opt(void *opaque, const char *name, 
const char *value,
     return 0;
 }
 
-static int config_write_opts(void *opaque, QemuOpts *opts, Error **errp)
+static int config_write_opts(void *opaque, QemuOpts *opts,
+                             Error *errp[static 1])
 {
     struct ConfigWriteData *data = opaque;
     const char *id = qemu_opts_id(opts);
@@ -474,7 +475,7 @@ int qemu_read_config_file(const char *filename)
 }
 
 static void config_parse_qdict_section(QDict *options, QemuOptsList *opts,
-                                       Error **errp)
+                                       Error *errp[static 1])
 {
     QemuOpts *subopts;
     QDict *subqdict;
@@ -565,7 +566,7 @@ out:
 }
 
 void qemu_config_parse_qdict(QDict *options, QemuOptsList **lists,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     int i;
 
diff --git a/util/qemu-option.c b/util/qemu-option.c
index 4a4b145d42..5a5653acaa 100644
--- a/util/qemu-option.c
+++ b/util/qemu-option.c
@@ -126,7 +126,7 @@ int get_param_value(char *buf, int buf_size,
 }
 
 static void parse_option_bool(const char *name, const char *value, bool *ret,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     if (!strcmp(value, "on")) {
         *ret = 1;
@@ -139,7 +139,7 @@ static void parse_option_bool(const char *name, const char 
*value, bool *ret,
 }
 
 static void parse_option_number(const char *name, const char *value,
-                                uint64_t *ret, Error **errp)
+                                uint64_t *ret, Error *errp[static 1])
 {
     uint64_t number;
     int err;
@@ -172,7 +172,7 @@ static const QemuOptDesc *find_desc_by_name(const 
QemuOptDesc *desc,
 }
 
 void parse_option_size(const char *name, const char *value,
-                       uint64_t *ret, Error **errp)
+                       uint64_t *ret, Error *errp[static 1])
 {
     uint64_t size;
     int err;
@@ -479,7 +479,7 @@ uint64_t qemu_opt_get_size_del(QemuOpts *opts, const char 
*name,
     return qemu_opt_get_size_helper(opts, name, defval, true);
 }
 
-static void qemu_opt_parse(QemuOpt *opt, Error **errp)
+static void qemu_opt_parse(QemuOpt *opt, Error *errp[static 1])
 {
     if (opt->desc == NULL)
         return;
@@ -522,7 +522,7 @@ int qemu_opt_unset(QemuOpts *opts, const char *name)
 }
 
 static void opt_set(QemuOpts *opts, const char *name, const char *value,
-                    bool prepend, Error **errp)
+                    bool prepend, Error *errp[static 1])
 {
     QemuOpt *opt;
     const QemuOptDesc *desc;
@@ -551,13 +551,13 @@ static void opt_set(QemuOpts *opts, const char *name, 
const char *value,
 }
 
 void qemu_opt_set(QemuOpts *opts, const char *name, const char *value,
-                  Error **errp)
+                  Error *errp[static 1])
 {
     opt_set(opts, name, value, false, errp);
 }
 
 void qemu_opt_set_bool(QemuOpts *opts, const char *name, bool val,
-                       Error **errp)
+                       Error *errp[static 1])
 {
     QemuOpt *opt;
     const QemuOptDesc *desc = opts->list->desc;
@@ -578,7 +578,7 @@ void qemu_opt_set_bool(QemuOpts *opts, const char *name, 
bool val,
 }
 
 void qemu_opt_set_number(QemuOpts *opts, const char *name, int64_t val,
-                         Error **errp)
+                         Error *errp[static 1])
 {
     QemuOpt *opt;
     const QemuOptDesc *desc = opts->list->desc;
@@ -605,7 +605,7 @@ void qemu_opt_set_number(QemuOpts *opts, const char *name, 
int64_t val,
  * Return zero when the loop completes.
  */
 int qemu_opt_foreach(QemuOpts *opts, qemu_opt_loopfunc func, void *opaque,
-                     Error **errp)
+                     Error *errp[static 1])
 {
     QemuOpt *opt;
     int rc;
@@ -636,7 +636,7 @@ QemuOpts *qemu_opts_find(QemuOptsList *list, const char *id)
 }
 
 QemuOpts *qemu_opts_create(QemuOptsList *list, const char *id,
-                           int fail_if_exists, Error **errp)
+                           int fail_if_exists, Error *errp[static 1])
 {
     QemuOpts *opts = NULL;
 
@@ -687,7 +687,7 @@ void qemu_opts_loc_restore(QemuOpts *opts)
 }
 
 void qemu_opts_set(QemuOptsList *list, const char *id,
-                   const char *name, const char *value, Error **errp)
+                   const char *name, const char *value, Error *errp[static 1])
 {
     QemuOpts *opts;
     Error *local_err = NULL;
@@ -784,7 +784,8 @@ void qemu_opts_print(QemuOpts *opts, const char *separator)
 }
 
 static void opts_do_parse(QemuOpts *opts, const char *params,
-                          const char *firstname, bool prepend, Error **errp)
+                          const char *firstname, bool prepend,
+                          Error *errp[static 1])
 {
     char option[128], value[1024];
     const char *p,*pe,*pc;
@@ -837,13 +838,14 @@ static void opts_do_parse(QemuOpts *opts, const char 
*params,
  * On error, store an error object through @errp if non-null.
  */
 void qemu_opts_do_parse(QemuOpts *opts, const char *params,
-                       const char *firstname, Error **errp)
+                       const char *firstname, Error *errp[static 1])
 {
     opts_do_parse(opts, params, firstname, false, errp);
 }
 
 static QemuOpts *opts_parse(QemuOptsList *list, const char *params,
-                            bool permit_abbrev, bool defaults, Error **errp)
+                            bool permit_abbrev, bool defaults,
+                            Error *errp[static 1])
 {
     const char *firstname;
     char value[1024], *id = NULL;
@@ -894,7 +896,7 @@ static QemuOpts *opts_parse(QemuOptsList *list, const char 
*params,
  * Return the new QemuOpts on success, null pointer on error.
  */
 QemuOpts *qemu_opts_parse(QemuOptsList *list, const char *params,
-                          bool permit_abbrev, Error **errp)
+                          bool permit_abbrev, Error *errp[static 1])
 {
     return opts_parse(list, params, permit_abbrev, false, errp);
 }
@@ -980,7 +982,7 @@ static void qemu_opts_from_qdict_1(const char *key, QObject 
*obj, void *opaque)
  * other types are silently ignored.
  */
 QemuOpts *qemu_opts_from_qdict(QemuOptsList *list, const QDict *qdict,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     OptsFromQDictState state;
     Error *local_err = NULL;
@@ -1012,7 +1014,8 @@ QemuOpts *qemu_opts_from_qdict(QemuOptsList *list, const 
QDict *qdict,
  * from the QDict. When this function returns, the QDict contains only those
  * entries that couldn't be added to the QemuOpts.
  */
-void qemu_opts_absorb_qdict(QemuOpts *opts, QDict *qdict, Error **errp)
+void qemu_opts_absorb_qdict(QemuOpts *opts, QDict *qdict,
+                            Error *errp[static 1])
 {
     const QDictEntry *entry, *next;
 
@@ -1066,7 +1069,8 @@ QDict *qemu_opts_to_qdict(QemuOpts *opts, QDict *qdict)
 /* Validate parsed opts against descriptions where no
  * descriptions were provided in the QemuOptsList.
  */
-void qemu_opts_validate(QemuOpts *opts, const QemuOptDesc *desc, Error **errp)
+void qemu_opts_validate(QemuOpts *opts, const QemuOptDesc *desc,
+                        Error *errp[static 1])
 {
     QemuOpt *opt;
 
@@ -1094,7 +1098,7 @@ void qemu_opts_validate(QemuOpts *opts, const QemuOptDesc 
*desc, Error **errp)
  * Return zero when the loop completes.
  */
 int qemu_opts_foreach(QemuOptsList *list, qemu_opts_loopfunc func,
-                      void *opaque, Error **errp)
+                      void *opaque, Error *errp[static 1])
 {
     Location loc;
     QemuOpts *opts;
diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
index d2ea5377dc..a47f771865 100644
--- a/util/qemu-sockets.c
+++ b/util/qemu-sockets.c
@@ -117,7 +117,7 @@ NetworkAddressFamily inet_netfamily(int family)
  * callers at all.
  */
 int inet_ai_family_from_address(InetSocketAddress *addr,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     if (addr->has_ipv6 && addr->has_ipv4 &&
         !addr->ipv6 && !addr->ipv4) {
@@ -136,7 +136,7 @@ int inet_ai_family_from_address(InetSocketAddress *addr,
 static int inet_listen_saddr(InetSocketAddress *saddr,
                              int port_offset,
                              bool update_addr,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     struct addrinfo ai,*res,*e;
     char port[33];
@@ -273,7 +273,8 @@ typedef struct ConnectState {
 } ConnectState;
 
 static int inet_connect_addr(struct addrinfo *addr, bool *in_progress,
-                             ConnectState *connect_state, Error **errp);
+                             ConnectState *connect_state,
+                             Error *errp[static 1]);
 
 static void wait_for_connect(void *opaque)
 {
@@ -331,7 +332,8 @@ out:
 }
 
 static int inet_connect_addr(struct addrinfo *addr, bool *in_progress,
-                             ConnectState *connect_state, Error **errp)
+                             ConnectState *connect_state,
+                             Error *errp[static 1])
 {
     int sock, rc;
 
@@ -367,7 +369,7 @@ static int inet_connect_addr(struct addrinfo *addr, bool 
*in_progress,
 }
 
 static struct addrinfo *inet_parse_connect_saddr(InetSocketAddress *saddr,
-                                                 Error **errp)
+                                                 Error *errp[static 1])
 {
     struct addrinfo ai, *res;
     int rc;
@@ -431,7 +433,7 @@ static struct addrinfo 
*inet_parse_connect_saddr(InetSocketAddress *saddr,
  */
 int inet_connect_saddr(InetSocketAddress *saddr,
                        NonBlockingConnectHandler *callback, void *opaque,
-                       Error **errp)
+                       Error *errp[static 1])
 {
     Error *local_err = NULL;
     struct addrinfo *res, *e;
@@ -480,7 +482,7 @@ int inet_connect_saddr(InetSocketAddress *saddr,
 
 static int inet_dgram_saddr(InetSocketAddress *sraddr,
                             InetSocketAddress *sladdr,
-                            Error **errp)
+                            Error *errp[static 1])
 {
     struct addrinfo ai, *peer = NULL, *local = NULL;
     const char *addr;
@@ -580,7 +582,8 @@ err:
 }
 
 /* compatibility wrapper */
-int inet_parse(InetSocketAddress *addr, const char *str, Error **errp)
+int inet_parse(InetSocketAddress *addr, const char *str,
+               Error *errp[static 1])
 {
     const char *optstr, *h;
     char host[65];
@@ -650,7 +653,7 @@ int inet_parse(InetSocketAddress *addr, const char *str, 
Error **errp)
  *
  * Returns -1 in case of error, file descriptor on success
  **/
-int inet_connect(const char *str, Error **errp)
+int inet_connect(const char *str, Error *errp[static 1])
 {
     int sock = -1;
     InetSocketAddress *addr = g_new(InetSocketAddress, 1);
@@ -690,7 +693,8 @@ static bool vsock_parse_vaddr_to_sockaddr(const 
VsockSocketAddress *vaddr,
 }
 
 static int vsock_connect_addr(const struct sockaddr_vm *svm, bool *in_progress,
-                              ConnectState *connect_state, Error **errp)
+                              ConnectState *connect_state,
+                              Error *errp[static 1])
 {
     int sock, rc;
 
@@ -727,7 +731,7 @@ static int vsock_connect_addr(const struct sockaddr_vm 
*svm, bool *in_progress,
 static int vsock_connect_saddr(VsockSocketAddress *vaddr,
                                NonBlockingConnectHandler *callback,
                                void *opaque,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     struct sockaddr_vm svm;
     int sock = -1;
@@ -760,7 +764,7 @@ static int vsock_connect_saddr(VsockSocketAddress *vaddr,
 }
 
 static int vsock_listen_saddr(VsockSocketAddress *vaddr,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     struct sockaddr_vm svm;
     int slisten;
@@ -790,7 +794,7 @@ static int vsock_listen_saddr(VsockSocketAddress *vaddr,
 }
 
 static int vsock_parse(VsockSocketAddress *addr, const char *str,
-                       Error **errp)
+                       Error *errp[static 1])
 {
     char cid[33];
     char port[33];
@@ -810,28 +814,28 @@ static int vsock_parse(VsockSocketAddress *addr, const 
char *str,
     return 0;
 }
 #else
-static void vsock_unsupported(Error **errp)
+static void vsock_unsupported(Error *errp[static 1])
 {
     error_setg(errp, "socket family AF_VSOCK unsupported");
 }
 
 static int vsock_connect_saddr(VsockSocketAddress *vaddr,
                                NonBlockingConnectHandler *callback,
-                               void *opaque, Error **errp)
+                               void *opaque, Error *errp[static 1])
 {
     vsock_unsupported(errp);
     return -1;
 }
 
 static int vsock_listen_saddr(VsockSocketAddress *vaddr,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     vsock_unsupported(errp);
     return -1;
 }
 
 static int vsock_parse(VsockSocketAddress *addr, const char *str,
-                        Error **errp)
+                        Error *errp[static 1])
 {
     vsock_unsupported(errp);
     return -1;
@@ -842,7 +846,7 @@ static int vsock_parse(VsockSocketAddress *addr, const char 
*str,
 
 static int unix_listen_saddr(UnixSocketAddress *saddr,
                              bool update_addr,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     struct sockaddr_un un;
     int sock, fd;
@@ -922,7 +926,7 @@ err:
 
 static int unix_connect_saddr(UnixSocketAddress *saddr,
                               NonBlockingConnectHandler *callback, void 
*opaque,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     struct sockaddr_un un;
     ConnectState *connect_state = NULL;
@@ -994,7 +998,7 @@ static int unix_connect_saddr(UnixSocketAddress *saddr,
 
 static int unix_listen_saddr(UnixSocketAddress *saddr,
                              bool update_addr,
-                             Error **errp)
+                             Error *errp[static 1])
 {
     error_setg(errp, "unix sockets are not available on windows");
     errno = ENOTSUP;
@@ -1003,7 +1007,7 @@ static int unix_listen_saddr(UnixSocketAddress *saddr,
 
 static int unix_connect_saddr(UnixSocketAddress *saddr,
                               NonBlockingConnectHandler *callback, void 
*opaque,
-                              Error **errp)
+                              Error *errp[static 1])
 {
     error_setg(errp, "unix sockets are not available on windows");
     errno = ENOTSUP;
@@ -1012,7 +1016,7 @@ static int unix_connect_saddr(UnixSocketAddress *saddr,
 #endif
 
 /* compatibility wrapper */
-int unix_listen(const char *str, char *ostr, int olen, Error **errp)
+int unix_listen(const char *str, char *ostr, int olen, Error *errp[static 1])
 {
     char *path, *optstr;
     int sock, len;
@@ -1042,7 +1046,7 @@ int unix_listen(const char *str, char *ostr, int olen, 
Error **errp)
     return sock;
 }
 
-int unix_connect(const char *path, Error **errp)
+int unix_connect(const char *path, Error *errp[static 1])
 {
     UnixSocketAddress *saddr;
     int sock;
@@ -1055,7 +1059,7 @@ int unix_connect(const char *path, Error **errp)
 }
 
 
-SocketAddress *socket_parse(const char *str, Error **errp)
+SocketAddress *socket_parse(const char *str, Error *errp[static 1])
 {
     SocketAddress *addr;
 
@@ -1095,7 +1099,7 @@ fail:
 }
 
 int socket_connect(SocketAddress *addr, NonBlockingConnectHandler *callback,
-                   void *opaque, Error **errp)
+                   void *opaque, Error *errp[static 1])
 {
     int fd;
 
@@ -1126,7 +1130,7 @@ int socket_connect(SocketAddress *addr, 
NonBlockingConnectHandler *callback,
     return fd;
 }
 
-int socket_listen(SocketAddress *addr, Error **errp)
+int socket_listen(SocketAddress *addr, Error *errp[static 1])
 {
     int fd;
 
@@ -1153,7 +1157,7 @@ int socket_listen(SocketAddress *addr, Error **errp)
     return fd;
 }
 
-void socket_listen_cleanup(int fd, Error **errp)
+void socket_listen_cleanup(int fd, Error *errp[static 1])
 {
     SocketAddress *addr;
 
@@ -1171,7 +1175,8 @@ void socket_listen_cleanup(int fd, Error **errp)
     qapi_free_SocketAddress(addr);
 }
 
-int socket_dgram(SocketAddress *remote, SocketAddress *local, Error **errp)
+int socket_dgram(SocketAddress *remote, SocketAddress *local,
+                 Error *errp[static 1])
 {
     int fd;
 
@@ -1196,7 +1201,7 @@ int socket_dgram(SocketAddress *remote, SocketAddress 
*local, Error **errp)
 static SocketAddress *
 socket_sockaddr_to_address_inet(struct sockaddr_storage *sa,
                                 socklen_t salen,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     char host[NI_MAXHOST];
     char serv[NI_MAXSERV];
@@ -1233,7 +1238,7 @@ socket_sockaddr_to_address_inet(struct sockaddr_storage 
*sa,
 static SocketAddress *
 socket_sockaddr_to_address_unix(struct sockaddr_storage *sa,
                                 socklen_t salen,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     SocketAddress *addr;
     struct sockaddr_un *su = (struct sockaddr_un *)sa;
@@ -1252,7 +1257,7 @@ socket_sockaddr_to_address_unix(struct sockaddr_storage 
*sa,
 static SocketAddress *
 socket_sockaddr_to_address_vsock(struct sockaddr_storage *sa,
                                  socklen_t salen,
-                                 Error **errp)
+                                 Error *errp[static 1])
 {
     SocketAddress *addr;
     VsockSocketAddress *vaddr;
@@ -1271,7 +1276,7 @@ socket_sockaddr_to_address_vsock(struct sockaddr_storage 
*sa,
 SocketAddress *
 socket_sockaddr_to_address(struct sockaddr_storage *sa,
                            socklen_t salen,
-                           Error **errp)
+                           Error *errp[static 1])
 {
     switch (sa->ss_family) {
     case AF_INET:
@@ -1297,7 +1302,7 @@ socket_sockaddr_to_address(struct sockaddr_storage *sa,
 }
 
 
-SocketAddress *socket_local_address(int fd, Error **errp)
+SocketAddress *socket_local_address(int fd, Error *errp[static 1])
 {
     struct sockaddr_storage ss;
     socklen_t sslen = sizeof(ss);
@@ -1312,7 +1317,7 @@ SocketAddress *socket_local_address(int fd, Error **errp)
 }
 
 
-SocketAddress *socket_remote_address(int fd, Error **errp)
+SocketAddress *socket_remote_address(int fd, Error *errp[static 1])
 {
     struct sockaddr_storage ss;
     socklen_t sslen = sizeof(ss);
@@ -1326,7 +1331,8 @@ SocketAddress *socket_remote_address(int fd, Error **errp)
     return socket_sockaddr_to_address(&ss, sslen, errp);
 }
 
-char *socket_address_to_string(struct SocketAddress *addr, Error **errp)
+char *socket_address_to_string(struct SocketAddress *addr,
+                               Error *errp[static 1])
 {
     char *buf;
     InetSocketAddress *inet;
diff --git a/util/throttle.c b/util/throttle.c
index 3570ed25fc..8d5955ae61 100644
--- a/util/throttle.c
+++ b/util/throttle.c
@@ -287,7 +287,7 @@ bool throttle_enabled(ThrottleConfig *cfg)
  * @ret: true if valid else false
  * @errp: error object
  */
-bool throttle_is_valid(ThrottleConfig *cfg, Error **errp)
+bool throttle_is_valid(ThrottleConfig *cfg, Error *errp[static 1])
 {
     int i;
     bool bps_flag, ops_flag;
diff --git a/vl.c b/vl.c
index 32068db274..4926770561 100644
--- a/vl.c
+++ b/vl.c
@@ -564,7 +564,8 @@ static void res_free(void)
     boot_splash_filedata = NULL;
 }
 
-static int default_driver_check(void *opaque, QemuOpts *opts, Error **errp)
+static int default_driver_check(void *opaque, QemuOpts *opts,
+                                Error *errp[static 1])
 {
     const char *driver = qemu_opt_get(opts, "driver");
     int i;
@@ -741,7 +742,7 @@ bool runstate_needs_reset(void)
         runstate_check(RUN_STATE_SHUTDOWN);
 }
 
-StatusInfo *qmp_query_status(Error **errp)
+StatusInfo *qmp_query_status(Error *errp[static 1])
 {
     StatusInfo *info = g_malloc0(sizeof(*info));
 
@@ -1029,7 +1030,7 @@ static int bt_parse(const char *opt)
     return 1;
 }
 
-static int parse_sandbox(void *opaque, QemuOpts *opts, Error **errp)
+static int parse_sandbox(void *opaque, QemuOpts *opts, Error *errp[static 1])
 {
     /* FIXME: change this to true for 1.3 */
     if (qemu_opt_get_bool(opts, "enable", false)) {
@@ -1048,7 +1049,7 @@ static int parse_sandbox(void *opaque, QemuOpts *opts, 
Error **errp)
     return 0;
 }
 
-static int parse_name(void *opaque, QemuOpts *opts, Error **errp)
+static int parse_name(void *opaque, QemuOpts *opts, Error *errp[static 1])
 {
     const char *proc_name;
 
@@ -1071,7 +1072,7 @@ bool defaults_enabled(void)
 }
 
 #ifndef _WIN32
-static int parse_add_fd(void *opaque, QemuOpts *opts, Error **errp)
+static int parse_add_fd(void *opaque, QemuOpts *opts, Error *errp[static 1])
 {
     int fd, dupfd, flags;
     int64_t fdset_id;
@@ -1128,7 +1129,7 @@ static int parse_add_fd(void *opaque, QemuOpts *opts, 
Error **errp)
     return 0;
 }
 
-static int cleanup_add_fd(void *opaque, QemuOpts *opts, Error **errp)
+static int cleanup_add_fd(void *opaque, QemuOpts *opts, Error *errp[static 1])
 {
     int fd;
 
@@ -1149,14 +1150,16 @@ static int cleanup_add_fd(void *opaque, QemuOpts *opts, 
Error **errp)
 #define MTD_OPTS ""
 #define SD_OPTS ""
 
-static int drive_init_func(void *opaque, QemuOpts *opts, Error **errp)
+static int drive_init_func(void *opaque, QemuOpts *opts,
+                           Error *errp[static 1])
 {
     BlockInterfaceType *block_default_type = opaque;
 
     return drive_new(opts, *block_default_type) == NULL;
 }
 
-static int drive_enable_snapshot(void *opaque, QemuOpts *opts, Error **errp)
+static int drive_enable_snapshot(void *opaque, QemuOpts *opts,
+                                 Error *errp[static 1])
 {
     if (qemu_opt_get(opts, "snapshot") == NULL) {
         qemu_opt_set(opts, "snapshot", "on", &error_abort);
@@ -1333,7 +1336,7 @@ const char *semihosting_get_cmdline(void)
 
 static int add_semihosting_arg(void *opaque,
                                const char *name, const char *val,
-                               Error **errp)
+                               Error *errp[static 1])
 {
     SemihostingConfig *s = opaque;
     if (strcmp(name, "arg") == 0) {
@@ -1502,7 +1505,7 @@ MachineClass *find_default_machine(void)
     return mc;
 }
 
-MachineInfoList *qmp_query_machines(Error **errp)
+MachineInfoList *qmp_query_machines(Error *errp[static 1])
 {
     GSList *el, *machines = object_class_get_list(TYPE_MACHINE, false);
     MachineInfoList *mach_list = NULL;
@@ -2274,7 +2277,7 @@ static inline bool nonempty_str(const char *str)
     return str && *str;
 }
 
-static int parse_fw_cfg(void *opaque, QemuOpts *opts, Error **errp)
+static int parse_fw_cfg(void *opaque, QemuOpts *opts, Error *errp[static 1])
 {
     gchar *buf;
     size_t size;
@@ -2322,12 +2325,14 @@ static int parse_fw_cfg(void *opaque, QemuOpts *opts, 
Error **errp)
     return 0;
 }
 
-static int device_help_func(void *opaque, QemuOpts *opts, Error **errp)
+static int device_help_func(void *opaque, QemuOpts *opts,
+                            Error *errp[static 1])
 {
     return qdev_device_help(opts);
 }
 
-static int device_init_func(void *opaque, QemuOpts *opts, Error **errp)
+static int device_init_func(void *opaque, QemuOpts *opts,
+                            Error *errp[static 1])
 {
     Error *err = NULL;
     DeviceState *dev;
@@ -2341,7 +2346,8 @@ static int device_init_func(void *opaque, QemuOpts *opts, 
Error **errp)
     return 0;
 }
 
-static int chardev_init_func(void *opaque, QemuOpts *opts, Error **errp)
+static int chardev_init_func(void *opaque, QemuOpts *opts,
+                             Error *errp[static 1])
 {
     Error *local_err = NULL;
 
@@ -2354,13 +2360,14 @@ static int chardev_init_func(void *opaque, QemuOpts 
*opts, Error **errp)
 }
 
 #ifdef CONFIG_VIRTFS
-static int fsdev_init_func(void *opaque, QemuOpts *opts, Error **errp)
+static int fsdev_init_func(void *opaque, QemuOpts *opts,
+                           Error *errp[static 1])
 {
     return qemu_fsdev_add(opts);
 }
 #endif
 
-static int mon_init_func(void *opaque, QemuOpts *opts, Error **errp)
+static int mon_init_func(void *opaque, QemuOpts *opts, Error *errp[static 1])
 {
     Chardev *chr;
     const char *chardev;
@@ -2771,7 +2778,7 @@ static MachineClass *select_machine(void)
 
 static int machine_set_property(void *opaque,
                                 const char *name, const char *value,
-                                Error **errp)
+                                Error *errp[static 1])
 {
     Object *obj = OBJECT(opaque);
     Error *local_err = NULL;
@@ -2944,7 +2951,8 @@ static void set_memory_options(uint64_t *ram_slots, 
ram_addr_t *maxram_size,
     loc_pop(&loc);
 }
 
-static int global_init_func(void *opaque, QemuOpts *opts, Error **errp)
+static int global_init_func(void *opaque, QemuOpts *opts,
+                            Error *errp[static 1])
 {
     GlobalProperty *g;
 
-- 
2.11.0.259.g40922b1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]