QEMU-Devel Archive on lore.kernel.org
 help / color / Atom feed
* [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13
@ 2019-08-13 15:46 Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 01/29] include: Make headers more self-contained Markus Armbruster
                   ` (29 more replies)
  0 siblings, 30 replies; 34+ messages in thread
From: Markus Armbruster @ 2019-08-13 15:46 UTC (permalink / raw)
  To: qemu-devel

The following changes since commit 864ab314f1d924129d06ac7b571f105a2b76a4b2:

  Update version for v4.1.0-rc4 release (2019-08-06 17:05:21 +0100)

are available in the Git repository at:

  git://repo.or.cz/qemu/armbru.git tags/pull-include-2019-08-13

for you to fetch changes up to 8d111fd683b678d3826e192bc07ffcc349a118b5:

  sysemu: Split sysemu/runstate.h off sysemu/sysemu.h (2019-08-13 13:16:20 +0200)

----------------------------------------------------------------
Header cleanup patches for 2019-08-13

----------------------------------------------------------------
These patches are rather bothersome to rebase, so I'd like to get them
into 4.2 early.

Markus Armbruster (29):
      include: Make headers more self-contained
      Include generated QAPI headers less
      qapi: Split error.json off common.json
      memory: Fix type of IOMMUMemoryRegionClass member @parent_class
      queue: Drop superfluous #include qemu/atomic.h
      trace: Eliminate use of TARGET_FMT_plx
      trace: Do not include qom/cpu.h into generated trace.h
      Include sysemu/reset.h a lot less
      Include migration/qemu-file-types.h a lot less
      ide: Include hw/ide/internal a bit less outside hw/ide/
      typedefs: Separate incomplete types and function types
      Include hw/irq.h a lot less
      Clean up inclusion of exec/cpu-common.h
      migration: Move the VMStateDescription typedef to typedefs.h
      Include migration/vmstate.h less
      Include exec/memory.h slightly less
      Include qom/object.h slightly less
      Include hw/hw.h exactly where needed
      Include qemu/queue.h slightly less
      Include qemu/main-loop.h less
      Include hw/qdev-properties.h less
      Include hw/boards.h a bit less
      numa: Don't include hw/boards.h into sysemu/numa.h
      Include sysemu/hostmem.h less
      numa: Move remaining NUMA declarations from sysemu.h to numa.h
      Clean up inclusion of sysemu/sysemu.h
      Include sysemu/sysemu.h a lot less
      sysemu: Move the VMChangeStateEntry typedef to qemu/typedefs.h
      sysemu: Split sysemu/runstate.h off sysemu/sysemu.h

 qapi/common.json                         | 24 -----------
 qapi/error.json                          | 29 ++++++++++++++
 qapi/qapi-schema.json                    |  1 +
 fsdev/qemu-fsdev-throttle.h              |  1 -
 hw/9pfs/coth.h                           |  1 -
 hw/alpha/alpha_sys.h                     |  1 -
 hw/audio/intel-hda.h                     |  2 +-
 hw/audio/lm4549.h                        |  1 +
 hw/display/qxl.h                         |  1 -
 hw/hppa/hppa_sys.h                       |  1 -
 hw/i386/amd_iommu.h                      |  1 -
 hw/ide/ahci_internal.h                   |  1 +
 hw/lm32/lm32.h                           |  1 +
 hw/lm32/milkymist-hw.h                   |  2 +-
 hw/microblaze/boot.h                     |  1 -
 hw/net/can/can_sja1000.h                 |  1 +
 hw/net/fsl_etsec/etsec.h                 |  1 -
 hw/net/ne2000.h                          |  1 -
 hw/net/pcnet.h                           |  1 +
 hw/nios2/boot.h                          |  1 -
 hw/ppc/mac.h                             |  1 -
 hw/s390x/ipl.h                           |  2 +-
 hw/usb/ccid.h                            |  2 +-
 hw/usb/hcd-ehci.h                        |  2 -
 hw/xtensa/xtensa_memory.h                |  1 -
 include/authz/listfile.h                 |  1 -
 include/block/block.h                    |  1 -
 include/block/block_int.h                |  1 -
 include/block/raw-aio.h                  |  2 +
 include/block/write-threshold.h          |  2 +
 include/chardev/char-fe.h                |  1 +
 include/chardev/char-io.h                |  1 +
 include/chardev/char.h                   |  2 +-
 include/disas/disas.h                    |  1 +
 include/exec/cpu-defs.h                  |  1 -
 include/exec/cputlb.h                    |  3 ++
 include/exec/exec-all.h                  |  1 +
 include/exec/ioport.h                    |  2 +
 include/exec/memory-internal.h           |  2 +
 include/exec/memory.h                    | 10 ++++-
 include/exec/ram_addr.h                  |  1 +
 include/exec/softmmu-semi.h              |  2 +
 include/exec/tb-hash.h                   |  2 +
 include/exec/user/thunk.h                |  2 +
 include/fpu/softfloat-macros.h           |  2 +
 include/hw/acpi/acpi.h                   |  1 -
 include/hw/acpi/acpi_dev_interface.h     |  2 +
 include/hw/acpi/pci.h                    |  3 ++
 include/hw/acpi/tco.h                    |  2 +
 include/hw/acpi/vmgenid.h                |  2 +-
 include/hw/adc/stm32f2xx_adc.h           |  2 +
 include/hw/arm/allwinner-a10.h           |  3 +-
 include/hw/arm/aspeed_soc.h              |  1 +
 include/hw/arm/bcm2836.h                 |  1 +
 include/hw/arm/boot.h                    |  2 -
 include/hw/arm/exynos4210.h              |  3 +-
 include/hw/arm/fsl-imx25.h               |  1 +
 include/hw/arm/fsl-imx31.h               |  1 +
 include/hw/arm/fsl-imx7.h                |  1 -
 include/hw/arm/omap.h                    |  1 -
 include/hw/arm/sharpsl.h                 |  3 ++
 include/hw/arm/soc_dma.h                 |  3 +-
 include/hw/arm/xlnx-zynqmp.h             |  2 +-
 include/hw/audio/pcspk.h                 |  2 +-
 include/hw/audio/wm8750.h                |  1 -
 include/hw/block/fdc.h                   |  1 +
 include/hw/block/flash.h                 |  2 +-
 include/hw/boards.h                      |  4 +-
 include/hw/bt.h                          |  1 -
 include/hw/char/cadence_uart.h           |  1 +
 include/hw/char/cmsdk-apb-uart.h         |  1 +
 include/hw/char/escc.h                   |  1 +
 include/hw/char/lm32_juart.h             |  2 +-
 include/hw/char/parallel.h               |  1 -
 include/hw/char/pl011.h                  |  1 +
 include/hw/char/serial.h                 |  2 -
 include/hw/char/stm32f2xx_usart.h        |  1 -
 include/hw/char/xilinx_uartlite.h        |  3 ++
 include/hw/core/generic-loader.h         |  1 +
 include/hw/core/split-irq.h              |  1 -
 include/hw/cpu/cluster.h                 |  2 +-
 include/hw/cpu/core.h                    |  2 +-
 include/hw/cris/etraxfs.h                |  2 +
 include/hw/cris/etraxfs_dma.h            |  2 +
 include/hw/display/blizzard.h            |  1 -
 include/hw/display/edid.h                |  2 +-
 include/hw/display/i2c-ddc.h             |  1 +
 include/hw/display/milkymist_tmu2.h      |  3 +-
 include/hw/display/tc6393xb.h            |  3 --
 include/hw/display/vga.h                 |  2 +-
 include/hw/dma/i8257.h                   |  1 -
 include/hw/empty_slot.h                  |  2 +
 include/hw/gpio/bcm2835_gpio.h           |  1 +
 include/hw/hw.h                          |  9 -----
 include/hw/i2c/aspeed_i2c.h              |  2 +
 include/hw/i2c/i2c.h                     |  2 +-
 include/hw/i2c/pm_smbus.h                |  1 +
 include/hw/i2c/smbus_eeprom.h            |  1 +
 include/hw/i386/apic_internal.h          |  1 +
 include/hw/i386/ich9.h                   |  1 -
 include/hw/i386/intel_iommu.h            |  2 +-
 include/hw/i386/ioapic_internal.h        |  2 +-
 include/hw/i386/pc.h                     |  1 -
 include/hw/ide/internal.h                |  4 +-
 include/hw/input/adb.h                   |  2 +-
 include/hw/input/gamepad.h               |  1 -
 include/hw/input/hid.h                   |  1 -
 include/hw/input/i8042.h                 |  1 -
 include/hw/input/tsc2xxx.h               |  1 -
 include/hw/intc/allwinner-a10-pic.h      |  2 +
 include/hw/intc/heathrow_pic.h           |  2 +
 include/hw/intc/mips_gic.h               |  1 +
 include/hw/ipack/ipack.h                 |  2 +-
 include/hw/ipmi/ipmi.h                   |  2 +-
 include/hw/irq.h                         |  4 --
 include/hw/isa/apm.h                     |  1 -
 include/hw/isa/i8259_internal.h          |  1 -
 include/hw/isa/isa.h                     |  2 +-
 include/hw/isa/vt82c686.h                |  1 +
 include/hw/mem/memory-device.h           |  3 +-
 include/hw/mem/pc-dimm.h                 |  4 +-
 include/hw/mips/cps.h                    |  1 +
 include/hw/mips/mips.h                   |  1 -
 include/hw/misc/auxbus.h                 |  3 +-
 include/hw/misc/cbus.h                   |  1 -
 include/hw/misc/macio/cuda.h             |  2 +
 include/hw/misc/macio/gpio.h             |  3 ++
 include/hw/misc/macio/macio.h            |  2 +
 include/hw/misc/macio/pmu.h              |  3 ++
 include/hw/misc/mips_cmgcr.h             |  2 +
 include/hw/misc/mips_cpc.h               |  2 +
 include/hw/misc/mos6522.h                |  1 -
 include/hw/misc/pvpanic.h                |  3 ++
 include/hw/misc/stm32f2xx_syscfg.h       |  1 -
 include/hw/misc/unimp.h                  |  1 +
 include/hw/misc/vmcoreinfo.h             |  2 +-
 include/hw/net/allwinner_emac.h          |  1 +
 include/hw/net/lan9118.h                 |  1 -
 include/hw/net/lance.h                   |  1 +
 include/hw/net/ne2000-isa.h              |  3 +-
 include/hw/net/smc91c111.h               |  1 -
 include/hw/nvram/chrp_nvram.h            |  2 +
 include/hw/or-irq.h                      |  1 -
 include/hw/pci-host/designware.h         |  1 -
 include/hw/pci-host/gpex.h               |  1 -
 include/hw/pci-host/q35.h                |  1 -
 include/hw/pci-host/sabre.h              |  2 +
 include/hw/pci-host/uninorth.h           |  3 +-
 include/hw/pci-host/xilinx-pcie.h        |  1 -
 include/hw/pci/pci.h                     |  1 -
 include/hw/pci/pcie.h                    |  1 -
 include/hw/pci/pcie_aer.h                |  2 +-
 include/hw/pci/shpc.h                    |  1 +
 include/hw/pcmcia.h                      |  2 +-
 include/hw/ppc/openpic.h                 |  1 -
 include/hw/ppc/pnv_core.h                |  1 +
 include/hw/ppc/ppc4xx.h                  |  3 ++
 include/hw/ppc/spapr_cpu_core.h          |  2 +-
 include/hw/ppc/spapr_drc.h               |  5 +--
 include/hw/ppc/spapr_irq.h               |  2 +
 include/hw/ppc/spapr_ovec.h              |  1 -
 include/hw/ppc/spapr_vio.h               |  1 +
 include/hw/ppc/spapr_xive.h              |  1 +
 include/hw/ppc/xics.h                    |  3 +-
 include/hw/ppc/xive.h                    |  1 -
 include/hw/ppc/xive_regs.h               |  3 ++
 include/hw/ptimer.h                      |  1 -
 include/hw/qdev-core.h                   | 12 +-----
 include/hw/qdev-properties.h             |  2 -
 include/hw/qdev.h                        |  8 ----
 include/hw/riscv/boot.h                  |  2 +
 include/hw/riscv/riscv_hart.h            |  3 ++
 include/hw/riscv/riscv_htif.h            |  2 -
 include/hw/riscv/sifive_clint.h          |  2 +
 include/hw/riscv/sifive_e.h              |  1 +
 include/hw/riscv/sifive_plic.h           |  2 +-
 include/hw/riscv/sifive_prci.h           |  2 +
 include/hw/riscv/sifive_test.h           |  2 +
 include/hw/riscv/sifive_u.h              |  1 +
 include/hw/riscv/sifive_uart.h           |  3 ++
 include/hw/riscv/spike.h                 |  3 ++
 include/hw/riscv/virt.h                  |  3 ++
 include/hw/s390x/ap-device.h             |  3 ++
 include/hw/s390x/css-bridge.h            |  3 +-
 include/hw/s390x/css.h                   |  1 +
 include/hw/s390x/event-facility.h        |  2 +-
 include/hw/s390x/sclp.h                  |  1 -
 include/hw/s390x/storage-attributes.h    |  2 +-
 include/hw/s390x/storage-keys.h          |  2 +-
 include/hw/s390x/tod.h                   |  4 +-
 include/hw/scsi/scsi.h                   |  4 +-
 include/hw/sd/sd.h                       |  2 +-
 include/hw/semihosting/console.h         |  2 +
 include/hw/sh4/sh_intc.h                 |  2 +-
 include/hw/sparc/grlib.h                 |  1 -
 include/hw/sparc/sparc64.h               |  2 +
 include/hw/ssi/aspeed_smc.h              |  1 +
 include/hw/ssi/ssi.h                     |  2 +-
 include/hw/ssi/stm32f2xx_spi.h           |  1 -
 include/hw/ssi/xilinx_spips.h            |  1 +
 include/hw/sysbus.h                      |  2 +-
 include/hw/timer/allwinner-a10-pit.h     |  1 +
 include/hw/timer/aspeed_rtc.h            |  1 -
 include/hw/timer/cmsdk-apb-timer.h       |  1 +
 include/hw/timer/i8254.h                 |  3 +-
 include/hw/timer/i8254_internal.h        |  2 +-
 include/hw/timer/m48t59.h                |  1 +
 include/hw/timer/mc146818rtc_regs.h      |  2 +
 include/hw/timer/stm32f2xx_timer.h       |  1 -
 include/hw/timer/xlnx-zynqmp-rtc.h       |  1 +
 include/hw/tricore/tricore.h             |  1 -
 include/hw/usb.h                         |  3 +-
 include/hw/vfio/vfio-platform.h          |  1 -
 include/hw/virtio/vhost-scsi-common.h    |  1 -
 include/hw/virtio/vhost-scsi.h           |  1 -
 include/hw/virtio/vhost-user-blk.h       |  1 -
 include/hw/virtio/vhost-user-scsi.h      |  1 -
 include/hw/virtio/vhost.h                |  1 -
 include/hw/virtio/virtio-access.h        |  1 +
 include/hw/virtio/virtio-bus.h           |  3 +-
 include/hw/virtio/virtio-gpu-bswap.h     |  1 +
 include/hw/virtio/virtio-pmem.h          |  2 +-
 include/hw/virtio/virtio-rng.h           |  1 +
 include/hw/virtio/virtio-serial.h        |  1 -
 include/hw/virtio/virtio.h               |  6 +--
 include/hw/watchdog/wdt_aspeed.h         |  1 +
 include/hw/watchdog/wdt_diag288.h        |  2 +-
 include/hw/xen/xen-legacy-backend.h      |  1 -
 include/hw/xen/xen.h                     |  1 -
 include/hw/xen/xen_common.h              |  2 -
 include/hw/xtensa/mx_pic.h               |  1 -
 include/libdecnumber/decNumberLocal.h    |  1 +
 include/migration/cpu.h                  |  5 +++
 include/migration/global_state.h         |  1 -
 include/migration/misc.h                 |  1 -
 include/migration/vmstate.h              |  1 -
 include/monitor/hmp-target.h             |  2 +
 include/monitor/qdev.h                   |  2 -
 include/net/can_emu.h                    |  1 +
 include/net/filter.h                     |  1 +
 include/net/net.h                        |  1 -
 include/qapi/error.h                     |  2 +-
 include/qemu/atomic128.h                 |  2 +
 include/qemu/fifo8.h                     |  1 -
 include/qemu/job.h                       |  2 +-
 include/qemu/queue.h                     |  2 -
 include/qemu/range.h                     |  2 -
 include/qemu/ratelimit.h                 |  2 +
 include/qemu/thread-win32.h              |  2 +-
 include/qemu/typedefs.h                  | 38 ++++++++++++++++--
 include/qom/cpu.h                        |  4 +-
 include/qom/object.h                     |  1 -
 include/sysemu/accel.h                   |  1 -
 include/sysemu/arch_init.h               |  1 -
 include/sysemu/balloon.h                 |  1 +
 include/sysemu/cryptodev-vhost-user.h    |  3 ++
 include/sysemu/cryptodev.h               |  1 +
 include/sysemu/dma.h                     |  1 -
 include/sysemu/hax.h                     |  1 -
 include/sysemu/hostmem.h                 |  3 +-
 include/sysemu/hvf.h                     |  2 +-
 include/sysemu/iothread.h                |  1 +
 include/sysemu/kvm.h                     |  1 -
 include/sysemu/kvm_int.h                 |  2 +-
 include/sysemu/memory_mapping.h          |  1 +
 include/sysemu/numa.h                    | 18 +++++++--
 include/sysemu/replay.h                  |  2 +-
 include/sysemu/rng.h                     |  1 +
 include/sysemu/runstate.h                | 68 ++++++++++++++++++++++++++++++++
 include/sysemu/sysemu.h                  | 68 --------------------------------
 include/sysemu/xen-mapcache.h            |  2 +
 include/ui/egl-helpers.h                 |  2 +
 include/ui/input.h                       |  1 +
 include/ui/spice-display.h               |  2 +-
 linux-user/qemu.h                        |  1 -
 migration/migration.h                    |  4 +-
 migration/qemu-file.h                    |  1 +
 monitor/monitor-internal.h               |  1 -
 nbd/nbd-internal.h                       |  2 -
 target/alpha/cpu.h                       |  2 +-
 target/arm/cpu.h                         |  2 +-
 target/cris/cpu.h                        |  2 +-
 target/hppa/cpu.h                        |  4 +-
 target/i386/cpu.h                        |  2 +-
 target/i386/sev_i386.h                   |  2 +-
 target/lm32/cpu.h                        |  2 +-
 target/mips/internal.h                   |  2 +-
 target/openrisc/cpu.h                    |  2 +-
 target/ppc/cpu-qom.h                     |  2 +-
 target/ppc/cpu.h                         |  2 +-
 target/s390x/cpu.h                       |  2 +-
 target/sparc/cpu.h                       |  2 +-
 trace/control-internal.h                 | 25 ------------
 trace/control-vcpu.h                     | 63 +++++++++++++++++++++++++++++
 trace/control.h                          | 24 -----------
 ui/vnc-auth-sasl.h                       |  1 -
 ui/vnc.h                                 |  1 -
 accel/kvm/kvm-all.c                      |  4 +-
 accel/stubs/tcg-stub.c                   |  1 -
 accel/tcg/tcg-all.c                      |  1 -
 audio/audio.c                            |  4 +-
 audio/spiceaudio.c                       |  1 -
 audio/wavcapture.c                       |  1 -
 backends/cryptodev-builtin.c             |  1 -
 backends/cryptodev-vhost-user.c          |  1 -
 backends/cryptodev.c                     |  1 -
 backends/hostmem.c                       |  1 +
 backends/vhost-user.c                    |  1 -
 balloon.c                                |  1 -
 block.c                                  |  1 +
 block/block-backend.c                    |  4 +-
 block/create.c                           |  1 +
 block/io.c                               |  1 +
 block/nbd.c                              |  1 +
 block/nfs.c                              |  2 +-
 block/nvme.c                             |  1 +
 block/qcow2.c                            |  1 +
 block/qed.c                              |  1 +
 block/sheepdog.c                         |  1 +
 block/throttle-groups.c                  |  1 +
 blockdev-nbd.c                           |  1 -
 blockdev.c                               |  2 +
 blockjob.c                               |  1 +
 chardev/baum.c                           |  1 +
 chardev/char-pipe.c                      |  1 +
 chardev/char-win-stdio.c                 |  1 +
 chardev/char-win.c                       |  1 +
 cpus.c                                   |  3 ++
 device-hotplug.c                         |  1 -
 dump/dump.c                              |  3 +-
 dump/win_dump.c                          |  1 -
 exec.c                                   |  3 +-
 fsdev/qemu-fsdev-throttle.c              |  1 +
 gdbstub.c                                |  1 +
 hw/9pfs/9p.c                             |  1 +
 hw/9pfs/codir.c                          |  1 +
 hw/9pfs/cofile.c                         |  1 +
 hw/9pfs/cofs.c                           |  1 +
 hw/9pfs/coth.c                           |  1 +
 hw/9pfs/coxattr.c                        |  1 +
 hw/9pfs/virtio-9p-device.c               |  1 +
 hw/9pfs/xen-9p-backend.c                 |  2 +-
 hw/acpi/core.c                           |  4 +-
 hw/acpi/cpu.c                            |  1 +
 hw/acpi/cpu_hotplug.c                    |  1 -
 hw/acpi/ich9.c                           |  7 +++-
 hw/acpi/memory_hotplug.c                 |  1 +
 hw/acpi/pcihp.c                          |  3 +-
 hw/acpi/piix4.c                          |  8 +++-
 hw/acpi/tco.c                            |  2 +
 hw/acpi/vmgenid.c                        |  4 +-
 hw/adc/stm32f2xx_adc.c                   |  2 +-
 hw/alpha/dp264.c                         |  2 -
 hw/alpha/pci.c                           |  1 -
 hw/alpha/typhoon.c                       |  4 +-
 hw/arm/allwinner-a10.c                   |  2 +
 hw/arm/armsse.c                          |  2 +
 hw/arm/armv7m.c                          |  2 +
 hw/arm/aspeed.c                          |  1 +
 hw/arm/aspeed_soc.c                      |  1 +
 hw/arm/boot.c                            |  3 +-
 hw/arm/collie.c                          |  1 -
 hw/arm/cubieboard.c                      |  1 +
 hw/arm/digic.c                           |  1 +
 hw/arm/exynos4210.c                      |  4 +-
 hw/arm/exynos4_boards.c                  |  2 +
 hw/arm/fsl-imx25.c                       |  2 +-
 hw/arm/fsl-imx31.c                       |  2 +-
 hw/arm/fsl-imx6.c                        |  1 +
 hw/arm/gumstix.c                         |  1 -
 hw/arm/highbank.c                        |  2 +
 hw/arm/integratorcp.c                    |  4 ++
 hw/arm/kzm.c                             |  1 +
 hw/arm/mainstone.c                       |  1 -
 hw/arm/mcimx6ul-evk.c                    |  1 +
 hw/arm/mcimx7d-sabre.c                   |  1 +
 hw/arm/microbit.c                        |  1 +
 hw/arm/msf2-soc.c                        |  4 +-
 hw/arm/msf2-som.c                        |  1 +
 hw/arm/musicpal.c                        |  5 +++
 hw/arm/netduino2.c                       |  1 +
 hw/arm/nrf51_soc.c                       |  2 -
 hw/arm/nseries.c                         |  3 ++
 hw/arm/omap1.c                           |  6 +++
 hw/arm/omap2.c                           |  6 ++-
 hw/arm/omap_sx1.c                        |  1 -
 hw/arm/palm.c                            |  3 +-
 hw/arm/pxa2xx.c                          |  3 ++
 hw/arm/pxa2xx_gpio.c                     |  3 ++
 hw/arm/pxa2xx_pic.c                      |  2 +-
 hw/arm/realview.c                        |  1 +
 hw/arm/sabrelite.c                       |  1 +
 hw/arm/sbsa-ref.c                        |  2 +
 hw/arm/smmu-common.c                     |  1 -
 hw/arm/smmuv3.c                          |  4 +-
 hw/arm/spitz.c                           |  5 ++-
 hw/arm/stellaris.c                       |  3 ++
 hw/arm/stm32f205_soc.c                   |  2 +
 hw/arm/strongarm.c                       |  3 ++
 hw/arm/sysbus-fdt.c                      |  1 -
 hw/arm/tosa.c                            |  4 +-
 hw/arm/versatilepb.c                     |  2 +
 hw/arm/virt-acpi-build.c                 |  3 +-
 hw/arm/virt.c                            |  4 ++
 hw/arm/xlnx-zynqmp.c                     |  1 +
 hw/arm/z2.c                              |  4 +-
 hw/audio/ac97.c                          |  3 +-
 hw/audio/adlib.c                         |  2 +-
 hw/audio/cs4231.c                        |  1 +
 hw/audio/cs4231a.c                       |  5 ++-
 hw/audio/es1370.c                        |  2 +-
 hw/audio/gus.c                           |  4 +-
 hw/audio/hda-codec.c                     |  3 +-
 hw/audio/intel-hda.c                     |  3 +-
 hw/audio/lm4549.c                        |  1 +
 hw/audio/marvell_88w8618.c               |  4 +-
 hw/audio/milkymist-ac97.c                |  3 +-
 hw/audio/pcspk.c                         |  2 +-
 hw/audio/pl041.c                         |  3 ++
 hw/audio/sb16.c                          |  5 ++-
 hw/audio/wm8750.c                        |  1 +
 hw/block/dataplane/virtio-blk.c          |  1 +
 hw/block/dataplane/xen-block.c           |  2 +-
 hw/block/ecc.c                           |  2 +-
 hw/block/fdc.c                           |  5 ++-
 hw/block/m25p80.c                        |  3 +-
 hw/block/nand.c                          |  3 +-
 hw/block/nvme.c                          |  3 +-
 hw/block/onenand.c                       |  2 +
 hw/block/pflash_cfi01.c                  |  5 ++-
 hw/block/pflash_cfi02.c                  |  3 +-
 hw/block/tc58128.c                       |  1 -
 hw/block/vhost-user-blk.c                |  3 ++
 hw/block/virtio-blk.c                    |  4 ++
 hw/block/xen-block.c                     |  3 +-
 hw/char/bcm2835_aux.c                    |  3 ++
 hw/char/cadence_uart.c                   |  2 +
 hw/char/cmsdk-apb-uart.c                 |  2 +
 hw/char/debugcon.c                       |  2 +-
 hw/char/digic-uart.c                     |  3 +-
 hw/char/escc.c                           |  4 +-
 hw/char/etraxfs_ser.c                    |  2 +
 hw/char/exynos4210_uart.c                |  4 +-
 hw/char/grlib_apbuart.c                  |  2 +
 hw/char/imx_serial.c                     |  4 +-
 hw/char/ipoctal232.c                     |  3 ++
 hw/char/lm32_juart.c                     |  3 +-
 hw/char/lm32_uart.c                      |  4 +-
 hw/char/mcf_uart.c                       |  3 +-
 hw/char/milkymist-uart.c                 |  4 +-
 hw/char/nrf51_uart.c                     |  3 ++
 hw/char/omap_uart.c                      |  1 -
 hw/char/parallel-isa.c                   |  2 +
 hw/char/parallel.c                       |  5 ++-
 hw/char/pl011.c                          |  2 +
 hw/char/sclpconsole-lm.c                 |  3 +-
 hw/char/sclpconsole.c                    |  3 +-
 hw/char/serial-isa.c                     |  3 ++
 hw/char/serial-pci-multi.c               |  3 ++
 hw/char/serial-pci.c                     |  3 ++
 hw/char/serial.c                         |  4 ++
 hw/char/sh_serial.c                      |  3 +-
 hw/char/spapr_vty.c                      |  4 +-
 hw/char/stm32f2xx_usart.c                |  2 +
 hw/char/terminal3270.c                   |  1 +
 hw/char/virtio-console.c                 |  1 +
 hw/char/virtio-serial-bus.c              |  3 ++
 hw/char/xen_console.c                    |  2 +-
 hw/char/xilinx_uartlite.c                |  3 ++
 hw/core/bus.c                            |  2 +-
 hw/core/empty_slot.c                     |  1 -
 hw/core/generic-loader.c                 |  2 +
 hw/core/loader-fit.c                     |  1 -
 hw/core/loader.c                         |  2 +
 hw/core/machine-qmp-cmds.c               |  2 +
 hw/core/null-machine.c                   |  1 -
 hw/core/numa.c                           |  5 +++
 hw/core/or-irq.c                         |  3 ++
 hw/core/platform-bus.c                   |  2 +-
 hw/core/ptimer.c                         |  3 +-
 hw/core/qdev-fw.c                        |  2 +-
 hw/core/qdev-properties-system.c         |  2 +-
 hw/core/qdev-properties.c                |  4 +-
 hw/core/qdev.c                           |  5 ++-
 hw/core/register.c                       |  1 -
 hw/core/split-irq.c                      |  2 +
 hw/core/vm-change-state-handler.c        |  3 +-
 hw/cpu/a15mpcore.c                       |  2 +
 hw/cpu/a9mpcore.c                        |  2 +
 hw/cpu/arm11mpcore.c                     |  2 +
 hw/cpu/cluster.c                         |  1 +
 hw/cpu/realview_mpcore.c                 |  2 +
 hw/cris/boot.c                           |  2 +-
 hw/display/ads7846.c                     |  2 +
 hw/display/ati.c                         |  2 +-
 hw/display/bcm2835_fb.c                  |  4 ++
 hw/display/bochs-display.c               |  3 +-
 hw/display/cg3.c                         |  3 ++
 hw/display/cirrus_vga.c                  |  4 +-
 hw/display/cirrus_vga_isa.c              |  2 +-
 hw/display/dpcd.c                        |  1 +
 hw/display/edid-region.c                 |  1 +
 hw/display/exynos4210_fimd.c             |  3 ++
 hw/display/framebuffer.c                 |  1 -
 hw/display/g364fb.c                      |  3 ++
 hw/display/i2c-ddc.c                     |  2 +
 hw/display/jazz_led.c                    |  1 +
 hw/display/milkymist-tmu2.c              |  3 +-
 hw/display/milkymist-vgafb.c             |  2 +
 hw/display/omap_dss.c                    |  2 +
 hw/display/omap_lcdc.c                   |  3 +-
 hw/display/pl110.c                       |  2 +
 hw/display/pxa2xx_lcd.c                  |  2 +
 hw/display/qxl-render.c                  |  1 +
 hw/display/qxl.c                         |  5 ++-
 hw/display/ramfb-standalone.c            |  2 +-
 hw/display/ramfb.c                       |  3 +-
 hw/display/sii9022.c                     |  1 +
 hw/display/sm501.c                       |  3 +-
 hw/display/ssd0303.c                     |  1 +
 hw/display/ssd0323.c                     |  1 +
 hw/display/tc6393xb.c                    |  4 +-
 hw/display/tcx.c                         |  2 +
 hw/display/vga-isa-mm.c                  |  4 +-
 hw/display/vga-isa.c                     |  2 +-
 hw/display/vga-pci.c                     |  3 +-
 hw/display/vga.c                         |  4 +-
 hw/display/vhost-user-gpu.c              |  1 +
 hw/display/virtio-gpu-pci.c              |  1 +
 hw/display/virtio-gpu.c                  |  3 ++
 hw/display/virtio-vga.c                  |  2 +-
 hw/display/vmware_vga.c                  |  3 +-
 hw/display/xenfb.c                       |  1 -
 hw/display/xlnx_dp.c                     |  2 +
 hw/dma/bcm2835_dma.c                     |  2 +
 hw/dma/etraxfs_dma.c                     |  5 ++-
 hw/dma/i82374.c                          |  2 +
 hw/dma/i8257.c                           |  3 +-
 hw/dma/pl080.c                           |  4 ++
 hw/dma/pl330.c                           |  3 ++
 hw/dma/puv3_dma.c                        |  1 -
 hw/dma/pxa2xx_dma.c                      |  3 ++
 hw/dma/rc4030.c                          |  3 +-
 hw/dma/sparc32_dma.c                     |  4 +-
 hw/dma/xilinx_axidma.c                   |  3 ++
 hw/dma/xlnx-zdma.c                       |  3 ++
 hw/dma/xlnx-zynq-devcfg.c                |  3 +-
 hw/dma/xlnx_dpdma.c                      |  2 +
 hw/gpio/bcm2835_gpio.c                   |  2 +
 hw/gpio/gpio_key.c                       |  2 +
 hw/gpio/imx_gpio.c                       |  3 ++
 hw/gpio/max7310.c                        |  4 ++
 hw/gpio/mpc8xxx.c                        |  2 +
 hw/gpio/nrf51_gpio.c                     |  2 +
 hw/gpio/omap_gpio.c                      |  3 +-
 hw/gpio/pl061.c                          |  2 +
 hw/gpio/puv3_gpio.c                      |  1 -
 hw/gpio/zaurus.c                         |  3 +-
 hw/hppa/dino.c                           |  4 +-
 hw/hppa/machine.c                        |  2 +-
 hw/hppa/pci.c                            |  1 -
 hw/hyperv/hyperv_testdev.c               |  1 -
 hw/i2c/aspeed_i2c.c                      |  2 +
 hw/i2c/bitbang_i2c.c                     |  2 +-
 hw/i2c/core.c                            |  2 +
 hw/i2c/exynos4210_i2c.c                  |  2 +
 hw/i2c/imx_i2c.c                         |  2 +
 hw/i2c/microbit_i2c.c                    |  1 +
 hw/i2c/mpc_i2c.c                         |  2 +
 hw/i2c/omap_i2c.c                        |  3 +-
 hw/i2c/pm_smbus.c                        |  3 +-
 hw/i2c/ppc4xx_i2c.c                      |  2 +-
 hw/i2c/smbus_eeprom.c                    |  3 +-
 hw/i2c/smbus_ich9.c                      |  3 +-
 hw/i2c/smbus_master.c                    |  1 -
 hw/i2c/smbus_slave.c                     |  2 +-
 hw/i386/acpi-build.c                     |  2 +
 hw/i386/amd_iommu.c                      |  2 +
 hw/i386/intel_iommu.c                    |  3 ++
 hw/i386/kvm/clock.c                      |  4 +-
 hw/i386/kvm/i8254.c                      |  3 +-
 hw/i386/kvm/i8259.c                      |  1 +
 hw/i386/kvm/ioapic.c                     |  2 +
 hw/i386/kvmvapic.c                       |  2 +
 hw/i386/multiboot.c                      |  1 -
 hw/i386/pc.c                             |  5 ++-
 hw/i386/pc_piix.c                        |  3 +-
 hw/i386/pc_q35.c                         |  3 +-
 hw/i386/pc_sysfw.c                       |  3 +-
 hw/i386/vmmouse.c                        |  5 ++-
 hw/i386/vmport.c                         |  2 -
 hw/i386/x86-iommu.c                      |  1 +
 hw/i386/xen/xen-hvm.c                    |  5 +++
 hw/i386/xen/xen-mapcache.c               |  1 +
 hw/i386/xen/xen_platform.c               |  2 +-
 hw/i386/xen/xen_pvdevice.c               |  3 +-
 hw/ide/ahci-allwinner.c                  |  2 +-
 hw/ide/ahci.c                            |  4 +-
 hw/ide/cmd646.c                          |  5 ++-
 hw/ide/core.c                            |  5 ++-
 hw/ide/ich.c                             |  2 +-
 hw/ide/ioport.c                          |  2 -
 hw/ide/isa.c                             |  3 +-
 hw/ide/macio.c                           |  3 +-
 hw/ide/microdrive.c                      |  2 +-
 hw/ide/mmio.c                            |  3 +-
 hw/ide/pci.c                             |  2 +-
 hw/ide/piix.c                            |  4 +-
 hw/ide/qdev.c                            |  5 ++-
 hw/ide/sii3112.c                         |  1 +
 hw/ide/via.c                             |  4 +-
 hw/input/adb-kbd.c                       |  2 +-
 hw/input/adb-mouse.c                     |  1 +
 hw/input/adb.c                           |  2 +
 hw/input/hid.c                           |  3 +-
 hw/input/lm832x.c                        |  4 +-
 hw/input/milkymist-softusb.c             |  4 +-
 hw/input/pckbd.c                         |  7 +++-
 hw/input/pl050.c                         |  2 +
 hw/input/ps2.c                           |  6 ++-
 hw/input/pxa2xx_keypad.c                 |  2 +
 hw/input/stellaris_input.c               |  4 +-
 hw/input/tsc2005.c                       |  4 +-
 hw/input/tsc210x.c                       |  3 ++
 hw/input/vhost-user-input.c              |  1 -
 hw/input/virtio-input-hid.c              |  2 +-
 hw/input/virtio-input-host.c             |  2 +-
 hw/input/virtio-input.c                  |  2 +-
 hw/intc/allwinner-a10-pic.c              |  3 +-
 hw/intc/apic_common.c                    |  4 +-
 hw/intc/arm_gic.c                        |  1 +
 hw/intc/arm_gic_common.c                 |  2 +
 hw/intc/arm_gicv2m.c                     |  2 +
 hw/intc/arm_gicv3_common.c               |  2 +
 hw/intc/arm_gicv3_cpuif.c                |  1 +
 hw/intc/arm_gicv3_its_common.c           |  1 +
 hw/intc/arm_gicv3_its_kvm.c              |  3 +-
 hw/intc/arm_gicv3_kvm.c                  |  2 +-
 hw/intc/armv7m_nvic.c                    |  3 ++
 hw/intc/aspeed_vic.c                     |  2 +
 hw/intc/bcm2835_ic.c                     |  2 +
 hw/intc/bcm2836_control.c                |  2 +
 hw/intc/etraxfs_pic.c                    |  3 +-
 hw/intc/exynos4210_combiner.c            |  4 ++
 hw/intc/exynos4210_gic.c                 |  2 +
 hw/intc/grlib_irqmp.c                    |  1 +
 hw/intc/heathrow_pic.c                   |  3 +-
 hw/intc/i8259.c                          |  3 +-
 hw/intc/i8259_common.c                   |  3 ++
 hw/intc/imx_avic.c                       |  2 +
 hw/intc/imx_gpcv2.c                      |  1 +
 hw/intc/ioapic.c                         |  3 +-
 hw/intc/ioapic_common.c                  |  1 +
 hw/intc/lm32_pic.c                       |  3 +-
 hw/intc/mips_gic.c                       |  5 ++-
 hw/intc/nios2_iic.c                      |  1 +
 hw/intc/omap_intc.c                      |  3 +-
 hw/intc/ompic.c                          |  4 +-
 hw/intc/openpic.c                        |  4 +-
 hw/intc/openpic_kvm.c                    |  2 +-
 hw/intc/pl190.c                          |  2 +
 hw/intc/pnv_xive.c                       |  2 +
 hw/intc/puv3_intc.c                      |  1 +
 hw/intc/realview_gic.c                   |  2 +
 hw/intc/s390_flic.c                      |  3 +-
 hw/intc/s390_flic_kvm.c                  |  1 +
 hw/intc/sh_intc.c                        |  2 +-
 hw/intc/slavio_intctl.c                  |  2 +
 hw/intc/spapr_xive.c                     |  3 ++
 hw/intc/spapr_xive_kvm.c                 |  1 +
 hw/intc/xics.c                           |  5 ++-
 hw/intc/xics_kvm.c                       |  1 -
 hw/intc/xics_pnv.c                       |  1 -
 hw/intc/xics_spapr.c                     |  1 -
 hw/intc/xilinx_intc.c                    |  3 +-
 hw/intc/xive.c                           |  3 ++
 hw/intc/xlnx-pmu-iomod-intc.c            |  3 ++
 hw/intc/xlnx-zynqmp-ipi.c                |  2 +
 hw/ipack/ipack.c                         |  3 ++
 hw/ipack/tpci200.c                       |  2 +
 hw/ipmi/ipmi.c                           |  4 +-
 hw/ipmi/ipmi_bmc_extern.c                |  3 +-
 hw/ipmi/ipmi_bmc_sim.c                   |  2 +
 hw/ipmi/isa_ipmi_bt.c                    |  4 +-
 hw/ipmi/isa_ipmi_kcs.c                   |  4 +-
 hw/isa/apm.c                             |  2 +-
 hw/isa/i82378.c                          |  2 +
 hw/isa/isa-superio.c                     |  1 +
 hw/isa/lpc_ich9.c                        |  6 ++-
 hw/isa/pc87312.c                         |  2 +
 hw/isa/piix4.c                           |  3 +-
 hw/isa/vt82c686.c                        |  5 ++-
 hw/lm32/lm32_boards.c                    |  3 +-
 hw/lm32/milkymist.c                      |  4 +-
 hw/m68k/an5206.c                         |  1 -
 hw/m68k/mcf5206.c                        |  3 ++
 hw/m68k/mcf5208.c                        |  3 ++
 hw/m68k/mcf_intc.c                       |  1 +
 hw/mem/memory-device.c                   |  1 -
 hw/mem/nvdimm.c                          |  2 +
 hw/mem/pc-dimm.c                         |  4 ++
 hw/microblaze/boot.c                     |  1 +
 hw/microblaze/petalogix_ml605_mmu.c      |  2 +-
 hw/microblaze/petalogix_s3adsp1800_mmu.c |  1 -
 hw/microblaze/xlnx-zynqmp-pmu.c          |  1 -
 hw/mips/addr.c                           |  1 -
 hw/mips/boston.c                         |  3 +-
 hw/mips/cps.c                            |  2 +
 hw/mips/gt64xxx_pci.c                    |  3 +-
 hw/mips/mips_fulong2e.c                  |  2 +-
 hw/mips/mips_int.c                       |  2 +-
 hw/mips/mips_jazz.c                      |  2 +-
 hw/mips/mips_malta.c                     |  4 +-
 hw/mips/mips_mipssim.c                   |  3 +-
 hw/mips/mips_r4k.c                       |  4 +-
 hw/misc/a9scu.c                          |  2 +
 hw/misc/applesmc.c                       |  2 +-
 hw/misc/arm11scu.c                       |  1 +
 hw/misc/arm_integrator_debug.c           |  1 -
 hw/misc/arm_l2x0.c                       |  2 +
 hw/misc/arm_sysctl.c                     |  6 ++-
 hw/misc/armsse-cpuid.c                   |  2 +-
 hw/misc/armsse-mhu.c                     |  3 +-
 hw/misc/aspeed_scu.c                     |  1 +
 hw/misc/aspeed_sdmc.c                    |  1 +
 hw/misc/aspeed_xdma.c                    |  2 +
 hw/misc/bcm2835_mbox.c                   |  2 +
 hw/misc/bcm2835_property.c               |  3 ++
 hw/misc/bcm2835_rng.c                    |  1 +
 hw/misc/cbus.c                           |  2 +-
 hw/misc/debugexit.c                      |  2 +-
 hw/misc/eccmemctl.c                      |  3 ++
 hw/misc/edu.c                            |  1 +
 hw/misc/exynos4210_clk.c                 |  1 +
 hw/misc/exynos4210_pmu.c                 |  3 +-
 hw/misc/exynos4210_rng.c                 |  1 +
 hw/misc/imx25_ccm.c                      |  1 +
 hw/misc/imx31_ccm.c                      |  1 +
 hw/misc/imx6_ccm.c                       |  1 +
 hw/misc/imx6_src.c                       |  3 +-
 hw/misc/imx6ul_ccm.c                     |  1 +
 hw/misc/imx7_ccm.c                       |  1 +
 hw/misc/imx7_gpr.c                       |  1 -
 hw/misc/imx7_snvs.c                      |  2 +-
 hw/misc/iotkit-secctl.c                  |  2 +
 hw/misc/iotkit-sysctl.c                  |  4 +-
 hw/misc/iotkit-sysinfo.c                 |  2 +-
 hw/misc/ivshmem.c                        |  3 +-
 hw/misc/macio/cuda.c                     |  5 ++-
 hw/misc/macio/gpio.c                     |  3 +-
 hw/misc/macio/mac_dbdma.c                |  3 +-
 hw/misc/macio/macio.c                    |  4 +-
 hw/misc/macio/pmu.c                      |  6 ++-
 hw/misc/max111x.c                        |  2 +
 hw/misc/milkymist-hpdmc.c                |  2 +-
 hw/misc/milkymist-pfpu.c                 |  3 +-
 hw/misc/mips_cmgcr.c                     |  4 +-
 hw/misc/mips_cpc.c                       |  2 +
 hw/misc/mips_itu.c                       |  1 +
 hw/misc/mos6522.c                        |  5 ++-
 hw/misc/mps2-fpgaio.c                    |  2 +
 hw/misc/mps2-scc.c                       |  2 +
 hw/misc/msf2-sysreg.c                    |  2 +
 hw/misc/mst_fpga.c                       |  3 +-
 hw/misc/nrf51_rng.c                      |  3 ++
 hw/misc/omap_clk.c                       |  2 +
 hw/misc/omap_gpmc.c                      |  3 +-
 hw/misc/omap_l4.c                        |  1 -
 hw/misc/omap_sdrc.c                      |  1 -
 hw/misc/pc-testdev.c                     |  3 +-
 hw/misc/pca9552.c                        |  2 +-
 hw/misc/pci-testdev.c                    |  2 +-
 hw/misc/puv3_pm.c                        |  1 -
 hw/misc/pvpanic.c                        |  3 +-
 hw/misc/sga.c                            |  1 -
 hw/misc/slavio_misc.c                    |  4 +-
 hw/misc/tmp105.c                         |  3 +-
 hw/misc/tmp421.c                         |  2 +-
 hw/misc/tz-mpc.c                         |  3 ++
 hw/misc/tz-msc.c                         |  3 ++
 hw/misc/tz-ppc.c                         |  3 ++
 hw/misc/unimp.c                          |  1 -
 hw/misc/vmcoreinfo.c                     |  2 +
 hw/misc/zynq-xadc.c                      |  4 +-
 hw/misc/zynq_slcr.c                      |  4 +-
 hw/moxie/moxiesim.c                      |  3 +-
 hw/net/allwinner_emac.c                  |  3 ++
 hw/net/cadence_gem.c                     |  3 ++
 hw/net/can/can_kvaser_pci.c              |  4 +-
 hw/net/can/can_mioe3680_pci.c            |  4 +-
 hw/net/can/can_pcm3680_pci.c             |  4 +-
 hw/net/can/can_sja1000.c                 |  4 +-
 hw/net/dp8393x.c                         |  3 ++
 hw/net/e1000.c                           |  3 +-
 hw/net/e1000e.c                          |  3 ++
 hw/net/e1000e_core.c                     |  3 +-
 hw/net/e1000x_common.c                   |  1 -
 hw/net/eepro100.c                        |  4 +-
 hw/net/fsl_etsec/etsec.c                 |  4 +-
 hw/net/ftgmac100.c                       |  3 ++
 hw/net/imx_fec.c                         |  3 ++
 hw/net/lan9118.c                         |  6 ++-
 hw/net/lance.c                           |  2 +
 hw/net/mcf_fec.c                         |  2 +
 hw/net/milkymist-minimac2.c              |  4 +-
 hw/net/mipsnet.c                         |  4 +-
 hw/net/ne2000-isa.c                      |  2 +-
 hw/net/ne2000-pci.c                      |  4 ++
 hw/net/ne2000.c                          |  4 +-
 hw/net/opencores_eth.c                   |  4 +-
 hw/net/pcnet-pci.c                       |  3 ++
 hw/net/pcnet.c                           |  5 ++-
 hw/net/rocker/rocker.c                   |  3 +-
 hw/net/rocker/rocker_desc.c              |  1 -
 hw/net/rtl8139.c                         |  3 +-
 hw/net/smc91c111.c                       |  3 ++
 hw/net/spapr_llan.c                      |  5 ++-
 hw/net/stellaris_enet.c                  |  3 ++
 hw/net/sungem.c                          |  2 +
 hw/net/sunhme.c                          |  3 +-
 hw/net/vhost_net.c                       |  2 +-
 hw/net/virtio-net.c                      |  3 ++
 hw/net/vmxnet3.c                         |  2 +
 hw/net/xen_nic.c                         |  1 -
 hw/net/xgmac.c                           |  3 ++
 hw/net/xilinx_axienet.c                  |  4 ++
 hw/net/xilinx_ethlite.c                  |  3 +-
 hw/nios2/10m50_devboard.c                |  2 +-
 hw/nios2/boot.c                          |  1 +
 hw/nios2/cpu_pic.c                       |  1 +
 hw/nios2/generic_nommu.c                 |  2 -
 hw/nvram/chrp_nvram.c                    |  1 -
 hw/nvram/ds1225y.c                       |  2 +
 hw/nvram/eeprom93xx.c                    |  3 +-
 hw/nvram/eeprom_at24c.c                  |  2 +-
 hw/nvram/fw_cfg.c                        |  5 ++-
 hw/nvram/mac_nvram.c                     |  3 +-
 hw/nvram/nrf51_nvm.c                     |  2 +
 hw/nvram/spapr_nvram.c                   |  4 ++
 hw/openrisc/cputimer.c                   |  2 +-
 hw/openrisc/openrisc_sim.c               |  4 +-
 hw/openrisc/pic_cpu.c                    |  2 +-
 hw/pci-bridge/gen_pcie_root_port.c       |  2 +
 hw/pci-bridge/i82801b11.c                |  1 +
 hw/pci-bridge/ioh3420.c                  |  1 +
 hw/pci-bridge/pci_bridge_dev.c           |  1 +
 hw/pci-bridge/pci_expander_bridge.c      |  1 +
 hw/pci-bridge/pcie_pci_bridge.c          |  1 +
 hw/pci-bridge/pcie_root_port.c           |  1 +
 hw/pci-bridge/xio3130_downstream.c       |  2 +
 hw/pci-bridge/xio3130_upstream.c         |  1 +
 hw/pci-host/bonito.c                     |  6 ++-
 hw/pci-host/designware.c                 |  3 ++
 hw/pci-host/gpex.c                       |  4 +-
 hw/pci-host/grackle.c                    |  2 +
 hw/pci-host/pam.c                        |  1 -
 hw/pci-host/piix.c                       |  8 +++-
 hw/pci-host/ppce500.c                    |  4 +-
 hw/pci-host/prep.c                       |  4 +-
 hw/pci-host/q35.c                        |  3 +-
 hw/pci-host/sabre.c                      |  4 +-
 hw/pci-host/uninorth.c                   |  3 +-
 hw/pci-host/versatile.c                  |  3 ++
 hw/pci-host/xilinx-pcie.c                |  2 +
 hw/pci/msix.c                            |  3 +-
 hw/pci/pci.c                             |  6 ++-
 hw/pci/pcie_aer.c                        |  1 +
 hw/pci/pcie_host.c                       |  1 -
 hw/pci/pcie_port.c                       |  1 +
 hw/pci/shpc.c                            |  1 +
 hw/pcmcia/pcmcia.c                       |  1 -
 hw/pcmcia/pxa2xx.c                       |  2 +-
 hw/ppc/e500.c                            |  5 ++-
 hw/ppc/e500plat.c                        |  1 -
 hw/ppc/mac_newworld.c                    |  3 +-
 hw/ppc/mac_oldworld.c                    |  3 +-
 hw/ppc/mpc8544_guts.c                    |  3 +-
 hw/ppc/mpc8544ds.c                       |  1 -
 hw/ppc/pnv.c                             |  5 ++-
 hw/ppc/pnv_bmc.c                         |  2 -
 hw/ppc/pnv_core.c                        |  3 +-
 hw/ppc/pnv_lpc.c                         |  2 +-
 hw/ppc/pnv_occ.c                         |  2 -
 hw/ppc/pnv_psi.c                         |  4 +-
 hw/ppc/pnv_xscom.c                       |  1 -
 hw/ppc/ppc.c                             |  7 +++-
 hw/ppc/ppc405_boards.c                   |  3 +-
 hw/ppc/ppc405_uc.c                       |  5 ++-
 hw/ppc/ppc440_bamboo.c                   |  2 +-
 hw/ppc/ppc440_pcix.c                     |  2 +-
 hw/ppc/ppc440_uc.c                       |  5 ++-
 hw/ppc/ppc4xx_devs.c                     |  4 +-
 hw/ppc/ppc4xx_pci.c                      |  4 +-
 hw/ppc/ppc_booke.c                       |  5 ++-
 hw/ppc/ppce500_spin.c                    |  1 -
 hw/ppc/prep.c                            |  4 +-
 hw/ppc/prep_systemio.c                   |  5 ++-
 hw/ppc/rs6000_mc.c                       |  2 +
 hw/ppc/sam460ex.c                        |  3 +-
 hw/ppc/spapr.c                           |  6 ++-
 hw/ppc/spapr_caps.c                      |  1 +
 hw/ppc/spapr_cpu_core.c                  |  5 ++-
 hw/ppc/spapr_drc.c                       |  3 +-
 hw/ppc/spapr_events.c                    |  5 ++-
 hw/ppc/spapr_hcall.c                     |  3 +-
 hw/ppc/spapr_iommu.c                     |  3 +-
 hw/ppc/spapr_irq.c                       |  2 +
 hw/ppc/spapr_ovec.c                      |  1 +
 hw/ppc/spapr_pci.c                       |  4 +-
 hw/ppc/spapr_rng.c                       |  3 +-
 hw/ppc/spapr_rtas.c                      |  3 +-
 hw/ppc/spapr_rtc.c                       |  1 +
 hw/ppc/spapr_vio.c                       |  5 +--
 hw/ppc/virtex_ml507.c                    |  3 +-
 hw/rdma/vmw/pvrdma_cmd.c                 |  1 -
 hw/rdma/vmw/pvrdma_main.c                |  4 +-
 hw/riscv/boot.c                          |  2 +-
 hw/riscv/riscv_hart.c                    |  2 +
 hw/riscv/sifive_clint.c                  |  1 +
 hw/riscv/sifive_e.c                      |  2 +-
 hw/riscv/sifive_gpio.c                   |  2 +
 hw/riscv/sifive_plic.c                   |  1 +
 hw/riscv/sifive_prci.c                   |  2 +
 hw/riscv/sifive_test.c                   |  2 +
 hw/riscv/sifive_u.c                      |  2 +-
 hw/riscv/sifive_uart.c                   |  2 +
 hw/riscv/spike.c                         |  2 +-
 hw/riscv/virt.c                          |  2 +-
 hw/s390x/3270-ccw.c                      |  2 +
 hw/s390x/ap-device.c                     |  1 -
 hw/s390x/ccw-device.c                    |  1 +
 hw/s390x/css-bridge.c                    |  1 +
 hw/s390x/css.c                           |  2 +-
 hw/s390x/event-facility.c                |  2 +-
 hw/s390x/ipl.c                           |  3 ++
 hw/s390x/s390-ccw.c                      |  1 +
 hw/s390x/s390-pci-bus.c                  |  1 +
 hw/s390x/s390-skeys.c                    |  1 +
 hw/s390x/s390-stattrib.c                 |  1 -
 hw/s390x/s390-virtio-ccw.c               |  3 ++
 hw/s390x/sclpcpu.c                       |  1 -
 hw/s390x/sclpquiesce.c                   |  4 +-
 hw/s390x/tod-kvm.c                       |  2 +-
 hw/s390x/tod.c                           |  1 +
 hw/s390x/vhost-vsock-ccw.c               |  1 +
 hw/s390x/virtio-ccw-9p.c                 |  1 +
 hw/s390x/virtio-ccw-balloon.c            |  1 +
 hw/s390x/virtio-ccw-blk.c                |  1 +
 hw/s390x/virtio-ccw-crypto.c             |  1 +
 hw/s390x/virtio-ccw-gpu.c                |  1 +
 hw/s390x/virtio-ccw-input.c              |  1 +
 hw/s390x/virtio-ccw-net.c                |  1 +
 hw/s390x/virtio-ccw-rng.c                |  1 +
 hw/s390x/virtio-ccw-scsi.c               |  1 +
 hw/s390x/virtio-ccw-serial.c             |  1 +
 hw/s390x/virtio-ccw.c                    |  3 +-
 hw/scsi/esp-pci.c                        |  2 +
 hw/scsi/esp.c                            |  2 +
 hw/scsi/lsi53c895a.c                     |  3 +-
 hw/scsi/megasas.c                        |  3 +-
 hw/scsi/mptconfig.c                      |  1 -
 hw/scsi/mptendian.c                      |  1 -
 hw/scsi/mptsas.c                         |  5 ++-
 hw/scsi/scsi-bus.c                       |  7 +++-
 hw/scsi/scsi-disk.c                      |  5 ++-
 hw/scsi/scsi-generic.c                   |  2 +
 hw/scsi/spapr_vscsi.c                    |  4 +-
 hw/scsi/vhost-scsi.c                     |  3 +-
 hw/scsi/vhost-user-scsi.c                |  2 +
 hw/scsi/virtio-scsi.c                    |  2 +
 hw/scsi/vmw_pvscsi.c                     |  3 ++
 hw/sd/bcm2835_sdhost.c                   |  2 +
 hw/sd/milkymist-memcard.c                |  4 +-
 hw/sd/omap_mmc.c                         |  3 +-
 hw/sd/pl181.c                            |  2 +
 hw/sd/pxa2xx_mmci.c                      |  4 +-
 hw/sd/sd.c                               |  4 +-
 hw/sd/sdhci-pci.c                        |  2 +-
 hw/sd/sdhci.c                            |  4 +-
 hw/sd/ssi-sd.c                           |  2 +
 hw/semihosting/config.c                  |  1 +
 hw/sh4/r2d.c                             |  5 ++-
 hw/sh4/sh7750.c                          |  3 +-
 hw/sh4/sh7750_regnames.c                 |  1 -
 hw/sh4/sh_pci.c                          |  1 +
 hw/sh4/shix.c                            |  1 -
 hw/smbios/smbios.c                       |  1 -
 hw/sparc/leon3.c                         |  5 ++-
 hw/sparc/sun4m.c                         |  6 +++
 hw/sparc/sun4m_iommu.c                   |  3 ++
 hw/sparc64/niagara.c                     |  3 +-
 hw/sparc64/sparc64.c                     |  1 +
 hw/sparc64/sun4u.c                       |  5 ++-
 hw/ssi/aspeed_smc.c                      |  4 +-
 hw/ssi/imx_spi.c                         |  3 +-
 hw/ssi/mss-spi.c                         |  2 +
 hw/ssi/omap_spi.c                        |  2 +
 hw/ssi/pl022.c                           |  2 +
 hw/ssi/ssi.c                             |  1 +
 hw/ssi/stm32f2xx_spi.c                   |  1 +
 hw/ssi/xilinx_spi.c                      |  4 +-
 hw/ssi/xilinx_spips.c                    |  4 +-
 hw/timer/a9gtimer.c                      |  4 ++
 hw/timer/allwinner-a10-pit.c             |  5 ++-
 hw/timer/altera_timer.c                  |  4 +-
 hw/timer/arm_mptimer.c                   |  4 ++
 hw/timer/arm_timer.c                     |  4 +-
 hw/timer/armv7m_systick.c                |  2 +
 hw/timer/aspeed_rtc.c                    |  1 +
 hw/timer/aspeed_timer.c                  |  2 +
 hw/timer/cadence_ttc.c                   |  2 +
 hw/timer/cmsdk-apb-dualtimer.c           |  3 ++
 hw/timer/cmsdk-apb-timer.c               |  2 +
 hw/timer/digic-timer.c                   |  1 +
 hw/timer/ds1338.c                        |  1 +
 hw/timer/etraxfs_timer.c                 |  5 ++-
 hw/timer/exynos4210_mct.c                |  4 ++
 hw/timer/exynos4210_pwm.c                |  2 +
 hw/timer/exynos4210_rtc.c                |  5 ++-
 hw/timer/grlib_gptimer.c                 |  2 +
 hw/timer/hpet.c                          |  3 +-
 hw/timer/i8254.c                         |  2 +-
 hw/timer/i8254_common.c                  |  3 +-
 hw/timer/imx_epit.c                      |  2 +
 hw/timer/imx_gpt.c                       |  2 +
 hw/timer/lm32_timer.c                    |  4 +-
 hw/timer/m48t59-isa.c                    |  1 +
 hw/timer/m48t59.c                        |  5 ++-
 hw/timer/mc146818rtc.c                   |  6 ++-
 hw/timer/milkymist-sysctl.c              |  7 +++-
 hw/timer/mips_gictimer.c                 |  1 -
 hw/timer/mss-timer.c                     |  3 ++
 hw/timer/nrf51_timer.c                   |  2 +
 hw/timer/omap_gptimer.c                  |  3 +-
 hw/timer/omap_synctimer.c                |  1 -
 hw/timer/pl031.c                         |  3 ++
 hw/timer/puv3_ost.c                      |  1 +
 hw/timer/pxa2xx_timer.c                  |  6 ++-
 hw/timer/sh_timer.c                      |  1 +
 hw/timer/slavio_timer.c                  |  3 ++
 hw/timer/stm32f2xx_timer.c               |  3 ++
 hw/timer/sun4v-rtc.c                     |  1 -
 hw/timer/twl92230.c                      |  4 +-
 hw/timer/xilinx_timer.c                  |  2 +
 hw/timer/xlnx-zynqmp-rtc.c               |  2 +
 hw/tpm/tpm_crb.c                         |  2 -
 hw/tpm/tpm_emulator.c                    |  2 +-
 hw/tpm/tpm_passthrough.c                 |  1 -
 hw/tpm/tpm_ppi.c                         |  1 -
 hw/tpm/tpm_tis.c                         |  3 ++
 hw/tpm/tpm_util.c                        |  2 +-
 hw/tricore/tricore_testboard.c           |  2 -
 hw/unicore32/puv3.c                      |  1 +
 hw/usb/bus.c                             |  4 +-
 hw/usb/ccid-card-emulated.c              |  1 +
 hw/usb/ccid-card-passthru.c              |  2 +
 hw/usb/dev-audio.c                       |  3 +-
 hw/usb/dev-bluetooth.c                   |  1 +
 hw/usb/dev-hid.c                         |  3 +-
 hw/usb/dev-hub.c                         |  2 +
 hw/usb/dev-mtp.c                         |  2 +
 hw/usb/dev-network.c                     |  2 +
 hw/usb/dev-serial.c                      |  2 +
 hw/usb/dev-smartcard-reader.c            |  2 +
 hw/usb/dev-storage.c                     |  2 +
 hw/usb/dev-uas.c                         |  3 ++
 hw/usb/dev-wacom.c                       |  2 +-
 hw/usb/hcd-ehci-pci.c                    |  2 +
 hw/usb/hcd-ehci-sysbus.c                 |  2 +
 hw/usb/hcd-ehci.c                        |  4 ++
 hw/usb/hcd-ohci-pci.c                    |  3 +-
 hw/usb/hcd-ohci.c                        |  4 +-
 hw/usb/hcd-uhci.c                        |  3 +-
 hw/usb/hcd-xhci-nec.c                    |  2 +-
 hw/usb/hcd-xhci.c                        |  3 +-
 hw/usb/host-libusb.c                     |  4 ++
 hw/usb/libhw.c                           |  1 -
 hw/usb/redirect.c                        |  4 ++
 hw/usb/tusb6010.c                        |  1 +
 hw/usb/xen-usb.c                         |  1 +
 hw/vfio/amd-xgbe.c                       |  1 +
 hw/vfio/ap.c                             |  4 +-
 hw/vfio/calxeda-xgmac.c                  |  1 +
 hw/vfio/ccw.c                            |  2 +
 hw/vfio/common.c                         |  2 +
 hw/vfio/pci-quirks.c                     |  2 +
 hw/vfio/pci.c                            |  5 +++
 hw/vfio/platform.c                       |  5 ++-
 hw/virtio/vhost-backend.c                |  1 +
 hw/virtio/vhost-scsi-pci.c               |  1 +
 hw/virtio/vhost-user-blk-pci.c           |  1 +
 hw/virtio/vhost-user-scsi-pci.c          |  1 +
 hw/virtio/vhost-user.c                   |  1 +
 hw/virtio/vhost-vsock-pci.c              |  1 +
 hw/virtio/vhost-vsock.c                  |  1 +
 hw/virtio/vhost.c                        |  2 +-
 hw/virtio/virtio-9p-pci.c                |  1 +
 hw/virtio/virtio-balloon-pci.c           |  1 +
 hw/virtio/virtio-balloon.c               |  1 +
 hw/virtio/virtio-blk-pci.c               |  1 +
 hw/virtio/virtio-bus.c                   |  2 -
 hw/virtio/virtio-crypto-pci.c            |  1 +
 hw/virtio/virtio-crypto.c                |  3 +-
 hw/virtio/virtio-input-pci.c             |  1 +
 hw/virtio/virtio-mmio.c                  |  3 ++
 hw/virtio/virtio-net-pci.c               |  1 +
 hw/virtio/virtio-pci.c                   |  2 +
 hw/virtio/virtio-pmem.c                  |  3 ++
 hw/virtio/virtio-rng.c                   |  4 +-
 hw/virtio/virtio-scsi-pci.c              |  1 +
 hw/virtio/virtio-serial-pci.c            |  1 +
 hw/virtio/virtio.c                       |  4 ++
 hw/watchdog/cmsdk-apb-watchdog.c         |  3 ++
 hw/watchdog/watchdog.c                   |  2 +-
 hw/watchdog/wdt_aspeed.c                 |  2 +
 hw/watchdog/wdt_diag288.c                |  2 +
 hw/watchdog/wdt_i6300esb.c               |  2 +-
 hw/watchdog/wdt_ib700.c                  |  2 +-
 hw/xen/xen-bus-helper.c                  |  1 -
 hw/xen/xen-bus.c                         |  2 +-
 hw/xen/xen-common.c                      |  1 +
 hw/xen/xen-legacy-backend.c              |  3 +-
 hw/xen/xen_devconfig.c                   |  1 +
 hw/xen/xen_pt.c                          |  1 +
 hw/xen/xen_pt_load_rom.c                 |  2 -
 hw/xen/xen_pvdev.c                       |  1 +
 hw/xenpv/xen_machine_pv.c                |  2 +-
 hw/xtensa/mx_pic.c                       |  2 +-
 hw/xtensa/pic_cpu.c                      |  2 +-
 hw/xtensa/sim.c                          |  1 +
 hw/xtensa/xtensa_memory.c                |  2 -
 hw/xtensa/xtfpga.c                       |  4 ++
 linux-user/elfload.c                     |  1 +
 linux-user/main.c                        |  1 +
 linux-user/syscall.c                     |  1 +
 memory.c                                 |  5 ++-
 migration/block-dirty-bitmap.c           |  2 +-
 migration/block.c                        |  1 +
 migration/colo.c                         |  3 ++
 migration/global_state.c                 |  1 +
 migration/migration.c                    |  4 ++
 migration/postcopy-ram.c                 |  1 +
 migration/qemu-file-channel.c            |  1 -
 migration/rdma.c                         |  1 +
 migration/savevm.c                       |  4 ++
 migration/vmstate-types.c                |  1 -
 monitor/hmp-cmds.c                       |  2 +-
 monitor/hmp.c                            |  2 +-
 monitor/misc.c                           |  2 +-
 monitor/monitor.c                        |  1 +
 monitor/qmp-cmds.c                       |  2 +-
 nbd/client.c                             |  1 +
 nbd/server.c                             |  1 +
 net/can/can_socketcan.c                  |  1 +
 net/net.c                                |  4 +-
 net/netmap.c                             |  1 +
 net/tap-bsd.c                            |  1 -
 net/tap-linux.c                          |  1 -
 net/tap-solaris.c                        |  1 -
 net/tap-win32.c                          |  2 +-
 net/tap.c                                |  1 +
 os-posix.c                               |  2 +-
 os-win32.c                               |  2 +-
 qapi/qapi-dealloc-visitor.c              |  1 -
 qapi/qmp-dispatch.c                      |  2 +-
 qdev-monitor.c                           |  2 +-
 qemu-img.c                               |  2 +-
 qom/cpu.c                                |  3 +-
 qom/object.c                             |  1 +
 qom/qom-qmp-cmds.c                       |  2 +-
 qtest.c                                  |  3 +-
 replay/replay-audio.c                    |  1 -
 replay/replay-char.c                     |  1 -
 replay/replay-internal.c                 |  3 +-
 replay/replay-net.c                      |  1 -
 replay/replay-snapshot.c                 |  1 -
 replay/replay.c                          |  2 +-
 stubs/change-state-handler.c             |  2 +-
 stubs/replay.c                           |  1 -
 stubs/runstate-check.c                   |  2 +-
 stubs/semihost.c                         |  1 +
 stubs/vm-stop.c                          |  2 +-
 target/alpha/machine.c                   |  2 -
 target/alpha/sys_helper.c                |  1 +
 target/arm/cpu64.c                       |  1 -
 target/arm/helper-a64.c                  |  2 +-
 target/arm/helper.c                      |  4 +-
 target/arm/kvm.c                         |  2 +
 target/arm/kvm32.c                       |  1 -
 target/arm/kvm64.c                       |  2 +-
 target/arm/m_helper.c                    |  3 +-
 target/arm/machine.c                     |  2 -
 target/arm/monitor.c                     |  1 -
 target/arm/psci.c                        |  4 +-
 target/cris/machine.c                    |  1 -
 target/hppa/machine.c                    |  2 -
 target/hppa/op_helper.c                  |  2 +-
 target/i386/cpu.c                        |  2 +-
 target/i386/excp_helper.c                |  2 +-
 target/i386/hax-all.c                    |  3 +-
 target/i386/helper.c                     |  2 +-
 target/i386/hvf/hvf.c                    |  4 +-
 target/i386/hvf/x86_task.c               |  2 -
 target/i386/kvm.c                        |  3 ++
 target/i386/machine.c                    |  2 -
 target/i386/monitor.c                    |  1 +
 target/i386/sev.c                        |  1 +
 target/i386/whpx-all.c                   |  4 +-
 target/lm32/helper.c                     |  1 -
 target/lm32/machine.c                    |  2 -
 target/lm32/op_helper.c                  |  3 +-
 target/m68k/m68k-semi.c                  |  1 -
 target/mips/cp0_timer.c                  |  1 +
 target/mips/kvm.c                        |  3 +-
 target/mips/machine.c                    |  1 -
 target/moxie/machine.c                   |  2 -
 target/nios2/nios2-semi.c                |  1 -
 target/openrisc/machine.c                |  2 -
 target/ppc/int_helper.c                  |  2 +
 target/ppc/kvm.c                         |  4 +-
 target/ppc/machine.c                     |  3 +-
 target/ppc/mem_helper.c                  |  2 +
 target/ppc/misc_helper.c                 |  2 +
 target/ppc/mmu_helper.c                  |  2 +
 target/ppc/translate.c                   |  1 +
 target/s390x/cpu.c                       |  2 +-
 target/s390x/helper.c                    |  2 +-
 target/s390x/kvm.c                       |  3 +-
 target/s390x/machine.c                   |  2 +-
 target/s390x/mmu_helper.c                |  1 +
 target/s390x/sigp.c                      |  2 +-
 target/sh4/helper.c                      |  3 +-
 target/sparc/helper.c                    |  1 -
 target/sparc/int32_helper.c              |  2 +-
 target/sparc/machine.c                   |  2 -
 target/tilegx/cpu.c                      |  1 -
 target/xtensa/translate.c                |  1 -
 target/xtensa/xtensa-semi.c              |  1 -
 tcg/optimize.c                           |  1 -
 tcg/tcg-common.c                         |  1 -
 tcg/tcg-op-gvec.c                        |  1 +
 tcg/tcg.c                                |  1 -
 tests/migration-test.c                   |  1 -
 tests/test-bdrv-drain.c                  |  1 +
 tests/test-bdrv-graph-mod.c              |  1 +
 tests/test-block-backend.c               |  1 +
 tests/test-block-iothread.c              |  1 +
 tests/test-image-locking.c               |  1 +
 tests/test-qdev-global-props.c           |  2 +-
 tests/test-replication.c                 |  1 +
 tests/test-throttle.c                    |  1 +
 trace/qmp.c                              |  2 +-
 ui/gtk.c                                 |  1 +
 ui/input-keymap.c                        |  1 -
 ui/input-legacy.c                        |  1 -
 ui/input-linux.c                         |  2 +-
 ui/input.c                               |  1 +
 ui/kbd-state.c                           |  1 -
 ui/keymaps.c                             |  1 -
 ui/sdl2-2d.c                             |  1 -
 ui/sdl2-gl.c                             |  1 -
 ui/sdl2-input.c                          |  1 -
 ui/sdl2.c                                |  1 +
 ui/spice-core.c                          |  4 +-
 ui/spice-display.c                       |  2 +-
 ui/vnc.c                                 |  2 +
 util/fifo8.c                             |  1 +
 util/oslib-posix.c                       |  1 +
 util/qemu-timer.c                        |  1 -
 util/vfio-helpers.c                      |  1 -
 vl.c                                     | 11 +++---
 MAINTAINERS                              |  4 ++
 hw/tpm/trace-events                      |  4 +-
 qapi/Makefile.objs                       |  2 +-
 scripts/tracetool/format/c.py            |  1 +
 scripts/tracetool/format/h.py            |  7 +++-
 scripts/tracetool/format/log_stap.py     |  3 --
 ui/cocoa.m                               |  1 +
 1278 files changed, 2186 insertions(+), 1024 deletions(-)
 create mode 100644 qapi/error.json
 delete mode 100644 include/hw/qdev.h
 create mode 100644 include/sysemu/runstate.h
 create mode 100644 trace/control-vcpu.h

-- 
2.21.0



^ permalink raw reply	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PULL 01/29] include: Make headers more self-contained
  2019-08-13 15:46 [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13 Markus Armbruster
@ 2019-08-13 15:46 ` Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 02/29] Include generated QAPI headers less Markus Armbruster
                   ` (28 subsequent siblings)
  29 siblings, 0 replies; 34+ messages in thread
From: Markus Armbruster @ 2019-08-13 15:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Philippe Mathieu-Daudé, Alistair Francis

Back in 2016, we discussed[1] rules for headers, and these were
generally liked:

1. Have a carefully curated header that's included everywhere first.  We
   got that already thanks to Peter: osdep.h.

2. Headers should normally include everything they need beyond osdep.h.
   If exceptions are needed for some reason, they must be documented in
   the header.  If all that's needed from a header is typedefs, put
   those into qemu/typedefs.h instead of including the header.

3. Cyclic inclusion is forbidden.

This patch gets include/ closer to obeying 2.

It's actually extracted from my "[RFC] Baby steps towards saner
headers" series[2], which demonstrates a possible path towards
checking 2 automatically.  It passes the RFC test there.

[1] Message-ID: <87h9g8j57d.fsf@blackfin.pond.sub.org>
    https://lists.nongnu.org/archive/html/qemu-devel/2016-03/msg03345.html
[2] Message-Id: <20190711122827.18970-1-armbru@redhat.com>
    https://lists.nongnu.org/archive/html/qemu-devel/2019-07/msg02715.html

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Message-Id: <20190812052359.30071-2-armbru@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 include/block/raw-aio.h               | 2 ++
 include/block/write-threshold.h       | 2 ++
 include/disas/disas.h                 | 1 +
 include/exec/cputlb.h                 | 3 +++
 include/exec/exec-all.h               | 1 +
 include/exec/ioport.h                 | 2 ++
 include/exec/memory-internal.h        | 2 ++
 include/exec/ram_addr.h               | 1 +
 include/exec/softmmu-semi.h           | 2 ++
 include/exec/tb-hash.h                | 2 ++
 include/exec/user/thunk.h             | 2 ++
 include/fpu/softfloat-macros.h        | 2 ++
 include/hw/acpi/pci.h                 | 3 +++
 include/hw/acpi/tco.h                 | 3 +++
 include/hw/adc/stm32f2xx_adc.h        | 2 ++
 include/hw/arm/allwinner-a10.h        | 1 +
 include/hw/arm/aspeed_soc.h           | 1 +
 include/hw/arm/bcm2836.h              | 1 +
 include/hw/arm/exynos4210.h           | 3 +--
 include/hw/arm/fsl-imx25.h            | 1 +
 include/hw/arm/fsl-imx31.h            | 1 +
 include/hw/arm/sharpsl.h              | 3 +++
 include/hw/arm/xlnx-zynqmp.h          | 1 +
 include/hw/block/fdc.h                | 2 ++
 include/hw/block/flash.h              | 1 +
 include/hw/char/escc.h                | 1 +
 include/hw/char/xilinx_uartlite.h     | 2 ++
 include/hw/core/generic-loader.h      | 1 +
 include/hw/cris/etraxfs.h             | 1 +
 include/hw/cris/etraxfs_dma.h         | 3 +++
 include/hw/display/i2c-ddc.h          | 1 +
 include/hw/empty_slot.h               | 2 ++
 include/hw/gpio/bcm2835_gpio.h        | 1 +
 include/hw/i2c/aspeed_i2c.h           | 2 ++
 include/hw/i386/apic_internal.h       | 1 +
 include/hw/i386/ioapic_internal.h     | 1 +
 include/hw/intc/allwinner-a10-pic.h   | 2 ++
 include/hw/intc/heathrow_pic.h        | 2 ++
 include/hw/intc/mips_gic.h            | 1 +
 include/hw/isa/vt82c686.h             | 2 ++
 include/hw/mips/cps.h                 | 1 +
 include/hw/misc/macio/cuda.h          | 2 ++
 include/hw/misc/macio/gpio.h          | 3 +++
 include/hw/misc/macio/macio.h         | 2 ++
 include/hw/misc/macio/pmu.h           | 3 +++
 include/hw/misc/mips_cmgcr.h          | 2 ++
 include/hw/misc/mips_cpc.h            | 2 ++
 include/hw/misc/pvpanic.h             | 3 +++
 include/hw/net/allwinner_emac.h       | 1 +
 include/hw/net/lance.h                | 1 +
 include/hw/nvram/chrp_nvram.h         | 2 ++
 include/hw/pci-host/sabre.h           | 2 ++
 include/hw/pci-host/uninorth.h        | 2 +-
 include/hw/pci/pcie_aer.h             | 1 +
 include/hw/ppc/pnv_core.h             | 1 +
 include/hw/ppc/ppc4xx.h               | 4 ++++
 include/hw/ppc/spapr_irq.h            | 3 +++
 include/hw/ppc/spapr_vio.h            | 1 +
 include/hw/ppc/spapr_xive.h           | 2 ++
 include/hw/ppc/xive_regs.h            | 3 +++
 include/hw/riscv/boot.h               | 2 ++
 include/hw/riscv/riscv_hart.h         | 3 +++
 include/hw/riscv/sifive_clint.h       | 2 ++
 include/hw/riscv/sifive_e.h           | 1 +
 include/hw/riscv/sifive_plic.h        | 2 +-
 include/hw/riscv/sifive_prci.h        | 2 ++
 include/hw/riscv/sifive_test.h        | 2 ++
 include/hw/riscv/sifive_u.h           | 1 +
 include/hw/riscv/sifive_uart.h        | 3 +++
 include/hw/riscv/spike.h              | 3 +++
 include/hw/riscv/virt.h               | 3 +++
 include/hw/s390x/ap-device.h          | 3 +++
 include/hw/s390x/css-bridge.h         | 3 ++-
 include/hw/s390x/css.h                | 1 +
 include/hw/s390x/tod.h                | 2 +-
 include/hw/semihosting/console.h      | 2 ++
 include/hw/sh4/sh_intc.h              | 1 +
 include/hw/sparc/sparc64.h            | 2 ++
 include/hw/ssi/aspeed_smc.h           | 1 +
 include/hw/ssi/xilinx_spips.h         | 1 +
 include/hw/timer/allwinner-a10-pit.h  | 1 +
 include/hw/timer/i8254_internal.h     | 1 +
 include/hw/timer/m48t59.h             | 2 ++
 include/hw/timer/mc146818rtc_regs.h   | 2 ++
 include/hw/timer/xlnx-zynqmp-rtc.h    | 1 +
 include/hw/virtio/virtio-access.h     | 1 +
 include/hw/virtio/virtio-gpu-bswap.h  | 1 +
 include/hw/virtio/virtio-rng.h        | 1 +
 include/hw/watchdog/wdt_aspeed.h      | 1 +
 include/libdecnumber/decNumberLocal.h | 1 +
 include/migration/cpu.h               | 3 +++
 include/monitor/hmp-target.h          | 2 ++
 include/qemu/atomic128.h              | 2 ++
 include/qemu/ratelimit.h              | 2 ++
 include/qemu/thread-win32.h           | 2 +-
 include/sysemu/balloon.h              | 1 +
 include/sysemu/cryptodev-vhost-user.h | 3 +++
 include/sysemu/hvf.h                  | 1 +
 include/sysemu/iothread.h             | 1 +
 include/sysemu/kvm_int.h              | 2 ++
 include/sysemu/memory_mapping.h       | 2 ++
 include/sysemu/xen-mapcache.h         | 2 ++
 include/ui/egl-helpers.h              | 3 +++
 include/ui/input.h                    | 1 +
 include/ui/spice-display.h            | 1 +
 target/hppa/cpu.h                     | 2 +-
 106 files changed, 183 insertions(+), 8 deletions(-)

diff --git a/include/block/raw-aio.h b/include/block/raw-aio.h
index 0cb7cc74a2..4629f24d08 100644
--- a/include/block/raw-aio.h
+++ b/include/block/raw-aio.h
@@ -12,9 +12,11 @@
  * Contributions after 2012-01-13 are licensed under the terms of the
  * GNU GPL, version 2 or (at your option) any later version.
  */
+
 #ifndef QEMU_RAW_AIO_H
 #define QEMU_RAW_AIO_H
 
+#include "block/aio.h"
 #include "qemu/coroutine.h"
 #include "qemu/iov.h"
 
diff --git a/include/block/write-threshold.h b/include/block/write-threshold.h
index 80d8aab5d0..c646f267a4 100644
--- a/include/block/write-threshold.h
+++ b/include/block/write-threshold.h
@@ -9,9 +9,11 @@
  * This work is licensed under the terms of the GNU LGPL, version 2 or later.
  * See the COPYING.LIB file in the top-level directory.
  */
+
 #ifndef BLOCK_WRITE_THRESHOLD_H
 #define BLOCK_WRITE_THRESHOLD_H
 
+#include "block/block_int.h"
 
 /*
  * bdrv_write_threshold_set:
diff --git a/include/disas/disas.h b/include/disas/disas.h
index 15da511f49..ba47e9197c 100644
--- a/include/disas/disas.h
+++ b/include/disas/disas.h
@@ -1,6 +1,7 @@
 #ifndef QEMU_DISAS_H
 #define QEMU_DISAS_H
 
+#include "exec/hwaddr.h"
 
 #ifdef NEED_CPU_H
 #include "cpu.h"
diff --git a/include/exec/cputlb.h b/include/exec/cputlb.h
index 5373188be3..a62cfb28d5 100644
--- a/include/exec/cputlb.h
+++ b/include/exec/cputlb.h
@@ -16,9 +16,12 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
 #ifndef CPUTLB_H
 #define CPUTLB_H
 
+#include "exec/cpu-common.h"
+
 #if !defined(CONFIG_USER_ONLY)
 /* cputlb.c */
 void tlb_protect_code(ram_addr_t ram_addr);
diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h
index 16034ee651..135aeaab0d 100644
--- a/include/exec/exec-all.h
+++ b/include/exec/exec-all.h
@@ -20,6 +20,7 @@
 #ifndef EXEC_ALL_H
 #define EXEC_ALL_H
 
+#include "cpu.h"
 #include "exec/tb-context.h"
 #include "sysemu/cpus.h"
 
diff --git a/include/exec/ioport.h b/include/exec/ioport.h
index a298b89ce1..97feb296d2 100644
--- a/include/exec/ioport.h
+++ b/include/exec/ioport.h
@@ -24,6 +24,8 @@
 #ifndef IOPORT_H
 #define IOPORT_H
 
+#include "exec/memory.h"
+
 #define MAX_IOPORTS     (64 * 1024)
 #define IOPORTS_MASK    (MAX_IOPORTS - 1)
 
diff --git a/include/exec/memory-internal.h b/include/exec/memory-internal.h
index d1a9dd1ec8..ef4fb92371 100644
--- a/include/exec/memory-internal.h
+++ b/include/exec/memory-internal.h
@@ -20,6 +20,8 @@
 #ifndef MEMORY_INTERNAL_H
 #define MEMORY_INTERNAL_H
 
+#include "cpu.h"
+
 #ifndef CONFIG_USER_ONLY
 static inline AddressSpaceDispatch *flatview_to_dispatch(FlatView *fv)
 {
diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h
index b7b2e60ff6..a327a80cfe 100644
--- a/include/exec/ram_addr.h
+++ b/include/exec/ram_addr.h
@@ -20,6 +20,7 @@
 #define RAM_ADDR_H
 
 #ifndef CONFIG_USER_ONLY
+#include "cpu.h"
 #include "hw/xen/xen.h"
 #include "sysemu/tcg.h"
 #include "exec/ramlist.h"
diff --git a/include/exec/softmmu-semi.h b/include/exec/softmmu-semi.h
index 970837992e..fbcae88f4b 100644
--- a/include/exec/softmmu-semi.h
+++ b/include/exec/softmmu-semi.h
@@ -10,6 +10,8 @@
 #ifndef SOFTMMU_SEMI_H
 #define SOFTMMU_SEMI_H
 
+#include "cpu.h"
+
 static inline uint64_t softmmu_tget64(CPUArchState *env, target_ulong addr)
 {
     uint64_t val;
diff --git a/include/exec/tb-hash.h b/include/exec/tb-hash.h
index 4f3a37d927..805235d321 100644
--- a/include/exec/tb-hash.h
+++ b/include/exec/tb-hash.h
@@ -20,6 +20,8 @@
 #ifndef EXEC_TB_HASH_H
 #define EXEC_TB_HASH_H
 
+#include "exec/cpu-defs.h"
+#include "exec/exec-all.h"
 #include "qemu/xxhash.h"
 
 #ifdef CONFIG_SOFTMMU
diff --git a/include/exec/user/thunk.h b/include/exec/user/thunk.h
index 8d3af5a3be..eae2c27f99 100644
--- a/include/exec/user/thunk.h
+++ b/include/exec/user/thunk.h
@@ -16,10 +16,12 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
+
 #ifndef THUNK_H
 #define THUNK_H
 
 #include "cpu.h"
+#include "exec/user/abitypes.h"
 
 /* types enums definitions */
 
diff --git a/include/fpu/softfloat-macros.h b/include/fpu/softfloat-macros.h
index c55aa6d174..be83a833ec 100644
--- a/include/fpu/softfloat-macros.h
+++ b/include/fpu/softfloat-macros.h
@@ -82,6 +82,8 @@ this code that are retained.
 #ifndef FPU_SOFTFLOAT_MACROS_H
 #define FPU_SOFTFLOAT_MACROS_H
 
+#include "fpu/softfloat.h"
+
 /*----------------------------------------------------------------------------
 | Shifts `a' right by the number of bits given in `count'.  If any nonzero
 | bits are shifted off, they are ``jammed'' into the least significant bit of
diff --git a/include/hw/acpi/pci.h b/include/hw/acpi/pci.h
index 8bbd32cf45..bf2a3ed0ba 100644
--- a/include/hw/acpi/pci.h
+++ b/include/hw/acpi/pci.h
@@ -22,9 +22,12 @@
  * You should have received a copy of the GNU General Public License along
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
+
 #ifndef HW_ACPI_PCI_H
 #define HW_ACPI_PCI_H
 
+#include "hw/acpi/bios-linker-loader.h"
+
 typedef struct AcpiMcfgInfo {
     uint64_t base;
     uint32_t size;
diff --git a/include/hw/acpi/tco.h b/include/hw/acpi/tco.h
index d19dd59353..726f840cce 100644
--- a/include/hw/acpi/tco.h
+++ b/include/hw/acpi/tco.h
@@ -6,9 +6,12 @@
  * This work is licensed under the terms of the GNU GPL, version 2 or later.
  * See the COPYING file in the top-level directory.
  */
+
 #ifndef HW_ACPI_TCO_H
 #define HW_ACPI_TCO_H
 
+#include "exec/memory.h"
+#include "migration/vmstate.h"
 
 /* As per ICH9 spec, the internal timer has an error of ~0.6s on every tick */
 #define TCO_TICK_NSEC 600000000LL
diff --git a/include/hw/adc/stm32f2xx_adc.h b/include/hw/adc/stm32f2xx_adc.h
index a72f734eb1..663b79f4f3 100644
--- a/include/hw/adc/stm32f2xx_adc.h
+++ b/include/hw/adc/stm32f2xx_adc.h
@@ -25,6 +25,8 @@
 #ifndef HW_STM32F2XX_ADC_H
 #define HW_STM32F2XX_ADC_H
 
+#include "hw/sysbus.h"
+
 #define ADC_SR    0x00
 #define ADC_CR1   0x04
 #define ADC_CR2   0x08
diff --git a/include/hw/arm/allwinner-a10.h b/include/hw/arm/allwinner-a10.h
index e99fe2ea2e..7182ce5c4b 100644
--- a/include/hw/arm/allwinner-a10.h
+++ b/include/hw/arm/allwinner-a10.h
@@ -11,6 +11,7 @@
 #include "hw/ide/ahci.h"
 
 #include "sysemu/sysemu.h"
+#include "target/arm/cpu.h"
 
 
 #define AW_A10_PIC_REG_BASE     0x01c20400
diff --git a/include/hw/arm/aspeed_soc.h b/include/hw/arm/aspeed_soc.h
index cef605ad6b..976fd6be93 100644
--- a/include/hw/arm/aspeed_soc.h
+++ b/include/hw/arm/aspeed_soc.h
@@ -22,6 +22,7 @@
 #include "hw/ssi/aspeed_smc.h"
 #include "hw/watchdog/wdt_aspeed.h"
 #include "hw/net/ftgmac100.h"
+#include "target/arm/cpu.h"
 
 #define ASPEED_SPIS_NUM  2
 #define ASPEED_WDTS_NUM  3
diff --git a/include/hw/arm/bcm2836.h b/include/hw/arm/bcm2836.h
index a2cb8454de..97187f72be 100644
--- a/include/hw/arm/bcm2836.h
+++ b/include/hw/arm/bcm2836.h
@@ -13,6 +13,7 @@
 
 #include "hw/arm/bcm2835_peripherals.h"
 #include "hw/intc/bcm2836_control.h"
+#include "target/arm/cpu.h"
 
 #define TYPE_BCM283X "bcm283x"
 #define BCM283X(obj) OBJECT_CHECK(BCM283XState, (obj), TYPE_BCM283X)
diff --git a/include/hw/arm/exynos4210.h b/include/hw/arm/exynos4210.h
index aa137271c0..f0f23b0e9b 100644
--- a/include/hw/arm/exynos4210.h
+++ b/include/hw/arm/exynos4210.h
@@ -19,13 +19,12 @@
  *
  *  You should have received a copy of the GNU General Public License along
  *  with this program; if not, see <http://www.gnu.org/licenses/>.
- *
  */
 
 #ifndef EXYNOS4210_H
 #define EXYNOS4210_H
 
-#include "exec/memory.h"
+#include "hw/sysbus.h"
 #include "target/arm/cpu-qom.h"
 
 #define EXYNOS4210_NCPUS                    2
diff --git a/include/hw/arm/fsl-imx25.h b/include/hw/arm/fsl-imx25.h
index 3280ab1fb0..241efb52ae 100644
--- a/include/hw/arm/fsl-imx25.h
+++ b/include/hw/arm/fsl-imx25.h
@@ -27,6 +27,7 @@
 #include "hw/i2c/imx_i2c.h"
 #include "hw/gpio/imx_gpio.h"
 #include "exec/memory.h"
+#include "target/arm/cpu.h"
 
 #define TYPE_FSL_IMX25 "fsl,imx25"
 #define FSL_IMX25(obj) OBJECT_CHECK(FslIMX25State, (obj), TYPE_FSL_IMX25)
diff --git a/include/hw/arm/fsl-imx31.h b/include/hw/arm/fsl-imx31.h
index e68a81efd7..ac5ca9826a 100644
--- a/include/hw/arm/fsl-imx31.h
+++ b/include/hw/arm/fsl-imx31.h
@@ -26,6 +26,7 @@
 #include "hw/i2c/imx_i2c.h"
 #include "hw/gpio/imx_gpio.h"
 #include "exec/memory.h"
+#include "target/arm/cpu.h"
 
 #define TYPE_FSL_IMX31 "fsl,imx31"
 #define FSL_IMX31(obj) OBJECT_CHECK(FslIMX31State, (obj), TYPE_FSL_IMX31)
diff --git a/include/hw/arm/sharpsl.h b/include/hw/arm/sharpsl.h
index 5bf6db1fa2..89e168fbff 100644
--- a/include/hw/arm/sharpsl.h
+++ b/include/hw/arm/sharpsl.h
@@ -3,9 +3,12 @@
  *
  * This file is licensed under the GNU GPL.
  */
+
 #ifndef QEMU_SHARPSL_H
 #define QEMU_SHARPSL_H
 
+#include "exec/hwaddr.h"
+
 #define zaurus_printf(format, ...)	\
     fprintf(stderr, "%s: " format, __func__, ##__VA_ARGS__)
 
diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h
index 35804ea80a..6cb65e7537 100644
--- a/include/hw/arm/xlnx-zynqmp.h
+++ b/include/hw/arm/xlnx-zynqmp.h
@@ -32,6 +32,7 @@
 #include "hw/intc/xlnx-zynqmp-ipi.h"
 #include "hw/timer/xlnx-zynqmp-rtc.h"
 #include "hw/cpu/cluster.h"
+#include "target/arm/cpu.h"
 
 #define TYPE_XLNX_ZYNQMP "xlnx,zynqmp"
 #define XLNX_ZYNQMP(obj) OBJECT_CHECK(XlnxZynqMPState, (obj), \
diff --git a/include/hw/block/fdc.h b/include/hw/block/fdc.h
index 8cece84326..f4fe2f471b 100644
--- a/include/hw/block/fdc.h
+++ b/include/hw/block/fdc.h
@@ -1,6 +1,8 @@
 #ifndef HW_FDC_H
 #define HW_FDC_H
 
+#include "exec/hwaddr.h"
+#include "hw/irq.h"
 #include "qapi/qapi-types-block.h"
 
 /* fdc.c */
diff --git a/include/hw/block/flash.h b/include/hw/block/flash.h
index 1acaf7de80..83a75f3170 100644
--- a/include/hw/block/flash.h
+++ b/include/hw/block/flash.h
@@ -4,6 +4,7 @@
 /* NOR flash devices */
 
 #include "exec/memory.h"
+#include "migration/vmstate.h"
 
 /* pflash_cfi01.c */
 
diff --git a/include/hw/char/escc.h b/include/hw/char/escc.h
index 42aca83611..d5196c53e6 100644
--- a/include/hw/char/escc.h
+++ b/include/hw/char/escc.h
@@ -3,6 +3,7 @@
 
 #include "chardev/char-fe.h"
 #include "chardev/char-serial.h"
+#include "hw/sysbus.h"
 #include "ui/input.h"
 
 /* escc.c */
diff --git a/include/hw/char/xilinx_uartlite.h b/include/hw/char/xilinx_uartlite.h
index 634086b657..99d8bbf405 100644
--- a/include/hw/char/xilinx_uartlite.h
+++ b/include/hw/char/xilinx_uartlite.h
@@ -15,6 +15,8 @@
 #ifndef XILINX_UARTLITE_H
 #define XILINX_UARTLITE_H
 
+#include "hw/sysbus.h"
+
 static inline DeviceState *xilinx_uartlite_create(hwaddr addr,
                                         qemu_irq irq,
                                         Chardev *chr)
diff --git a/include/hw/core/generic-loader.h b/include/hw/core/generic-loader.h
index dd27c42ab0..9ffce1c5a3 100644
--- a/include/hw/core/generic-loader.h
+++ b/include/hw/core/generic-loader.h
@@ -19,6 +19,7 @@
 #define GENERIC_LOADER_H
 
 #include "elf.h"
+#include "hw/qdev-core.h"
 
 typedef struct GenericLoaderState {
     /* <private> */
diff --git a/include/hw/cris/etraxfs.h b/include/hw/cris/etraxfs.h
index 8da965addb..494222d315 100644
--- a/include/hw/cris/etraxfs.h
+++ b/include/hw/cris/etraxfs.h
@@ -27,6 +27,7 @@
 
 #include "net/net.h"
 #include "hw/cris/etraxfs_dma.h"
+#include "hw/sysbus.h"
 
 /* Instantiate an ETRAXFS Ethernet MAC.  */
 static inline DeviceState *
diff --git a/include/hw/cris/etraxfs_dma.h b/include/hw/cris/etraxfs_dma.h
index f6f33e0980..31ae360611 100644
--- a/include/hw/cris/etraxfs_dma.h
+++ b/include/hw/cris/etraxfs_dma.h
@@ -1,6 +1,9 @@
 #ifndef HW_ETRAXFS_DMA_H
 #define HW_ETRAXFS_DMA_H
 
+#include "exec/hwaddr.h"
+#include "hw/irq.h"
+
 struct dma_context_metadata {
 	/* data descriptor md */
 	uint16_t metadata;
diff --git a/include/hw/display/i2c-ddc.h b/include/hw/display/i2c-ddc.h
index c29443c5af..1cf53a0c8d 100644
--- a/include/hw/display/i2c-ddc.h
+++ b/include/hw/display/i2c-ddc.h
@@ -20,6 +20,7 @@
 #define I2C_DDC_H
 
 #include "hw/display/edid.h"
+#include "hw/i2c/i2c.h"
 
 /* A simple I2C slave which just returns the contents of its EDID blob. */
 struct I2CDDCState {
diff --git a/include/hw/empty_slot.h b/include/hw/empty_slot.h
index 123a9f8989..cb9a221aa6 100644
--- a/include/hw/empty_slot.h
+++ b/include/hw/empty_slot.h
@@ -1,6 +1,8 @@
 #ifndef HW_EMPTY_SLOT_H
 #define HW_EMPTY_SLOT_H
 
+#include "exec/hwaddr.h"
+
 /* empty_slot.c */
 void empty_slot_init(hwaddr addr, uint64_t slot_size);
 
diff --git a/include/hw/gpio/bcm2835_gpio.h b/include/hw/gpio/bcm2835_gpio.h
index 9f8e0c720c..b0de0a3c74 100644
--- a/include/hw/gpio/bcm2835_gpio.h
+++ b/include/hw/gpio/bcm2835_gpio.h
@@ -15,6 +15,7 @@
 #define BCM2835_GPIO_H
 
 #include "hw/sd/sd.h"
+#include "hw/sysbus.h"
 
 typedef struct BCM2835GpioState {
     SysBusDevice parent_obj;
diff --git a/include/hw/i2c/aspeed_i2c.h b/include/hw/i2c/aspeed_i2c.h
index f9020acdef..a2753f0bbb 100644
--- a/include/hw/i2c/aspeed_i2c.h
+++ b/include/hw/i2c/aspeed_i2c.h
@@ -17,10 +17,12 @@
  *  with this program; if not, write to the Free Software Foundation, Inc.,
  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
+
 #ifndef ASPEED_I2C_H
 #define ASPEED_I2C_H
 
 #include "hw/i2c/i2c.h"
+#include "hw/sysbus.h"
 
 #define TYPE_ASPEED_I2C "aspeed.i2c"
 #define ASPEED_I2C(obj) \
diff --git a/include/hw/i386/apic_internal.h b/include/hw/i386/apic_internal.h
index 1209eb483a..b04bdd947f 100644
--- a/include/hw/i386/apic_internal.h
+++ b/include/hw/i386/apic_internal.h
@@ -24,6 +24,7 @@
 #include "cpu.h"
 #include "exec/memory.h"
 #include "qemu/timer.h"
+#include "target/i386/cpu-qom.h"
 
 /* APIC Local Vector Table */
 #define APIC_LVT_TIMER                  0
diff --git a/include/hw/i386/ioapic_internal.h b/include/hw/i386/ioapic_internal.h
index 07002f9662..3d2eec2aa7 100644
--- a/include/hw/i386/ioapic_internal.h
+++ b/include/hw/i386/ioapic_internal.h
@@ -24,6 +24,7 @@
 
 #include "hw/hw.h"
 #include "exec/memory.h"
+#include "hw/i386/ioapic.h"
 #include "hw/sysbus.h"
 #include "qemu/notify.h"
 
diff --git a/include/hw/intc/allwinner-a10-pic.h b/include/hw/intc/allwinner-a10-pic.h
index 1d314a70d9..a5895401d1 100644
--- a/include/hw/intc/allwinner-a10-pic.h
+++ b/include/hw/intc/allwinner-a10-pic.h
@@ -1,6 +1,8 @@
 #ifndef ALLWINNER_A10_PIC_H
 #define ALLWINNER_A10_PIC_H
 
+#include "hw/sysbus.h"
+
 #define TYPE_AW_A10_PIC  "allwinner-a10-pic"
 #define AW_A10_PIC(obj) OBJECT_CHECK(AwA10PICState, (obj), TYPE_AW_A10_PIC)
 
diff --git a/include/hw/intc/heathrow_pic.h b/include/hw/intc/heathrow_pic.h
index 6c91ec91bb..b163e27ab9 100644
--- a/include/hw/intc/heathrow_pic.h
+++ b/include/hw/intc/heathrow_pic.h
@@ -26,6 +26,8 @@
 #ifndef HW_INTC_HEATHROW_PIC_H
 #define HW_INTC_HEATHROW_PIC_H
 
+#include "hw/sysbus.h"
+
 #define TYPE_HEATHROW "heathrow"
 #define HEATHROW(obj) OBJECT_CHECK(HeathrowState, (obj), TYPE_HEATHROW)
 
diff --git a/include/hw/intc/mips_gic.h b/include/hw/intc/mips_gic.h
index 902a12b178..8428287bf9 100644
--- a/include/hw/intc/mips_gic.h
+++ b/include/hw/intc/mips_gic.h
@@ -13,6 +13,7 @@
 
 #include "qemu/units.h"
 #include "hw/timer/mips_gictimer.h"
+#include "hw/sysbus.h"
 #include "cpu.h"
 /*
  * GIC Specific definitions
diff --git a/include/hw/isa/vt82c686.h b/include/hw/isa/vt82c686.h
index c3c2b6e786..a54c3fe60a 100644
--- a/include/hw/isa/vt82c686.h
+++ b/include/hw/isa/vt82c686.h
@@ -1,6 +1,8 @@
 #ifndef HW_VT82C686_H
 #define HW_VT82C686_H
 
+#include "hw/irq.h"
+
 #define TYPE_VT82C686B_SUPERIO "vt82c686b-superio"
 
 /* vt82c686.c */
diff --git a/include/hw/mips/cps.h b/include/hw/mips/cps.h
index aab1af926d..a941c55f27 100644
--- a/include/hw/mips/cps.h
+++ b/include/hw/mips/cps.h
@@ -25,6 +25,7 @@
 #include "hw/intc/mips_gic.h"
 #include "hw/misc/mips_cpc.h"
 #include "hw/misc/mips_itu.h"
+#include "target/mips/cpu.h"
 
 #define TYPE_MIPS_CPS "mips-cps"
 #define MIPS_CPS(obj) OBJECT_CHECK(MIPSCPSState, (obj), TYPE_MIPS_CPS)
diff --git a/include/hw/misc/macio/cuda.h b/include/hw/misc/macio/cuda.h
index 7dad469142..5768075ac5 100644
--- a/include/hw/misc/macio/cuda.h
+++ b/include/hw/misc/macio/cuda.h
@@ -26,6 +26,8 @@
 #ifndef CUDA_H
 #define CUDA_H
 
+#include "hw/misc/mos6522.h"
+
 /* CUDA commands (2nd byte) */
 #define CUDA_WARM_START                0x0
 #define CUDA_AUTOPOLL                  0x1
diff --git a/include/hw/misc/macio/gpio.h b/include/hw/misc/macio/gpio.h
index 2838ae5fde..24a4364b39 100644
--- a/include/hw/misc/macio/gpio.h
+++ b/include/hw/misc/macio/gpio.h
@@ -26,6 +26,9 @@
 #ifndef MACIO_GPIO_H
 #define MACIO_GPIO_H
 
+#include "hw/ppc/openpic.h"
+#include "hw/sysbus.h"
+
 #define TYPE_MACIO_GPIO "macio-gpio"
 #define MACIO_GPIO(obj) OBJECT_CHECK(MacIOGPIOState, (obj), TYPE_MACIO_GPIO)
 
diff --git a/include/hw/misc/macio/macio.h b/include/hw/misc/macio/macio.h
index 970058b6ed..070a694eb5 100644
--- a/include/hw/misc/macio/macio.h
+++ b/include/hw/misc/macio/macio.h
@@ -27,10 +27,12 @@
 #define MACIO_H
 
 #include "hw/char/escc.h"
+#include "hw/ide/internal.h"
 #include "hw/intc/heathrow_pic.h"
 #include "hw/misc/macio/cuda.h"
 #include "hw/misc/macio/gpio.h"
 #include "hw/misc/macio/pmu.h"
+#include "hw/ppc/mac.h"
 #include "hw/ppc/mac_dbdma.h"
 #include "hw/ppc/openpic.h"
 
diff --git a/include/hw/misc/macio/pmu.h b/include/hw/misc/macio/pmu.h
index d10895ba5f..7ef83dee4c 100644
--- a/include/hw/misc/macio/pmu.h
+++ b/include/hw/misc/macio/pmu.h
@@ -10,6 +10,9 @@
 #ifndef PMU_H
 #define PMU_H
 
+#include "hw/misc/mos6522.h"
+#include "hw/misc/macio/gpio.h"
+
 /*
  * PMU commands
  */
diff --git a/include/hw/misc/mips_cmgcr.h b/include/hw/misc/mips_cmgcr.h
index c9dfcb4b84..3e6e223273 100644
--- a/include/hw/misc/mips_cmgcr.h
+++ b/include/hw/misc/mips_cmgcr.h
@@ -10,6 +10,8 @@
 #ifndef MIPS_CMGCR_H
 #define MIPS_CMGCR_H
 
+#include "hw/sysbus.h"
+
 #define TYPE_MIPS_GCR "mips-gcr"
 #define MIPS_GCR(obj) OBJECT_CHECK(MIPSGCRState, (obj), TYPE_MIPS_GCR)
 
diff --git a/include/hw/misc/mips_cpc.h b/include/hw/misc/mips_cpc.h
index 72c834e039..3f670578b0 100644
--- a/include/hw/misc/mips_cpc.h
+++ b/include/hw/misc/mips_cpc.h
@@ -20,6 +20,8 @@
 #ifndef MIPS_CPC_H
 #define MIPS_CPC_H
 
+#include "hw/sysbus.h"
+
 #define CPC_ADDRSPACE_SZ    0x6000
 
 /* CPC blocks offsets relative to base address */
diff --git a/include/hw/misc/pvpanic.h b/include/hw/misc/pvpanic.h
index 1ee071a703..ae0c8188ce 100644
--- a/include/hw/misc/pvpanic.h
+++ b/include/hw/misc/pvpanic.h
@@ -11,9 +11,12 @@
  * See the COPYING file in the top-level directory.
  *
  */
+
 #ifndef HW_MISC_PVPANIC_H
 #define HW_MISC_PVPANIC_H
 
+#include "qom/object.h"
+
 #define TYPE_PVPANIC "pvpanic"
 
 #define PVPANIC_IOPORT_PROP "ioport"
diff --git a/include/hw/net/allwinner_emac.h b/include/hw/net/allwinner_emac.h
index 905a43deb4..5013207d15 100644
--- a/include/hw/net/allwinner_emac.h
+++ b/include/hw/net/allwinner_emac.h
@@ -27,6 +27,7 @@
 #include "net/net.h"
 #include "qemu/fifo8.h"
 #include "hw/net/mii.h"
+#include "hw/sysbus.h"
 
 #define TYPE_AW_EMAC "allwinner-emac"
 #define AW_EMAC(obj) OBJECT_CHECK(AwEmacState, (obj), TYPE_AW_EMAC)
diff --git a/include/hw/net/lance.h b/include/hw/net/lance.h
index ffdd35c4d7..0357f5f65c 100644
--- a/include/hw/net/lance.h
+++ b/include/hw/net/lance.h
@@ -31,6 +31,7 @@
 
 #include "net/net.h"
 #include "hw/net/pcnet.h"
+#include "hw/sysbus.h"
 
 #define TYPE_LANCE "lance"
 #define SYSBUS_PCNET(obj) \
diff --git a/include/hw/nvram/chrp_nvram.h b/include/hw/nvram/chrp_nvram.h
index b4f5b2b104..09941a9be4 100644
--- a/include/hw/nvram/chrp_nvram.h
+++ b/include/hw/nvram/chrp_nvram.h
@@ -18,6 +18,8 @@
 #ifndef CHRP_NVRAM_H
 #define CHRP_NVRAM_H
 
+#include "qemu/bswap.h"
+
 /* OpenBIOS NVRAM partition */
 typedef struct {
     uint8_t signature;
diff --git a/include/hw/pci-host/sabre.h b/include/hw/pci-host/sabre.h
index 9afa4938fd..99b5aefbec 100644
--- a/include/hw/pci-host/sabre.h
+++ b/include/hw/pci-host/sabre.h
@@ -1,6 +1,8 @@
 #ifndef HW_PCI_HOST_SABRE_H
 #define HW_PCI_HOST_SABRE_H
 
+#include "hw/pci/pci.h"
+#include "hw/pci/pci_host.h"
 #include "hw/sparc/sun4u_iommu.h"
 
 #define MAX_IVEC 0x40
diff --git a/include/hw/pci-host/uninorth.h b/include/hw/pci-host/uninorth.h
index 060324536a..9a5cabd4c5 100644
--- a/include/hw/pci-host/uninorth.h
+++ b/include/hw/pci-host/uninorth.h
@@ -26,7 +26,7 @@
 #define UNINORTH_H
 
 #include "hw/hw.h"
-
+#include "hw/pci/pci_host.h"
 #include "hw/ppc/openpic.h"
 
 /* UniNorth version */
diff --git a/include/hw/pci/pcie_aer.h b/include/hw/pci/pcie_aer.h
index 729a9439c8..502dcd7eba 100644
--- a/include/hw/pci/pcie_aer.h
+++ b/include/hw/pci/pcie_aer.h
@@ -22,6 +22,7 @@
 #define QEMU_PCIE_AER_H
 
 #include "hw/hw.h"
+#include "hw/pci/pci_regs.h"
 
 /* definitions which PCIExpressDevice uses */
 
diff --git a/include/hw/ppc/pnv_core.h b/include/hw/ppc/pnv_core.h
index d0926454a9..bfbd2ec42a 100644
--- a/include/hw/ppc/pnv_core.h
+++ b/include/hw/ppc/pnv_core.h
@@ -21,6 +21,7 @@
 #define PPC_PNV_CORE_H
 
 #include "hw/cpu/core.h"
+#include "target/ppc/cpu.h"
 
 #define TYPE_PNV_CORE "powernv-cpu-core"
 #define PNV_CORE(obj) \
diff --git a/include/hw/ppc/ppc4xx.h b/include/hw/ppc/ppc4xx.h
index 39a7ba1ce6..90f8866138 100644
--- a/include/hw/ppc/ppc4xx.h
+++ b/include/hw/ppc/ppc4xx.h
@@ -25,6 +25,10 @@
 #ifndef PPC4XX_H
 #define PPC4XX_H
 
+#include "hw/ppc/ppc.h"
+#include "exec/cpu-common.h"
+#include "exec/memory.h"
+
 /* PowerPC 4xx core initialization */
 PowerPCCPU *ppc4xx_init(const char *cpu_model,
                         clk_setup_t *cpu_clk, clk_setup_t *tb_clk,
diff --git a/include/hw/ppc/spapr_irq.h b/include/hw/ppc/spapr_irq.h
index f965a58f89..cd6e18b05e 100644
--- a/include/hw/ppc/spapr_irq.h
+++ b/include/hw/ppc/spapr_irq.h
@@ -10,6 +10,9 @@
 #ifndef HW_SPAPR_IRQ_H
 #define HW_SPAPR_IRQ_H
 
+#include "hw/irq.h"
+#include "target/ppc/cpu-qom.h"
+
 /*
  * IRQ range offsets per device type
  */
diff --git a/include/hw/ppc/spapr_vio.h b/include/hw/ppc/spapr_vio.h
index 04609f214e..875be28cdd 100644
--- a/include/hw/ppc/spapr_vio.h
+++ b/include/hw/ppc/spapr_vio.h
@@ -22,6 +22,7 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+#include "hw/ppc/spapr.h"
 #include "sysemu/dma.h"
 
 #define TYPE_VIO_SPAPR_DEVICE "vio-spapr-device"
diff --git a/include/hw/ppc/spapr_xive.h b/include/hw/ppc/spapr_xive.h
index 7197144265..a39e672f27 100644
--- a/include/hw/ppc/spapr_xive.h
+++ b/include/hw/ppc/spapr_xive.h
@@ -10,7 +10,9 @@
 #ifndef PPC_SPAPR_XIVE_H
 #define PPC_SPAPR_XIVE_H
 
+#include "hw/ppc/spapr_irq.h"
 #include "hw/ppc/xive.h"
+#include "sysemu/sysemu.h"
 
 #define TYPE_SPAPR_XIVE "spapr-xive"
 #define SPAPR_XIVE(obj) OBJECT_CHECK(SpaprXive, (obj), TYPE_SPAPR_XIVE)
diff --git a/include/hw/ppc/xive_regs.h b/include/hw/ppc/xive_regs.h
index 1a8c5b5e64..b0c68ab5f7 100644
--- a/include/hw/ppc/xive_regs.h
+++ b/include/hw/ppc/xive_regs.h
@@ -16,6 +16,9 @@
 #ifndef PPC_XIVE_REGS_H
 #define PPC_XIVE_REGS_H
 
+#include "qemu/bswap.h"
+#include "qemu/host-utils.h"
+
 /*
  * Interrupt source number encoding on PowerBUS
  */
diff --git a/include/hw/riscv/boot.h b/include/hw/riscv/boot.h
index d56f2ae3eb..1f21c2bef1 100644
--- a/include/hw/riscv/boot.h
+++ b/include/hw/riscv/boot.h
@@ -20,6 +20,8 @@
 #ifndef RISCV_BOOT_H
 #define RISCV_BOOT_H
 
+#include "exec/cpu-defs.h"
+
 void riscv_find_and_load_firmware(MachineState *machine,
                                   const char *default_machine_firmware,
                                   hwaddr firmware_load_addr);
diff --git a/include/hw/riscv/riscv_hart.h b/include/hw/riscv/riscv_hart.h
index 0671d88a44..3b52b50571 100644
--- a/include/hw/riscv/riscv_hart.h
+++ b/include/hw/riscv/riscv_hart.h
@@ -21,6 +21,9 @@
 #ifndef HW_RISCV_HART_H
 #define HW_RISCV_HART_H
 
+#include "hw/sysbus.h"
+#include "target/riscv/cpu.h"
+
 #define TYPE_RISCV_HART_ARRAY "riscv.hart_array"
 
 #define RISCV_HART_ARRAY(obj) \
diff --git a/include/hw/riscv/sifive_clint.h b/include/hw/riscv/sifive_clint.h
index e2865be1d1..ae8286c884 100644
--- a/include/hw/riscv/sifive_clint.h
+++ b/include/hw/riscv/sifive_clint.h
@@ -20,6 +20,8 @@
 #ifndef HW_SIFIVE_CLINT_H
 #define HW_SIFIVE_CLINT_H
 
+#include "hw/sysbus.h"
+
 #define TYPE_SIFIVE_CLINT "riscv.sifive.clint"
 
 #define SIFIVE_CLINT(obj) \
diff --git a/include/hw/riscv/sifive_e.h b/include/hw/riscv/sifive_e.h
index d175b24cb2..9c868dd7f9 100644
--- a/include/hw/riscv/sifive_e.h
+++ b/include/hw/riscv/sifive_e.h
@@ -19,6 +19,7 @@
 #ifndef HW_SIFIVE_E_H
 #define HW_SIFIVE_E_H
 
+#include "hw/riscv/riscv_hart.h"
 #include "hw/riscv/sifive_gpio.h"
 
 #define TYPE_RISCV_E_SOC "riscv.sifive.e.soc"
diff --git a/include/hw/riscv/sifive_plic.h b/include/hw/riscv/sifive_plic.h
index ce8907f6aa..b0edba2884 100644
--- a/include/hw/riscv/sifive_plic.h
+++ b/include/hw/riscv/sifive_plic.h
@@ -21,7 +21,7 @@
 #ifndef HW_SIFIVE_PLIC_H
 #define HW_SIFIVE_PLIC_H
 
-#include "hw/irq.h"
+#include "hw/sysbus.h"
 
 #define TYPE_SIFIVE_PLIC "riscv.sifive.plic"
 
diff --git a/include/hw/riscv/sifive_prci.h b/include/hw/riscv/sifive_prci.h
index bd51c4af3c..8b7de134f8 100644
--- a/include/hw/riscv/sifive_prci.h
+++ b/include/hw/riscv/sifive_prci.h
@@ -19,6 +19,8 @@
 #ifndef HW_SIFIVE_PRCI_H
 #define HW_SIFIVE_PRCI_H
 
+#include "hw/sysbus.h"
+
 enum {
     SIFIVE_PRCI_HFROSCCFG   = 0x0,
     SIFIVE_PRCI_HFXOSCCFG   = 0x4,
diff --git a/include/hw/riscv/sifive_test.h b/include/hw/riscv/sifive_test.h
index 71d4c9fad7..3a603a6ead 100644
--- a/include/hw/riscv/sifive_test.h
+++ b/include/hw/riscv/sifive_test.h
@@ -19,6 +19,8 @@
 #ifndef HW_SIFIVE_TEST_H
 #define HW_SIFIVE_TEST_H
 
+#include "hw/sysbus.h"
+
 #define TYPE_SIFIVE_TEST "riscv.sifive.test"
 
 #define SIFIVE_TEST(obj) \
diff --git a/include/hw/riscv/sifive_u.h b/include/hw/riscv/sifive_u.h
index 892f0eee21..be021ce256 100644
--- a/include/hw/riscv/sifive_u.h
+++ b/include/hw/riscv/sifive_u.h
@@ -20,6 +20,7 @@
 #define HW_SIFIVE_U_H
 
 #include "hw/net/cadence_gem.h"
+#include "hw/riscv/riscv_hart.h"
 
 #define TYPE_RISCV_U_SOC "riscv.sifive.u.soc"
 #define RISCV_U_SOC(obj) \
diff --git a/include/hw/riscv/sifive_uart.h b/include/hw/riscv/sifive_uart.h
index c8dc1c57fd..65668825a3 100644
--- a/include/hw/riscv/sifive_uart.h
+++ b/include/hw/riscv/sifive_uart.h
@@ -20,6 +20,9 @@
 #ifndef HW_SIFIVE_UART_H
 #define HW_SIFIVE_UART_H
 
+#include "chardev/char-fe.h"
+#include "hw/sysbus.h"
+
 enum {
     SIFIVE_UART_TXFIFO        = 0,
     SIFIVE_UART_RXFIFO        = 4,
diff --git a/include/hw/riscv/spike.h b/include/hw/riscv/spike.h
index 641b70da67..03d870363c 100644
--- a/include/hw/riscv/spike.h
+++ b/include/hw/riscv/spike.h
@@ -19,6 +19,9 @@
 #ifndef HW_RISCV_SPIKE_H
 #define HW_RISCV_SPIKE_H
 
+#include "hw/riscv/riscv_hart.h"
+#include "hw/sysbus.h"
+
 typedef struct {
     /*< private >*/
     SysBusDevice parent_obj;
diff --git a/include/hw/riscv/virt.h b/include/hw/riscv/virt.h
index d01a1a85c4..6e5fbe5d3b 100644
--- a/include/hw/riscv/virt.h
+++ b/include/hw/riscv/virt.h
@@ -19,6 +19,9 @@
 #ifndef HW_RISCV_VIRT_H
 #define HW_RISCV_VIRT_H
 
+#include "hw/riscv/riscv_hart.h"
+#include "hw/sysbus.h"
+
 typedef struct {
     /*< private >*/
     SysBusDevice parent_obj;
diff --git a/include/hw/s390x/ap-device.h b/include/hw/s390x/ap-device.h
index 765e9082a3..8df9cd2954 100644
--- a/include/hw/s390x/ap-device.h
+++ b/include/hw/s390x/ap-device.h
@@ -7,9 +7,12 @@
  * your option) any later version. See the COPYING file in the top-level
  * directory.
  */
+
 #ifndef HW_S390X_AP_DEVICE_H
 #define HW_S390X_AP_DEVICE_H
 
+#include "hw/qdev-core.h"
+
 #define AP_DEVICE_TYPE       "ap-device"
 
 typedef struct APDevice {
diff --git a/include/hw/s390x/css-bridge.h b/include/hw/s390x/css-bridge.h
index 5a0203be5f..f7ed2d9a03 100644
--- a/include/hw/s390x/css-bridge.h
+++ b/include/hw/s390x/css-bridge.h
@@ -12,8 +12,9 @@
 
 #ifndef HW_S390X_CSS_BRIDGE_H
 #define HW_S390X_CSS_BRIDGE_H
+
 #include "qom/object.h"
-#include "hw/qdev-core.h"
+#include "hw/sysbus.h"
 
 /* virtual css bridge */
 typedef struct VirtualCssBridge {
diff --git a/include/hw/s390x/css.h b/include/hw/s390x/css.h
index d033387fba..f46bcafb16 100644
--- a/include/hw/s390x/css.h
+++ b/include/hw/s390x/css.h
@@ -17,6 +17,7 @@
 #include "hw/s390x/s390_flic.h"
 #include "hw/s390x/ioinst.h"
 #include "sysemu/kvm.h"
+#include "target/s390x/cpu-qom.h"
 
 /* Channel subsystem constants. */
 #define MAX_DEVNO 65535
diff --git a/include/hw/s390x/tod.h b/include/hw/s390x/tod.h
index 9c4a6000c3..d71f4ea8a7 100644
--- a/include/hw/s390x/tod.h
+++ b/include/hw/s390x/tod.h
@@ -12,7 +12,7 @@
 #define HW_S390_TOD_H
 
 #include "hw/qdev.h"
-#include "s390-tod.h"
+#include "target/s390x/s390-tod.h"
 
 typedef struct S390TOD {
     uint8_t high;
diff --git a/include/hw/semihosting/console.h b/include/hw/semihosting/console.h
index cfab572c0c..9be9754bcd 100644
--- a/include/hw/semihosting/console.h
+++ b/include/hw/semihosting/console.h
@@ -9,6 +9,8 @@
 #ifndef SEMIHOST_CONSOLE_H
 #define SEMIHOST_CONSOLE_H
 
+#include "cpu.h"
+
 /**
  * qemu_semihosting_console_outs:
  * @env: CPUArchState
diff --git a/include/hw/sh4/sh_intc.h b/include/hw/sh4/sh_intc.h
index b7c2404334..3d3efde059 100644
--- a/include/hw/sh4/sh_intc.h
+++ b/include/hw/sh4/sh_intc.h
@@ -1,6 +1,7 @@
 #ifndef SH_INTC_H
 #define SH_INTC_H
 
+#include "exec/memory.h"
 #include "hw/irq.h"
 
 typedef unsigned char intc_enum;
diff --git a/include/hw/sparc/sparc64.h b/include/hw/sparc/sparc64.h
index 21ab79e343..4ced36fb5a 100644
--- a/include/hw/sparc/sparc64.h
+++ b/include/hw/sparc/sparc64.h
@@ -1,6 +1,8 @@
 #ifndef HW_SPARC_SPARC64_H
 #define HW_SPARC_SPARC64_H
 
+#include "target/sparc/cpu-qom.h"
+
 #define IVEC_MAX             0x40
 
 SPARCCPU *sparc64_cpu_devinit(const char *cpu_type, uint64_t prom_addr);
diff --git a/include/hw/ssi/aspeed_smc.h b/include/hw/ssi/aspeed_smc.h
index 591279ba1f..aa07dac4fe 100644
--- a/include/hw/ssi/aspeed_smc.h
+++ b/include/hw/ssi/aspeed_smc.h
@@ -26,6 +26,7 @@
 #define ASPEED_SMC_H
 
 #include "hw/ssi/ssi.h"
+#include "hw/sysbus.h"
 
 typedef struct AspeedSegments {
     hwaddr addr;
diff --git a/include/hw/ssi/xilinx_spips.h b/include/hw/ssi/xilinx_spips.h
index a0a0ae7584..6a39b55a7b 100644
--- a/include/hw/ssi/xilinx_spips.h
+++ b/include/hw/ssi/xilinx_spips.h
@@ -28,6 +28,7 @@
 #include "hw/ssi/ssi.h"
 #include "qemu/fifo32.h"
 #include "hw/stream.h"
+#include "hw/sysbus.h"
 
 typedef struct XilinxSPIPS XilinxSPIPS;
 
diff --git a/include/hw/timer/allwinner-a10-pit.h b/include/hw/timer/allwinner-a10-pit.h
index c0cc3e2169..871c95b512 100644
--- a/include/hw/timer/allwinner-a10-pit.h
+++ b/include/hw/timer/allwinner-a10-pit.h
@@ -2,6 +2,7 @@
 #define ALLWINNER_A10_PIT_H
 
 #include "hw/ptimer.h"
+#include "hw/sysbus.h"
 
 #define TYPE_AW_A10_PIT "allwinner-A10-timer"
 #define AW_A10_PIT(obj) OBJECT_CHECK(AwA10PITState, (obj), TYPE_AW_A10_PIT)
diff --git a/include/hw/timer/i8254_internal.h b/include/hw/timer/i8254_internal.h
index c37a438f82..e611c6f227 100644
--- a/include/hw/timer/i8254_internal.h
+++ b/include/hw/timer/i8254_internal.h
@@ -27,6 +27,7 @@
 
 #include "hw/hw.h"
 #include "hw/isa/isa.h"
+#include "hw/timer/i8254.h"
 #include "qemu/timer.h"
 
 typedef struct PITChannelState {
diff --git a/include/hw/timer/m48t59.h b/include/hw/timer/m48t59.h
index 43efc91f56..d3fb50e08c 100644
--- a/include/hw/timer/m48t59.h
+++ b/include/hw/timer/m48t59.h
@@ -1,6 +1,8 @@
 #ifndef HW_M48T59_H
 #define HW_M48T59_H
 
+#include "exec/hwaddr.h"
+#include "hw/irq.h"
 #include "qom/object.h"
 
 #define TYPE_NVRAM "nvram"
diff --git a/include/hw/timer/mc146818rtc_regs.h b/include/hw/timer/mc146818rtc_regs.h
index c62f17bf2d..bfbb57e570 100644
--- a/include/hw/timer/mc146818rtc_regs.h
+++ b/include/hw/timer/mc146818rtc_regs.h
@@ -25,6 +25,8 @@
 #ifndef MC146818RTC_REGS_H
 #define MC146818RTC_REGS_H
 
+#include "qemu/timer.h"
+
 #define RTC_ISA_IRQ 8
 
 #define RTC_SECONDS             0
diff --git a/include/hw/timer/xlnx-zynqmp-rtc.h b/include/hw/timer/xlnx-zynqmp-rtc.h
index 6e9134edf6..97e32322ed 100644
--- a/include/hw/timer/xlnx-zynqmp-rtc.h
+++ b/include/hw/timer/xlnx-zynqmp-rtc.h
@@ -28,6 +28,7 @@
 #define HW_TIMER_XLNX_ZYNQMP_RTC_H
 
 #include "hw/register.h"
+#include "hw/sysbus.h"
 
 #define TYPE_XLNX_ZYNQMP_RTC "xlnx-zynmp.rtc"
 
diff --git a/include/hw/virtio/virtio-access.h b/include/hw/virtio/virtio-access.h
index bdf58f3119..6818a23a2d 100644
--- a/include/hw/virtio/virtio-access.h
+++ b/include/hw/virtio/virtio-access.h
@@ -16,6 +16,7 @@
 #ifndef QEMU_VIRTIO_ACCESS_H
 #define QEMU_VIRTIO_ACCESS_H
 
+#include "exec/hwaddr.h"
 #include "hw/virtio/virtio.h"
 #include "hw/virtio/virtio-bus.h"
 
diff --git a/include/hw/virtio/virtio-gpu-bswap.h b/include/hw/virtio/virtio-gpu-bswap.h
index 38d12160f6..203f9e1718 100644
--- a/include/hw/virtio/virtio-gpu-bswap.h
+++ b/include/hw/virtio/virtio-gpu-bswap.h
@@ -15,6 +15,7 @@
 #define HW_VIRTIO_GPU_BSWAP_H
 
 #include "qemu/bswap.h"
+#include "standard-headers/linux/virtio_gpu.h"
 
 static inline void
 virtio_gpu_ctrl_hdr_bswap(struct virtio_gpu_ctrl_hdr *hdr)
diff --git a/include/hw/virtio/virtio-rng.h b/include/hw/virtio/virtio-rng.h
index 922dce7cac..ff699335e3 100644
--- a/include/hw/virtio/virtio-rng.h
+++ b/include/hw/virtio/virtio-rng.h
@@ -12,6 +12,7 @@
 #ifndef QEMU_VIRTIO_RNG_H
 #define QEMU_VIRTIO_RNG_H
 
+#include "hw/virtio/virtio.h"
 #include "sysemu/rng.h"
 #include "sysemu/rng-random.h"
 #include "standard-headers/linux/virtio_rng.h"
diff --git a/include/hw/watchdog/wdt_aspeed.h b/include/hw/watchdog/wdt_aspeed.h
index daef0c0e23..8c5691ce20 100644
--- a/include/hw/watchdog/wdt_aspeed.h
+++ b/include/hw/watchdog/wdt_aspeed.h
@@ -10,6 +10,7 @@
 #ifndef WDT_ASPEED_H
 #define WDT_ASPEED_H
 
+#include "hw/misc/aspeed_scu.h"
 #include "hw/sysbus.h"
 
 #define TYPE_ASPEED_WDT "aspeed.wdt"
diff --git a/include/libdecnumber/decNumberLocal.h b/include/libdecnumber/decNumberLocal.h
index 12cf1d8b6f..4d53c077f2 100644
--- a/include/libdecnumber/decNumberLocal.h
+++ b/include/libdecnumber/decNumberLocal.h
@@ -44,6 +44,7 @@
   #define DECNLAUTHOR	"Mike Cowlishaw"	      /* Who to blame */
 
   #include "libdecnumber/dconfig.h"
+  #include "libdecnumber/decContext.h"
 
   /* Conditional code flag -- set this to match hardware platform     */
   /* 1=little-endian, 0=big-endian	                              */
diff --git a/include/migration/cpu.h b/include/migration/cpu.h
index a40bd3549f..da1618d620 100644
--- a/include/migration/cpu.h
+++ b/include/migration/cpu.h
@@ -1,7 +1,10 @@
 /* Declarations for use for CPU state serialization.  */
+
 #ifndef MIGRATION_CPU_H
 #define MIGRATION_CPU_H
 
+#include "exec/cpu-defs.h"
+
 #if TARGET_LONG_BITS == 64
 #define qemu_put_betl qemu_put_be64
 #define qemu_get_betl qemu_get_be64
diff --git a/include/monitor/hmp-target.h b/include/monitor/hmp-target.h
index 454e8ed155..8b7820a3ad 100644
--- a/include/monitor/hmp-target.h
+++ b/include/monitor/hmp-target.h
@@ -25,6 +25,8 @@
 #ifndef MONITOR_HMP_TARGET_H
 #define MONITOR_HMP_TARGET_H
 
+#include "cpu.h"
+
 #define MD_TLONG 0
 #define MD_I32   1
 
diff --git a/include/qemu/atomic128.h b/include/qemu/atomic128.h
index ddd0d55d31..6b34484e15 100644
--- a/include/qemu/atomic128.h
+++ b/include/qemu/atomic128.h
@@ -13,6 +13,8 @@
 #ifndef QEMU_ATOMIC128_H
 #define QEMU_ATOMIC128_H
 
+#include "qemu/int128.h"
+
 /*
  * GCC is a house divided about supporting large atomic operations.
  *
diff --git a/include/qemu/ratelimit.h b/include/qemu/ratelimit.h
index 1b38291823..01da8d63f1 100644
--- a/include/qemu/ratelimit.h
+++ b/include/qemu/ratelimit.h
@@ -14,6 +14,8 @@
 #ifndef QEMU_RATELIMIT_H
 #define QEMU_RATELIMIT_H
 
+#include "qemu/timer.h"
+
 typedef struct {
     int64_t slice_start_time;
     int64_t slice_end_time;
diff --git a/include/qemu/thread-win32.h b/include/qemu/thread-win32.h
index 50af5dd7ab..d0a1a9597e 100644
--- a/include/qemu/thread-win32.h
+++ b/include/qemu/thread-win32.h
@@ -47,6 +47,6 @@ struct QemuThread {
 };
 
 /* Only valid for joinable threads.  */
-HANDLE qemu_thread_get_handle(QemuThread *thread);
+HANDLE qemu_thread_get_handle(struct QemuThread *thread);
 
 #endif
diff --git a/include/sysemu/balloon.h b/include/sysemu/balloon.h
index c8f6145257..aea0c44985 100644
--- a/include/sysemu/balloon.h
+++ b/include/sysemu/balloon.h
@@ -14,6 +14,7 @@
 #ifndef QEMU_BALLOON_H
 #define QEMU_BALLOON_H
 
+#include "exec/cpu-common.h"
 #include "qapi/qapi-types-misc.h"
 
 typedef void (QEMUBalloonEvent)(void *opaque, ram_addr_t target);
diff --git a/include/sysemu/cryptodev-vhost-user.h b/include/sysemu/cryptodev-vhost-user.h
index 6debf53fc5..0d3421e7e8 100644
--- a/include/sysemu/cryptodev-vhost-user.h
+++ b/include/sysemu/cryptodev-vhost-user.h
@@ -20,9 +20,12 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  *
  */
+
 #ifndef CRYPTODEV_VHOST_USER_H
 #define CRYPTODEV_VHOST_USER_H
 
+#include "sysemu/cryptodev-vhost.h"
+
 #define VHOST_USER_MAX_AUTH_KEY_LEN    512
 #define VHOST_USER_MAX_CIPHER_KEY_LEN  64
 
diff --git a/include/sysemu/hvf.h b/include/sysemu/hvf.h
index d275b5a843..dd1722f2df 100644
--- a/include/sysemu/hvf.h
+++ b/include/sysemu/hvf.h
@@ -13,6 +13,7 @@
 #ifndef HVF_H
 #define HVF_H
 
+#include "cpu.h"
 #include "qemu/bitops.h"
 #include "exec/memory.h"
 #include "sysemu/accel.h"
diff --git a/include/sysemu/iothread.h b/include/sysemu/iothread.h
index 5f6240d5cb..6181486401 100644
--- a/include/sysemu/iothread.h
+++ b/include/sysemu/iothread.h
@@ -16,6 +16,7 @@
 
 #include "block/aio.h"
 #include "qemu/thread.h"
+#include "qom/object.h"
 
 #define TYPE_IOTHREAD "iothread"
 
diff --git a/include/sysemu/kvm_int.h b/include/sysemu/kvm_int.h
index 31df465fdc..787dbc7770 100644
--- a/include/sysemu/kvm_int.h
+++ b/include/sysemu/kvm_int.h
@@ -9,6 +9,8 @@
 #ifndef QEMU_KVM_INT_H
 #define QEMU_KVM_INT_H
 
+#include "exec/cpu-common.h"
+#include "exec/memory.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/accel.h"
 #include "sysemu/kvm.h"
diff --git a/include/sysemu/memory_mapping.h b/include/sysemu/memory_mapping.h
index 58452457ce..1b440df486 100644
--- a/include/sysemu/memory_mapping.h
+++ b/include/sysemu/memory_mapping.h
@@ -15,6 +15,8 @@
 #define MEMORY_MAPPING_H
 
 #include "qemu/queue.h"
+#include "exec/cpu-common.h"
+#include "exec/cpu-defs.h"
 #include "exec/memory.h"
 
 typedef struct GuestPhysBlock {
diff --git a/include/sysemu/xen-mapcache.h b/include/sysemu/xen-mapcache.h
index a03e2f1878..c8e7c2f6cf 100644
--- a/include/sysemu/xen-mapcache.h
+++ b/include/sysemu/xen-mapcache.h
@@ -9,6 +9,8 @@
 #ifndef XEN_MAPCACHE_H
 #define XEN_MAPCACHE_H
 
+#include "exec/cpu-common.h"
+
 typedef hwaddr (*phys_offset_to_gaddr_t)(hwaddr phys_offset,
                                          ram_addr_t size);
 #ifdef CONFIG_XEN
diff --git a/include/ui/egl-helpers.h b/include/ui/egl-helpers.h
index d714127799..58bd3a1ec4 100644
--- a/include/ui/egl-helpers.h
+++ b/include/ui/egl-helpers.h
@@ -4,6 +4,9 @@
 #include <epoxy/gl.h>
 #include <epoxy/egl.h>
 #include <gbm.h>
+#include "qapi/qapi-types-ui.h"
+#include "ui/console.h"
+#include "ui/shader.h"
 
 extern EGLDisplay *qemu_egl_display;
 extern EGLConfig qemu_egl_config;
diff --git a/include/ui/input.h b/include/ui/input.h
index 8c8ccb999f..c86219a1c1 100644
--- a/include/ui/input.h
+++ b/include/ui/input.h
@@ -2,6 +2,7 @@
 #define INPUT_H
 
 #include "qapi/qapi-types-ui.h"
+#include "qemu/notify.h"
 
 #define INPUT_EVENT_MASK_KEY   (1<<INPUT_EVENT_KIND_KEY)
 #define INPUT_EVENT_MASK_BTN   (1<<INPUT_EVENT_KIND_BTN)
diff --git a/include/ui/spice-display.h b/include/ui/spice-display.h
index eed60e4fae..58bb5b4c53 100644
--- a/include/ui/spice-display.h
+++ b/include/ui/spice-display.h
@@ -18,6 +18,7 @@
 #ifndef UI_SPICE_DISPLAY_H
 #define UI_SPICE_DISPLAY_H
 
+#include <spice.h>
 #include <spice/ipc_ring.h>
 #include <spice/enums.h>
 #include <spice/qxl_dev.h>
diff --git a/target/hppa/cpu.h b/target/hppa/cpu.h
index aab251bc4b..e9fba96be9 100644
--- a/target/hppa/cpu.h
+++ b/target/hppa/cpu.h
@@ -22,7 +22,7 @@
 
 #include "cpu-qom.h"
 #include "exec/cpu-defs.h"
-
+#include "exec/memory.h"
 
 /* PA-RISC 1.x processors have a strong memory model.  */
 /* ??? While we do not yet implement PA-RISC 2.0, those processors have
-- 
2.21.0



^ permalink raw reply	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PULL 02/29] Include generated QAPI headers less
  2019-08-13 15:46 [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13 Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 01/29] include: Make headers more self-contained Markus Armbruster
@ 2019-08-13 15:46 ` Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 03/29] qapi: Split error.json off common.json Markus Armbruster
                   ` (27 subsequent siblings)
  29 siblings, 0 replies; 34+ messages in thread
From: Markus Armbruster @ 2019-08-13 15:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Philippe Mathieu-Daudé

Some of the generated qapi-types-MODULE.h are included all over the
place.  Changing a QAPI type can trigger massive recompiling.  Top
scorers recompile more than 1000 out of some 6600 objects (not
counting tests and objects that don't depend on qemu/osdep.h):

    6300 qapi/qapi-builtin-types.h
    5700 qapi/qapi-types-run-state.h
    3900 qapi/qapi-types-common.h
    3300 qapi/qapi-types-sockets.h
    3000 qapi/qapi-types-misc.h
    3000 qapi/qapi-types-crypto.h
    3000 qapi/qapi-types-job.h
    3000 qapi/qapi-types-block-core.h
    2800 qapi/qapi-types-block.h
    1300 qapi/qapi-types-net.h

Clean up headers to include generated QAPI headers only where needed.
Impact is negligible except for hw/qdev-properties.h.

This header includes qapi/qapi-types-block.h and
qapi/qapi-types-misc.h.  They are used only in expansions of property
definition macros such as DEFINE_PROP_BLOCKDEV_ON_ERROR() and
DEFINE_PROP_OFF_AUTO().  Moving their inclusion from
hw/qdev-properties.h to the users of these macros avoids pointless
recompiles.  This is how other property definition macros, such as
DEFINE_PROP_NETDEV(), already work.

Improves things for some of the top scorers:

    3600 qapi/qapi-types-common.h
    2800 qapi/qapi-types-sockets.h
     900 qapi/qapi-types-misc.h
    2200 qapi/qapi-types-crypto.h
    2100 qapi/qapi-types-job.h
    2100 qapi/qapi-types-block-core.h
     270 qapi/qapi-types-block.h

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190812052359.30071-3-armbru@redhat.com>
---
 include/authz/listfile.h             | 1 -
 include/block/block.h                | 1 -
 include/hw/acpi/acpi_dev_interface.h | 1 +
 include/hw/mem/memory-device.h       | 1 +
 include/hw/ppc/spapr_drc.h           | 1 -
 include/hw/qdev-properties.h         | 2 --
 include/hw/virtio/virtio-pmem.h      | 1 +
 include/migration/global_state.h     | 1 -
 include/qemu/job.h                   | 2 +-
 include/sysemu/arch_init.h           | 1 -
 include/ui/egl-helpers.h             | 1 -
 monitor/monitor-internal.h           | 1 -
 target/i386/sev_i386.h               | 2 +-
 ui/vnc.h                             | 1 -
 hw/core/qdev-properties.c            | 2 ++
 hw/i386/kvm/i8254.c                  | 1 +
 hw/ide/qdev.c                        | 1 +
 target/i386/monitor.c                | 1 +
 18 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/include/authz/listfile.h b/include/authz/listfile.h
index 33b728d873..24ae2e606c 100644
--- a/include/authz/listfile.h
+++ b/include/authz/listfile.h
@@ -22,7 +22,6 @@
 #define QAUTHZ_LISTFILE_H
 
 #include "authz/list.h"
-#include "qapi/qapi-types-authz.h"
 #include "qemu/filemonitor.h"
 
 #define TYPE_QAUTHZ_LIST_FILE "authz-list-file"
diff --git a/include/block/block.h b/include/block/block.h
index 50a07c1c33..ae79b70e2d 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -2,7 +2,6 @@
 #define BLOCK_H
 
 #include "block/aio.h"
-#include "qapi/qapi-types-block-core.h"
 #include "block/aio-wait.h"
 #include "qemu/iov.h"
 #include "qemu/coroutine.h"
diff --git a/include/hw/acpi/acpi_dev_interface.h b/include/hw/acpi/acpi_dev_interface.h
index 43ff119179..6465072b7d 100644
--- a/include/hw/acpi/acpi_dev_interface.h
+++ b/include/hw/acpi/acpi_dev_interface.h
@@ -1,6 +1,7 @@
 #ifndef ACPI_DEV_INTERFACE_H
 #define ACPI_DEV_INTERFACE_H
 
+#include "qapi/qapi-types-misc.h"
 #include "qom/object.h"
 #include "hw/boards.h"
 
diff --git a/include/hw/mem/memory-device.h b/include/hw/mem/memory-device.h
index 0293a96abb..2ada6e7bde 100644
--- a/include/hw/mem/memory-device.h
+++ b/include/hw/mem/memory-device.h
@@ -13,6 +13,7 @@
 #ifndef MEMORY_DEVICE_H
 #define MEMORY_DEVICE_H
 
+#include "qapi/qapi-types-misc.h"
 #include "qom/object.h"
 #include "hw/qdev.h"
 
diff --git a/include/hw/ppc/spapr_drc.h b/include/hw/ppc/spapr_drc.h
index c2c543a591..576c711b86 100644
--- a/include/hw/ppc/spapr_drc.h
+++ b/include/hw/ppc/spapr_drc.h
@@ -14,7 +14,6 @@
 #define HW_SPAPR_DRC_H
 
 #include <libfdt.h>
-#include "qapi/qapi-types-run-state.h"
 #include "qom/object.h"
 #include "sysemu/sysemu.h"
 #include "hw/qdev.h"
diff --git a/include/hw/qdev-properties.h b/include/hw/qdev-properties.h
index 1eae5ab056..bb34a614e2 100644
--- a/include/hw/qdev-properties.h
+++ b/include/hw/qdev-properties.h
@@ -1,8 +1,6 @@
 #ifndef QEMU_QDEV_PROPERTIES_H
 #define QEMU_QDEV_PROPERTIES_H
 
-#include "qapi/qapi-types-block.h"
-#include "qapi/qapi-types-misc.h"
 #include "hw/qdev-core.h"
 
 /*** qdev-properties.c ***/
diff --git a/include/hw/virtio/virtio-pmem.h b/include/hw/virtio/virtio-pmem.h
index 19b6ee6d75..8bf2ae780f 100644
--- a/include/hw/virtio/virtio-pmem.h
+++ b/include/hw/virtio/virtio-pmem.h
@@ -15,6 +15,7 @@
 #define HW_VIRTIO_PMEM_H
 
 #include "hw/virtio/virtio.h"
+#include "qapi/qapi-types-misc.h"
 #include "sysemu/hostmem.h"
 
 #define TYPE_VIRTIO_PMEM "virtio-pmem"
diff --git a/include/migration/global_state.h b/include/migration/global_state.h
index fd22dd3034..d307de8350 100644
--- a/include/migration/global_state.h
+++ b/include/migration/global_state.h
@@ -13,7 +13,6 @@
 #ifndef QEMU_MIGRATION_GLOBAL_STATE_H
 #define QEMU_MIGRATION_GLOBAL_STATE_H
 
-#include "qapi/qapi-types-run-state.h"
 #include "sysemu/sysemu.h"
 
 void register_global_state(void);
diff --git a/include/qemu/job.h b/include/qemu/job.h
index 9e7cd1e4a0..73c67d3175 100644
--- a/include/qemu/job.h
+++ b/include/qemu/job.h
@@ -26,7 +26,7 @@
 #ifndef JOB_H
 #define JOB_H
 
-#include "qapi/qapi-types-block-core.h"
+#include "qapi/qapi-types-job.h"
 #include "qemu/queue.h"
 #include "qemu/coroutine.h"
 #include "block/aio.h"
diff --git a/include/sysemu/arch_init.h b/include/sysemu/arch_init.h
index 10cbafe970..62c6fe4cf1 100644
--- a/include/sysemu/arch_init.h
+++ b/include/sysemu/arch_init.h
@@ -1,7 +1,6 @@
 #ifndef QEMU_ARCH_INIT_H
 #define QEMU_ARCH_INIT_H
 
-#include "qapi/qapi-types-misc.h"
 
 enum {
     QEMU_ARCH_ALL = -1,
diff --git a/include/ui/egl-helpers.h b/include/ui/egl-helpers.h
index 58bd3a1ec4..dad19e9873 100644
--- a/include/ui/egl-helpers.h
+++ b/include/ui/egl-helpers.h
@@ -4,7 +4,6 @@
 #include <epoxy/gl.h>
 #include <epoxy/egl.h>
 #include <gbm.h>
-#include "qapi/qapi-types-ui.h"
 #include "ui/console.h"
 #include "ui/shader.h"
 
diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h
index 7760b22ba3..d78f5ca190 100644
--- a/monitor/monitor-internal.h
+++ b/monitor/monitor-internal.h
@@ -27,7 +27,6 @@
 
 #include "chardev/char-fe.h"
 #include "monitor/monitor.h"
-#include "qapi/qapi-types-misc.h"
 #include "qapi/qmp/dispatch.h"
 #include "qapi/qmp/json-parser.h"
 #include "qemu/readline.h"
diff --git a/target/i386/sev_i386.h b/target/i386/sev_i386.h
index 55313441ae..8ada9d385d 100644
--- a/target/i386/sev_i386.h
+++ b/target/i386/sev_i386.h
@@ -19,7 +19,7 @@
 #include "sysemu/kvm.h"
 #include "sysemu/sev.h"
 #include "qemu/error-report.h"
-#include "qapi/qapi-commands-misc-target.h"
+#include "qapi/qapi-types-misc-target.h"
 
 #define SEV_POLICY_NODBG        0x1
 #define SEV_POLICY_NOKS         0x2
diff --git a/ui/vnc.h b/ui/vnc.h
index 2f84db3142..18f1b1d6d0 100644
--- a/ui/vnc.h
+++ b/ui/vnc.h
@@ -27,7 +27,6 @@
 #ifndef QEMU_VNC_H
 #define QEMU_VNC_H
 
-#include "qapi/qapi-types-ui.h"
 #include "qemu/queue.h"
 #include "qemu/thread.h"
 #include "ui/console.h"
diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
index 81c97f48a7..8510ad14b0 100644
--- a/hw/core/qdev-properties.c
+++ b/hw/core/qdev-properties.c
@@ -3,6 +3,8 @@
 #include "hw/qdev.h"
 #include "qapi/error.h"
 #include "hw/pci/pci.h"
+#include "qapi/qapi-types-block.h"
+#include "qapi/qapi-types-misc.h"
 #include "qapi/qmp/qerror.h"
 #include "qemu/ctype.h"
 #include "qemu/error-report.h"
diff --git a/hw/i386/kvm/i8254.c b/hw/i386/kvm/i8254.c
index c29956ab77..27e36a2abf 100644
--- a/hw/i386/kvm/i8254.c
+++ b/hw/i386/kvm/i8254.c
@@ -25,6 +25,7 @@
 
 #include "qemu/osdep.h"
 #include <linux/kvm.h>
+#include "qapi/qapi-types-misc.h"
 #include "qapi/error.h"
 #include "qemu/module.h"
 #include "qemu/timer.h"
diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
index 9d8502785d..eea22c09f4 100644
--- a/hw/ide/qdev.c
+++ b/hw/ide/qdev.c
@@ -21,6 +21,7 @@
 #include "hw/hw.h"
 #include "sysemu/dma.h"
 #include "qapi/error.h"
+#include "qapi/qapi-types-block.h"
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 #include "hw/ide/internal.h"
diff --git a/target/i386/monitor.c b/target/i386/monitor.c
index 1f3b532fc2..9fb4d641d5 100644
--- a/target/i386/monitor.c
+++ b/target/i386/monitor.c
@@ -33,6 +33,7 @@
 #include "sysemu/sev.h"
 #include "qapi/error.h"
 #include "sev_i386.h"
+#include "qapi/qapi-commands-misc-target.h"
 #include "qapi/qapi-commands-misc.h"
 
 /* Perform linear address sign extension */
-- 
2.21.0



^ permalink raw reply	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PULL 03/29] qapi: Split error.json off common.json
  2019-08-13 15:46 [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13 Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 01/29] include: Make headers more self-contained Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 02/29] Include generated QAPI headers less Markus Armbruster
@ 2019-08-13 15:46 ` Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 04/29] memory: Fix type of IOMMUMemoryRegionClass member @parent_class Markus Armbruster
                   ` (26 subsequent siblings)
  29 siblings, 0 replies; 34+ messages in thread
From: Markus Armbruster @ 2019-08-13 15:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Philippe Mathieu-Daudé

In my "build everything" tree, changing a type in qapi/common.json
triggers a recompile of some 3600 out of 6600 objects (not counting
tests and objects that don't depend on qemu/osdep.h).

One common dependency is QapiErrorClass: it's used only in in
qapi/error.h, which uses nothing else, and is widely included.

Move QapiErrorClass from common.json to new error.json.  Touching
common.json now recompiles only some 2900 objects.

Cc: Eric Blake <eblake@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190812052359.30071-4-armbru@redhat.com>
---
 qapi/common.json      | 24 ------------------------
 qapi/error.json       | 29 +++++++++++++++++++++++++++++
 qapi/qapi-schema.json |  1 +
 include/qapi/error.h  |  2 +-
 MAINTAINERS           |  2 ++
 qapi/Makefile.objs    |  2 +-
 6 files changed, 34 insertions(+), 26 deletions(-)
 create mode 100644 qapi/error.json

diff --git a/qapi/common.json b/qapi/common.json
index 99d313ef3b..3d4e8de1e0 100644
--- a/qapi/common.json
+++ b/qapi/common.json
@@ -4,30 +4,6 @@
 # = Common data types
 ##
 
-##
-# @QapiErrorClass:
-#
-# QEMU error classes
-#
-# @GenericError: this is used for errors that don't require a specific error
-#                class. This should be the default case for most errors
-#
-# @CommandNotFound: the requested command has not been found
-#
-# @DeviceNotActive: a device has failed to be become active
-#
-# @DeviceNotFound: the requested device has not been found
-#
-# @KVMMissingCap: the requested operation can't be fulfilled because a
-#                 required KVM capability is missing
-#
-# Since: 1.2
-##
-{ 'enum': 'QapiErrorClass',
-  # Keep this in sync with ErrorClass in error.h
-  'data': [ 'GenericError', 'CommandNotFound',
-            'DeviceNotActive', 'DeviceNotFound', 'KVMMissingCap' ] }
-
 ##
 # @IoOperationType:
 #
diff --git a/qapi/error.json b/qapi/error.json
new file mode 100644
index 0000000000..3fad08f506
--- /dev/null
+++ b/qapi/error.json
@@ -0,0 +1,29 @@
+# -*- Mode: Python -*-
+
+##
+# = QMP errors
+##
+
+##
+# @QapiErrorClass:
+#
+# QEMU error classes
+#
+# @GenericError: this is used for errors that don't require a specific error
+#                class. This should be the default case for most errors
+#
+# @CommandNotFound: the requested command has not been found
+#
+# @DeviceNotActive: a device has failed to be become active
+#
+# @DeviceNotFound: the requested device has not been found
+#
+# @KVMMissingCap: the requested operation can't be fulfilled because a
+#                 required KVM capability is missing
+#
+# Since: 1.2
+##
+{ 'enum': 'QapiErrorClass',
+  # Keep this in sync with ErrorClass in error.h
+  'data': [ 'GenericError', 'CommandNotFound',
+            'DeviceNotActive', 'DeviceNotFound', 'KVMMissingCap' ] }
diff --git a/qapi/qapi-schema.json b/qapi/qapi-schema.json
index 38af54d6b3..920b03b0aa 100644
--- a/qapi/qapi-schema.json
+++ b/qapi/qapi-schema.json
@@ -80,6 +80,7 @@
 # stable order, it's best to include each sub-schema just once, or
 # include it first right here.
 
+{ 'include': 'error.json' }
 { 'include': 'common.json' }
 { 'include': 'sockets.json' }
 { 'include': 'run-state.json' }
diff --git a/include/qapi/error.h b/include/qapi/error.h
index 51b63dd4b5..3f95141a01 100644
--- a/include/qapi/error.h
+++ b/include/qapi/error.h
@@ -119,7 +119,7 @@
 #ifndef ERROR_H
 #define ERROR_H
 
-#include "qapi/qapi-types-common.h"
+#include "qapi/qapi-types-error.h"
 
 /*
  * Overall category of an error.
diff --git a/MAINTAINERS b/MAINTAINERS
index d6de200453..adc64cfe33 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1874,6 +1874,7 @@ M: Markus Armbruster <armbru@redhat.com>
 S: Supported
 F: include/qapi/error.h
 F: include/qemu/error-report.h
+F: qapi/error.json
 F: util/error.c
 F: util/qemu-error.c
 
@@ -2062,6 +2063,7 @@ F: monitor/monitor-internal.h
 F: monitor/qmp*
 F: monitor/misc.c
 F: monitor/monitor.c
+F: qapi/error.json
 F: docs/devel/*qmp-*
 F: docs/interop/*qmp-*
 F: scripts/qmp/
diff --git a/qapi/Makefile.objs b/qapi/Makefile.objs
index c5a29e86e2..dd3f5e6f94 100644
--- a/qapi/Makefile.objs
+++ b/qapi/Makefile.objs
@@ -6,7 +6,7 @@ util-obj-y += qmp-event.o
 util-obj-y += qapi-util.o
 
 QAPI_COMMON_MODULES = audio authz block-core block char common crypto
-QAPI_COMMON_MODULES += dump introspect job machine migration misc net
+QAPI_COMMON_MODULES += dump error introspect job machine migration misc net
 QAPI_COMMON_MODULES += qdev qom rdma rocker run-state sockets tpm
 QAPI_COMMON_MODULES += trace transaction ui
 QAPI_TARGET_MODULES = machine-target misc-target
-- 
2.21.0



^ permalink raw reply	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PULL 04/29] memory: Fix type of IOMMUMemoryRegionClass member @parent_class
  2019-08-13 15:46 [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13 Markus Armbruster
                   ` (2 preceding siblings ...)
  2019-08-13 15:46 ` [Qemu-devel] [PULL 03/29] qapi: Split error.json off common.json Markus Armbruster
@ 2019-08-13 15:46 ` Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 05/29] queue: Drop superfluous #include qemu/atomic.h Markus Armbruster
                   ` (25 subsequent siblings)
  29 siblings, 0 replies; 34+ messages in thread
From: Markus Armbruster @ 2019-08-13 15:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Philippe Mathieu-Daudé

TYPE_IOMMU_MEMORY_REGION is a direct subtype of TYPE_MEMORY_REGION.
Its instance struct is IOMMUMemoryRegion, and its first member is a
MemoryRegion.  Correct.  Its class struct is IOMMUMemoryRegionClass,
and its first member is a DeviceClass.  Wrong.  Messed up when commit
1221a474676 introduced the QOM type.  It even included hw/qdev-core.h
just for that.

TYPE_MEMORY_REGION doesn't bother to define a class struct.  This is
fine, it simply defaults to its super-type TYPE_OBJECT's class struct
ObjectClass.  Changing IOMMUMemoryRegionClass's first member's type to
ObjectClass would be a minimal fix, if a bit brittle: if
TYPE_MEMORY_REGION ever acquired own class struct, we'd have to update
IOMMUMemoryRegionClass to use it.

Fix it the clean and robust way instead: give TYPE_MEMORY_REGION its
own class struct MemoryRegionClass now, and use it for
IOMMUMemoryRegionClass's first member.

Revert the include of hw/qdev-core.h, and fix the few files that have
come to rely on it.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20190812052359.30071-5-armbru@redhat.com>
---
 hw/net/pcnet.h          |  1 +
 include/exec/memory.h   | 10 ++++++++--
 hw/display/vga-isa-mm.c |  1 +
 memory.c                |  1 +
 4 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/hw/net/pcnet.h b/hw/net/pcnet.h
index 40831a7845..28d19a5c6f 100644
--- a/hw/net/pcnet.h
+++ b/hw/net/pcnet.h
@@ -8,6 +8,7 @@
 #define PCNET_LOOPTEST_NOCRC	2
 
 #include "exec/memory.h"
+#include "hw/irq.h"
 
 /* BUS CONFIGURATION REGISTERS */
 #define BCR_MSRDA    0
diff --git a/include/exec/memory.h b/include/exec/memory.h
index bb0961ddb9..d99eb25d2e 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -20,12 +20,12 @@
 #include "exec/hwaddr.h"
 #include "exec/memattrs.h"
 #include "exec/ramlist.h"
+#include "qemu/bswap.h"
 #include "qemu/queue.h"
 #include "qemu/int128.h"
 #include "qemu/notify.h"
 #include "qom/object.h"
 #include "qemu/rcu.h"
-#include "hw/qdev-core.h"
 
 #define RAM_ADDR_INVALID (~(ram_addr_t)0)
 
@@ -205,6 +205,12 @@ struct MemoryRegionOps {
     } impl;
 };
 
+typedef struct MemoryRegionClass {
+    /* private */
+    ObjectClass parent_class;
+} MemoryRegionClass;
+
+
 enum IOMMUMemoryRegionAttr {
     IOMMU_ATTR_SPAPR_TCE_FD
 };
@@ -237,7 +243,7 @@ enum IOMMUMemoryRegionAttr {
  */
 typedef struct IOMMUMemoryRegionClass {
     /* private */
-    struct DeviceClass parent_class;
+    MemoryRegionClass parent_class;
 
     /*
      * Return a TLB entry that contains a given address.
diff --git a/hw/display/vga-isa-mm.c b/hw/display/vga-isa-mm.c
index 215e649719..a790f69b6d 100644
--- a/hw/display/vga-isa-mm.c
+++ b/hw/display/vga-isa-mm.c
@@ -22,6 +22,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/bitops.h"
 #include "qemu/units.h"
 #include "hw/hw.h"
 #include "hw/display/vga.h"
diff --git a/memory.c b/memory.c
index 5d8c9a9234..09d9b254fd 100644
--- a/memory.c
+++ b/memory.c
@@ -3245,6 +3245,7 @@ void memory_region_init_rom_device(MemoryRegion *mr,
 static const TypeInfo memory_region_info = {
     .parent             = TYPE_OBJECT,
     .name               = TYPE_MEMORY_REGION,
+    .class_size         = sizeof(MemoryRegionClass),
     .instance_size      = sizeof(MemoryRegion),
     .instance_init      = memory_region_initfn,
     .instance_finalize  = memory_region_finalize,
-- 
2.21.0



^ permalink raw reply	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PULL 05/29] queue: Drop superfluous #include qemu/atomic.h
  2019-08-13 15:46 [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13 Markus Armbruster
                   ` (3 preceding siblings ...)
  2019-08-13 15:46 ` [Qemu-devel] [PULL 04/29] memory: Fix type of IOMMUMemoryRegionClass member @parent_class Markus Armbruster
@ 2019-08-13 15:46 ` Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 06/29] trace: Eliminate use of TARGET_FMT_plx Markus Armbruster
                   ` (24 subsequent siblings)
  29 siblings, 0 replies; 34+ messages in thread
From: Markus Armbruster @ 2019-08-13 15:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Alex Bennée, Thomas Huth, Philippe Mathieu-Daudé

When commit 5f7d05ecfda added QLIST_INSERT_HEAD_RCU() to qemu/queue.h,
it had to include qemu/atomic.h.  Commit 341774fe6cc removed
QLIST_INSERT_HEAD_RCU() again, but neglected to remove the #include.
Do that now.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20190812052359.30071-6-armbru@redhat.com>
---
 include/qemu/queue.h | 2 --
 1 file changed, 2 deletions(-)

diff --git a/include/qemu/queue.h b/include/qemu/queue.h
index 0379bd8fdb..73bf4a984d 100644
--- a/include/qemu/queue.h
+++ b/include/qemu/queue.h
@@ -78,8 +78,6 @@
  * For details on the use of these macros, see the queue(3) manual page.
  */
 
-#include "qemu/atomic.h" /* for smp_wmb() */
-
 /*
  * List definitions.
  */
-- 
2.21.0



^ permalink raw reply	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PULL 06/29] trace: Eliminate use of TARGET_FMT_plx
  2019-08-13 15:46 [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13 Markus Armbruster
                   ` (4 preceding siblings ...)
  2019-08-13 15:46 ` [Qemu-devel] [PULL 05/29] queue: Drop superfluous #include qemu/atomic.h Markus Armbruster
@ 2019-08-13 15:46 ` Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 07/29] trace: Do not include qom/cpu.h into generated trace.h Markus Armbruster
                   ` (23 subsequent siblings)
  29 siblings, 0 replies; 34+ messages in thread
From: Markus Armbruster @ 2019-08-13 15:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Philippe Mathieu-Daudé, Stefan Hajnoczi

hw/tpm/trace-events uses TARGET_FMT_plx formats with uint64_t
arguments.  That's wrong, TARGET_FMT_plx takes hwaddr.  Since hwaddr
happens to be uint64_t, it works anyway.  Messed up in commit
ec427498da5, v2.12.0.  Clean up by replacing TARGET_FMT_plx with its
macro expansion.

scripts/tracetool/format/log_stap.py (commit 62dd1048c0b, v4.0.0) has
a special case for TARGET_FMT_plx.  Delete it.

Cc: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20190812052359.30071-7-armbru@redhat.com>
---
 hw/tpm/trace-events                  | 4 ++--
 scripts/tracetool/format/log_stap.py | 3 ---
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/hw/tpm/trace-events b/hw/tpm/trace-events
index 0b94aa1526..89804bcd64 100644
--- a/hw/tpm/trace-events
+++ b/hw/tpm/trace-events
@@ -1,8 +1,8 @@
 # See docs/devel/tracing.txt for syntax documentation.
 
 # tpm_crb.c
-tpm_crb_mmio_read(uint64_t addr, unsigned size, uint32_t val) "CRB read 0x" TARGET_FMT_plx " len:%u val: 0x%" PRIx32
-tpm_crb_mmio_write(uint64_t addr, unsigned size, uint32_t val) "CRB write 0x" TARGET_FMT_plx " len:%u val: 0x%" PRIx32
+tpm_crb_mmio_read(uint64_t addr, unsigned size, uint32_t val) "CRB read 0x%016" PRIx64 " len:%u val: 0x%" PRIx32
+tpm_crb_mmio_write(uint64_t addr, unsigned size, uint32_t val) "CRB write 0x%016" PRIx64 " len:%u val: 0x%" PRIx32
 
 # tpm_passthrough.c
 tpm_passthrough_handle_request(void *cmd) "processing command %p"
diff --git a/scripts/tracetool/format/log_stap.py b/scripts/tracetool/format/log_stap.py
index 3ccbc09d61..9ab0cf2cce 100644
--- a/scripts/tracetool/format/log_stap.py
+++ b/scripts/tracetool/format/log_stap.py
@@ -30,9 +30,6 @@ def c_macro_to_format(macro):
     if macro.startswith("PRI"):
         return macro[3]
 
-    if macro == "TARGET_FMT_plx":
-        return "%016x"
-
     raise Exception("Unhandled macro '%s'" % macro)
 
 def c_fmt_to_stap(fmt):
-- 
2.21.0



^ permalink raw reply	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PULL 07/29] trace: Do not include qom/cpu.h into generated trace.h
  2019-08-13 15:46 [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13 Markus Armbruster
                   ` (5 preceding siblings ...)
  2019-08-13 15:46 ` [Qemu-devel] [PULL 06/29] trace: Eliminate use of TARGET_FMT_plx Markus Armbruster
@ 2019-08-13 15:46 ` Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 08/29] Include sysemu/reset.h a lot less Markus Armbruster
                   ` (22 subsequent siblings)
  29 siblings, 0 replies; 34+ messages in thread
From: Markus Armbruster @ 2019-08-13 15:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Philippe Mathieu-Daudé, Stefan Hajnoczi

docs/devel/tracing.txt explains "since many source files include
trace.h, [the generated trace.h use] a minimum of types and other
header files included to keep the namespace clean and compile times
and dependencies down."

Commit 4815185902 "trace: Add per-vCPU tracing states for events with
the 'vcpu' property" made them all include qom/cpu.h via
control-internal.h.  qom/cpu.h in turn includes about thirty headers.
Ouch.

Per-vCPU tracing is currently not supported in sub-directories'
trace-events.  In other words, qom/cpu.h can only be used in
trace-root.h, not in any trace.h.

Split trace/control-vcpu.h off trace/control.h and
trace/control-internal.h.  Have the generated trace.h include
trace/control.h (which no longer includes qom/cpu.h), and trace-root.h
include trace/control-vcpu.h (which includes it).

The resulting improvement is a bit disappointing: in my "build
everything" tree, some 1100 out of 6600 objects (not counting tests
and objects that don't depend on qemu/osdep.h) depend on a trace.h,
and about 600 of them no longer depend on qom/cpu.h.  But more than
1300 others depend on trace-root.h.  More work is clearly needed.
Left for another day.

Cc: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190812052359.30071-8-armbru@redhat.com>
---
 trace/control-internal.h      | 25 --------------
 trace/control-vcpu.h          | 63 +++++++++++++++++++++++++++++++++++
 trace/control.h               | 24 -------------
 block/block-backend.c         |  1 +
 qom/object.c                  |  1 +
 trace/qmp.c                   |  2 +-
 ui/vnc.c                      |  1 +
 scripts/tracetool/format/c.py |  1 +
 scripts/tracetool/format/h.py |  7 +++-
 9 files changed, 74 insertions(+), 51 deletions(-)
 create mode 100644 trace/control-vcpu.h

diff --git a/trace/control-internal.h b/trace/control-internal.h
index c7fbe2d3bf..8b2b50a7cf 100644
--- a/trace/control-internal.h
+++ b/trace/control-internal.h
@@ -10,9 +10,6 @@
 #ifndef TRACE__CONTROL_INTERNAL_H
 #define TRACE__CONTROL_INTERNAL_H
 
-#include "qom/cpu.h"
-
-
 extern int trace_events_enabled_count;
 
 
@@ -59,28 +56,6 @@ static inline bool trace_event_get_state_dynamic(TraceEvent *ev)
     return unlikely(trace_events_enabled_count) && *ev->dstate;
 }
 
-static inline bool
-trace_event_get_vcpu_state_dynamic_by_vcpu_id(CPUState *vcpu,
-                                              uint32_t vcpu_id)
-{
-    /* it's on fast path, avoid consistency checks (asserts) */
-    if (unlikely(trace_events_enabled_count)) {
-        return test_bit(vcpu_id, vcpu->trace_dstate);
-    } else {
-        return false;
-    }
-}
-
-static inline bool trace_event_get_vcpu_state_dynamic(CPUState *vcpu,
-                                                      TraceEvent *ev)
-{
-    uint32_t vcpu_id;
-    assert(trace_event_is_vcpu(ev));
-    vcpu_id = trace_event_get_vcpu_id(ev);
-    return trace_event_get_vcpu_state_dynamic_by_vcpu_id(vcpu, vcpu_id);
-}
-
-
 void trace_event_register_group(TraceEvent **events);
 
 #endif /* TRACE__CONTROL_INTERNAL_H */
diff --git a/trace/control-vcpu.h b/trace/control-vcpu.h
new file mode 100644
index 0000000000..a8f1035c2e
--- /dev/null
+++ b/trace/control-vcpu.h
@@ -0,0 +1,63 @@
+/*
+ * Interface for configuring and controlling the state of tracing events.
+ *
+ * Copyright (C) 2011-2016 Lluís Vilanova <vilanova@ac.upc.edu>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+#ifndef TRACE__CONTROL_VCPU_H
+#define TRACE__CONTROL_VCPU_H
+
+#include "control.h"
+#include "event-internal.h"
+#include "qom/cpu.h"
+
+/**
+ * trace_event_get_vcpu_state:
+ * @vcpu: Target vCPU.
+ * @id: Event identifier name.
+ *
+ * Get the tracing state of an event (both static and dynamic) for the given
+ * vCPU.
+ *
+ * If the event has the disabled property, the check will have no performance
+ * impact.
+ */
+#define trace_event_get_vcpu_state(vcpu, id)                            \
+    ((id ##_ENABLED) &&                                                 \
+     trace_event_get_vcpu_state_dynamic_by_vcpu_id(                     \
+         vcpu, _ ## id ## _EVENT.vcpu_id))
+
+/**
+ * trace_event_get_vcpu_state_dynamic:
+ *
+ * Get the dynamic tracing state of an event for the given vCPU.
+ */
+static bool trace_event_get_vcpu_state_dynamic(CPUState *vcpu, TraceEvent *ev);
+
+#include "control-internal.h"
+
+static inline bool
+trace_event_get_vcpu_state_dynamic_by_vcpu_id(CPUState *vcpu,
+                                              uint32_t vcpu_id)
+{
+    /* it's on fast path, avoid consistency checks (asserts) */
+    if (unlikely(trace_events_enabled_count)) {
+        return test_bit(vcpu_id, vcpu->trace_dstate);
+    } else {
+        return false;
+    }
+}
+
+static inline bool trace_event_get_vcpu_state_dynamic(CPUState *vcpu,
+                                                      TraceEvent *ev)
+{
+    uint32_t vcpu_id;
+    assert(trace_event_is_vcpu(ev));
+    vcpu_id = trace_event_get_vcpu_id(ev);
+    return trace_event_get_vcpu_state_dynamic_by_vcpu_id(vcpu, vcpu_id);
+}
+
+#endif
diff --git a/trace/control.h b/trace/control.h
index 570492d6e8..1f81c491b6 100644
--- a/trace/control.h
+++ b/trace/control.h
@@ -119,22 +119,6 @@ static const char * trace_event_get_name(TraceEvent *ev);
 #define trace_event_get_state_backends(id)              \
     ((id ##_ENABLED) && id ##_BACKEND_DSTATE())
 
-/**
- * trace_event_get_vcpu_state:
- * @vcpu: Target vCPU.
- * @id: Event identifier name.
- *
- * Get the tracing state of an event (both static and dynamic) for the given
- * vCPU.
- *
- * If the event has the disabled property, the check will have no performance
- * impact.
- */
-#define trace_event_get_vcpu_state(vcpu, id)                            \
-    ((id ##_ENABLED) &&                                                 \
-     trace_event_get_vcpu_state_dynamic_by_vcpu_id(                     \
-         vcpu, _ ## id ## _EVENT.vcpu_id))
-
 /**
  * trace_event_get_state_static:
  * @id: Event identifier.
@@ -155,14 +139,6 @@ static bool trace_event_get_state_static(TraceEvent *ev);
  */
 static bool trace_event_get_state_dynamic(TraceEvent *ev);
 
-/**
- * trace_event_get_vcpu_state_dynamic:
- *
- * Get the dynamic tracing state of an event for the given vCPU.
- */
-static bool trace_event_get_vcpu_state_dynamic(CPUState *vcpu, TraceEvent *ev);
-
-
 /**
  * trace_event_set_state_dynamic:
  *
diff --git a/block/block-backend.c b/block/block-backend.c
index 0056b526b8..6aed80bf0b 100644
--- a/block/block-backend.c
+++ b/block/block-backend.c
@@ -15,6 +15,7 @@
 #include "block/block_int.h"
 #include "block/blockjob.h"
 #include "block/throttle-groups.h"
+#include "hw/qdev-core.h"
 #include "sysemu/blockdev.h"
 #include "sysemu/sysemu.h"
 #include "qapi/error.h"
diff --git a/qom/object.c b/qom/object.c
index 1555547727..6fa9c619fa 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -11,6 +11,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/qdev-core.h"
 #include "qapi/error.h"
 #include "qom/object.h"
 #include "qom/object_interfaces.h"
diff --git a/trace/qmp.c b/trace/qmp.c
index ea99b00956..38246e1aa6 100644
--- a/trace/qmp.c
+++ b/trace/qmp.c
@@ -10,7 +10,7 @@
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "qapi/qapi-commands-trace.h"
-#include "control.h"
+#include "control-vcpu.h"
 
 
 static CPUState *get_cpu(bool has_vcpu, int vcpu, Error **errp)
diff --git a/ui/vnc.c b/ui/vnc.c
index 38f92bfca3..f47f726681 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -28,6 +28,7 @@
 #include "vnc.h"
 #include "vnc-jobs.h"
 #include "trace.h"
+#include "hw/qdev-core.h"
 #include "sysemu/sysemu.h"
 #include "qemu/error-report.h"
 #include "qemu/module.h"
diff --git a/scripts/tracetool/format/c.py b/scripts/tracetool/format/c.py
index 833c05a022..31207961b0 100644
--- a/scripts/tracetool/format/c.py
+++ b/scripts/tracetool/format/c.py
@@ -28,6 +28,7 @@ def generate(events, backend, group):
     out('/* This file is autogenerated by tracetool, do not edit. */',
         '',
         '#include "qemu/osdep.h"',
+        '#include "qemu/module.h"',
         '#include "%s"' % header,
         '')
 
diff --git a/scripts/tracetool/format/h.py b/scripts/tracetool/format/h.py
index 338a2365ee..5596b304e6 100644
--- a/scripts/tracetool/format/h.py
+++ b/scripts/tracetool/format/h.py
@@ -17,12 +17,17 @@ from tracetool import out
 
 
 def generate(events, backend, group):
+    if group == "root":
+        header = "trace/control-vcpu.h"
+    else:
+        header = "trace/control.h"
+
     out('/* This file is autogenerated by tracetool, do not edit. */',
         '',
         '#ifndef TRACE_%s_GENERATED_TRACERS_H' % group.upper(),
         '#define TRACE_%s_GENERATED_TRACERS_H' % group.upper(),
         '',
-        '#include "trace/control.h"',
+        '#include "%s"' % header,
         '')
 
     for e in events:
-- 
2.21.0



^ permalink raw reply	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PULL 08/29] Include sysemu/reset.h a lot less
  2019-08-13 15:46 [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13 Markus Armbruster
                   ` (6 preceding siblings ...)
  2019-08-13 15:46 ` [Qemu-devel] [PULL 07/29] trace: Do not include qom/cpu.h into generated trace.h Markus Armbruster
@ 2019-08-13 15:46 ` Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 09/29] Include migration/qemu-file-types.h " Markus Armbruster
                   ` (21 subsequent siblings)
  29 siblings, 0 replies; 34+ messages in thread
From: Markus Armbruster @ 2019-08-13 15:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Alistair Francis, Philippe Mathieu-Daudé

In my "build everything" tree, changing sysemu/reset.h triggers a
recompile of some 2600 out of 6600 objects (not counting tests and
objects that don't depend on qemu/osdep.h).

The main culprit is hw/hw.h, which supposedly includes it for
convenience.

Include sysemu/reset.h only where it's needed.  Touching it now
recompiles less than 200 objects.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190812052359.30071-9-armbru@redhat.com>
---
 include/hw/hw.h            | 1 -
 hw/acpi/ich9.c             | 2 ++
 hw/acpi/piix4.c            | 2 ++
 hw/acpi/vmgenid.c          | 1 +
 hw/arm/armv7m.c            | 1 +
 hw/arm/boot.c              | 1 +
 hw/arm/nseries.c           | 1 +
 hw/arm/omap1.c             | 1 +
 hw/arm/omap2.c             | 1 +
 hw/arm/virt-acpi-build.c   | 1 +
 hw/char/parallel.c         | 1 +
 hw/char/serial.c           | 1 +
 hw/core/generic-loader.c   | 1 +
 hw/core/loader.c           | 1 +
 hw/cris/boot.c             | 1 +
 hw/display/cirrus_vga.c    | 1 +
 hw/display/ramfb.c         | 2 ++
 hw/display/vga.c           | 2 ++
 hw/hppa/machine.c          | 1 +
 hw/i386/acpi-build.c       | 1 +
 hw/i386/pc.c               | 1 +
 hw/ide/cmd646.c            | 1 +
 hw/ide/piix.c              | 1 +
 hw/ide/sii3112.c           | 1 +
 hw/ide/via.c               | 1 +
 hw/input/lm832x.c          | 1 +
 hw/input/pckbd.c           | 2 ++
 hw/input/ps2.c             | 2 ++
 hw/input/tsc2005.c         | 1 +
 hw/input/tsc210x.c         | 1 +
 hw/intc/mips_gic.c         | 1 +
 hw/intc/pnv_xive.c         | 1 +
 hw/intc/spapr_xive.c       | 1 +
 hw/intc/xics.c             | 1 +
 hw/intc/xive.c             | 1 +
 hw/isa/piix4.c             | 1 +
 hw/isa/vt82c686.c          | 1 +
 hw/lm32/lm32_boards.c      | 1 +
 hw/lm32/milkymist.c        | 1 +
 hw/microblaze/boot.c       | 1 +
 hw/mips/cps.c              | 1 +
 hw/mips/mips_fulong2e.c    | 1 +
 hw/mips/mips_jazz.c        | 1 +
 hw/mips/mips_malta.c       | 1 +
 hw/mips/mips_mipssim.c     | 2 ++
 hw/mips/mips_r4k.c         | 2 ++
 hw/misc/vmcoreinfo.c       | 1 +
 hw/moxie/moxiesim.c        | 2 ++
 hw/net/eepro100.c          | 1 +
 hw/nios2/boot.c            | 1 +
 hw/nvram/fw_cfg.c          | 1 +
 hw/openrisc/openrisc_sim.c | 1 +
 hw/pci-host/bonito.c       | 1 +
 hw/pci-host/piix.c         | 1 +
 hw/ppc/e500.c              | 1 +
 hw/ppc/mac_newworld.c      | 1 +
 hw/ppc/mac_oldworld.c      | 1 +
 hw/ppc/pnv.c               | 1 +
 hw/ppc/pnv_core.c          | 1 +
 hw/ppc/pnv_psi.c           | 1 +
 hw/ppc/ppc405_boards.c     | 2 ++
 hw/ppc/ppc405_uc.c         | 2 ++
 hw/ppc/ppc440_bamboo.c     | 1 +
 hw/ppc/ppc440_uc.c         | 1 +
 hw/ppc/ppc4xx_devs.c       | 2 ++
 hw/ppc/ppc4xx_pci.c        | 1 +
 hw/ppc/ppc_booke.c         | 2 ++
 hw/ppc/prep.c              | 2 ++
 hw/ppc/sam460ex.c          | 1 +
 hw/ppc/spapr.c             | 1 +
 hw/ppc/spapr_cpu_core.c    | 2 ++
 hw/ppc/spapr_drc.c         | 1 +
 hw/ppc/virtex_ml507.c      | 1 +
 hw/riscv/riscv_hart.c      | 1 +
 hw/s390x/ipl.c             | 1 +
 hw/s390x/s390-virtio-ccw.c | 1 +
 hw/sh4/r2d.c               | 1 +
 hw/sparc/leon3.c           | 2 ++
 hw/sparc/sun4m.c           | 2 ++
 hw/sparc64/sparc64.c       | 1 +
 hw/timer/etraxfs_timer.c   | 1 +
 hw/timer/mc146818rtc.c     | 1 +
 hw/tpm/tpm_ppi.c           | 1 -
 hw/vfio/common.c           | 1 +
 hw/watchdog/wdt_diag288.c  | 1 +
 hw/xtensa/sim.c            | 1 +
 hw/xtensa/xtfpga.c         | 1 +
 target/i386/cpu.c          | 1 +
 target/i386/hax-all.c      | 1 +
 target/i386/kvm.c          | 1 +
 target/s390x/cpu.c         | 1 +
 vl.c                       | 1 +
 92 files changed, 107 insertions(+), 2 deletions(-)

diff --git a/include/hw/hw.h b/include/hw/hw.h
index b1b79964b5..a4fb2390e8 100644
--- a/include/hw/hw.h
+++ b/include/hw/hw.h
@@ -12,7 +12,6 @@
 #include "hw/irq.h"
 #include "migration/vmstate.h"
 #include "migration/qemu-file-types.h"
-#include "sysemu/reset.h"
 
 void QEMU_NORETURN hw_error(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
 
diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c
index e53dfe1ee3..b4d987c811 100644
--- a/hw/acpi/ich9.c
+++ b/hw/acpi/ich9.c
@@ -23,6 +23,7 @@
  * Contributions after 2012-01-13 are licensed under the terms of the
  * GNU GPL, version 2 or (at your option) any later version.
  */
+
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "qapi/error.h"
@@ -30,6 +31,7 @@
 #include "hw/i386/pc.h"
 #include "hw/pci/pci.h"
 #include "qemu/timer.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "hw/acpi/acpi.h"
 #include "hw/acpi/tco.h"
diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c
index ec4e186cec..a59e58d937 100644
--- a/hw/acpi/piix4.c
+++ b/hw/acpi/piix4.c
@@ -18,6 +18,7 @@
  * Contributions after 2012-01-13 are licensed under the terms of the
  * GNU GPL, version 2 or (at your option) any later version.
  */
+
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/i386/pc.h"
@@ -25,6 +26,7 @@
 #include "hw/i2c/pm_smbus.h"
 #include "hw/pci/pci.h"
 #include "hw/acpi/acpi.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "qapi/error.h"
 #include "qemu/range.h"
diff --git a/hw/acpi/vmgenid.c b/hw/acpi/vmgenid.c
index b891df375f..ed92ccc4b8 100644
--- a/hw/acpi/vmgenid.c
+++ b/hw/acpi/vmgenid.c
@@ -18,6 +18,7 @@
 #include "hw/acpi/aml-build.h"
 #include "hw/acpi/vmgenid.h"
 #include "hw/nvram/fw_cfg.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 
 void vmgenid_build_acpi(VmGenIdState *vms, GArray *table_data, GArray *guid,
diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c
index b9efad6bac..4b2d8b6574 100644
--- a/hw/arm/armv7m.c
+++ b/hw/arm/armv7m.c
@@ -16,6 +16,7 @@
 #include "hw/loader.h"
 #include "elf.h"
 #include "sysemu/qtest.h"
+#include "sysemu/reset.h"
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 #include "exec/address-spaces.h"
diff --git a/hw/arm/boot.c b/hw/arm/boot.c
index c2b89b3bb9..d082daf6f2 100644
--- a/hw/arm/boot.c
+++ b/hw/arm/boot.c
@@ -18,6 +18,7 @@
 #include "sysemu/kvm.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/numa.h"
+#include "sysemu/reset.h"
 #include "hw/boards.h"
 #include "hw/loader.h"
 #include "elf.h"
diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
index 4a79f5c88b..3f3eca52e2 100644
--- a/hw/arm/nseries.c
+++ b/hw/arm/nseries.c
@@ -23,6 +23,7 @@
 #include "cpu.h"
 #include "qemu/cutils.h"
 #include "qemu/bswap.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "hw/arm/omap.h"
 #include "hw/arm/boot.h"
diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c
index 28fbe275a8..beaddaf11f 100644
--- a/hw/arm/omap1.c
+++ b/hw/arm/omap1.c
@@ -29,6 +29,7 @@
 #include "sysemu/sysemu.h"
 #include "hw/arm/soc_dma.h"
 #include "sysemu/qtest.h"
+#include "sysemu/reset.h"
 #include "qemu/range.h"
 #include "hw/sysbus.h"
 #include "qemu/cutils.h"
diff --git a/hw/arm/omap2.c b/hw/arm/omap2.c
index 87ced7f3a2..7d4cac1f46 100644
--- a/hw/arm/omap2.c
+++ b/hw/arm/omap2.c
@@ -23,6 +23,7 @@
 #include "qapi/error.h"
 #include "cpu.h"
 #include "sysemu/qtest.h"
+#include "sysemu/reset.h"
 #include "hw/boards.h"
 #include "hw/hw.h"
 #include "hw/arm/boot.h"
diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
index 0afb372769..ad54d65ea0 100644
--- a/hw/arm/virt-acpi-build.c
+++ b/hw/arm/virt-acpi-build.c
@@ -44,6 +44,7 @@
 #include "hw/pci/pci.h"
 #include "hw/arm/virt.h"
 #include "sysemu/numa.h"
+#include "sysemu/reset.h"
 #include "kvm_arm.h"
 
 #define ARM_SPI_BASE 32
diff --git a/hw/char/parallel.c b/hw/char/parallel.c
index 1cd4c54a02..fed15dc548 100644
--- a/hw/char/parallel.c
+++ b/hw/char/parallel.c
@@ -31,6 +31,7 @@
 #include "chardev/char-fe.h"
 #include "hw/isa/isa.h"
 #include "hw/char/parallel.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "trace.h"
 
diff --git a/hw/char/serial.c b/hw/char/serial.c
index 7c42a2abfc..a9e42f7d97 100644
--- a/hw/char/serial.c
+++ b/hw/char/serial.c
@@ -28,6 +28,7 @@
 #include "chardev/char-serial.h"
 #include "qapi/error.h"
 #include "qemu/timer.h"
+#include "sysemu/reset.h"
 #include "qemu/error-report.h"
 #include "trace.h"
 
diff --git a/hw/core/generic-loader.c b/hw/core/generic-loader.c
index 79a493e577..579fe5ed32 100644
--- a/hw/core/generic-loader.c
+++ b/hw/core/generic-loader.c
@@ -34,6 +34,7 @@
 #include "qom/cpu.h"
 #include "hw/sysbus.h"
 #include "sysemu/dma.h"
+#include "sysemu/reset.h"
 #include "hw/loader.h"
 #include "qapi/error.h"
 #include "qemu/module.h"
diff --git a/hw/core/loader.c b/hw/core/loader.c
index 425bf69a99..830845dd73 100644
--- a/hw/core/loader.c
+++ b/hw/core/loader.c
@@ -48,6 +48,7 @@
 #include "hw/hw.h"
 #include "disas/disas.h"
 #include "monitor/monitor.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "uboot_image.h"
 #include "hw/loader.h"
diff --git a/hw/cris/boot.c b/hw/cris/boot.c
index 602f538ef6..d44fdec43f 100644
--- a/hw/cris/boot.c
+++ b/hw/cris/boot.c
@@ -29,6 +29,7 @@
 #include "elf.h"
 #include "boot.h"
 #include "qemu/cutils.h"
+#include "sysemu/reset.h"
 
 static void main_cpu_reset(void *opaque)
 {
diff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c
index 2e4911a1e3..4ccf5b4f18 100644
--- a/hw/display/cirrus_vga.c
+++ b/hw/display/cirrus_vga.c
@@ -35,6 +35,7 @@
 #include "qemu/osdep.h"
 #include "qemu/module.h"
 #include "qemu/units.h"
+#include "sysemu/reset.h"
 #include "qapi/error.h"
 #include "trace.h"
 #include "hw/hw.h"
diff --git a/hw/display/ramfb.c b/hw/display/ramfb.c
index b4eb283ef8..6026a35b11 100644
--- a/hw/display/ramfb.c
+++ b/hw/display/ramfb.c
@@ -10,12 +10,14 @@
  * This work is licensed under the terms of the GNU GPL, version 2 or later.
  * See the COPYING file in the top-level directory.
  */
+
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "qemu/option.h"
 #include "hw/loader.h"
 #include "hw/display/ramfb.h"
 #include "ui/console.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 
 struct QEMU_PACKED RAMFBCfg {
diff --git a/hw/display/vga.c b/hw/display/vga.c
index 910a23c12e..4d3572891a 100644
--- a/hw/display/vga.c
+++ b/hw/display/vga.c
@@ -21,8 +21,10 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "qemu/units.h"
+#include "sysemu/reset.h"
 #include "qapi/error.h"
 #include "hw/hw.h"
 #include "hw/display/vga.h"
diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
index 662838d83b..bc74438496 100644
--- a/hw/hppa/machine.c
+++ b/hw/hppa/machine.c
@@ -11,6 +11,7 @@
 #include "hw/loader.h"
 #include "hw/boards.h"
 #include "qemu/error-report.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "hw/timer/mc146818rtc.h"
 #include "hw/ide.h"
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index f3fdfefcd5..74667a53be 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -48,6 +48,7 @@
 #include "hw/timer/mc146818rtc_regs.h"
 #include "hw/mem/memory-device.h"
 #include "sysemu/numa.h"
+#include "sysemu/reset.h"
 
 /* Supported chipsets: */
 #include "hw/acpi/piix4.h"
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 549c437050..73b55500b0 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -54,6 +54,7 @@
 #include "sysemu/numa.h"
 #include "sysemu/kvm.h"
 #include "sysemu/qtest.h"
+#include "sysemu/reset.h"
 #include "kvm_i386.h"
 #include "hw/xen/xen.h"
 #include "hw/xen/start_info.h"
diff --git a/hw/ide/cmd646.c b/hw/ide/cmd646.c
index ed23aabf21..e5542c9811 100644
--- a/hw/ide/cmd646.c
+++ b/hw/ide/cmd646.c
@@ -30,6 +30,7 @@
 #include "hw/isa/isa.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/dma.h"
+#include "sysemu/reset.h"
 
 #include "hw/ide/pci.h"
 #include "trace.h"
diff --git a/hw/ide/piix.c b/hw/ide/piix.c
index b97e555072..c4c6d4b760 100644
--- a/hw/ide/piix.c
+++ b/hw/ide/piix.c
@@ -31,6 +31,7 @@
 #include "sysemu/sysemu.h"
 #include "sysemu/blockdev.h"
 #include "sysemu/dma.h"
+#include "sysemu/reset.h"
 
 #include "hw/ide/pci.h"
 #include "trace.h"
diff --git a/hw/ide/sii3112.c b/hw/ide/sii3112.c
index d7590d4ba4..2181260531 100644
--- a/hw/ide/sii3112.c
+++ b/hw/ide/sii3112.c
@@ -15,6 +15,7 @@
 #include "qemu/osdep.h"
 #include "hw/ide/pci.h"
 #include "qemu/module.h"
+#include "sysemu/reset.h"
 #include "trace.h"
 
 #define TYPE_SII3112_PCI "sii3112"
diff --git a/hw/ide/via.c b/hw/ide/via.c
index c3bda909f9..6d54ac55f0 100644
--- a/hw/ide/via.c
+++ b/hw/ide/via.c
@@ -30,6 +30,7 @@
 #include "qemu/module.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/dma.h"
+#include "sysemu/reset.h"
 
 #include "hw/ide/pci.h"
 #include "trace.h"
diff --git a/hw/input/lm832x.c b/hw/input/lm832x.c
index 5203da2bcf..ebb72c6590 100644
--- a/hw/input/lm832x.c
+++ b/hw/input/lm832x.c
@@ -23,6 +23,7 @@
 #include "hw/i2c/i2c.h"
 #include "qemu/module.h"
 #include "qemu/timer.h"
+#include "sysemu/reset.h"
 #include "ui/console.h"
 
 #define TYPE_LM8323 "lm8323"
diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c
index 47a606f5e3..5d06a53362 100644
--- a/hw/input/pckbd.c
+++ b/hw/input/pckbd.c
@@ -21,6 +21,7 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "qemu/log.h"
 #include "hw/hw.h"
@@ -28,6 +29,7 @@
 #include "hw/i386/pc.h"
 #include "hw/input/ps2.h"
 #include "hw/input/i8042.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 
 #include "trace.h"
diff --git a/hw/input/ps2.c b/hw/input/ps2.c
index d3161f1e7c..8d922b05c9 100644
--- a/hw/input/ps2.c
+++ b/hw/input/ps2.c
@@ -21,12 +21,14 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "qemu/log.h"
 #include "hw/hw.h"
 #include "hw/input/ps2.h"
 #include "ui/console.h"
 #include "ui/input.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 
 #include "trace.h"
diff --git a/hw/input/tsc2005.c b/hw/input/tsc2005.c
index f82771e7a7..0a0431744c 100644
--- a/hw/input/tsc2005.c
+++ b/hw/input/tsc2005.c
@@ -22,6 +22,7 @@
 #include "qemu/log.h"
 #include "hw/hw.h"
 #include "qemu/timer.h"
+#include "sysemu/reset.h"
 #include "ui/console.h"
 #include "hw/input/tsc2xxx.h"
 #include "trace.h"
diff --git a/hw/input/tsc210x.c b/hw/input/tsc210x.c
index f94cb4683b..d2486f4b4e 100644
--- a/hw/input/tsc210x.c
+++ b/hw/input/tsc210x.c
@@ -23,6 +23,7 @@
 #include "hw/hw.h"
 #include "audio/audio.h"
 #include "qemu/timer.h"
+#include "sysemu/reset.h"
 #include "ui/console.h"
 #include "hw/arm/omap.h"            /* For I2SCodec */
 #include "hw/input/tsc2xxx.h"
diff --git a/hw/intc/mips_gic.c b/hw/intc/mips_gic.c
index 33ab51c5b8..e27e333766 100644
--- a/hw/intc/mips_gic.c
+++ b/hw/intc/mips_gic.c
@@ -18,6 +18,7 @@
 #include "exec/memory.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/kvm.h"
+#include "sysemu/reset.h"
 #include "kvm_mips.h"
 #include "hw/intc/mips_gic.h"
 
diff --git a/hw/intc/pnv_xive.c b/hw/intc/pnv_xive.c
index 4dc92ef1e3..63b0f461ec 100644
--- a/hw/intc/pnv_xive.c
+++ b/hw/intc/pnv_xive.c
@@ -14,6 +14,7 @@
 #include "target/ppc/cpu.h"
 #include "sysemu/cpus.h"
 #include "sysemu/dma.h"
+#include "sysemu/reset.h"
 #include "monitor/monitor.h"
 #include "hw/ppc/fdt.h"
 #include "hw/ppc/pnv.h"
diff --git a/hw/intc/spapr_xive.c b/hw/intc/spapr_xive.c
index 3ae311d9ff..2e39cc1e47 100644
--- a/hw/intc/spapr_xive.c
+++ b/hw/intc/spapr_xive.c
@@ -14,6 +14,7 @@
 #include "qemu/error-report.h"
 #include "target/ppc/cpu.h"
 #include "sysemu/cpus.h"
+#include "sysemu/reset.h"
 #include "monitor/monitor.h"
 #include "hw/ppc/fdt.h"
 #include "hw/ppc/spapr.h"
diff --git a/hw/intc/xics.c b/hw/intc/xics.c
index faa976e2f8..9ed224ce5f 100644
--- a/hw/intc/xics.c
+++ b/hw/intc/xics.c
@@ -38,6 +38,7 @@
 #include "monitor/monitor.h"
 #include "hw/intc/intc.h"
 #include "sysemu/kvm.h"
+#include "sysemu/reset.h"
 
 void icp_pic_print_info(ICPState *icp, Monitor *mon)
 {
diff --git a/hw/intc/xive.c b/hw/intc/xive.c
index cf77bdb7d3..b27d6b8646 100644
--- a/hw/intc/xive.c
+++ b/hw/intc/xive.c
@@ -14,6 +14,7 @@
 #include "target/ppc/cpu.h"
 #include "sysemu/cpus.h"
 #include "sysemu/dma.h"
+#include "sysemu/reset.h"
 #include "hw/qdev-properties.h"
 #include "monitor/monitor.h"
 #include "hw/ppc/xive.h"
diff --git a/hw/isa/piix4.c b/hw/isa/piix4.c
index 6b8bc3faf0..3677976ef7 100644
--- a/hw/isa/piix4.c
+++ b/hw/isa/piix4.c
@@ -28,6 +28,7 @@
 #include "hw/pci/pci.h"
 #include "hw/isa/isa.h"
 #include "hw/sysbus.h"
+#include "sysemu/reset.h"
 
 PCIDevice *piix4_dev;
 
diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c
index 12c460590f..81bffb1fb9 100644
--- a/hw/isa/vt82c686.c
+++ b/hw/isa/vt82c686.c
@@ -22,6 +22,7 @@
 #include "hw/isa/apm.h"
 #include "hw/acpi/acpi.h"
 #include "hw/i2c/pm_smbus.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "qemu/module.h"
 #include "qemu/timer.h"
diff --git a/hw/lm32/lm32_boards.c b/hw/lm32/lm32_boards.c
index fb9d52d54f..e075ebc8a6 100644
--- a/hw/lm32/lm32_boards.c
+++ b/hw/lm32/lm32_boards.c
@@ -30,6 +30,7 @@
 #include "lm32_hwsetup.h"
 #include "lm32.h"
 #include "exec/address-spaces.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 
 typedef struct {
diff --git a/hw/lm32/milkymist.c b/hw/lm32/milkymist.c
index 689e633199..33669ee19b 100644
--- a/hw/lm32/milkymist.c
+++ b/hw/lm32/milkymist.c
@@ -27,6 +27,7 @@
 #include "hw/block/flash.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/qtest.h"
+#include "sysemu/reset.h"
 #include "hw/boards.h"
 #include "hw/loader.h"
 #include "elf.h"
diff --git a/hw/microblaze/boot.c b/hw/microblaze/boot.c
index a7af4c0704..bade4d22c0 100644
--- a/hw/microblaze/boot.c
+++ b/hw/microblaze/boot.c
@@ -31,6 +31,7 @@
 #include "qemu/config-file.h"
 #include "qemu/error-report.h"
 #include "sysemu/device_tree.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "hw/loader.h"
 #include "elf.h"
diff --git a/hw/mips/cps.c b/hw/mips/cps.c
index 0d459c4141..aea6bcd7fe 100644
--- a/hw/mips/cps.c
+++ b/hw/mips/cps.c
@@ -24,6 +24,7 @@
 #include "hw/mips/mips.h"
 #include "hw/mips/cpudevs.h"
 #include "sysemu/kvm.h"
+#include "sysemu/reset.h"
 
 qemu_irq get_cps_irq(MIPSCPSState *s, int pin_number)
 {
diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
index 5dbaa3bfcc..0a1bf5ef5c 100644
--- a/hw/mips/mips_fulong2e.c
+++ b/hw/mips/mips_fulong2e.c
@@ -44,6 +44,7 @@
 #include "hw/timer/i8254.h"
 #include "exec/address-spaces.h"
 #include "sysemu/qtest.h"
+#include "sysemu/reset.h"
 #include "qemu/error-report.h"
 
 #define DEBUG_FULONG2E_INIT
diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
index fa8775d428..6ea25cd5f4 100644
--- a/hw/mips/mips_jazz.c
+++ b/hw/mips/mips_jazz.c
@@ -48,6 +48,7 @@
 #include "hw/sysbus.h"
 #include "exec/address-spaces.h"
 #include "sysemu/qtest.h"
+#include "sysemu/reset.h"
 #include "qapi/error.h"
 #include "qemu/error-report.h"
 #include "qemu/help_option.h"
diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
index 20e019bf66..29bc8de5cf 100644
--- a/hw/mips/mips_malta.c
+++ b/hw/mips/mips_malta.c
@@ -51,6 +51,7 @@
 #include "hw/sysbus.h"             /* SysBusDevice */
 #include "qemu/host-utils.h"
 #include "sysemu/qtest.h"
+#include "sysemu/reset.h"
 #include "qapi/error.h"
 #include "qemu/error-report.h"
 #include "hw/empty_slot.h"
diff --git a/hw/mips/mips_mipssim.c b/hw/mips/mips_mipssim.c
index 824abda657..280e76a482 100644
--- a/hw/mips/mips_mipssim.c
+++ b/hw/mips/mips_mipssim.c
@@ -24,6 +24,7 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
@@ -43,6 +44,7 @@
 #include "exec/address-spaces.h"
 #include "qemu/error-report.h"
 #include "sysemu/qtest.h"
+#include "sysemu/reset.h"
 
 static struct _loaderparams {
     int ram_size;
diff --git a/hw/mips/mips_r4k.c b/hw/mips/mips_r4k.c
index 93dbf76bb4..191047826d 100644
--- a/hw/mips/mips_r4k.c
+++ b/hw/mips/mips_r4k.c
@@ -7,6 +7,7 @@
  * All peripherial devices are attached to this "bus" with
  * the standard PC ISA addresses.
 */
+
 #include "qemu/osdep.h"
 #include "qemu/units.h"
 #include "qapi/error.h"
@@ -33,6 +34,7 @@
 #include "hw/timer/i8254.h"
 #include "exec/address-spaces.h"
 #include "sysemu/qtest.h"
+#include "sysemu/reset.h"
 #include "qemu/error-report.h"
 
 #define MAX_IDE_BUS 2
diff --git a/hw/misc/vmcoreinfo.c b/hw/misc/vmcoreinfo.c
index 987d6f52af..49e87d462b 100644
--- a/hw/misc/vmcoreinfo.c
+++ b/hw/misc/vmcoreinfo.c
@@ -13,6 +13,7 @@
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "qemu/module.h"
+#include "sysemu/reset.h"
 #include "hw/nvram/fw_cfg.h"
 #include "hw/misc/vmcoreinfo.h"
 
diff --git a/hw/moxie/moxiesim.c b/hw/moxie/moxiesim.c
index d771d393c2..16a7d58274 100644
--- a/hw/moxie/moxiesim.c
+++ b/hw/moxie/moxiesim.c
@@ -24,6 +24,7 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "qemu/error-report.h"
 #include "qapi/error.h"
@@ -31,6 +32,7 @@
 #include "hw/sysbus.h"
 #include "hw/hw.h"
 #include "net/net.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "hw/boards.h"
 #include "hw/loader.h"
diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c
index 6607c9142d..e0cf0c46d7 100644
--- a/hw/net/eepro100.c
+++ b/hw/net/eepro100.c
@@ -49,6 +49,7 @@
 #include "hw/nvram/eeprom93xx.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/dma.h"
+#include "sysemu/reset.h"
 #include "qemu/bitops.h"
 #include "qemu/module.h"
 #include "qapi/error.h"
diff --git a/hw/nios2/boot.c b/hw/nios2/boot.c
index 276068c842..d78bc9ed0e 100644
--- a/hw/nios2/boot.c
+++ b/hw/nios2/boot.c
@@ -36,6 +36,7 @@
 #include "qemu/config-file.h"
 #include "qemu/error-report.h"
 #include "sysemu/device_tree.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "hw/loader.h"
 #include "elf.h"
diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c
index dcfd6d2ed3..3032f1c65f 100644
--- a/hw/nvram/fw_cfg.c
+++ b/hw/nvram/fw_cfg.c
@@ -27,6 +27,7 @@
 #include "hw/hw.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/dma.h"
+#include "sysemu/reset.h"
 #include "hw/boards.h"
 #include "hw/nvram/fw_cfg.h"
 #include "hw/sysbus.h"
diff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c
index b85f0df323..cb2fc5ba78 100644
--- a/hw/openrisc/openrisc_sim.c
+++ b/hw/openrisc/openrisc_sim.c
@@ -32,6 +32,7 @@
 #include "sysemu/sysemu.h"
 #include "hw/sysbus.h"
 #include "sysemu/qtest.h"
+#include "sysemu/reset.h"
 
 #define KERNEL_LOAD_ADDR 0x100
 
diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c
index dde4437595..36c7ca45ad 100644
--- a/hw/pci-host/bonito.c
+++ b/hw/pci-host/bonito.c
@@ -44,6 +44,7 @@
 #include "hw/i386/pc.h"
 #include "hw/mips/mips.h"
 #include "hw/pci/pci_host.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "exec/address-spaces.h"
 
diff --git a/hw/pci-host/piix.c b/hw/pci-host/piix.c
index d9c70f7ce6..f3671d28b7 100644
--- a/hw/pci-host/piix.c
+++ b/hw/pci-host/piix.c
@@ -33,6 +33,7 @@
 #include "qemu/range.h"
 #include "hw/xen/xen.h"
 #include "hw/pci-host/pam.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "hw/i386/ioapic.h"
 #include "qapi/visitor.h"
diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index a3eac7f057..566f179bb1 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -28,6 +28,7 @@
 #include "hw/boards.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/kvm.h"
+#include "sysemu/reset.h"
 #include "kvm_ppc.h"
 #include "sysemu/device_tree.h"
 #include "hw/ppc/openpic.h"
diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index 09bc6068f3..0f9f351eb1 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -68,6 +68,7 @@
 #include "elf.h"
 #include "qemu/error-report.h"
 #include "sysemu/kvm.h"
+#include "sysemu/reset.h"
 #include "kvm_ppc.h"
 #include "hw/usb.h"
 #include "exec/address-spaces.h"
diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
index 9ffde5b6f7..6640057473 100644
--- a/hw/ppc/mac_oldworld.c
+++ b/hw/ppc/mac_oldworld.c
@@ -47,6 +47,7 @@
 #include "elf.h"
 #include "qemu/error-report.h"
 #include "sysemu/kvm.h"
+#include "sysemu/reset.h"
 #include "kvm_ppc.h"
 #include "exec/address-spaces.h"
 
diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
index bd4531c822..96608883aa 100644
--- a/hw/ppc/pnv.c
+++ b/hw/ppc/pnv.c
@@ -23,6 +23,7 @@
 #include "qapi/error.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/numa.h"
+#include "sysemu/reset.h"
 #include "sysemu/cpus.h"
 #include "sysemu/device_tree.h"
 #include "hw/hw.h"
diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
index c6411ecc1d..ff477ba6c9 100644
--- a/hw/ppc/pnv_core.c
+++ b/hw/ppc/pnv_core.c
@@ -18,6 +18,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "qapi/error.h"
 #include "qemu/log.h"
diff --git a/hw/ppc/pnv_psi.c b/hw/ppc/pnv_psi.c
index d7b6f5d75b..6b26d0f6bc 100644
--- a/hw/ppc/pnv_psi.c
+++ b/hw/ppc/pnv_psi.c
@@ -22,6 +22,7 @@
 #include "target/ppc/cpu.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
+#include "sysemu/reset.h"
 #include "qapi/error.h"
 #include "monitor/monitor.h"
 
diff --git a/hw/ppc/ppc405_boards.c b/hw/ppc/ppc405_boards.c
index 13318a9faf..5b278e7791 100644
--- a/hw/ppc/ppc405_boards.c
+++ b/hw/ppc/ppc405_boards.c
@@ -21,6 +21,7 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "qemu/units.h"
 #include "qapi/error.h"
@@ -33,6 +34,7 @@
 #include "hw/block/flash.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/qtest.h"
+#include "sysemu/reset.h"
 #include "sysemu/block-backend.h"
 #include "hw/boards.h"
 #include "qemu/log.h"
diff --git a/hw/ppc/ppc405_uc.c b/hw/ppc/ppc405_uc.c
index edb6b2d190..f9d98fe71e 100644
--- a/hw/ppc/ppc405_uc.c
+++ b/hw/ppc/ppc405_uc.c
@@ -21,6 +21,7 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "qemu/units.h"
 #include "qapi/error.h"
@@ -32,6 +33,7 @@
 #include "ppc405.h"
 #include "hw/char/serial.h"
 #include "qemu/timer.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "qemu/log.h"
 #include "exec/address-spaces.h"
diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c
index b4da099e3e..1bd92aa749 100644
--- a/hw/ppc/ppc440_bamboo.c
+++ b/hw/ppc/ppc440_bamboo.c
@@ -31,6 +31,7 @@
 #include "ppc405.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/qtest.h"
+#include "sysemu/reset.h"
 #include "hw/sysbus.h"
 
 #define BINARY_DEVICE_TREE_FILE "bamboo.dtb"
diff --git a/hw/ppc/ppc440_uc.c b/hw/ppc/ppc440_uc.c
index 5c1a53d6e7..7329cfe651 100644
--- a/hw/ppc/ppc440_uc.c
+++ b/hw/ppc/ppc440_uc.c
@@ -21,6 +21,7 @@
 #include "hw/ppc/ppc.h"
 #include "hw/pci/pci.h"
 #include "sysemu/block-backend.h"
+#include "sysemu/reset.h"
 #include "ppc440.h"
 
 /*****************************************************************************/
diff --git a/hw/ppc/ppc4xx_devs.c b/hw/ppc/ppc4xx_devs.c
index fdfeb67e65..e62bef3b8d 100644
--- a/hw/ppc/ppc4xx_devs.c
+++ b/hw/ppc/ppc4xx_devs.c
@@ -21,8 +21,10 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "qemu/units.h"
+#include "sysemu/reset.h"
 #include "cpu.h"
 #include "hw/hw.h"
 #include "hw/ppc/ppc.h"
diff --git a/hw/ppc/ppc4xx_pci.c b/hw/ppc/ppc4xx_pci.c
index e7cf8d50a5..b013319c60 100644
--- a/hw/ppc/ppc4xx_pci.c
+++ b/hw/ppc/ppc4xx_pci.c
@@ -24,6 +24,7 @@
 #include "hw/ppc/ppc.h"
 #include "hw/ppc/ppc4xx.h"
 #include "qemu/module.h"
+#include "sysemu/reset.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_host.h"
 #include "exec/address-spaces.h"
diff --git a/hw/ppc/ppc_booke.c b/hw/ppc/ppc_booke.c
index 18d1457581..ba5f513ca5 100644
--- a/hw/ppc/ppc_booke.c
+++ b/hw/ppc/ppc_booke.c
@@ -21,11 +21,13 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "cpu.h"
 #include "hw/hw.h"
 #include "hw/ppc/ppc.h"
 #include "qemu/timer.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "qemu/log.h"
 #include "hw/loader.h"
diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
index ab3c1df1fc..84e968e28c 100644
--- a/hw/ppc/prep.c
+++ b/hw/ppc/prep.c
@@ -22,6 +22,7 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "cpu.h"
 #include "hw/hw.h"
@@ -45,6 +46,7 @@
 #include "sysemu/arch_init.h"
 #include "sysemu/kvm.h"
 #include "sysemu/qtest.h"
+#include "sysemu/reset.h"
 #include "exec/address-spaces.h"
 #include "trace.h"
 #include "elf.h"
diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c
index fbcddc5b00..c1d6f74d5b 100644
--- a/hw/ppc/sam460ex.c
+++ b/hw/ppc/sam460ex.c
@@ -31,6 +31,7 @@
 #include "hw/block/flash.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/qtest.h"
+#include "sysemu/reset.h"
 #include "hw/sysbus.h"
 #include "hw/char/serial.h"
 #include "hw/i2c/ppc4xx_i2c.h"
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 821f0d4a49..5cade1a374 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -31,6 +31,7 @@
 #include "sysemu/sysemu.h"
 #include "sysemu/numa.h"
 #include "sysemu/qtest.h"
+#include "sysemu/reset.h"
 #include "hw/hw.h"
 #include "qemu/log.h"
 #include "hw/fw-path-provider.h"
diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
index 5621fb9a3d..ccc8970c7c 100644
--- a/hw/ppc/spapr_cpu_core.c
+++ b/hw/ppc/spapr_cpu_core.c
@@ -6,6 +6,7 @@
  * This work is licensed under the terms of the GNU GPL, version 2 or later.
  * See the COPYING file in the top-level directory.
  */
+
 #include "qemu/osdep.h"
 #include "hw/cpu/core.h"
 #include "hw/ppc/spapr_cpu_core.h"
@@ -19,6 +20,7 @@
 #include "hw/ppc/ppc.h"
 #include "target/ppc/mmu-hash64.h"
 #include "sysemu/numa.h"
+#include "sysemu/reset.h"
 #include "sysemu/hw_accel.h"
 #include "qemu/error-report.h"
 
diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c
index bacadfcac5..678493a9c5 100644
--- a/hw/ppc/spapr_drc.c
+++ b/hw/ppc/spapr_drc.c
@@ -23,6 +23,7 @@
 #include "hw/ppc/spapr.h" /* for RTAS return codes */
 #include "hw/pci-host/spapr.h" /* spapr_phb_remove_pci_device_cb callback */
 #include "sysemu/device_tree.h"
+#include "sysemu/reset.h"
 #include "trace.h"
 
 #define DRC_CONTAINER_PATH "/dr-connector"
diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c
index 834053a7d2..06f5a28601 100644
--- a/hw/ppc/virtex_ml507.c
+++ b/hw/ppc/virtex_ml507.c
@@ -32,6 +32,7 @@
 #include "hw/block/flash.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/qtest.h"
+#include "sysemu/reset.h"
 #include "hw/boards.h"
 #include "sysemu/device_tree.h"
 #include "hw/loader.h"
diff --git a/hw/riscv/riscv_hart.c b/hw/riscv/riscv_hart.c
index ca69a1bcd8..61bd4d5170 100644
--- a/hw/riscv/riscv_hart.c
+++ b/hw/riscv/riscv_hart.c
@@ -21,6 +21,7 @@
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "qemu/module.h"
+#include "sysemu/reset.h"
 #include "hw/sysbus.h"
 #include "target/riscv/cpu.h"
 #include "hw/riscv/riscv_hart.h"
diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c
index 60bd081d3e..2e5ce11a6b 100644
--- a/hw/s390x/ipl.c
+++ b/hw/s390x/ipl.c
@@ -14,6 +14,7 @@
 #include "qemu/osdep.h"
 #include "qemu-common.h"
 #include "qapi/error.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/tcg.h"
 #include "cpu.h"
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index 5b6a9a4e55..4ffdd53a85 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -27,6 +27,7 @@
 #include "qemu/error-report.h"
 #include "qemu/option.h"
 #include "s390-pci-bus.h"
+#include "sysemu/reset.h"
 #include "hw/s390x/storage-keys.h"
 #include "hw/s390x/storage-attributes.h"
 #include "hw/s390x/event-facility.h"
diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c
index f22c79c867..da79bf0337 100644
--- a/hw/sh4/r2d.c
+++ b/hw/sh4/r2d.c
@@ -30,6 +30,7 @@
 #include "hw/sysbus.h"
 #include "hw/hw.h"
 #include "hw/sh4/sh.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "hw/boards.h"
 #include "hw/pci/pci.h"
diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c
index 19cedebd16..c7ddfa2cfe 100644
--- a/hw/sparc/leon3.c
+++ b/hw/sparc/leon3.c
@@ -21,6 +21,7 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "qemu/units.h"
 #include "qemu/error-report.h"
@@ -32,6 +33,7 @@
 #include "hw/ptimer.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/qtest.h"
+#include "sysemu/reset.h"
 #include "hw/boards.h"
 #include "hw/loader.h"
 #include "elf.h"
diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
index b2342f2a89..93a69c12fb 100644
--- a/hw/sparc/sun4m.c
+++ b/hw/sparc/sun4m.c
@@ -21,6 +21,7 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "qemu/units.h"
 #include "qapi/error.h"
@@ -33,6 +34,7 @@
 #include "hw/timer/m48t59.h"
 #include "hw/sparc/sparc32_dma.h"
 #include "hw/block/fdc.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "net/net.h"
 #include "hw/boards.h"
diff --git a/hw/sparc64/sparc64.c b/hw/sparc64/sparc64.c
index 689801f37d..100b2fab17 100644
--- a/hw/sparc64/sparc64.c
+++ b/hw/sparc64/sparc64.c
@@ -28,6 +28,7 @@
 #include "hw/char/serial.h"
 #include "hw/sparc/sparc64.h"
 #include "qemu/timer.h"
+#include "sysemu/reset.h"
 #include "trace.h"
 
 
diff --git a/hw/timer/etraxfs_timer.c b/hw/timer/etraxfs_timer.c
index 53834e197f..18887b2be2 100644
--- a/hw/timer/etraxfs_timer.c
+++ b/hw/timer/etraxfs_timer.c
@@ -24,6 +24,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "qemu/module.h"
 #include "qemu/timer.h"
diff --git a/hw/timer/mc146818rtc.c b/hw/timer/mc146818rtc.c
index ce4550b6f2..21fcba5e3a 100644
--- a/hw/timer/mc146818rtc.c
+++ b/hw/timer/mc146818rtc.c
@@ -31,6 +31,7 @@
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/replay.h"
+#include "sysemu/reset.h"
 #include "hw/timer/mc146818rtc.h"
 #include "qapi/error.h"
 #include "qapi/qapi-commands-misc-target.h"
diff --git a/hw/tpm/tpm_ppi.c b/hw/tpm/tpm_ppi.c
index cd8205f212..ff314592b4 100644
--- a/hw/tpm/tpm_ppi.c
+++ b/hw/tpm/tpm_ppi.c
@@ -16,7 +16,6 @@
 #include "qapi/error.h"
 #include "cpu.h"
 #include "sysemu/memory_mapping.h"
-#include "sysemu/reset.h"
 #include "migration/vmstate.h"
 #include "tpm_ppi.h"
 #include "trace.h"
diff --git a/hw/vfio/common.c b/hw/vfio/common.c
index a859298fda..a363b4495f 100644
--- a/hw/vfio/common.c
+++ b/hw/vfio/common.c
@@ -34,6 +34,7 @@
 #include "qemu/range.h"
 #include "sysemu/balloon.h"
 #include "sysemu/kvm.h"
+#include "sysemu/reset.h"
 #include "trace.h"
 #include "qapi/error.h"
 
diff --git a/hw/watchdog/wdt_diag288.c b/hw/watchdog/wdt_diag288.c
index 29e5b5dcf6..fec046ef09 100644
--- a/hw/watchdog/wdt_diag288.c
+++ b/hw/watchdog/wdt_diag288.c
@@ -12,6 +12,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "sysemu/reset.h"
 #include "sysemu/watchdog.h"
 #include "hw/sysbus.h"
 #include "qemu/timer.h"
diff --git a/hw/xtensa/sim.c b/hw/xtensa/sim.c
index 09165b6f4d..981dbb7bbe 100644
--- a/hw/xtensa/sim.c
+++ b/hw/xtensa/sim.c
@@ -28,6 +28,7 @@
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "cpu.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "hw/boards.h"
 #include "hw/loader.h"
diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c
index f7f3e11e93..0a2cce3c64 100644
--- a/hw/xtensa/xtfpga.c
+++ b/hw/xtensa/xtfpga.c
@@ -41,6 +41,7 @@
 #include "hw/block/flash.h"
 #include "chardev/char.h"
 #include "sysemu/device_tree.h"
+#include "sysemu/reset.h"
 #include "qemu/error-report.h"
 #include "qemu/option.h"
 #include "bootparam.h"
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 19751e37a7..80f1443110 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -26,6 +26,7 @@
 #include "cpu.h"
 #include "exec/exec-all.h"
 #include "sysemu/kvm.h"
+#include "sysemu/reset.h"
 #include "sysemu/hvf.h"
 #include "sysemu/cpus.h"
 #include "kvm_i386.h"
diff --git a/target/i386/hax-all.c b/target/i386/hax-all.c
index 9e7b77965d..bcacdd1d8f 100644
--- a/target/i386/hax-all.c
+++ b/target/i386/hax-all.c
@@ -30,6 +30,7 @@
 #include "qemu-common.h"
 #include "hax-i386.h"
 #include "sysemu/accel.h"
+#include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "qemu/main-loop.h"
 #include "hw/boards.h"
diff --git a/target/i386/kvm.c b/target/i386/kvm.c
index dbbb13772a..30ed209e6b 100644
--- a/target/i386/kvm.c
+++ b/target/i386/kvm.c
@@ -24,6 +24,7 @@
 #include "sysemu/sysemu.h"
 #include "sysemu/hw_accel.h"
 #include "sysemu/kvm_int.h"
+#include "sysemu/reset.h"
 #include "kvm_i386.h"
 #include "hyperv.h"
 #include "hyperv-proto.h"
diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
index 736a7903e2..3caba8d5e1 100644
--- a/target/s390x/cpu.c
+++ b/target/s390x/cpu.c
@@ -26,6 +26,7 @@
 #include "internal.h"
 #include "kvm_s390x.h"
 #include "sysemu/kvm.h"
+#include "sysemu/reset.h"
 #include "qemu/timer.h"
 #include "qemu/error-report.h"
 #include "qemu/module.h"
diff --git a/vl.c b/vl.c
index b426b32134..1abfd306e3 100644
--- a/vl.c
+++ b/vl.c
@@ -30,6 +30,7 @@
 #include "qemu/cutils.h"
 #include "qemu/help_option.h"
 #include "qemu/uuid.h"
+#include "sysemu/reset.h"
 #include "sysemu/seccomp.h"
 #include "sysemu/tcg.h"
 
-- 
2.21.0



^ permalink raw reply	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PULL 09/29] Include migration/qemu-file-types.h a lot less
  2019-08-13 15:46 [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13 Markus Armbruster
                   ` (7 preceding siblings ...)
  2019-08-13 15:46 ` [Qemu-devel] [PULL 08/29] Include sysemu/reset.h a lot less Markus Armbruster
@ 2019-08-13 15:46 ` " Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 10/29] ide: Include hw/ide/internal a bit less outside hw/ide/ Markus Armbruster
                   ` (20 subsequent siblings)
  29 siblings, 0 replies; 34+ messages in thread
From: Markus Armbruster @ 2019-08-13 15:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Philippe Mathieu-Daudé

In my "build everything" tree, changing migration/qemu-file-types.h
triggers a recompile of some 2600 out of 6600 objects (not counting
tests and objects that don't depend on qemu/osdep.h).

The culprit is again hw/hw.h, which supposedly includes it for
convenience.

Include migration/qemu-file-types.h only where it's needed.  Touching
it now recompiles less than 200 objects.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20190812052359.30071-10-armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 include/hw/hw.h             | 1 -
 include/migration/cpu.h     | 1 +
 hw/acpi/piix4.c             | 1 +
 hw/block/virtio-blk.c       | 1 +
 hw/char/virtio-serial-bus.c | 1 +
 hw/display/virtio-gpu.c     | 1 +
 hw/intc/apic_common.c       | 1 +
 hw/intc/s390_flic_kvm.c     | 1 +
 hw/nvram/eeprom93xx.c       | 1 +
 hw/nvram/fw_cfg.c           | 1 +
 hw/pci-host/piix.c          | 1 +
 hw/pci/msix.c               | 1 +
 hw/pci/pci.c                | 1 +
 hw/pci/shpc.c               | 1 +
 hw/ppc/spapr.c              | 1 +
 hw/s390x/s390-skeys.c       | 1 +
 hw/s390x/tod.c              | 1 +
 hw/s390x/virtio-ccw.c       | 1 +
 hw/scsi/mptsas.c            | 1 +
 hw/scsi/scsi-bus.c          | 1 +
 hw/scsi/scsi-disk.c         | 1 +
 hw/scsi/scsi-generic.c      | 1 +
 hw/scsi/virtio-scsi.c       | 1 +
 hw/timer/i8254_common.c     | 1 +
 hw/timer/twl92230.c         | 1 +
 hw/usb/redirect.c           | 1 +
 hw/virtio/vhost.c           | 1 +
 hw/virtio/virtio-mmio.c     | 1 +
 hw/virtio/virtio-pci.c      | 1 +
 hw/virtio/virtio.c          | 1 +
 target/ppc/kvm.c            | 1 +
 31 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/include/hw/hw.h b/include/hw/hw.h
index a4fb2390e8..b399627cbe 100644
--- a/include/hw/hw.h
+++ b/include/hw/hw.h
@@ -11,7 +11,6 @@
 #include "exec/memory.h"
 #include "hw/irq.h"
 #include "migration/vmstate.h"
-#include "migration/qemu-file-types.h"
 
 void QEMU_NORETURN hw_error(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
 
diff --git a/include/migration/cpu.h b/include/migration/cpu.h
index da1618d620..2a22470d0d 100644
--- a/include/migration/cpu.h
+++ b/include/migration/cpu.h
@@ -4,6 +4,7 @@
 #define MIGRATION_CPU_H
 
 #include "exec/cpu-defs.h"
+#include "migration/qemu-file-types.h"
 
 #if TARGET_LONG_BITS == 64
 #define qemu_put_betl qemu_put_be64
diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c
index a59e58d937..0d8c821f37 100644
--- a/hw/acpi/piix4.c
+++ b/hw/acpi/piix4.c
@@ -40,6 +40,7 @@
 #include "hw/acpi/memory_hotplug.h"
 #include "hw/acpi/acpi_dev_interface.h"
 #include "hw/xen/xen.h"
+#include "migration/qemu-file-types.h"
 #include "qom/cpu.h"
 #include "trace.h"
 
diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
index cbb3729158..1f40834d27 100644
--- a/hw/block/virtio-blk.c
+++ b/hw/block/virtio-blk.c
@@ -26,6 +26,7 @@
 # include <scsi/sg.h>
 #endif
 #include "hw/virtio/virtio-bus.h"
+#include "migration/qemu-file-types.h"
 #include "hw/virtio/virtio-access.h"
 
 /* Config size before the discard support (hide associated config fields) */
diff --git a/hw/char/virtio-serial-bus.c b/hw/char/virtio-serial-bus.c
index f7a54f261b..b868e54d72 100644
--- a/hw/char/virtio-serial-bus.c
+++ b/hw/char/virtio-serial-bus.c
@@ -22,6 +22,7 @@
 #include "qapi/error.h"
 #include "qemu/iov.h"
 #include "qemu/module.h"
+#include "migration/qemu-file-types.h"
 #include "monitor/monitor.h"
 #include "qemu/error-report.h"
 #include "qemu/queue.h"
diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
index 25d9e327fc..ed92071963 100644
--- a/hw/display/virtio-gpu.c
+++ b/hw/display/virtio-gpu.c
@@ -18,6 +18,7 @@
 #include "trace.h"
 #include "sysemu/dma.h"
 #include "hw/virtio/virtio.h"
+#include "migration/qemu-file-types.h"
 #include "hw/virtio/virtio-gpu.h"
 #include "hw/virtio/virtio-gpu-bswap.h"
 #include "hw/virtio/virtio-gpu-pixman.h"
diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c
index e764a2bb03..7045761281 100644
--- a/hw/intc/apic_common.c
+++ b/hw/intc/apic_common.c
@@ -31,6 +31,7 @@
 #include "sysemu/kvm.h"
 #include "hw/qdev.h"
 #include "hw/sysbus.h"
+#include "migration/qemu-file-types.h"
 
 static int apic_irq_delivered;
 bool apic_report_tpr_access;
diff --git a/hw/intc/s390_flic_kvm.c b/hw/intc/s390_flic_kvm.c
index ff45b4ab0b..819aa5e198 100644
--- a/hw/intc/s390_flic_kvm.c
+++ b/hw/intc/s390_flic_kvm.c
@@ -22,6 +22,7 @@
 #include "hw/s390x/s390_flic.h"
 #include "hw/s390x/adapter.h"
 #include "hw/s390x/css.h"
+#include "migration/qemu-file-types.h"
 #include "trace.h"
 
 #define FLIC_SAVE_INITIAL_SIZE getpagesize()
diff --git a/hw/nvram/eeprom93xx.c b/hw/nvram/eeprom93xx.c
index 2db3d7cce6..5fc23df1d4 100644
--- a/hw/nvram/eeprom93xx.c
+++ b/hw/nvram/eeprom93xx.c
@@ -38,6 +38,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/nvram/eeprom93xx.h"
+#include "migration/qemu-file-types.h"
 
 /* Debug EEPROM emulation. */
 //~ #define DEBUG_EEPROM
diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c
index 3032f1c65f..8db0297d59 100644
--- a/hw/nvram/fw_cfg.c
+++ b/hw/nvram/fw_cfg.c
@@ -31,6 +31,7 @@
 #include "hw/boards.h"
 #include "hw/nvram/fw_cfg.h"
 #include "hw/sysbus.h"
+#include "migration/qemu-file-types.h"
 #include "trace.h"
 #include "qemu/error-report.h"
 #include "qemu/option.h"
diff --git a/hw/pci-host/piix.c b/hw/pci-host/piix.c
index f3671d28b7..e5955457ab 100644
--- a/hw/pci-host/piix.c
+++ b/hw/pci-host/piix.c
@@ -32,6 +32,7 @@
 #include "qapi/error.h"
 #include "qemu/range.h"
 #include "hw/xen/xen.h"
+#include "migration/qemu-file-types.h"
 #include "hw/pci-host/pam.h"
 #include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/pci/msix.c b/hw/pci/msix.c
index d39dcf32e8..ebe804b473 100644
--- a/hw/pci/msix.c
+++ b/hw/pci/msix.c
@@ -20,6 +20,7 @@
 #include "hw/pci/msix.h"
 #include "hw/pci/pci.h"
 #include "hw/xen/xen.h"
+#include "migration/qemu-file-types.h"
 #include "qemu/range.h"
 #include "qapi/error.h"
 #include "trace.h"
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 8076a80ab3..43a3cac138 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -29,6 +29,7 @@
 #include "hw/pci/pci_bridge.h"
 #include "hw/pci/pci_bus.h"
 #include "hw/pci/pci_host.h"
+#include "migration/qemu-file-types.h"
 #include "monitor/monitor.h"
 #include "net/net.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/pci/shpc.c b/hw/pci/shpc.c
index 5a10c6e9a5..7f0aa28e44 100644
--- a/hw/pci/shpc.c
+++ b/hw/pci/shpc.c
@@ -4,6 +4,7 @@
 #include "qemu/range.h"
 #include "qemu/error-report.h"
 #include "hw/pci/shpc.h"
+#include "migration/qemu-file-types.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_bus.h"
 #include "hw/pci/msi.h"
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 5cade1a374..76e815ceee 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -42,6 +42,7 @@
 #include "sysemu/hw_accel.h"
 #include "kvm_ppc.h"
 #include "migration/misc.h"
+#include "migration/qemu-file-types.h"
 #include "migration/global_state.h"
 #include "migration/register.h"
 #include "mmu-hash64.h"
diff --git a/hw/s390x/s390-skeys.c b/hw/s390x/s390-skeys.c
index e5bd92c0c7..d4807f7777 100644
--- a/hw/s390x/s390-skeys.c
+++ b/hw/s390x/s390-skeys.c
@@ -18,6 +18,7 @@
 #include "qapi/qmp/qdict.h"
 #include "qemu/error-report.h"
 #include "sysemu/kvm.h"
+#include "migration/qemu-file-types.h"
 #include "migration/register.h"
 
 #define S390_SKEYS_BUFFER_SIZE (128 * KiB)  /* Room for 128k storage keys */
diff --git a/hw/s390x/tod.c b/hw/s390x/tod.c
index a9fca8eb0b..1bf0875afa 100644
--- a/hw/s390x/tod.c
+++ b/hw/s390x/tod.c
@@ -14,6 +14,7 @@
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 #include "sysemu/kvm.h"
+#include "migration/qemu-file-types.h"
 #include "migration/register.h"
 
 void s390_init_tod(void)
diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
index 43d3a1b029..fa537bfba3 100644
--- a/hw/s390x/virtio-ccw.c
+++ b/hw/s390x/virtio-ccw.c
@@ -17,6 +17,7 @@
 #include "sysemu/kvm.h"
 #include "net/net.h"
 #include "hw/virtio/virtio.h"
+#include "migration/qemu-file-types.h"
 #include "hw/virtio/virtio-net.h"
 #include "hw/sysbus.h"
 #include "qemu/bitops.h"
diff --git a/hw/scsi/mptsas.c b/hw/scsi/mptsas.c
index 3f94d5ab55..6d2c15a2bc 100644
--- a/hw/scsi/mptsas.c
+++ b/hw/scsi/mptsas.c
@@ -34,6 +34,7 @@
 #include "trace.h"
 #include "qapi/error.h"
 #include "mptsas.h"
+#include "migration/qemu-file-types.h"
 #include "mpi.h"
 
 #define NAA_LOCALLY_ASSIGNED_ID 0x3ULL
diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c
index fdc3a0e4e0..81fe7c3301 100644
--- a/hw/scsi/scsi-bus.c
+++ b/hw/scsi/scsi-bus.c
@@ -5,6 +5,7 @@
 #include "qemu/module.h"
 #include "qemu/option.h"
 #include "hw/scsi/scsi.h"
+#include "migration/qemu-file-types.h"
 #include "scsi/constants.h"
 #include "hw/qdev.h"
 #include "sysemu/block-backend.h"
diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c
index af3e622dc5..558fa11511 100644
--- a/hw/scsi/scsi-disk.c
+++ b/hw/scsi/scsi-disk.c
@@ -25,6 +25,7 @@
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 #include "hw/scsi/scsi.h"
+#include "migration/qemu-file-types.h"
 #include "hw/scsi/emulation.h"
 #include "scsi/constants.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/scsi/scsi-generic.c b/hw/scsi/scsi-generic.c
index c11a0c9a84..44430b6ea6 100644
--- a/hw/scsi/scsi-generic.c
+++ b/hw/scsi/scsi-generic.c
@@ -17,6 +17,7 @@
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 #include "hw/scsi/scsi.h"
+#include "migration/qemu-file-types.h"
 #include "hw/scsi/emulation.h"
 #include "sysemu/block-backend.h"
 #include "trace.h"
diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c
index 8b9e5e2b49..a6d61aacdb 100644
--- a/hw/scsi/virtio-scsi.c
+++ b/hw/scsi/virtio-scsi.c
@@ -17,6 +17,7 @@
 #include "qapi/error.h"
 #include "standard-headers/linux/virtio_ids.h"
 #include "hw/virtio/virtio-scsi.h"
+#include "migration/qemu-file-types.h"
 #include "qemu/error-report.h"
 #include "qemu/iov.h"
 #include "qemu/module.h"
diff --git a/hw/timer/i8254_common.c b/hw/timer/i8254_common.c
index 76ca6ec444..3e980f2dee 100644
--- a/hw/timer/i8254_common.c
+++ b/hw/timer/i8254_common.c
@@ -30,6 +30,7 @@
 #include "qemu/timer.h"
 #include "hw/timer/i8254.h"
 #include "hw/timer/i8254_internal.h"
+#include "migration/qemu-file-types.h"
 
 /* val must be 0 or 1 */
 void pit_set_gate(ISADevice *dev, int channel, int val)
diff --git a/hw/timer/twl92230.c b/hw/timer/twl92230.c
index 0ef4fc1fc1..91ae7bf203 100644
--- a/hw/timer/twl92230.c
+++ b/hw/timer/twl92230.c
@@ -24,6 +24,7 @@
 #include "hw/hw.h"
 #include "qemu/timer.h"
 #include "hw/i2c/i2c.h"
+#include "migration/qemu-file-types.h"
 #include "sysemu/sysemu.h"
 #include "ui/console.h"
 #include "qemu/bcd.h"
diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
index 998fc6e4b0..846e60f3bb 100644
--- a/hw/usb/redirect.c
+++ b/hw/usb/redirect.c
@@ -41,6 +41,7 @@
 #include <usbredirfilter.h>
 
 #include "hw/usb.h"
+#include "migration/qemu-file-types.h"
 
 /* ERROR is defined below. Remove any previous definition. */
 #undef ERROR
diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
index bc899fc60e..ba1006ad96 100644
--- a/hw/virtio/vhost.c
+++ b/hw/virtio/vhost.c
@@ -26,6 +26,7 @@
 #include "hw/virtio/virtio-bus.h"
 #include "hw/virtio/virtio-access.h"
 #include "migration/blocker.h"
+#include "migration/qemu-file-types.h"
 #include "sysemu/dma.h"
 #include "trace.h"
 
diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c
index 97b7f35496..d4c0997074 100644
--- a/hw/virtio/virtio-mmio.c
+++ b/hw/virtio/virtio-mmio.c
@@ -23,6 +23,7 @@
 #include "standard-headers/linux/virtio_mmio.h"
 #include "hw/sysbus.h"
 #include "hw/virtio/virtio.h"
+#include "migration/qemu-file-types.h"
 #include "qemu/host-utils.h"
 #include "qemu/module.h"
 #include "sysemu/kvm.h"
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
index f6d2223e78..1117f2347b 100644
--- a/hw/virtio/virtio-pci.c
+++ b/hw/virtio/virtio-pci.c
@@ -19,6 +19,7 @@
 
 #include "standard-headers/linux/virtio_pci.h"
 #include "hw/virtio/virtio.h"
+#include "migration/qemu-file-types.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_bus.h"
 #include "qapi/error.h"
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index a94ea18a9c..79c7a910cc 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -19,6 +19,7 @@
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 #include "hw/virtio/virtio.h"
+#include "migration/qemu-file-types.h"
 #include "qemu/atomic.h"
 #include "hw/virtio/virtio-bus.h"
 #include "hw/virtio/virtio-access.h"
diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
index 8a06d3171e..4bd95be9cd 100644
--- a/target/ppc/kvm.c
+++ b/target/ppc/kvm.c
@@ -38,6 +38,7 @@
 #include "hw/ppc/spapr.h"
 #include "hw/ppc/spapr_cpu_core.h"
 #include "hw/ppc/ppc.h"
+#include "migration/qemu-file-types.h"
 #include "sysemu/watchdog.h"
 #include "trace.h"
 #include "exec/gdbstub.h"
-- 
2.21.0



^ permalink raw reply	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PULL 10/29] ide: Include hw/ide/internal a bit less outside hw/ide/
  2019-08-13 15:46 [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13 Markus Armbruster
                   ` (8 preceding siblings ...)
  2019-08-13 15:46 ` [Qemu-devel] [PULL 09/29] Include migration/qemu-file-types.h " Markus Armbruster
@ 2019-08-13 15:46 ` Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 11/29] typedefs: Separate incomplete types and function types Markus Armbruster
                   ` (19 subsequent siblings)
  29 siblings, 0 replies; 34+ messages in thread
From: Markus Armbruster @ 2019-08-13 15:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Philippe Mathieu-Daudé, John Snow

According to hw/ide/internal's file comment, only files in hw/ide/ are
supposed to include it.  Drag reality slightly closer to supposition.

Three includes outside hw/ide remain: hw/arm/sbsa-ref.c,
include/hw/ide/pci.h, and include/hw/misc/macio/macio.h.  Turns out
board code needs ide-internal.h to wire up IDE stuff.  More cleanup is
needed.  Left for another day.

Cc: John Snow <jsnow@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: John Snow <jsnow@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190812052359.30071-11-armbru@redhat.com>
---
 hw/ide/ahci_internal.h         | 1 +
 hw/ppc/mac.h                   | 1 -
 include/hw/arm/allwinner-a10.h | 1 -
 include/hw/arm/xlnx-zynqmp.h   | 1 -
 include/hw/misc/mos6522.h      | 1 -
 hw/arm/allwinner-a10.c         | 1 +
 hw/arm/cubieboard.c            | 1 +
 hw/arm/xlnx-zynqmp.c           | 1 +
 8 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/hw/ide/ahci_internal.h b/hw/ide/ahci_internal.h
index 95ecddcd3c..73424516da 100644
--- a/hw/ide/ahci_internal.h
+++ b/hw/ide/ahci_internal.h
@@ -25,6 +25,7 @@
 #define HW_IDE_AHCI_INTERNAL_H
 
 #include "hw/ide/ahci.h"
+#include "hw/ide/internal.h"
 #include "hw/sysbus.h"
 
 #define AHCI_MEM_BAR_SIZE         0x1000
diff --git a/hw/ppc/mac.h b/hw/ppc/mac.h
index a741300ac9..6af87d1fa0 100644
--- a/hw/ppc/mac.h
+++ b/hw/ppc/mac.h
@@ -30,7 +30,6 @@
 #include "exec/memory.h"
 #include "hw/boards.h"
 #include "hw/sysbus.h"
-#include "hw/ide/internal.h"
 #include "hw/input/adb.h"
 #include "hw/misc/mos6522.h"
 #include "hw/pci/pci_host.h"
diff --git a/include/hw/arm/allwinner-a10.h b/include/hw/arm/allwinner-a10.h
index 7182ce5c4b..101b72a71d 100644
--- a/include/hw/arm/allwinner-a10.h
+++ b/include/hw/arm/allwinner-a10.h
@@ -7,7 +7,6 @@
 #include "hw/timer/allwinner-a10-pit.h"
 #include "hw/intc/allwinner-a10-pic.h"
 #include "hw/net/allwinner_emac.h"
-#include "hw/ide/pci.h"
 #include "hw/ide/ahci.h"
 
 #include "sysemu/sysemu.h"
diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h
index 6cb65e7537..d7483c3b42 100644
--- a/include/hw/arm/xlnx-zynqmp.h
+++ b/include/hw/arm/xlnx-zynqmp.h
@@ -22,7 +22,6 @@
 #include "hw/intc/arm_gic.h"
 #include "hw/net/cadence_gem.h"
 #include "hw/char/cadence_uart.h"
-#include "hw/ide/pci.h"
 #include "hw/ide/ahci.h"
 #include "hw/sd/sdhci.h"
 #include "hw/ssi/xilinx_spips.h"
diff --git a/include/hw/misc/mos6522.h b/include/hw/misc/mos6522.h
index 03d9f0c059..493c907537 100644
--- a/include/hw/misc/mos6522.h
+++ b/include/hw/misc/mos6522.h
@@ -29,7 +29,6 @@
 
 #include "exec/memory.h"
 #include "hw/sysbus.h"
-#include "hw/ide/internal.h"
 #include "hw/input/adb.h"
 
 /* Bits in ACR */
diff --git a/hw/arm/allwinner-a10.c b/hw/arm/allwinner-a10.c
index 35e906ca54..3b0d3eccdd 100644
--- a/hw/arm/allwinner-a10.c
+++ b/hw/arm/allwinner-a10.c
@@ -16,6 +16,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "exec/address-spaces.h"
 #include "qapi/error.h"
 #include "qemu/module.h"
 #include "cpu.h"
diff --git a/hw/arm/cubieboard.c b/hw/arm/cubieboard.c
index f7c8a5985a..38e0ca0f53 100644
--- a/hw/arm/cubieboard.c
+++ b/hw/arm/cubieboard.c
@@ -16,6 +16,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "exec/address-spaces.h"
 #include "qapi/error.h"
 #include "cpu.h"
 #include "hw/sysbus.h"
diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c
index a60830d37a..0f587e63d3 100644
--- a/hw/arm/xlnx-zynqmp.c
+++ b/hw/arm/xlnx-zynqmp.c
@@ -24,6 +24,7 @@
 #include "hw/boards.h"
 #include "exec/address-spaces.h"
 #include "sysemu/kvm.h"
+#include "sysemu/sysemu.h"
 #include "kvm_arm.h"
 
 #define GIC_NUM_SPI_INTR 160
-- 
2.21.0



^ permalink raw reply	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PULL 11/29] typedefs: Separate incomplete types and function types
  2019-08-13 15:46 [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13 Markus Armbruster
                   ` (9 preceding siblings ...)
  2019-08-13 15:46 ` [Qemu-devel] [PULL 10/29] ide: Include hw/ide/internal a bit less outside hw/ide/ Markus Armbruster
@ 2019-08-13 15:46 ` Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 12/29] Include hw/irq.h a lot less Markus Armbruster
                   ` (18 subsequent siblings)
  29 siblings, 0 replies; 34+ messages in thread
From: Markus Armbruster @ 2019-08-13 15:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Alex Bennée, Philippe Mathieu-Daudé

While there, drop the obsolete file comment.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190812052359.30071-12-armbru@redhat.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
---
 include/qemu/typedefs.h | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h
index fcdaae58c4..29346648d4 100644
--- a/include/qemu/typedefs.h
+++ b/include/qemu/typedefs.h
@@ -1,10 +1,10 @@
 #ifndef QEMU_TYPEDEFS_H
 #define QEMU_TYPEDEFS_H
 
-/* A load of opaque types so that device init declarations don't have to
-   pull in all the real definitions.  */
-
-/* Please keep this list in case-insensitive alphabetical order */
+/*
+ * Incomplete struct types
+ * Please keep this list in case-insensitive alphabetical order.
+ */
 typedef struct AdapterInfo AdapterInfo;
 typedef struct AddressSpace AddressSpace;
 typedef struct AioContext AioContext;
@@ -101,6 +101,10 @@ typedef struct SHPCDevice SHPCDevice;
 typedef struct SSIBus SSIBus;
 typedef struct VirtIODevice VirtIODevice;
 typedef struct Visitor Visitor;
+
+/*
+ * Function types
+ */
 typedef void SaveStateHandler(QEMUFile *f, void *opaque);
 typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);
 
-- 
2.21.0



^ permalink raw reply	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PULL 12/29] Include hw/irq.h a lot less
  2019-08-13 15:46 [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13 Markus Armbruster
                   ` (10 preceding siblings ...)
  2019-08-13 15:46 ` [Qemu-devel] [PULL 11/29] typedefs: Separate incomplete types and function types Markus Armbruster
@ 2019-08-13 15:46 ` Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 13/29] Clean up inclusion of exec/cpu-common.h Markus Armbruster
                   ` (17 subsequent siblings)
  29 siblings, 0 replies; 34+ messages in thread
From: Markus Armbruster @ 2019-08-13 15:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Philippe Mathieu-Daudé, Alistair Francis

In my "build everything" tree, changing hw/irq.h triggers a recompile
of some 5400 out of 6600 objects (not counting tests and objects that
don't depend on qemu/osdep.h).

hw/hw.h supposedly includes it for convenience.  Several other headers
include it just to get qemu_irq and.or qemu_irq_handler.

Move the qemu_irq and qemu_irq_handler typedefs from hw/irq.h to
qemu/typedefs.h, and then include hw/irq.h only where it's still
needed.  Touching it now recompiles only some 500 objects.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190812052359.30071-13-armbru@redhat.com>
---
 hw/alpha/alpha_sys.h             | 1 -
 hw/hppa/hppa_sys.h               | 1 -
 include/hw/acpi/acpi.h           | 1 -
 include/hw/arm/boot.h            | 1 -
 include/hw/arm/omap.h            | 1 -
 include/hw/arm/soc_dma.h         | 1 -
 include/hw/block/fdc.h           | 1 -
 include/hw/bt.h                  | 1 -
 include/hw/core/split-irq.h      | 1 -
 include/hw/cris/etraxfs_dma.h    | 1 -
 include/hw/display/blizzard.h    | 1 -
 include/hw/display/tc6393xb.h    | 1 -
 include/hw/hw.h                  | 1 -
 include/hw/ide/internal.h        | 1 +
 include/hw/input/gamepad.h       | 1 -
 include/hw/input/tsc2xxx.h       | 1 -
 include/hw/irq.h                 | 4 ----
 include/hw/isa/vt82c686.h        | 1 -
 include/hw/mips/mips.h           | 1 -
 include/hw/misc/cbus.h           | 1 -
 include/hw/net/lan9118.h         | 1 -
 include/hw/net/smc91c111.h       | 1 -
 include/hw/or-irq.h              | 1 -
 include/hw/ppc/spapr_irq.h       | 1 -
 include/hw/qdev-core.h           | 1 -
 include/hw/sh4/sh_intc.h         | 1 -
 include/hw/timer/m48t59.h        | 1 -
 include/hw/tricore/tricore.h     | 1 -
 include/hw/vfio/vfio-platform.h  | 1 -
 include/hw/xen/xen.h             | 1 -
 include/hw/xtensa/mx_pic.h       | 1 -
 include/qemu/typedefs.h          | 9 +++++++++
 include/sysemu/kvm.h             | 1 -
 hw/acpi/core.c                   | 1 +
 hw/acpi/piix4.c                  | 1 +
 hw/alpha/typhoon.c               | 1 +
 hw/arm/armsse.c                  | 1 +
 hw/arm/exynos4210.c              | 1 +
 hw/arm/exynos4_boards.c          | 1 +
 hw/arm/integratorcp.c            | 1 +
 hw/arm/msf2-soc.c                | 1 +
 hw/arm/musicpal.c                | 1 +
 hw/arm/omap1.c                   | 1 +
 hw/arm/omap2.c                   | 1 +
 hw/arm/palm.c                    | 2 ++
 hw/arm/pxa2xx.c                  | 1 +
 hw/arm/pxa2xx_gpio.c             | 1 +
 hw/arm/realview.c                | 1 +
 hw/arm/smmuv3.c                  | 1 +
 hw/arm/spitz.c                   | 1 +
 hw/arm/stellaris.c               | 1 +
 hw/arm/strongarm.c               | 1 +
 hw/arm/tosa.c                    | 1 +
 hw/arm/versatilepb.c             | 1 +
 hw/arm/virt.c                    | 1 +
 hw/arm/z2.c                      | 1 +
 hw/audio/cs4231a.c               | 1 +
 hw/audio/gus.c                   | 1 +
 hw/audio/marvell_88w8618.c       | 1 +
 hw/audio/milkymist-ac97.c        | 1 +
 hw/audio/pl041.c                 | 1 +
 hw/audio/sb16.c                  | 1 +
 hw/block/fdc.c                   | 1 +
 hw/char/bcm2835_aux.c            | 1 +
 hw/char/cadence_uart.c           | 1 +
 hw/char/cmsdk-apb-uart.c         | 1 +
 hw/char/escc.c                   | 1 +
 hw/char/etraxfs_ser.c            | 1 +
 hw/char/exynos4210_uart.c        | 1 +
 hw/char/grlib_apbuart.c          | 1 +
 hw/char/imx_serial.c             | 1 +
 hw/char/ipoctal232.c             | 1 +
 hw/char/lm32_uart.c              | 1 +
 hw/char/mcf_uart.c               | 1 +
 hw/char/milkymist-uart.c         | 1 +
 hw/char/nrf51_uart.c             | 1 +
 hw/char/parallel.c               | 1 +
 hw/char/pl011.c                  | 1 +
 hw/char/serial-pci-multi.c       | 1 +
 hw/char/serial-pci.c             | 1 +
 hw/char/serial.c                 | 1 +
 hw/char/sh_serial.c              | 2 ++
 hw/char/spapr_vty.c              | 1 +
 hw/char/stm32f2xx_usart.c        | 1 +
 hw/char/xilinx_uartlite.c        | 1 +
 hw/core/or-irq.c                 | 1 +
 hw/core/qdev.c                   | 1 +
 hw/core/split-irq.c              | 1 +
 hw/cpu/a15mpcore.c               | 1 +
 hw/cpu/a9mpcore.c                | 1 +
 hw/cpu/arm11mpcore.c             | 1 +
 hw/cpu/realview_mpcore.c         | 1 +
 hw/display/ads7846.c             | 1 +
 hw/display/bcm2835_fb.c          | 1 +
 hw/display/cg3.c                 | 1 +
 hw/display/exynos4210_fimd.c     | 1 +
 hw/display/g364fb.c              | 1 +
 hw/display/milkymist-tmu2.c      | 1 +
 hw/display/omap_dss.c            | 2 ++
 hw/display/omap_lcdc.c           | 2 ++
 hw/display/pl110.c               | 1 +
 hw/display/pxa2xx_lcd.c          | 1 +
 hw/display/tc6393xb.c            | 2 ++
 hw/display/xlnx_dp.c             | 1 +
 hw/dma/bcm2835_dma.c             | 1 +
 hw/dma/etraxfs_dma.c             | 2 ++
 hw/dma/pl080.c                   | 1 +
 hw/dma/pl330.c                   | 1 +
 hw/dma/pxa2xx_dma.c              | 1 +
 hw/dma/rc4030.c                  | 1 +
 hw/dma/sparc32_dma.c             | 1 +
 hw/dma/xilinx_axidma.c           | 1 +
 hw/dma/xlnx-zdma.c               | 1 +
 hw/dma/xlnx-zynq-devcfg.c        | 1 +
 hw/dma/xlnx_dpdma.c              | 1 +
 hw/gpio/bcm2835_gpio.c           | 1 +
 hw/gpio/gpio_key.c               | 1 +
 hw/gpio/imx_gpio.c               | 1 +
 hw/gpio/max7310.c                | 1 +
 hw/gpio/mpc8xxx.c                | 1 +
 hw/gpio/nrf51_gpio.c             | 1 +
 hw/gpio/omap_gpio.c              | 1 +
 hw/gpio/pl061.c                  | 1 +
 hw/gpio/zaurus.c                 | 1 +
 hw/hppa/dino.c                   | 1 +
 hw/i2c/aspeed_i2c.c              | 1 +
 hw/i2c/bitbang_i2c.c             | 1 +
 hw/i2c/exynos4210_i2c.c          | 1 +
 hw/i2c/imx_i2c.c                 | 1 +
 hw/i2c/mpc_i2c.c                 | 1 +
 hw/i2c/omap_i2c.c                | 1 +
 hw/i2c/ppc4xx_i2c.c              | 1 +
 hw/i386/kvm/i8259.c              | 1 +
 hw/i386/kvm/ioapic.c             | 1 +
 hw/i386/pc.c                     | 1 +
 hw/i386/pc_piix.c                | 1 +
 hw/i386/xen/xen-hvm.c            | 1 +
 hw/input/lm832x.c                | 1 +
 hw/input/milkymist-softusb.c     | 1 +
 hw/input/pckbd.c                 | 1 +
 hw/input/pl050.c                 | 1 +
 hw/input/pxa2xx_keypad.c         | 1 +
 hw/input/stellaris_input.c       | 2 ++
 hw/input/tsc2005.c               | 1 +
 hw/input/tsc210x.c               | 1 +
 hw/intc/allwinner-a10-pic.c      | 1 +
 hw/intc/arm_gic.c                | 1 +
 hw/intc/arm_gicv2m.c             | 1 +
 hw/intc/arm_gicv3_cpuif.c        | 1 +
 hw/intc/armv7m_nvic.c            | 1 +
 hw/intc/aspeed_vic.c             | 1 +
 hw/intc/bcm2835_ic.c             | 1 +
 hw/intc/bcm2836_control.c        | 1 +
 hw/intc/etraxfs_pic.c            | 1 +
 hw/intc/exynos4210_combiner.c    | 1 +
 hw/intc/heathrow_pic.c           | 1 +
 hw/intc/i8259.c                  | 2 ++
 hw/intc/imx_avic.c               | 1 +
 hw/intc/lm32_pic.c               | 1 +
 hw/intc/mips_gic.c               | 1 +
 hw/intc/nios2_iic.c              | 1 +
 hw/intc/omap_intc.c              | 1 +
 hw/intc/ompic.c                  | 1 +
 hw/intc/openpic.c                | 1 +
 hw/intc/pl190.c                  | 1 +
 hw/intc/puv3_intc.c              | 1 +
 hw/intc/realview_gic.c           | 1 +
 hw/intc/sh_intc.c                | 1 +
 hw/intc/slavio_intctl.c          | 1 +
 hw/intc/xics.c                   | 1 +
 hw/intc/xilinx_intc.c            | 1 +
 hw/intc/xive.c                   | 1 +
 hw/intc/xlnx-pmu-iomod-intc.c    | 1 +
 hw/intc/xlnx-zynqmp-ipi.c        | 1 +
 hw/ipack/ipack.c                 | 1 +
 hw/ipack/tpci200.c               | 1 +
 hw/ipmi/isa_ipmi_bt.c            | 1 +
 hw/ipmi/isa_ipmi_kcs.c           | 1 +
 hw/isa/i82378.c                  | 1 +
 hw/isa/lpc_ich9.c                | 2 ++
 hw/lm32/lm32_boards.c            | 1 +
 hw/lm32/milkymist.c              | 1 +
 hw/m68k/mcf5206.c                | 2 ++
 hw/m68k/mcf5208.c                | 2 ++
 hw/m68k/mcf_intc.c               | 1 +
 hw/mips/gt64xxx_pci.c            | 1 +
 hw/mips/mips_int.c               | 1 +
 hw/mips/mips_malta.c             | 1 +
 hw/misc/arm_sysctl.c             | 1 +
 hw/misc/armsse-mhu.c             | 1 +
 hw/misc/aspeed_xdma.c            | 1 +
 hw/misc/bcm2835_mbox.c           | 1 +
 hw/misc/bcm2835_property.c       | 1 +
 hw/misc/eccmemctl.c              | 1 +
 hw/misc/iotkit-secctl.c          | 1 +
 hw/misc/macio/mac_dbdma.c        | 1 +
 hw/misc/macio/pmu.c              | 1 +
 hw/misc/max111x.c                | 1 +
 hw/misc/milkymist-pfpu.c         | 1 +
 hw/misc/mos6522.c                | 1 +
 hw/misc/mst_fpga.c               | 1 +
 hw/misc/nrf51_rng.c              | 1 +
 hw/misc/omap_clk.c               | 2 ++
 hw/misc/omap_gpmc.c              | 2 ++
 hw/misc/pc-testdev.c             | 1 +
 hw/misc/slavio_misc.c            | 1 +
 hw/misc/tmp105.c                 | 1 +
 hw/misc/tz-mpc.c                 | 1 +
 hw/misc/tz-msc.c                 | 1 +
 hw/misc/tz-ppc.c                 | 1 +
 hw/misc/zynq-xadc.c              | 1 +
 hw/net/allwinner_emac.c          | 1 +
 hw/net/cadence_gem.c             | 1 +
 hw/net/can/can_kvaser_pci.c      | 1 +
 hw/net/can/can_mioe3680_pci.c    | 1 +
 hw/net/can/can_pcm3680_pci.c     | 1 +
 hw/net/can/can_sja1000.c         | 2 ++
 hw/net/dp8393x.c                 | 1 +
 hw/net/fsl_etsec/etsec.c         | 1 +
 hw/net/ftgmac100.c               | 1 +
 hw/net/imx_fec.c                 | 1 +
 hw/net/lan9118.c                 | 1 +
 hw/net/mcf_fec.c                 | 1 +
 hw/net/milkymist-minimac2.c      | 1 +
 hw/net/mipsnet.c                 | 1 +
 hw/net/ne2000-pci.c              | 2 ++
 hw/net/ne2000.c                  | 1 +
 hw/net/opencores_eth.c           | 1 +
 hw/net/pcnet-pci.c               | 1 +
 hw/net/pcnet.c                   | 1 +
 hw/net/smc91c111.c               | 1 +
 hw/net/spapr_llan.c              | 1 +
 hw/net/stellaris_enet.c          | 1 +
 hw/net/xgmac.c                   | 1 +
 hw/net/xilinx_axienet.c          | 1 +
 hw/net/xilinx_ethlite.c          | 1 +
 hw/nios2/cpu_pic.c               | 1 +
 hw/openrisc/openrisc_sim.c       | 1 +
 hw/openrisc/pic_cpu.c            | 1 +
 hw/pci-host/bonito.c             | 1 +
 hw/pci-host/designware.c         | 1 +
 hw/pci-host/gpex.c               | 1 +
 hw/pci-host/grackle.c            | 1 +
 hw/pci-host/piix.c               | 1 +
 hw/pci-host/ppce500.c            | 1 +
 hw/pci-host/prep.c               | 1 +
 hw/pci-host/sabre.c              | 1 +
 hw/pci-host/uninorth.c           | 1 +
 hw/pci-host/versatile.c          | 1 +
 hw/pci-host/xilinx-pcie.c        | 1 +
 hw/pci/pci.c                     | 1 +
 hw/pcmcia/pxa2xx.c               | 1 +
 hw/ppc/e500.c                    | 1 +
 hw/ppc/pnv_lpc.c                 | 1 +
 hw/ppc/pnv_psi.c                 | 1 +
 hw/ppc/ppc.c                     | 2 ++
 hw/ppc/ppc405_uc.c               | 1 +
 hw/ppc/ppc440_pcix.c             | 1 +
 hw/ppc/ppc440_uc.c               | 1 +
 hw/ppc/ppc4xx_devs.c             | 1 +
 hw/ppc/ppc4xx_pci.c              | 1 +
 hw/ppc/prep.c                    | 1 +
 hw/ppc/prep_systemio.c           | 1 +
 hw/ppc/spapr_events.c            | 2 ++
 hw/ppc/spapr_irq.c               | 1 +
 hw/ppc/spapr_pci.c               | 1 +
 hw/ppc/spapr_vio.c               | 1 +
 hw/riscv/sifive_gpio.c           | 1 +
 hw/riscv/sifive_uart.c           | 1 +
 hw/scsi/esp-pci.c                | 1 +
 hw/scsi/esp.c                    | 1 +
 hw/scsi/lsi53c895a.c             | 1 +
 hw/sd/bcm2835_sdhost.c           | 1 +
 hw/sd/omap_mmc.c                 | 2 ++
 hw/sd/pl181.c                    | 1 +
 hw/sd/pxa2xx_mmci.c              | 1 +
 hw/sd/sd.c                       | 1 +
 hw/sd/sdhci.c                    | 1 +
 hw/sh4/r2d.c                     | 1 +
 hw/sh4/sh7750.c                  | 2 ++
 hw/sh4/sh_pci.c                  | 1 +
 hw/sparc/leon3.c                 | 1 +
 hw/sparc/sun4m.c                 | 1 +
 hw/sparc/sun4m_iommu.c           | 1 +
 hw/ssi/aspeed_smc.c              | 1 +
 hw/ssi/imx_spi.c                 | 1 +
 hw/ssi/mss-spi.c                 | 1 +
 hw/ssi/omap_spi.c                | 2 ++
 hw/ssi/pl022.c                   | 1 +
 hw/ssi/xilinx_spi.c              | 1 +
 hw/ssi/xilinx_spips.c            | 1 +
 hw/timer/a9gtimer.c              | 1 +
 hw/timer/allwinner-a10-pit.c     | 1 +
 hw/timer/altera_timer.c          | 1 +
 hw/timer/arm_mptimer.c           | 1 +
 hw/timer/arm_timer.c             | 1 +
 hw/timer/armv7m_systick.c        | 1 +
 hw/timer/aspeed_timer.c          | 1 +
 hw/timer/cadence_ttc.c           | 1 +
 hw/timer/cmsdk-apb-dualtimer.c   | 1 +
 hw/timer/cmsdk-apb-timer.c       | 1 +
 hw/timer/etraxfs_timer.c         | 1 +
 hw/timer/exynos4210_mct.c        | 1 +
 hw/timer/exynos4210_pwm.c        | 1 +
 hw/timer/exynos4210_rtc.c        | 1 +
 hw/timer/grlib_gptimer.c         | 1 +
 hw/timer/hpet.c                  | 1 +
 hw/timer/i8254.c                 | 1 +
 hw/timer/imx_epit.c              | 1 +
 hw/timer/imx_gpt.c               | 1 +
 hw/timer/lm32_timer.c            | 1 +
 hw/timer/m48t59.c                | 1 +
 hw/timer/mc146818rtc.c           | 1 +
 hw/timer/milkymist-sysctl.c      | 1 +
 hw/timer/mss-timer.c             | 1 +
 hw/timer/nrf51_timer.c           | 1 +
 hw/timer/omap_gptimer.c          | 2 ++
 hw/timer/pl031.c                 | 1 +
 hw/timer/puv3_ost.c              | 1 +
 hw/timer/pxa2xx_timer.c          | 1 +
 hw/timer/sh_timer.c              | 1 +
 hw/timer/slavio_timer.c          | 1 +
 hw/timer/stm32f2xx_timer.c       | 1 +
 hw/timer/twl92230.c              | 1 +
 hw/timer/xilinx_timer.c          | 1 +
 hw/timer/xlnx-zynqmp-rtc.c       | 1 +
 hw/tpm/tpm_tis.c                 | 1 +
 hw/unicore32/puv3.c              | 1 +
 hw/usb/hcd-ehci.c                | 1 +
 hw/usb/hcd-ohci.c                | 1 +
 hw/vfio/platform.c               | 1 +
 hw/virtio/virtio-mmio.c          | 1 +
 hw/watchdog/cmsdk-apb-watchdog.c | 1 +
 hw/xtensa/mx_pic.c               | 1 +
 hw/xtensa/pic_cpu.c              | 1 +
 target/arm/helper.c              | 1 +
 target/arm/kvm.c                 | 1 +
 target/mips/cp0_timer.c          | 1 +
 338 files changed, 336 insertions(+), 34 deletions(-)

diff --git a/hw/alpha/alpha_sys.h b/hw/alpha/alpha_sys.h
index b6d8369ed7..4e127a6de8 100644
--- a/hw/alpha/alpha_sys.h
+++ b/hw/alpha/alpha_sys.h
@@ -8,7 +8,6 @@
 #include "hw/pci/pci_host.h"
 #include "hw/ide.h"
 #include "hw/i386/pc.h"
-#include "hw/irq.h"
 
 
 PCIBus *typhoon_init(ram_addr_t, ISABus **, qemu_irq *, AlphaCPU *[4],
diff --git a/hw/hppa/hppa_sys.h b/hw/hppa/hppa_sys.h
index f5f983bf4c..43d25d21fc 100644
--- a/hw/hppa/hppa_sys.h
+++ b/hw/hppa/hppa_sys.h
@@ -7,7 +7,6 @@
 #include "hw/pci/pci_host.h"
 #include "hw/ide.h"
 #include "hw/i386/pc.h"
-#include "hw/irq.h"
 
 #include "hppa_hardware.h"
 
diff --git a/include/hw/acpi/acpi.h b/include/hw/acpi/acpi.h
index c91e2b9df2..1f2dafbd7d 100644
--- a/include/hw/acpi/acpi.h
+++ b/include/hw/acpi/acpi.h
@@ -22,7 +22,6 @@
 
 #include "qemu/notify.h"
 #include "exec/memory.h"
-#include "hw/irq.h"
 #include "hw/acpi/acpi_dev_interface.h"
 
 /*
diff --git a/include/hw/arm/boot.h b/include/hw/arm/boot.h
index c48cc4c2bc..350d4b0498 100644
--- a/include/hw/arm/boot.h
+++ b/include/hw/arm/boot.h
@@ -13,7 +13,6 @@
 
 #include "exec/memory.h"
 #include "target/arm/cpu-qom.h"
-#include "hw/irq.h"
 #include "qemu/notify.h"
 
 typedef enum {
diff --git a/include/hw/arm/omap.h b/include/hw/arm/omap.h
index d21e418242..2fda996648 100644
--- a/include/hw/arm/omap.h
+++ b/include/hw/arm/omap.h
@@ -21,7 +21,6 @@
 #define HW_ARM_OMAP_H
 
 #include "exec/memory.h"
-#include "hw/irq.h"
 #include "hw/input/tsc2xxx.h"
 #include "target/arm/cpu-qom.h"
 #include "qemu/log.h"
diff --git a/include/hw/arm/soc_dma.h b/include/hw/arm/soc_dma.h
index fae322997e..7886291d54 100644
--- a/include/hw/arm/soc_dma.h
+++ b/include/hw/arm/soc_dma.h
@@ -22,7 +22,6 @@
 #define HW_SOC_DMA_H
 
 #include "exec/memory.h"
-#include "hw/irq.h"
 
 struct soc_dma_s;
 struct soc_dma_ch_s;
diff --git a/include/hw/block/fdc.h b/include/hw/block/fdc.h
index f4fe2f471b..c15ff4c623 100644
--- a/include/hw/block/fdc.h
+++ b/include/hw/block/fdc.h
@@ -2,7 +2,6 @@
 #define HW_FDC_H
 
 #include "exec/hwaddr.h"
-#include "hw/irq.h"
 #include "qapi/qapi-types-block.h"
 
 /* fdc.c */
diff --git a/include/hw/bt.h b/include/hw/bt.h
index b5e11d4d43..d9ee2fc29a 100644
--- a/include/hw/bt.h
+++ b/include/hw/bt.h
@@ -26,7 +26,6 @@
 #ifndef HW_BT_H
 #define HW_BT_H
 
-#include "hw/irq.h"
 
 /* BD Address */
 typedef struct {
diff --git a/include/hw/core/split-irq.h b/include/hw/core/split-irq.h
index bb87157c5a..872a39aa4f 100644
--- a/include/hw/core/split-irq.h
+++ b/include/hw/core/split-irq.h
@@ -35,7 +35,6 @@
 #ifndef HW_SPLIT_IRQ_H
 #define HW_SPLIT_IRQ_H
 
-#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qom/object.h"
 
diff --git a/include/hw/cris/etraxfs_dma.h b/include/hw/cris/etraxfs_dma.h
index 31ae360611..095d76b956 100644
--- a/include/hw/cris/etraxfs_dma.h
+++ b/include/hw/cris/etraxfs_dma.h
@@ -2,7 +2,6 @@
 #define HW_ETRAXFS_DMA_H
 
 #include "exec/hwaddr.h"
-#include "hw/irq.h"
 
 struct dma_context_metadata {
 	/* data descriptor md */
diff --git a/include/hw/display/blizzard.h b/include/hw/display/blizzard.h
index ef72bbc186..5b33018835 100644
--- a/include/hw/display/blizzard.h
+++ b/include/hw/display/blizzard.h
@@ -11,7 +11,6 @@
 #ifndef HW_DISPLAY_BLIZZARD_H
 #define HW_DISPLAY_BLIZZARD_H
 
-#include "hw/irq.h"
 
 void *s1d13745_init(qemu_irq gpio_int);
 void s1d13745_write(void *opaque, int dc, uint16_t value);
diff --git a/include/hw/display/tc6393xb.h b/include/hw/display/tc6393xb.h
index 5c4da91f80..c653ef717b 100644
--- a/include/hw/display/tc6393xb.h
+++ b/include/hw/display/tc6393xb.h
@@ -13,7 +13,6 @@
 #define HW_DISPLAY_TC6393XB_H
 
 #include "exec/memory.h"
-#include "hw/irq.h"
 
 typedef struct TC6393xbState TC6393xbState;
 
diff --git a/include/hw/hw.h b/include/hw/hw.h
index b399627cbe..38d2fb1f40 100644
--- a/include/hw/hw.h
+++ b/include/hw/hw.h
@@ -9,7 +9,6 @@
 #include "exec/cpu-common.h"
 #include "qom/object.h"
 #include "exec/memory.h"
-#include "hw/irq.h"
 #include "migration/vmstate.h"
 
 void QEMU_NORETURN hw_error(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
diff --git a/include/hw/ide/internal.h b/include/hw/ide/internal.h
index 8efd03132b..c6954c1d56 100644
--- a/include/hw/ide/internal.h
+++ b/include/hw/ide/internal.h
@@ -7,6 +7,7 @@
  * non-internal declarations are in hw/ide.h
  */
 #include "hw/ide.h"
+#include "hw/irq.h"
 #include "hw/isa/isa.h"
 #include "sysemu/dma.h"
 #include "sysemu/sysemu.h"
diff --git a/include/hw/input/gamepad.h b/include/hw/input/gamepad.h
index e20211baef..6f6aa2406a 100644
--- a/include/hw/input/gamepad.h
+++ b/include/hw/input/gamepad.h
@@ -11,7 +11,6 @@
 #ifndef HW_INPUT_GAMEPAD_H
 #define HW_INPUT_GAMEPAD_H
 
-#include "hw/irq.h"
 
 /* stellaris_input.c */
 void stellaris_gamepad_init(int n, qemu_irq *irq, const int *keycode);
diff --git a/include/hw/input/tsc2xxx.h b/include/hw/input/tsc2xxx.h
index dbfe5c55c1..3cd8f1bf55 100644
--- a/include/hw/input/tsc2xxx.h
+++ b/include/hw/input/tsc2xxx.h
@@ -11,7 +11,6 @@
 #ifndef HW_INPUT_TSC2XXX_H
 #define HW_INPUT_TSC2XXX_H
 
-#include "hw/irq.h"
 #include "ui/console.h"
 
 typedef struct uWireSlave {
diff --git a/include/hw/irq.h b/include/hw/irq.h
index 7a40e3ed26..fe527f6f51 100644
--- a/include/hw/irq.h
+++ b/include/hw/irq.h
@@ -5,10 +5,6 @@
 
 #define TYPE_IRQ "irq"
 
-typedef struct IRQState *qemu_irq;
-
-typedef void (*qemu_irq_handler)(void *opaque, int n, int level);
-
 void qemu_set_irq(qemu_irq irq, int level);
 
 static inline void qemu_irq_raise(qemu_irq irq)
diff --git a/include/hw/isa/vt82c686.h b/include/hw/isa/vt82c686.h
index a54c3fe60a..f23f45dfb1 100644
--- a/include/hw/isa/vt82c686.h
+++ b/include/hw/isa/vt82c686.h
@@ -1,7 +1,6 @@
 #ifndef HW_VT82C686_H
 #define HW_VT82C686_H
 
-#include "hw/irq.h"
 
 #define TYPE_VT82C686B_SUPERIO "vt82c686b-superio"
 
diff --git a/include/hw/mips/mips.h b/include/hw/mips/mips.h
index 2f6774d540..0af4c3d5d7 100644
--- a/include/hw/mips/mips.h
+++ b/include/hw/mips/mips.h
@@ -6,7 +6,6 @@
 #define INITRD_PAGE_MASK (~((1 << 16) - 1))
 
 #include "exec/memory.h"
-#include "hw/irq.h"
 
 /* gt64xxx.c */
 PCIBus *gt64120_register(qemu_irq *pic);
diff --git a/include/hw/misc/cbus.h b/include/hw/misc/cbus.h
index c899943e03..5334984020 100644
--- a/include/hw/misc/cbus.h
+++ b/include/hw/misc/cbus.h
@@ -13,7 +13,6 @@
 #ifndef HW_MISC_CBUS_H
 #define HW_MISC_CBUS_H
 
-#include "hw/irq.h"
 
 typedef struct {
     qemu_irq clk;
diff --git a/include/hw/net/lan9118.h b/include/hw/net/lan9118.h
index 500acb4c14..3d0c67f339 100644
--- a/include/hw/net/lan9118.h
+++ b/include/hw/net/lan9118.h
@@ -11,7 +11,6 @@
 #ifndef HW_NET_LAN9118_H
 #define HW_NET_LAN9118_H
 
-#include "hw/irq.h"
 #include "net/net.h"
 
 #define TYPE_LAN9118 "lan9118"
diff --git a/include/hw/net/smc91c111.h b/include/hw/net/smc91c111.h
index a66ba4112f..df5b11dcef 100644
--- a/include/hw/net/smc91c111.h
+++ b/include/hw/net/smc91c111.h
@@ -11,7 +11,6 @@
 #ifndef HW_NET_SMC91C111_H
 #define HW_NET_SMC91C111_H
 
-#include "hw/irq.h"
 #include "net/net.h"
 
 void smc91c111_init(NICInfo *, uint32_t, qemu_irq);
diff --git a/include/hw/or-irq.h b/include/hw/or-irq.h
index 5a31e5a188..3a3230dd84 100644
--- a/include/hw/or-irq.h
+++ b/include/hw/or-irq.h
@@ -25,7 +25,6 @@
 #ifndef HW_OR_IRQ_H
 #define HW_OR_IRQ_H
 
-#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qom/object.h"
 
diff --git a/include/hw/ppc/spapr_irq.h b/include/hw/ppc/spapr_irq.h
index cd6e18b05e..8132e00366 100644
--- a/include/hw/ppc/spapr_irq.h
+++ b/include/hw/ppc/spapr_irq.h
@@ -10,7 +10,6 @@
 #ifndef HW_SPAPR_IRQ_H
 #define HW_SPAPR_IRQ_H
 
-#include "hw/irq.h"
 #include "target/ppc/cpu-qom.h"
 
 /*
diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
index 136df7774c..b870c8ceeb 100644
--- a/include/hw/qdev-core.h
+++ b/include/hw/qdev-core.h
@@ -4,7 +4,6 @@
 #include "qemu/queue.h"
 #include "qemu/bitmap.h"
 #include "qom/object.h"
-#include "hw/irq.h"
 #include "hw/hotplug.h"
 #include "sysemu/sysemu.h"
 
diff --git a/include/hw/sh4/sh_intc.h b/include/hw/sh4/sh_intc.h
index 3d3efde059..65f3425057 100644
--- a/include/hw/sh4/sh_intc.h
+++ b/include/hw/sh4/sh_intc.h
@@ -2,7 +2,6 @@
 #define SH_INTC_H
 
 #include "exec/memory.h"
-#include "hw/irq.h"
 
 typedef unsigned char intc_enum;
 
diff --git a/include/hw/timer/m48t59.h b/include/hw/timer/m48t59.h
index d3fb50e08c..f74854c026 100644
--- a/include/hw/timer/m48t59.h
+++ b/include/hw/timer/m48t59.h
@@ -2,7 +2,6 @@
 #define HW_M48T59_H
 
 #include "exec/hwaddr.h"
-#include "hw/irq.h"
 #include "qom/object.h"
 
 #define TYPE_NVRAM "nvram"
diff --git a/include/hw/tricore/tricore.h b/include/hw/tricore/tricore.h
index 89ef922c67..c19ed3f013 100644
--- a/include/hw/tricore/tricore.h
+++ b/include/hw/tricore/tricore.h
@@ -2,7 +2,6 @@
 #define HW_TRICORE_H
 
 #include "exec/memory.h"
-#include "hw/irq.h"
 
 struct tricore_boot_info {
     uint64_t ram_size;
diff --git a/include/hw/vfio/vfio-platform.h b/include/hw/vfio/vfio-platform.h
index 30d3c28d3b..4ec70c813a 100644
--- a/include/hw/vfio/vfio-platform.h
+++ b/include/hw/vfio/vfio-platform.h
@@ -20,7 +20,6 @@
 #include "hw/vfio/vfio-common.h"
 #include "qemu/event_notifier.h"
 #include "qemu/queue.h"
-#include "hw/irq.h"
 
 #define TYPE_VFIO_PLATFORM "vfio-platform"
 
diff --git a/include/hw/xen/xen.h b/include/hw/xen/xen.h
index 9c7b5f78dc..5ac1c6dc55 100644
--- a/include/hw/xen/xen.h
+++ b/include/hw/xen/xen.h
@@ -9,7 +9,6 @@
  */
 
 #include "exec/cpu-common.h"
-#include "hw/irq.h"
 
 /* xen-machine.c */
 enum xen_mode {
diff --git a/include/hw/xtensa/mx_pic.h b/include/hw/xtensa/mx_pic.h
index c9ea9e737c..500424c8d3 100644
--- a/include/hw/xtensa/mx_pic.h
+++ b/include/hw/xtensa/mx_pic.h
@@ -29,7 +29,6 @@
 #define XTENSA_MX_PIC_H
 
 #include "exec/memory.h"
-#include "hw/irq.h"
 
 struct XtensaMxPic;
 typedef struct XtensaMxPic XtensaMxPic;
diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h
index 29346648d4..c32efb5b18 100644
--- a/include/qemu/typedefs.h
+++ b/include/qemu/typedefs.h
@@ -102,10 +102,19 @@ typedef struct SSIBus SSIBus;
 typedef struct VirtIODevice VirtIODevice;
 typedef struct Visitor Visitor;
 
+/*
+ * Pointer types
+ * Such typedefs should be limited to cases where the typedef's users
+ * are oblivious of its "pointer-ness".
+ * Please keep this list in case-insensitive alphabetical order.
+ */
+typedef struct IRQState *qemu_irq;
+
 /*
  * Function types
  */
 typedef void SaveStateHandler(QEMUFile *f, void *opaque);
 typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);
+typedef void (*qemu_irq_handler)(void *opaque, int n, int level);
 
 #endif /* QEMU_TYPEDEFS_H */
diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h
index acd90aebb6..c8ea412f62 100644
--- a/include/sysemu/kvm.h
+++ b/include/sysemu/kvm.h
@@ -17,7 +17,6 @@
 #include "qemu/queue.h"
 #include "qom/cpu.h"
 #include "exec/memattrs.h"
-#include "hw/irq.h"
 
 #ifdef NEED_CPU_H
 # ifdef CONFIG_KVM
diff --git a/hw/acpi/core.c b/hw/acpi/core.c
index 228828a494..39e9fb1a6c 100644
--- a/hw/acpi/core.c
+++ b/hw/acpi/core.c
@@ -22,6 +22,7 @@
 #include "qemu/osdep.h"
 #include "sysemu/sysemu.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/acpi/acpi.h"
 #include "hw/nvram/fw_cfg.h"
 #include "qemu/config-file.h"
diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c
index 0d8c821f37..8f9a7ba2ab 100644
--- a/hw/acpi/piix4.c
+++ b/hw/acpi/piix4.c
@@ -22,6 +22,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/i386/pc.h"
+#include "hw/irq.h"
 #include "hw/isa/apm.h"
 #include "hw/i2c/pm_smbus.h"
 #include "hw/pci/pci.h"
diff --git a/hw/alpha/typhoon.c b/hw/alpha/typhoon.c
index 3f34a5153f..6797eb0abe 100644
--- a/hw/alpha/typhoon.c
+++ b/hw/alpha/typhoon.c
@@ -12,6 +12,7 @@
 #include "qapi/error.h"
 #include "cpu.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "sysemu/sysemu.h"
 #include "alpha_sys.h"
 #include "exec/address-spaces.h"
diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c
index b5c614cc3a..85cfa414eb 100644
--- a/hw/arm/armsse.c
+++ b/hw/arm/armsse.c
@@ -19,6 +19,7 @@
 #include "hw/registerfields.h"
 #include "hw/arm/armsse.h"
 #include "hw/arm/boot.h"
+#include "hw/irq.h"
 
 /* Format of the System Information block SYS_CONFIG register */
 typedef enum SysConfigFormat {
diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c
index becd864c19..9aa5ec3f5d 100644
--- a/hw/arm/exynos4210.c
+++ b/hw/arm/exynos4210.c
@@ -26,6 +26,7 @@
 #include "qemu/log.h"
 #include "cpu.h"
 #include "hw/cpu/a9mpcore.h"
+#include "hw/irq.h"
 #include "hw/boards.h"
 #include "sysemu/sysemu.h"
 #include "hw/sysbus.h"
diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c
index ac0b0dc2a9..7624e16084 100644
--- a/hw/arm/exynos4_boards.c
+++ b/hw/arm/exynos4_boards.c
@@ -34,6 +34,7 @@
 #include "hw/arm/exynos4210.h"
 #include "hw/net/lan9118.h"
 #include "hw/boards.h"
+#include "hw/irq.h"
 
 #define SMDK_LAN9118_BASE_ADDR      0x05000000
 
diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c
index 200c0107f0..d6025684f4 100644
--- a/hw/arm/integratorcp.c
+++ b/hw/arm/integratorcp.c
@@ -20,6 +20,7 @@
 #include "sysemu/sysemu.h"
 #include "qemu/error-report.h"
 #include "hw/char/pl011.h"
+#include "hw/irq.h"
 
 #define TYPE_INTEGRATOR_CM "integrator_core"
 #define INTEGRATOR_CM(obj) \
diff --git a/hw/arm/msf2-soc.c b/hw/arm/msf2-soc.c
index 1ccb644df7..4e5251c92e 100644
--- a/hw/arm/msf2-soc.c
+++ b/hw/arm/msf2-soc.c
@@ -27,6 +27,7 @@
 #include "qapi/error.h"
 #include "exec/address-spaces.h"
 #include "hw/char/serial.h"
+#include "hw/irq.h"
 #include "hw/boards.h"
 #include "hw/arm/msf2-soc.h"
 #include "hw/misc/unimp.h"
diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c
index 95d56f3208..848e49f459 100644
--- a/hw/arm/musicpal.c
+++ b/hw/arm/musicpal.c
@@ -23,6 +23,7 @@
 #include "hw/block/flash.h"
 #include "ui/console.h"
 #include "hw/i2c/i2c.h"
+#include "hw/irq.h"
 #include "hw/audio/wm8750.h"
 #include "sysemu/block-backend.h"
 #include "exec/address-spaces.h"
diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c
index beaddaf11f..cce671014b 100644
--- a/hw/arm/omap1.c
+++ b/hw/arm/omap1.c
@@ -24,6 +24,7 @@
 #include "cpu.h"
 #include "hw/boards.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/arm/boot.h"
 #include "hw/arm/omap.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/arm/omap2.c b/hw/arm/omap2.c
index 7d4cac1f46..397630e2f2 100644
--- a/hw/arm/omap2.c
+++ b/hw/arm/omap2.c
@@ -26,6 +26,7 @@
 #include "sysemu/reset.h"
 #include "hw/boards.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/arm/boot.h"
 #include "hw/arm/omap.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/arm/palm.c b/hw/arm/palm.c
index 9eb9612bce..a5eccb7290 100644
--- a/hw/arm/palm.c
+++ b/hw/arm/palm.c
@@ -16,6 +16,7 @@
  * You should have received a copy of the GNU General Public License along
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
+
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "hw/hw.h"
@@ -27,6 +28,7 @@
 #include "hw/boards.h"
 #include "hw/arm/boot.h"
 #include "hw/input/tsc2xxx.h"
+#include "hw/irq.h"
 #include "hw/loader.h"
 #include "exec/address-spaces.h"
 #include "cpu.h"
diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c
index e2e43ae6e8..ab3fbd7b64 100644
--- a/hw/arm/pxa2xx.c
+++ b/hw/arm/pxa2xx.c
@@ -18,6 +18,7 @@
 #include "sysemu/sysemu.h"
 #include "hw/char/serial.h"
 #include "hw/i2c/i2c.h"
+#include "hw/irq.h"
 #include "hw/ssi/ssi.h"
 #include "chardev/char-fe.h"
 #include "sysemu/blockdev.h"
diff --git a/hw/arm/pxa2xx_gpio.c b/hw/arm/pxa2xx_gpio.c
index d1fc9cba67..1b1fc499dc 100644
--- a/hw/arm/pxa2xx_gpio.c
+++ b/hw/arm/pxa2xx_gpio.c
@@ -10,6 +10,7 @@
 #include "qemu/osdep.h"
 #include "cpu.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "hw/arm/pxa.h"
 #include "qemu/log.h"
diff --git a/hw/arm/realview.c b/hw/arm/realview.c
index 7c56c8d2ed..b108a9ab26 100644
--- a/hw/arm/realview.c
+++ b/hw/arm/realview.c
@@ -25,6 +25,7 @@
 #include "hw/char/pl011.h"
 #include "hw/cpu/a9mpcore.h"
 #include "hw/intc/realview_gic.h"
+#include "hw/irq.h"
 
 #define SMP_BOOT_ADDR 0xe0000000
 #define SMP_BOOTREG_ADDR 0x10000030
diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c
index e96d5beb9a..ccca60720e 100644
--- a/hw/arm/smmuv3.c
+++ b/hw/arm/smmuv3.c
@@ -18,6 +18,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/boards.h"
+#include "hw/irq.h"
 #include "sysemu/sysemu.h"
 #include "hw/sysbus.h"
 #include "hw/qdev-core.h"
diff --git a/hw/arm/spitz.c b/hw/arm/spitz.c
index 723cf5d592..b90431ffea 100644
--- a/hw/arm/spitz.c
+++ b/hw/arm/spitz.c
@@ -18,6 +18,7 @@
 #include "sysemu/sysemu.h"
 #include "hw/pcmcia.h"
 #include "hw/i2c/i2c.h"
+#include "hw/irq.h"
 #include "hw/ssi/ssi.h"
 #include "hw/block/flash.h"
 #include "qemu/timer.h"
diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c
index 499035f5c8..088ae2dbd7 100644
--- a/hw/arm/stellaris.c
+++ b/hw/arm/stellaris.c
@@ -22,6 +22,7 @@
 #include "hw/arm/armv7m.h"
 #include "hw/char/pl011.h"
 #include "hw/input/gamepad.h"
+#include "hw/irq.h"
 #include "hw/watchdog/cmsdk-apb-watchdog.h"
 #include "hw/misc/unimp.h"
 #include "cpu.h"
diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c
index fed51a8183..2e016f4b77 100644
--- a/hw/arm/strongarm.c
+++ b/hw/arm/strongarm.c
@@ -31,6 +31,7 @@
 #include "qemu-common.h"
 #include "cpu.h"
 #include "hw/boards.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "strongarm.h"
 #include "qemu/error-report.h"
diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c
index 7843d68d46..80c61aef16 100644
--- a/hw/arm/tosa.c
+++ b/hw/arm/tosa.c
@@ -21,6 +21,7 @@
 #include "hw/boards.h"
 #include "hw/display/tc6393xb.h"
 #include "hw/i2c/i2c.h"
+#include "hw/irq.h"
 #include "hw/ssi/ssi.h"
 #include "hw/sysbus.h"
 #include "exec/address-spaces.h"
diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c
index e5857117ac..bc922345a6 100644
--- a/hw/arm/versatilepb.c
+++ b/hw/arm/versatilepb.c
@@ -17,6 +17,7 @@
 #include "sysemu/sysemu.h"
 #include "hw/pci/pci.h"
 #include "hw/i2c/i2c.h"
+#include "hw/irq.h"
 #include "hw/boards.h"
 #include "exec/address-spaces.h"
 #include "hw/block/flash.h"
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index d9496c9363..0e5152ed3b 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -57,6 +57,7 @@
 #include "hw/arm/fdt.h"
 #include "hw/intc/arm_gic.h"
 #include "hw/intc/arm_gicv3_common.h"
+#include "hw/irq.h"
 #include "kvm_arm.h"
 #include "hw/firmware/smbios.h"
 #include "qapi/visitor.h"
diff --git a/hw/arm/z2.c b/hw/arm/z2.c
index 44aa748d39..366d46ff5f 100644
--- a/hw/arm/z2.c
+++ b/hw/arm/z2.c
@@ -16,6 +16,7 @@
 #include "hw/arm/pxa.h"
 #include "hw/arm/boot.h"
 #include "hw/i2c/i2c.h"
+#include "hw/irq.h"
 #include "hw/ssi/ssi.h"
 #include "hw/boards.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/audio/cs4231a.c b/hw/audio/cs4231a.c
index 7216b41cc1..9eeab137c7 100644
--- a/hw/audio/cs4231a.c
+++ b/hw/audio/cs4231a.c
@@ -26,6 +26,7 @@
 #include "hw/hw.h"
 #include "hw/audio/soundhw.h"
 #include "audio/audio.h"
+#include "hw/irq.h"
 #include "hw/isa/isa.h"
 #include "hw/qdev.h"
 #include "qemu/module.h"
diff --git a/hw/audio/gus.c b/hw/audio/gus.c
index 9ab51631d9..61230147ce 100644
--- a/hw/audio/gus.c
+++ b/hw/audio/gus.c
@@ -28,6 +28,7 @@
 #include "hw/hw.h"
 #include "hw/audio/soundhw.h"
 #include "audio/audio.h"
+#include "hw/irq.h"
 #include "hw/isa/isa.h"
 #include "gusemu.h"
 #include "gustate.h"
diff --git a/hw/audio/marvell_88w8618.c b/hw/audio/marvell_88w8618.c
index ff1a0d0d8f..167b478ec6 100644
--- a/hw/audio/marvell_88w8618.c
+++ b/hw/audio/marvell_88w8618.c
@@ -13,6 +13,7 @@
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/audio/wm8750.h"
 #include "audio/audio.h"
 #include "qapi/error.h"
diff --git a/hw/audio/milkymist-ac97.c b/hw/audio/milkymist-ac97.c
index bf6a5a6b96..3ba382ee4d 100644
--- a/hw/audio/milkymist-ac97.c
+++ b/hw/audio/milkymist-ac97.c
@@ -23,6 +23,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "trace.h"
 #include "audio/audio.h"
diff --git a/hw/audio/pl041.c b/hw/audio/pl041.c
index 59c6ce1f2e..47f0dfff18 100644
--- a/hw/audio/pl041.c
+++ b/hw/audio/pl041.c
@@ -21,6 +21,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/audio/sb16.c b/hw/audio/sb16.c
index a2db06a2bb..ba5a5dd022 100644
--- a/hw/audio/sb16.c
+++ b/hw/audio/sb16.c
@@ -26,6 +26,7 @@
 #include "hw/hw.h"
 #include "hw/audio/soundhw.h"
 #include "audio/audio.h"
+#include "hw/irq.h"
 #include "hw/isa/isa.h"
 #include "hw/qdev.h"
 #include "qemu/timer.h"
diff --git a/hw/block/fdc.c b/hw/block/fdc.c
index 9b24cb9b85..91d5f56cec 100644
--- a/hw/block/fdc.c
+++ b/hw/block/fdc.c
@@ -33,6 +33,7 @@
 #include "qapi/error.h"
 #include "qemu/error-report.h"
 #include "qemu/timer.h"
+#include "hw/irq.h"
 #include "hw/isa/isa.h"
 #include "hw/sysbus.h"
 #include "hw/block/block.h"
diff --git a/hw/char/bcm2835_aux.c b/hw/char/bcm2835_aux.c
index 94679d276c..8395c79520 100644
--- a/hw/char/bcm2835_aux.c
+++ b/hw/char/bcm2835_aux.c
@@ -22,6 +22,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/char/bcm2835_aux.h"
+#include "hw/irq.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c
index fa25fe24da..6b9eb140c7 100644
--- a/hw/char/cadence_uart.c
+++ b/hw/char/cadence_uart.c
@@ -29,6 +29,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/char/cadence_uart.h"
+#include "hw/irq.h"
 
 #ifdef CADENCE_UART_ERR_DEBUG
 #define DB_PRINT(...) do { \
diff --git a/hw/char/cmsdk-apb-uart.c b/hw/char/cmsdk-apb-uart.c
index 606c9cc7d6..dd96a3302e 100644
--- a/hw/char/cmsdk-apb-uart.c
+++ b/hw/char/cmsdk-apb-uart.c
@@ -25,6 +25,7 @@
 #include "chardev/char-fe.h"
 #include "chardev/char-serial.h"
 #include "hw/char/cmsdk-apb-uart.h"
+#include "hw/irq.h"
 
 REG32(DATA, 0)
 REG32(STATE, 4)
diff --git a/hw/char/escc.c b/hw/char/escc.c
index 8ddbb4be4f..678d494d39 100644
--- a/hw/char/escc.c
+++ b/hw/char/escc.c
@@ -24,6 +24,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qemu/module.h"
 #include "hw/char/escc.h"
diff --git a/hw/char/etraxfs_ser.c b/hw/char/etraxfs_ser.c
index 9745bca86c..e93f31c76a 100644
--- a/hw/char/etraxfs_ser.c
+++ b/hw/char/etraxfs_ser.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "chardev/char-fe.h"
 #include "qemu/log.h"
diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c
index c5700eeaec..dabcd07415 100644
--- a/hw/char/exynos4210_uart.c
+++ b/hw/char/exynos4210_uart.c
@@ -28,6 +28,7 @@
 #include "chardev/char-serial.h"
 
 #include "hw/arm/exynos4210.h"
+#include "hw/irq.h"
 
 #undef DEBUG_UART
 #undef DEBUG_UART_EXTEND
diff --git a/hw/char/grlib_apbuart.c b/hw/char/grlib_apbuart.c
index c2bb3ac153..13013e8a1c 100644
--- a/hw/char/grlib_apbuart.c
+++ b/hw/char/grlib_apbuart.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/sparc/grlib.h"
 #include "hw/sysbus.h"
 #include "qemu/module.h"
diff --git a/hw/char/imx_serial.c b/hw/char/imx_serial.c
index 0655a9571b..f79e47d4ee 100644
--- a/hw/char/imx_serial.c
+++ b/hw/char/imx_serial.c
@@ -20,6 +20,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/char/imx_serial.h"
+#include "hw/irq.h"
 #include "sysemu/sysemu.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/char/ipoctal232.c b/hw/char/ipoctal232.c
index 5ab731e408..7674e2d7b6 100644
--- a/hw/char/ipoctal232.c
+++ b/hw/char/ipoctal232.c
@@ -10,6 +10,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/ipack/ipack.h"
+#include "hw/irq.h"
 #include "qemu/bitops.h"
 #include "qemu/module.h"
 #include "chardev/char-fe.h"
diff --git a/hw/char/lm32_uart.c b/hw/char/lm32_uart.c
index d047a44e34..377032567a 100644
--- a/hw/char/lm32_uart.c
+++ b/hw/char/lm32_uart.c
@@ -24,6 +24,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "trace.h"
 #include "chardev/char-fe.h"
diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c
index 7b06110c4d..c403a1fdc6 100644
--- a/hw/char/mcf_uart.c
+++ b/hw/char/mcf_uart.c
@@ -8,6 +8,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qemu/module.h"
 #include "hw/m68k/mcf.h"
diff --git a/hw/char/milkymist-uart.c b/hw/char/milkymist-uart.c
index 8a78fcca8f..d4641b5f44 100644
--- a/hw/char/milkymist-uart.c
+++ b/hw/char/milkymist-uart.c
@@ -23,6 +23,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "trace.h"
 #include "chardev/char-fe.h"
diff --git a/hw/char/nrf51_uart.c b/hw/char/nrf51_uart.c
index c90b491477..bbe766d3c6 100644
--- a/hw/char/nrf51_uart.c
+++ b/hw/char/nrf51_uart.c
@@ -16,6 +16,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/char/nrf51_uart.h"
+#include "hw/irq.h"
 #include "trace.h"
 
 static void nrf51_uart_update_irq(NRF51UARTState *s)
diff --git a/hw/char/parallel.c b/hw/char/parallel.c
index fed15dc548..ea8ab35e59 100644
--- a/hw/char/parallel.c
+++ b/hw/char/parallel.c
@@ -29,6 +29,7 @@
 #include "hw/hw.h"
 #include "chardev/char-parallel.h"
 #include "chardev/char-fe.h"
+#include "hw/irq.h"
 #include "hw/isa/isa.h"
 #include "hw/char/parallel.h"
 #include "sysemu/reset.h"
diff --git a/hw/char/pl011.c b/hw/char/pl011.c
index c1ae2f31f5..a2da375528 100644
--- a/hw/char/pl011.c
+++ b/hw/char/pl011.c
@@ -20,6 +20,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/char/pl011.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "chardev/char-fe.h"
 #include "qemu/log.h"
diff --git a/hw/char/serial-pci-multi.c b/hw/char/serial-pci-multi.c
index 63dcbaa984..65dbfbd205 100644
--- a/hw/char/serial-pci-multi.c
+++ b/hw/char/serial-pci-multi.c
@@ -30,6 +30,7 @@
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "hw/char/serial.h"
+#include "hw/irq.h"
 #include "hw/pci/pci.h"
 
 #define PCI_SERIAL_MAX_PORTS 4
diff --git a/hw/char/serial-pci.c b/hw/char/serial-pci.c
index 9028efbda8..808d32b508 100644
--- a/hw/char/serial-pci.c
+++ b/hw/char/serial-pci.c
@@ -29,6 +29,7 @@
 #include "qapi/error.h"
 #include "qemu/module.h"
 #include "hw/char/serial.h"
+#include "hw/irq.h"
 #include "hw/pci/pci.h"
 
 typedef struct PCISerialState {
diff --git a/hw/char/serial.c b/hw/char/serial.c
index a9e42f7d97..1d977287ea 100644
--- a/hw/char/serial.c
+++ b/hw/char/serial.c
@@ -25,6 +25,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/char/serial.h"
+#include "hw/irq.h"
 #include "chardev/char-serial.h"
 #include "qapi/error.h"
 #include "qemu/timer.h"
diff --git a/hw/char/sh_serial.c b/hw/char/sh_serial.c
index 67740b7ee6..7a40aa90af 100644
--- a/hw/char/sh_serial.c
+++ b/hw/char/sh_serial.c
@@ -24,8 +24,10 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sh4/sh.h"
 #include "chardev/char-fe.h"
 #include "qapi/error.h"
diff --git a/hw/char/spapr_vty.c b/hw/char/spapr_vty.c
index 871d2666f3..f360ab3612 100644
--- a/hw/char/spapr_vty.c
+++ b/hw/char/spapr_vty.c
@@ -5,6 +5,7 @@
 #include "cpu.h"
 #include "hw/qdev.h"
 #include "chardev/char-fe.h"
+#include "hw/irq.h"
 #include "hw/ppc/spapr.h"
 #include "hw/ppc/spapr_vio.h"
 
diff --git a/hw/char/stm32f2xx_usart.c b/hw/char/stm32f2xx_usart.c
index 40c365b908..f43eb74fb1 100644
--- a/hw/char/stm32f2xx_usart.c
+++ b/hw/char/stm32f2xx_usart.c
@@ -24,6 +24,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/char/stm32f2xx_usart.h"
+#include "hw/irq.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/char/xilinx_uartlite.c b/hw/char/xilinx_uartlite.c
index 880962a756..250eed945c 100644
--- a/hw/char/xilinx_uartlite.c
+++ b/hw/char/xilinx_uartlite.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qemu/module.h"
 #include "chardev/char-fe.h"
diff --git a/hw/core/or-irq.c b/hw/core/or-irq.c
index 123a8c644a..6ed34d9238 100644
--- a/hw/core/or-irq.c
+++ b/hw/core/or-irq.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/or-irq.h"
 #include "qemu/module.h"
 
diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index 94ebc0a4a1..5c4b67a408 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -35,6 +35,7 @@
 #include "qemu/error-report.h"
 #include "qemu/option.h"
 #include "hw/hotplug.h"
+#include "hw/irq.h"
 #include "hw/boards.h"
 #include "hw/sysbus.h"
 
diff --git a/hw/core/split-irq.c b/hw/core/split-irq.c
index c606f4a802..6808e812b5 100644
--- a/hw/core/split-irq.c
+++ b/hw/core/split-irq.c
@@ -25,6 +25,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/core/split-irq.h"
+#include "hw/irq.h"
 #include "qapi/error.h"
 #include "qemu/module.h"
 
diff --git a/hw/cpu/a15mpcore.c b/hw/cpu/a15mpcore.c
index 980f230d75..fc19ed0214 100644
--- a/hw/cpu/a15mpcore.c
+++ b/hw/cpu/a15mpcore.c
@@ -22,6 +22,7 @@
 #include "qapi/error.h"
 #include "qemu/module.h"
 #include "hw/cpu/a15mpcore.h"
+#include "hw/irq.h"
 #include "sysemu/kvm.h"
 #include "kvm_arm.h"
 
diff --git a/hw/cpu/a9mpcore.c b/hw/cpu/a9mpcore.c
index 187e4d939e..9dda4d8888 100644
--- a/hw/cpu/a9mpcore.c
+++ b/hw/cpu/a9mpcore.c
@@ -12,6 +12,7 @@
 #include "qapi/error.h"
 #include "qemu/module.h"
 #include "hw/cpu/a9mpcore.h"
+#include "hw/irq.h"
 #include "qom/cpu.h"
 
 static void a9mp_priv_set_irq(void *opaque, int irq, int level)
diff --git a/hw/cpu/arm11mpcore.c b/hw/cpu/arm11mpcore.c
index 2404f93a3e..c611a6ff32 100644
--- a/hw/cpu/arm11mpcore.c
+++ b/hw/cpu/arm11mpcore.c
@@ -12,6 +12,7 @@
 #include "qemu/module.h"
 #include "hw/cpu/arm11mpcore.h"
 #include "hw/intc/realview_gic.h"
+#include "hw/irq.h"
 
 
 static void mpcore_priv_set_irq(void *opaque, int irq, int level)
diff --git a/hw/cpu/realview_mpcore.c b/hw/cpu/realview_mpcore.c
index f06294bb5e..34da446d94 100644
--- a/hw/cpu/realview_mpcore.c
+++ b/hw/cpu/realview_mpcore.c
@@ -13,6 +13,7 @@
 #include "qemu/module.h"
 #include "hw/cpu/arm11mpcore.h"
 #include "hw/intc/realview_gic.h"
+#include "hw/irq.h"
 
 #define TYPE_REALVIEW_MPCORE_RIRQ "realview_mpcore"
 #define REALVIEW_MPCORE_RIRQ(obj) \
diff --git a/hw/display/ads7846.c b/hw/display/ads7846.c
index 1a97e97638..12d8272615 100644
--- a/hw/display/ads7846.c
+++ b/hw/display/ads7846.c
@@ -11,6 +11,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/ssi/ssi.h"
 #include "qemu/module.h"
 #include "ui/console.h"
diff --git a/hw/display/bcm2835_fb.c b/hw/display/bcm2835_fb.c
index 2311ec75b8..e446355f29 100644
--- a/hw/display/bcm2835_fb.c
+++ b/hw/display/bcm2835_fb.c
@@ -26,6 +26,7 @@
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "hw/display/bcm2835_fb.h"
+#include "hw/irq.h"
 #include "framebuffer.h"
 #include "ui/pixel_ops.h"
 #include "hw/misc/bcm2835_mbox_defs.h"
diff --git a/hw/display/cg3.c b/hw/display/cg3.c
index a7340dc1c2..7cf9ebd604 100644
--- a/hw/display/cg3.c
+++ b/hw/display/cg3.c
@@ -29,6 +29,7 @@
 #include "qemu/error-report.h"
 #include "ui/console.h"
 #include "hw/sysbus.h"
+#include "hw/irq.h"
 #include "hw/loader.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/display/exynos4210_fimd.c b/hw/display/exynos4210_fimd.c
index 61f7408b1c..889622eefa 100644
--- a/hw/display/exynos4210_fimd.c
+++ b/hw/display/exynos4210_fimd.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "ui/console.h"
 #include "ui/pixel_ops.h"
diff --git a/hw/display/g364fb.c b/hw/display/g364fb.c
index 1774b4452e..89248f87df 100644
--- a/hw/display/g364fb.c
+++ b/hw/display/g364fb.c
@@ -20,6 +20,7 @@
 #include "qemu/osdep.h"
 #include "qemu/units.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 #include "ui/console.h"
diff --git a/hw/display/milkymist-tmu2.c b/hw/display/milkymist-tmu2.c
index e1ed018b8f..3f92378410 100644
--- a/hw/display/milkymist-tmu2.c
+++ b/hw/display/milkymist-tmu2.c
@@ -26,6 +26,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "trace.h"
 #include "qapi/error.h"
diff --git a/hw/display/omap_dss.c b/hw/display/omap_dss.c
index 601f178fdd..637aae8d39 100644
--- a/hw/display/omap_dss.c
+++ b/hw/display/omap_dss.c
@@ -17,8 +17,10 @@
  * You should have received a copy of the GNU General Public License along
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
+
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "ui/console.h"
 #include "hw/arm/omap.h"
 
diff --git a/hw/display/omap_lcdc.c b/hw/display/omap_lcdc.c
index 07a5effe04..b00ce04b3b 100644
--- a/hw/display/omap_lcdc.c
+++ b/hw/display/omap_lcdc.c
@@ -16,8 +16,10 @@
  * You should have received a copy of the GNU General Public License along
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
+
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "ui/console.h"
 #include "hw/arm/omap.h"
 #include "framebuffer.h"
diff --git a/hw/display/pl110.c b/hw/display/pl110.c
index 2bdfc3cc49..8fb510ee73 100644
--- a/hw/display/pl110.c
+++ b/hw/display/pl110.c
@@ -8,6 +8,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "ui/console.h"
 #include "framebuffer.h"
diff --git a/hw/display/pxa2xx_lcd.c b/hw/display/pxa2xx_lcd.c
index b83f80753a..7aca3912f5 100644
--- a/hw/display/pxa2xx_lcd.c
+++ b/hw/display/pxa2xx_lcd.c
@@ -12,6 +12,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "ui/console.h"
 #include "hw/arm/pxa.h"
 #include "ui/pixel_ops.h"
diff --git a/hw/display/tc6393xb.c b/hw/display/tc6393xb.c
index 0b7c59cde7..10e7f74c74 100644
--- a/hw/display/tc6393xb.c
+++ b/hw/display/tc6393xb.c
@@ -10,10 +10,12 @@
  * Contributions after 2012-01-13 are licensed under the terms of the
  * GNU GPL, version 2 or (at your option) any later version.
  */
+
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "qemu/host-utils.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/display/tc6393xb.h"
 #include "hw/block/flash.h"
 #include "ui/console.h"
diff --git a/hw/display/xlnx_dp.c b/hw/display/xlnx_dp.c
index cc5b650df0..4daac38070 100644
--- a/hw/display/xlnx_dp.c
+++ b/hw/display/xlnx_dp.c
@@ -27,6 +27,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/display/xlnx_dp.h"
+#include "hw/irq.h"
 
 #ifndef DEBUG_DP
 #define DEBUG_DP 0
diff --git a/hw/dma/bcm2835_dma.c b/hw/dma/bcm2835_dma.c
index a39e8f4968..090c73d951 100644
--- a/hw/dma/bcm2835_dma.c
+++ b/hw/dma/bcm2835_dma.c
@@ -6,6 +6,7 @@
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "hw/dma/bcm2835_dma.h"
+#include "hw/irq.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/dma/etraxfs_dma.c b/hw/dma/etraxfs_dma.c
index 85783eb847..4285443c81 100644
--- a/hw/dma/etraxfs_dma.c
+++ b/hw/dma/etraxfs_dma.c
@@ -21,8 +21,10 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "exec/address-spaces.h"
 #include "sysemu/sysemu.h"
 
diff --git a/hw/dma/pl080.c b/hw/dma/pl080.c
index 7e5762457b..be7f9c71a8 100644
--- a/hw/dma/pl080.c
+++ b/hw/dma/pl080.c
@@ -13,6 +13,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/dma/pl080.h"
+#include "hw/irq.h"
 #include "qapi/error.h"
 
 #define PL080_CONF_E    0x1
diff --git a/hw/dma/pl330.c b/hw/dma/pl330.c
index a56a3e7771..0d772de9f3 100644
--- a/hw/dma/pl330.c
+++ b/hw/dma/pl330.c
@@ -16,6 +16,7 @@
 
 #include "qemu/osdep.h"
 #include "qemu-common.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qapi/error.h"
 #include "qemu/timer.h"
diff --git a/hw/dma/pxa2xx_dma.c b/hw/dma/pxa2xx_dma.c
index d6fb957417..1c273fb309 100644
--- a/hw/dma/pxa2xx_dma.c
+++ b/hw/dma/pxa2xx_dma.c
@@ -10,6 +10,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/arm/pxa.h"
 #include "hw/sysbus.h"
 #include "qapi/error.h"
diff --git a/hw/dma/rc4030.c b/hw/dma/rc4030.c
index 155af9b26a..f7650f617c 100644
--- a/hw/dma/rc4030.c
+++ b/hw/dma/rc4030.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include "qemu/units.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/mips/mips.h"
 #include "hw/sysbus.h"
 #include "qemu/timer.h"
diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c
index 88765d0c25..a05b6be95c 100644
--- a/hw/dma/sparc32_dma.c
+++ b/hw/dma/sparc32_dma.c
@@ -27,6 +27,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sparc/sparc32_dma.h"
 #include "hw/sparc/sun4m_iommu.h"
 #include "hw/sysbus.h"
diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c
index 921be178d9..83b52e4ac7 100644
--- a/hw/dma/xilinx_axidma.c
+++ b/hw/dma/xilinx_axidma.c
@@ -26,6 +26,7 @@
 #include "hw/sysbus.h"
 #include "qapi/error.h"
 #include "qemu/timer.h"
+#include "hw/irq.h"
 #include "hw/ptimer.h"
 #include "qemu/log.h"
 #include "qemu/main-loop.h"
diff --git a/hw/dma/xlnx-zdma.c b/hw/dma/xlnx-zdma.c
index 51e1ead4fa..5afd77a5b8 100644
--- a/hw/dma/xlnx-zdma.c
+++ b/hw/dma/xlnx-zdma.c
@@ -28,6 +28,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/dma/xlnx-zdma.h"
+#include "hw/irq.h"
 #include "qemu/bitops.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/dma/xlnx-zynq-devcfg.c b/hw/dma/xlnx-zynq-devcfg.c
index 7a03ce1b02..855c784758 100644
--- a/hw/dma/xlnx-zynq-devcfg.c
+++ b/hw/dma/xlnx-zynq-devcfg.c
@@ -26,6 +26,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/dma/xlnx-zynq-devcfg.h"
+#include "hw/irq.h"
 #include "qemu/bitops.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/dma.h"
diff --git a/hw/dma/xlnx_dpdma.c b/hw/dma/xlnx_dpdma.c
index e834f81e17..1bba7f2159 100644
--- a/hw/dma/xlnx_dpdma.c
+++ b/hw/dma/xlnx_dpdma.c
@@ -27,6 +27,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/dma/xlnx_dpdma.h"
+#include "hw/irq.h"
 
 #ifndef DEBUG_DPDMA
 #define DEBUG_DPDMA 0
diff --git a/hw/gpio/bcm2835_gpio.c b/hw/gpio/bcm2835_gpio.c
index ba8dd6c393..ea3f3f2bda 100644
--- a/hw/gpio/bcm2835_gpio.c
+++ b/hw/gpio/bcm2835_gpio.c
@@ -19,6 +19,7 @@
 #include "hw/sysbus.h"
 #include "hw/sd/sd.h"
 #include "hw/gpio/bcm2835_gpio.h"
+#include "hw/irq.h"
 
 #define GPFSEL0   0x00
 #define GPFSEL1   0x04
diff --git a/hw/gpio/gpio_key.c b/hw/gpio/gpio_key.c
index 7d5510257e..66866fa87c 100644
--- a/hw/gpio/gpio_key.c
+++ b/hw/gpio/gpio_key.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qemu/module.h"
 #include "qemu/timer.h"
diff --git a/hw/gpio/imx_gpio.c b/hw/gpio/imx_gpio.c
index a51af72c1f..3d3c9644db 100644
--- a/hw/gpio/imx_gpio.c
+++ b/hw/gpio/imx_gpio.c
@@ -19,6 +19,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/gpio/imx_gpio.h"
+#include "hw/irq.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/gpio/max7310.c b/hw/gpio/max7310.c
index 273da622ca..b0925ab1a1 100644
--- a/hw/gpio/max7310.c
+++ b/hw/gpio/max7310.c
@@ -9,6 +9,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/i2c/i2c.h"
+#include "hw/irq.h"
 #include "qemu/module.h"
 
 #define TYPE_MAX7310 "max7310"
diff --git a/hw/gpio/mpc8xxx.c b/hw/gpio/mpc8xxx.c
index 6ff56dc3f2..f3b90b4b33 100644
--- a/hw/gpio/mpc8xxx.c
+++ b/hw/gpio/mpc8xxx.c
@@ -20,6 +20,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qemu/module.h"
 
diff --git a/hw/gpio/nrf51_gpio.c b/hw/gpio/nrf51_gpio.c
index dd6c16a841..24a890911a 100644
--- a/hw/gpio/nrf51_gpio.c
+++ b/hw/gpio/nrf51_gpio.c
@@ -14,6 +14,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/gpio/nrf51_gpio.h"
+#include "hw/irq.h"
 #include "trace.h"
 
 /*
diff --git a/hw/gpio/omap_gpio.c b/hw/gpio/omap_gpio.c
index e2785c5dc7..6ab51a9428 100644
--- a/hw/gpio/omap_gpio.c
+++ b/hw/gpio/omap_gpio.c
@@ -20,6 +20,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/arm/omap.h"
 #include "hw/sysbus.h"
 #include "qemu/error-report.h"
diff --git a/hw/gpio/pl061.c b/hw/gpio/pl061.c
index 02c01fd521..c605d91c93 100644
--- a/hw/gpio/pl061.c
+++ b/hw/gpio/pl061.c
@@ -9,6 +9,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/gpio/zaurus.c b/hw/gpio/zaurus.c
index f2f1f67266..98aa416931 100644
--- a/hw/gpio/zaurus.c
+++ b/hw/gpio/zaurus.c
@@ -18,6 +18,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/arm/sharpsl.h"
 #include "hw/sysbus.h"
 #include "qemu/module.h"
diff --git a/hw/hppa/dino.c b/hw/hppa/dino.c
index e94614abbd..90da6bcbb9 100644
--- a/hw/hppa/dino.c
+++ b/hw/hppa/dino.c
@@ -16,6 +16,7 @@
 #include "qapi/error.h"
 #include "cpu.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "sysemu/sysemu.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_bus.h"
diff --git a/hw/i2c/aspeed_i2c.c b/hw/i2c/aspeed_i2c.c
index 219ad3806f..bb7ef3cbf3 100644
--- a/hw/i2c/aspeed_i2c.c
+++ b/hw/i2c/aspeed_i2c.c
@@ -23,6 +23,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/i2c/aspeed_i2c.h"
+#include "hw/irq.h"
 
 /* I2C Global Register */
 
diff --git a/hw/i2c/bitbang_i2c.c b/hw/i2c/bitbang_i2c.c
index 60c7a9be0b..2289128aaf 100644
--- a/hw/i2c/bitbang_i2c.c
+++ b/hw/i2c/bitbang_i2c.c
@@ -12,6 +12,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/i2c/bitbang_i2c.h"
 #include "hw/sysbus.h"
 #include "qemu/module.h"
diff --git a/hw/i2c/exynos4210_i2c.c b/hw/i2c/exynos4210_i2c.c
index 70a97a3e2d..07d83d5a63 100644
--- a/hw/i2c/exynos4210_i2c.c
+++ b/hw/i2c/exynos4210_i2c.c
@@ -25,6 +25,7 @@
 #include "qemu/timer.h"
 #include "hw/sysbus.h"
 #include "hw/i2c/i2c.h"
+#include "hw/irq.h"
 
 #ifndef EXYNOS4_I2C_DEBUG
 #define EXYNOS4_I2C_DEBUG                 0
diff --git a/hw/i2c/imx_i2c.c b/hw/i2c/imx_i2c.c
index ce7a94c282..1d6b695615 100644
--- a/hw/i2c/imx_i2c.c
+++ b/hw/i2c/imx_i2c.c
@@ -20,6 +20,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/i2c/imx_i2c.h"
+#include "hw/irq.h"
 #include "hw/i2c/i2c.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/i2c/mpc_i2c.c b/hw/i2c/mpc_i2c.c
index e9a1127050..0aa4cacb65 100644
--- a/hw/i2c/mpc_i2c.c
+++ b/hw/i2c/mpc_i2c.c
@@ -19,6 +19,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/i2c/i2c.h"
+#include "hw/irq.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/sysbus.h"
diff --git a/hw/i2c/omap_i2c.c b/hw/i2c/omap_i2c.c
index d7ebeae8e2..309a37b1fa 100644
--- a/hw/i2c/omap_i2c.c
+++ b/hw/i2c/omap_i2c.c
@@ -22,6 +22,7 @@
 #include "qemu/module.h"
 #include "hw/hw.h"
 #include "hw/i2c/i2c.h"
+#include "hw/irq.h"
 #include "hw/arm/omap.h"
 #include "hw/sysbus.h"
 #include "qemu/error-report.h"
diff --git a/hw/i2c/ppc4xx_i2c.c b/hw/i2c/ppc4xx_i2c.c
index 462729db4e..d110b417c6 100644
--- a/hw/i2c/ppc4xx_i2c.c
+++ b/hw/i2c/ppc4xx_i2c.c
@@ -30,6 +30,7 @@
 #include "cpu.h"
 #include "hw/hw.h"
 #include "hw/i2c/ppc4xx_i2c.h"
+#include "hw/irq.h"
 
 #define PPC4xx_I2C_MEM_SIZE 18
 
diff --git a/hw/i386/kvm/i8259.c b/hw/i386/kvm/i8259.c
index bfdeab29be..d0c1b1deac 100644
--- a/hw/i386/kvm/i8259.c
+++ b/hw/i386/kvm/i8259.c
@@ -14,6 +14,7 @@
 #include "hw/isa/i8259_internal.h"
 #include "qemu/module.h"
 #include "hw/i386/apic_internal.h"
+#include "hw/irq.h"
 #include "sysemu/kvm.h"
 
 #define TYPE_KVM_I8259 "kvm-i8259"
diff --git a/hw/i386/kvm/ioapic.c b/hw/i386/kvm/ioapic.c
index e453692199..99ef530967 100644
--- a/hw/i386/kvm/ioapic.c
+++ b/hw/i386/kvm/ioapic.c
@@ -13,6 +13,7 @@
 #include "qemu/osdep.h"
 #include "monitor/monitor.h"
 #include "hw/i386/pc.h"
+#include "hw/irq.h"
 #include "hw/i386/ioapic_internal.h"
 #include "hw/i386/apic_internal.h"
 #include "sysemu/kvm.h"
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 73b55500b0..1453696975 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -46,6 +46,7 @@
 #include "hw/dma/i8257.h"
 #include "hw/timer/i8254.h"
 #include "hw/input/i8042.h"
+#include "hw/irq.h"
 #include "hw/audio/pcspk.h"
 #include "hw/pci/msi.h"
 #include "hw/sysbus.h"
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index c2280c72ef..129f47493b 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -38,6 +38,7 @@
 #include "net/net.h"
 #include "hw/boards.h"
 #include "hw/ide.h"
+#include "hw/irq.h"
 #include "sysemu/kvm.h"
 #include "hw/kvm/clock.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
index e8e79e0917..f769cd91f2 100644
--- a/hw/i386/xen/xen-hvm.c
+++ b/hw/i386/xen/xen-hvm.c
@@ -14,6 +14,7 @@
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_host.h"
 #include "hw/i386/pc.h"
+#include "hw/irq.h"
 #include "hw/i386/apic-msidef.h"
 #include "hw/xen/xen_common.h"
 #include "hw/xen/xen-legacy-backend.h"
diff --git a/hw/input/lm832x.c b/hw/input/lm832x.c
index ebb72c6590..2ab6d3290b 100644
--- a/hw/input/lm832x.c
+++ b/hw/input/lm832x.c
@@ -21,6 +21,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/i2c/i2c.h"
+#include "hw/irq.h"
 #include "qemu/module.h"
 #include "qemu/timer.h"
 #include "sysemu/reset.h"
diff --git a/hw/input/milkymist-softusb.c b/hw/input/milkymist-softusb.c
index f779cd4370..92e07fbd8c 100644
--- a/hw/input/milkymist-softusb.c
+++ b/hw/input/milkymist-softusb.c
@@ -28,6 +28,7 @@
 #include "trace.h"
 #include "ui/console.h"
 #include "hw/input/hid.h"
+#include "hw/irq.h"
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 
diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c
index 5d06a53362..7e76ee7ad3 100644
--- a/hw/input/pckbd.c
+++ b/hw/input/pckbd.c
@@ -28,6 +28,7 @@
 #include "hw/isa/isa.h"
 #include "hw/i386/pc.h"
 #include "hw/input/ps2.h"
+#include "hw/irq.h"
 #include "hw/input/i8042.h"
 #include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/input/pl050.c b/hw/input/pl050.c
index b79bf1647d..2318dbfeac 100644
--- a/hw/input/pl050.c
+++ b/hw/input/pl050.c
@@ -10,6 +10,7 @@
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
 #include "hw/input/ps2.h"
+#include "hw/irq.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/input/pxa2xx_keypad.c b/hw/input/pxa2xx_keypad.c
index 93db9ed25b..4788c96d19 100644
--- a/hw/input/pxa2xx_keypad.c
+++ b/hw/input/pxa2xx_keypad.c
@@ -13,6 +13,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/arm/pxa.h"
 #include "ui/console.h"
 
diff --git a/hw/input/stellaris_input.c b/hw/input/stellaris_input.c
index 3a666d61d4..ffea0542ba 100644
--- a/hw/input/stellaris_input.c
+++ b/hw/input/stellaris_input.c
@@ -6,9 +6,11 @@
  *
  * This code is licensed under the GPL.
  */
+
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/input/gamepad.h"
+#include "hw/irq.h"
 #include "ui/console.h"
 
 typedef struct {
diff --git a/hw/input/tsc2005.c b/hw/input/tsc2005.c
index 0a0431744c..e21356c18d 100644
--- a/hw/input/tsc2005.c
+++ b/hw/input/tsc2005.c
@@ -25,6 +25,7 @@
 #include "sysemu/reset.h"
 #include "ui/console.h"
 #include "hw/input/tsc2xxx.h"
+#include "hw/irq.h"
 #include "trace.h"
 
 #define TSC_CUT_RESOLUTION(value, p)	((value) >> (16 - (p ? 12 : 10)))
diff --git a/hw/input/tsc210x.c b/hw/input/tsc210x.c
index d2486f4b4e..be7d948168 100644
--- a/hw/input/tsc210x.c
+++ b/hw/input/tsc210x.c
@@ -27,6 +27,7 @@
 #include "ui/console.h"
 #include "hw/arm/omap.h"            /* For I2SCodec */
 #include "hw/input/tsc2xxx.h"
+#include "hw/irq.h"
 
 #define TSC_DATA_REGISTERS_PAGE		0x0
 #define TSC_CONTROL_REGISTERS_PAGE	0x1
diff --git a/hw/intc/allwinner-a10-pic.c b/hw/intc/allwinner-a10-pic.c
index 080bdd791f..9df3e18539 100644
--- a/hw/intc/allwinner-a10-pic.c
+++ b/hw/intc/allwinner-a10-pic.c
@@ -19,6 +19,7 @@
 #include "hw/sysbus.h"
 #include "sysemu/sysemu.h"
 #include "hw/intc/allwinner-a10-pic.h"
+#include "hw/irq.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/intc/arm_gic.c b/hw/intc/arm_gic.c
index 77427a4188..7af591daac 100644
--- a/hw/intc/arm_gic.c
+++ b/hw/intc/arm_gic.c
@@ -19,6 +19,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "gic_internal.h"
 #include "qapi/error.h"
diff --git a/hw/intc/arm_gicv2m.c b/hw/intc/arm_gicv2m.c
index 05f299fc7f..2c96d4fba0 100644
--- a/hw/intc/arm_gicv2m.c
+++ b/hw/intc/arm_gicv2m.c
@@ -28,6 +28,7 @@
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "hw/sysbus.h"
+#include "hw/irq.h"
 #include "hw/pci/msi.h"
 #include "sysemu/kvm.h"
 #include "qemu/log.h"
diff --git a/hw/intc/arm_gicv3_cpuif.c b/hw/intc/arm_gicv3_cpuif.c
index 3b212d91c8..a254b0ce87 100644
--- a/hw/intc/arm_gicv3_cpuif.c
+++ b/hw/intc/arm_gicv3_cpuif.c
@@ -17,6 +17,7 @@
 #include "qemu/main-loop.h"
 #include "trace.h"
 #include "gicv3_internal.h"
+#include "hw/irq.h"
 #include "cpu.h"
 
 void gicv3_set_gicv3state(CPUState *cpu, GICv3CPUState *s)
diff --git a/hw/intc/armv7m_nvic.c b/hw/intc/armv7m_nvic.c
index 9f8f0d3ff5..69670a2d97 100644
--- a/hw/intc/armv7m_nvic.c
+++ b/hw/intc/armv7m_nvic.c
@@ -16,6 +16,7 @@
 #include "hw/sysbus.h"
 #include "qemu/timer.h"
 #include "hw/intc/armv7m_nvic.h"
+#include "hw/irq.h"
 #include "target/arm/cpu.h"
 #include "exec/exec-all.h"
 #include "qemu/log.h"
diff --git a/hw/intc/aspeed_vic.c b/hw/intc/aspeed_vic.c
index 266a309f3b..e17343cd73 100644
--- a/hw/intc/aspeed_vic.c
+++ b/hw/intc/aspeed_vic.c
@@ -29,6 +29,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/intc/aspeed_vic.h"
+#include "hw/irq.h"
 #include "qemu/bitops.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/intc/bcm2835_ic.c b/hw/intc/bcm2835_ic.c
index 61d37643a1..20db52bd8e 100644
--- a/hw/intc/bcm2835_ic.c
+++ b/hw/intc/bcm2835_ic.c
@@ -14,6 +14,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/intc/bcm2835_ic.h"
+#include "hw/irq.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/intc/bcm2836_control.c b/hw/intc/bcm2836_control.c
index 66417c85e4..a983fe565f 100644
--- a/hw/intc/bcm2836_control.c
+++ b/hw/intc/bcm2836_control.c
@@ -17,6 +17,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/intc/bcm2836_control.h"
+#include "hw/irq.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/intc/etraxfs_pic.c b/hw/intc/etraxfs_pic.c
index 20e1391d64..dc72dd5412 100644
--- a/hw/intc/etraxfs_pic.c
+++ b/hw/intc/etraxfs_pic.c
@@ -26,6 +26,7 @@
 #include "hw/sysbus.h"
 #include "qemu/module.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 //#include "pc.h"
 //#include "etraxfs.h"
 
diff --git a/hw/intc/exynos4210_combiner.c b/hw/intc/exynos4210_combiner.c
index 6fed0e8d16..ed558115f6 100644
--- a/hw/intc/exynos4210_combiner.c
+++ b/hw/intc/exynos4210_combiner.c
@@ -32,6 +32,7 @@
 #include "qemu/module.h"
 
 #include "hw/arm/exynos4210.h"
+#include "hw/irq.h"
 
 //#define DEBUG_COMBINER
 
diff --git a/hw/intc/heathrow_pic.c b/hw/intc/heathrow_pic.c
index c282ac4006..ac1f7c0c8f 100644
--- a/hw/intc/heathrow_pic.c
+++ b/hw/intc/heathrow_pic.c
@@ -28,6 +28,7 @@
 #include "hw/ppc/mac.h"
 #include "qemu/module.h"
 #include "hw/intc/heathrow_pic.h"
+#include "hw/irq.h"
 #include "trace.h"
 
 static inline int heathrow_check_irq(HeathrowPICState *pic)
diff --git a/hw/intc/i8259.c b/hw/intc/i8259.c
index 76f3d873b8..e581e6b0ab 100644
--- a/hw/intc/i8259.c
+++ b/hw/intc/i8259.c
@@ -21,9 +21,11 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/i386/pc.h"
+#include "hw/irq.h"
 #include "hw/isa/isa.h"
 #include "qemu/timer.h"
 #include "qemu/log.h"
diff --git a/hw/intc/imx_avic.c b/hw/intc/imx_avic.c
index 83a4101528..022ed05b6f 100644
--- a/hw/intc/imx_avic.c
+++ b/hw/intc/imx_avic.c
@@ -17,6 +17,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/intc/imx_avic.h"
+#include "hw/irq.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/intc/lm32_pic.c b/hw/intc/lm32_pic.c
index 170fa7a1ac..c133d30cf2 100644
--- a/hw/intc/lm32_pic.c
+++ b/hw/intc/lm32_pic.c
@@ -26,6 +26,7 @@
 #include "trace.h"
 #include "hw/lm32/lm32_pic.h"
 #include "hw/intc/intc.h"
+#include "hw/irq.h"
 
 #define TYPE_LM32_PIC "lm32-pic"
 #define LM32_PIC(obj) OBJECT_CHECK(LM32PicState, (obj), TYPE_LM32_PIC)
diff --git a/hw/intc/mips_gic.c b/hw/intc/mips_gic.c
index e27e333766..166eb6ecce 100644
--- a/hw/intc/mips_gic.c
+++ b/hw/intc/mips_gic.c
@@ -21,6 +21,7 @@
 #include "sysemu/reset.h"
 #include "kvm_mips.h"
 #include "hw/intc/mips_gic.h"
+#include "hw/irq.h"
 
 static void mips_gic_set_vp_irq(MIPSGICState *gic, int vp, int pin)
 {
diff --git a/hw/intc/nios2_iic.c b/hw/intc/nios2_iic.c
index 7329434b91..3a5d86c2a4 100644
--- a/hw/intc/nios2_iic.c
+++ b/hw/intc/nios2_iic.c
@@ -22,6 +22,7 @@
 #include "qemu/module.h"
 #include "qapi/error.h"
 
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "cpu.h"
 
diff --git a/hw/intc/omap_intc.c b/hw/intc/omap_intc.c
index 053e67c66b..4b3ddc0a67 100644
--- a/hw/intc/omap_intc.c
+++ b/hw/intc/omap_intc.c
@@ -20,6 +20,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/arm/omap.h"
 #include "hw/sysbus.h"
 #include "qemu/error-report.h"
diff --git a/hw/intc/ompic.c b/hw/intc/ompic.c
index 9cb310a5dd..31004ac613 100644
--- a/hw/intc/ompic.c
+++ b/hw/intc/ompic.c
@@ -11,6 +11,7 @@
 #include "qemu/module.h"
 #include "qapi/error.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "exec/memory.h"
 
diff --git a/hw/intc/openpic.c b/hw/intc/openpic.c
index 9b4fc6cf43..49d64bccfe 100644
--- a/hw/intc/openpic.c
+++ b/hw/intc/openpic.c
@@ -36,6 +36,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/ppc/mac.h"
 #include "hw/pci/pci.h"
 #include "hw/ppc/openpic.h"
diff --git a/hw/intc/pl190.c b/hw/intc/pl190.c
index b4f31efc45..1a5e760f0f 100644
--- a/hw/intc/pl190.c
+++ b/hw/intc/pl190.c
@@ -8,6 +8,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/intc/puv3_intc.c b/hw/intc/puv3_intc.c
index e2f6d9875a..e018955ce8 100644
--- a/hw/intc/puv3_intc.c
+++ b/hw/intc/puv3_intc.c
@@ -10,6 +10,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 
 #undef DEBUG_PUV3
diff --git a/hw/intc/realview_gic.c b/hw/intc/realview_gic.c
index 99557544db..ac22a2abde 100644
--- a/hw/intc/realview_gic.c
+++ b/hw/intc/realview_gic.c
@@ -11,6 +11,7 @@
 #include "qapi/error.h"
 #include "qemu/module.h"
 #include "hw/intc/realview_gic.h"
+#include "hw/irq.h"
 
 static void realview_gic_set_irq(void *opaque, int irq, int level)
 {
diff --git a/hw/intc/sh_intc.c b/hw/intc/sh_intc.c
index bac7886f25..62521500f9 100644
--- a/hw/intc/sh_intc.c
+++ b/hw/intc/sh_intc.c
@@ -12,6 +12,7 @@
 #include "cpu.h"
 #include "hw/sh4/sh_intc.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sh4/sh.h"
 
 //#define DEBUG_INTC
diff --git a/hw/intc/slavio_intctl.c b/hw/intc/slavio_intctl.c
index ca528753bf..e97afcadf6 100644
--- a/hw/intc/slavio_intctl.c
+++ b/hw/intc/slavio_intctl.c
@@ -27,6 +27,7 @@
 #include "qemu/module.h"
 #include "hw/sysbus.h"
 #include "hw/intc/intc.h"
+#include "hw/irq.h"
 #include "trace.h"
 
 //#define DEBUG_IRQ_COUNT
diff --git a/hw/intc/xics.c b/hw/intc/xics.c
index 9ed224ce5f..beb37b1a2b 100644
--- a/hw/intc/xics.c
+++ b/hw/intc/xics.c
@@ -37,6 +37,7 @@
 #include "qapi/visitor.h"
 #include "monitor/monitor.h"
 #include "hw/intc/intc.h"
+#include "hw/irq.h"
 #include "sysemu/kvm.h"
 #include "sysemu/reset.h"
 
diff --git a/hw/intc/xilinx_intc.c b/hw/intc/xilinx_intc.c
index d5363e977f..baf5353cd1 100644
--- a/hw/intc/xilinx_intc.c
+++ b/hw/intc/xilinx_intc.c
@@ -26,6 +26,7 @@
 #include "hw/sysbus.h"
 #include "qemu/module.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 
 #define D(x)
 
diff --git a/hw/intc/xive.c b/hw/intc/xive.c
index b27d6b8646..d977ed568f 100644
--- a/hw/intc/xive.c
+++ b/hw/intc/xive.c
@@ -17,6 +17,7 @@
 #include "sysemu/reset.h"
 #include "hw/qdev-properties.h"
 #include "monitor/monitor.h"
+#include "hw/irq.h"
 #include "hw/ppc/xive.h"
 #include "hw/ppc/xive_regs.h"
 
diff --git a/hw/intc/xlnx-pmu-iomod-intc.c b/hw/intc/xlnx-pmu-iomod-intc.c
index 0b8ff897dc..9fcd17c6fd 100644
--- a/hw/intc/xlnx-pmu-iomod-intc.c
+++ b/hw/intc/xlnx-pmu-iomod-intc.c
@@ -31,6 +31,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/intc/xlnx-pmu-iomod-intc.h"
+#include "hw/irq.h"
 
 #ifndef XLNX_PMU_IO_INTC_ERR_DEBUG
 #define XLNX_PMU_IO_INTC_ERR_DEBUG 0
diff --git a/hw/intc/xlnx-zynqmp-ipi.c b/hw/intc/xlnx-zynqmp-ipi.c
index 0dad6c04f5..43a1b789b5 100644
--- a/hw/intc/xlnx-zynqmp-ipi.c
+++ b/hw/intc/xlnx-zynqmp-ipi.c
@@ -32,6 +32,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/intc/xlnx-zynqmp-ipi.h"
+#include "hw/irq.h"
 
 #ifndef XLNX_ZYNQMP_IPI_ERR_DEBUG
 #define XLNX_ZYNQMP_IPI_ERR_DEBUG 0
diff --git a/hw/ipack/ipack.c b/hw/ipack/ipack.c
index 6b1b72f94d..b8ff979d72 100644
--- a/hw/ipack/ipack.c
+++ b/hw/ipack/ipack.c
@@ -12,6 +12,7 @@
 #include "qapi/error.h"
 #include "qemu/module.h"
 #include "hw/ipack/ipack.h"
+#include "hw/irq.h"
 
 IPackDevice *ipack_device_find(IPackBus *bus, int32_t slot)
 {
diff --git a/hw/ipack/tpci200.c b/hw/ipack/tpci200.c
index d4d85107d0..7ee9d01771 100644
--- a/hw/ipack/tpci200.c
+++ b/hw/ipack/tpci200.c
@@ -11,6 +11,7 @@
 #include "qemu/osdep.h"
 #include "qemu/units.h"
 #include "hw/ipack/ipack.h"
+#include "hw/irq.h"
 #include "hw/pci/pci.h"
 #include "qemu/bitops.h"
 #include "qemu/module.h"
diff --git a/hw/ipmi/isa_ipmi_bt.c b/hw/ipmi/isa_ipmi_bt.c
index 1846d5b9a4..af07278c19 100644
--- a/hw/ipmi/isa_ipmi_bt.c
+++ b/hw/ipmi/isa_ipmi_bt.c
@@ -28,6 +28,7 @@
 #include "qapi/error.h"
 #include "hw/hw.h"
 #include "hw/ipmi/ipmi.h"
+#include "hw/irq.h"
 #include "hw/isa/isa.h"
 
 /* Control register */
diff --git a/hw/ipmi/isa_ipmi_kcs.c b/hw/ipmi/isa_ipmi_kcs.c
index 068f341256..583497685a 100644
--- a/hw/ipmi/isa_ipmi_kcs.c
+++ b/hw/ipmi/isa_ipmi_kcs.c
@@ -28,6 +28,7 @@
 #include "qapi/error.h"
 #include "hw/hw.h"
 #include "hw/ipmi/ipmi.h"
+#include "hw/irq.h"
 #include "hw/isa/isa.h"
 
 #define IPMI_KCS_OBF_BIT        0
diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c
index c08970b24a..90ebba59b7 100644
--- a/hw/isa/i82378.c
+++ b/hw/isa/i82378.c
@@ -20,6 +20,7 @@
 #include "qemu/osdep.h"
 #include "hw/pci/pci.h"
 #include "hw/i386/pc.h"
+#include "hw/irq.h"
 #include "hw/timer/i8254.h"
 #include "hw/audio/pcspk.h"
 
diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c
index a7081bd52d..42a1232787 100644
--- a/hw/isa/lpc_ich9.c
+++ b/hw/isa/lpc_ich9.c
@@ -27,6 +27,7 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "cpu.h"
 #include "hw/hw.h"
@@ -35,6 +36,7 @@
 #include "hw/isa/isa.h"
 #include "hw/sysbus.h"
 #include "hw/i386/pc.h"
+#include "hw/irq.h"
 #include "hw/isa/apm.h"
 #include "hw/i386/ioapic.h"
 #include "hw/pci/pci.h"
diff --git a/hw/lm32/lm32_boards.c b/hw/lm32/lm32_boards.c
index e075ebc8a6..d710980045 100644
--- a/hw/lm32/lm32_boards.c
+++ b/hw/lm32/lm32_boards.c
@@ -23,6 +23,7 @@
 #include "cpu.h"
 #include "hw/sysbus.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/block/flash.h"
 #include "hw/boards.h"
 #include "hw/loader.h"
diff --git a/hw/lm32/milkymist.c b/hw/lm32/milkymist.c
index 33669ee19b..864712d977 100644
--- a/hw/lm32/milkymist.c
+++ b/hw/lm32/milkymist.c
@@ -24,6 +24,7 @@
 #include "cpu.h"
 #include "hw/sysbus.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/block/flash.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/qtest.h"
diff --git a/hw/m68k/mcf5206.c b/hw/m68k/mcf5206.c
index 1c17f83eed..5ee1498f48 100644
--- a/hw/m68k/mcf5206.c
+++ b/hw/m68k/mcf5206.c
@@ -5,10 +5,12 @@
  *
  * This code is licensed under the GPL
  */
+
 #include "qemu/osdep.h"
 #include "qemu/error-report.h"
 #include "cpu.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/m68k/mcf.h"
 #include "qemu/timer.h"
 #include "hw/ptimer.h"
diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c
index 6f6efae9fc..3a21c62809 100644
--- a/hw/m68k/mcf5208.c
+++ b/hw/m68k/mcf5208.c
@@ -5,6 +5,7 @@
  *
  * This code is licensed under the GPL
  */
+
 #include "qemu/osdep.h"
 #include "qemu/units.h"
 #include "qemu/error-report.h"
@@ -12,6 +13,7 @@
 #include "qemu-common.h"
 #include "cpu.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/m68k/mcf.h"
 #include "hw/m68k/mcf_fec.h"
 #include "qemu/timer.h"
diff --git a/hw/m68k/mcf_intc.c b/hw/m68k/mcf_intc.c
index a613aed820..d9e03a06ab 100644
--- a/hw/m68k/mcf_intc.c
+++ b/hw/m68k/mcf_intc.c
@@ -10,6 +10,7 @@
 #include "qemu/module.h"
 #include "cpu.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "hw/m68k/mcf.h"
 
diff --git a/hw/mips/gt64xxx_pci.c b/hw/mips/gt64xxx_pci.c
index 2fa313f498..15d4adb3cd 100644
--- a/hw/mips/gt64xxx_pci.c
+++ b/hw/mips/gt64xxx_pci.c
@@ -30,6 +30,7 @@
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_host.h"
 #include "hw/i386/pc.h"
+#include "hw/irq.h"
 #include "exec/address-spaces.h"
 #include "trace.h"
 
diff --git a/hw/mips/mips_int.c b/hw/mips/mips_int.c
index f899f6ceb3..ae4244c32e 100644
--- a/hw/mips/mips_int.c
+++ b/hw/mips/mips_int.c
@@ -23,6 +23,7 @@
 #include "qemu/osdep.h"
 #include "qemu/main-loop.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/mips/cpudevs.h"
 #include "cpu.h"
 #include "sysemu/kvm.h"
diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
index 29bc8de5cf..02200ab7d4 100644
--- a/hw/mips/mips_malta.c
+++ b/hw/mips/mips_malta.c
@@ -43,6 +43,7 @@
 #include "qemu/log.h"
 #include "hw/mips/bios.h"
 #include "hw/ide.h"
+#include "hw/irq.h"
 #include "hw/loader.h"
 #include "elf.h"
 #include "hw/timer/mc146818rtc.h"
diff --git a/hw/misc/arm_sysctl.c b/hw/misc/arm_sysctl.c
index 457dfadfab..be8c9c0a7f 100644
--- a/hw/misc/arm_sysctl.c
+++ b/hw/misc/arm_sysctl.c
@@ -9,6 +9,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "qemu/timer.h"
 #include "qemu/bitops.h"
 #include "hw/sysbus.h"
diff --git a/hw/misc/armsse-mhu.c b/hw/misc/armsse-mhu.c
index 514321a9ec..f8d4187bb8 100644
--- a/hw/misc/armsse-mhu.c
+++ b/hw/misc/armsse-mhu.c
@@ -23,6 +23,7 @@
 #include "sysemu/sysemu.h"
 #include "hw/sysbus.h"
 #include "hw/registerfields.h"
+#include "hw/irq.h"
 #include "hw/misc/armsse-mhu.h"
 
 REG32(CPU0INTR_STAT, 0x0)
diff --git a/hw/misc/aspeed_xdma.c b/hw/misc/aspeed_xdma.c
index eebd4ad540..18a83bcc6c 100644
--- a/hw/misc/aspeed_xdma.c
+++ b/hw/misc/aspeed_xdma.c
@@ -9,6 +9,7 @@
 #include "qemu/osdep.h"
 #include "qemu/log.h"
 #include "qemu/error-report.h"
+#include "hw/irq.h"
 #include "hw/misc/aspeed_xdma.h"
 #include "qapi/error.h"
 
diff --git a/hw/misc/bcm2835_mbox.c b/hw/misc/bcm2835_mbox.c
index a87da5ee53..e484d25c29 100644
--- a/hw/misc/bcm2835_mbox.c
+++ b/hw/misc/bcm2835_mbox.c
@@ -10,6 +10,7 @@
 
 #include "qemu/osdep.h"
 #include "qapi/error.h"
+#include "hw/irq.h"
 #include "hw/misc/bcm2835_mbox.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/misc/bcm2835_property.c b/hw/misc/bcm2835_property.c
index 0bf789cf60..51cd93fc8b 100644
--- a/hw/misc/bcm2835_property.c
+++ b/hw/misc/bcm2835_property.c
@@ -6,6 +6,7 @@
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "hw/misc/bcm2835_property.h"
+#include "hw/irq.h"
 #include "hw/misc/bcm2835_mbox_defs.h"
 #include "sysemu/dma.h"
 #include "qemu/log.h"
diff --git a/hw/misc/eccmemctl.c b/hw/misc/eccmemctl.c
index 8386db07df..c16d56c8c7 100644
--- a/hw/misc/eccmemctl.c
+++ b/hw/misc/eccmemctl.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qemu/module.h"
 #include "trace.h"
diff --git a/hw/misc/iotkit-secctl.c b/hw/misc/iotkit-secctl.c
index 58fd94b14f..963fd6efd3 100644
--- a/hw/misc/iotkit-secctl.c
+++ b/hw/misc/iotkit-secctl.c
@@ -16,6 +16,7 @@
 #include "trace.h"
 #include "hw/sysbus.h"
 #include "hw/registerfields.h"
+#include "hw/irq.h"
 #include "hw/misc/iotkit-secctl.h"
 
 /* Registers in the secure privilege control block */
diff --git a/hw/misc/macio/mac_dbdma.c b/hw/misc/macio/mac_dbdma.c
index 548625a5f0..8a1de8c31d 100644
--- a/hw/misc/macio/mac_dbdma.c
+++ b/hw/misc/macio/mac_dbdma.c
@@ -39,6 +39,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/ppc/mac_dbdma.h"
 #include "qemu/main-loop.h"
 #include "qemu/module.h"
diff --git a/hw/misc/macio/pmu.c b/hw/misc/macio/pmu.c
index 753561d3f1..6280bcbc61 100644
--- a/hw/misc/macio/pmu.c
+++ b/hw/misc/macio/pmu.c
@@ -33,6 +33,7 @@
 #include "hw/hw.h"
 #include "hw/ppc/mac.h"
 #include "hw/input/adb.h"
+#include "hw/irq.h"
 #include "hw/misc/mos6522.h"
 #include "hw/misc/macio/gpio.h"
 #include "hw/misc/macio/pmu.h"
diff --git a/hw/misc/max111x.c b/hw/misc/max111x.c
index d373ece0c9..6fd7210c67 100644
--- a/hw/misc/max111x.c
+++ b/hw/misc/max111x.c
@@ -11,6 +11,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/ssi/ssi.h"
 #include "qemu/module.h"
 
diff --git a/hw/misc/milkymist-pfpu.c b/hw/misc/milkymist-pfpu.c
index 1c27f1a4bc..fb21b898d1 100644
--- a/hw/misc/milkymist-pfpu.c
+++ b/hw/misc/milkymist-pfpu.c
@@ -24,6 +24,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "trace.h"
 #include "qemu/log.h"
diff --git a/hw/misc/mos6522.c b/hw/misc/mos6522.c
index e72ed69d51..84c677c131 100644
--- a/hw/misc/mos6522.c
+++ b/hw/misc/mos6522.c
@@ -27,6 +27,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/input/adb.h"
+#include "hw/irq.h"
 #include "hw/misc/mos6522.h"
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/misc/mst_fpga.c b/hw/misc/mst_fpga.c
index fd18303724..256746ac15 100644
--- a/hw/misc/mst_fpga.c
+++ b/hw/misc/mst_fpga.c
@@ -13,6 +13,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qemu/module.h"
 
diff --git a/hw/misc/nrf51_rng.c b/hw/misc/nrf51_rng.c
index 96ef4330eb..cf1bec223e 100644
--- a/hw/misc/nrf51_rng.c
+++ b/hw/misc/nrf51_rng.c
@@ -14,6 +14,7 @@
 #include "qemu/module.h"
 #include "qapi/error.h"
 #include "hw/arm/nrf51.h"
+#include "hw/irq.h"
 #include "hw/misc/nrf51_rng.h"
 #include "qemu/guest-random.h"
 
diff --git a/hw/misc/omap_clk.c b/hw/misc/omap_clk.c
index 9ea14186d4..c77ca2fc74 100644
--- a/hw/misc/omap_clk.c
+++ b/hw/misc/omap_clk.c
@@ -18,8 +18,10 @@
  * You should have received a copy of the GNU General Public License along
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
+
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/arm/omap.h"
 
 struct clk {
diff --git a/hw/misc/omap_gpmc.c b/hw/misc/omap_gpmc.c
index 84f9e4c612..6253b0b2d4 100644
--- a/hw/misc/omap_gpmc.c
+++ b/hw/misc/omap_gpmc.c
@@ -18,8 +18,10 @@
  * You should have received a copy of the GNU General Public License along
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
+
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/block/flash.h"
 #include "hw/arm/omap.h"
 #include "exec/memory.h"
diff --git a/hw/misc/pc-testdev.c b/hw/misc/pc-testdev.c
index 1f9abd52b8..46adb6b5fc 100644
--- a/hw/misc/pc-testdev.c
+++ b/hw/misc/pc-testdev.c
@@ -39,6 +39,7 @@
 #include "hw/hw.h"
 #include "hw/qdev.h"
 #include "qemu/module.h"
+#include "hw/irq.h"
 #include "hw/isa/isa.h"
 
 #define IOMEM_LEN    0x10000
diff --git a/hw/misc/slavio_misc.c b/hw/misc/slavio_misc.c
index 9c2cf04646..5f351950db 100644
--- a/hw/misc/slavio_misc.c
+++ b/hw/misc/slavio_misc.c
@@ -24,6 +24,7 @@
 
 #include "qemu/osdep.h"
 #include "sysemu/sysemu.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qemu/module.h"
 #include "trace.h"
diff --git a/hw/misc/tmp105.c b/hw/misc/tmp105.c
index 19def5c20f..2e304218f4 100644
--- a/hw/misc/tmp105.c
+++ b/hw/misc/tmp105.c
@@ -21,6 +21,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/i2c/i2c.h"
+#include "hw/irq.h"
 #include "tmp105.h"
 #include "qapi/error.h"
 #include "qapi/visitor.h"
diff --git a/hw/misc/tz-mpc.c b/hw/misc/tz-mpc.c
index 45a3e31c3d..802aeb7377 100644
--- a/hw/misc/tz-mpc.c
+++ b/hw/misc/tz-mpc.c
@@ -16,6 +16,7 @@
 #include "trace.h"
 #include "hw/sysbus.h"
 #include "hw/registerfields.h"
+#include "hw/irq.h"
 #include "hw/misc/tz-mpc.h"
 
 /* Our IOMMU has two IOMMU indexes, one for secure transactions and one for
diff --git a/hw/misc/tz-msc.c b/hw/misc/tz-msc.c
index 52b96ba70d..7d1a536ce4 100644
--- a/hw/misc/tz-msc.c
+++ b/hw/misc/tz-msc.c
@@ -16,6 +16,7 @@
 #include "trace.h"
 #include "hw/sysbus.h"
 #include "hw/registerfields.h"
+#include "hw/irq.h"
 #include "hw/misc/tz-msc.h"
 
 static void tz_msc_update_irq(TZMSC *s)
diff --git a/hw/misc/tz-ppc.c b/hw/misc/tz-ppc.c
index 2a14a26f29..54db7fc152 100644
--- a/hw/misc/tz-ppc.c
+++ b/hw/misc/tz-ppc.c
@@ -16,6 +16,7 @@
 #include "trace.h"
 #include "hw/sysbus.h"
 #include "hw/registerfields.h"
+#include "hw/irq.h"
 #include "hw/misc/tz-ppc.h"
 
 static void tz_ppc_update_irq(TZPPC *s)
diff --git a/hw/misc/zynq-xadc.c b/hw/misc/zynq-xadc.c
index f1e48601dc..c5cff5a8a9 100644
--- a/hw/misc/zynq-xadc.c
+++ b/hw/misc/zynq-xadc.c
@@ -15,6 +15,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/misc/zynq-xadc.h"
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/net/allwinner_emac.c b/hw/net/allwinner_emac.c
index eecda52800..dad25bd4e9 100644
--- a/hw/net/allwinner_emac.c
+++ b/hw/net/allwinner_emac.c
@@ -21,6 +21,7 @@
 #include "hw/sysbus.h"
 #include "net/net.h"
 #include "qemu/fifo8.h"
+#include "hw/irq.h"
 #include "hw/net/allwinner_emac.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/net/cadence_gem.c b/hw/net/cadence_gem.c
index d412085884..f4e4a4dd87 100644
--- a/hw/net/cadence_gem.c
+++ b/hw/net/cadence_gem.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include <zlib.h> /* For crc32 */
 
+#include "hw/irq.h"
 #include "hw/net/cadence_gem.h"
 #include "qapi/error.h"
 #include "qemu/log.h"
diff --git a/hw/net/can/can_kvaser_pci.c b/hw/net/can/can_kvaser_pci.c
index df639f8fa0..3b8e38eb83 100644
--- a/hw/net/can/can_kvaser_pci.c
+++ b/hw/net/can/can_kvaser_pci.c
@@ -37,6 +37,7 @@
 #include "qapi/error.h"
 #include "chardev/char.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/pci/pci.h"
 #include "net/can_emu.h"
 
diff --git a/hw/net/can/can_mioe3680_pci.c b/hw/net/can/can_mioe3680_pci.c
index 7af0993d7a..c09ae69261 100644
--- a/hw/net/can/can_mioe3680_pci.c
+++ b/hw/net/can/can_mioe3680_pci.c
@@ -33,6 +33,7 @@
 #include "qapi/error.h"
 #include "chardev/char.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/pci/pci.h"
 #include "net/can_emu.h"
 
diff --git a/hw/net/can/can_pcm3680_pci.c b/hw/net/can/can_pcm3680_pci.c
index 3f7312af07..843a76cf37 100644
--- a/hw/net/can/can_pcm3680_pci.c
+++ b/hw/net/can/can_pcm3680_pci.c
@@ -33,6 +33,7 @@
 #include "qapi/error.h"
 #include "chardev/char.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/pci/pci.h"
 #include "net/can_emu.h"
 
diff --git a/hw/net/can/can_sja1000.c b/hw/net/can/can_sja1000.c
index 9a85038c8a..ee079d355f 100644
--- a/hw/net/can/can_sja1000.c
+++ b/hw/net/can/can_sja1000.c
@@ -24,10 +24,12 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "qemu/log.h"
 #include "chardev/char.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "net/can_emu.h"
 
 #include "can_sja1000.h"
diff --git a/hw/net/dp8393x.c b/hw/net/dp8393x.c
index bdb0b3b2c2..70a78ad337 100644
--- a/hw/net/dp8393x.c
+++ b/hw/net/dp8393x.c
@@ -18,6 +18,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "net/net.h"
 #include "qapi/error.h"
diff --git a/hw/net/fsl_etsec/etsec.c b/hw/net/fsl_etsec/etsec.c
index 2a8b99a2e4..e217238296 100644
--- a/hw/net/fsl_etsec/etsec.c
+++ b/hw/net/fsl_etsec/etsec.c
@@ -29,6 +29,7 @@
 #include "qemu/osdep.h"
 #include "sysemu/sysemu.h"
 #include "hw/sysbus.h"
+#include "hw/irq.h"
 #include "hw/ptimer.h"
 #include "etsec.h"
 #include "registers.h"
diff --git a/hw/net/ftgmac100.c b/hw/net/ftgmac100.c
index d2cded5e94..2848bff3e5 100644
--- a/hw/net/ftgmac100.c
+++ b/hw/net/ftgmac100.c
@@ -12,6 +12,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/net/ftgmac100.h"
 #include "sysemu/dma.h"
 #include "qemu/log.h"
diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c
index 404154ebbf..fe9d9028fa 100644
--- a/hw/net/imx_fec.c
+++ b/hw/net/imx_fec.c
@@ -22,6 +22,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/net/imx_fec.h"
 #include "sysemu/dma.h"
 #include "qemu/log.h"
diff --git a/hw/net/lan9118.c b/hw/net/lan9118.c
index f6120be219..e2da54cbd8 100644
--- a/hw/net/lan9118.c
+++ b/hw/net/lan9118.c
@@ -14,6 +14,7 @@
 #include "hw/sysbus.h"
 #include "net/net.h"
 #include "net/eth.h"
+#include "hw/irq.h"
 #include "hw/net/lan9118.h"
 #include "sysemu/sysemu.h"
 #include "hw/ptimer.h"
diff --git a/hw/net/mcf_fec.c b/hw/net/mcf_fec.c
index 78468fad6b..e4a3b55eb6 100644
--- a/hw/net/mcf_fec.c
+++ b/hw/net/mcf_fec.c
@@ -8,6 +8,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "net/net.h"
 #include "qemu/module.h"
 #include "hw/m68k/mcf.h"
diff --git a/hw/net/milkymist-minimac2.c b/hw/net/milkymist-minimac2.c
index 41ef7a4456..bad1066781 100644
--- a/hw/net/milkymist-minimac2.c
+++ b/hw/net/milkymist-minimac2.c
@@ -26,6 +26,7 @@
 #include "qapi/error.h"
 #include "cpu.h" /* FIXME: why does this use TARGET_PAGE_ALIGN? */
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "trace.h"
 #include "net/net.h"
diff --git a/hw/net/mipsnet.c b/hw/net/mipsnet.c
index c5fbd8431f..007c94aa30 100644
--- a/hw/net/mipsnet.c
+++ b/hw/net/mipsnet.c
@@ -1,5 +1,6 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "net/net.h"
 #include "qemu/module.h"
 #include "trace.h"
diff --git a/hw/net/ne2000-pci.c b/hw/net/ne2000-pci.c
index cb05744f3c..4f28e31baa 100644
--- a/hw/net/ne2000-pci.c
+++ b/hw/net/ne2000-pci.c
@@ -21,7 +21,9 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/pci/pci.h"
 #include "ne2000.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/net/ne2000.c b/hw/net/ne2000.c
index 1cf4b57341..4b9231c495 100644
--- a/hw/net/ne2000.c
+++ b/hw/net/ne2000.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include "net/eth.h"
 #include "qemu/module.h"
+#include "hw/irq.h"
 #include "ne2000.h"
 #include "sysemu/sysemu.h"
 #include "trace.h"
diff --git a/hw/net/opencores_eth.c b/hw/net/opencores_eth.c
index a5abb8df46..3e759d79d8 100644
--- a/hw/net/opencores_eth.c
+++ b/hw/net/opencores_eth.c
@@ -33,6 +33,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/net/mii.h"
 #include "hw/sysbus.h"
 #include "net/net.h"
diff --git a/hw/net/pcnet-pci.c b/hw/net/pcnet-pci.c
index 600d09ce92..df8cb6621f 100644
--- a/hw/net/pcnet-pci.c
+++ b/hw/net/pcnet-pci.c
@@ -28,6 +28,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/pci/pci.h"
 #include "net/net.h"
 #include "qemu/module.h"
diff --git a/hw/net/pcnet.c b/hw/net/pcnet.c
index 16683091c9..f73e3422f4 100644
--- a/hw/net/pcnet.c
+++ b/hw/net/pcnet.c
@@ -37,6 +37,7 @@
 
 #include "qemu/osdep.h"
 #include "qemu/log.h"
+#include "hw/irq.h"
 #include "hw/qdev.h"
 #include "net/net.h"
 #include "net/eth.h"
diff --git a/hw/net/smc91c111.c b/hw/net/smc91c111.c
index 4a612eebe9..f5149124e6 100644
--- a/hw/net/smc91c111.c
+++ b/hw/net/smc91c111.c
@@ -10,6 +10,7 @@
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
 #include "net/net.h"
+#include "hw/irq.h"
 #include "hw/net/smc91c111.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/net/spapr_llan.c b/hw/net/spapr_llan.c
index f162d49025..1867c355e3 100644
--- a/hw/net/spapr_llan.c
+++ b/hw/net/spapr_llan.c
@@ -28,6 +28,7 @@
 #include "qemu/osdep.h"
 #include "cpu.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "net/net.h"
diff --git a/hw/net/stellaris_enet.c b/hw/net/stellaris_enet.c
index 2f645bfb71..756ac5600b 100644
--- a/hw/net/stellaris_enet.c
+++ b/hw/net/stellaris_enet.c
@@ -8,6 +8,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "net/net.h"
 #include "qemu/log.h"
diff --git a/hw/net/xgmac.c b/hw/net/xgmac.c
index f49df95b07..c2efc77452 100644
--- a/hw/net/xgmac.c
+++ b/hw/net/xgmac.c
@@ -25,6 +25,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/net/xilinx_axienet.c b/hw/net/xilinx_axienet.c
index feeaca680e..b1247a1d9b 100644
--- a/hw/net/xilinx_axienet.c
+++ b/hw/net/xilinx_axienet.c
@@ -30,6 +30,7 @@
 #include "net/net.h"
 #include "net/checksum.h"
 
+#include "hw/irq.h"
 #include "hw/stream.h"
 
 #define DPHY(x)
diff --git a/hw/net/xilinx_ethlite.c b/hw/net/xilinx_ethlite.c
index 8f3a8f8597..27a4fc8d87 100644
--- a/hw/net/xilinx_ethlite.c
+++ b/hw/net/xilinx_ethlite.c
@@ -27,6 +27,7 @@
 #include "cpu.h" /* FIXME should not use tswap* */
 #include "hw/sysbus.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "net/net.h"
 
 #define D(x)
diff --git a/hw/nios2/cpu_pic.c b/hw/nios2/cpu_pic.c
index 5525e25ff0..1c1989d56a 100644
--- a/hw/nios2/cpu_pic.c
+++ b/hw/nios2/cpu_pic.c
@@ -20,6 +20,7 @@
 
 #include "qemu/osdep.h"
 #include "cpu.h"
+#include "hw/irq.h"
 
 #include "qemu/config-file.h"
 
diff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c
index cb2fc5ba78..965d5b44ee 100644
--- a/hw/openrisc/openrisc_sim.c
+++ b/hw/openrisc/openrisc_sim.c
@@ -23,6 +23,7 @@
 #include "qapi/error.h"
 #include "cpu.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/boards.h"
 #include "elf.h"
 #include "hw/char/serial.h"
diff --git a/hw/openrisc/pic_cpu.c b/hw/openrisc/pic_cpu.c
index 2f53cfc82e..d3f179ff8d 100644
--- a/hw/openrisc/pic_cpu.c
+++ b/hw/openrisc/pic_cpu.c
@@ -20,6 +20,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "cpu.h"
 
 /* OpenRISC pic handler */
diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c
index 36c7ca45ad..ca526bd71b 100644
--- a/hw/pci-host/bonito.c
+++ b/hw/pci-host/bonito.c
@@ -42,6 +42,7 @@
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
 #include "hw/i386/pc.h"
+#include "hw/irq.h"
 #include "hw/mips/mips.h"
 #include "hw/pci/pci_host.h"
 #include "sysemu/reset.h"
diff --git a/hw/pci-host/designware.c b/hw/pci-host/designware.c
index 9ae8c0deb7..de4300d554 100644
--- a/hw/pci-host/designware.c
+++ b/hw/pci-host/designware.c
@@ -25,6 +25,7 @@
 #include "hw/pci/pci_bridge.h"
 #include "hw/pci/pci_host.h"
 #include "hw/pci/pcie_port.h"
+#include "hw/irq.h"
 #include "hw/pci-host/designware.h"
 
 #define DESIGNWARE_PCIE_PORT_LINK_CONTROL          0x710
diff --git a/hw/pci-host/gpex.c b/hw/pci-host/gpex.c
index 629d1a4624..72c58a054b 100644
--- a/hw/pci-host/gpex.c
+++ b/hw/pci-host/gpex.c
@@ -32,6 +32,7 @@
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/pci-host/gpex.h"
 #include "qemu/module.h"
 
diff --git a/hw/pci-host/grackle.c b/hw/pci-host/grackle.c
index ed3b3c361f..912f8bf13f 100644
--- a/hw/pci-host/grackle.c
+++ b/hw/pci-host/grackle.c
@@ -28,6 +28,7 @@
 #include "hw/ppc/mac.h"
 #include "hw/pci/pci.h"
 #include "hw/intc/heathrow_pic.h"
+#include "hw/irq.h"
 #include "qapi/error.h"
 #include "qemu/module.h"
 #include "trace.h"
diff --git a/hw/pci-host/piix.c b/hw/pci-host/piix.c
index e5955457ab..ecf634a04d 100644
--- a/hw/pci-host/piix.c
+++ b/hw/pci-host/piix.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/i386/pc.h"
+#include "hw/irq.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_host.h"
 #include "hw/isa/isa.h"
diff --git a/hw/pci-host/ppce500.c b/hw/pci-host/ppce500.c
index 21eaa30a20..406ebf0438 100644
--- a/hw/pci-host/ppce500.c
+++ b/hw/pci-host/ppce500.c
@@ -16,6 +16,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/ppc/e500-ccsr.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_host.h"
diff --git a/hw/pci-host/prep.c b/hw/pci-host/prep.c
index c564f234af..2b68af9811 100644
--- a/hw/pci-host/prep.c
+++ b/hw/pci-host/prep.c
@@ -32,6 +32,7 @@
 #include "hw/pci/pci_bus.h"
 #include "hw/pci/pci_host.h"
 #include "hw/i386/pc.h"
+#include "hw/irq.h"
 #include "hw/loader.h"
 #include "hw/or-irq.h"
 #include "exec/address-spaces.h"
diff --git a/hw/pci-host/sabre.c b/hw/pci-host/sabre.c
index 2cec1116af..772ac1f725 100644
--- a/hw/pci-host/sabre.c
+++ b/hw/pci-host/sabre.c
@@ -30,6 +30,7 @@
 #include "hw/pci/pci_host.h"
 #include "hw/pci/pci_bridge.h"
 #include "hw/pci/pci_bus.h"
+#include "hw/irq.h"
 #include "hw/pci-bridge/simba.h"
 #include "hw/pci-host/sabre.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/pci-host/uninorth.c b/hw/pci-host/uninorth.c
index 680fefd066..4ffb2d0d03 100644
--- a/hw/pci-host/uninorth.c
+++ b/hw/pci-host/uninorth.c
@@ -24,6 +24,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/ppc/mac.h"
 #include "qemu/module.h"
 #include "hw/pci/pci.h"
diff --git a/hw/pci-host/versatile.c b/hw/pci-host/versatile.c
index 791b321ea0..221cc40134 100644
--- a/hw/pci-host/versatile.c
+++ b/hw/pci-host/versatile.c
@@ -9,6 +9,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "hw/irq.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_bus.h"
 #include "hw/pci/pci_host.h"
diff --git a/hw/pci-host/xilinx-pcie.c b/hw/pci-host/xilinx-pcie.c
index 192b697453..f42fabbbe7 100644
--- a/hw/pci-host/xilinx-pcie.c
+++ b/hw/pci-host/xilinx-pcie.c
@@ -22,6 +22,7 @@
 #include "qemu/units.h"
 #include "qapi/error.h"
 #include "hw/pci/pci_bridge.h"
+#include "hw/irq.h"
 #include "hw/pci-host/xilinx-pcie.h"
 
 enum root_cfg_reg {
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 43a3cac138..bc7ce92dcb 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include "qemu-common.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_bridge.h"
 #include "hw/pci/pci_bus.h"
diff --git a/hw/pcmcia/pxa2xx.c b/hw/pcmcia/pxa2xx.c
index 8993b784bb..26ab2267de 100644
--- a/hw/pcmcia/pxa2xx.c
+++ b/hw/pcmcia/pxa2xx.c
@@ -12,6 +12,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qemu/module.h"
 #include "hw/pcmcia.h"
diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index 566f179bb1..0451a4e338 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -45,6 +45,7 @@
 #include "hw/platform-bus.h"
 #include "hw/net/fsl_etsec/etsec.h"
 #include "hw/i2c/i2c.h"
+#include "hw/irq.h"
 
 #define EPAPR_MAGIC                (0x45504150)
 #define BINARY_DEVICE_TREE_FILE    "mpc8544ds.dtb"
diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c
index a9f150c3ca..d4433d73e1 100644
--- a/hw/ppc/pnv_lpc.c
+++ b/hw/ppc/pnv_lpc.c
@@ -23,6 +23,7 @@
 #include "qapi/error.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
+#include "hw/irq.h"
 #include "hw/isa/isa.h"
 
 #include "hw/ppc/pnv.h"
diff --git a/hw/ppc/pnv_psi.c b/hw/ppc/pnv_psi.c
index 6b26d0f6bc..e66aeec4aa 100644
--- a/hw/ppc/pnv_psi.c
+++ b/hw/ppc/pnv_psi.c
@@ -19,6 +19,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "target/ppc/cpu.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c
index a9e508c496..163a34ee4c 100644
--- a/hw/ppc/ppc.c
+++ b/hw/ppc/ppc.c
@@ -21,9 +21,11 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "cpu.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/ppc/ppc.h"
 #include "hw/ppc/ppc_e500.h"
 #include "qemu/timer.h"
diff --git a/hw/ppc/ppc405_uc.c b/hw/ppc/ppc405_uc.c
index f9d98fe71e..bb62714fd9 100644
--- a/hw/ppc/ppc405_uc.c
+++ b/hw/ppc/ppc405_uc.c
@@ -30,6 +30,7 @@
 #include "hw/ppc/ppc.h"
 #include "hw/boards.h"
 #include "hw/i2c/ppc4xx_i2c.h"
+#include "hw/irq.h"
 #include "ppc405.h"
 #include "hw/char/serial.h"
 #include "qemu/timer.h"
diff --git a/hw/ppc/ppc440_pcix.c b/hw/ppc/ppc440_pcix.c
index ca54631f9d..77a78388c1 100644
--- a/hw/ppc/ppc440_pcix.c
+++ b/hw/ppc/ppc440_pcix.c
@@ -24,6 +24,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/ppc/ppc.h"
 #include "hw/ppc/ppc4xx.h"
 #include "hw/pci/pci.h"
diff --git a/hw/ppc/ppc440_uc.c b/hw/ppc/ppc440_uc.c
index 7329cfe651..6570c2d120 100644
--- a/hw/ppc/ppc440_uc.c
+++ b/hw/ppc/ppc440_uc.c
@@ -16,6 +16,7 @@
 #include "qemu/module.h"
 #include "cpu.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "exec/address-spaces.h"
 #include "exec/memory.h"
 #include "hw/ppc/ppc.h"
diff --git a/hw/ppc/ppc4xx_devs.c b/hw/ppc/ppc4xx_devs.c
index e62bef3b8d..49d714756f 100644
--- a/hw/ppc/ppc4xx_devs.c
+++ b/hw/ppc/ppc4xx_devs.c
@@ -27,6 +27,7 @@
 #include "sysemu/reset.h"
 #include "cpu.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/ppc/ppc.h"
 #include "hw/ppc/ppc4xx.h"
 #include "hw/boards.h"
diff --git a/hw/ppc/ppc4xx_pci.c b/hw/ppc/ppc4xx_pci.c
index b013319c60..27f25f4e58 100644
--- a/hw/ppc/ppc4xx_pci.c
+++ b/hw/ppc/ppc4xx_pci.c
@@ -21,6 +21,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/ppc/ppc.h"
 #include "hw/ppc/ppc4xx.h"
 #include "qemu/module.h"
diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
index 84e968e28c..01dc7e111b 100644
--- a/hw/ppc/prep.c
+++ b/hw/ppc/prep.c
@@ -39,6 +39,7 @@
 #include "qemu/error-report.h"
 #include "qemu/log.h"
 #include "hw/ide.h"
+#include "hw/irq.h"
 #include "hw/loader.h"
 #include "hw/timer/mc146818rtc.h"
 #include "hw/isa/pc87312.h"
diff --git a/hw/ppc/prep_systemio.c b/hw/ppc/prep_systemio.c
index df7603b986..898ab1533f 100644
--- a/hw/ppc/prep_systemio.c
+++ b/hw/ppc/prep_systemio.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/isa/isa.h"
 #include "exec/address-spaces.h"
 #include "qemu/error-report.h" /* for error_report() */
diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c
index ae0f093f59..d75359c5f3 100644
--- a/hw/ppc/spapr_events.c
+++ b/hw/ppc/spapr_events.c
@@ -24,6 +24,7 @@
  * THE SOFTWARE.
  *
  */
+
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "cpu.h"
@@ -35,6 +36,7 @@
 #include "hw/ppc/spapr.h"
 #include "hw/ppc/spapr_vio.h"
 #include "hw/pci/pci.h"
+#include "hw/irq.h"
 #include "hw/pci-host/spapr.h"
 #include "hw/ppc/spapr_drc.h"
 #include "qemu/help_option.h"
diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c
index d07aed8ca9..66705962e7 100644
--- a/hw/ppc/spapr_irq.c
+++ b/hw/ppc/spapr_irq.c
@@ -11,6 +11,7 @@
 #include "qemu/log.h"
 #include "qemu/error-report.h"
 #include "qapi/error.h"
+#include "hw/irq.h"
 #include "hw/ppc/spapr.h"
 #include "hw/ppc/spapr_cpu_core.h"
 #include "hw/ppc/spapr_xive.h"
diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index 9003fe9010..54d0a32c17 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -27,6 +27,7 @@
 #include "qapi/error.h"
 #include "cpu.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/msi.h"
diff --git a/hw/ppc/spapr_vio.c b/hw/ppc/spapr_vio.c
index 583c13deda..0f4f4bedd3 100644
--- a/hw/ppc/spapr_vio.c
+++ b/hw/ppc/spapr_vio.c
@@ -24,6 +24,7 @@
 #include "qapi/error.h"
 #include "qapi/visitor.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "qemu/log.h"
 #include "sysemu/sysemu.h"
 #include "hw/boards.h"
diff --git a/hw/riscv/sifive_gpio.c b/hw/riscv/sifive_gpio.c
index 06bd8112d7..da19daa880 100644
--- a/hw/riscv/sifive_gpio.c
+++ b/hw/riscv/sifive_gpio.c
@@ -13,6 +13,7 @@
 
 #include "qemu/osdep.h"
 #include "qemu/log.h"
+#include "hw/irq.h"
 #include "hw/riscv/sifive_gpio.h"
 #include "trace.h"
 
diff --git a/hw/riscv/sifive_uart.c b/hw/riscv/sifive_uart.c
index 3b3f94f51d..d18613fb33 100644
--- a/hw/riscv/sifive_uart.c
+++ b/hw/riscv/sifive_uart.c
@@ -22,6 +22,7 @@
 #include "chardev/char.h"
 #include "chardev/char-fe.h"
 #include "target/riscv/cpu.h"
+#include "hw/irq.h"
 #include "hw/riscv/sifive_uart.h"
 
 /*
diff --git a/hw/scsi/esp-pci.c b/hw/scsi/esp-pci.c
index 342f500f82..f945502f3a 100644
--- a/hw/scsi/esp-pci.c
+++ b/hw/scsi/esp-pci.c
@@ -25,6 +25,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/pci/pci.h"
+#include "hw/irq.h"
 #include "hw/nvram/eeprom93xx.h"
 #include "hw/scsi/esp.h"
 #include "trace.h"
diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c
index 7508d035ca..3b717e9526 100644
--- a/hw/scsi/esp.c
+++ b/hw/scsi/esp.c
@@ -25,6 +25,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "hw/irq.h"
 #include "hw/scsi/esp.h"
 #include "trace.h"
 #include "qemu/log.h"
diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
index 10468c1ec1..1a042aa00b 100644
--- a/hw/scsi/lsi53c895a.c
+++ b/hw/scsi/lsi53c895a.c
@@ -16,6 +16,7 @@
 #include "qemu/osdep.h"
 
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/pci/pci.h"
 #include "hw/scsi/scsi.h"
 #include "sysemu/dma.h"
diff --git a/hw/sd/bcm2835_sdhost.c b/hw/sd/bcm2835_sdhost.c
index 2778fb0de4..4609cc031c 100644
--- a/hw/sd/bcm2835_sdhost.c
+++ b/hw/sd/bcm2835_sdhost.c
@@ -15,6 +15,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "sysemu/blockdev.h"
+#include "hw/irq.h"
 #include "hw/sd/bcm2835_sdhost.h"
 #include "trace.h"
 
diff --git a/hw/sd/omap_mmc.c b/hw/sd/omap_mmc.c
index d0c98ca021..15a0bbe87d 100644
--- a/hw/sd/omap_mmc.c
+++ b/hw/sd/omap_mmc.c
@@ -18,9 +18,11 @@
  * You should have received a copy of the GNU General Public License along
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
+
 #include "qemu/osdep.h"
 #include "qemu/log.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/arm/omap.h"
 #include "hw/sd/sd.h"
 
diff --git a/hw/sd/pl181.c b/hw/sd/pl181.c
index 81b406dbf0..3c615f2b8f 100644
--- a/hw/sd/pl181.c
+++ b/hw/sd/pl181.c
@@ -10,6 +10,7 @@
 #include "qemu/osdep.h"
 #include "sysemu/blockdev.h"
 #include "hw/sysbus.h"
+#include "hw/irq.h"
 #include "hw/sd/sd.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/sd/pxa2xx_mmci.c b/hw/sd/pxa2xx_mmci.c
index 81ff5cea86..1eb1248cad 100644
--- a/hw/sd/pxa2xx_mmci.c
+++ b/hw/sd/pxa2xx_mmci.c
@@ -13,6 +13,7 @@
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "hw/arm/pxa.h"
 #include "hw/sd/sd.h"
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index 917195a65b..21adf2be16 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -34,6 +34,7 @@
 #include "qemu/units.h"
 #include "hw/qdev.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/registerfields.h"
 #include "sysemu/block-backend.h"
 #include "hw/sd/sd.h"
diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c
index 7b80b1d93f..46c7fbd677 100644
--- a/hw/sd/sdhci.c
+++ b/hw/sd/sdhci.c
@@ -27,6 +27,7 @@
 #include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "sysemu/dma.h"
 #include "qemu/timer.h"
 #include "qemu/bitops.h"
diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c
index da79bf0337..9838ea3323 100644
--- a/hw/sh4/r2d.c
+++ b/hw/sh4/r2d.c
@@ -37,6 +37,7 @@
 #include "net/net.h"
 #include "sh7750_regs.h"
 #include "hw/ide.h"
+#include "hw/irq.h"
 #include "hw/loader.h"
 #include "hw/usb.h"
 #include "hw/block/flash.h"
diff --git a/hw/sh4/sh7750.c b/hw/sh4/sh7750.c
index 2fb6e618d9..b35d07265d 100644
--- a/hw/sh4/sh7750.c
+++ b/hw/sh4/sh7750.c
@@ -22,8 +22,10 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sh4/sh.h"
 #include "sysemu/sysemu.h"
 #include "sh7750_regs.h"
diff --git a/hw/sh4/sh_pci.c b/hw/sh4/sh_pci.c
index b15f264e99..71afd23b67 100644
--- a/hw/sh4/sh_pci.c
+++ b/hw/sh4/sh_pci.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
 #include "hw/sh4/sh.h"
+#include "hw/irq.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_host.h"
 #include "qemu/bswap.h"
diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c
index c7ddfa2cfe..9c43806690 100644
--- a/hw/sparc/leon3.c
+++ b/hw/sparc/leon3.c
@@ -29,6 +29,7 @@
 #include "qemu-common.h"
 #include "cpu.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "qemu/timer.h"
 #include "hw/ptimer.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
index 93a69c12fb..0f9cda19f3 100644
--- a/hw/sparc/sun4m.c
+++ b/hw/sparc/sun4m.c
@@ -44,6 +44,7 @@
 #include "hw/nvram/fw_cfg.h"
 #include "hw/char/escc.h"
 #include "hw/empty_slot.h"
+#include "hw/irq.h"
 #include "hw/loader.h"
 #include "elf.h"
 #include "trace.h"
diff --git a/hw/sparc/sun4m_iommu.c b/hw/sparc/sun4m_iommu.c
index 45a61ecf87..36b5c0c133 100644
--- a/hw/sparc/sun4m_iommu.c
+++ b/hw/sparc/sun4m_iommu.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/sparc/sun4m_iommu.h"
 #include "hw/sysbus.h"
 #include "qemu/module.h"
diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c
index 81f2fb7f70..eb6eee6586 100644
--- a/hw/ssi/aspeed_smc.c
+++ b/hw/ssi/aspeed_smc.c
@@ -29,6 +29,7 @@
 #include "qemu/module.h"
 #include "qemu/error-report.h"
 
+#include "hw/irq.h"
 #include "hw/ssi/aspeed_smc.h"
 
 /* CE Type Setting Register */
diff --git a/hw/ssi/imx_spi.c b/hw/ssi/imx_spi.c
index 5cec9b5d05..79c8a6dae7 100644
--- a/hw/ssi/imx_spi.c
+++ b/hw/ssi/imx_spi.c
@@ -9,6 +9,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/ssi/imx_spi.h"
 #include "sysemu/sysemu.h"
 #include "qemu/log.h"
diff --git a/hw/ssi/mss-spi.c b/hw/ssi/mss-spi.c
index 4c9da5d2b2..d000c91341 100644
--- a/hw/ssi/mss-spi.c
+++ b/hw/ssi/mss-spi.c
@@ -24,6 +24,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/ssi/mss-spi.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/ssi/omap_spi.c b/hw/ssi/omap_spi.c
index f278a55160..7c7e689707 100644
--- a/hw/ssi/omap_spi.c
+++ b/hw/ssi/omap_spi.c
@@ -19,9 +19,11 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
+
 #include "qemu/osdep.h"
 #include "qemu/log.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/arm/omap.h"
 
 /* Multichannel SPI */
diff --git a/hw/ssi/pl022.c b/hw/ssi/pl022.c
index fec73cae26..286b08438d 100644
--- a/hw/ssi/pl022.c
+++ b/hw/ssi/pl022.c
@@ -9,6 +9,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "hw/irq.h"
 #include "hw/ssi/pl022.h"
 #include "hw/ssi/ssi.h"
 #include "qemu/log.h"
diff --git a/hw/ssi/xilinx_spi.c b/hw/ssi/xilinx_spi.c
index 1379cb164b..5495d3e3cb 100644
--- a/hw/ssi/xilinx_spi.c
+++ b/hw/ssi/xilinx_spi.c
@@ -31,6 +31,7 @@
 #include "qemu/module.h"
 #include "qemu/fifo8.h"
 
+#include "hw/irq.h"
 #include "hw/ssi/ssi.h"
 
 #ifdef XILINX_SPI_ERR_DEBUG
diff --git a/hw/ssi/xilinx_spips.c b/hw/ssi/xilinx_spips.c
index b29e0a4a89..451d5a0783 100644
--- a/hw/ssi/xilinx_spips.c
+++ b/hw/ssi/xilinx_spips.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
 #include "sysemu/sysemu.h"
+#include "hw/irq.h"
 #include "hw/ptimer.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/timer/a9gtimer.c b/hw/timer/a9gtimer.c
index 09e2a7b7bf..0d18497322 100644
--- a/hw/timer/a9gtimer.c
+++ b/hw/timer/a9gtimer.c
@@ -21,6 +21,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/timer/a9gtimer.h"
 #include "qapi/error.h"
 #include "qemu/timer.h"
diff --git a/hw/timer/allwinner-a10-pit.c b/hw/timer/allwinner-a10-pit.c
index 763e1090ec..490e584604 100644
--- a/hw/timer/allwinner-a10-pit.c
+++ b/hw/timer/allwinner-a10-pit.c
@@ -16,6 +16,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "sysemu/sysemu.h"
 #include "hw/timer/allwinner-a10-pit.h"
diff --git a/hw/timer/altera_timer.c b/hw/timer/altera_timer.c
index 5c1d9e4074..0dd4f321f7 100644
--- a/hw/timer/altera_timer.c
+++ b/hw/timer/altera_timer.c
@@ -24,6 +24,7 @@
 
 #include "hw/sysbus.h"
 #include "sysemu/sysemu.h"
+#include "hw/irq.h"
 #include "hw/ptimer.h"
 
 #define R_STATUS      0
diff --git a/hw/timer/arm_mptimer.c b/hw/timer/arm_mptimer.c
index 93044aacfd..3092b85d91 100644
--- a/hw/timer/arm_mptimer.c
+++ b/hw/timer/arm_mptimer.c
@@ -20,6 +20,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/ptimer.h"
 #include "hw/timer/arm_mptimer.h"
 #include "qapi/error.h"
diff --git a/hw/timer/arm_timer.c b/hw/timer/arm_timer.c
index f0a753404d..30ad2245da 100644
--- a/hw/timer/arm_timer.c
+++ b/hw/timer/arm_timer.c
@@ -11,6 +11,7 @@
 #include "hw/sysbus.h"
 #include "qemu/timer.h"
 #include "hw/qdev.h"
+#include "hw/irq.h"
 #include "hw/ptimer.h"
 #include "qemu/main-loop.h"
 #include "qemu/module.h"
diff --git a/hw/timer/armv7m_systick.c b/hw/timer/armv7m_systick.c
index 94640743b5..8a91ba345b 100644
--- a/hw/timer/armv7m_systick.c
+++ b/hw/timer/armv7m_systick.c
@@ -11,6 +11,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/timer/armv7m_systick.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qemu/timer.h"
 #include "qemu/log.h"
diff --git a/hw/timer/aspeed_timer.c b/hw/timer/aspeed_timer.c
index 29cc5e8070..c8e4892989 100644
--- a/hw/timer/aspeed_timer.c
+++ b/hw/timer/aspeed_timer.c
@@ -11,6 +11,7 @@
 
 #include "qemu/osdep.h"
 #include "qapi/error.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "hw/timer/aspeed_timer.h"
 #include "qemu/bitops.h"
diff --git a/hw/timer/cadence_ttc.c b/hw/timer/cadence_ttc.c
index 115d935f84..810c08a0ae 100644
--- a/hw/timer/cadence_ttc.c
+++ b/hw/timer/cadence_ttc.c
@@ -17,6 +17,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qemu/module.h"
 #include "qemu/timer.h"
diff --git a/hw/timer/cmsdk-apb-dualtimer.c b/hw/timer/cmsdk-apb-dualtimer.c
index 383f6e12b1..7328abb40b 100644
--- a/hw/timer/cmsdk-apb-dualtimer.c
+++ b/hw/timer/cmsdk-apb-dualtimer.c
@@ -23,6 +23,7 @@
 #include "qemu/main-loop.h"
 #include "qemu/module.h"
 #include "hw/sysbus.h"
+#include "hw/irq.h"
 #include "hw/registerfields.h"
 #include "hw/timer/cmsdk-apb-dualtimer.h"
 
diff --git a/hw/timer/cmsdk-apb-timer.c b/hw/timer/cmsdk-apb-timer.c
index 2e7318b81f..07f82e5fa1 100644
--- a/hw/timer/cmsdk-apb-timer.c
+++ b/hw/timer/cmsdk-apb-timer.c
@@ -34,6 +34,7 @@
 #include "qapi/error.h"
 #include "trace.h"
 #include "hw/sysbus.h"
+#include "hw/irq.h"
 #include "hw/registerfields.h"
 #include "hw/timer/cmsdk-apb-timer.h"
 
diff --git a/hw/timer/etraxfs_timer.c b/hw/timer/etraxfs_timer.c
index 18887b2be2..2fd54ad4dc 100644
--- a/hw/timer/etraxfs_timer.c
+++ b/hw/timer/etraxfs_timer.c
@@ -28,6 +28,7 @@
 #include "sysemu/sysemu.h"
 #include "qemu/module.h"
 #include "qemu/timer.h"
+#include "hw/irq.h"
 #include "hw/ptimer.h"
 
 #define D(x)
diff --git a/hw/timer/exynos4210_mct.c b/hw/timer/exynos4210_mct.c
index 874c7b8522..25e2125af8 100644
--- a/hw/timer/exynos4210_mct.c
+++ b/hw/timer/exynos4210_mct.c
@@ -61,6 +61,7 @@
 #include "hw/ptimer.h"
 
 #include "hw/arm/exynos4210.h"
+#include "hw/irq.h"
 
 //#define DEBUG_MCT
 
diff --git a/hw/timer/exynos4210_pwm.c b/hw/timer/exynos4210_pwm.c
index 9bc0327785..2af7b374cc 100644
--- a/hw/timer/exynos4210_pwm.c
+++ b/hw/timer/exynos4210_pwm.c
@@ -29,6 +29,7 @@
 #include "hw/ptimer.h"
 
 #include "hw/arm/exynos4210.h"
+#include "hw/irq.h"
 
 //#define DEBUG_PWM
 
diff --git a/hw/timer/exynos4210_rtc.c b/hw/timer/exynos4210_rtc.c
index 0ecedf7394..b9dfaf51f7 100644
--- a/hw/timer/exynos4210_rtc.c
+++ b/hw/timer/exynos4210_rtc.c
@@ -35,6 +35,7 @@
 #include "hw/ptimer.h"
 
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "sysemu/sysemu.h"
 
 #include "hw/arm/exynos4210.h"
diff --git a/hw/timer/grlib_gptimer.c b/hw/timer/grlib_gptimer.c
index e45a49075b..28ba1259d0 100644
--- a/hw/timer/grlib_gptimer.c
+++ b/hw/timer/grlib_gptimer.c
@@ -26,6 +26,7 @@
 #include "hw/sparc/grlib.h"
 #include "hw/sysbus.h"
 #include "qemu/timer.h"
+#include "hw/irq.h"
 #include "hw/ptimer.h"
 #include "qemu/main-loop.h"
 #include "qemu/module.h"
diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c
index 41024f39fb..17838df783 100644
--- a/hw/timer/hpet.c
+++ b/hw/timer/hpet.c
@@ -27,6 +27,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/i386/pc.h"
+#include "hw/irq.h"
 #include "ui/console.h"
 #include "qapi/error.h"
 #include "qemu/error-report.h"
diff --git a/hw/timer/i8254.c b/hw/timer/i8254.c
index 0972c4724e..97258757b1 100644
--- a/hw/timer/i8254.c
+++ b/hw/timer/i8254.c
@@ -24,6 +24,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "qemu/module.h"
 #include "qemu/timer.h"
 #include "hw/timer/i8254.h"
diff --git a/hw/timer/imx_epit.c b/hw/timer/imx_epit.c
index 7a883160f4..afeb74339a 100644
--- a/hw/timer/imx_epit.c
+++ b/hw/timer/imx_epit.c
@@ -14,6 +14,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/timer/imx_epit.h"
+#include "hw/irq.h"
 #include "hw/misc/imx_ccm.h"
 #include "qemu/main-loop.h"
 #include "qemu/module.h"
diff --git a/hw/timer/imx_gpt.c b/hw/timer/imx_gpt.c
index 3086c03774..b4cfc52019 100644
--- a/hw/timer/imx_gpt.c
+++ b/hw/timer/imx_gpt.c
@@ -13,6 +13,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/timer/imx_gpt.h"
 #include "qemu/main-loop.h"
 #include "qemu/module.h"
diff --git a/hw/timer/lm32_timer.c b/hw/timer/lm32_timer.c
index 6ce876c6ae..4beffc1396 100644
--- a/hw/timer/lm32_timer.c
+++ b/hw/timer/lm32_timer.c
@@ -23,6 +23,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "trace.h"
 #include "qemu/timer.h"
diff --git a/hw/timer/m48t59.c b/hw/timer/m48t59.c
index 030c8872a2..e2479c504a 100644
--- a/hw/timer/m48t59.c
+++ b/hw/timer/m48t59.c
@@ -26,6 +26,7 @@
 #include "qemu/osdep.h"
 #include "qemu-common.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/timer/m48t59.h"
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/timer/mc146818rtc.c b/hw/timer/mc146818rtc.c
index 21fcba5e3a..0410cccafa 100644
--- a/hw/timer/mc146818rtc.c
+++ b/hw/timer/mc146818rtc.c
@@ -28,6 +28,7 @@
 #include "qemu/module.h"
 #include "qemu/bcd.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/replay.h"
diff --git a/hw/timer/milkymist-sysctl.c b/hw/timer/milkymist-sysctl.c
index a9d250877c..0f9c39715d 100644
--- a/hw/timer/milkymist-sysctl.c
+++ b/hw/timer/milkymist-sysctl.c
@@ -23,6 +23,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "sysemu/sysemu.h"
 #include "trace.h"
diff --git a/hw/timer/mss-timer.c b/hw/timer/mss-timer.c
index 6add47af99..1be9baf9c0 100644
--- a/hw/timer/mss-timer.c
+++ b/hw/timer/mss-timer.c
@@ -27,6 +27,7 @@
 #include "qemu/main-loop.h"
 #include "qemu/module.h"
 #include "qemu/log.h"
+#include "hw/irq.h"
 #include "hw/timer/mss-timer.h"
 
 #ifndef MSS_TIMER_ERR_DEBUG
diff --git a/hw/timer/nrf51_timer.c b/hw/timer/nrf51_timer.c
index 29fb81a744..297403c4fd 100644
--- a/hw/timer/nrf51_timer.c
+++ b/hw/timer/nrf51_timer.c
@@ -15,6 +15,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/arm/nrf51.h"
+#include "hw/irq.h"
 #include "hw/timer/nrf51_timer.h"
 #include "trace.h"
 
diff --git a/hw/timer/omap_gptimer.c b/hw/timer/omap_gptimer.c
index ae2dc99832..c34f60b5d4 100644
--- a/hw/timer/omap_gptimer.c
+++ b/hw/timer/omap_gptimer.c
@@ -17,8 +17,10 @@
  * You should have received a copy of the GNU General Public License along
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
+
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "qemu/timer.h"
 #include "hw/arm/omap.h"
 
diff --git a/hw/timer/pl031.c b/hw/timer/pl031.c
index 1a7e2ee06b..435c4a6c7e 100644
--- a/hw/timer/pl031.c
+++ b/hw/timer/pl031.c
@@ -14,6 +14,7 @@
 #include "qemu/osdep.h"
 #include "qemu-common.h"
 #include "hw/timer/pl031.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/timer/puv3_ost.c b/hw/timer/puv3_ost.c
index 4a8ae37ffd..6fe370049b 100644
--- a/hw/timer/puv3_ost.c
+++ b/hw/timer/puv3_ost.c
@@ -11,6 +11,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "hw/irq.h"
 #include "hw/ptimer.h"
 #include "qemu/main-loop.h"
 #include "qemu/module.h"
diff --git a/hw/timer/pxa2xx_timer.c b/hw/timer/pxa2xx_timer.c
index 8c1ef43cd5..9c3b2b80ab 100644
--- a/hw/timer/pxa2xx_timer.c
+++ b/hw/timer/pxa2xx_timer.c
@@ -9,6 +9,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
 #include "hw/arm/pxa.h"
diff --git a/hw/timer/sh_timer.c b/hw/timer/sh_timer.c
index 91b18ba312..adcc0c138e 100644
--- a/hw/timer/sh_timer.c
+++ b/hw/timer/sh_timer.c
@@ -10,6 +10,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/sh4/sh.h"
 #include "qemu/timer.h"
 #include "qemu/main-loop.h"
diff --git a/hw/timer/slavio_timer.c b/hw/timer/slavio_timer.c
index 005fd599e8..310a0a126a 100644
--- a/hw/timer/slavio_timer.c
+++ b/hw/timer/slavio_timer.c
@@ -24,6 +24,7 @@
 
 #include "qemu/osdep.h"
 #include "qemu/timer.h"
+#include "hw/irq.h"
 #include "hw/ptimer.h"
 #include "hw/sysbus.h"
 #include "trace.h"
diff --git a/hw/timer/stm32f2xx_timer.c b/hw/timer/stm32f2xx_timer.c
index 4c49dc4995..d7af928667 100644
--- a/hw/timer/stm32f2xx_timer.c
+++ b/hw/timer/stm32f2xx_timer.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/timer/stm32f2xx_timer.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/timer/twl92230.c b/hw/timer/twl92230.c
index 91ae7bf203..795f894a39 100644
--- a/hw/timer/twl92230.c
+++ b/hw/timer/twl92230.c
@@ -24,6 +24,7 @@
 #include "hw/hw.h"
 #include "qemu/timer.h"
 #include "hw/i2c/i2c.h"
+#include "hw/irq.h"
 #include "migration/qemu-file-types.h"
 #include "sysemu/sysemu.h"
 #include "ui/console.h"
diff --git a/hw/timer/xilinx_timer.c b/hw/timer/xilinx_timer.c
index 16bcd0393b..c4a83af8b9 100644
--- a/hw/timer/xilinx_timer.c
+++ b/hw/timer/xilinx_timer.c
@@ -24,6 +24,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "hw/irq.h"
 #include "hw/ptimer.h"
 #include "qemu/log.h"
 #include "qemu/main-loop.h"
diff --git a/hw/timer/xlnx-zynqmp-rtc.c b/hw/timer/xlnx-zynqmp-rtc.c
index 36daf0c7e7..48c3fba677 100644
--- a/hw/timer/xlnx-zynqmp-rtc.c
+++ b/hw/timer/xlnx-zynqmp-rtc.c
@@ -31,6 +31,7 @@
 #include "qemu/bitops.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
+#include "hw/irq.h"
 #include "hw/ptimer.h"
 #include "qemu/cutils.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/tpm/tpm_tis.c b/hw/tpm/tpm_tis.c
index d6b3212890..747e943c42 100644
--- a/hw/tpm/tpm_tis.c
+++ b/hw/tpm/tpm_tis.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/isa/isa.h"
 #include "qapi/error.h"
 #include "qemu/module.h"
diff --git a/hw/unicore32/puv3.c b/hw/unicore32/puv3.c
index 132e6086ee..7e933de228 100644
--- a/hw/unicore32/puv3.c
+++ b/hw/unicore32/puv3.c
@@ -20,6 +20,7 @@
 #undef DEBUG_PUV3
 #include "hw/unicore32/puv3.h"
 #include "hw/input/i8042.h"
+#include "hw/irq.h"
 
 #define KERNEL_LOAD_ADDR        0x03000000
 #define KERNEL_MAX_SIZE         0x00800000 /* Just a guess */
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
index 62dab0592f..d2189fc844 100644
--- a/hw/usb/hcd-ehci.c
+++ b/hw/usb/hcd-ehci.c
@@ -28,6 +28,7 @@
 
 #include "qemu/osdep.h"
 #include "qapi/error.h"
+#include "hw/irq.h"
 #include "hw/usb/ehci-regs.h"
 #include "hw/usb/hcd-ehci.h"
 #include "trace.h"
diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c
index 4f6fdbc0a7..1ced5cd71a 100644
--- a/hw/usb/hcd-ohci.c
+++ b/hw/usb/hcd-ohci.c
@@ -27,6 +27,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "qapi/error.h"
 #include "qemu/module.h"
 #include "qemu/timer.h"
diff --git a/hw/vfio/platform.c b/hw/vfio/platform.c
index 622e609fb4..708df2ec0d 100644
--- a/hw/vfio/platform.c
+++ b/hw/vfio/platform.c
@@ -29,6 +29,7 @@
 #include "qemu/queue.h"
 #include "hw/sysbus.h"
 #include "trace.h"
+#include "hw/irq.h"
 #include "hw/platform-bus.h"
 #include "sysemu/kvm.h"
 
diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c
index d4c0997074..3dc525dea4 100644
--- a/hw/virtio/virtio-mmio.c
+++ b/hw/virtio/virtio-mmio.c
@@ -21,6 +21,7 @@
 
 #include "qemu/osdep.h"
 #include "standard-headers/linux/virtio_mmio.h"
+#include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "hw/virtio/virtio.h"
 #include "migration/qemu-file-types.h"
diff --git a/hw/watchdog/cmsdk-apb-watchdog.c b/hw/watchdog/cmsdk-apb-watchdog.c
index 54ac393020..a79da39dd5 100644
--- a/hw/watchdog/cmsdk-apb-watchdog.c
+++ b/hw/watchdog/cmsdk-apb-watchdog.c
@@ -28,6 +28,7 @@
 #include "qemu/module.h"
 #include "sysemu/watchdog.h"
 #include "hw/sysbus.h"
+#include "hw/irq.h"
 #include "hw/registerfields.h"
 #include "hw/watchdog/cmsdk-apb-watchdog.h"
 
diff --git a/hw/xtensa/mx_pic.c b/hw/xtensa/mx_pic.c
index 7075db9d4b..912de66206 100644
--- a/hw/xtensa/mx_pic.c
+++ b/hw/xtensa/mx_pic.c
@@ -27,6 +27,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "hw/xtensa/mx_pic.h"
 #include "qemu/log.h"
 
diff --git a/hw/xtensa/pic_cpu.c b/hw/xtensa/pic_cpu.c
index df3acbb541..b708290d7b 100644
--- a/hw/xtensa/pic_cpu.c
+++ b/hw/xtensa/pic_cpu.c
@@ -28,6 +28,7 @@
 #include "qemu/osdep.h"
 #include "cpu.h"
 #include "hw/hw.h"
+#include "hw/irq.h"
 #include "qemu/log.h"
 #include "qemu/timer.h"
 
diff --git a/target/arm/helper.c b/target/arm/helper.c
index b74c23a9bc..75b66bf844 100644
--- a/target/arm/helper.c
+++ b/target/arm/helper.c
@@ -20,6 +20,7 @@
 #include "qemu/qemu-print.h"
 #include "exec/exec-all.h"
 #include <zlib.h> /* For crc32 */
+#include "hw/irq.h"
 #include "hw/semihosting/semihost.h"
 #include "sysemu/cpus.h"
 #include "sysemu/kvm.h"
diff --git a/target/arm/kvm.c b/target/arm/kvm.c
index fe4f461d4e..36a1e60bd4 100644
--- a/target/arm/kvm.c
+++ b/target/arm/kvm.c
@@ -27,6 +27,7 @@
 #include "exec/memattrs.h"
 #include "exec/address-spaces.h"
 #include "hw/boards.h"
+#include "hw/irq.h"
 #include "qemu/log.h"
 
 const KVMCapabilityInfo kvm_arch_required_capabilities[] = {
diff --git a/target/mips/cp0_timer.c b/target/mips/cp0_timer.c
index f4716395df..48c18d7818 100644
--- a/target/mips/cp0_timer.c
+++ b/target/mips/cp0_timer.c
@@ -21,6 +21,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "hw/irq.h"
 #include "hw/mips/cpudevs.h"
 #include "qemu/timer.h"
 #include "sysemu/kvm.h"
-- 
2.21.0



^ permalink raw reply	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PULL 13/29] Clean up inclusion of exec/cpu-common.h
  2019-08-13 15:46 [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13 Markus Armbruster
                   ` (11 preceding siblings ...)
  2019-08-13 15:46 ` [Qemu-devel] [PULL 12/29] Include hw/irq.h a lot less Markus Armbruster
@ 2019-08-13 15:46 ` Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 14/29] migration: Move the VMStateDescription typedef to typedefs.h Markus Armbruster
                   ` (16 subsequent siblings)
  29 siblings, 0 replies; 34+ messages in thread
From: Markus Armbruster @ 2019-08-13 15:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Philippe Mathieu-Daudé

migration/qemu-file.h neglects to include it even though it needs
ram_addr_t.  Fix that.  Drop a few superfluous inclusions elsewhere.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190812052359.30071-14-armbru@redhat.com>
---
 include/hw/hw.h                 | 1 -
 include/hw/ppc/ppc4xx.h         | 1 -
 include/migration/misc.h        | 1 -
 include/sysemu/kvm_int.h        | 1 -
 include/sysemu/memory_mapping.h | 1 -
 migration/migration.h           | 1 -
 migration/qemu-file.h           | 1 +
 accel/stubs/tcg-stub.c          | 1 -
 balloon.c                       | 1 -
 hw/smbios/smbios.c              | 1 -
 migration/qemu-file-channel.c   | 1 -
 migration/vmstate-types.c       | 1 -
 qom/cpu.c                       | 1 -
 tcg/optimize.c                  | 1 -
 tcg/tcg-common.c                | 1 -
 tcg/tcg.c                       | 1 -
 16 files changed, 1 insertion(+), 15 deletions(-)

diff --git a/include/hw/hw.h b/include/hw/hw.h
index 38d2fb1f40..86ff26b712 100644
--- a/include/hw/hw.h
+++ b/include/hw/hw.h
@@ -6,7 +6,6 @@
 #error Cannot include hw/hw.h from user emulation
 #endif
 
-#include "exec/cpu-common.h"
 #include "qom/object.h"
 #include "exec/memory.h"
 #include "migration/vmstate.h"
diff --git a/include/hw/ppc/ppc4xx.h b/include/hw/ppc/ppc4xx.h
index 90f8866138..7d82259051 100644
--- a/include/hw/ppc/ppc4xx.h
+++ b/include/hw/ppc/ppc4xx.h
@@ -26,7 +26,6 @@
 #define PPC4XX_H
 
 #include "hw/ppc/ppc.h"
-#include "exec/cpu-common.h"
 #include "exec/memory.h"
 
 /* PowerPC 4xx core initialization */
diff --git a/include/migration/misc.h b/include/migration/misc.h
index 5cdbabd094..b9d8e787af 100644
--- a/include/migration/misc.h
+++ b/include/migration/misc.h
@@ -14,7 +14,6 @@
 #ifndef MIGRATION_MISC_H
 #define MIGRATION_MISC_H
 
-#include "exec/cpu-common.h"
 #include "qemu/notify.h"
 #include "qapi/qapi-types-net.h"
 
diff --git a/include/sysemu/kvm_int.h b/include/sysemu/kvm_int.h
index 787dbc7770..5d341cc29b 100644
--- a/include/sysemu/kvm_int.h
+++ b/include/sysemu/kvm_int.h
@@ -9,7 +9,6 @@
 #ifndef QEMU_KVM_INT_H
 #define QEMU_KVM_INT_H
 
-#include "exec/cpu-common.h"
 #include "exec/memory.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/accel.h"
diff --git a/include/sysemu/memory_mapping.h b/include/sysemu/memory_mapping.h
index 1b440df486..4b20f1a639 100644
--- a/include/sysemu/memory_mapping.h
+++ b/include/sysemu/memory_mapping.h
@@ -15,7 +15,6 @@
 #define MEMORY_MAPPING_H
 
 #include "qemu/queue.h"
-#include "exec/cpu-common.h"
 #include "exec/cpu-defs.h"
 #include "exec/memory.h"
 
diff --git a/migration/migration.h b/migration/migration.h
index 1fdd7b21fd..26f01d00f6 100644
--- a/migration/migration.h
+++ b/migration/migration.h
@@ -16,7 +16,6 @@
 
 #include "qapi/qapi-types-migration.h"
 #include "qemu/thread.h"
-#include "exec/cpu-common.h"
 #include "qemu/coroutine_int.h"
 #include "hw/qdev.h"
 #include "io/channel.h"
diff --git a/migration/qemu-file.h b/migration/qemu-file.h
index 13baf896bd..21f3ae4be2 100644
--- a/migration/qemu-file.h
+++ b/migration/qemu-file.h
@@ -26,6 +26,7 @@
 #define MIGRATION_QEMU_FILE_H
 
 #include <zlib.h>
+#include "exec/cpu-common.h"
 
 /* Read a chunk of data from a file at the given position.  The pos argument
  * can be ignored if the file is only be used for streaming.  The number of
diff --git a/accel/stubs/tcg-stub.c b/accel/stubs/tcg-stub.c
index 76ae461749..e2d23edafe 100644
--- a/accel/stubs/tcg-stub.c
+++ b/accel/stubs/tcg-stub.c
@@ -14,7 +14,6 @@
 #include "qemu-common.h"
 #include "cpu.h"
 #include "tcg/tcg.h"
-#include "exec/cpu-common.h"
 #include "exec/exec-all.h"
 
 void tb_flush(CPUState *cpu)
diff --git a/balloon.c b/balloon.c
index 914b3662db..f104b42961 100644
--- a/balloon.c
+++ b/balloon.c
@@ -26,7 +26,6 @@
 
 #include "qemu/osdep.h"
 #include "qemu/atomic.h"
-#include "exec/cpu-common.h"
 #include "sysemu/kvm.h"
 #include "sysemu/balloon.h"
 #include "trace-root.h"
diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c
index 7bcd67b098..11d476c4a2 100644
--- a/hw/smbios/smbios.c
+++ b/hw/smbios/smbios.c
@@ -28,7 +28,6 @@
 #include "hw/firmware/smbios.h"
 #include "hw/loader.h"
 #include "hw/boards.h"
-#include "exec/cpu-common.h"
 #include "smbios_build.h"
 
 /* legacy structures and constants for <= 2.0 machines */
diff --git a/migration/qemu-file-channel.c b/migration/qemu-file-channel.c
index 8e639eb496..78ef248820 100644
--- a/migration/qemu-file-channel.c
+++ b/migration/qemu-file-channel.c
@@ -24,7 +24,6 @@
 
 #include "qemu/osdep.h"
 #include "qemu-file-channel.h"
-#include "exec/cpu-common.h"
 #include "qemu-file.h"
 #include "io/channel-socket.h"
 #include "qemu/iov.h"
diff --git a/migration/vmstate-types.c b/migration/vmstate-types.c
index 845f4649ee..bee658a1b2 100644
--- a/migration/vmstate-types.c
+++ b/migration/vmstate-types.c
@@ -11,7 +11,6 @@
  */
 
 #include "qemu/osdep.h"
-#include "exec/cpu-common.h"
 #include "qemu-file.h"
 #include "migration.h"
 #include "migration/vmstate.h"
diff --git a/qom/cpu.c b/qom/cpu.c
index f376f782d8..fdc1af8f40 100644
--- a/qom/cpu.c
+++ b/qom/cpu.c
@@ -25,7 +25,6 @@
 #include "qemu/notify.h"
 #include "qemu/log.h"
 #include "exec/log.h"
-#include "exec/cpu-common.h"
 #include "qemu/error-report.h"
 #include "qemu/qemu-print.h"
 #include "sysemu/sysemu.h"
diff --git a/tcg/optimize.c b/tcg/optimize.c
index d2424de4af..cee2a36a60 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -24,7 +24,6 @@
  */
 
 #include "qemu/osdep.h"
-#include "exec/cpu-common.h"
 #include "tcg-op.h"
 
 #define CASE_OP_32_64(x)                        \
diff --git a/tcg/tcg-common.c b/tcg/tcg-common.c
index 907d58d0f0..97305a3efc 100644
--- a/tcg/tcg-common.c
+++ b/tcg/tcg-common.c
@@ -23,7 +23,6 @@
  */
 
 #include "qemu/osdep.h"
-#include "exec/cpu-common.h"
 #include "tcg/tcg.h"
 
 #if defined(CONFIG_TCG_INTERPRETER)
diff --git a/tcg/tcg.c b/tcg/tcg.c
index be2c33c400..2db83ce2e8 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -42,7 +42,6 @@
 #define NO_CPU_IO_DEFS
 #include "cpu.h"
 
-#include "exec/cpu-common.h"
 #include "exec/exec-all.h"
 
 #if !defined(CONFIG_USER_ONLY)
-- 
2.21.0



^ permalink raw reply	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PULL 14/29] migration: Move the VMStateDescription typedef to typedefs.h
  2019-08-13 15:46 [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13 Markus Armbruster
                   ` (12 preceding siblings ...)
  2019-08-13 15:46 ` [Qemu-devel] [PULL 13/29] Clean up inclusion of exec/cpu-common.h Markus Armbruster
@ 2019-08-13 15:46 ` Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 15/29] Include migration/vmstate.h less Markus Armbruster
                   ` (15 subsequent siblings)
  29 siblings, 0 replies; 34+ messages in thread
From: Markus Armbruster @ 2019-08-13 15:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Philippe Mathieu-Daudé, Alex Bennée

We declare incomplete struct VMStateDescription in a couple of places
so we don't have to include migration/vmstate.h for the typedef.
That's fine with me.  However, the next commit will drop
migration/vmstate.h from a massive number of compiles.  Move the
typedef to qemu/typedefs.h now, so I don't have to insert struct in
front of VMStateDescription all over the place then.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190812052359.30071-15-armbru@redhat.com>
---
 include/hw/qdev-core.h      | 6 ++----
 include/migration/vmstate.h | 1 -
 include/qemu/typedefs.h     | 1 +
 include/qom/cpu.h           | 4 ++--
 target/alpha/cpu.h          | 2 +-
 target/arm/cpu.h            | 2 +-
 target/cris/cpu.h           | 2 +-
 target/hppa/cpu.h           | 2 +-
 target/i386/cpu.h           | 2 +-
 target/lm32/cpu.h           | 2 +-
 target/mips/internal.h      | 2 +-
 target/openrisc/cpu.h       | 2 +-
 target/ppc/cpu-qom.h        | 2 +-
 target/ppc/cpu.h            | 2 +-
 target/s390x/cpu.h          | 2 +-
 target/sparc/cpu.h          | 2 +-
 16 files changed, 17 insertions(+), 19 deletions(-)

diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
index b870c8ceeb..e5b62dd2fc 100644
--- a/include/hw/qdev-core.h
+++ b/include/hw/qdev-core.h
@@ -35,8 +35,6 @@ typedef void (*DeviceReset)(DeviceState *dev);
 typedef void (*BusRealize)(BusState *bus, Error **errp);
 typedef void (*BusUnrealize)(BusState *bus, Error **errp);
 
-struct VMStateDescription;
-
 /**
  * DeviceClass:
  * @props: Properties accessing state fields.
@@ -112,7 +110,7 @@ typedef struct DeviceClass {
     DeviceUnrealize unrealize;
 
     /* device state */
-    const struct VMStateDescription *vmsd;
+    const VMStateDescription *vmsd;
 
     /* Private to qdev / bus.  */
     const char *bus_type;
@@ -425,7 +423,7 @@ void device_class_set_parent_unrealize(DeviceClass *dc,
                                        DeviceUnrealize dev_unrealize,
                                        DeviceUnrealize *parent_unrealize);
 
-const struct VMStateDescription *qdev_get_vmsd(DeviceState *dev);
+const VMStateDescription *qdev_get_vmsd(DeviceState *dev);
 
 const char *qdev_fw_name(DeviceState *dev);
 
diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h
index c2bfa7a7f0..1fbfd099dd 100644
--- a/include/migration/vmstate.h
+++ b/include/migration/vmstate.h
@@ -28,7 +28,6 @@
 #define QEMU_VMSTATE_H
 
 typedef struct VMStateInfo VMStateInfo;
-typedef struct VMStateDescription VMStateDescription;
 typedef struct VMStateField VMStateField;
 
 /* VMStateInfo allows customized migration of objects that don't fit in
diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h
index c32efb5b18..9e1283aacf 100644
--- a/include/qemu/typedefs.h
+++ b/include/qemu/typedefs.h
@@ -101,6 +101,7 @@ typedef struct SHPCDevice SHPCDevice;
 typedef struct SSIBus SSIBus;
 typedef struct VirtIODevice VirtIODevice;
 typedef struct Visitor Visitor;
+typedef struct VMStateDescription VMStateDescription;
 
 /*
  * Pointer types
diff --git a/include/qom/cpu.h b/include/qom/cpu.h
index 5ee0046b62..ddb91bbaff 100644
--- a/include/qom/cpu.h
+++ b/include/qom/cpu.h
@@ -215,7 +215,7 @@ typedef struct CPUClass {
     int (*write_elf32_qemunote)(WriteCoreDumpFunction f, CPUState *cpu,
                                 void *opaque);
 
-    const struct VMStateDescription *vmsd;
+    const VMStateDescription *vmsd;
     const char *gdb_core_xml_file;
     gchar * (*gdb_arch_name)(CPUState *cpu);
     const char * (*gdb_get_dynamic_xml)(CPUState *cpu, const char *xmlname);
@@ -1108,7 +1108,7 @@ bool target_words_bigendian(void);
 #ifdef NEED_CPU_H
 
 #ifdef CONFIG_SOFTMMU
-extern const struct VMStateDescription vmstate_cpu_common;
+extern const VMStateDescription vmstate_cpu_common;
 #else
 #define vmstate_cpu_common vmstate_dummy
 #endif
diff --git a/target/alpha/cpu.h b/target/alpha/cpu.h
index b3e8a823e1..4619530660 100644
--- a/target/alpha/cpu.h
+++ b/target/alpha/cpu.h
@@ -277,7 +277,7 @@ struct AlphaCPU {
 
 
 #ifndef CONFIG_USER_ONLY
-extern const struct VMStateDescription vmstate_alpha_cpu;
+extern const VMStateDescription vmstate_alpha_cpu;
 #endif
 
 void alpha_cpu_do_interrupt(CPUState *cpu);
diff --git a/target/arm/cpu.h b/target/arm/cpu.h
index 94c990cddb..2cdde6c4bc 100644
--- a/target/arm/cpu.h
+++ b/target/arm/cpu.h
@@ -922,7 +922,7 @@ void arm_cpu_post_init(Object *obj);
 uint64_t arm_cpu_mp_affinity(int idx, uint8_t clustersz);
 
 #ifndef CONFIG_USER_ONLY
-extern const struct VMStateDescription vmstate_arm_cpu;
+extern const VMStateDescription vmstate_arm_cpu;
 #endif
 
 void arm_cpu_do_interrupt(CPUState *cpu);
diff --git a/target/cris/cpu.h b/target/cris/cpu.h
index fb14ad51f1..aba0a66474 100644
--- a/target/cris/cpu.h
+++ b/target/cris/cpu.h
@@ -183,7 +183,7 @@ struct CRISCPU {
 
 
 #ifndef CONFIG_USER_ONLY
-extern const struct VMStateDescription vmstate_cris_cpu;
+extern const VMStateDescription vmstate_cris_cpu;
 #endif
 
 void cris_cpu_do_interrupt(CPUState *cpu);
diff --git a/target/hppa/cpu.h b/target/hppa/cpu.h
index e9fba96be9..4b816cc13a 100644
--- a/target/hppa/cpu.h
+++ b/target/hppa/cpu.h
@@ -334,7 +334,7 @@ bool hppa_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
 int hppa_get_physical_address(CPUHPPAState *env, vaddr addr, int mmu_idx,
                               int type, hwaddr *pphys, int *pprot);
 extern const MemoryRegionOps hppa_io_eir_ops;
-extern const struct VMStateDescription vmstate_hppa_cpu;
+extern const VMStateDescription vmstate_hppa_cpu;
 void hppa_cpu_alarm_timer(void *);
 int hppa_artype_for_page(CPUHPPAState *env, target_ulong vaddr);
 #endif
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
index 8b3dc5533e..ecd0ec0899 100644
--- a/target/i386/cpu.h
+++ b/target/i386/cpu.h
@@ -1516,7 +1516,7 @@ struct X86CPU {
 
 
 #ifndef CONFIG_USER_ONLY
-extern struct VMStateDescription vmstate_x86_cpu;
+extern VMStateDescription vmstate_x86_cpu;
 #endif
 
 /**
diff --git a/target/lm32/cpu.h b/target/lm32/cpu.h
index c2bbfa2780..064c6b1267 100644
--- a/target/lm32/cpu.h
+++ b/target/lm32/cpu.h
@@ -195,7 +195,7 @@ struct LM32CPU {
 
 
 #ifndef CONFIG_USER_ONLY
-extern const struct VMStateDescription vmstate_lm32_cpu;
+extern const VMStateDescription vmstate_lm32_cpu;
 #endif
 
 void lm32_cpu_do_interrupt(CPUState *cpu);
diff --git a/target/mips/internal.h b/target/mips/internal.h
index b2b41a51ab..d5aa5490d3 100644
--- a/target/mips/internal.h
+++ b/target/mips/internal.h
@@ -148,7 +148,7 @@ hwaddr cpu_mips_translate_address(CPUMIPSState *env, target_ulong address,
 #define cpu_signal_handler cpu_mips_signal_handler
 
 #ifndef CONFIG_USER_ONLY
-extern const struct VMStateDescription vmstate_mips_cpu;
+extern const VMStateDescription vmstate_mips_cpu;
 #endif
 
 static inline bool cpu_mips_hw_interrupts_enabled(CPUMIPSState *env)
diff --git a/target/openrisc/cpu.h b/target/openrisc/cpu.h
index f23b25262d..61ade1d4f0 100644
--- a/target/openrisc/cpu.h
+++ b/target/openrisc/cpu.h
@@ -333,7 +333,7 @@ int print_insn_or1k(bfd_vma addr, disassemble_info *info);
 #define cpu_signal_handler cpu_openrisc_signal_handler
 
 #ifndef CONFIG_USER_ONLY
-extern const struct VMStateDescription vmstate_openrisc_cpu;
+extern const VMStateDescription vmstate_openrisc_cpu;
 
 /* hw/openrisc_pic.c */
 void cpu_openrisc_pic_init(OpenRISCCPU *cpu);
diff --git a/target/ppc/cpu-qom.h b/target/ppc/cpu-qom.h
index be9b4c30c3..a2f202f021 100644
--- a/target/ppc/cpu-qom.h
+++ b/target/ppc/cpu-qom.h
@@ -203,7 +203,7 @@ typedef struct PPCTimebase {
     int64_t time_of_the_day_ns;
 } PPCTimebase;
 
-extern const struct VMStateDescription vmstate_ppc_timebase;
+extern const VMStateDescription vmstate_ppc_timebase;
 
 #define VMSTATE_PPC_TIMEBASE_V(_field, _state, _version) {            \
     .name       = (stringify(_field)),                                \
diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h
index c9beba2a5c..4ea33cf696 100644
--- a/target/ppc/cpu.h
+++ b/target/ppc/cpu.h
@@ -1255,7 +1255,7 @@ int ppc32_cpu_write_elf32_note(WriteCoreDumpFunction f, CPUState *cs,
                                int cpuid, void *opaque);
 #ifndef CONFIG_USER_ONLY
 void ppc_cpu_do_system_reset(CPUState *cs);
-extern const struct VMStateDescription vmstate_ppc_cpu;
+extern const VMStateDescription vmstate_ppc_cpu;
 #endif
 
 /*****************************************************************************/
diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h
index a606547b4d..3d9de25f7c 100644
--- a/target/s390x/cpu.h
+++ b/target/s390x/cpu.h
@@ -163,7 +163,7 @@ struct S390CPU {
 
 
 #ifndef CONFIG_USER_ONLY
-extern const struct VMStateDescription vmstate_s390_cpu;
+extern const VMStateDescription vmstate_s390_cpu;
 #endif
 
 /* distinguish between 24 bit and 31 bit addressing */
diff --git a/target/sparc/cpu.h b/target/sparc/cpu.h
index 8ed2250cd0..0d5b01efe5 100644
--- a/target/sparc/cpu.h
+++ b/target/sparc/cpu.h
@@ -532,7 +532,7 @@ struct SPARCCPU {
 
 
 #ifndef CONFIG_USER_ONLY
-extern const struct VMStateDescription vmstate_sparc_cpu;
+extern const VMStateDescription vmstate_sparc_cpu;
 #endif
 
 void sparc_cpu_do_interrupt(CPUState *cpu);
-- 
2.21.0



^ permalink raw reply	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PULL 15/29] Include migration/vmstate.h less
  2019-08-13 15:46 [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13 Markus Armbruster
                   ` (13 preceding siblings ...)
  2019-08-13 15:46 ` [Qemu-devel] [PULL 14/29] migration: Move the VMStateDescription typedef to typedefs.h Markus Armbruster
@ 2019-08-13 15:46 ` Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 16/29] Include exec/memory.h slightly less Markus Armbruster
                   ` (14 subsequent siblings)
  29 siblings, 0 replies; 34+ messages in thread
From: Markus Armbruster @ 2019-08-13 15:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Philippe Mathieu-Daudé, Alistair Francis

In my "build everything" tree, changing migration/vmstate.h triggers a
recompile of some 2700 out of 6600 objects (not counting tests and
objects that don't depend on qemu/osdep.h).

hw/hw.h supposedly includes it for convenience.  Several other headers
include it just to get VMStateDescription.  The previous commit made
that unnecessary.

Include migration/vmstate.h only where it's still needed.  Touching it
now recompiles only some 1600 objects.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Message-Id: <20190812052359.30071-16-armbru@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 include/hw/acpi/tco.h              | 1 -
 include/hw/block/flash.h           | 1 -
 include/hw/hw.h                    | 1 -
 include/hw/input/hid.h             | 1 -
 include/hw/pci/shpc.h              | 1 +
 include/hw/ppc/spapr_ovec.h        | 1 -
 include/hw/ptimer.h                | 1 -
 include/hw/virtio/virtio.h         | 1 +
 include/migration/cpu.h            | 1 +
 include/net/net.h                  | 1 -
 include/qemu/fifo8.h               | 1 -
 audio/audio.c                      | 1 +
 cpus.c                             | 1 +
 hw/acpi/cpu.c                      | 1 +
 hw/acpi/ich9.c                     | 1 +
 hw/acpi/memory_hotplug.c           | 1 +
 hw/acpi/pcihp.c                    | 1 +
 hw/acpi/piix4.c                    | 1 +
 hw/acpi/tco.c                      | 2 ++
 hw/acpi/vmgenid.c                  | 1 +
 hw/adc/stm32f2xx_adc.c             | 1 +
 hw/arm/armsse.c                    | 1 +
 hw/arm/highbank.c                  | 1 +
 hw/arm/integratorcp.c              | 1 +
 hw/arm/musicpal.c                  | 1 +
 hw/arm/pxa2xx.c                    | 1 +
 hw/arm/pxa2xx_gpio.c               | 1 +
 hw/arm/pxa2xx_pic.c                | 1 +
 hw/arm/smmuv3.c                    | 1 +
 hw/arm/spitz.c                     | 1 +
 hw/arm/stellaris.c                 | 1 +
 hw/arm/strongarm.c                 | 1 +
 hw/arm/versatilepb.c               | 1 +
 hw/arm/virt-acpi-build.c           | 1 +
 hw/arm/z2.c                        | 1 +
 hw/audio/ac97.c                    | 1 +
 hw/audio/cs4231.c                  | 1 +
 hw/audio/cs4231a.c                 | 1 +
 hw/audio/es1370.c                  | 1 +
 hw/audio/gus.c                     | 1 +
 hw/audio/hda-codec.c               | 1 +
 hw/audio/intel-hda.c               | 1 +
 hw/audio/lm4549.c                  | 1 +
 hw/audio/marvell_88w8618.c         | 1 +
 hw/audio/milkymist-ac97.c          | 1 +
 hw/audio/pcspk.c                   | 1 +
 hw/audio/pl041.c                   | 1 +
 hw/audio/sb16.c                    | 1 +
 hw/audio/wm8750.c                  | 1 +
 hw/block/ecc.c                     | 1 +
 hw/block/fdc.c                     | 1 +
 hw/block/m25p80.c                  | 1 +
 hw/block/nand.c                    | 1 +
 hw/block/nvme.c                    | 1 +
 hw/block/onenand.c                 | 1 +
 hw/block/pflash_cfi01.c            | 1 +
 hw/block/pflash_cfi02.c            | 1 +
 hw/char/bcm2835_aux.c              | 1 +
 hw/char/cadence_uart.c             | 1 +
 hw/char/cmsdk-apb-uart.c           | 1 +
 hw/char/digic-uart.c               | 1 +
 hw/char/escc.c                     | 1 +
 hw/char/exynos4210_uart.c          | 1 +
 hw/char/imx_serial.c               | 1 +
 hw/char/ipoctal232.c               | 1 +
 hw/char/lm32_juart.c               | 1 +
 hw/char/lm32_uart.c                | 1 +
 hw/char/milkymist-uart.c           | 1 +
 hw/char/nrf51_uart.c               | 1 +
 hw/char/parallel.c                 | 1 +
 hw/char/pl011.c                    | 1 +
 hw/char/sclpconsole-lm.c           | 1 +
 hw/char/sclpconsole.c              | 1 +
 hw/char/serial-isa.c               | 1 +
 hw/char/serial-pci-multi.c         | 1 +
 hw/char/serial-pci.c               | 1 +
 hw/char/serial.c                   | 1 +
 hw/char/spapr_vty.c                | 1 +
 hw/core/loader.c                   | 1 +
 hw/core/numa.c                     | 1 +
 hw/core/or-irq.c                   | 1 +
 hw/core/ptimer.c                   | 2 ++
 hw/core/qdev.c                     | 1 +
 hw/display/ads7846.c               | 1 +
 hw/display/bcm2835_fb.c            | 1 +
 hw/display/bochs-display.c         | 1 +
 hw/display/cg3.c                   | 1 +
 hw/display/cirrus_vga.c            | 1 +
 hw/display/dpcd.c                  | 1 +
 hw/display/exynos4210_fimd.c       | 1 +
 hw/display/g364fb.c                | 1 +
 hw/display/i2c-ddc.c               | 1 +
 hw/display/jazz_led.c              | 1 +
 hw/display/milkymist-tmu2.c        | 1 +
 hw/display/milkymist-vgafb.c       | 1 +
 hw/display/pl110.c                 | 1 +
 hw/display/pxa2xx_lcd.c            | 1 +
 hw/display/qxl.c                   | 1 +
 hw/display/sii9022.c               | 1 +
 hw/display/sm501.c                 | 1 +
 hw/display/ssd0303.c               | 1 +
 hw/display/ssd0323.c               | 1 +
 hw/display/tcx.c                   | 1 +
 hw/display/vga-isa-mm.c            | 2 ++
 hw/display/vga-pci.c               | 1 +
 hw/display/vga.c                   | 1 +
 hw/display/vmware_vga.c            | 1 +
 hw/display/xlnx_dp.c               | 1 +
 hw/dma/bcm2835_dma.c               | 1 +
 hw/dma/i82374.c                    | 1 +
 hw/dma/i8257.c                     | 1 +
 hw/dma/pl080.c                     | 1 +
 hw/dma/pl330.c                     | 1 +
 hw/dma/pxa2xx_dma.c                | 1 +
 hw/dma/rc4030.c                    | 1 +
 hw/dma/sparc32_dma.c               | 1 +
 hw/dma/xlnx-zdma.c                 | 1 +
 hw/dma/xlnx-zynq-devcfg.c          | 1 +
 hw/dma/xlnx_dpdma.c                | 1 +
 hw/gpio/bcm2835_gpio.c             | 1 +
 hw/gpio/gpio_key.c                 | 1 +
 hw/gpio/imx_gpio.c                 | 1 +
 hw/gpio/max7310.c                  | 1 +
 hw/gpio/mpc8xxx.c                  | 1 +
 hw/gpio/nrf51_gpio.c               | 1 +
 hw/gpio/pl061.c                    | 1 +
 hw/gpio/zaurus.c                   | 1 +
 hw/hppa/dino.c                     | 1 +
 hw/i2c/aspeed_i2c.c                | 1 +
 hw/i2c/core.c                      | 1 +
 hw/i2c/exynos4210_i2c.c            | 1 +
 hw/i2c/imx_i2c.c                   | 1 +
 hw/i2c/microbit_i2c.c              | 1 +
 hw/i2c/mpc_i2c.c                   | 1 +
 hw/i2c/pm_smbus.c                  | 2 ++
 hw/i2c/smbus_eeprom.c              | 1 +
 hw/i2c/smbus_ich9.c                | 1 +
 hw/i2c/smbus_slave.c               | 1 +
 hw/i386/acpi-build.c               | 1 +
 hw/i386/amd_iommu.c                | 2 ++
 hw/i386/intel_iommu.c              | 1 +
 hw/i386/kvm/clock.c                | 1 +
 hw/i386/kvmvapic.c                 | 1 +
 hw/i386/pc.c                       | 1 +
 hw/i386/vmmouse.c                  | 2 ++
 hw/i386/xen/xen_platform.c         | 1 +
 hw/i386/xen/xen_pvdevice.c         | 1 +
 hw/ide/ahci-allwinner.c            | 1 +
 hw/ide/ahci.c                      | 1 +
 hw/ide/cmd646.c                    | 1 +
 hw/ide/core.c                      | 1 +
 hw/ide/ich.c                       | 1 +
 hw/ide/isa.c                       | 1 +
 hw/ide/macio.c                     | 1 +
 hw/ide/microdrive.c                | 1 +
 hw/ide/mmio.c                      | 1 +
 hw/ide/pci.c                       | 1 +
 hw/ide/piix.c                      | 1 +
 hw/ide/via.c                       | 1 +
 hw/input/adb-kbd.c                 | 1 +
 hw/input/adb-mouse.c               | 1 +
 hw/input/adb.c                     | 1 +
 hw/input/hid.c                     | 2 ++
 hw/input/lm832x.c                  | 1 +
 hw/input/milkymist-softusb.c       | 1 +
 hw/input/pckbd.c                   | 1 +
 hw/input/pl050.c                   | 1 +
 hw/input/ps2.c                     | 1 +
 hw/input/pxa2xx_keypad.c           | 1 +
 hw/input/stellaris_input.c         | 1 +
 hw/input/tsc2005.c                 | 1 +
 hw/input/tsc210x.c                 | 1 +
 hw/intc/allwinner-a10-pic.c        | 1 +
 hw/intc/apic_common.c              | 1 +
 hw/intc/arm_gic_common.c           | 1 +
 hw/intc/arm_gicv3_common.c         | 1 +
 hw/intc/arm_gicv3_its_common.c     | 1 +
 hw/intc/armv7m_nvic.c              | 1 +
 hw/intc/aspeed_vic.c               | 1 +
 hw/intc/bcm2835_ic.c               | 1 +
 hw/intc/bcm2836_control.c          | 1 +
 hw/intc/exynos4210_combiner.c      | 1 +
 hw/intc/exynos4210_gic.c           | 1 +
 hw/intc/heathrow_pic.c             | 1 +
 hw/intc/i8259_common.c             | 2 ++
 hw/intc/imx_avic.c                 | 1 +
 hw/intc/imx_gpcv2.c                | 1 +
 hw/intc/ioapic_common.c            | 1 +
 hw/intc/lm32_pic.c                 | 1 +
 hw/intc/ompic.c                    | 1 +
 hw/intc/openpic.c                  | 1 +
 hw/intc/pl190.c                    | 1 +
 hw/intc/slavio_intctl.c            | 1 +
 hw/intc/spapr_xive.c               | 1 +
 hw/intc/xics.c                     | 1 +
 hw/intc/xive.c                     | 1 +
 hw/intc/xlnx-pmu-iomod-intc.c      | 1 +
 hw/intc/xlnx-zynqmp-ipi.c          | 1 +
 hw/ipack/ipack.c                   | 1 +
 hw/ipack/tpci200.c                 | 1 +
 hw/ipmi/ipmi_bmc_extern.c          | 1 +
 hw/ipmi/ipmi_bmc_sim.c             | 1 +
 hw/ipmi/isa_ipmi_bt.c              | 1 +
 hw/ipmi/isa_ipmi_kcs.c             | 1 +
 hw/isa/apm.c                       | 1 +
 hw/isa/i82378.c                    | 1 +
 hw/isa/lpc_ich9.c                  | 1 +
 hw/isa/pc87312.c                   | 1 +
 hw/isa/piix4.c                     | 1 +
 hw/isa/vt82c686.c                  | 1 +
 hw/mem/pc-dimm.c                   | 1 +
 hw/mips/gt64xxx_pci.c              | 1 +
 hw/misc/a9scu.c                    | 1 +
 hw/misc/arm_l2x0.c                 | 1 +
 hw/misc/arm_sysctl.c               | 1 +
 hw/misc/armsse-mhu.c               | 1 +
 hw/misc/aspeed_scu.c               | 1 +
 hw/misc/aspeed_sdmc.c              | 1 +
 hw/misc/aspeed_xdma.c              | 1 +
 hw/misc/bcm2835_mbox.c             | 1 +
 hw/misc/bcm2835_property.c         | 1 +
 hw/misc/bcm2835_rng.c              | 1 +
 hw/misc/eccmemctl.c                | 1 +
 hw/misc/exynos4210_clk.c           | 1 +
 hw/misc/exynos4210_pmu.c           | 1 +
 hw/misc/exynos4210_rng.c           | 1 +
 hw/misc/imx25_ccm.c                | 1 +
 hw/misc/imx31_ccm.c                | 1 +
 hw/misc/imx6_ccm.c                 | 1 +
 hw/misc/imx6_src.c                 | 1 +
 hw/misc/imx6ul_ccm.c               | 1 +
 hw/misc/imx7_ccm.c                 | 1 +
 hw/misc/iotkit-secctl.c            | 1 +
 hw/misc/iotkit-sysctl.c            | 1 +
 hw/misc/ivshmem.c                  | 1 +
 hw/misc/macio/cuda.c               | 1 +
 hw/misc/macio/gpio.c               | 1 +
 hw/misc/macio/mac_dbdma.c          | 1 +
 hw/misc/macio/macio.c              | 1 +
 hw/misc/macio/pmu.c                | 1 +
 hw/misc/max111x.c                  | 1 +
 hw/misc/milkymist-hpdmc.c          | 1 +
 hw/misc/milkymist-pfpu.c           | 1 +
 hw/misc/mips_cmgcr.c               | 1 +
 hw/misc/mips_cpc.c                 | 1 +
 hw/misc/mos6522.c                  | 1 +
 hw/misc/mps2-fpgaio.c              | 1 +
 hw/misc/mps2-scc.c                 | 1 +
 hw/misc/msf2-sysreg.c              | 1 +
 hw/misc/mst_fpga.c                 | 1 +
 hw/misc/nrf51_rng.c                | 1 +
 hw/misc/pca9552.c                  | 1 +
 hw/misc/slavio_misc.c              | 1 +
 hw/misc/tmp105.c                   | 1 +
 hw/misc/tmp421.c                   | 1 +
 hw/misc/tz-mpc.c                   | 1 +
 hw/misc/tz-msc.c                   | 1 +
 hw/misc/tz-ppc.c                   | 1 +
 hw/misc/vmcoreinfo.c               | 1 +
 hw/misc/zynq-xadc.c                | 1 +
 hw/misc/zynq_slcr.c                | 1 +
 hw/net/allwinner_emac.c            | 1 +
 hw/net/cadence_gem.c               | 1 +
 hw/net/can/can_kvaser_pci.c        | 1 +
 hw/net/can/can_mioe3680_pci.c      | 1 +
 hw/net/can/can_pcm3680_pci.c       | 1 +
 hw/net/can/can_sja1000.c           | 1 +
 hw/net/dp8393x.c                   | 1 +
 hw/net/e1000.c                     | 1 +
 hw/net/e1000e.c                    | 1 +
 hw/net/eepro100.c                  | 1 +
 hw/net/ftgmac100.c                 | 1 +
 hw/net/imx_fec.c                   | 1 +
 hw/net/lan9118.c                   | 1 +
 hw/net/lance.c                     | 1 +
 hw/net/milkymist-minimac2.c        | 1 +
 hw/net/mipsnet.c                   | 1 +
 hw/net/ne2000-isa.c                | 1 +
 hw/net/ne2000-pci.c                | 1 +
 hw/net/ne2000.c                    | 1 +
 hw/net/pcnet-pci.c                 | 1 +
 hw/net/pcnet.c                     | 1 +
 hw/net/rocker/rocker.c             | 1 +
 hw/net/rtl8139.c                   | 1 +
 hw/net/smc91c111.c                 | 1 +
 hw/net/spapr_llan.c                | 1 +
 hw/net/stellaris_enet.c            | 1 +
 hw/net/sungem.c                    | 1 +
 hw/net/sunhme.c                    | 1 +
 hw/net/vmxnet3.c                   | 1 +
 hw/net/xgmac.c                     | 1 +
 hw/nvram/ds1225y.c                 | 1 +
 hw/nvram/eeprom93xx.c              | 1 +
 hw/nvram/fw_cfg.c                  | 1 +
 hw/nvram/mac_nvram.c               | 1 +
 hw/nvram/nrf51_nvm.c               | 1 +
 hw/nvram/spapr_nvram.c             | 1 +
 hw/openrisc/cputimer.c             | 1 +
 hw/pci-bridge/gen_pcie_root_port.c | 1 +
 hw/pci-bridge/i82801b11.c          | 1 +
 hw/pci-bridge/ioh3420.c            | 1 +
 hw/pci-bridge/xio3130_downstream.c | 1 +
 hw/pci-bridge/xio3130_upstream.c   | 1 +
 hw/pci-host/bonito.c               | 1 +
 hw/pci-host/designware.c           | 1 +
 hw/pci-host/gpex.c                 | 1 +
 hw/pci-host/piix.c                 | 1 +
 hw/pci-host/ppce500.c              | 1 +
 hw/pci-host/prep.c                 | 1 +
 hw/pci-host/q35.c                  | 1 +
 hw/pci-host/versatile.c            | 1 +
 hw/pci/msix.c                      | 1 +
 hw/pci/pci.c                       | 1 +
 hw/pci/pcie_aer.c                  | 1 +
 hw/ppc/ppc.c                       | 1 +
 hw/ppc/ppc4xx_pci.c                | 1 +
 hw/ppc/prep_systemio.c             | 1 +
 hw/ppc/rs6000_mc.c                 | 1 +
 hw/ppc/spapr_caps.c                | 1 +
 hw/ppc/spapr_cpu_core.c            | 1 +
 hw/ppc/spapr_drc.c                 | 1 +
 hw/ppc/spapr_iommu.c               | 1 +
 hw/ppc/spapr_ovec.c                | 1 +
 hw/ppc/spapr_pci.c                 | 1 +
 hw/ppc/spapr_rtc.c                 | 1 +
 hw/ppc/spapr_vio.c                 | 1 +
 hw/riscv/sifive_gpio.c             | 1 +
 hw/s390x/event-facility.c          | 1 +
 hw/s390x/sclpquiesce.c             | 1 +
 hw/scsi/esp-pci.c                  | 1 +
 hw/scsi/esp.c                      | 1 +
 hw/scsi/lsi53c895a.c               | 1 +
 hw/scsi/megasas.c                  | 1 +
 hw/scsi/mptsas.c                   | 1 +
 hw/scsi/scsi-bus.c                 | 1 +
 hw/scsi/scsi-disk.c                | 1 +
 hw/scsi/spapr_vscsi.c              | 1 +
 hw/scsi/vmw_pvscsi.c               | 1 +
 hw/sd/bcm2835_sdhost.c             | 1 +
 hw/sd/milkymist-memcard.c          | 1 +
 hw/sd/pl181.c                      | 1 +
 hw/sd/pxa2xx_mmci.c                | 1 +
 hw/sd/sd.c                         | 1 +
 hw/sd/sdhci.c                      | 1 +
 hw/sd/ssi-sd.c                     | 1 +
 hw/sparc/sun4m.c                   | 1 +
 hw/sparc/sun4m_iommu.c             | 1 +
 hw/sparc64/sun4u.c                 | 2 ++
 hw/ssi/aspeed_smc.c                | 1 +
 hw/ssi/imx_spi.c                   | 1 +
 hw/ssi/mss-spi.c                   | 1 +
 hw/ssi/pl022.c                     | 1 +
 hw/ssi/ssi.c                       | 1 +
 hw/ssi/stm32f2xx_spi.c             | 1 +
 hw/ssi/xilinx_spi.c                | 1 +
 hw/ssi/xilinx_spips.c              | 1 +
 hw/timer/a9gtimer.c                | 1 +
 hw/timer/allwinner-a10-pit.c       | 1 +
 hw/timer/arm_mptimer.c             | 1 +
 hw/timer/arm_timer.c               | 1 +
 hw/timer/armv7m_systick.c          | 1 +
 hw/timer/aspeed_rtc.c              | 1 +
 hw/timer/aspeed_timer.c            | 1 +
 hw/timer/cadence_ttc.c             | 1 +
 hw/timer/cmsdk-apb-dualtimer.c     | 1 +
 hw/timer/cmsdk-apb-timer.c         | 1 +
 hw/timer/digic-timer.c             | 1 +
 hw/timer/ds1338.c                  | 1 +
 hw/timer/exynos4210_mct.c          | 1 +
 hw/timer/exynos4210_pwm.c          | 1 +
 hw/timer/exynos4210_rtc.c          | 1 +
 hw/timer/hpet.c                    | 1 +
 hw/timer/i8254_common.c            | 1 +
 hw/timer/imx_epit.c                | 1 +
 hw/timer/imx_gpt.c                 | 1 +
 hw/timer/lm32_timer.c              | 1 +
 hw/timer/m48t59.c                  | 1 +
 hw/timer/mc146818rtc.c             | 1 +
 hw/timer/milkymist-sysctl.c        | 1 +
 hw/timer/mss-timer.c               | 1 +
 hw/timer/nrf51_timer.c             | 1 +
 hw/timer/pl031.c                   | 1 +
 hw/timer/pxa2xx_timer.c            | 1 +
 hw/timer/slavio_timer.c            | 1 +
 hw/timer/stm32f2xx_timer.c         | 1 +
 hw/timer/twl92230.c                | 1 +
 hw/timer/xlnx-zynqmp-rtc.c         | 1 +
 hw/tpm/tpm_emulator.c              | 1 +
 hw/tpm/tpm_tis.c                   | 1 +
 hw/usb/bus.c                       | 1 +
 hw/usb/ccid-card-passthru.c        | 1 +
 hw/usb/dev-audio.c                 | 1 +
 hw/usb/dev-bluetooth.c             | 1 +
 hw/usb/dev-hid.c                   | 1 +
 hw/usb/dev-hub.c                   | 1 +
 hw/usb/dev-mtp.c                   | 1 +
 hw/usb/dev-network.c               | 1 +
 hw/usb/dev-serial.c                | 1 +
 hw/usb/dev-smartcard-reader.c      | 1 +
 hw/usb/dev-storage.c               | 1 +
 hw/usb/dev-uas.c                   | 1 +
 hw/usb/dev-wacom.c                 | 1 +
 hw/usb/hcd-ehci-pci.c              | 1 +
 hw/usb/hcd-ehci-sysbus.c           | 1 +
 hw/usb/hcd-ehci.c                  | 1 +
 hw/usb/hcd-ohci-pci.c              | 1 +
 hw/usb/hcd-ohci.c                  | 1 +
 hw/usb/hcd-uhci.c                  | 1 +
 hw/usb/hcd-xhci.c                  | 1 +
 hw/usb/host-libusb.c               | 1 +
 hw/usb/redirect.c                  | 1 +
 hw/vfio/amd-xgbe.c                 | 1 +
 hw/vfio/ap.c                       | 1 +
 hw/vfio/calxeda-xgmac.c            | 1 +
 hw/vfio/pci.c                      | 1 +
 hw/vfio/platform.c                 | 1 +
 hw/watchdog/cmsdk-apb-watchdog.c   | 1 +
 hw/watchdog/wdt_aspeed.c           | 1 +
 hw/watchdog/wdt_diag288.c          | 1 +
 hw/watchdog/wdt_i6300esb.c         | 1 +
 hw/watchdog/wdt_ib700.c            | 1 +
 hw/xtensa/xtfpga.c                 | 1 +
 migration/savevm.c                 | 1 +
 target/s390x/machine.c             | 1 +
 util/fifo8.c                       | 1 +
 425 files changed, 426 insertions(+), 8 deletions(-)

diff --git a/include/hw/acpi/tco.h b/include/hw/acpi/tco.h
index 726f840cce..a1e0da8213 100644
--- a/include/hw/acpi/tco.h
+++ b/include/hw/acpi/tco.h
@@ -11,7 +11,6 @@
 #define HW_ACPI_TCO_H
 
 #include "exec/memory.h"
-#include "migration/vmstate.h"
 
 /* As per ICH9 spec, the internal timer has an error of ~0.6s on every tick */
 #define TCO_TICK_NSEC 600000000LL
diff --git a/include/hw/block/flash.h b/include/hw/block/flash.h
index 83a75f3170..1acaf7de80 100644
--- a/include/hw/block/flash.h
+++ b/include/hw/block/flash.h
@@ -4,7 +4,6 @@
 /* NOR flash devices */
 
 #include "exec/memory.h"
-#include "migration/vmstate.h"
 
 /* pflash_cfi01.c */
 
diff --git a/include/hw/hw.h b/include/hw/hw.h
index 86ff26b712..e547008b17 100644
--- a/include/hw/hw.h
+++ b/include/hw/hw.h
@@ -8,7 +8,6 @@
 
 #include "qom/object.h"
 #include "exec/memory.h"
-#include "migration/vmstate.h"
 
 void QEMU_NORETURN hw_error(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
 
diff --git a/include/hw/input/hid.h b/include/hw/input/hid.h
index 2127c7ce45..6a9d7bf466 100644
--- a/include/hw/input/hid.h
+++ b/include/hw/input/hid.h
@@ -1,7 +1,6 @@
 #ifndef QEMU_HID_H
 #define QEMU_HID_H
 
-#include "migration/vmstate.h"
 #include "ui/input.h"
 
 #define HID_MOUSE     1
diff --git a/include/hw/pci/shpc.h b/include/hw/pci/shpc.h
index bd8204f64e..d5683b7399 100644
--- a/include/hw/pci/shpc.h
+++ b/include/hw/pci/shpc.h
@@ -4,6 +4,7 @@
 #include "exec/memory.h"
 #include "hw/hotplug.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 
 struct SHPCDevice {
     /* Capability offset in device's config space */
diff --git a/include/hw/ppc/spapr_ovec.h b/include/hw/ppc/spapr_ovec.h
index 5de5ecf5de..7891e9caac 100644
--- a/include/hw/ppc/spapr_ovec.h
+++ b/include/hw/ppc/spapr_ovec.h
@@ -38,7 +38,6 @@
 #define SPAPR_OVEC_H
 
 #include "cpu.h"
-#include "migration/vmstate.h"
 
 typedef struct SpaprOptionVector SpaprOptionVector;
 
diff --git a/include/hw/ptimer.h b/include/hw/ptimer.h
index 2b866902aa..9c77055229 100644
--- a/include/hw/ptimer.h
+++ b/include/hw/ptimer.h
@@ -9,7 +9,6 @@
 #define PTIMER_H
 
 #include "qemu/timer.h"
-#include "migration/vmstate.h"
 
 /* The ptimer API implements a simple periodic countdown timer.
  * The countdown timer has a value (which can be read and written via
diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
index b189788cb2..5da749e2b0 100644
--- a/include/hw/virtio/virtio.h
+++ b/include/hw/virtio/virtio.h
@@ -18,6 +18,7 @@
 #include "net/net.h"
 #include "hw/qdev.h"
 #include "sysemu/sysemu.h"
+#include "migration/vmstate.h"
 #include "qemu/event_notifier.h"
 #include "standard-headers/linux/virtio_config.h"
 #include "standard-headers/linux/virtio_ring.h"
diff --git a/include/migration/cpu.h b/include/migration/cpu.h
index 2a22470d0d..65abe3c8cc 100644
--- a/include/migration/cpu.h
+++ b/include/migration/cpu.h
@@ -5,6 +5,7 @@
 
 #include "exec/cpu-defs.h"
 #include "migration/qemu-file-types.h"
+#include "migration/vmstate.h"
 
 #if TARGET_LONG_BITS == 64
 #define qemu_put_betl qemu_put_be64
diff --git a/include/net/net.h b/include/net/net.h
index acf0451fc4..e175ba9677 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -4,7 +4,6 @@
 #include "qemu/queue.h"
 #include "qapi/qapi-types-net.h"
 #include "net/queue.h"
-#include "migration/vmstate.h"
 
 #define MAC_FMT "%02X:%02X:%02X:%02X:%02X:%02X"
 #define MAC_ARG(x) ((uint8_t *)(x))[0], ((uint8_t *)(x))[1], \
diff --git a/include/qemu/fifo8.h b/include/qemu/fifo8.h
index 24b364462d..489c354291 100644
--- a/include/qemu/fifo8.h
+++ b/include/qemu/fifo8.h
@@ -1,7 +1,6 @@
 #ifndef QEMU_FIFO8_H
 #define QEMU_FIFO8_H
 
-#include "migration/vmstate.h"
 
 typedef struct {
     /* All fields are private */
diff --git a/audio/audio.c b/audio/audio.c
index 05adf7ffeb..cf65ae49f4 100644
--- a/audio/audio.c
+++ b/audio/audio.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "audio.h"
+#include "migration/vmstate.h"
 #include "monitor/monitor.h"
 #include "qemu/timer.h"
 #include "qapi/error.h"
diff --git a/cpus.c b/cpus.c
index 927a00aa90..4ebdacdd44 100644
--- a/cpus.c
+++ b/cpus.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include "qemu-common.h"
 #include "qemu/config-file.h"
+#include "migration/vmstate.h"
 #include "monitor/monitor.h"
 #include "qapi/error.h"
 #include "qapi/qapi-commands-misc.h"
diff --git a/hw/acpi/cpu.c b/hw/acpi/cpu.c
index 7a90c8f82d..87f30a31d7 100644
--- a/hw/acpi/cpu.c
+++ b/hw/acpi/cpu.c
@@ -1,5 +1,6 @@
 #include "qemu/osdep.h"
 #include "hw/boards.h"
+#include "migration/vmstate.h"
 #include "hw/acpi/cpu.h"
 #include "qapi/error.h"
 #include "qapi/qapi-events-misc.h"
diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c
index b4d987c811..88eb7dbab1 100644
--- a/hw/acpi/ich9.c
+++ b/hw/acpi/ich9.c
@@ -30,6 +30,7 @@
 #include "qapi/visitor.h"
 #include "hw/i386/pc.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "qemu/timer.h"
 #include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/acpi/memory_hotplug.c b/hw/acpi/memory_hotplug.c
index 297812d5f7..9483d66e86 100644
--- a/hw/acpi/memory_hotplug.c
+++ b/hw/acpi/memory_hotplug.c
@@ -4,6 +4,7 @@
 #include "hw/mem/pc-dimm.h"
 #include "hw/boards.h"
 #include "hw/qdev-core.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 #include "qapi/error.h"
 #include "qapi/qapi-events-misc.h"
diff --git a/hw/acpi/pcihp.c b/hw/acpi/pcihp.c
index 613406d09b..912ff6dd5c 100644
--- a/hw/acpi/pcihp.c
+++ b/hw/acpi/pcihp.c
@@ -35,6 +35,7 @@
 #include "sysemu/sysemu.h"
 #include "exec/address-spaces.h"
 #include "hw/pci/pci_bus.h"
+#include "migration/vmstate.h"
 #include "qapi/error.h"
 #include "qom/qom-qobject.h"
 #include "trace.h"
diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c
index 8f9a7ba2ab..1896dbbfb9 100644
--- a/hw/acpi/piix4.c
+++ b/hw/acpi/piix4.c
@@ -42,6 +42,7 @@
 #include "hw/acpi/acpi_dev_interface.h"
 #include "hw/xen/xen.h"
 #include "migration/qemu-file-types.h"
+#include "migration/vmstate.h"
 #include "qom/cpu.h"
 #include "trace.h"
 
diff --git a/hw/acpi/tco.c b/hw/acpi/tco.c
index acfb65e8f2..fb9052dbca 100644
--- a/hw/acpi/tco.c
+++ b/hw/acpi/tco.c
@@ -6,9 +6,11 @@
  * This work is licensed under the terms of the GNU GPL, version 2 or later.
  * See the COPYING file in the top-level directory.
  */
+
 #include "qemu/osdep.h"
 #include "sysemu/watchdog.h"
 #include "hw/i386/ich9.h"
+#include "migration/vmstate.h"
 
 #include "hw/acpi/tco.h"
 #include "trace.h"
diff --git a/hw/acpi/vmgenid.c b/hw/acpi/vmgenid.c
index ed92ccc4b8..1e38e21cb7 100644
--- a/hw/acpi/vmgenid.c
+++ b/hw/acpi/vmgenid.c
@@ -18,6 +18,7 @@
 #include "hw/acpi/aml-build.h"
 #include "hw/acpi/vmgenid.h"
 #include "hw/nvram/fw_cfg.h"
+#include "migration/vmstate.h"
 #include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 
diff --git a/hw/adc/stm32f2xx_adc.c b/hw/adc/stm32f2xx_adc.c
index c93b60e22e..9684653e5e 100644
--- a/hw/adc/stm32f2xx_adc.c
+++ b/hw/adc/stm32f2xx_adc.c
@@ -24,6 +24,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/hw.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c
index 85cfa414eb..e5263aa33d 100644
--- a/hw/arm/armsse.c
+++ b/hw/arm/armsse.c
@@ -16,6 +16,7 @@
 #include "qapi/error.h"
 #include "trace.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/registerfields.h"
 #include "hw/arm/armsse.h"
 #include "hw/arm/boot.h"
diff --git a/hw/arm/highbank.c b/hw/arm/highbank.c
index def0f1ce6a..ca4c71f8a2 100644
--- a/hw/arm/highbank.c
+++ b/hw/arm/highbank.c
@@ -21,6 +21,7 @@
 #include "qemu-common.h"
 #include "qapi/error.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/arm/boot.h"
 #include "hw/loader.h"
 #include "net/net.h"
diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c
index d6025684f4..f8fbe402db 100644
--- a/hw/arm/integratorcp.c
+++ b/hw/arm/integratorcp.c
@@ -11,6 +11,7 @@
 #include "qapi/error.h"
 #include "cpu.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/boards.h"
 #include "hw/arm/boot.h"
 #include "hw/misc/arm_integrator_debug.h"
diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c
index 848e49f459..72e522a629 100644
--- a/hw/arm/musicpal.c
+++ b/hw/arm/musicpal.c
@@ -13,6 +13,7 @@
 #include "qapi/error.h"
 #include "cpu.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/arm/boot.h"
 #include "net/net.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c
index ab3fbd7b64..4e99c30e11 100644
--- a/hw/arm/pxa2xx.c
+++ b/hw/arm/pxa2xx.c
@@ -14,6 +14,7 @@
 #include "qapi/error.h"
 #include "cpu.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/arm/pxa.h"
 #include "sysemu/sysemu.h"
 #include "hw/char/serial.h"
diff --git a/hw/arm/pxa2xx_gpio.c b/hw/arm/pxa2xx_gpio.c
index 1b1fc499dc..aa2c89dcf9 100644
--- a/hw/arm/pxa2xx_gpio.c
+++ b/hw/arm/pxa2xx_gpio.c
@@ -12,6 +12,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/arm/pxa.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/arm/pxa2xx_pic.c b/hw/arm/pxa2xx_pic.c
index 2f4b461562..c8bd497e99 100644
--- a/hw/arm/pxa2xx_pic.c
+++ b/hw/arm/pxa2xx_pic.c
@@ -14,6 +14,7 @@
 #include "hw/hw.h"
 #include "hw/arm/pxa.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 
 #define ICIP	0x00	/* Interrupt Controller IRQ Pending register */
 #define ICMR	0x04	/* Interrupt Controller Mask register */
diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c
index ccca60720e..0634a398d2 100644
--- a/hw/arm/smmuv3.c
+++ b/hw/arm/smmuv3.c
@@ -21,6 +21,7 @@
 #include "hw/irq.h"
 #include "sysemu/sysemu.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/qdev-core.h"
 #include "hw/pci/pci.h"
 #include "exec/address-spaces.h"
diff --git a/hw/arm/spitz.c b/hw/arm/spitz.c
index b90431ffea..003929b3e0 100644
--- a/hw/arm/spitz.c
+++ b/hw/arm/spitz.c
@@ -28,6 +28,7 @@
 #include "audio/audio.h"
 #include "hw/boards.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "exec/address-spaces.h"
 #include "cpu.h"
 
diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c
index 088ae2dbd7..9feb403f1e 100644
--- a/hw/arm/stellaris.c
+++ b/hw/arm/stellaris.c
@@ -24,6 +24,7 @@
 #include "hw/input/gamepad.h"
 #include "hw/irq.h"
 #include "hw/watchdog/cmsdk-apb-watchdog.h"
+#include "migration/vmstate.h"
 #include "hw/misc/unimp.h"
 #include "cpu.h"
 
diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c
index 2e016f4b77..ca377df9e3 100644
--- a/hw/arm/strongarm.c
+++ b/hw/arm/strongarm.c
@@ -33,6 +33,7 @@
 #include "hw/boards.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "strongarm.h"
 #include "qemu/error-report.h"
 #include "hw/arm/boot.h"
diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c
index bc922345a6..e25561705f 100644
--- a/hw/arm/versatilepb.c
+++ b/hw/arm/versatilepb.c
@@ -11,6 +11,7 @@
 #include "qapi/error.h"
 #include "cpu.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/arm/boot.h"
 #include "hw/net/smc91c111.h"
 #include "net/net.h"
diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
index ad54d65ea0..4f85eb575c 100644
--- a/hw/arm/virt-acpi-build.c
+++ b/hw/arm/virt-acpi-build.c
@@ -46,6 +46,7 @@
 #include "sysemu/numa.h"
 #include "sysemu/reset.h"
 #include "kvm_arm.h"
+#include "migration/vmstate.h"
 
 #define ARM_SPI_BASE 32
 #define ACPI_POWER_BUTTON_DEVICE "PWRB"
diff --git a/hw/arm/z2.c b/hw/arm/z2.c
index 366d46ff5f..810922d74e 100644
--- a/hw/arm/z2.c
+++ b/hw/arm/z2.c
@@ -18,6 +18,7 @@
 #include "hw/i2c/i2c.h"
 #include "hw/irq.h"
 #include "hw/ssi/ssi.h"
+#include "migration/vmstate.h"
 #include "hw/boards.h"
 #include "sysemu/sysemu.h"
 #include "hw/block/flash.h"
diff --git a/hw/audio/ac97.c b/hw/audio/ac97.c
index fb98da2678..26ac84b388 100644
--- a/hw/audio/ac97.c
+++ b/hw/audio/ac97.c
@@ -22,6 +22,7 @@
 #include "hw/audio/soundhw.h"
 #include "audio/audio.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "sysemu/dma.h"
 
diff --git a/hw/audio/cs4231.c b/hw/audio/cs4231.c
index 8372299ebb..b5d3e895ce 100644
--- a/hw/audio/cs4231.c
+++ b/hw/audio/cs4231.c
@@ -24,6 +24,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "trace.h"
 
diff --git a/hw/audio/cs4231a.c b/hw/audio/cs4231a.c
index 9eeab137c7..f7a39c0af4 100644
--- a/hw/audio/cs4231a.c
+++ b/hw/audio/cs4231a.c
@@ -29,6 +29,7 @@
 #include "hw/irq.h"
 #include "hw/isa/isa.h"
 #include "hw/qdev.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "qemu/timer.h"
 #include "qapi/error.h"
diff --git a/hw/audio/es1370.c b/hw/audio/es1370.c
index 260c142b70..0289f771c1 100644
--- a/hw/audio/es1370.c
+++ b/hw/audio/es1370.c
@@ -31,6 +31,7 @@
 #include "hw/audio/soundhw.h"
 #include "audio/audio.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "sysemu/dma.h"
 
diff --git a/hw/audio/gus.c b/hw/audio/gus.c
index 61230147ce..1a78cc47cd 100644
--- a/hw/audio/gus.c
+++ b/hw/audio/gus.c
@@ -30,6 +30,7 @@
 #include "audio/audio.h"
 #include "hw/irq.h"
 #include "hw/isa/isa.h"
+#include "migration/vmstate.h"
 #include "gusemu.h"
 #include "gustate.h"
 
diff --git a/hw/audio/hda-codec.c b/hw/audio/hda-codec.c
index 84639b5424..4f6fbb8b13 100644
--- a/hw/audio/hda-codec.c
+++ b/hw/audio/hda-codec.c
@@ -21,6 +21,7 @@
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
 #include "intel-hda.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "intel-hda-defs.h"
 #include "audio/audio.h"
diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c
index b78baac295..e6f150bb0d 100644
--- a/hw/audio/intel-hda.c
+++ b/hw/audio/intel-hda.c
@@ -27,6 +27,7 @@
 #include "qemu/module.h"
 #include "hw/audio/soundhw.h"
 #include "intel-hda.h"
+#include "migration/vmstate.h"
 #include "intel-hda-defs.h"
 #include "sysemu/dma.h"
 #include "qapi/error.h"
diff --git a/hw/audio/lm4549.c b/hw/audio/lm4549.c
index af8b22b541..32b1481b56 100644
--- a/hw/audio/lm4549.c
+++ b/hw/audio/lm4549.c
@@ -17,6 +17,7 @@
 #include "hw/hw.h"
 #include "audio/audio.h"
 #include "lm4549.h"
+#include "migration/vmstate.h"
 
 #if 0
 #define LM4549_DEBUG  1
diff --git a/hw/audio/marvell_88w8618.c b/hw/audio/marvell_88w8618.c
index 167b478ec6..6345bc1d5c 100644
--- a/hw/audio/marvell_88w8618.c
+++ b/hw/audio/marvell_88w8618.c
@@ -12,6 +12,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/audio/wm8750.h"
diff --git a/hw/audio/milkymist-ac97.c b/hw/audio/milkymist-ac97.c
index 3ba382ee4d..890a5fe89e 100644
--- a/hw/audio/milkymist-ac97.c
+++ b/hw/audio/milkymist-ac97.c
@@ -25,6 +25,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 #include "audio/audio.h"
 #include "qemu/error-report.h"
diff --git a/hw/audio/pcspk.c b/hw/audio/pcspk.c
index a7b3ab0c2b..9039c9786d 100644
--- a/hw/audio/pcspk.c
+++ b/hw/audio/pcspk.c
@@ -30,6 +30,7 @@
 #include "qemu/module.h"
 #include "qemu/timer.h"
 #include "hw/timer/i8254.h"
+#include "migration/vmstate.h"
 #include "hw/audio/pcspk.h"
 #include "qapi/error.h"
 
diff --git a/hw/audio/pl041.c b/hw/audio/pl041.c
index 47f0dfff18..3c371397de 100644
--- a/hw/audio/pl041.c
+++ b/hw/audio/pl041.c
@@ -28,6 +28,7 @@
 
 #include "pl041.h"
 #include "lm4549.h"
+#include "migration/vmstate.h"
 
 #if 0
 #define PL041_DEBUG_LEVEL 1
diff --git a/hw/audio/sb16.c b/hw/audio/sb16.c
index ba5a5dd022..599194779d 100644
--- a/hw/audio/sb16.c
+++ b/hw/audio/sb16.c
@@ -29,6 +29,7 @@
 #include "hw/irq.h"
 #include "hw/isa/isa.h"
 #include "hw/qdev.h"
+#include "migration/vmstate.h"
 #include "qemu/timer.h"
 #include "qemu/host-utils.h"
 #include "qemu/log.h"
diff --git a/hw/audio/wm8750.c b/hw/audio/wm8750.c
index 81f83eea88..9f6df5d59c 100644
--- a/hw/audio/wm8750.c
+++ b/hw/audio/wm8750.c
@@ -9,6 +9,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/i2c/i2c.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "hw/audio/wm8750.h"
 #include "audio/audio.h"
diff --git a/hw/block/ecc.c b/hw/block/ecc.c
index 48311d2609..f846ab3e01 100644
--- a/hw/block/ecc.c
+++ b/hw/block/ecc.c
@@ -13,6 +13,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/hw.h"
+#include "migration/vmstate.h"
 #include "hw/block/flash.h"
 
 /*
diff --git a/hw/block/fdc.c b/hw/block/fdc.c
index 91d5f56cec..88feb0f451 100644
--- a/hw/block/fdc.c
+++ b/hw/block/fdc.c
@@ -36,6 +36,7 @@
 #include "hw/irq.h"
 #include "hw/isa/isa.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/block/block.h"
 #include "sysemu/block-backend.h"
 #include "sysemu/blockdev.h"
diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c
index dd87affcf5..9d395169b2 100644
--- a/hw/block/m25p80.c
+++ b/hw/block/m25p80.c
@@ -26,6 +26,7 @@
 #include "hw/hw.h"
 #include "sysemu/block-backend.h"
 #include "hw/ssi/ssi.h"
+#include "migration/vmstate.h"
 #include "qemu/bitops.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/block/nand.c b/hw/block/nand.c
index 0a2736b50e..4a0d4677c3 100644
--- a/hw/block/nand.c
+++ b/hw/block/nand.c
@@ -23,6 +23,7 @@
 #include "hw/block/flash.h"
 #include "sysemu/block-backend.h"
 #include "hw/qdev.h"
+#include "migration/vmstate.h"
 #include "qapi/error.h"
 #include "qemu/error-report.h"
 #include "qemu/module.h"
diff --git a/hw/block/nvme.c b/hw/block/nvme.c
index 36d6a8bb3a..079a8ffe80 100644
--- a/hw/block/nvme.c
+++ b/hw/block/nvme.c
@@ -31,6 +31,7 @@
 #include "hw/hw.h"
 #include "hw/pci/msix.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "sysemu/sysemu.h"
 #include "qapi/error.h"
 #include "qapi/visitor.h"
diff --git a/hw/block/onenand.c b/hw/block/onenand.c
index b3644f7e89..18123f0499 100644
--- a/hw/block/onenand.c
+++ b/hw/block/onenand.c
@@ -26,6 +26,7 @@
 #include "sysemu/block-backend.h"
 #include "exec/memory.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/error-report.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c
index a1ec1faae5..2d6f260491 100644
--- a/hw/block/pflash_cfi01.c
+++ b/hw/block/pflash_cfi01.c
@@ -50,6 +50,7 @@
 #include "qemu/module.h"
 #include "qemu/option.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "sysemu/blockdev.h"
 #include "sysemu/sysemu.h"
 #include "trace.h"
diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c
index 42886f6af5..b7070cd8ec 100644
--- a/hw/block/pflash_cfi02.c
+++ b/hw/block/pflash_cfi02.c
@@ -43,6 +43,7 @@
 #include "qemu/host-utils.h"
 #include "qemu/module.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 
 #define PFLASH_DEBUG false
diff --git a/hw/char/bcm2835_aux.c b/hw/char/bcm2835_aux.c
index 8395c79520..45fc34d92d 100644
--- a/hw/char/bcm2835_aux.c
+++ b/hw/char/bcm2835_aux.c
@@ -23,6 +23,7 @@
 #include "qemu/osdep.h"
 #include "hw/char/bcm2835_aux.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c
index 6b9eb140c7..0e315b2376 100644
--- a/hw/char/cadence_uart.c
+++ b/hw/char/cadence_uart.c
@@ -23,6 +23,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "chardev/char-fe.h"
 #include "chardev/char-serial.h"
 #include "qemu/timer.h"
diff --git a/hw/char/cmsdk-apb-uart.c b/hw/char/cmsdk-apb-uart.c
index dd96a3302e..9e1aa43bd3 100644
--- a/hw/char/cmsdk-apb-uart.c
+++ b/hw/char/cmsdk-apb-uart.c
@@ -21,6 +21,7 @@
 #include "qapi/error.h"
 #include "trace.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/registerfields.h"
 #include "chardev/char-fe.h"
 #include "chardev/char-serial.h"
diff --git a/hw/char/digic-uart.c b/hw/char/digic-uart.c
index e4ac8435c8..79ea92249c 100644
--- a/hw/char/digic-uart.c
+++ b/hw/char/digic-uart.c
@@ -29,6 +29,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "chardev/char-fe.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/char/escc.c b/hw/char/escc.c
index 678d494d39..404002b899 100644
--- a/hw/char/escc.c
+++ b/hw/char/escc.c
@@ -26,6 +26,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "hw/char/escc.h"
 #include "ui/console.h"
diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c
index dabcd07415..9bd826b33d 100644
--- a/hw/char/exynos4210_uart.c
+++ b/hw/char/exynos4210_uart.c
@@ -21,6 +21,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/char/imx_serial.c b/hw/char/imx_serial.c
index f79e47d4ee..bf3f07d760 100644
--- a/hw/char/imx_serial.c
+++ b/hw/char/imx_serial.c
@@ -21,6 +21,7 @@
 #include "qemu/osdep.h"
 #include "hw/char/imx_serial.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "sysemu/sysemu.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/char/ipoctal232.c b/hw/char/ipoctal232.c
index 7674e2d7b6..1171dc20cf 100644
--- a/hw/char/ipoctal232.c
+++ b/hw/char/ipoctal232.c
@@ -11,6 +11,7 @@
 #include "qemu/osdep.h"
 #include "hw/ipack/ipack.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "qemu/bitops.h"
 #include "qemu/module.h"
 #include "chardev/char-fe.h"
diff --git a/hw/char/lm32_juart.c b/hw/char/lm32_juart.c
index 41a3ec81e3..f4488fa736 100644
--- a/hw/char/lm32_juart.c
+++ b/hw/char/lm32_juart.c
@@ -20,6 +20,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "trace.h"
 #include "chardev/char-fe.h"
diff --git a/hw/char/lm32_uart.c b/hw/char/lm32_uart.c
index 377032567a..4b3215fe96 100644
--- a/hw/char/lm32_uart.c
+++ b/hw/char/lm32_uart.c
@@ -26,6 +26,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 #include "chardev/char-fe.h"
 #include "qemu/error-report.h"
diff --git a/hw/char/milkymist-uart.c b/hw/char/milkymist-uart.c
index d4641b5f44..53c1ca789d 100644
--- a/hw/char/milkymist-uart.c
+++ b/hw/char/milkymist-uart.c
@@ -25,6 +25,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 #include "chardev/char-fe.h"
 #include "qemu/error-report.h"
diff --git a/hw/char/nrf51_uart.c b/hw/char/nrf51_uart.c
index bbe766d3c6..bb886f12aa 100644
--- a/hw/char/nrf51_uart.c
+++ b/hw/char/nrf51_uart.c
@@ -17,6 +17,7 @@
 #include "qemu/module.h"
 #include "hw/char/nrf51_uart.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 
 static void nrf51_uart_update_irq(NRF51UARTState *s)
diff --git a/hw/char/parallel.c b/hw/char/parallel.c
index ea8ab35e59..1798fd0c44 100644
--- a/hw/char/parallel.c
+++ b/hw/char/parallel.c
@@ -31,6 +31,7 @@
 #include "chardev/char-fe.h"
 #include "hw/irq.h"
 #include "hw/isa/isa.h"
+#include "migration/vmstate.h"
 #include "hw/char/parallel.h"
 #include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/char/pl011.c b/hw/char/pl011.c
index a2da375528..84ad8ff9fb 100644
--- a/hw/char/pl011.c
+++ b/hw/char/pl011.c
@@ -22,6 +22,7 @@
 #include "hw/char/pl011.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "chardev/char-fe.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/char/sclpconsole-lm.c b/hw/char/sclpconsole-lm.c
index 691dc870ed..d904265cda 100644
--- a/hw/char/sclpconsole-lm.c
+++ b/hw/char/sclpconsole-lm.c
@@ -21,6 +21,7 @@
 #include "chardev/char-fe.h"
 
 #include "hw/s390x/sclp.h"
+#include "migration/vmstate.h"
 #include "hw/s390x/event-facility.h"
 #include "hw/s390x/ebcdic.h"
 
diff --git a/hw/char/sclpconsole.c b/hw/char/sclpconsole.c
index 09b1d45d7a..f3669766bf 100644
--- a/hw/char/sclpconsole.c
+++ b/hw/char/sclpconsole.c
@@ -19,6 +19,7 @@
 #include "qemu/module.h"
 
 #include "hw/s390x/sclp.h"
+#include "migration/vmstate.h"
 #include "hw/s390x/event-facility.h"
 #include "chardev/char-fe.h"
 
diff --git a/hw/char/serial-isa.c b/hw/char/serial-isa.c
index 610426111a..d3080b76e4 100644
--- a/hw/char/serial-isa.c
+++ b/hw/char/serial-isa.c
@@ -28,6 +28,7 @@
 #include "qemu/module.h"
 #include "hw/char/serial.h"
 #include "hw/isa/isa.h"
+#include "migration/vmstate.h"
 
 #define ISA_SERIAL(obj) OBJECT_CHECK(ISASerialState, (obj), TYPE_ISA_SERIAL)
 
diff --git a/hw/char/serial-pci-multi.c b/hw/char/serial-pci-multi.c
index 65dbfbd205..867e7840b4 100644
--- a/hw/char/serial-pci-multi.c
+++ b/hw/char/serial-pci-multi.c
@@ -32,6 +32,7 @@
 #include "hw/char/serial.h"
 #include "hw/irq.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 
 #define PCI_SERIAL_MAX_PORTS 4
 
diff --git a/hw/char/serial-pci.c b/hw/char/serial-pci.c
index 808d32b508..ee537890c2 100644
--- a/hw/char/serial-pci.c
+++ b/hw/char/serial-pci.c
@@ -31,6 +31,7 @@
 #include "hw/char/serial.h"
 #include "hw/irq.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 
 typedef struct PCISerialState {
     PCIDevice dev;
diff --git a/hw/char/serial.c b/hw/char/serial.c
index 1d977287ea..4d54163a62 100644
--- a/hw/char/serial.c
+++ b/hw/char/serial.c
@@ -26,6 +26,7 @@
 #include "qemu/osdep.h"
 #include "hw/char/serial.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "chardev/char-serial.h"
 #include "qapi/error.h"
 #include "qemu/timer.h"
diff --git a/hw/char/spapr_vty.c b/hw/char/spapr_vty.c
index f360ab3612..b3995a9e0c 100644
--- a/hw/char/spapr_vty.c
+++ b/hw/char/spapr_vty.c
@@ -4,6 +4,7 @@
 #include "qapi/error.h"
 #include "cpu.h"
 #include "hw/qdev.h"
+#include "migration/vmstate.h"
 #include "chardev/char-fe.h"
 #include "hw/irq.h"
 #include "hw/ppc/spapr.h"
diff --git a/hw/core/loader.c b/hw/core/loader.c
index 830845dd73..84e4f3efac 100644
--- a/hw/core/loader.c
+++ b/hw/core/loader.c
@@ -47,6 +47,7 @@
 #include "qapi/error.h"
 #include "hw/hw.h"
 #include "disas/disas.h"
+#include "migration/vmstate.h"
 #include "monitor/monitor.h"
 #include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/core/numa.c b/hw/core/numa.c
index a11431483c..67548064ee 100644
--- a/hw/core/numa.c
+++ b/hw/core/numa.c
@@ -33,6 +33,7 @@
 #include "qapi/qapi-visit-machine.h"
 #include "sysemu/qtest.h"
 #include "hw/mem/pc-dimm.h"
+#include "migration/vmstate.h"
 #include "hw/mem/memory-device.h"
 #include "qemu/option.h"
 #include "qemu/config-file.h"
diff --git a/hw/core/or-irq.c b/hw/core/or-irq.c
index 6ed34d9238..02949dae1a 100644
--- a/hw/core/or-irq.c
+++ b/hw/core/or-irq.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/or-irq.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 
 static void or_irq_handler(void *opaque, int n, int level)
diff --git a/hw/core/ptimer.c b/hw/core/ptimer.c
index 170fd34d8b..49b60282cf 100644
--- a/hw/core/ptimer.c
+++ b/hw/core/ptimer.c
@@ -5,10 +5,12 @@
  *
  * This code is licensed under the GNU LGPL.
  */
+
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "qemu/timer.h"
 #include "hw/ptimer.h"
+#include "migration/vmstate.h"
 #include "qemu/host-utils.h"
 #include "sysemu/replay.h"
 #include "sysemu/qtest.h"
diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index 5c4b67a408..b1fe40d20d 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -38,6 +38,7 @@
 #include "hw/irq.h"
 #include "hw/boards.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 
 bool qdev_hotplug = false;
 static bool qdev_hot_added = false;
diff --git a/hw/display/ads7846.c b/hw/display/ads7846.c
index 12d8272615..c12272ae72 100644
--- a/hw/display/ads7846.c
+++ b/hw/display/ads7846.c
@@ -13,6 +13,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/ssi/ssi.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "ui/console.h"
 
diff --git a/hw/display/bcm2835_fb.c b/hw/display/bcm2835_fb.c
index e446355f29..3d99d99e2b 100644
--- a/hw/display/bcm2835_fb.c
+++ b/hw/display/bcm2835_fb.c
@@ -30,6 +30,7 @@
 #include "framebuffer.h"
 #include "ui/pixel_ops.h"
 #include "hw/misc/bcm2835_mbox_defs.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/display/bochs-display.c b/hw/display/bochs-display.c
index 582133dd71..ce40aea354 100644
--- a/hw/display/bochs-display.c
+++ b/hw/display/bochs-display.c
@@ -10,6 +10,7 @@
 #include "qemu/units.h"
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "hw/display/bochs-vbe.h"
 #include "hw/display/edid.h"
 
diff --git a/hw/display/cg3.c b/hw/display/cg3.c
index 7cf9ebd604..29a8735a38 100644
--- a/hw/display/cg3.c
+++ b/hw/display/cg3.c
@@ -29,6 +29,7 @@
 #include "qemu/error-report.h"
 #include "ui/console.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/irq.h"
 #include "hw/loader.h"
 #include "qemu/log.h"
diff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c
index 4ccf5b4f18..3120b3cfaf 100644
--- a/hw/display/cirrus_vga.c
+++ b/hw/display/cirrus_vga.c
@@ -40,6 +40,7 @@
 #include "trace.h"
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "ui/pixel_ops.h"
 #include "cirrus_vga_internal.h"
 
diff --git a/hw/display/dpcd.c b/hw/display/dpcd.c
index 88cde54821..170545c605 100644
--- a/hw/display/dpcd.c
+++ b/hw/display/dpcd.c
@@ -30,6 +30,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/misc/auxbus.h"
+#include "migration/vmstate.h"
 #include "hw/display/dpcd.h"
 
 #ifndef DEBUG_DPCD
diff --git a/hw/display/exynos4210_fimd.c b/hw/display/exynos4210_fimd.c
index 889622eefa..8e1508a3e6 100644
--- a/hw/display/exynos4210_fimd.c
+++ b/hw/display/exynos4210_fimd.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "ui/console.h"
 #include "ui/pixel_ops.h"
 #include "qemu/bswap.h"
diff --git a/hw/display/g364fb.c b/hw/display/g364fb.c
index 89248f87df..1757b777e2 100644
--- a/hw/display/g364fb.c
+++ b/hw/display/g364fb.c
@@ -27,6 +27,7 @@
 #include "ui/pixel_ops.h"
 #include "trace.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 
 typedef struct G364State {
     /* hardware */
diff --git a/hw/display/i2c-ddc.c b/hw/display/i2c-ddc.c
index 041fc4f408..3ac85216a5 100644
--- a/hw/display/i2c-ddc.c
+++ b/hw/display/i2c-ddc.c
@@ -20,6 +20,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/i2c/i2c.h"
+#include "migration/vmstate.h"
 #include "hw/display/i2c-ddc.h"
 
 #ifndef DEBUG_I2CDDC
diff --git a/hw/display/jazz_led.c b/hw/display/jazz_led.c
index 783189ebcd..3e0112b1ca 100644
--- a/hw/display/jazz_led.c
+++ b/hw/display/jazz_led.c
@@ -28,6 +28,7 @@
 #include "ui/pixel_ops.h"
 #include "trace.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 
 typedef enum {
     REDRAW_NONE = 0, REDRAW_SEGMENTS = 1, REDRAW_BACKGROUND = 2,
diff --git a/hw/display/milkymist-tmu2.c b/hw/display/milkymist-tmu2.c
index 3f92378410..7bfffa52da 100644
--- a/hw/display/milkymist-tmu2.c
+++ b/hw/display/milkymist-tmu2.c
@@ -28,6 +28,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 #include "qapi/error.h"
 #include "qemu/error-report.h"
diff --git a/hw/display/milkymist-vgafb.c b/hw/display/milkymist-vgafb.c
index dce1dd7ad6..9a9a481ebd 100644
--- a/hw/display/milkymist-vgafb.c
+++ b/hw/display/milkymist-vgafb.c
@@ -33,6 +33,7 @@
 #include "qemu/module.h"
 
 #define BITS 8
+#include "migration/vmstate.h"
 #include "milkymist-vgafb_template.h"
 #define BITS 15
 #include "milkymist-vgafb_template.h"
diff --git a/hw/display/pl110.c b/hw/display/pl110.c
index 8fb510ee73..c2991a28d2 100644
--- a/hw/display/pl110.c
+++ b/hw/display/pl110.c
@@ -10,6 +10,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "ui/console.h"
 #include "framebuffer.h"
 #include "ui/pixel_ops.h"
diff --git a/hw/display/pxa2xx_lcd.c b/hw/display/pxa2xx_lcd.c
index 7aca3912f5..05f5f84671 100644
--- a/hw/display/pxa2xx_lcd.c
+++ b/hw/display/pxa2xx_lcd.c
@@ -13,6 +13,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "ui/console.h"
 #include "hw/arm/pxa.h"
 #include "ui/pixel_ops.h"
diff --git a/hw/display/qxl.c b/hw/display/qxl.c
index 98c7410032..4a44712fde 100644
--- a/hw/display/qxl.c
+++ b/hw/display/qxl.c
@@ -29,6 +29,7 @@
 #include "qemu/module.h"
 #include "sysemu/sysemu.h"
 #include "migration/blocker.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 
 #include "qxl.h"
diff --git a/hw/display/sii9022.c b/hw/display/sii9022.c
index 0bebb85a58..0710ce9de5 100644
--- a/hw/display/sii9022.c
+++ b/hw/display/sii9022.c
@@ -16,6 +16,7 @@
 #include "qemu/osdep.h"
 #include "qemu/module.h"
 #include "hw/i2c/i2c.h"
+#include "migration/vmstate.h"
 #include "hw/display/i2c-ddc.h"
 #include "trace.h"
 
diff --git a/hw/display/sm501.c b/hw/display/sm501.c
index 5918f59b2b..6f88aaaa08 100644
--- a/hw/display/sm501.c
+++ b/hw/display/sm501.c
@@ -33,6 +33,7 @@
 #include "hw/char/serial.h"
 #include "ui/console.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/pci/pci.h"
 #include "hw/i2c/i2c.h"
 #include "hw/display/i2c-ddc.h"
diff --git a/hw/display/ssd0303.c b/hw/display/ssd0303.c
index f2a60c44c9..718378f6de 100644
--- a/hw/display/ssd0303.c
+++ b/hw/display/ssd0303.c
@@ -13,6 +13,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/i2c/i2c.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "ui/console.h"
 
diff --git a/hw/display/ssd0323.c b/hw/display/ssd0323.c
index ac373f1e78..c3bdb18742 100644
--- a/hw/display/ssd0323.c
+++ b/hw/display/ssd0323.c
@@ -13,6 +13,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/ssi/ssi.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "ui/console.h"
 
diff --git a/hw/display/tcx.c b/hw/display/tcx.c
index cdabcbc746..f9b1ae56ec 100644
--- a/hw/display/tcx.c
+++ b/hw/display/tcx.c
@@ -29,6 +29,7 @@
 #include "ui/pixel_ops.h"
 #include "hw/loader.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 
diff --git a/hw/display/vga-isa-mm.c b/hw/display/vga-isa-mm.c
index a790f69b6d..1c4f43b52b 100644
--- a/hw/display/vga-isa-mm.c
+++ b/hw/display/vga-isa-mm.c
@@ -21,10 +21,12 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "qemu/bitops.h"
 #include "qemu/units.h"
 #include "hw/hw.h"
+#include "migration/vmstate.h"
 #include "hw/display/vga.h"
 #include "vga_int.h"
 #include "ui/pixel_ops.h"
diff --git a/hw/display/vga-pci.c b/hw/display/vga-pci.c
index dedac5d128..cb956b4545 100644
--- a/hw/display/vga-pci.c
+++ b/hw/display/vga-pci.c
@@ -27,6 +27,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "vga_int.h"
 #include "ui/pixel_ops.h"
 #include "qemu/module.h"
diff --git a/hw/display/vga.c b/hw/display/vga.c
index 4d3572891a..f8098f63e9 100644
--- a/hw/display/vga.c
+++ b/hw/display/vga.c
@@ -34,6 +34,7 @@
 #include "ui/pixel_ops.h"
 #include "qemu/timer.h"
 #include "hw/xen/xen.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 
 //#define DEBUG_VGA_MEM
diff --git a/hw/display/vmware_vga.c b/hw/display/vmware_vga.c
index 249a179bf6..ebfcc46a2d 100644
--- a/hw/display/vmware_vga.c
+++ b/hw/display/vmware_vga.c
@@ -31,6 +31,7 @@
 #include "trace.h"
 #include "ui/vnc.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 
 #undef VERBOSE
 #define HW_RECT_ACCEL
diff --git a/hw/display/xlnx_dp.c b/hw/display/xlnx_dp.c
index 4daac38070..fde3b21ea5 100644
--- a/hw/display/xlnx_dp.c
+++ b/hw/display/xlnx_dp.c
@@ -28,6 +28,7 @@
 #include "qemu/module.h"
 #include "hw/display/xlnx_dp.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 
 #ifndef DEBUG_DP
 #define DEBUG_DP 0
diff --git a/hw/dma/bcm2835_dma.c b/hw/dma/bcm2835_dma.c
index 090c73d951..192bd377a0 100644
--- a/hw/dma/bcm2835_dma.c
+++ b/hw/dma/bcm2835_dma.c
@@ -7,6 +7,7 @@
 #include "qapi/error.h"
 #include "hw/dma/bcm2835_dma.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/dma/i82374.c b/hw/dma/i82374.c
index 68fad2dd12..3f0db4a021 100644
--- a/hw/dma/i82374.c
+++ b/hw/dma/i82374.c
@@ -26,6 +26,7 @@
 #include "qapi/error.h"
 #include "qemu/module.h"
 #include "hw/isa/isa.h"
+#include "migration/vmstate.h"
 #include "hw/dma/i8257.h"
 
 #define TYPE_I82374 "i82374"
diff --git a/hw/dma/i8257.c b/hw/dma/i8257.c
index 30a3442437..b7404cff60 100644
--- a/hw/dma/i8257.c
+++ b/hw/dma/i8257.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/isa/isa.h"
+#include "migration/vmstate.h"
 #include "hw/dma/i8257.h"
 #include "qemu/main-loop.h"
 #include "qemu/module.h"
diff --git a/hw/dma/pl080.c b/hw/dma/pl080.c
index be7f9c71a8..59bc929363 100644
--- a/hw/dma/pl080.c
+++ b/hw/dma/pl080.c
@@ -9,6 +9,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "exec/address-spaces.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/dma/pl330.c b/hw/dma/pl330.c
index 0d772de9f3..28830a42a3 100644
--- a/hw/dma/pl330.c
+++ b/hw/dma/pl330.c
@@ -18,6 +18,7 @@
 #include "qemu-common.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qapi/error.h"
 #include "qemu/timer.h"
 #include "sysemu/dma.h"
diff --git a/hw/dma/pxa2xx_dma.c b/hw/dma/pxa2xx_dma.c
index 1c273fb309..1124051730 100644
--- a/hw/dma/pxa2xx_dma.c
+++ b/hw/dma/pxa2xx_dma.c
@@ -13,6 +13,7 @@
 #include "hw/irq.h"
 #include "hw/arm/pxa.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qapi/error.h"
 #include "qemu/module.h"
 
diff --git a/hw/dma/rc4030.c b/hw/dma/rc4030.c
index f7650f617c..d35fb59eee 100644
--- a/hw/dma/rc4030.c
+++ b/hw/dma/rc4030.c
@@ -28,6 +28,7 @@
 #include "hw/irq.h"
 #include "hw/mips/mips.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/timer.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c
index a05b6be95c..8955fe262e 100644
--- a/hw/dma/sparc32_dma.c
+++ b/hw/dma/sparc32_dma.c
@@ -31,6 +31,7 @@
 #include "hw/sparc/sparc32_dma.h"
 #include "hw/sparc/sun4m_iommu.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "sysemu/dma.h"
 #include "qapi/error.h"
 #include "qemu/module.h"
diff --git a/hw/dma/xlnx-zdma.c b/hw/dma/xlnx-zdma.c
index 5afd77a5b8..2dbdfc5739 100644
--- a/hw/dma/xlnx-zdma.c
+++ b/hw/dma/xlnx-zdma.c
@@ -29,6 +29,7 @@
 #include "qemu/osdep.h"
 #include "hw/dma/xlnx-zdma.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "qemu/bitops.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/dma/xlnx-zynq-devcfg.c b/hw/dma/xlnx-zynq-devcfg.c
index 855c784758..89200ff15d 100644
--- a/hw/dma/xlnx-zynq-devcfg.c
+++ b/hw/dma/xlnx-zynq-devcfg.c
@@ -27,6 +27,7 @@
 #include "qemu/osdep.h"
 #include "hw/dma/xlnx-zynq-devcfg.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "qemu/bitops.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/dma.h"
diff --git a/hw/dma/xlnx_dpdma.c b/hw/dma/xlnx_dpdma.c
index 1bba7f2159..b40c897de2 100644
--- a/hw/dma/xlnx_dpdma.c
+++ b/hw/dma/xlnx_dpdma.c
@@ -28,6 +28,7 @@
 #include "qemu/module.h"
 #include "hw/dma/xlnx_dpdma.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 
 #ifndef DEBUG_DPDMA
 #define DEBUG_DPDMA 0
diff --git a/hw/gpio/bcm2835_gpio.c b/hw/gpio/bcm2835_gpio.c
index ea3f3f2bda..91ce3d10cc 100644
--- a/hw/gpio/bcm2835_gpio.c
+++ b/hw/gpio/bcm2835_gpio.c
@@ -17,6 +17,7 @@
 #include "qemu/timer.h"
 #include "qapi/error.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/sd/sd.h"
 #include "hw/gpio/bcm2835_gpio.h"
 #include "hw/irq.h"
diff --git a/hw/gpio/gpio_key.c b/hw/gpio/gpio_key.c
index 66866fa87c..46bbd42772 100644
--- a/hw/gpio/gpio_key.c
+++ b/hw/gpio/gpio_key.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "qemu/timer.h"
 
diff --git a/hw/gpio/imx_gpio.c b/hw/gpio/imx_gpio.c
index 3d3c9644db..8792fb5ad4 100644
--- a/hw/gpio/imx_gpio.c
+++ b/hw/gpio/imx_gpio.c
@@ -20,6 +20,7 @@
 #include "qemu/osdep.h"
 #include "hw/gpio/imx_gpio.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/gpio/max7310.c b/hw/gpio/max7310.c
index b0925ab1a1..432f0b00fe 100644
--- a/hw/gpio/max7310.c
+++ b/hw/gpio/max7310.c
@@ -10,6 +10,7 @@
 #include "qemu/osdep.h"
 #include "hw/i2c/i2c.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 
 #define TYPE_MAX7310 "max7310"
diff --git a/hw/gpio/mpc8xxx.c b/hw/gpio/mpc8xxx.c
index f3b90b4b33..1d99667094 100644
--- a/hw/gpio/mpc8xxx.c
+++ b/hw/gpio/mpc8xxx.c
@@ -22,6 +22,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 
 #define TYPE_MPC8XXX_GPIO "mpc8xxx_gpio"
diff --git a/hw/gpio/nrf51_gpio.c b/hw/gpio/nrf51_gpio.c
index 24a890911a..b47fddf4ed 100644
--- a/hw/gpio/nrf51_gpio.c
+++ b/hw/gpio/nrf51_gpio.c
@@ -15,6 +15,7 @@
 #include "qemu/module.h"
 #include "hw/gpio/nrf51_gpio.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 
 /*
diff --git a/hw/gpio/pl061.c b/hw/gpio/pl061.c
index c605d91c93..2a828260bd 100644
--- a/hw/gpio/pl061.c
+++ b/hw/gpio/pl061.c
@@ -11,6 +11,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/gpio/zaurus.c b/hw/gpio/zaurus.c
index 98aa416931..a1ba09c6f2 100644
--- a/hw/gpio/zaurus.c
+++ b/hw/gpio/zaurus.c
@@ -21,6 +21,7 @@
 #include "hw/irq.h"
 #include "hw/arm/sharpsl.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 
 #undef REG_FMT
diff --git a/hw/hppa/dino.c b/hw/hppa/dino.c
index 90da6bcbb9..dfb9d7a742 100644
--- a/hw/hppa/dino.c
+++ b/hw/hppa/dino.c
@@ -20,6 +20,7 @@
 #include "sysemu/sysemu.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_bus.h"
+#include "migration/vmstate.h"
 #include "hppa_sys.h"
 #include "exec/address-spaces.h"
 
diff --git a/hw/i2c/aspeed_i2c.c b/hw/i2c/aspeed_i2c.c
index bb7ef3cbf3..a956eb3849 100644
--- a/hw/i2c/aspeed_i2c.c
+++ b/hw/i2c/aspeed_i2c.c
@@ -20,6 +20,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/i2c/aspeed_i2c.h"
diff --git a/hw/i2c/core.c b/hw/i2c/core.c
index 20f36f1d55..25b792fdd0 100644
--- a/hw/i2c/core.c
+++ b/hw/i2c/core.c
@@ -9,6 +9,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/i2c/i2c.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "trace.h"
 
diff --git a/hw/i2c/exynos4210_i2c.c b/hw/i2c/exynos4210_i2c.c
index 07d83d5a63..a600f65560 100644
--- a/hw/i2c/exynos4210_i2c.c
+++ b/hw/i2c/exynos4210_i2c.c
@@ -24,6 +24,7 @@
 #include "qemu/module.h"
 #include "qemu/timer.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/i2c/i2c.h"
 #include "hw/irq.h"
 
diff --git a/hw/i2c/imx_i2c.c b/hw/i2c/imx_i2c.c
index 1d6b695615..30b9aea247 100644
--- a/hw/i2c/imx_i2c.c
+++ b/hw/i2c/imx_i2c.c
@@ -21,6 +21,7 @@
 #include "qemu/osdep.h"
 #include "hw/i2c/imx_i2c.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "hw/i2c/i2c.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/i2c/microbit_i2c.c b/hw/i2c/microbit_i2c.c
index 214be07c5a..4661f05253 100644
--- a/hw/i2c/microbit_i2c.c
+++ b/hw/i2c/microbit_i2c.c
@@ -21,6 +21,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/i2c/microbit_i2c.h"
+#include "migration/vmstate.h"
 
 static const uint32_t twi_read_sequence[] = {0x5A, 0x5A, 0x40};
 
diff --git a/hw/i2c/mpc_i2c.c b/hw/i2c/mpc_i2c.c
index 0aa4cacb65..0aa1be3ce7 100644
--- a/hw/i2c/mpc_i2c.c
+++ b/hw/i2c/mpc_i2c.c
@@ -23,6 +23,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 
 /* #define DEBUG_I2C */
 
diff --git a/hw/i2c/pm_smbus.c b/hw/i2c/pm_smbus.c
index e48544f909..d9e3bad90d 100644
--- a/hw/i2c/pm_smbus.c
+++ b/hw/i2c/pm_smbus.c
@@ -17,11 +17,13 @@
  * License along with this library; if not, see
  * <http://www.gnu.org/licenses/>.
  */
+
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/boards.h"
 #include "hw/i2c/pm_smbus.h"
 #include "hw/i2c/smbus_master.h"
+#include "migration/vmstate.h"
 
 #define SMBHSTSTS       0x00
 #define SMBHSTCNT       0x02
diff --git a/hw/i2c/smbus_eeprom.c b/hw/i2c/smbus_eeprom.c
index 37167e7244..e05bc8c39c 100644
--- a/hw/i2c/smbus_eeprom.c
+++ b/hw/i2c/smbus_eeprom.c
@@ -29,6 +29,7 @@
 #include "hw/boards.h"
 #include "hw/i2c/i2c.h"
 #include "hw/i2c/smbus_slave.h"
+#include "migration/vmstate.h"
 #include "hw/i2c/smbus_eeprom.h"
 
 //#define DEBUG
diff --git a/hw/i2c/smbus_ich9.c b/hw/i2c/smbus_ich9.c
index 51a03046a6..f7e626e95a 100644
--- a/hw/i2c/smbus_ich9.c
+++ b/hw/i2c/smbus_ich9.c
@@ -24,6 +24,7 @@
 #include "hw/hw.h"
 #include "hw/i2c/pm_smbus.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "sysemu/sysemu.h"
 
diff --git a/hw/i2c/smbus_slave.c b/hw/i2c/smbus_slave.c
index a9908c1a9b..7b145a384d 100644
--- a/hw/i2c/smbus_slave.c
+++ b/hw/i2c/smbus_slave.c
@@ -17,6 +17,7 @@
 #include "hw/hw.h"
 #include "hw/i2c/i2c.h"
 #include "hw/i2c/smbus_slave.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 
 //#define DEBUG_SMBUS 1
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index 74667a53be..5b0ec1b89e 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -46,6 +46,7 @@
 #include "hw/boards.h"
 #include "sysemu/tpm_backend.h"
 #include "hw/timer/mc146818rtc_regs.h"
+#include "migration/vmstate.h"
 #include "hw/mem/memory-device.h"
 #include "sysemu/numa.h"
 #include "sysemu/reset.h"
diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c
index 4a4e2c7fd4..08884523e2 100644
--- a/hw/i386/amd_iommu.c
+++ b/hw/i386/amd_iommu.c
@@ -19,10 +19,12 @@
  *
  * Cache implementation inspired by hw/i386/intel_iommu.c
  */
+
 #include "qemu/osdep.h"
 #include "hw/i386/pc.h"
 #include "hw/pci/msi.h"
 #include "hw/pci/pci_bus.h"
+#include "migration/vmstate.h"
 #include "amd_iommu.h"
 #include "qapi/error.h"
 #include "qemu/error-report.h"
diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index de86f53b4e..000de6b9ce 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -35,6 +35,7 @@
 #include "sysemu/kvm.h"
 #include "hw/i386/apic_internal.h"
 #include "kvm_i386.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 
 /* context entry operations */
diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c
index a5cda15b85..d98cf9d5d1 100644
--- a/hw/i386/kvm/clock.c
+++ b/hw/i386/kvm/clock.c
@@ -21,6 +21,7 @@
 #include "sysemu/kvm.h"
 #include "sysemu/hw_accel.h"
 #include "kvm_i386.h"
+#include "migration/vmstate.h"
 #include "hw/sysbus.h"
 #include "hw/kvm/clock.h"
 #include "qapi/error.h"
diff --git a/hw/i386/kvmvapic.c b/hw/i386/kvmvapic.c
index 9c2ab4aac5..44e40478c8 100644
--- a/hw/i386/kvmvapic.c
+++ b/hw/i386/kvmvapic.c
@@ -19,6 +19,7 @@
 #include "hw/i386/apic_internal.h"
 #include "hw/sysbus.h"
 #include "hw/boards.h"
+#include "migration/vmstate.h"
 #include "tcg/tcg.h"
 
 #define VAPIC_IO_PORT           0x7e
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 1453696975..1e8251d327 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -41,6 +41,7 @@
 #include "hw/firmware/smbios.h"
 #include "hw/loader.h"
 #include "elf.h"
+#include "migration/vmstate.h"
 #include "multiboot.h"
 #include "hw/timer/mc146818rtc.h"
 #include "hw/dma/i8257.h"
diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c
index 5d2d278be4..a50f5d5dd4 100644
--- a/hw/i386/vmmouse.c
+++ b/hw/i386/vmmouse.c
@@ -21,12 +21,14 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "ui/console.h"
 #include "hw/i386/pc.h"
 #include "hw/input/i8042.h"
 #include "hw/qdev.h"
+#include "migration/vmstate.h"
 
 /* debug only vmmouse */
 //#define DEBUG_VMMOUSE
diff --git a/hw/i386/xen/xen_platform.c b/hw/i386/xen/xen_platform.c
index 7a972e46cf..800687a188 100644
--- a/hw/i386/xen/xen_platform.c
+++ b/hw/i386/xen/xen_platform.c
@@ -30,6 +30,7 @@
 #include "hw/pci/pci.h"
 #include "hw/irq.h"
 #include "hw/xen/xen_common.h"
+#include "migration/vmstate.h"
 #include "hw/xen/xen-legacy-backend.h"
 #include "trace.h"
 #include "exec/address-spaces.h"
diff --git a/hw/i386/xen/xen_pvdevice.c b/hw/i386/xen/xen_pvdevice.c
index 23748f36a2..700db81cbc 100644
--- a/hw/i386/xen/xen_pvdevice.c
+++ b/hw/i386/xen/xen_pvdevice.c
@@ -34,6 +34,7 @@
 #include "qemu/module.h"
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 
 #define TYPE_XEN_PV_DEVICE  "xen-pvdevice"
diff --git a/hw/ide/ahci-allwinner.c b/hw/ide/ahci-allwinner.c
index de08d87790..8777122c9c 100644
--- a/hw/ide/ahci-allwinner.c
+++ b/hw/ide/ahci-allwinner.c
@@ -21,6 +21,7 @@
 #include "qemu/module.h"
 #include "sysemu/dma.h"
 #include "hw/ide/internal.h"
+#include "migration/vmstate.h"
 #include "ahci_internal.h"
 
 #include "trace.h"
diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
index 00ba422a48..e0b1a91fd9 100644
--- a/hw/ide/ahci.c
+++ b/hw/ide/ahci.c
@@ -25,6 +25,7 @@
 #include "hw/hw.h"
 #include "hw/pci/msi.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 
 #include "qemu/error-report.h"
 #include "qemu/log.h"
diff --git a/hw/ide/cmd646.c b/hw/ide/cmd646.c
index e5542c9811..a3763a1d3a 100644
--- a/hw/ide/cmd646.c
+++ b/hw/ide/cmd646.c
@@ -26,6 +26,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "hw/isa/isa.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/ide/core.c b/hw/ide/core.c
index 6afadf894f..0453a925f9 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -26,6 +26,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/isa/isa.h"
+#include "migration/vmstate.h"
 #include "qemu/error-report.h"
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/ide/ich.c b/hw/ide/ich.c
index c1ba927574..00fb43a127 100644
--- a/hw/ide/ich.c
+++ b/hw/ide/ich.c
@@ -64,6 +64,7 @@
 #include "hw/hw.h"
 #include "hw/pci/msi.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "hw/isa/isa.h"
 #include "sysemu/dma.h"
diff --git a/hw/ide/isa.c b/hw/ide/isa.c
index 4b5784e3fd..fda912f3ed 100644
--- a/hw/ide/isa.c
+++ b/hw/ide/isa.c
@@ -26,6 +26,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/isa/isa.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "sysemu/dma.h"
 
diff --git a/hw/ide/macio.c b/hw/ide/macio.c
index 54571fed12..aa447cd2b5 100644
--- a/hw/ide/macio.c
+++ b/hw/ide/macio.c
@@ -27,6 +27,7 @@
 #include "hw/hw.h"
 #include "hw/ppc/mac.h"
 #include "hw/ppc/mac_dbdma.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "hw/misc/macio/macio.h"
 #include "sysemu/block-backend.h"
diff --git a/hw/ide/microdrive.c b/hw/ide/microdrive.c
index 92ee6e0af8..be3cf8779a 100644
--- a/hw/ide/microdrive.c
+++ b/hw/ide/microdrive.c
@@ -26,6 +26,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/pcmcia.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "sysemu/dma.h"
 
diff --git a/hw/ide/mmio.c b/hw/ide/mmio.c
index 70a58016d0..f3de6db33e 100644
--- a/hw/ide/mmio.c
+++ b/hw/ide/mmio.c
@@ -26,6 +26,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "sysemu/dma.h"
 
diff --git a/hw/ide/pci.c b/hw/ide/pci.c
index 4c6fb9a68e..c5b081a028 100644
--- a/hw/ide/pci.c
+++ b/hw/ide/pci.c
@@ -26,6 +26,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "sysemu/dma.h"
 #include "qemu/error-report.h"
 #include "qemu/module.h"
diff --git a/hw/ide/piix.c b/hw/ide/piix.c
index c4c6d4b760..407d3e3ce8 100644
--- a/hw/ide/piix.c
+++ b/hw/ide/piix.c
@@ -26,6 +26,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "sysemu/block-backend.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/ide/via.c b/hw/ide/via.c
index 6d54ac55f0..8fa1972d92 100644
--- a/hw/ide/via.c
+++ b/hw/ide/via.c
@@ -27,6 +27,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/dma.h"
diff --git a/hw/input/adb-kbd.c b/hw/input/adb-kbd.c
index da361f56df..b3c4aeded1 100644
--- a/hw/input/adb-kbd.c
+++ b/hw/input/adb-kbd.c
@@ -24,6 +24,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/input/adb.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "ui/input.h"
 #include "hw/input/adb-keys.h"
diff --git a/hw/input/adb-mouse.c b/hw/input/adb-mouse.c
index 52526fddb7..aeba41bddd 100644
--- a/hw/input/adb-mouse.c
+++ b/hw/input/adb-mouse.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include "ui/console.h"
 #include "hw/input/adb.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "adb-internal.h"
 #include "trace.h"
diff --git a/hw/input/adb.c b/hw/input/adb.c
index 1446f32521..80ba1259bf 100644
--- a/hw/input/adb.c
+++ b/hw/input/adb.c
@@ -24,6 +24,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/input/adb.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "adb-internal.h"
 
diff --git a/hw/input/hid.c b/hw/input/hid.c
index aa4fb826fd..c570ca25b1 100644
--- a/hw/input/hid.c
+++ b/hw/input/hid.c
@@ -22,11 +22,13 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "ui/console.h"
 #include "qemu/timer.h"
 #include "hw/input/hid.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 
 #define HID_USAGE_ERROR_ROLLOVER        0x01
diff --git a/hw/input/lm832x.c b/hw/input/lm832x.c
index 2ab6d3290b..de03913d7c 100644
--- a/hw/input/lm832x.c
+++ b/hw/input/lm832x.c
@@ -22,6 +22,7 @@
 #include "hw/hw.h"
 #include "hw/i2c/i2c.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "qemu/timer.h"
 #include "sysemu/reset.h"
diff --git a/hw/input/milkymist-softusb.c b/hw/input/milkymist-softusb.c
index 92e07fbd8c..e17666d56b 100644
--- a/hw/input/milkymist-softusb.c
+++ b/hw/input/milkymist-softusb.c
@@ -25,6 +25,7 @@
 #include "qapi/error.h"
 #include "hw/hw.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 #include "ui/console.h"
 #include "hw/input/hid.h"
diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c
index 7e76ee7ad3..cf1690332d 100644
--- a/hw/input/pckbd.c
+++ b/hw/input/pckbd.c
@@ -26,6 +26,7 @@
 #include "qemu/log.h"
 #include "hw/hw.h"
 #include "hw/isa/isa.h"
+#include "migration/vmstate.h"
 #include "hw/i386/pc.h"
 #include "hw/input/ps2.h"
 #include "hw/irq.h"
diff --git a/hw/input/pl050.c b/hw/input/pl050.c
index 2318dbfeac..1123037b38 100644
--- a/hw/input/pl050.c
+++ b/hw/input/pl050.c
@@ -9,6 +9,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/input/ps2.h"
 #include "hw/irq.h"
 #include "qemu/log.h"
diff --git a/hw/input/ps2.c b/hw/input/ps2.c
index 8d922b05c9..07d07ee6bd 100644
--- a/hw/input/ps2.c
+++ b/hw/input/ps2.c
@@ -26,6 +26,7 @@
 #include "qemu/log.h"
 #include "hw/hw.h"
 #include "hw/input/ps2.h"
+#include "migration/vmstate.h"
 #include "ui/console.h"
 #include "ui/input.h"
 #include "sysemu/reset.h"
diff --git a/hw/input/pxa2xx_keypad.c b/hw/input/pxa2xx_keypad.c
index 4788c96d19..31862a7d16 100644
--- a/hw/input/pxa2xx_keypad.c
+++ b/hw/input/pxa2xx_keypad.c
@@ -14,6 +14,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "hw/arm/pxa.h"
 #include "ui/console.h"
 
diff --git a/hw/input/stellaris_input.c b/hw/input/stellaris_input.c
index ffea0542ba..7582117f0b 100644
--- a/hw/input/stellaris_input.c
+++ b/hw/input/stellaris_input.c
@@ -11,6 +11,7 @@
 #include "hw/hw.h"
 #include "hw/input/gamepad.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "ui/console.h"
 
 typedef struct {
diff --git a/hw/input/tsc2005.c b/hw/input/tsc2005.c
index e21356c18d..b92a034496 100644
--- a/hw/input/tsc2005.c
+++ b/hw/input/tsc2005.c
@@ -26,6 +26,7 @@
 #include "ui/console.h"
 #include "hw/input/tsc2xxx.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 
 #define TSC_CUT_RESOLUTION(value, p)	((value) >> (16 - (p ? 12 : 10)))
diff --git a/hw/input/tsc210x.c b/hw/input/tsc210x.c
index be7d948168..182d3725fc 100644
--- a/hw/input/tsc210x.c
+++ b/hw/input/tsc210x.c
@@ -28,6 +28,7 @@
 #include "hw/arm/omap.h"            /* For I2SCodec */
 #include "hw/input/tsc2xxx.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 
 #define TSC_DATA_REGISTERS_PAGE		0x0
 #define TSC_CONTROL_REGISTERS_PAGE	0x1
diff --git a/hw/intc/allwinner-a10-pic.c b/hw/intc/allwinner-a10-pic.c
index 9df3e18539..79959a4d23 100644
--- a/hw/intc/allwinner-a10-pic.c
+++ b/hw/intc/allwinner-a10-pic.c
@@ -17,6 +17,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "sysemu/sysemu.h"
 #include "hw/intc/allwinner-a10-pic.h"
 #include "hw/irq.h"
diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c
index 7045761281..fbb6e25cf4 100644
--- a/hw/intc/apic_common.c
+++ b/hw/intc/apic_common.c
@@ -32,6 +32,7 @@
 #include "hw/qdev.h"
 #include "hw/sysbus.h"
 #include "migration/qemu-file-types.h"
+#include "migration/vmstate.h"
 
 static int apic_irq_delivered;
 bool apic_report_tpr_access;
diff --git a/hw/intc/arm_gic_common.c b/hw/intc/arm_gic_common.c
index ccc50d00b6..5d506bebb5 100644
--- a/hw/intc/arm_gic_common.c
+++ b/hw/intc/arm_gic_common.c
@@ -23,6 +23,7 @@
 #include "qemu/module.h"
 #include "gic_internal.h"
 #include "hw/arm/linux-boot-if.h"
+#include "migration/vmstate.h"
 
 static int gic_pre_save(void *opaque)
 {
diff --git a/hw/intc/arm_gicv3_common.c b/hw/intc/arm_gicv3_common.c
index 5edabb928f..12479f94a8 100644
--- a/hw/intc/arm_gicv3_common.c
+++ b/hw/intc/arm_gicv3_common.c
@@ -26,6 +26,7 @@
 #include "qemu/module.h"
 #include "qom/cpu.h"
 #include "hw/intc/arm_gicv3_common.h"
+#include "migration/vmstate.h"
 #include "gicv3_internal.h"
 #include "hw/arm/linux-boot-if.h"
 #include "sysemu/kvm.h"
diff --git a/hw/intc/arm_gicv3_its_common.c b/hw/intc/arm_gicv3_its_common.c
index efb3d51fb5..66c4c6a188 100644
--- a/hw/intc/arm_gicv3_its_common.c
+++ b/hw/intc/arm_gicv3_its_common.c
@@ -20,6 +20,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/pci/msi.h"
+#include "migration/vmstate.h"
 #include "hw/intc/arm_gicv3_its_common.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/intc/armv7m_nvic.c b/hw/intc/armv7m_nvic.c
index 69670a2d97..0c7fc7078b 100644
--- a/hw/intc/armv7m_nvic.c
+++ b/hw/intc/armv7m_nvic.c
@@ -14,6 +14,7 @@
 #include "qapi/error.h"
 #include "cpu.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/timer.h"
 #include "hw/intc/armv7m_nvic.h"
 #include "hw/irq.h"
diff --git a/hw/intc/aspeed_vic.c b/hw/intc/aspeed_vic.c
index e17343cd73..5ba06c5262 100644
--- a/hw/intc/aspeed_vic.c
+++ b/hw/intc/aspeed_vic.c
@@ -30,6 +30,7 @@
 #include "qemu/osdep.h"
 #include "hw/intc/aspeed_vic.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "qemu/bitops.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/intc/bcm2835_ic.c b/hw/intc/bcm2835_ic.c
index 20db52bd8e..05bd28e4f9 100644
--- a/hw/intc/bcm2835_ic.c
+++ b/hw/intc/bcm2835_ic.c
@@ -15,6 +15,7 @@
 #include "qemu/osdep.h"
 #include "hw/intc/bcm2835_ic.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/intc/bcm2836_control.c b/hw/intc/bcm2836_control.c
index a983fe565f..04229b8a17 100644
--- a/hw/intc/bcm2836_control.c
+++ b/hw/intc/bcm2836_control.c
@@ -18,6 +18,7 @@
 #include "qemu/osdep.h"
 #include "hw/intc/bcm2836_control.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/intc/exynos4210_combiner.c b/hw/intc/exynos4210_combiner.c
index ed558115f6..3b49ce4d27 100644
--- a/hw/intc/exynos4210_combiner.c
+++ b/hw/intc/exynos4210_combiner.c
@@ -29,6 +29,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 
 #include "hw/arm/exynos4210.h"
diff --git a/hw/intc/exynos4210_gic.c b/hw/intc/exynos4210_gic.c
index e37d457fcf..7fa4583b0f 100644
--- a/hw/intc/exynos4210_gic.c
+++ b/hw/intc/exynos4210_gic.c
@@ -22,6 +22,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "hw/irq.h"
 #include "hw/arm/exynos4210.h"
diff --git a/hw/intc/heathrow_pic.c b/hw/intc/heathrow_pic.c
index ac1f7c0c8f..572e9115aa 100644
--- a/hw/intc/heathrow_pic.c
+++ b/hw/intc/heathrow_pic.c
@@ -26,6 +26,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/ppc/mac.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "hw/intc/heathrow_pic.h"
 #include "hw/irq.h"
diff --git a/hw/intc/i8259_common.c b/hw/intc/i8259_common.c
index c75c880157..c7ff2b3274 100644
--- a/hw/intc/i8259_common.c
+++ b/hw/intc/i8259_common.c
@@ -22,9 +22,11 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "hw/i386/pc.h"
 #include "hw/isa/i8259_internal.h"
+#include "migration/vmstate.h"
 #include "monitor/monitor.h"
 
 static int irq_level[16];
diff --git a/hw/intc/imx_avic.c b/hw/intc/imx_avic.c
index 022ed05b6f..63fc602a1a 100644
--- a/hw/intc/imx_avic.c
+++ b/hw/intc/imx_avic.c
@@ -18,6 +18,7 @@
 #include "qemu/osdep.h"
 #include "hw/intc/imx_avic.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/intc/imx_gpcv2.c b/hw/intc/imx_gpcv2.c
index a83333bdea..17007a4078 100644
--- a/hw/intc/imx_gpcv2.c
+++ b/hw/intc/imx_gpcv2.c
@@ -11,6 +11,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/intc/imx_gpcv2.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/intc/ioapic_common.c b/hw/intc/ioapic_common.c
index fa50382d43..5538b5b86e 100644
--- a/hw/intc/ioapic_common.c
+++ b/hw/intc/ioapic_common.c
@@ -22,6 +22,7 @@
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "qemu/module.h"
+#include "migration/vmstate.h"
 #include "monitor/monitor.h"
 #include "hw/i386/ioapic.h"
 #include "hw/i386/ioapic_internal.h"
diff --git a/hw/intc/lm32_pic.c b/hw/intc/lm32_pic.c
index c133d30cf2..4df4eef7df 100644
--- a/hw/intc/lm32_pic.c
+++ b/hw/intc/lm32_pic.c
@@ -20,6 +20,7 @@
 #include "qemu/osdep.h"
 
 #include "hw/hw.h"
+#include "migration/vmstate.h"
 #include "monitor/monitor.h"
 #include "qemu/module.h"
 #include "hw/sysbus.h"
diff --git a/hw/intc/ompic.c b/hw/intc/ompic.c
index 31004ac613..77591f827d 100644
--- a/hw/intc/ompic.c
+++ b/hw/intc/ompic.c
@@ -13,6 +13,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "exec/memory.h"
 
 #define TYPE_OR1K_OMPIC "or1k-ompic"
diff --git a/hw/intc/openpic.c b/hw/intc/openpic.c
index 49d64bccfe..bb869ca221 100644
--- a/hw/intc/openpic.c
+++ b/hw/intc/openpic.c
@@ -42,6 +42,7 @@
 #include "hw/ppc/openpic.h"
 #include "hw/ppc/ppc_e500.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/pci/msi.h"
 #include "qapi/error.h"
 #include "qemu/bitops.h"
diff --git a/hw/intc/pl190.c b/hw/intc/pl190.c
index 1a5e760f0f..e3bd3dd121 100644
--- a/hw/intc/pl190.c
+++ b/hw/intc/pl190.c
@@ -10,6 +10,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/intc/slavio_intctl.c b/hw/intc/slavio_intctl.c
index e97afcadf6..c4cf9096eb 100644
--- a/hw/intc/slavio_intctl.c
+++ b/hw/intc/slavio_intctl.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "migration/vmstate.h"
 #include "monitor/monitor.h"
 #include "qemu/module.h"
 #include "hw/sysbus.h"
diff --git a/hw/intc/spapr_xive.c b/hw/intc/spapr_xive.c
index 2e39cc1e47..2fdd68035a 100644
--- a/hw/intc/spapr_xive.c
+++ b/hw/intc/spapr_xive.c
@@ -15,6 +15,7 @@
 #include "target/ppc/cpu.h"
 #include "sysemu/cpus.h"
 #include "sysemu/reset.h"
+#include "migration/vmstate.h"
 #include "monitor/monitor.h"
 #include "hw/ppc/fdt.h"
 #include "hw/ppc/spapr.h"
diff --git a/hw/intc/xics.c b/hw/intc/xics.c
index beb37b1a2b..41da9b3091 100644
--- a/hw/intc/xics.c
+++ b/hw/intc/xics.c
@@ -35,6 +35,7 @@
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 #include "qapi/visitor.h"
+#include "migration/vmstate.h"
 #include "monitor/monitor.h"
 #include "hw/intc/intc.h"
 #include "hw/irq.h"
diff --git a/hw/intc/xive.c b/hw/intc/xive.c
index d977ed568f..b925ea9530 100644
--- a/hw/intc/xive.c
+++ b/hw/intc/xive.c
@@ -16,6 +16,7 @@
 #include "sysemu/dma.h"
 #include "sysemu/reset.h"
 #include "hw/qdev-properties.h"
+#include "migration/vmstate.h"
 #include "monitor/monitor.h"
 #include "hw/irq.h"
 #include "hw/ppc/xive.h"
diff --git a/hw/intc/xlnx-pmu-iomod-intc.c b/hw/intc/xlnx-pmu-iomod-intc.c
index 9fcd17c6fd..f2ba9b4ada 100644
--- a/hw/intc/xlnx-pmu-iomod-intc.c
+++ b/hw/intc/xlnx-pmu-iomod-intc.c
@@ -26,6 +26,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/register.h"
 #include "qemu/bitops.h"
 #include "qemu/log.h"
diff --git a/hw/intc/xlnx-zynqmp-ipi.c b/hw/intc/xlnx-zynqmp-ipi.c
index 43a1b789b5..adc1179014 100644
--- a/hw/intc/xlnx-zynqmp-ipi.c
+++ b/hw/intc/xlnx-zynqmp-ipi.c
@@ -27,6 +27,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/register.h"
 #include "qemu/bitops.h"
 #include "qemu/log.h"
diff --git a/hw/ipack/ipack.c b/hw/ipack/ipack.c
index b8ff979d72..9a520806d7 100644
--- a/hw/ipack/ipack.c
+++ b/hw/ipack/ipack.c
@@ -13,6 +13,7 @@
 #include "qemu/module.h"
 #include "hw/ipack/ipack.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 
 IPackDevice *ipack_device_find(IPackBus *bus, int32_t slot)
 {
diff --git a/hw/ipack/tpci200.c b/hw/ipack/tpci200.c
index 7ee9d01771..f931d4df62 100644
--- a/hw/ipack/tpci200.c
+++ b/hw/ipack/tpci200.c
@@ -13,6 +13,7 @@
 #include "hw/ipack/ipack.h"
 #include "hw/irq.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "qemu/bitops.h"
 #include "qemu/module.h"
 
diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c
index c0a8dac346..eb2eba891c 100644
--- a/hw/ipmi/ipmi_bmc_extern.c
+++ b/hw/ipmi/ipmi_bmc_extern.c
@@ -35,6 +35,7 @@
 #include "chardev/char-fe.h"
 #include "sysemu/sysemu.h"
 #include "hw/ipmi/ipmi.h"
+#include "migration/vmstate.h"
 
 #define VM_MSG_CHAR        0xA0 /* Marks end of message */
 #define VM_CMD_CHAR        0xA1 /* Marks end of a command */
diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c
index 1980536517..91e1484103 100644
--- a/hw/ipmi/ipmi_bmc_sim.c
+++ b/hw/ipmi/ipmi_bmc_sim.c
@@ -29,6 +29,7 @@
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 #include "hw/loader.h"
+#include "migration/vmstate.h"
 
 #define IPMI_NETFN_CHASSIS            0x00
 
diff --git a/hw/ipmi/isa_ipmi_bt.c b/hw/ipmi/isa_ipmi_bt.c
index af07278c19..588dfbac34 100644
--- a/hw/ipmi/isa_ipmi_bt.c
+++ b/hw/ipmi/isa_ipmi_bt.c
@@ -30,6 +30,7 @@
 #include "hw/ipmi/ipmi.h"
 #include "hw/irq.h"
 #include "hw/isa/isa.h"
+#include "migration/vmstate.h"
 
 /* Control register */
 #define IPMI_BT_CLR_WR_BIT         0
diff --git a/hw/ipmi/isa_ipmi_kcs.c b/hw/ipmi/isa_ipmi_kcs.c
index 583497685a..e63753f03e 100644
--- a/hw/ipmi/isa_ipmi_kcs.c
+++ b/hw/ipmi/isa_ipmi_kcs.c
@@ -30,6 +30,7 @@
 #include "hw/ipmi/ipmi.h"
 #include "hw/irq.h"
 #include "hw/isa/isa.h"
+#include "migration/vmstate.h"
 
 #define IPMI_KCS_OBF_BIT        0
 #define IPMI_KCS_IBF_BIT        1
diff --git a/hw/isa/apm.c b/hw/isa/apm.c
index c3101ef52f..f22b2d78a4 100644
--- a/hw/isa/apm.c
+++ b/hw/isa/apm.c
@@ -24,6 +24,7 @@
 #include "hw/isa/apm.h"
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 
 //#define DEBUG
 
diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c
index 90ebba59b7..de276cdf10 100644
--- a/hw/isa/i82378.c
+++ b/hw/isa/i82378.c
@@ -22,6 +22,7 @@
 #include "hw/i386/pc.h"
 #include "hw/irq.h"
 #include "hw/timer/i8254.h"
+#include "migration/vmstate.h"
 #include "hw/audio/pcspk.h"
 
 #define TYPE_I82378 "i82378"
diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c
index 42a1232787..79d44c1b41 100644
--- a/hw/isa/lpc_ich9.c
+++ b/hw/isa/lpc_ich9.c
@@ -35,6 +35,7 @@
 #include "qemu/range.h"
 #include "hw/isa/isa.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/i386/pc.h"
 #include "hw/irq.h"
 #include "hw/isa/apm.h"
diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c
index 85dbc94439..60845f3ff0 100644
--- a/hw/isa/pc87312.c
+++ b/hw/isa/pc87312.c
@@ -25,6 +25,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/isa/pc87312.h"
+#include "migration/vmstate.h"
 #include "qapi/error.h"
 #include "qemu/error-report.h"
 #include "qemu/module.h"
diff --git a/hw/isa/piix4.c b/hw/isa/piix4.c
index 3677976ef7..8abd5daaae 100644
--- a/hw/isa/piix4.c
+++ b/hw/isa/piix4.c
@@ -28,6 +28,7 @@
 #include "hw/pci/pci.h"
 #include "hw/isa/isa.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "sysemu/reset.h"
 
 PCIDevice *piix4_dev;
diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c
index 81bffb1fb9..d98b94ab05 100644
--- a/hw/isa/vt82c686.c
+++ b/hw/isa/vt82c686.c
@@ -18,6 +18,7 @@
 #include "hw/isa/isa.h"
 #include "hw/isa/superio.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/mips/mips.h"
 #include "hw/isa/apm.h"
 #include "hw/acpi/acpi.h"
diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c
index 29c785799c..ff43150e7d 100644
--- a/hw/mem/pc-dimm.c
+++ b/hw/mem/pc-dimm.c
@@ -20,6 +20,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/mem/pc-dimm.h"
+#include "migration/vmstate.h"
 #include "hw/mem/nvdimm.h"
 #include "hw/mem/memory-device.h"
 #include "qapi/error.h"
diff --git a/hw/mips/gt64xxx_pci.c b/hw/mips/gt64xxx_pci.c
index 15d4adb3cd..b4412c6c24 100644
--- a/hw/mips/gt64xxx_pci.c
+++ b/hw/mips/gt64xxx_pci.c
@@ -29,6 +29,7 @@
 #include "hw/mips/mips.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_host.h"
+#include "migration/vmstate.h"
 #include "hw/i386/pc.h"
 #include "hw/irq.h"
 #include "exec/address-spaces.h"
diff --git a/hw/misc/a9scu.c b/hw/misc/a9scu.c
index 4307f0082b..62bc60b2ae 100644
--- a/hw/misc/a9scu.c
+++ b/hw/misc/a9scu.c
@@ -10,6 +10,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/misc/a9scu.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 
 static uint64_t a9_scu_read(void *opaque, hwaddr offset,
diff --git a/hw/misc/arm_l2x0.c b/hw/misc/arm_l2x0.c
index b88f40ae7e..454a942ce0 100644
--- a/hw/misc/arm_l2x0.c
+++ b/hw/misc/arm_l2x0.c
@@ -20,6 +20,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/misc/arm_sysctl.c b/hw/misc/arm_sysctl.c
index be8c9c0a7f..47051436f4 100644
--- a/hw/misc/arm_sysctl.c
+++ b/hw/misc/arm_sysctl.c
@@ -13,6 +13,7 @@
 #include "qemu/timer.h"
 #include "qemu/bitops.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/arm/primecell.h"
 #include "sysemu/sysemu.h"
 #include "qemu/log.h"
diff --git a/hw/misc/armsse-mhu.c b/hw/misc/armsse-mhu.c
index f8d4187bb8..34b6205f11 100644
--- a/hw/misc/armsse-mhu.c
+++ b/hw/misc/armsse-mhu.c
@@ -22,6 +22,7 @@
 #include "qapi/error.h"
 #include "sysemu/sysemu.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/registerfields.h"
 #include "hw/irq.h"
 #include "hw/misc/armsse-mhu.h"
diff --git a/hw/misc/aspeed_scu.c b/hw/misc/aspeed_scu.c
index 71a0d4b7be..268cb24e56 100644
--- a/hw/misc/aspeed_scu.c
+++ b/hw/misc/aspeed_scu.c
@@ -12,6 +12,7 @@
 #include "qemu/osdep.h"
 #include "hw/misc/aspeed_scu.h"
 #include "hw/qdev-properties.h"
+#include "migration/vmstate.h"
 #include "qapi/error.h"
 #include "qapi/visitor.h"
 #include "qemu/bitops.h"
diff --git a/hw/misc/aspeed_sdmc.c b/hw/misc/aspeed_sdmc.c
index b84676d36d..cb13c63ec8 100644
--- a/hw/misc/aspeed_sdmc.c
+++ b/hw/misc/aspeed_sdmc.c
@@ -14,6 +14,7 @@
 #include "hw/misc/aspeed_sdmc.h"
 #include "hw/misc/aspeed_scu.h"
 #include "hw/qdev-properties.h"
+#include "migration/vmstate.h"
 #include "qapi/error.h"
 #include "trace.h"
 
diff --git a/hw/misc/aspeed_xdma.c b/hw/misc/aspeed_xdma.c
index 18a83bcc6c..dca5585a75 100644
--- a/hw/misc/aspeed_xdma.c
+++ b/hw/misc/aspeed_xdma.c
@@ -11,6 +11,7 @@
 #include "qemu/error-report.h"
 #include "hw/irq.h"
 #include "hw/misc/aspeed_xdma.h"
+#include "migration/vmstate.h"
 #include "qapi/error.h"
 
 #include "trace.h"
diff --git a/hw/misc/bcm2835_mbox.c b/hw/misc/bcm2835_mbox.c
index e484d25c29..79bad11631 100644
--- a/hw/misc/bcm2835_mbox.c
+++ b/hw/misc/bcm2835_mbox.c
@@ -12,6 +12,7 @@
 #include "qapi/error.h"
 #include "hw/irq.h"
 #include "hw/misc/bcm2835_mbox.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/misc/bcm2835_property.c b/hw/misc/bcm2835_property.c
index 51cd93fc8b..0d078f15f9 100644
--- a/hw/misc/bcm2835_property.c
+++ b/hw/misc/bcm2835_property.c
@@ -6,6 +6,7 @@
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "hw/misc/bcm2835_property.h"
+#include "migration/vmstate.h"
 #include "hw/irq.h"
 #include "hw/misc/bcm2835_mbox_defs.h"
 #include "sysemu/dma.h"
diff --git a/hw/misc/bcm2835_rng.c b/hw/misc/bcm2835_rng.c
index e882c87568..d0c4e64e88 100644
--- a/hw/misc/bcm2835_rng.c
+++ b/hw/misc/bcm2835_rng.c
@@ -12,6 +12,7 @@
 #include "qemu/guest-random.h"
 #include "qemu/module.h"
 #include "hw/misc/bcm2835_rng.h"
+#include "migration/vmstate.h"
 
 static uint32_t get_random_bytes(void)
 {
diff --git a/hw/misc/eccmemctl.c b/hw/misc/eccmemctl.c
index c16d56c8c7..3300a46bb3 100644
--- a/hw/misc/eccmemctl.c
+++ b/hw/misc/eccmemctl.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "trace.h"
 
diff --git a/hw/misc/exynos4210_clk.c b/hw/misc/exynos4210_clk.c
index 821d9eab3f..bc1463ff89 100644
--- a/hw/misc/exynos4210_clk.c
+++ b/hw/misc/exynos4210_clk.c
@@ -19,6 +19,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/misc/exynos4210_pmu.c b/hw/misc/exynos4210_pmu.c
index 8712774768..4817165121 100644
--- a/hw/misc/exynos4210_pmu.c
+++ b/hw/misc/exynos4210_pmu.c
@@ -26,6 +26,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "sysemu/sysemu.h"
 
diff --git a/hw/misc/exynos4210_rng.c b/hw/misc/exynos4210_rng.c
index b88fe3a26d..38cd61c7ea 100644
--- a/hw/misc/exynos4210_rng.c
+++ b/hw/misc/exynos4210_rng.c
@@ -19,6 +19,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qapi/error.h"
 #include "qemu/log.h"
 #include "qemu/guest-random.h"
diff --git a/hw/misc/imx25_ccm.c b/hw/misc/imx25_ccm.c
index 693ea81040..d3107e5ca2 100644
--- a/hw/misc/imx25_ccm.c
+++ b/hw/misc/imx25_ccm.c
@@ -13,6 +13,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/misc/imx25_ccm.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/misc/imx31_ccm.c b/hw/misc/imx31_ccm.c
index 38a19aa0d0..6e246827ab 100644
--- a/hw/misc/imx31_ccm.c
+++ b/hw/misc/imx31_ccm.c
@@ -13,6 +13,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/misc/imx31_ccm.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/misc/imx6_ccm.c b/hw/misc/imx6_ccm.c
index 9478007f41..7fec8f0a47 100644
--- a/hw/misc/imx6_ccm.c
+++ b/hw/misc/imx6_ccm.c
@@ -12,6 +12,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/misc/imx6_ccm.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/misc/imx6_src.c b/hw/misc/imx6_src.c
index 878ffcdc71..0be683de06 100644
--- a/hw/misc/imx6_src.c
+++ b/hw/misc/imx6_src.c
@@ -10,6 +10,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/misc/imx6_src.h"
+#include "migration/vmstate.h"
 #include "sysemu/sysemu.h"
 #include "qemu/bitops.h"
 #include "qemu/log.h"
diff --git a/hw/misc/imx6ul_ccm.c b/hw/misc/imx6ul_ccm.c
index 37b472d125..a2fc1d0364 100644
--- a/hw/misc/imx6ul_ccm.c
+++ b/hw/misc/imx6ul_ccm.c
@@ -12,6 +12,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/registerfields.h"
+#include "migration/vmstate.h"
 #include "hw/misc/imx6ul_ccm.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/misc/imx7_ccm.c b/hw/misc/imx7_ccm.c
index d9bdcf1027..02fc1ae8d0 100644
--- a/hw/misc/imx7_ccm.c
+++ b/hw/misc/imx7_ccm.c
@@ -14,6 +14,7 @@
 #include "qemu/module.h"
 
 #include "hw/misc/imx7_ccm.h"
+#include "migration/vmstate.h"
 
 static void imx7_analog_reset(DeviceState *dev)
 {
diff --git a/hw/misc/iotkit-secctl.c b/hw/misc/iotkit-secctl.c
index 963fd6efd3..609869821a 100644
--- a/hw/misc/iotkit-secctl.c
+++ b/hw/misc/iotkit-secctl.c
@@ -15,6 +15,7 @@
 #include "qapi/error.h"
 #include "trace.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/registerfields.h"
 #include "hw/irq.h"
 #include "hw/misc/iotkit-secctl.h"
diff --git a/hw/misc/iotkit-sysctl.c b/hw/misc/iotkit-sysctl.c
index 00d4faa6db..31fe9a5997 100644
--- a/hw/misc/iotkit-sysctl.c
+++ b/hw/misc/iotkit-sysctl.c
@@ -24,6 +24,7 @@
 #include "qapi/error.h"
 #include "sysemu/sysemu.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/registerfields.h"
 #include "hw/misc/iotkit-sysctl.h"
 #include "target/arm/arm-powerctl.h"
diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c
index f9cc66aba8..d9b7ea145c 100644
--- a/hw/misc/ivshmem.c
+++ b/hw/misc/ivshmem.c
@@ -27,6 +27,7 @@
 #include "hw/pci/msix.h"
 #include "sysemu/kvm.h"
 #include "migration/blocker.h"
+#include "migration/vmstate.h"
 #include "qemu/error-report.h"
 #include "qemu/event_notifier.h"
 #include "qemu/module.h"
diff --git a/hw/misc/macio/cuda.c b/hw/misc/macio/cuda.c
index 4f532efe34..feb80df0ff 100644
--- a/hw/misc/macio/cuda.c
+++ b/hw/misc/macio/cuda.c
@@ -27,6 +27,7 @@
 #include "qemu-common.h"
 #include "hw/hw.h"
 #include "hw/ppc/mac.h"
+#include "migration/vmstate.h"
 #include "hw/input/adb.h"
 #include "hw/misc/mos6522.h"
 #include "hw/misc/macio/cuda.h"
diff --git a/hw/misc/macio/gpio.c b/hw/misc/macio/gpio.c
index 31811ab513..6f90afefb7 100644
--- a/hw/misc/macio/gpio.c
+++ b/hw/misc/macio/gpio.c
@@ -26,6 +26,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/ppc/mac.h"
+#include "migration/vmstate.h"
 #include "hw/misc/macio/macio.h"
 #include "hw/misc/macio/gpio.h"
 #include "hw/nmi.h"
diff --git a/hw/misc/macio/mac_dbdma.c b/hw/misc/macio/mac_dbdma.c
index 8a1de8c31d..beaf083578 100644
--- a/hw/misc/macio/mac_dbdma.c
+++ b/hw/misc/macio/mac_dbdma.c
@@ -41,6 +41,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/ppc/mac_dbdma.h"
+#include "migration/vmstate.h"
 #include "qemu/main-loop.h"
 #include "qemu/module.h"
 #include "qemu/log.h"
diff --git a/hw/misc/macio/macio.c b/hw/misc/macio/macio.c
index 82492096f8..c797bbd698 100644
--- a/hw/misc/macio/macio.c
+++ b/hw/misc/macio/macio.c
@@ -31,6 +31,7 @@
 #include "hw/misc/macio/cuda.h"
 #include "hw/pci/pci.h"
 #include "hw/ppc/mac_dbdma.h"
+#include "migration/vmstate.h"
 #include "hw/char/escc.h"
 #include "hw/misc/macio/macio.h"
 #include "hw/intc/heathrow_pic.h"
diff --git a/hw/misc/macio/pmu.c b/hw/misc/macio/pmu.c
index 6280bcbc61..507f62ba64 100644
--- a/hw/misc/macio/pmu.c
+++ b/hw/misc/macio/pmu.c
@@ -32,6 +32,7 @@
 #include "qemu-common.h"
 #include "hw/hw.h"
 #include "hw/ppc/mac.h"
+#include "migration/vmstate.h"
 #include "hw/input/adb.h"
 #include "hw/irq.h"
 #include "hw/misc/mos6522.h"
diff --git a/hw/misc/max111x.c b/hw/misc/max111x.c
index 6fd7210c67..a713149f16 100644
--- a/hw/misc/max111x.c
+++ b/hw/misc/max111x.c
@@ -13,6 +13,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/ssi/ssi.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 
 typedef struct {
diff --git a/hw/misc/milkymist-hpdmc.c b/hw/misc/milkymist-hpdmc.c
index 701c79e81c..e9722d6c76 100644
--- a/hw/misc/milkymist-hpdmc.c
+++ b/hw/misc/milkymist-hpdmc.c
@@ -24,6 +24,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 #include "qemu/error-report.h"
 #include "qemu/module.h"
diff --git a/hw/misc/milkymist-pfpu.c b/hw/misc/milkymist-pfpu.c
index fb21b898d1..8c6baf5406 100644
--- a/hw/misc/milkymist-pfpu.c
+++ b/hw/misc/milkymist-pfpu.c
@@ -26,6 +26,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/misc/mips_cmgcr.c b/hw/misc/mips_cmgcr.c
index edec164605..6dcdb4a225 100644
--- a/hw/misc/mips_cmgcr.c
+++ b/hw/misc/mips_cmgcr.c
@@ -14,6 +14,7 @@
 #include "qemu/module.h"
 #include "hw/hw.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "sysemu/sysemu.h"
 #include "hw/misc/mips_cmgcr.h"
 #include "hw/misc/mips_cpc.h"
diff --git a/hw/misc/mips_cpc.c b/hw/misc/mips_cpc.c
index 446b1ad397..caa618f582 100644
--- a/hw/misc/mips_cpc.c
+++ b/hw/misc/mips_cpc.c
@@ -23,6 +23,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 
 #include "hw/misc/mips_cpc.h"
 
diff --git a/hw/misc/mos6522.c b/hw/misc/mos6522.c
index 84c677c131..7e6dead089 100644
--- a/hw/misc/mos6522.c
+++ b/hw/misc/mos6522.c
@@ -29,6 +29,7 @@
 #include "hw/input/adb.h"
 #include "hw/irq.h"
 #include "hw/misc/mos6522.h"
+#include "migration/vmstate.h"
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
 #include "qemu/cutils.h"
diff --git a/hw/misc/mps2-fpgaio.c b/hw/misc/mps2-fpgaio.c
index b97ad42d75..4824dc09b2 100644
--- a/hw/misc/mps2-fpgaio.c
+++ b/hw/misc/mps2-fpgaio.c
@@ -21,6 +21,7 @@
 #include "qapi/error.h"
 #include "trace.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/registerfields.h"
 #include "hw/misc/mps2-fpgaio.h"
 #include "qemu/timer.h"
diff --git a/hw/misc/mps2-scc.c b/hw/misc/mps2-scc.c
index 1fdf5d22bd..042ce130ba 100644
--- a/hw/misc/mps2-scc.c
+++ b/hw/misc/mps2-scc.c
@@ -22,6 +22,7 @@
 #include "qemu/module.h"
 #include "trace.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/registerfields.h"
 #include "hw/misc/mps2-scc.h"
 
diff --git a/hw/misc/msf2-sysreg.c b/hw/misc/msf2-sysreg.c
index 21a2863821..da0f7c26e1 100644
--- a/hw/misc/msf2-sysreg.c
+++ b/hw/misc/msf2-sysreg.c
@@ -17,6 +17,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/misc/msf2-sysreg.h"
+#include "migration/vmstate.h"
 #include "qemu/error-report.h"
 #include "trace.h"
 
diff --git a/hw/misc/mst_fpga.c b/hw/misc/mst_fpga.c
index 256746ac15..d002870e56 100644
--- a/hw/misc/mst_fpga.c
+++ b/hw/misc/mst_fpga.c
@@ -15,6 +15,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 
 /* Mainstone FPGA for extern irqs */
diff --git a/hw/misc/nrf51_rng.c b/hw/misc/nrf51_rng.c
index cf1bec223e..8528c8880c 100644
--- a/hw/misc/nrf51_rng.c
+++ b/hw/misc/nrf51_rng.c
@@ -16,6 +16,7 @@
 #include "hw/arm/nrf51.h"
 #include "hw/irq.h"
 #include "hw/misc/nrf51_rng.h"
+#include "migration/vmstate.h"
 #include "qemu/guest-random.h"
 
 static void update_irq(NRF51RNGState *s)
diff --git a/hw/misc/pca9552.c b/hw/misc/pca9552.c
index 3422397f89..bb05811e1f 100644
--- a/hw/misc/pca9552.c
+++ b/hw/misc/pca9552.c
@@ -15,6 +15,7 @@
 #include "hw/hw.h"
 #include "hw/misc/pca9552.h"
 #include "hw/misc/pca9552_regs.h"
+#include "migration/vmstate.h"
 
 #define PCA9552_LED_ON   0x0
 #define PCA9552_LED_OFF  0x1
diff --git a/hw/misc/slavio_misc.c b/hw/misc/slavio_misc.c
index 5f351950db..7ef73506ae 100644
--- a/hw/misc/slavio_misc.c
+++ b/hw/misc/slavio_misc.c
@@ -26,6 +26,7 @@
 #include "sysemu/sysemu.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "trace.h"
 
diff --git a/hw/misc/tmp105.c b/hw/misc/tmp105.c
index 2e304218f4..28996473cb 100644
--- a/hw/misc/tmp105.c
+++ b/hw/misc/tmp105.c
@@ -22,6 +22,7 @@
 #include "hw/hw.h"
 #include "hw/i2c/i2c.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "tmp105.h"
 #include "qapi/error.h"
 #include "qapi/visitor.h"
diff --git a/hw/misc/tmp421.c b/hw/misc/tmp421.c
index 69ee5db4b7..6728aa7e10 100644
--- a/hw/misc/tmp421.c
+++ b/hw/misc/tmp421.c
@@ -27,6 +27,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/i2c/i2c.h"
+#include "migration/vmstate.h"
 #include "qapi/error.h"
 #include "qapi/visitor.h"
 #include "qemu/module.h"
diff --git a/hw/misc/tz-mpc.c b/hw/misc/tz-mpc.c
index 802aeb7377..deb7796ec2 100644
--- a/hw/misc/tz-mpc.c
+++ b/hw/misc/tz-mpc.c
@@ -15,6 +15,7 @@
 #include "qapi/error.h"
 #include "trace.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/registerfields.h"
 #include "hw/irq.h"
 #include "hw/misc/tz-mpc.h"
diff --git a/hw/misc/tz-msc.c b/hw/misc/tz-msc.c
index 7d1a536ce4..5b664d760f 100644
--- a/hw/misc/tz-msc.c
+++ b/hw/misc/tz-msc.c
@@ -15,6 +15,7 @@
 #include "qapi/error.h"
 #include "trace.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/registerfields.h"
 #include "hw/irq.h"
 #include "hw/misc/tz-msc.h"
diff --git a/hw/misc/tz-ppc.c b/hw/misc/tz-ppc.c
index 54db7fc152..ccc4468c11 100644
--- a/hw/misc/tz-ppc.c
+++ b/hw/misc/tz-ppc.c
@@ -15,6 +15,7 @@
 #include "qapi/error.h"
 #include "trace.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/registerfields.h"
 #include "hw/irq.h"
 #include "hw/misc/tz-ppc.h"
diff --git a/hw/misc/vmcoreinfo.c b/hw/misc/vmcoreinfo.c
index 49e87d462b..326a3ce8f4 100644
--- a/hw/misc/vmcoreinfo.c
+++ b/hw/misc/vmcoreinfo.c
@@ -15,6 +15,7 @@
 #include "qemu/module.h"
 #include "sysemu/reset.h"
 #include "hw/nvram/fw_cfg.h"
+#include "migration/vmstate.h"
 #include "hw/misc/vmcoreinfo.h"
 
 static void fw_cfg_vmci_write(void *dev, off_t offset, size_t len)
diff --git a/hw/misc/zynq-xadc.c b/hw/misc/zynq-xadc.c
index c5cff5a8a9..edfe76ba20 100644
--- a/hw/misc/zynq-xadc.c
+++ b/hw/misc/zynq-xadc.c
@@ -17,6 +17,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/misc/zynq-xadc.h"
+#include "migration/vmstate.h"
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
 #include "qemu/log.h"
diff --git a/hw/misc/zynq_slcr.c b/hw/misc/zynq_slcr.c
index 6b51ae5ff1..82430a146a 100644
--- a/hw/misc/zynq_slcr.c
+++ b/hw/misc/zynq_slcr.c
@@ -18,6 +18,7 @@
 #include "hw/hw.h"
 #include "qemu/timer.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "sysemu/sysemu.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/net/allwinner_emac.c b/hw/net/allwinner_emac.c
index dad25bd4e9..f4b8c4fa67 100644
--- a/hw/net/allwinner_emac.c
+++ b/hw/net/allwinner_emac.c
@@ -19,6 +19,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "net/net.h"
 #include "qemu/fifo8.h"
 #include "hw/irq.h"
diff --git a/hw/net/cadence_gem.c b/hw/net/cadence_gem.c
index f4e4a4dd87..ab6f7e8262 100644
--- a/hw/net/cadence_gem.c
+++ b/hw/net/cadence_gem.c
@@ -27,6 +27,7 @@
 
 #include "hw/irq.h"
 #include "hw/net/cadence_gem.h"
+#include "migration/vmstate.h"
 #include "qapi/error.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/net/can/can_kvaser_pci.c b/hw/net/can/can_kvaser_pci.c
index 3b8e38eb83..10963ef58c 100644
--- a/hw/net/can/can_kvaser_pci.c
+++ b/hw/net/can/can_kvaser_pci.c
@@ -39,6 +39,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "net/can_emu.h"
 
 #include "can_sja1000.h"
diff --git a/hw/net/can/can_mioe3680_pci.c b/hw/net/can/can_mioe3680_pci.c
index c09ae69261..9e060dff01 100644
--- a/hw/net/can/can_mioe3680_pci.c
+++ b/hw/net/can/can_mioe3680_pci.c
@@ -35,6 +35,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "net/can_emu.h"
 
 #include "can_sja1000.h"
diff --git a/hw/net/can/can_pcm3680_pci.c b/hw/net/can/can_pcm3680_pci.c
index 843a76cf37..5d12f0c552 100644
--- a/hw/net/can/can_pcm3680_pci.c
+++ b/hw/net/can/can_pcm3680_pci.c
@@ -35,6 +35,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "net/can_emu.h"
 
 #include "can_sja1000.h"
diff --git a/hw/net/can/can_sja1000.c b/hw/net/can/can_sja1000.c
index ee079d355f..6c84be6d29 100644
--- a/hw/net/can/can_sja1000.c
+++ b/hw/net/can/can_sja1000.c
@@ -30,6 +30,7 @@
 #include "chardev/char.h"
 #include "hw/hw.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "net/can_emu.h"
 
 #include "can_sja1000.h"
diff --git a/hw/net/dp8393x.c b/hw/net/dp8393x.c
index 70a78ad337..8d0cafc6ba 100644
--- a/hw/net/dp8393x.c
+++ b/hw/net/dp8393x.c
@@ -20,6 +20,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "net/net.h"
 #include "qapi/error.h"
 #include "qemu/module.h"
diff --git a/hw/net/e1000.c b/hw/net/e1000.c
index a023ceb27c..e4e91382f0 100644
--- a/hw/net/e1000.c
+++ b/hw/net/e1000.c
@@ -28,6 +28,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "net/net.h"
 #include "net/checksum.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/net/e1000e.c b/hw/net/e1000e.c
index 581f7d03d5..22e3132581 100644
--- a/hw/net/e1000e.c
+++ b/hw/net/e1000e.c
@@ -42,6 +42,7 @@
 #include "sysemu/sysemu.h"
 #include "hw/pci/msi.h"
 #include "hw/pci/msix.h"
+#include "migration/vmstate.h"
 
 #include "e1000_regs.h"
 
diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c
index e0cf0c46d7..3c1c534cbf 100644
--- a/hw/net/eepro100.c
+++ b/hw/net/eepro100.c
@@ -44,6 +44,7 @@
 #include "qemu/units.h"
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "net/net.h"
 #include "net/eth.h"
 #include "hw/nvram/eeprom93xx.h"
diff --git a/hw/net/ftgmac100.c b/hw/net/ftgmac100.c
index 2848bff3e5..4d0f56c123 100644
--- a/hw/net/ftgmac100.c
+++ b/hw/net/ftgmac100.c
@@ -20,6 +20,7 @@
 #include "net/checksum.h"
 #include "net/eth.h"
 #include "hw/net/mii.h"
+#include "migration/vmstate.h"
 
 /* For crc32 */
 #include <zlib.h>
diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c
index fe9d9028fa..5a22542aaf 100644
--- a/hw/net/imx_fec.c
+++ b/hw/net/imx_fec.c
@@ -24,6 +24,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/net/imx_fec.h"
+#include "migration/vmstate.h"
 #include "sysemu/dma.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/net/lan9118.c b/hw/net/lan9118.c
index e2da54cbd8..937d5603e2 100644
--- a/hw/net/lan9118.c
+++ b/hw/net/lan9118.c
@@ -12,6 +12,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "net/net.h"
 #include "net/eth.h"
 #include "hw/irq.h"
diff --git a/hw/net/lance.c b/hw/net/lance.c
index 2978c01d58..0d094327cb 100644
--- a/hw/net/lance.c
+++ b/hw/net/lance.c
@@ -39,6 +39,7 @@
 #include "qemu/module.h"
 #include "qemu/timer.h"
 #include "hw/sparc/sparc32_dma.h"
+#include "migration/vmstate.h"
 #include "hw/net/lance.h"
 #include "trace.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/net/milkymist-minimac2.c b/hw/net/milkymist-minimac2.c
index bad1066781..a7d879f0ab 100644
--- a/hw/net/milkymist-minimac2.c
+++ b/hw/net/milkymist-minimac2.c
@@ -28,6 +28,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 #include "net/net.h"
 #include "qemu/log.h"
diff --git a/hw/net/mipsnet.c b/hw/net/mipsnet.c
index 007c94aa30..3910beb9a6 100644
--- a/hw/net/mipsnet.c
+++ b/hw/net/mipsnet.c
@@ -5,6 +5,7 @@
 #include "qemu/module.h"
 #include "trace.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 
 /* MIPSnet register offsets */
 
diff --git a/hw/net/ne2000-isa.c b/hw/net/ne2000-isa.c
index 3490e54c5a..5195c107d0 100644
--- a/hw/net/ne2000-isa.c
+++ b/hw/net/ne2000-isa.c
@@ -26,6 +26,7 @@
 #include "hw/isa/isa.h"
 #include "hw/net/ne2000-isa.h"
 #include "hw/qdev.h"
+#include "migration/vmstate.h"
 #include "ne2000.h"
 #include "sysemu/sysemu.h"
 #include "qapi/error.h"
diff --git a/hw/net/ne2000-pci.c b/hw/net/ne2000-pci.c
index 4f28e31baa..084d92f955 100644
--- a/hw/net/ne2000-pci.c
+++ b/hw/net/ne2000-pci.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "ne2000.h"
 #include "sysemu/sysemu.h"
 
diff --git a/hw/net/ne2000.c b/hw/net/ne2000.c
index 4b9231c495..7731b5acd1 100644
--- a/hw/net/ne2000.c
+++ b/hw/net/ne2000.c
@@ -26,6 +26,7 @@
 #include "net/eth.h"
 #include "qemu/module.h"
 #include "hw/irq.h"
+#include "migration/vmstate.h"
 #include "ne2000.h"
 #include "sysemu/sysemu.h"
 #include "trace.h"
diff --git a/hw/net/pcnet-pci.c b/hw/net/pcnet-pci.c
index df8cb6621f..a77d2c9368 100644
--- a/hw/net/pcnet-pci.c
+++ b/hw/net/pcnet-pci.c
@@ -30,6 +30,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "net/net.h"
 #include "qemu/module.h"
 #include "qemu/timer.h"
diff --git a/hw/net/pcnet.c b/hw/net/pcnet.c
index f73e3422f4..bfcfcf5be3 100644
--- a/hw/net/pcnet.c
+++ b/hw/net/pcnet.c
@@ -39,6 +39,7 @@
 #include "qemu/log.h"
 #include "hw/irq.h"
 #include "hw/qdev.h"
+#include "migration/vmstate.h"
 #include "net/net.h"
 #include "net/eth.h"
 #include "qemu/timer.h"
diff --git a/hw/net/rocker/rocker.c b/hw/net/rocker/rocker.c
index bd54612f2a..4ce8f62a2a 100644
--- a/hw/net/rocker/rocker.c
+++ b/hw/net/rocker/rocker.c
@@ -18,6 +18,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "hw/pci/msix.h"
 #include "net/net.h"
 #include "net/eth.h"
diff --git a/hw/net/rtl8139.c b/hw/net/rtl8139.c
index 09273171e5..9975af44dd 100644
--- a/hw/net/rtl8139.c
+++ b/hw/net/rtl8139.c
@@ -55,6 +55,7 @@
 
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "sysemu/dma.h"
 #include "qemu/module.h"
 #include "qemu/timer.h"
diff --git a/hw/net/smc91c111.c b/hw/net/smc91c111.c
index f5149124e6..67e3f2408e 100644
--- a/hw/net/smc91c111.c
+++ b/hw/net/smc91c111.c
@@ -9,6 +9,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "net/net.h"
 #include "hw/irq.h"
 #include "hw/net/smc91c111.h"
diff --git a/hw/net/spapr_llan.c b/hw/net/spapr_llan.c
index 1867c355e3..0ce5e37a28 100644
--- a/hw/net/spapr_llan.c
+++ b/hw/net/spapr_llan.c
@@ -33,6 +33,7 @@
 #include "qemu/module.h"
 #include "net/net.h"
 #include "hw/qdev.h"
+#include "migration/vmstate.h"
 #include "hw/ppc/spapr.h"
 #include "hw/ppc/spapr_vio.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/net/stellaris_enet.c b/hw/net/stellaris_enet.c
index 756ac5600b..154214ca1d 100644
--- a/hw/net/stellaris_enet.c
+++ b/hw/net/stellaris_enet.c
@@ -10,6 +10,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "net/net.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/net/sungem.c b/hw/net/sungem.c
index 89bcf749d1..f5e30725be 100644
--- a/hw/net/sungem.c
+++ b/hw/net/sungem.c
@@ -9,6 +9,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "net/net.h"
diff --git a/hw/net/sunhme.c b/hw/net/sunhme.c
index 8b8603e696..9d8fd70f51 100644
--- a/hw/net/sunhme.c
+++ b/hw/net/sunhme.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "hw/net/mii.h"
 #include "net/net.h"
 #include "qemu/module.h"
diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c
index 10d01d0058..88a7c13a96 100644
--- a/hw/net/vmxnet3.c
+++ b/hw/net/vmxnet3.c
@@ -26,6 +26,7 @@
 #include "hw/pci/msix.h"
 #include "hw/pci/msi.h"
 #include "migration/register.h"
+#include "migration/vmstate.h"
 
 #include "vmxnet3.h"
 #include "vmxnet3_defs.h"
diff --git a/hw/net/xgmac.c b/hw/net/xgmac.c
index c2efc77452..ded8b9cf9d 100644
--- a/hw/net/xgmac.c
+++ b/hw/net/xgmac.c
@@ -27,6 +27,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "net/net.h"
diff --git a/hw/nvram/ds1225y.c b/hw/nvram/ds1225y.c
index fd49283f41..9cddb37925 100644
--- a/hw/nvram/ds1225y.c
+++ b/hw/nvram/ds1225y.c
@@ -24,6 +24,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 #include "qemu/error-report.h"
 #include "qemu/module.h"
diff --git a/hw/nvram/eeprom93xx.c b/hw/nvram/eeprom93xx.c
index 5fc23df1d4..c2b012d583 100644
--- a/hw/nvram/eeprom93xx.c
+++ b/hw/nvram/eeprom93xx.c
@@ -39,6 +39,7 @@
 #include "hw/hw.h"
 #include "hw/nvram/eeprom93xx.h"
 #include "migration/qemu-file-types.h"
+#include "migration/vmstate.h"
 
 /* Debug EEPROM emulation. */
 //~ #define DEBUG_EEPROM
diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c
index 8db0297d59..a5e614016a 100644
--- a/hw/nvram/fw_cfg.c
+++ b/hw/nvram/fw_cfg.c
@@ -32,6 +32,7 @@
 #include "hw/nvram/fw_cfg.h"
 #include "hw/sysbus.h"
 #include "migration/qemu-file-types.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 #include "qemu/error-report.h"
 #include "qemu/option.h"
diff --git a/hw/nvram/mac_nvram.c b/hw/nvram/mac_nvram.c
index a60426c469..4f0d2f6bd4 100644
--- a/hw/nvram/mac_nvram.c
+++ b/hw/nvram/mac_nvram.c
@@ -27,6 +27,7 @@
 #include "hw/hw.h"
 #include "hw/nvram/chrp_nvram.h"
 #include "hw/ppc/mac.h"
+#include "migration/vmstate.h"
 #include "qemu/cutils.h"
 #include "qemu/module.h"
 #include <zlib.h>
diff --git a/hw/nvram/nrf51_nvm.c b/hw/nvram/nrf51_nvm.c
index eca0cb35b5..e13ff4b2fe 100644
--- a/hw/nvram/nrf51_nvm.c
+++ b/hw/nvram/nrf51_nvm.c
@@ -24,6 +24,7 @@
 #include "exec/address-spaces.h"
 #include "hw/arm/nrf51.h"
 #include "hw/nvram/nrf51_nvm.h"
+#include "migration/vmstate.h"
 
 /*
  * FICR Registers Assignments
diff --git a/hw/nvram/spapr_nvram.c b/hw/nvram/spapr_nvram.c
index 09efd886bf..ef22962767 100644
--- a/hw/nvram/spapr_nvram.c
+++ b/hw/nvram/spapr_nvram.c
@@ -32,6 +32,7 @@
 #include "sysemu/block-backend.h"
 #include "sysemu/device_tree.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/nvram/chrp_nvram.h"
 #include "hw/ppc/spapr.h"
 #include "hw/ppc/spapr_vio.h"
diff --git a/hw/openrisc/cputimer.c b/hw/openrisc/cputimer.c
index fe95efc41c..e9f89333dc 100644
--- a/hw/openrisc/cputimer.c
+++ b/hw/openrisc/cputimer.c
@@ -21,6 +21,7 @@
 #include "qemu/osdep.h"
 #include "cpu.h"
 #include "hw/hw.h"
+#include "migration/vmstate.h"
 #include "qemu/timer.h"
 
 #define TIMER_PERIOD 50 /* 50 ns period for 20 MHz timer */
diff --git a/hw/pci-bridge/gen_pcie_root_port.c b/hw/pci-bridge/gen_pcie_root_port.c
index 44acda7cb9..fb78cf1905 100644
--- a/hw/pci-bridge/gen_pcie_root_port.c
+++ b/hw/pci-bridge/gen_pcie_root_port.c
@@ -15,6 +15,7 @@
 #include "qemu/module.h"
 #include "hw/pci/msix.h"
 #include "hw/pci/pcie_port.h"
+#include "migration/vmstate.h"
 
 #define TYPE_GEN_PCIE_ROOT_PORT                "pcie-root-port"
 #define GEN_PCIE_ROOT_PORT(obj) \
diff --git a/hw/pci-bridge/i82801b11.c b/hw/pci-bridge/i82801b11.c
index db77a3541b..2b3907655b 100644
--- a/hw/pci-bridge/i82801b11.c
+++ b/hw/pci-bridge/i82801b11.c
@@ -43,6 +43,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "hw/i386/ich9.h"
 
diff --git a/hw/pci-bridge/ioh3420.c b/hw/pci-bridge/ioh3420.c
index 310af04af9..f1e16135a3 100644
--- a/hw/pci-bridge/ioh3420.c
+++ b/hw/pci-bridge/ioh3420.c
@@ -25,6 +25,7 @@
 #include "hw/pci/msi.h"
 #include "hw/pci/pcie.h"
 #include "hw/pci/pcie_port.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 
 #define PCI_DEVICE_ID_IOH_EPORT         0x3420  /* D0:F0 express mode */
diff --git a/hw/pci-bridge/xio3130_downstream.c b/hw/pci-bridge/xio3130_downstream.c
index 182e164f74..1d62e31272 100644
--- a/hw/pci-bridge/xio3130_downstream.c
+++ b/hw/pci-bridge/xio3130_downstream.c
@@ -24,6 +24,7 @@
 #include "hw/pci/msi.h"
 #include "hw/pci/pcie.h"
 #include "hw/pci/pcie_port.h"
+#include "migration/vmstate.h"
 #include "qapi/error.h"
 #include "qemu/module.h"
 
diff --git a/hw/pci-bridge/xio3130_upstream.c b/hw/pci-bridge/xio3130_upstream.c
index b8cb31355f..5cd3af4fbc 100644
--- a/hw/pci-bridge/xio3130_upstream.c
+++ b/hw/pci-bridge/xio3130_upstream.c
@@ -24,6 +24,7 @@
 #include "hw/pci/msi.h"
 #include "hw/pci/pcie.h"
 #include "hw/pci/pcie_port.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 
 #define PCI_DEVICE_ID_TI_XIO3130U       0x8232  /* upstream port */
diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c
index ca526bd71b..58870e0d87 100644
--- a/hw/pci-host/bonito.c
+++ b/hw/pci-host/bonito.c
@@ -45,6 +45,7 @@
 #include "hw/irq.h"
 #include "hw/mips/mips.h"
 #include "hw/pci/pci_host.h"
+#include "migration/vmstate.h"
 #include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
 #include "exec/address-spaces.h"
diff --git a/hw/pci-host/designware.c b/hw/pci-host/designware.c
index de4300d554..083f5bb1a6 100644
--- a/hw/pci-host/designware.c
+++ b/hw/pci-host/designware.c
@@ -25,6 +25,7 @@
 #include "hw/pci/pci_bridge.h"
 #include "hw/pci/pci_host.h"
 #include "hw/pci/pcie_port.h"
+#include "migration/vmstate.h"
 #include "hw/irq.h"
 #include "hw/pci-host/designware.h"
 
diff --git a/hw/pci-host/gpex.c b/hw/pci-host/gpex.c
index 72c58a054b..1a45c30505 100644
--- a/hw/pci-host/gpex.c
+++ b/hw/pci-host/gpex.c
@@ -34,6 +34,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/pci-host/gpex.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 
 /****************************************************************************
diff --git a/hw/pci-host/piix.c b/hw/pci-host/piix.c
index ecf634a04d..9e8c8542d3 100644
--- a/hw/pci-host/piix.c
+++ b/hw/pci-host/piix.c
@@ -34,6 +34,7 @@
 #include "qemu/range.h"
 #include "hw/xen/xen.h"
 #include "migration/qemu-file-types.h"
+#include "migration/vmstate.h"
 #include "hw/pci-host/pam.h"
 #include "sysemu/reset.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/pci-host/ppce500.c b/hw/pci-host/ppce500.c
index 406ebf0438..840869f19c 100644
--- a/hw/pci-host/ppce500.c
+++ b/hw/pci-host/ppce500.c
@@ -18,6 +18,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/ppc/e500-ccsr.h"
+#include "migration/vmstate.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_host.h"
 #include "qemu/bswap.h"
diff --git a/hw/pci-host/prep.c b/hw/pci-host/prep.c
index 2b68af9811..34a36812ea 100644
--- a/hw/pci-host/prep.c
+++ b/hw/pci-host/prep.c
@@ -31,6 +31,7 @@
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_bus.h"
 #include "hw/pci/pci_host.h"
+#include "migration/vmstate.h"
 #include "hw/i386/pc.h"
 #include "hw/irq.h"
 #include "hw/loader.h"
diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c
index 0a010be4cf..25335a8b71 100644
--- a/hw/pci-host/q35.c
+++ b/hw/pci-host/q35.c
@@ -31,6 +31,7 @@
 #include "qemu/osdep.h"
 #include "hw/hw.h"
 #include "hw/pci-host/q35.h"
+#include "migration/vmstate.h"
 #include "qapi/error.h"
 #include "qapi/visitor.h"
 #include "qemu/module.h"
diff --git a/hw/pci-host/versatile.c b/hw/pci-host/versatile.c
index 221cc40134..1cd832a393 100644
--- a/hw/pci-host/versatile.c
+++ b/hw/pci-host/versatile.c
@@ -9,6 +9,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/irq.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci_bus.h"
diff --git a/hw/pci/msix.c b/hw/pci/msix.c
index ebe804b473..81a23accf3 100644
--- a/hw/pci/msix.c
+++ b/hw/pci/msix.c
@@ -21,6 +21,7 @@
 #include "hw/pci/pci.h"
 #include "hw/xen/xen.h"
 #include "migration/qemu-file-types.h"
+#include "migration/vmstate.h"
 #include "qemu/range.h"
 #include "qapi/error.h"
 #include "trace.h"
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index bc7ce92dcb..de3691eee4 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -31,6 +31,7 @@
 #include "hw/pci/pci_bus.h"
 #include "hw/pci/pci_host.h"
 #include "migration/qemu-file-types.h"
+#include "migration/vmstate.h"
 #include "monitor/monitor.h"
 #include "net/net.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/pci/pcie_aer.c b/hw/pci/pcie_aer.c
index 939da0b778..27f9cc56af 100644
--- a/hw/pci/pcie_aer.c
+++ b/hw/pci/pcie_aer.c
@@ -21,6 +21,7 @@
 #include "qemu/osdep.h"
 #include "sysemu/sysemu.h"
 #include "qapi/qmp/qdict.h"
+#include "migration/vmstate.h"
 #include "monitor/monitor.h"
 #include "hw/pci/pci_bridge.h"
 #include "hw/pci/pcie.h"
diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c
index 163a34ee4c..5cc321828e 100644
--- a/hw/ppc/ppc.c
+++ b/hw/ppc/ppc.c
@@ -35,6 +35,7 @@
 #include "qemu/error-report.h"
 #include "sysemu/kvm.h"
 #include "kvm_ppc.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 
 //#define PPC_DEBUG_IRQ
diff --git a/hw/ppc/ppc4xx_pci.c b/hw/ppc/ppc4xx_pci.c
index 27f25f4e58..7334d75890 100644
--- a/hw/ppc/ppc4xx_pci.c
+++ b/hw/ppc/ppc4xx_pci.c
@@ -24,6 +24,7 @@
 #include "hw/irq.h"
 #include "hw/ppc/ppc.h"
 #include "hw/ppc/ppc4xx.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "sysemu/reset.h"
 #include "hw/pci/pci.h"
diff --git a/hw/ppc/prep_systemio.c b/hw/ppc/prep_systemio.c
index 898ab1533f..d46792d366 100644
--- a/hw/ppc/prep_systemio.c
+++ b/hw/ppc/prep_systemio.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/isa/isa.h"
+#include "migration/vmstate.h"
 #include "exec/address-spaces.h"
 #include "qemu/error-report.h" /* for error_report() */
 #include "qemu/module.h"
diff --git a/hw/ppc/rs6000_mc.c b/hw/ppc/rs6000_mc.c
index 45cb95e08a..daea13cdea 100644
--- a/hw/ppc/rs6000_mc.c
+++ b/hw/ppc/rs6000_mc.c
@@ -20,6 +20,7 @@
 #include "qemu/osdep.h"
 #include "qemu/units.h"
 #include "hw/isa/isa.h"
+#include "migration/vmstate.h"
 #include "exec/address-spaces.h"
 #include "hw/boards.h"
 #include "qapi/error.h"
diff --git a/hw/ppc/spapr_caps.c b/hw/ppc/spapr_caps.c
index bbb001f84a..7830d66d77 100644
--- a/hw/ppc/spapr_caps.c
+++ b/hw/ppc/spapr_caps.c
@@ -32,6 +32,7 @@
 #include "target/ppc/mmu-hash64.h"
 #include "cpu-models.h"
 #include "kvm_ppc.h"
+#include "migration/vmstate.h"
 #include "sysemu/qtest.h"
 #include "sysemu/tcg.h"
 
diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
index ccc8970c7c..f86f773d42 100644
--- a/hw/ppc/spapr_cpu_core.c
+++ b/hw/ppc/spapr_cpu_core.c
@@ -10,6 +10,7 @@
 #include "qemu/osdep.h"
 #include "hw/cpu/core.h"
 #include "hw/ppc/spapr_cpu_core.h"
+#include "migration/vmstate.h"
 #include "target/ppc/cpu.h"
 #include "hw/ppc/spapr.h"
 #include "hw/boards.h"
diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c
index 678493a9c5..c09bbcc22d 100644
--- a/hw/ppc/spapr_drc.c
+++ b/hw/ppc/spapr_drc.c
@@ -18,6 +18,7 @@
 #include "hw/ppc/spapr_drc.h"
 #include "qom/object.h"
 #include "hw/qdev.h"
+#include "migration/vmstate.h"
 #include "qapi/visitor.h"
 #include "qemu/error-report.h"
 #include "hw/ppc/spapr.h" /* for RTAS return codes */
diff --git a/hw/ppc/spapr_iommu.c b/hw/ppc/spapr_iommu.c
index bd3d0256a6..57834e6a39 100644
--- a/hw/ppc/spapr_iommu.c
+++ b/hw/ppc/spapr_iommu.c
@@ -25,6 +25,7 @@
 #include "sysemu/kvm.h"
 #include "hw/qdev.h"
 #include "kvm_ppc.h"
+#include "migration/vmstate.h"
 #include "sysemu/dma.h"
 #include "exec/address-spaces.h"
 #include "trace.h"
diff --git a/hw/ppc/spapr_ovec.c b/hw/ppc/spapr_ovec.c
index a65b7c7da9..811fadf143 100644
--- a/hw/ppc/spapr_ovec.c
+++ b/hw/ppc/spapr_ovec.c
@@ -13,6 +13,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/ppc/spapr_ovec.h"
+#include "migration/vmstate.h"
 #include "qemu/bitmap.h"
 #include "exec/address-spaces.h"
 #include "qemu/error-report.h"
diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index 54d0a32c17..e5f592322f 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -29,6 +29,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/msi.h"
 #include "hw/pci/msix.h"
diff --git a/hw/ppc/spapr_rtc.c b/hw/ppc/spapr_rtc.c
index 6cf0113b34..42ff72c269 100644
--- a/hw/ppc/spapr_rtc.c
+++ b/hw/ppc/spapr_rtc.c
@@ -31,6 +31,7 @@
 #include "qemu/timer.h"
 #include "sysemu/sysemu.h"
 #include "hw/ppc/spapr.h"
+#include "migration/vmstate.h"
 #include "qapi/error.h"
 #include "qapi/qapi-events-misc-target.h"
 #include "qemu/cutils.h"
diff --git a/hw/ppc/spapr_vio.c b/hw/ppc/spapr_vio.c
index 0f4f4bedd3..1095aa5f00 100644
--- a/hw/ppc/spapr_vio.c
+++ b/hw/ppc/spapr_vio.c
@@ -34,6 +34,7 @@
 #include "sysemu/kvm.h"
 #include "sysemu/device_tree.h"
 #include "kvm_ppc.h"
+#include "migration/vmstate.h"
 #include "sysemu/qtest.h"
 
 #include "hw/ppc/spapr.h"
diff --git a/hw/riscv/sifive_gpio.c b/hw/riscv/sifive_gpio.c
index da19daa880..5c7c596e6b 100644
--- a/hw/riscv/sifive_gpio.c
+++ b/hw/riscv/sifive_gpio.c
@@ -15,6 +15,7 @@
 #include "qemu/log.h"
 #include "hw/irq.h"
 #include "hw/riscv/sifive_gpio.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 
 static void update_output_irq(SIFIVEGPIOState *s)
diff --git a/hw/s390x/event-facility.c b/hw/s390x/event-facility.c
index 61f3b74714..056f0711fa 100644
--- a/hw/s390x/event-facility.c
+++ b/hw/s390x/event-facility.c
@@ -21,6 +21,7 @@
 #include "sysemu/sysemu.h"
 
 #include "hw/s390x/sclp.h"
+#include "migration/vmstate.h"
 #include "hw/s390x/event-facility.h"
 
 typedef struct SCLPEventsBus {
diff --git a/hw/s390x/sclpquiesce.c b/hw/s390x/sclpquiesce.c
index 4f73471537..6dfb087568 100644
--- a/hw/s390x/sclpquiesce.c
+++ b/hw/s390x/sclpquiesce.c
@@ -16,6 +16,7 @@
 #include "hw/qdev.h"
 #include "sysemu/sysemu.h"
 #include "hw/s390x/sclp.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "hw/s390x/event-facility.h"
 
diff --git a/hw/scsi/esp-pci.c b/hw/scsi/esp-pci.c
index f945502f3a..d5a1f9e017 100644
--- a/hw/scsi/esp-pci.c
+++ b/hw/scsi/esp-pci.c
@@ -28,6 +28,7 @@
 #include "hw/irq.h"
 #include "hw/nvram/eeprom93xx.h"
 #include "hw/scsi/esp.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 #include "qapi/error.h"
 #include "qemu/log.h"
diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c
index 3b717e9526..841d79b60e 100644
--- a/hw/scsi/esp.c
+++ b/hw/scsi/esp.c
@@ -25,6 +25,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/irq.h"
 #include "hw/scsi/esp.h"
 #include "trace.h"
diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
index 1a042aa00b..175eb79260 100644
--- a/hw/scsi/lsi53c895a.c
+++ b/hw/scsi/lsi53c895a.c
@@ -19,6 +19,7 @@
 #include "hw/irq.h"
 #include "hw/pci/pci.h"
 #include "hw/scsi/scsi.h"
+#include "migration/vmstate.h"
 #include "sysemu/dma.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c
index 0c4399930a..970b10048f 100644
--- a/hw/scsi/megasas.c
+++ b/hw/scsi/megasas.c
@@ -33,6 +33,7 @@
 #include "trace.h"
 #include "qapi/error.h"
 #include "mfi.h"
+#include "migration/vmstate.h"
 
 #define MEGASAS_VERSION_GEN1 "1.70"
 #define MEGASAS_VERSION_GEN2 "1.80"
diff --git a/hw/scsi/mptsas.c b/hw/scsi/mptsas.c
index 6d2c15a2bc..79501777d4 100644
--- a/hw/scsi/mptsas.c
+++ b/hw/scsi/mptsas.c
@@ -35,6 +35,7 @@
 #include "qapi/error.h"
 #include "mptsas.h"
 #include "migration/qemu-file-types.h"
+#include "migration/vmstate.h"
 #include "mpi.h"
 
 #define NAA_LOCALLY_ASSIGNED_ID 0x3ULL
diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c
index 81fe7c3301..42928a6aec 100644
--- a/hw/scsi/scsi-bus.c
+++ b/hw/scsi/scsi-bus.c
@@ -6,6 +6,7 @@
 #include "qemu/option.h"
 #include "hw/scsi/scsi.h"
 #include "migration/qemu-file-types.h"
+#include "migration/vmstate.h"
 #include "scsi/constants.h"
 #include "hw/qdev.h"
 #include "sysemu/block-backend.h"
diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c
index 558fa11511..5fbdecb434 100644
--- a/hw/scsi/scsi-disk.c
+++ b/hw/scsi/scsi-disk.c
@@ -26,6 +26,7 @@
 #include "qemu/module.h"
 #include "hw/scsi/scsi.h"
 #include "migration/qemu-file-types.h"
+#include "migration/vmstate.h"
 #include "hw/scsi/emulation.h"
 #include "scsi/constants.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c
index 0e491c911d..5290f7569a 100644
--- a/hw/scsi/spapr_vscsi.c
+++ b/hw/scsi/spapr_vscsi.c
@@ -37,6 +37,7 @@
 #include "cpu.h"
 #include "hw/hw.h"
 #include "hw/scsi/scsi.h"
+#include "migration/vmstate.h"
 #include "scsi/constants.h"
 #include "srp.h"
 #include "hw/qdev.h"
diff --git a/hw/scsi/vmw_pvscsi.c b/hw/scsi/vmw_pvscsi.c
index 14641df1c8..85af638bc7 100644
--- a/hw/scsi/vmw_pvscsi.c
+++ b/hw/scsi/vmw_pvscsi.c
@@ -29,6 +29,7 @@
 #include "qapi/error.h"
 #include "qemu/module.h"
 #include "hw/scsi/scsi.h"
+#include "migration/vmstate.h"
 #include "scsi/constants.h"
 #include "hw/pci/msi.h"
 #include "vmw_pvscsi.h"
diff --git a/hw/sd/bcm2835_sdhost.c b/hw/sd/bcm2835_sdhost.c
index 4609cc031c..4a80fbcc86 100644
--- a/hw/sd/bcm2835_sdhost.c
+++ b/hw/sd/bcm2835_sdhost.c
@@ -17,6 +17,7 @@
 #include "sysemu/blockdev.h"
 #include "hw/irq.h"
 #include "hw/sd/bcm2835_sdhost.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 
 #define TYPE_BCM2835_SDHOST_BUS "bcm2835-sdhost-bus"
diff --git a/hw/sd/milkymist-memcard.c b/hw/sd/milkymist-memcard.c
index b8d2347d46..dcb7169166 100644
--- a/hw/sd/milkymist-memcard.c
+++ b/hw/sd/milkymist-memcard.c
@@ -26,6 +26,7 @@
 #include "qemu/module.h"
 #include "hw/hw.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "sysemu/sysemu.h"
 #include "trace.h"
 #include "qapi/error.h"
diff --git a/hw/sd/pl181.c b/hw/sd/pl181.c
index 3c615f2b8f..8033fe455d 100644
--- a/hw/sd/pl181.c
+++ b/hw/sd/pl181.c
@@ -10,6 +10,7 @@
 #include "qemu/osdep.h"
 #include "sysemu/blockdev.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/irq.h"
 #include "hw/sd/sd.h"
 #include "qemu/log.h"
diff --git a/hw/sd/pxa2xx_mmci.c b/hw/sd/pxa2xx_mmci.c
index 1eb1248cad..020cd5464c 100644
--- a/hw/sd/pxa2xx_mmci.c
+++ b/hw/sd/pxa2xx_mmci.c
@@ -15,6 +15,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/arm/pxa.h"
 #include "hw/sd/sd.h"
 #include "hw/qdev.h"
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index 21adf2be16..02924329bf 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -38,6 +38,7 @@
 #include "hw/registerfields.h"
 #include "sysemu/block-backend.h"
 #include "hw/sd/sd.h"
+#include "migration/vmstate.h"
 #include "qapi/error.h"
 #include "qemu/bitmap.h"
 #include "hw/qdev-properties.h"
diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c
index 46c7fbd677..f9db39c834 100644
--- a/hw/sd/sdhci.c
+++ b/hw/sd/sdhci.c
@@ -32,6 +32,7 @@
 #include "qemu/timer.h"
 #include "qemu/bitops.h"
 #include "hw/sd/sdhci.h"
+#include "migration/vmstate.h"
 #include "sdhci-internal.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/sd/ssi-sd.c b/hw/sd/ssi-sd.c
index 9bd6511ec8..571aabea5c 100644
--- a/hw/sd/ssi-sd.c
+++ b/hw/sd/ssi-sd.c
@@ -13,6 +13,7 @@
 #include "qemu/osdep.h"
 #include "sysemu/blockdev.h"
 #include "hw/ssi/ssi.h"
+#include "migration/vmstate.h"
 #include "hw/sd/sd.h"
 #include "qapi/error.h"
 #include "qemu/module.h"
diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
index 0f9cda19f3..99b8693a0c 100644
--- a/hw/sparc/sun4m.c
+++ b/hw/sparc/sun4m.c
@@ -32,6 +32,7 @@
 #include "qemu/timer.h"
 #include "hw/sparc/sun4m_iommu.h"
 #include "hw/timer/m48t59.h"
+#include "migration/vmstate.h"
 #include "hw/sparc/sparc32_dma.h"
 #include "hw/block/fdc.h"
 #include "sysemu/reset.h"
diff --git a/hw/sparc/sun4m_iommu.c b/hw/sparc/sun4m_iommu.c
index 36b5c0c133..a5681ded6a 100644
--- a/hw/sparc/sun4m_iommu.c
+++ b/hw/sparc/sun4m_iommu.c
@@ -26,6 +26,7 @@
 #include "hw/irq.h"
 #include "hw/sparc/sun4m_iommu.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "exec/address-spaces.h"
 #include "trace.h"
diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
index 5d87be811d..c95ed94d2e 100644
--- a/hw/sparc64/sun4u.c
+++ b/hw/sparc64/sun4u.c
@@ -21,6 +21,7 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
 #include "qemu/osdep.h"
 #include "qemu/units.h"
 #include "qemu/error-report.h"
@@ -36,6 +37,7 @@
 #include "hw/char/serial.h"
 #include "hw/char/parallel.h"
 #include "hw/timer/m48t59.h"
+#include "migration/vmstate.h"
 #include "hw/input/i8042.h"
 #include "hw/block/fdc.h"
 #include "net/net.h"
diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c
index eb6eee6586..7ace5780a3 100644
--- a/hw/ssi/aspeed_smc.c
+++ b/hw/ssi/aspeed_smc.c
@@ -24,6 +24,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "sysemu/sysemu.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/ssi/imx_spi.c b/hw/ssi/imx_spi.c
index 79c8a6dae7..c918e8cac8 100644
--- a/hw/ssi/imx_spi.c
+++ b/hw/ssi/imx_spi.c
@@ -11,6 +11,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/ssi/imx_spi.h"
+#include "migration/vmstate.h"
 #include "sysemu/sysemu.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/ssi/mss-spi.c b/hw/ssi/mss-spi.c
index d000c91341..3050fabb69 100644
--- a/hw/ssi/mss-spi.c
+++ b/hw/ssi/mss-spi.c
@@ -26,6 +26,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/ssi/mss-spi.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/ssi/pl022.c b/hw/ssi/pl022.c
index 286b08438d..cade2e92a8 100644
--- a/hw/ssi/pl022.c
+++ b/hw/ssi/pl022.c
@@ -9,6 +9,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "hw/irq.h"
 #include "hw/ssi/pl022.h"
 #include "hw/ssi/ssi.h"
diff --git a/hw/ssi/ssi.c b/hw/ssi/ssi.c
index cda7c96a64..c6415eb6e3 100644
--- a/hw/ssi/ssi.c
+++ b/hw/ssi/ssi.c
@@ -14,6 +14,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/ssi/ssi.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 
 struct SSIBus {
diff --git a/hw/ssi/stm32f2xx_spi.c b/hw/ssi/stm32f2xx_spi.c
index 4249101386..cd6e8443db 100644
--- a/hw/ssi/stm32f2xx_spi.c
+++ b/hw/ssi/stm32f2xx_spi.c
@@ -26,6 +26,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/ssi/stm32f2xx_spi.h"
+#include "migration/vmstate.h"
 
 #ifndef STM_SPI_ERR_DEBUG
 #define STM_SPI_ERR_DEBUG 0
diff --git a/hw/ssi/xilinx_spi.c b/hw/ssi/xilinx_spi.c
index 5495d3e3cb..081433c2f0 100644
--- a/hw/ssi/xilinx_spi.c
+++ b/hw/ssi/xilinx_spi.c
@@ -26,6 +26,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "sysemu/sysemu.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
diff --git a/hw/ssi/xilinx_spips.c b/hw/ssi/xilinx_spips.c
index 451d5a0783..a28cd8f8f0 100644
--- a/hw/ssi/xilinx_spips.c
+++ b/hw/ssi/xilinx_spips.c
@@ -35,6 +35,7 @@
 #include "hw/register.h"
 #include "sysemu/dma.h"
 #include "migration/blocker.h"
+#include "migration/vmstate.h"
 
 #ifndef XILINX_SPIPS_ERR_DEBUG
 #define XILINX_SPIPS_ERR_DEBUG 0
diff --git a/hw/timer/a9gtimer.c b/hw/timer/a9gtimer.c
index 0d18497322..b310dfb1b3 100644
--- a/hw/timer/a9gtimer.c
+++ b/hw/timer/a9gtimer.c
@@ -23,6 +23,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/timer/a9gtimer.h"
+#include "migration/vmstate.h"
 #include "qapi/error.h"
 #include "qemu/timer.h"
 #include "qemu/bitops.h"
diff --git a/hw/timer/allwinner-a10-pit.c b/hw/timer/allwinner-a10-pit.c
index 490e584604..b9d057df5d 100644
--- a/hw/timer/allwinner-a10-pit.c
+++ b/hw/timer/allwinner-a10-pit.c
@@ -20,6 +20,7 @@
 #include "hw/sysbus.h"
 #include "sysemu/sysemu.h"
 #include "hw/timer/allwinner-a10-pit.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/timer/arm_mptimer.c b/hw/timer/arm_mptimer.c
index 3092b85d91..a13255d308 100644
--- a/hw/timer/arm_mptimer.c
+++ b/hw/timer/arm_mptimer.c
@@ -23,6 +23,7 @@
 #include "hw/irq.h"
 #include "hw/ptimer.h"
 #include "hw/timer/arm_mptimer.h"
+#include "migration/vmstate.h"
 #include "qapi/error.h"
 #include "qemu/main-loop.h"
 #include "qemu/module.h"
diff --git a/hw/timer/arm_timer.c b/hw/timer/arm_timer.c
index 30ad2245da..0b121252fd 100644
--- a/hw/timer/arm_timer.c
+++ b/hw/timer/arm_timer.c
@@ -9,6 +9,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/timer.h"
 #include "hw/qdev.h"
 #include "hw/irq.h"
diff --git a/hw/timer/armv7m_systick.c b/hw/timer/armv7m_systick.c
index 8a91ba345b..85d122dbcb 100644
--- a/hw/timer/armv7m_systick.c
+++ b/hw/timer/armv7m_systick.c
@@ -11,6 +11,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/timer/armv7m_systick.h"
+#include "migration/vmstate.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qemu/timer.h"
diff --git a/hw/timer/aspeed_rtc.c b/hw/timer/aspeed_rtc.c
index 19f061c846..5313017353 100644
--- a/hw/timer/aspeed_rtc.c
+++ b/hw/timer/aspeed_rtc.c
@@ -9,6 +9,7 @@
 #include "qemu/osdep.h"
 #include "qemu-common.h"
 #include "hw/timer/aspeed_rtc.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/timer.h"
 
diff --git a/hw/timer/aspeed_timer.c b/hw/timer/aspeed_timer.c
index c8e4892989..ed81d5c44c 100644
--- a/hw/timer/aspeed_timer.c
+++ b/hw/timer/aspeed_timer.c
@@ -14,6 +14,7 @@
 #include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "hw/timer/aspeed_timer.h"
+#include "migration/vmstate.h"
 #include "qemu/bitops.h"
 #include "qemu/timer.h"
 #include "qemu/log.h"
diff --git a/hw/timer/cadence_ttc.c b/hw/timer/cadence_ttc.c
index 810c08a0ae..5e3128c1e3 100644
--- a/hw/timer/cadence_ttc.c
+++ b/hw/timer/cadence_ttc.c
@@ -19,6 +19,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "qemu/timer.h"
 
diff --git a/hw/timer/cmsdk-apb-dualtimer.c b/hw/timer/cmsdk-apb-dualtimer.c
index 7328abb40b..6a084a91dd 100644
--- a/hw/timer/cmsdk-apb-dualtimer.c
+++ b/hw/timer/cmsdk-apb-dualtimer.c
@@ -26,6 +26,7 @@
 #include "hw/irq.h"
 #include "hw/registerfields.h"
 #include "hw/timer/cmsdk-apb-dualtimer.h"
+#include "migration/vmstate.h"
 
 REG32(TIMER1LOAD, 0x0)
 REG32(TIMER1VALUE, 0x4)
diff --git a/hw/timer/cmsdk-apb-timer.c b/hw/timer/cmsdk-apb-timer.c
index 07f82e5fa1..c83e26566a 100644
--- a/hw/timer/cmsdk-apb-timer.c
+++ b/hw/timer/cmsdk-apb-timer.c
@@ -37,6 +37,7 @@
 #include "hw/irq.h"
 #include "hw/registerfields.h"
 #include "hw/timer/cmsdk-apb-timer.h"
+#include "migration/vmstate.h"
 
 REG32(CTRL, 0)
     FIELD(CTRL, EN, 0, 1)
diff --git a/hw/timer/digic-timer.c b/hw/timer/digic-timer.c
index c818ed1d98..021c4ef714 100644
--- a/hw/timer/digic-timer.c
+++ b/hw/timer/digic-timer.c
@@ -34,6 +34,7 @@
 #include "qemu/log.h"
 
 #include "hw/timer/digic-timer.h"
+#include "migration/vmstate.h"
 
 static const VMStateDescription vmstate_digic_timer = {
     .name = "digic.timer",
diff --git a/hw/timer/ds1338.c b/hw/timer/ds1338.c
index 30d2d21408..588a9ba9be 100644
--- a/hw/timer/ds1338.c
+++ b/hw/timer/ds1338.c
@@ -13,6 +13,7 @@
 #include "qemu/osdep.h"
 #include "qemu-common.h"
 #include "hw/i2c/i2c.h"
+#include "migration/vmstate.h"
 #include "qemu/bcd.h"
 #include "qemu/module.h"
 
diff --git a/hw/timer/exynos4210_mct.c b/hw/timer/exynos4210_mct.c
index 25e2125af8..7f2af5287c 100644
--- a/hw/timer/exynos4210_mct.c
+++ b/hw/timer/exynos4210_mct.c
@@ -55,6 +55,7 @@
 #include "qemu/osdep.h"
 #include "qemu/log.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/timer.h"
 #include "qemu/main-loop.h"
 #include "qemu/module.h"
diff --git a/hw/timer/exynos4210_pwm.c b/hw/timer/exynos4210_pwm.c
index 2af7b374cc..b7fad2ad44 100644
--- a/hw/timer/exynos4210_pwm.c
+++ b/hw/timer/exynos4210_pwm.c
@@ -23,6 +23,7 @@
 #include "qemu/osdep.h"
 #include "qemu/log.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/timer.h"
 #include "qemu/main-loop.h"
 #include "qemu/module.h"
diff --git a/hw/timer/exynos4210_rtc.c b/hw/timer/exynos4210_rtc.c
index b9dfaf51f7..561451059e 100644
--- a/hw/timer/exynos4210_rtc.c
+++ b/hw/timer/exynos4210_rtc.c
@@ -30,6 +30,7 @@
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/timer.h"
 #include "qemu/bcd.h"
 #include "hw/ptimer.h"
diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c
index 17838df783..305704a339 100644
--- a/hw/timer/hpet.c
+++ b/hw/timer/hpet.c
@@ -35,6 +35,7 @@
 #include "hw/timer/hpet.h"
 #include "hw/sysbus.h"
 #include "hw/timer/mc146818rtc.h"
+#include "migration/vmstate.h"
 #include "hw/timer/i8254.h"
 
 //#define HPET_DEBUG
diff --git a/hw/timer/i8254_common.c b/hw/timer/i8254_common.c
index 3e980f2dee..062e8690c4 100644
--- a/hw/timer/i8254_common.c
+++ b/hw/timer/i8254_common.c
@@ -31,6 +31,7 @@
 #include "hw/timer/i8254.h"
 #include "hw/timer/i8254_internal.h"
 #include "migration/qemu-file-types.h"
+#include "migration/vmstate.h"
 
 /* val must be 0 or 1 */
 void pit_set_gate(ISADevice *dev, int channel, int val)
diff --git a/hw/timer/imx_epit.c b/hw/timer/imx_epit.c
index afeb74339a..f54e059910 100644
--- a/hw/timer/imx_epit.c
+++ b/hw/timer/imx_epit.c
@@ -14,6 +14,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/timer/imx_epit.h"
+#include "migration/vmstate.h"
 #include "hw/irq.h"
 #include "hw/misc/imx_ccm.h"
 #include "qemu/main-loop.h"
diff --git a/hw/timer/imx_gpt.c b/hw/timer/imx_gpt.c
index b4cfc52019..49a441f451 100644
--- a/hw/timer/imx_gpt.c
+++ b/hw/timer/imx_gpt.c
@@ -15,6 +15,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/timer/imx_gpt.h"
+#include "migration/vmstate.h"
 #include "qemu/main-loop.h"
 #include "qemu/module.h"
 #include "qemu/log.h"
diff --git a/hw/timer/lm32_timer.c b/hw/timer/lm32_timer.c
index 4beffc1396..bfa9de76ba 100644
--- a/hw/timer/lm32_timer.c
+++ b/hw/timer/lm32_timer.c
@@ -25,6 +25,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 #include "qemu/timer.h"
 #include "hw/ptimer.h"
diff --git a/hw/timer/m48t59.c b/hw/timer/m48t59.c
index e2479c504a..1240315206 100644
--- a/hw/timer/m48t59.c
+++ b/hw/timer/m48t59.c
@@ -36,6 +36,7 @@
 #include "qemu/module.h"
 
 #include "m48t59-internal.h"
+#include "migration/vmstate.h"
 
 #define TYPE_M48TXX_SYS_BUS "sysbus-m48txx"
 #define M48TXX_SYS_BUS_GET_CLASS(obj) \
diff --git a/hw/timer/mc146818rtc.c b/hw/timer/mc146818rtc.c
index 0410cccafa..b432662bc4 100644
--- a/hw/timer/mc146818rtc.c
+++ b/hw/timer/mc146818rtc.c
@@ -34,6 +34,7 @@
 #include "sysemu/replay.h"
 #include "sysemu/reset.h"
 #include "hw/timer/mc146818rtc.h"
+#include "migration/vmstate.h"
 #include "qapi/error.h"
 #include "qapi/qapi-commands-misc-target.h"
 #include "qapi/qapi-events-misc-target.h"
diff --git a/hw/timer/milkymist-sysctl.c b/hw/timer/milkymist-sysctl.c
index 0f9c39715d..7c56224710 100644
--- a/hw/timer/milkymist-sysctl.c
+++ b/hw/timer/milkymist-sysctl.c
@@ -25,6 +25,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "sysemu/sysemu.h"
 #include "trace.h"
 #include "qemu/timer.h"
diff --git a/hw/timer/mss-timer.c b/hw/timer/mss-timer.c
index 1be9baf9c0..084e02199d 100644
--- a/hw/timer/mss-timer.c
+++ b/hw/timer/mss-timer.c
@@ -29,6 +29,7 @@
 #include "qemu/log.h"
 #include "hw/irq.h"
 #include "hw/timer/mss-timer.h"
+#include "migration/vmstate.h"
 
 #ifndef MSS_TIMER_ERR_DEBUG
 #define MSS_TIMER_ERR_DEBUG  0
diff --git a/hw/timer/nrf51_timer.c b/hw/timer/nrf51_timer.c
index 297403c4fd..e04046eb15 100644
--- a/hw/timer/nrf51_timer.c
+++ b/hw/timer/nrf51_timer.c
@@ -17,6 +17,7 @@
 #include "hw/arm/nrf51.h"
 #include "hw/irq.h"
 #include "hw/timer/nrf51_timer.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 
 #define TIMER_CLK_FREQ 16000000UL
diff --git a/hw/timer/pl031.c b/hw/timer/pl031.c
index 435c4a6c7e..39abd08643 100644
--- a/hw/timer/pl031.c
+++ b/hw/timer/pl031.c
@@ -14,6 +14,7 @@
 #include "qemu/osdep.h"
 #include "qemu-common.h"
 #include "hw/timer/pl031.h"
+#include "migration/vmstate.h"
 #include "hw/irq.h"
 #include "hw/sysbus.h"
 #include "qemu/timer.h"
diff --git a/hw/timer/pxa2xx_timer.c b/hw/timer/pxa2xx_timer.c
index 9c3b2b80ab..f61053b3c6 100644
--- a/hw/timer/pxa2xx_timer.c
+++ b/hw/timer/pxa2xx_timer.c
@@ -14,6 +14,7 @@
 #include "sysemu/sysemu.h"
 #include "hw/arm/pxa.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/timer/slavio_timer.c b/hw/timer/slavio_timer.c
index 310a0a126a..931ffd483f 100644
--- a/hw/timer/slavio_timer.c
+++ b/hw/timer/slavio_timer.c
@@ -27,6 +27,7 @@
 #include "hw/irq.h"
 #include "hw/ptimer.h"
 #include "hw/sysbus.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 #include "qemu/main-loop.h"
 #include "qemu/module.h"
diff --git a/hw/timer/stm32f2xx_timer.c b/hw/timer/stm32f2xx_timer.c
index d7af928667..b41822f047 100644
--- a/hw/timer/stm32f2xx_timer.c
+++ b/hw/timer/stm32f2xx_timer.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include "hw/irq.h"
 #include "hw/timer/stm32f2xx_timer.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/timer/twl92230.c b/hw/timer/twl92230.c
index 795f894a39..6b2a25b9c9 100644
--- a/hw/timer/twl92230.c
+++ b/hw/timer/twl92230.c
@@ -26,6 +26,7 @@
 #include "hw/i2c/i2c.h"
 #include "hw/irq.h"
 #include "migration/qemu-file-types.h"
+#include "migration/vmstate.h"
 #include "sysemu/sysemu.h"
 #include "ui/console.h"
 #include "qemu/bcd.h"
diff --git a/hw/timer/xlnx-zynqmp-rtc.c b/hw/timer/xlnx-zynqmp-rtc.c
index 48c3fba677..5692db98c2 100644
--- a/hw/timer/xlnx-zynqmp-rtc.c
+++ b/hw/timer/xlnx-zynqmp-rtc.c
@@ -37,6 +37,7 @@
 #include "sysemu/sysemu.h"
 #include "trace.h"
 #include "hw/timer/xlnx-zynqmp-rtc.h"
+#include "migration/vmstate.h"
 
 #ifndef XLNX_ZYNQMP_RTC_ERR_DEBUG
 #define XLNX_ZYNQMP_RTC_ERR_DEBUG 0
diff --git a/hw/tpm/tpm_emulator.c b/hw/tpm/tpm_emulator.c
index fc0b512f4f..76c1e16fa1 100644
--- a/hw/tpm/tpm_emulator.c
+++ b/hw/tpm/tpm_emulator.c
@@ -37,6 +37,7 @@
 #include "tpm_util.h"
 #include "tpm_ioctl.h"
 #include "migration/blocker.h"
+#include "migration/vmstate.h"
 #include "qapi/error.h"
 #include "qapi/clone-visitor.h"
 #include "qapi/qapi-visit-tpm.h"
diff --git a/hw/tpm/tpm_tis.c b/hw/tpm/tpm_tis.c
index 747e943c42..774d12a5e1 100644
--- a/hw/tpm/tpm_tis.c
+++ b/hw/tpm/tpm_tis.c
@@ -30,6 +30,7 @@
 
 #include "hw/acpi/tpm.h"
 #include "hw/pci/pci_ids.h"
+#include "migration/vmstate.h"
 #include "sysemu/tpm_backend.h"
 #include "tpm_int.h"
 #include "tpm_util.h"
diff --git a/hw/usb/bus.c b/hw/usb/bus.c
index a28e9e3b33..6aff15e504 100644
--- a/hw/usb/bus.c
+++ b/hw/usb/bus.c
@@ -6,6 +6,7 @@
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 #include "sysemu/sysemu.h"
+#include "migration/vmstate.h"
 #include "monitor/monitor.h"
 #include "trace.h"
 #include "qemu/cutils.h"
diff --git a/hw/usb/ccid-card-passthru.c b/hw/usb/ccid-card-passthru.c
index d1dac6e012..9e42547fc8 100644
--- a/hw/usb/ccid-card-passthru.c
+++ b/hw/usb/ccid-card-passthru.c
@@ -13,6 +13,7 @@
 #include "qemu/units.h"
 #include <libcacard.h>
 #include "chardev/char-fe.h"
+#include "migration/vmstate.h"
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 #include "qemu/sockets.h"
diff --git a/hw/usb/dev-audio.c b/hw/usb/dev-audio.c
index 718ab53cbb..d4074edfc3 100644
--- a/hw/usb/dev-audio.c
+++ b/hw/usb/dev-audio.c
@@ -32,6 +32,7 @@
 #include "qemu/osdep.h"
 #include "qemu/module.h"
 #include "hw/usb.h"
+#include "migration/vmstate.h"
 #include "desc.h"
 #include "hw/hw.h"
 #include "audio/audio.h"
diff --git a/hw/usb/dev-bluetooth.c b/hw/usb/dev-bluetooth.c
index 670ba32290..f6944fa74f 100644
--- a/hw/usb/dev-bluetooth.c
+++ b/hw/usb/dev-bluetooth.c
@@ -22,6 +22,7 @@
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 #include "hw/usb.h"
+#include "migration/vmstate.h"
 #include "desc.h"
 #include "sysemu/bt.h"
 #include "hw/bt.h"
diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c
index 62793eaf26..c7c65a8782 100644
--- a/hw/usb/dev-hid.c
+++ b/hw/usb/dev-hid.c
@@ -27,6 +27,7 @@
 #include "hw/hw.h"
 #include "ui/console.h"
 #include "hw/usb.h"
+#include "migration/vmstate.h"
 #include "desc.h"
 #include "qapi/error.h"
 #include "qemu/module.h"
diff --git a/hw/usb/dev-hub.c b/hw/usb/dev-hub.c
index 89f55dd25c..886423bdec 100644
--- a/hw/usb/dev-hub.c
+++ b/hw/usb/dev-hub.c
@@ -27,6 +27,7 @@
 #include "qemu/timer.h"
 #include "trace.h"
 #include "hw/usb.h"
+#include "migration/vmstate.h"
 #include "desc.h"
 #include "qemu/error-report.h"
 #include "qemu/module.h"
diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c
index fd1b3394a5..2e2a47ff7c 100644
--- a/hw/usb/dev-mtp.c
+++ b/hw/usb/dev-mtp.c
@@ -24,6 +24,7 @@
 #include "qemu/filemonitor.h"
 #include "trace.h"
 #include "hw/usb.h"
+#include "migration/vmstate.h"
 #include "desc.h"
 #include "qemu/units.h"
 
diff --git a/hw/usb/dev-network.c b/hw/usb/dev-network.c
index 889069dd5a..db928d7cdf 100644
--- a/hw/usb/dev-network.c
+++ b/hw/usb/dev-network.c
@@ -26,6 +26,7 @@
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "hw/usb.h"
+#include "migration/vmstate.h"
 #include "desc.h"
 #include "net/net.h"
 #include "qemu/error-report.h"
diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c
index b82f854103..039dc4889f 100644
--- a/hw/usb/dev-serial.c
+++ b/hw/usb/dev-serial.c
@@ -14,6 +14,7 @@
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 #include "hw/usb.h"
+#include "migration/vmstate.h"
 #include "desc.h"
 #include "chardev/char-serial.h"
 #include "chardev/char-fe.h"
diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c
index 8d7e516fe7..57a0cbcae7 100644
--- a/hw/usb/dev-smartcard-reader.c
+++ b/hw/usb/dev-smartcard-reader.c
@@ -41,6 +41,7 @@
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 #include "hw/usb.h"
+#include "migration/vmstate.h"
 #include "desc.h"
 
 #include "ccid.h"
diff --git a/hw/usb/dev-storage.c b/hw/usb/dev-storage.c
index 9ffb88ea5b..8bc5d8728a 100644
--- a/hw/usb/dev-storage.c
+++ b/hw/usb/dev-storage.c
@@ -17,6 +17,7 @@
 #include "desc.h"
 #include "hw/scsi/scsi.h"
 #include "ui/console.h"
+#include "migration/vmstate.h"
 #include "monitor/monitor.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/block-backend.h"
diff --git a/hw/usb/dev-uas.c b/hw/usb/dev-uas.c
index abd8070d0c..525bc1e590 100644
--- a/hw/usb/dev-uas.c
+++ b/hw/usb/dev-uas.c
@@ -17,6 +17,7 @@
 #include "qemu/module.h"
 
 #include "hw/usb.h"
+#include "migration/vmstate.h"
 #include "desc.h"
 #include "hw/scsi/scsi.h"
 #include "scsi/constants.h"
diff --git a/hw/usb/dev-wacom.c b/hw/usb/dev-wacom.c
index 8c43db9335..9a8a2d3081 100644
--- a/hw/usb/dev-wacom.c
+++ b/hw/usb/dev-wacom.c
@@ -30,6 +30,7 @@
 #include "hw/hw.h"
 #include "ui/console.h"
 #include "hw/usb.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "desc.h"
 
diff --git a/hw/usb/hcd-ehci-pci.c b/hw/usb/hcd-ehci-pci.c
index 03d3a39067..7232dee882 100644
--- a/hw/usb/hcd-ehci-pci.c
+++ b/hw/usb/hcd-ehci-pci.c
@@ -17,6 +17,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/usb/hcd-ehci.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 #include "qemu/range.h"
 
diff --git a/hw/usb/hcd-ehci-sysbus.c b/hw/usb/hcd-ehci-sysbus.c
index cd1f3c70a4..9a509f3b08 100644
--- a/hw/usb/hcd-ehci-sysbus.c
+++ b/hw/usb/hcd-ehci-sysbus.c
@@ -17,6 +17,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/usb/hcd-ehci.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 
 static const VMStateDescription vmstate_ehci_sysbus = {
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
index d2189fc844..45ff4f4115 100644
--- a/hw/usb/hcd-ehci.c
+++ b/hw/usb/hcd-ehci.c
@@ -31,6 +31,7 @@
 #include "hw/irq.h"
 #include "hw/usb/ehci-regs.h"
 #include "hw/usb/hcd-ehci.h"
+#include "migration/vmstate.h"
 #include "trace.h"
 #include "qemu/error-report.h"
 
diff --git a/hw/usb/hcd-ohci-pci.c b/hw/usb/hcd-ohci-pci.c
index e8f372c6ad..67fcfc4d7c 100644
--- a/hw/usb/hcd-ohci-pci.c
+++ b/hw/usb/hcd-ohci-pci.c
@@ -23,6 +23,7 @@
 #include "qapi/error.h"
 #include "qemu/timer.h"
 #include "hw/usb.h"
+#include "migration/vmstate.h"
 #include "hw/pci/pci.h"
 #include "hw/sysbus.h"
 #include "hw/qdev-dma.h"
diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c
index 1ced5cd71a..438dfb4b83 100644
--- a/hw/usb/hcd-ohci.c
+++ b/hw/usb/hcd-ohci.c
@@ -32,6 +32,7 @@
 #include "qemu/module.h"
 #include "qemu/timer.h"
 #include "hw/usb.h"
+#include "migration/vmstate.h"
 #include "hw/sysbus.h"
 #include "hw/qdev-dma.h"
 #include "trace.h"
diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c
index 98bd5cf49d..887885efa0 100644
--- a/hw/usb/hcd-uhci.c
+++ b/hw/usb/hcd-uhci.c
@@ -30,6 +30,7 @@
 #include "hw/hw.h"
 #include "hw/usb.h"
 #include "hw/usb/uhci-regs.h"
+#include "migration/vmstate.h"
 #include "hw/pci/pci.h"
 #include "qapi/error.h"
 #include "qemu/timer.h"
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index 5894a18663..fc67476100 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -25,6 +25,7 @@
 #include "qemu/module.h"
 #include "qemu/queue.h"
 #include "hw/usb.h"
+#include "migration/vmstate.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/msi.h"
 #include "hw/pci/msix.h"
diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c
index 83ebc51620..6f5338832a 100644
--- a/hw/usb/host-libusb.c
+++ b/hw/usb/host-libusb.c
@@ -40,6 +40,7 @@
 #include <libusb.h>
 
 #include "qapi/error.h"
+#include "migration/vmstate.h"
 #include "monitor/monitor.h"
 #include "qemu/error-report.h"
 #include "qemu/module.h"
diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
index 846e60f3bb..84ec3d5219 100644
--- a/hw/usb/redirect.c
+++ b/hw/usb/redirect.c
@@ -42,6 +42,7 @@
 
 #include "hw/usb.h"
 #include "migration/qemu-file-types.h"
+#include "migration/vmstate.h"
 
 /* ERROR is defined below. Remove any previous definition. */
 #undef ERROR
diff --git a/hw/vfio/amd-xgbe.c b/hw/vfio/amd-xgbe.c
index eedd48cfc1..96bd608b8d 100644
--- a/hw/vfio/amd-xgbe.c
+++ b/hw/vfio/amd-xgbe.c
@@ -13,6 +13,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/vfio/vfio-amd-xgbe.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 
 static void amd_xgbe_realize(DeviceState *dev, Error **errp)
diff --git a/hw/vfio/ap.c b/hw/vfio/ap.c
index a995b86cd4..d1c86abb76 100644
--- a/hw/vfio/ap.c
+++ b/hw/vfio/ap.c
@@ -25,6 +25,7 @@
 #include "qemu/config-file.h"
 #include "cpu.h"
 #include "kvm_s390x.h"
+#include "migration/vmstate.h"
 #include "sysemu/sysemu.h"
 #include "hw/s390x/ap-bridge.h"
 #include "exec/address-spaces.h"
diff --git a/hw/vfio/calxeda-xgmac.c b/hw/vfio/calxeda-xgmac.c
index 59233e8d7e..87c382e736 100644
--- a/hw/vfio/calxeda-xgmac.c
+++ b/hw/vfio/calxeda-xgmac.c
@@ -13,6 +13,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/vfio/vfio-calxeda-xgmac.h"
+#include "migration/vmstate.h"
 #include "qemu/module.h"
 
 static void calxeda_xgmac_realize(DeviceState *dev, Error **errp)
diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
index d7a4e1875c..8a58ad670c 100644
--- a/hw/vfio/pci.c
+++ b/hw/vfio/pci.c
@@ -25,6 +25,7 @@
 #include "hw/pci/msi.h"
 #include "hw/pci/msix.h"
 #include "hw/pci/pci_bridge.h"
+#include "migration/vmstate.h"
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 #include "qemu/option.h"
diff --git a/hw/vfio/platform.c b/hw/vfio/platform.c
index 708df2ec0d..2ec9c9f49b 100644
--- a/hw/vfio/platform.c
+++ b/hw/vfio/platform.c
@@ -20,6 +20,7 @@
 #include <linux/vfio.h>
 
 #include "hw/vfio/vfio-platform.h"
+#include "migration/vmstate.h"
 #include "qemu/error-report.h"
 #include "qemu/module.h"
 #include "qemu/range.h"
diff --git a/hw/watchdog/cmsdk-apb-watchdog.c b/hw/watchdog/cmsdk-apb-watchdog.c
index a79da39dd5..3140e91959 100644
--- a/hw/watchdog/cmsdk-apb-watchdog.c
+++ b/hw/watchdog/cmsdk-apb-watchdog.c
@@ -31,6 +31,7 @@
 #include "hw/irq.h"
 #include "hw/registerfields.h"
 #include "hw/watchdog/cmsdk-apb-watchdog.h"
+#include "migration/vmstate.h"
 
 REG32(WDOGLOAD, 0x0)
 REG32(WDOGVALUE, 0x4)
diff --git a/hw/watchdog/wdt_aspeed.c b/hw/watchdog/wdt_aspeed.c
index 57fe24ae6b..49415f132d 100644
--- a/hw/watchdog/wdt_aspeed.c
+++ b/hw/watchdog/wdt_aspeed.c
@@ -17,6 +17,7 @@
 #include "hw/misc/aspeed_scu.h"
 #include "hw/sysbus.h"
 #include "hw/watchdog/wdt_aspeed.h"
+#include "migration/vmstate.h"
 
 #define WDT_STATUS                      (0x00 / 4)
 #define WDT_RELOAD_VALUE                (0x04 / 4)
diff --git a/hw/watchdog/wdt_diag288.c b/hw/watchdog/wdt_diag288.c
index fec046ef09..5b6eb2b09f 100644
--- a/hw/watchdog/wdt_diag288.c
+++ b/hw/watchdog/wdt_diag288.c
@@ -17,6 +17,7 @@
 #include "hw/sysbus.h"
 #include "qemu/timer.h"
 #include "hw/watchdog/wdt_diag288.h"
+#include "migration/vmstate.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 
diff --git a/hw/watchdog/wdt_i6300esb.c b/hw/watchdog/wdt_i6300esb.c
index 6780f01add..288be8f73c 100644
--- a/hw/watchdog/wdt_i6300esb.c
+++ b/hw/watchdog/wdt_i6300esb.c
@@ -26,6 +26,7 @@
 #include "sysemu/watchdog.h"
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
+#include "migration/vmstate.h"
 
 /*#define I6300ESB_DEBUG 1*/
 
diff --git a/hw/watchdog/wdt_ib700.c b/hw/watchdog/wdt_ib700.c
index e0e5beb99d..e233945c2e 100644
--- a/hw/watchdog/wdt_ib700.c
+++ b/hw/watchdog/wdt_ib700.c
@@ -25,6 +25,7 @@
 #include "sysemu/watchdog.h"
 #include "hw/hw.h"
 #include "hw/isa/isa.h"
+#include "migration/vmstate.h"
 
 /*#define IB700_DEBUG 1*/
 
diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c
index 0a2cce3c64..83103974ab 100644
--- a/hw/xtensa/xtfpga.c
+++ b/hw/xtensa/xtfpga.c
@@ -47,6 +47,7 @@
 #include "bootparam.h"
 #include "xtensa_memory.h"
 #include "hw/xtensa/mx_pic.h"
+#include "migration/vmstate.h"
 
 typedef struct XtfpgaFlashDesc {
     hwaddr base;
diff --git a/migration/savevm.c b/migration/savevm.c
index 79ed44d475..89e8f4c180 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -32,6 +32,7 @@
 #include "net/net.h"
 #include "migration.h"
 #include "migration/snapshot.h"
+#include "migration/vmstate.h"
 #include "migration/misc.h"
 #include "migration/register.h"
 #include "migration/global_state.h"
diff --git a/target/s390x/machine.c b/target/s390x/machine.c
index 1e9526e937..12a2cd65b0 100644
--- a/target/s390x/machine.c
+++ b/target/s390x/machine.c
@@ -19,6 +19,7 @@
 #include "cpu.h"
 #include "internal.h"
 #include "kvm_s390x.h"
+#include "migration/vmstate.h"
 #include "tcg_s390x.h"
 #include "sysemu/kvm.h"
 #include "sysemu/tcg.h"
diff --git a/util/fifo8.c b/util/fifo8.c
index a9aa20a9f7..a5dd789ce5 100644
--- a/util/fifo8.c
+++ b/util/fifo8.c
@@ -13,6 +13,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "migration/vmstate.h"
 #include "qemu/fifo8.h"
 
 void fifo8_create(Fifo8 *fifo, uint32_t capacity)
-- 
2.21.0



^ permalink raw reply	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PULL 16/29] Include exec/memory.h slightly less
  2019-08-13 15:46 [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13 Markus Armbruster
                   ` (14 preceding siblings ...)
  2019-08-13 15:46 ` [Qemu-devel] [PULL 15/29] Include migration/vmstate.h less Markus Armbruster
@ 2019-08-13 15:46 ` Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 17/29] Include qom/object.h " Markus Armbruster
                   ` (13 subsequent siblings)
  29 siblings, 0 replies; 34+ messages in thread
From: Markus Armbruster @ 2019-08-13 15:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: Philippe Mathieu-Daudé

Drop unnecessary inclusions from headers.  Downgrade a few more to
exec/hwaddr.h.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190812052359.30071-17-armbru@redhat.com>
---
 hw/audio/lm4549.h                   | 1 +
 hw/net/can/can_sja1000.h            | 1 +
 hw/xtensa/xtensa_memory.h           | 1 -
 include/hw/arm/boot.h               | 1 -
 include/hw/arm/fsl-imx7.h           | 1 -
 include/hw/arm/soc_dma.h            | 2 +-
 include/hw/block/flash.h            | 2 +-
 include/hw/boards.h                 | 1 +
 include/hw/char/parallel.h          | 1 -
 include/hw/display/milkymist_tmu2.h | 1 +
 include/hw/display/tc6393xb.h       | 2 --
 include/hw/display/vga.h            | 2 +-
 include/hw/hw.h                     | 1 -
 include/hw/i2c/pm_smbus.h           | 1 +
 include/hw/i2c/smbus_eeprom.h       | 1 +
 include/hw/misc/auxbus.h            | 1 +
 include/hw/ppc/xics.h               | 1 +
 include/hw/usb.h                    | 1 +
 include/hw/virtio/virtio.h          | 1 +
 migration/migration.h               | 1 +
 hw/display/edid-region.c            | 1 +
 hw/display/tc6393xb.c               | 1 +
 hw/net/ne2000.c                     | 1 +
 migration/colo.c                    | 1 +
 migration/postcopy-ram.c            | 1 +
 migration/rdma.c                    | 1 +
 26 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/hw/audio/lm4549.h b/hw/audio/lm4549.h
index 74c3ee8934..aba9bb5b07 100644
--- a/hw/audio/lm4549.h
+++ b/hw/audio/lm4549.h
@@ -13,6 +13,7 @@
 #define HW_LM4549_H
 
 #include "audio/audio.h"
+#include "exec/hwaddr.h"
 
 typedef void (*lm4549_callback)(void *opaque);
 
diff --git a/hw/net/can/can_sja1000.h b/hw/net/can/can_sja1000.h
index 4731cbbd2a..220a622087 100644
--- a/hw/net/can/can_sja1000.h
+++ b/hw/net/can/can_sja1000.h
@@ -27,6 +27,7 @@
 #ifndef HW_CAN_SJA1000_H
 #define HW_CAN_SJA1000_H
 
+#include "exec/hwaddr.h"
 #include "net/can_emu.h"
 
 #define CAN_SJA_MEM_SIZE      128
diff --git a/hw/xtensa/xtensa_memory.h b/hw/xtensa/xtensa_memory.h
index d50a3cccc0..af7e8025e3 100644
--- a/hw/xtensa/xtensa_memory.h
+++ b/hw/xtensa/xtensa_memory.h
@@ -29,7 +29,6 @@
 #define XTENSA_MEMORY_H
 
 #include "cpu.h"
-#include "exec/memory.h"
 
 void xtensa_create_memory_regions(const XtensaMemory *memory,
                                   const char *name,
diff --git a/include/hw/arm/boot.h b/include/hw/arm/boot.h
index 350d4b0498..5714dea1a2 100644
--- a/include/hw/arm/boot.h
+++ b/include/hw/arm/boot.h
@@ -11,7 +11,6 @@
 #ifndef HW_ARM_BOOT_H
 #define HW_ARM_BOOT_H
 
-#include "exec/memory.h"
 #include "target/arm/cpu-qom.h"
 #include "qemu/notify.h"
 
diff --git a/include/hw/arm/fsl-imx7.h b/include/hw/arm/fsl-imx7.h
index 8003d45d1e..706aef2e7e 100644
--- a/include/hw/arm/fsl-imx7.h
+++ b/include/hw/arm/fsl-imx7.h
@@ -38,7 +38,6 @@
 #include "hw/net/imx_fec.h"
 #include "hw/pci-host/designware.h"
 #include "hw/usb/chipidea.h"
-#include "exec/memory.h"
 #include "cpu.h"
 
 #define TYPE_FSL_IMX7 "fsl,imx7"
diff --git a/include/hw/arm/soc_dma.h b/include/hw/arm/soc_dma.h
index 7886291d54..e93a7499a8 100644
--- a/include/hw/arm/soc_dma.h
+++ b/include/hw/arm/soc_dma.h
@@ -21,7 +21,7 @@
 #ifndef HW_SOC_DMA_H
 #define HW_SOC_DMA_H
 
-#include "exec/memory.h"
+#include "exec/hwaddr.h"
 
 struct soc_dma_s;
 struct soc_dma_ch_s;
diff --git a/include/hw/block/flash.h b/include/hw/block/flash.h
index 1acaf7de80..2136a2d5e4 100644
--- a/include/hw/block/flash.h
+++ b/include/hw/block/flash.h
@@ -3,7 +3,7 @@
 
 /* NOR flash devices */
 
-#include "exec/memory.h"
+#include "exec/hwaddr.h"
 
 /* pflash_cfi01.c */
 
diff --git a/include/hw/boards.h b/include/hw/boards.h
index a71d1a53a5..3a0be3131a 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -3,6 +3,7 @@
 #ifndef HW_BOARDS_H
 #define HW_BOARDS_H
 
+#include "exec/memory.h"
 #include "sysemu/blockdev.h"
 #include "sysemu/accel.h"
 #include "hw/qdev.h"
diff --git a/include/hw/char/parallel.h b/include/hw/char/parallel.h
index d6dd62fb9f..0a23c0f57e 100644
--- a/include/hw/char/parallel.h
+++ b/include/hw/char/parallel.h
@@ -1,7 +1,6 @@
 #ifndef HW_PARALLEL_H
 #define HW_PARALLEL_H
 
-#include "exec/memory.h"
 #include "hw/isa/isa.h"
 #include "chardev/char.h"
 
diff --git a/include/hw/display/milkymist_tmu2.h b/include/hw/display/milkymist_tmu2.h
index 148a119a1d..1fd978dcc5 100644
--- a/include/hw/display/milkymist_tmu2.h
+++ b/include/hw/display/milkymist_tmu2.h
@@ -27,6 +27,7 @@
 #ifndef HW_DISPLAY_MILKYMIST_TMU2_H
 #define HW_DISPLAY_MILKYMIST_TMU2_H
 
+#include "exec/hwaddr.h"
 #include "hw/qdev.h"
 
 #if defined(CONFIG_X11) && defined(CONFIG_OPENGL)
diff --git a/include/hw/display/tc6393xb.h b/include/hw/display/tc6393xb.h
index c653ef717b..f9263bf98a 100644
--- a/include/hw/display/tc6393xb.h
+++ b/include/hw/display/tc6393xb.h
@@ -12,8 +12,6 @@
 #ifndef HW_DISPLAY_TC6393XB_H
 #define HW_DISPLAY_TC6393XB_H
 
-#include "exec/memory.h"
-
 typedef struct TC6393xbState TC6393xbState;
 
 TC6393xbState *tc6393xb_init(struct MemoryRegion *sysmem,
diff --git a/include/hw/display/vga.h b/include/hw/display/vga.h
index 0401a3a292..ca0003dbfd 100644
--- a/include/hw/display/vga.h
+++ b/include/hw/display/vga.h
@@ -9,7 +9,7 @@
 #ifndef QEMU_HW_DISPLAY_VGA_H
 #define QEMU_HW_DISPLAY_VGA_H
 
-#include "exec/memory.h"
+#include "exec/hwaddr.h"
 
 enum vga_retrace_method {
     VGA_RETRACE_DUMB,
diff --git a/include/hw/hw.h b/include/hw/hw.h
index e547008b17..8e18358e6a 100644
--- a/include/hw/hw.h
+++ b/include/hw/hw.h
@@ -7,7 +7,6 @@
 #endif
 
 #include "qom/object.h"
-#include "exec/memory.h"
 
 void QEMU_NORETURN hw_error(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
 
diff --git a/include/hw/i2c/pm_smbus.h b/include/hw/i2c/pm_smbus.h
index fb55c44444..0d74207efb 100644
--- a/include/hw/i2c/pm_smbus.h
+++ b/include/hw/i2c/pm_smbus.h
@@ -1,6 +1,7 @@
 #ifndef PM_SMBUS_H
 #define PM_SMBUS_H
 
+#include "exec/memory.h"
 #include "hw/i2c/smbus_master.h"
 
 #define PM_SMBUS_MAX_MSG_SIZE 32
diff --git a/include/hw/i2c/smbus_eeprom.h b/include/hw/i2c/smbus_eeprom.h
index 0f96836bab..15e2151b50 100644
--- a/include/hw/i2c/smbus_eeprom.h
+++ b/include/hw/i2c/smbus_eeprom.h
@@ -23,6 +23,7 @@
 #ifndef HW_SMBUS_EEPROM_H
 #define HW_SMBUS_EEPROM_H
 
+#include "exec/cpu-common.h"
 #include "hw/i2c/i2c.h"
 
 void smbus_eeprom_init_one(I2CBus *bus, uint8_t address, uint8_t *eeprom_buf);
diff --git a/include/hw/misc/auxbus.h b/include/hw/misc/auxbus.h
index c15b444748..ee0ca3dd51 100644
--- a/include/hw/misc/auxbus.h
+++ b/include/hw/misc/auxbus.h
@@ -25,6 +25,7 @@
 #ifndef HW_MISC_AUXBUS_H
 #define HW_MISC_AUXBUS_H
 
+#include "exec/memory.h"
 #include "hw/qdev.h"
 
 typedef struct AUXBus AUXBus;
diff --git a/include/hw/ppc/xics.h b/include/hw/ppc/xics.h
index 1eb7b5cd68..457aa98f81 100644
--- a/include/hw/ppc/xics.h
+++ b/include/hw/ppc/xics.h
@@ -28,6 +28,7 @@
 #ifndef XICS_H
 #define XICS_H
 
+#include "exec/memory.h"
 #include "hw/qdev.h"
 
 #define XICS_IPI        0x2
diff --git a/include/hw/usb.h b/include/hw/usb.h
index c21f41c8a9..96971a4c26 100644
--- a/include/hw/usb.h
+++ b/include/hw/usb.h
@@ -25,6 +25,7 @@
  * THE SOFTWARE.
  */
 
+#include "exec/memory.h"
 #include "hw/qdev.h"
 #include "qemu/iov.h"
 #include "qemu/queue.h"
diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
index 5da749e2b0..e6a2a0a6e0 100644
--- a/include/hw/virtio/virtio.h
+++ b/include/hw/virtio/virtio.h
@@ -14,6 +14,7 @@
 #ifndef QEMU_VIRTIO_H
 #define QEMU_VIRTIO_H
 
+#include "exec/memory.h"
 #include "hw/hw.h"
 #include "net/net.h"
 #include "hw/qdev.h"
diff --git a/migration/migration.h b/migration/migration.h
index 26f01d00f6..a7882af67a 100644
--- a/migration/migration.h
+++ b/migration/migration.h
@@ -14,6 +14,7 @@
 #ifndef QEMU_MIGRATION_H
 #define QEMU_MIGRATION_H
 
+#include "exec/cpu-common.h"
 #include "qapi/qapi-types-migration.h"
 #include "qemu/thread.h"
 #include "qemu/coroutine_int.h"
diff --git a/hw/display/edid-region.c b/hw/display/edid-region.c
index d0d31bad3d..675429dc18 100644
--- a/hw/display/edid-region.c
+++ b/hw/display/edid-region.c
@@ -1,4 +1,5 @@
 #include "qemu/osdep.h"
+#include "exec/memory.h"
 #include "hw/display/edid.h"
 
 static uint64_t edid_region_read(void *ptr, hwaddr addr, unsigned size)
diff --git a/hw/display/tc6393xb.c b/hw/display/tc6393xb.c
index 10e7f74c74..74a77eb43b 100644
--- a/hw/display/tc6393xb.c
+++ b/hw/display/tc6393xb.c
@@ -17,6 +17,7 @@
 #include "hw/hw.h"
 #include "hw/irq.h"
 #include "hw/display/tc6393xb.h"
+#include "exec/memory.h"
 #include "hw/block/flash.h"
 #include "ui/console.h"
 #include "ui/pixel_ops.h"
diff --git a/hw/net/ne2000.c b/hw/net/ne2000.c
index 7731b5acd1..a1a1046494 100644
--- a/hw/net/ne2000.c
+++ b/hw/net/ne2000.c
@@ -25,6 +25,7 @@
 #include "qemu/osdep.h"
 #include "net/eth.h"
 #include "qemu/module.h"
+#include "exec/memory.h"
 #include "hw/irq.h"
 #include "migration/vmstate.h"
 #include "ne2000.h"
diff --git a/migration/colo.c b/migration/colo.c
index 9f84b1fa3c..0b5b620391 100644
--- a/migration/colo.c
+++ b/migration/colo.c
@@ -23,6 +23,7 @@
 #include "io/channel-buffer.h"
 #include "trace.h"
 #include "qemu/error-report.h"
+#include "qemu/rcu.h"
 #include "migration/failover.h"
 #ifdef CONFIG_REPLICATION
 #include "replication.h"
diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c
index 9faacacc9e..56054d0a73 100644
--- a/migration/postcopy-ram.c
+++ b/migration/postcopy-ram.c
@@ -25,6 +25,7 @@
 #include "ram.h"
 #include "qapi/error.h"
 #include "qemu/notify.h"
+#include "qemu/rcu.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/balloon.h"
 #include "qemu/error-report.h"
diff --git a/migration/rdma.c b/migration/rdma.c
index 3036221ee8..b0e27b6174 100644
--- a/migration/rdma.c
+++ b/migration/rdma.c
@@ -25,6 +25,7 @@
 #include "qemu/error-report.h"
 #include "qemu/main-loop.h"
 #include "qemu/module.h"
+#include "qemu/rcu.h"
 #include "qemu/sockets.h"
 #include "qemu/bitmap.h"
 #include "qemu/coroutine.h"
-- 
2.21.0



^ permalink raw reply	[flat|nested] 34+ messages in thread

* [Qemu-devel] [PULL 17/29] Include qom/object.h slightly less
  2019-08-13 15:46 [Qemu-devel] [PULL 00/29] Header cleanup patches for 2019-08-13 Markus Armbruster
                   ` (15 preceding siblings ...)
  2019-08-13 15:46 ` [Qemu-devel] [PULL 16/29] Include exec/memory.h slightly less Markus Armbruster
@ 2019-08-13 15:46 ` " Markus Armbruster
  2019-08-13 15:46 ` [Qemu-devel] [PULL 18/29] Include hw/hw.h exactly where needed Markus Armbruster
                   ` (12 subsequent siblings)
  29 siblings, 0 replies; 34+ messages in thread
From: Markus Armbruster @ 2019-08-13 15:46 UTC (permalink /