From patchwork Wed Mar 23 00:16:07 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anthony Liguori X-Patchwork-Id: 87984 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) by ozlabs.org (Postfix) with ESMTP id 0A813B6F7C for ; Wed, 23 Mar 2011 11:36:39 +1100 (EST) Received: from localhost ([127.0.0.1]:45297 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q2BxN-0004cP-Qj for incoming@patchwork.ozlabs.org; Tue, 22 Mar 2011 20:29:49 -0400 Received: from [140.186.70.92] (port=44108 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q2Bkh-0004Hl-11 for qemu-devel@nongnu.org; Tue, 22 Mar 2011 20:16:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Q2BkR-0003cb-9y for qemu-devel@nongnu.org; Tue, 22 Mar 2011 20:16:42 -0400 Received: from e6.ny.us.ibm.com ([32.97.182.146]:43546) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q2BkR-0003cX-2w for qemu-devel@nongnu.org; Tue, 22 Mar 2011 20:16:27 -0400 Received: from d01dlp01.pok.ibm.com (d01dlp01.pok.ibm.com [9.56.224.56]) by e6.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p2MNqADx001022 for ; Tue, 22 Mar 2011 19:52:10 -0400 Received: from d01relay06.pok.ibm.com (d01relay06.pok.ibm.com [9.56.227.116]) by d01dlp01.pok.ibm.com (Postfix) with ESMTP id 92A8A38C8038 for ; Tue, 22 Mar 2011 20:16:21 -0400 (EDT) Received: from d01av01.pok.ibm.com (d01av01.pok.ibm.com [9.56.224.215]) by d01relay06.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p2N0GQiB2703478 for ; Tue, 22 Mar 2011 20:16:26 -0400 Received: from d01av01.pok.ibm.com (loopback [127.0.0.1]) by d01av01.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p2N0GQsu008416 for ; Tue, 22 Mar 2011 20:16:26 -0400 Received: from localhost.localdomain (sig-9-65-76-198.mts.ibm.com [9.65.76.198]) by d01av01.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p2N0GNiL007989; Tue, 22 Mar 2011 20:16:25 -0400 From: Anthony Liguori To: qemu-devel@nongnu.org Date: Tue, 22 Mar 2011 19:16:07 -0500 Message-Id: <1300839376-22520-3-git-send-email-aliguori@us.ibm.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1300839376-22520-1-git-send-email-aliguori@us.ibm.com> References: <1300839376-22520-1-git-send-email-aliguori@us.ibm.com> X-Content-Scanned: Fidelis XPS MAILER X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-Received-From: 32.97.182.146 Cc: Jan Kiszka , Anthony Liguori , Juan Quintela Subject: [Qemu-devel] [PATCH 02/11] vmstate: register all VMStateDescriptions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org This is a purely mechanical change. It was generated with a simple python script and a little bit of hand tuning. Without this, we can only see VMStateDescriptions that are part of an active device which means that we have to test migration with a VM configured with every possible device. Signed-off-by: Anthony Liguori --- hw/ac97.c | 8 ++++++ hw/acpi_piix4.c | 8 ++++++ hw/apb_pci.c | 8 ++++++ hw/apic.c | 8 ++++++ hw/arm_sysctl.c | 8 ++++++ hw/bonito.c | 8 ++++++ hw/cirrus_vga.c | 8 ++++++ hw/cs4231.c | 8 ++++++ hw/cs4231a.c | 8 ++++++ hw/dec_pci.c | 8 ++++++ hw/e1000.c | 8 ++++++ hw/eccmemctl.c | 8 ++++++ hw/eeprom93xx.c | 8 ++++++ hw/es1370.c | 8 ++++++ hw/escc.c | 8 ++++++ hw/esp.c | 8 ++++++ hw/fdc.c | 16 ++++++++++++ hw/fw_cfg.c | 8 ++++++ hw/gus.c | 8 ++++++ hw/hda-audio.c | 8 ++++++ hw/hpet.c | 8 ++++++ hw/hw.h | 3 ++ hw/i2c.c | 8 ++++++ hw/i8254.c | 8 ++++++ hw/i8259.c | 8 ++++++ hw/intel-hda.c | 8 ++++++ hw/ioapic.c | 8 ++++++ hw/ioh3420.c | 8 ++++++ hw/kvmclock.c | 8 ++++++ hw/lance.c | 8 ++++++ hw/lm32_juart.c | 8 ++++++ hw/lm32_pic.c | 8 ++++++ hw/lm32_sys.c | 8 ++++++ hw/lm32_timer.c | 8 ++++++ hw/lm32_uart.c | 8 ++++++ hw/lm832x.c | 8 ++++++ hw/lsi53c895a.c | 8 ++++++ hw/marvell_88w8618_audio.c | 8 ++++++ hw/max7310.c | 8 ++++++ hw/mc146818rtc.c | 8 ++++++ hw/mst_fpga.c | 8 ++++++ hw/musicpal.c | 56 ++++++++++++++++++++++++++++++++++++++++++++ hw/ne2000.c | 8 ++++++ hw/pc.c | 8 ++++++ hw/pci.c | 8 ++++++ hw/pckbd.c | 16 ++++++++++++ hw/pcnet-pci.c | 8 ++++++ hw/piix_pci.c | 8 ++++++ hw/pl031.c | 8 ++++++ hw/pl050.c | 16 ++++++++++++ hw/pl080.c | 16 ++++++++++++ hw/pl110.c | 16 ++++++++++++ hw/pl190.c | 8 ++++++ hw/ps2.c | 16 ++++++++++++ hw/pxa2xx.c | 16 ++++++++++++ hw/pxa2xx_dma.c | 8 ++++++ hw/pxa2xx_pic.c | 8 ++++++ hw/pxa2xx_timer.c | 16 ++++++++++++ hw/qxl.c | 16 ++++++++++++ hw/rtl8139.c | 16 ++++++++++++ hw/sb16.c | 8 ++++++ hw/sbi.c | 8 ++++++ hw/serial.c | 10 ++++++- hw/slavio_intctl.c | 8 ++++++ hw/slavio_misc.c | 8 ++++++ hw/slavio_timer.c | 8 ++++++ hw/smc91c111.c | 8 ++++++ hw/sparc32_dma.c | 8 ++++++ hw/spitz.c | 32 +++++++++++++++++++++++++ hw/ssd0303.c | 8 ++++++ hw/sun4c_intctl.c | 8 ++++++ hw/sun4m_iommu.c | 8 ++++++ hw/tcx.c | 8 ++++++ hw/tmp105.c | 8 ++++++ hw/twl92230.c | 8 ++++++ hw/usb-hid.c | 8 ++++++ hw/usb-hub.c | 8 ++++++ hw/usb-uhci.c | 8 ++++++ hw/versatilepb.c | 8 ++++++ hw/vga-isa.c | 8 ++++++ hw/vga-pci.c | 8 ++++++ hw/vmmouse.c | 8 ++++++ hw/vmware_vga.c | 8 ++++++ hw/vt82c686.c | 16 ++++++++++++ hw/wdt_i6300esb.c | 8 ++++++ hw/wdt_ib700.c | 8 ++++++ hw/wm8750.c | 8 ++++++ hw/xio3130_downstream.c | 8 ++++++ hw/xio3130_upstream.c | 8 ++++++ hw/zaurus.c | 8 ++++++ module.h | 2 + savevm.c | 4 +++ target-i386/machine.c | 8 ++++++ 93 files changed, 889 insertions(+), 2 deletions(-) diff --git a/hw/ac97.c b/hw/ac97.c index d71072d..bf818b8 100644 --- a/hw/ac97.c +++ b/hw/ac97.c @@ -1343,6 +1343,14 @@ static PCIDeviceInfo ac97_info = { .init = ac97_initfn, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_ac97); +} + +vmstate_init(init_vmstate_description_0); + static void ac97_register (void) { pci_qdev_register (&ac97_info); diff --git a/hw/acpi_piix4.c b/hw/acpi_piix4.c index 0b2bc97..aaa009b 100644 --- a/hw/acpi_piix4.c +++ b/hw/acpi_piix4.c @@ -460,6 +460,14 @@ static PCIDeviceInfo piix4_pm_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_acpi); +} + +vmstate_init(init_vmstate_description_0); + static void piix4_pm_register(void) { pci_qdev_register(&piix4_pm_info); diff --git a/hw/apb_pci.c b/hw/apb_pci.c index 84e9af7..e5d7954 100644 --- a/hw/apb_pci.c +++ b/hw/apb_pci.c @@ -472,6 +472,14 @@ static PCIDeviceInfo pbm_pci_bridge_info = { .is_bridge = 1, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_pci_device); +} + +vmstate_init(init_vmstate_description_0); + static void pbm_register_devices(void) { sysbus_register_withprop(&pbm_host_info); diff --git a/hw/apic.c b/hw/apic.c index 9febf40..cdf64dc 100644 --- a/hw/apic.c +++ b/hw/apic.c @@ -1025,6 +1025,14 @@ static SysBusDeviceInfo apic_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_apic); +} + +vmstate_init(init_vmstate_description_0); + static void apic_register_devices(void) { sysbus_register_withprop(&apic_info); diff --git a/hw/arm_sysctl.c b/hw/arm_sysctl.c index 9225b58..e11b1ee 100644 --- a/hw/arm_sysctl.c +++ b/hw/arm_sysctl.c @@ -363,6 +363,14 @@ static SysBusDeviceInfo arm_sysctl_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_arm_sysctl); +} + +vmstate_init(init_vmstate_description_0); + static void arm_sysctl_register_devices(void) { sysbus_register_withprop(&arm_sysctl_info); diff --git a/hw/bonito.c b/hw/bonito.c index 65a4a63..6ec0777 100644 --- a/hw/bonito.c +++ b/hw/bonito.c @@ -798,6 +798,14 @@ static PCIDeviceInfo bonito_info = { .init = bonito_initfn, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_bonito); +} + +vmstate_init(init_vmstate_description_0); + static SysBusDeviceInfo bonito_pcihost_info = { .init = bonito_pcihost_initfn, .qdev.name = "Bonito-pcihost", diff --git a/hw/cirrus_vga.c b/hw/cirrus_vga.c index 2724f7b..97a1c4c 100644 --- a/hw/cirrus_vga.c +++ b/hw/cirrus_vga.c @@ -3145,6 +3145,14 @@ static PCIDeviceInfo cirrus_vga_info = { .config_write = pci_cirrus_write_config, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_pci_cirrus_vga); +} + +vmstate_init(init_vmstate_description_0); + static void cirrus_vga_register(void) { pci_qdev_register(&cirrus_vga_info); diff --git a/hw/cs4231.c b/hw/cs4231.c index a65b697..d9601d0 100644 --- a/hw/cs4231.c +++ b/hw/cs4231.c @@ -167,6 +167,14 @@ static SysBusDeviceInfo cs4231_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_cs4231); +} + +vmstate_init(init_vmstate_description_0); + static void cs4231_register_devices(void) { sysbus_register_withprop(&cs4231_info); diff --git a/hw/cs4231a.c b/hw/cs4231a.c index 598f032..e036faf 100644 --- a/hw/cs4231a.c +++ b/hw/cs4231a.c @@ -679,6 +679,14 @@ static ISADeviceInfo cs4231a_info = { }, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_cs4231a); +} + +vmstate_init(init_vmstate_description_0); + static void cs4231a_register (void) { isa_qdev_register (&cs4231a_info); diff --git a/hw/dec_pci.c b/hw/dec_pci.c index bf88f2a..4924a43 100644 --- a/hw/dec_pci.c +++ b/hw/dec_pci.c @@ -76,6 +76,14 @@ static PCIDeviceInfo dec_21154_pci_bridge_info = { .is_bridge = 1, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_pci_device); +} + +vmstate_init(init_vmstate_description_0); + PCIBus *pci_dec_21154_init(PCIBus *parent_bus, int devfn) { PCIDevice *dev; diff --git a/hw/e1000.c b/hw/e1000.c index 2a4d5c7..e906c65 100644 --- a/hw/e1000.c +++ b/hw/e1000.c @@ -1212,6 +1212,14 @@ static PCIDeviceInfo e1000_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_e1000); +} + +vmstate_init(init_vmstate_description_0); + static void e1000_register_devices(void) { pci_qdev_register(&e1000_info); diff --git a/hw/eccmemctl.c b/hw/eccmemctl.c index 2bda87b..770b6aa 100644 --- a/hw/eccmemctl.c +++ b/hw/eccmemctl.c @@ -323,6 +323,14 @@ static SysBusDeviceInfo ecc_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_ecc); +} + +vmstate_init(init_vmstate_description_0); + static void ecc_register_devices(void) { diff --git a/hw/eeprom93xx.c b/hw/eeprom93xx.c index 660b28f..cfa695d 100644 --- a/hw/eeprom93xx.c +++ b/hw/eeprom93xx.c @@ -320,6 +320,14 @@ eeprom_t *eeprom93xx_new(DeviceState *dev, uint16_t nwords) return eeprom; } +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description(void) +{ + register_vmstate_description(&vmstate_eeprom); +} + +vmstate_init(init_vmstate_description); + void eeprom93xx_free(DeviceState *dev, eeprom_t *eeprom) { /* Destroy EEPROM. */ diff --git a/hw/es1370.c b/hw/es1370.c index 40cb48c..d2f3671 100644 --- a/hw/es1370.c +++ b/hw/es1370.c @@ -1045,6 +1045,14 @@ static PCIDeviceInfo es1370_info = { .init = es1370_initfn, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_es1370); +} + +vmstate_init(init_vmstate_description_0); + static void es1370_register (void) { pci_qdev_register (&es1370_info); diff --git a/hw/escc.c b/hw/escc.c index f6fd919..08062e7 100644 --- a/hw/escc.c +++ b/hw/escc.c @@ -953,6 +953,14 @@ static SysBusDeviceInfo escc_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_escc); +} + +vmstate_init(init_vmstate_description_0); + static void escc_register_devices(void) { sysbus_register_withprop(&escc_info); diff --git a/hw/esp.c b/hw/esp.c index fa9d2a2..977890e 100644 --- a/hw/esp.c +++ b/hw/esp.c @@ -743,6 +743,14 @@ static SysBusDeviceInfo esp_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_esp); +} + +vmstate_init(init_vmstate_description_0); + static void esp_register_devices(void) { sysbus_register_withprop(&esp_info); diff --git a/hw/fdc.c b/hw/fdc.c index 9fdbc75..4b02dce 100644 --- a/hw/fdc.c +++ b/hw/fdc.c @@ -1938,6 +1938,14 @@ static ISADeviceInfo isa_fdc_info = { }, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_isa_fdc); +} + +vmstate_init(init_vmstate_description_0); + static const VMStateDescription vmstate_sysbus_fdc ={ .name = "fdc", .version_id = 2, @@ -1961,6 +1969,14 @@ static SysBusDeviceInfo sysbus_fdc_info = { }, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_1(void) +{ + register_vmstate_description(&vmstate_sysbus_fdc); +} + +vmstate_init(init_vmstate_description_1); + static SysBusDeviceInfo sun4m_fdc_info = { .init = sun4m_fdc_init1, .qdev.name = "SUNW,fdtwo", diff --git a/hw/fw_cfg.c b/hw/fw_cfg.c index 85c8c3c..67603a9 100644 --- a/hw/fw_cfg.c +++ b/hw/fw_cfg.c @@ -399,6 +399,14 @@ static SysBusDeviceInfo fw_cfg_info = { }, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_fw_cfg); +} + +vmstate_init(init_vmstate_description_0); + static void fw_cfg_register_devices(void) { sysbus_register_withprop(&fw_cfg_info); diff --git a/hw/gus.c b/hw/gus.c index ff9e7c7..8e35ffb 100644 --- a/hw/gus.c +++ b/hw/gus.c @@ -315,6 +315,14 @@ static ISADeviceInfo gus_info = { }, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_gus); +} + +vmstate_init(init_vmstate_description_0); + static void gus_register (void) { isa_qdev_register (&gus_info); diff --git a/hw/hda-audio.c b/hw/hda-audio.c index c699d6f..f384de6 100644 --- a/hw/hda-audio.c +++ b/hw/hda-audio.c @@ -906,6 +906,14 @@ static HDACodecDeviceInfo hda_audio_info_output = { .stream = hda_audio_stream, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_hda_audio); +} + +vmstate_init(init_vmstate_description_0); + static HDACodecDeviceInfo hda_audio_info_duplex = { .qdev.name = "hda-duplex", .qdev.desc = "HDA Audio Codec, duplex", diff --git a/hw/hpet.c b/hw/hpet.c index ef9a2a0..9010f45 100644 --- a/hw/hpet.c +++ b/hw/hpet.c @@ -737,6 +737,14 @@ static SysBusDeviceInfo hpet_device_info = { }, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_hpet); +} + +vmstate_init(init_vmstate_description_0); + static void hpet_register_device(void) { sysbus_register_withprop(&hpet_device_info); diff --git a/hw/hw.h b/hw/hw.h index 1b09039..81bbd7a 100644 --- a/hw/hw.h +++ b/hw/hw.h @@ -914,4 +914,7 @@ int vmstate_register_with_alias_id(DeviceState *dev, int instance_id, int required_for_version); void vmstate_unregister(DeviceState *dev, const VMStateDescription *vmsd, void *opaque); + +void register_vmstate_description(const VMStateDescription *desc); + #endif diff --git a/hw/i2c.c b/hw/i2c.c index f80d12d..85ae1f9 100644 --- a/hw/i2c.c +++ b/hw/i2c.c @@ -66,6 +66,14 @@ i2c_bus *i2c_init_bus(DeviceState *parent, const char *name) return bus; } +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description(void) +{ + register_vmstate_description(&vmstate_i2c_bus); +} + +vmstate_init(init_vmstate_description); + void i2c_set_slave_address(i2c_slave *dev, uint8_t address) { dev->address = address; diff --git a/hw/i8254.c b/hw/i8254.c index a9ca9f6..261f860 100644 --- a/hw/i8254.c +++ b/hw/i8254.c @@ -539,6 +539,14 @@ static ISADeviceInfo pit_info = { }, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_pit); +} + +vmstate_init(init_vmstate_description_0); + static void pit_register(void) { isa_qdev_register(&pit_info); diff --git a/hw/i8259.c b/hw/i8259.c index 84d330d..388e145 100644 --- a/hw/i8259.c +++ b/hw/i8259.c @@ -487,6 +487,14 @@ static void pic_init1(int io_addr, int elcr_addr, PicState *s) qemu_register_reset(pic_reset, s); } +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description(void) +{ + register_vmstate_description(&vmstate_pic); +} + +vmstate_init(init_vmstate_description); + void pic_info(Monitor *mon) { int i; diff --git a/hw/intel-hda.c b/hw/intel-hda.c index b0b1d12..a32d28d 100644 --- a/hw/intel-hda.c +++ b/hw/intel-hda.c @@ -1283,6 +1283,14 @@ static PCIDeviceInfo intel_hda_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_intel_hda); +} + +vmstate_init(init_vmstate_description_0); + static void intel_hda_register(void) { pci_qdev_register(&intel_hda_info); diff --git a/hw/ioapic.c b/hw/ioapic.c index 569327d..8ac6d34 100644 --- a/hw/ioapic.c +++ b/hw/ioapic.c @@ -350,6 +350,14 @@ static SysBusDeviceInfo ioapic_info = { .qdev.no_user = 1, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_ioapic); +} + +vmstate_init(init_vmstate_description_0); + static void ioapic_register_devices(void) { sysbus_register_withprop(&ioapic_info); diff --git a/hw/ioh3420.c b/hw/ioh3420.c index 95adf09..7b0b801 100644 --- a/hw/ioh3420.c +++ b/hw/ioh3420.c @@ -229,6 +229,14 @@ static PCIDeviceInfo ioh3420_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_ioh3420); +} + +vmstate_init(init_vmstate_description_0); + static void ioh3420_register(void) { pci_qdev_register(&ioh3420_info); diff --git a/hw/kvmclock.c b/hw/kvmclock.c index b6ceddf..f9c05cd 100644 --- a/hw/kvmclock.c +++ b/hw/kvmclock.c @@ -99,6 +99,14 @@ static SysBusDeviceInfo kvmclock_info = { .init = kvmclock_init, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&kvmclock_vmsd); +} + +vmstate_init(init_vmstate_description_0); + /* Note: Must be called after VCPU initialization. */ void kvmclock_create(void) { diff --git a/hw/lance.c b/hw/lance.c index ddb1cbb..32d81ca 100644 --- a/hw/lance.c +++ b/hw/lance.c @@ -153,6 +153,14 @@ static SysBusDeviceInfo lance_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_lance); +} + +vmstate_init(init_vmstate_description_0); + static void lance_register_devices(void) { sysbus_register_withprop(&lance_info); diff --git a/hw/lm32_juart.c b/hw/lm32_juart.c index fddcf7e..a49308c 100644 --- a/hw/lm32_juart.c +++ b/hw/lm32_juart.c @@ -142,6 +142,14 @@ static SysBusDeviceInfo lm32_juart_info = { .qdev.reset = juart_reset, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_lm32_juart); +} + +vmstate_init(init_vmstate_description_0); + static void lm32_juart_register(void) { sysbus_register_withprop(&lm32_juart_info); diff --git a/hw/lm32_pic.c b/hw/lm32_pic.c index 02941a7..de4f310 100644 --- a/hw/lm32_pic.c +++ b/hw/lm32_pic.c @@ -182,6 +182,14 @@ static SysBusDeviceInfo lm32_pic_info = { .qdev.reset = pic_reset, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_lm32_pic); +} + +vmstate_init(init_vmstate_description_0); + static void lm32_pic_register(void) { sysbus_register_withprop(&lm32_pic_info); diff --git a/hw/lm32_sys.c b/hw/lm32_sys.c index 427b05f..4c718b7 100644 --- a/hw/lm32_sys.c +++ b/hw/lm32_sys.c @@ -153,6 +153,14 @@ static SysBusDeviceInfo lm32_sys_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_lm32_sys); +} + +vmstate_init(init_vmstate_description_0); + static void lm32_sys_register(void) { sysbus_register_withprop(&lm32_sys_info); diff --git a/hw/lm32_timer.c b/hw/lm32_timer.c index ed28984..445cfde 100644 --- a/hw/lm32_timer.c +++ b/hw/lm32_timer.c @@ -214,6 +214,14 @@ static SysBusDeviceInfo lm32_timer_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_lm32_timer); +} + +vmstate_init(init_vmstate_description_0); + static void lm32_timer_register(void) { sysbus_register_withprop(&lm32_timer_info); diff --git a/hw/lm32_uart.c b/hw/lm32_uart.c index e225087..32c6ffd 100644 --- a/hw/lm32_uart.c +++ b/hw/lm32_uart.c @@ -280,6 +280,14 @@ static SysBusDeviceInfo lm32_uart_info = { .qdev.reset = uart_reset, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_lm32_uart); +} + +vmstate_init(init_vmstate_description_0); + static void lm32_uart_register(void) { sysbus_register_withprop(&lm32_uart_info); diff --git a/hw/lm832x.c b/hw/lm832x.c index 590a4cc..ac097bd 100644 --- a/hw/lm832x.c +++ b/hw/lm832x.c @@ -504,6 +504,14 @@ static I2CSlaveInfo lm8323_info = { .send = lm_i2c_tx }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_lm_kbd); +} + +vmstate_init(init_vmstate_description_0); + static void lm832x_register_devices(void) { i2c_register_slave(&lm8323_info); diff --git a/hw/lsi53c895a.c b/hw/lsi53c895a.c index 84a4992..699261b 100644 --- a/hw/lsi53c895a.c +++ b/hw/lsi53c895a.c @@ -2211,6 +2211,14 @@ static PCIDeviceInfo lsi_info = { .exit = lsi_scsi_uninit, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_lsi_scsi); +} + +vmstate_init(init_vmstate_description_0); + static void lsi53c895a_register_devices(void) { pci_qdev_register(&lsi_info); diff --git a/hw/marvell_88w8618_audio.c b/hw/marvell_88w8618_audio.c index 3eff925..25437ea 100644 --- a/hw/marvell_88w8618_audio.c +++ b/hw/marvell_88w8618_audio.c @@ -291,6 +291,14 @@ static SysBusDeviceInfo mv88w8618_audio_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&mv88w8618_audio_vmsd); +} + +vmstate_init(init_vmstate_description_0); + static void mv88w8618_register_devices(void) { sysbus_register_withprop(&mv88w8618_audio_info); diff --git a/hw/max7310.c b/hw/max7310.c index c1bdb2e..12b8769 100644 --- a/hw/max7310.c +++ b/hw/max7310.c @@ -196,6 +196,14 @@ static I2CSlaveInfo max7310_info = { .send = max7310_tx }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_max7310); +} + +vmstate_init(init_vmstate_description_0); + static void max7310_register_devices(void) { i2c_register_slave(&max7310_info); diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c index 1c9a706..7b80c18 100644 --- a/hw/mc146818rtc.c +++ b/hw/mc146818rtc.c @@ -650,6 +650,14 @@ static ISADeviceInfo mc146818rtc_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_rtc); +} + +vmstate_init(init_vmstate_description_0); + static void mc146818rtc_register(void) { isa_qdev_register(&mc146818rtc_info); diff --git a/hw/mst_fpga.c b/hw/mst_fpga.c index a04355c..c5111b9 100644 --- a/hw/mst_fpga.c +++ b/hw/mst_fpga.c @@ -248,6 +248,14 @@ static SysBusDeviceInfo mst_fpga_info = { .qdev.vmsd = &vmstate_mst_fpga_regs, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_mst_fpga_regs); +} + +vmstate_init(init_vmstate_description_0); + static void mst_fpga_register(void) { sysbus_register_withprop(&mst_fpga_info); diff --git a/hw/musicpal.c b/hw/musicpal.c index d98aa8d..773b93c 100644 --- a/hw/musicpal.c +++ b/hw/musicpal.c @@ -423,6 +423,14 @@ static SysBusDeviceInfo mv88w8618_eth_info = { }, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&mv88w8618_eth_vmsd); +} + +vmstate_init(init_vmstate_description_0); + /* LCD register offsets */ #define MP_LCD_IRQCTRL 0x180 #define MP_LCD_IRQSTAT 0x184 @@ -637,6 +645,14 @@ static SysBusDeviceInfo musicpal_lcd_info = { .qdev.vmsd = &musicpal_lcd_vmsd, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_1(void) +{ + register_vmstate_description(&musicpal_lcd_vmsd); +} + +vmstate_init(init_vmstate_description_1); + /* PIC register offsets */ #define MP_PIC_STATUS 0x00 #define MP_PIC_ENABLE_SET 0x08 @@ -753,6 +769,14 @@ static SysBusDeviceInfo mv88w8618_pic_info = { .qdev.vmsd = &mv88w8618_pic_vmsd, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_2(void) +{ + register_vmstate_description(&mv88w8618_pic_vmsd); +} + +vmstate_init(init_vmstate_description_2); + /* PIT register offsets */ #define MP_PIT_TIMER1_LENGTH 0x00 /* ... */ @@ -927,6 +951,14 @@ static SysBusDeviceInfo mv88w8618_pit_info = { .qdev.vmsd = &mv88w8618_pit_vmsd, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_3(void) +{ + register_vmstate_description(&mv88w8618_pit_vmsd); +} + +vmstate_init(init_vmstate_description_3); + /* Flash config register offsets */ #define MP_FLASHCFG_CFGR0 0x04 @@ -1004,6 +1036,14 @@ static SysBusDeviceInfo mv88w8618_flashcfg_info = { .qdev.vmsd = &mv88w8618_flashcfg_vmsd, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_4(void) +{ + register_vmstate_description(&mv88w8618_flashcfg_vmsd); +} + +vmstate_init(init_vmstate_description_4); + /* Misc register offsets */ #define MP_MISC_BOARD_REVISION 0x18 @@ -1335,6 +1375,14 @@ static SysBusDeviceInfo musicpal_gpio_info = { .qdev.vmsd = &musicpal_gpio_vmsd, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_5(void) +{ + register_vmstate_description(&musicpal_gpio_vmsd); +} + +vmstate_init(init_vmstate_description_5); + /* Keyboard codes & masks */ #define KEY_RELEASED 0x80 #define KEY_CODE 0x7f @@ -1478,6 +1526,14 @@ static SysBusDeviceInfo musicpal_key_info = { .qdev.vmsd = &musicpal_key_vmsd, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_6(void) +{ + register_vmstate_description(&musicpal_key_vmsd); +} + +vmstate_init(init_vmstate_description_6); + static struct arm_boot_info musicpal_binfo = { .loader_start = 0x0, .board_id = 0x20e, diff --git a/hw/ne2000.c b/hw/ne2000.c index 5966359..270578b 100644 --- a/hw/ne2000.c +++ b/hw/ne2000.c @@ -773,6 +773,14 @@ static PCIDeviceInfo ne2000_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_pci_ne2000); +} + +vmstate_init(init_vmstate_description_0); + static void ne2000_register_devices(void) { pci_qdev_register(&ne2000_info); diff --git a/hw/pc.c b/hw/pc.c index 6939c04..5211b29 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -497,6 +497,14 @@ static ISADeviceInfo port92_info = { .init = port92_initfn, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_port92_isa); +} + +vmstate_init(init_vmstate_description_0); + static void port92_register(void) { isa_qdev_register(&port92_info); diff --git a/hw/pci.c b/hw/pci.c index 8b76cea..50b9a14 100644 --- a/hw/pci.c +++ b/hw/pci.c @@ -269,6 +269,14 @@ void pci_bus_new_inplace(PCIBus *bus, DeviceState *parent, vmstate_register(NULL, -1, &vmstate_pcibus, bus); } +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description(void) +{ + register_vmstate_description(&vmstate_pcibus); +} + +vmstate_init(init_vmstate_description); + PCIBus *pci_bus_new(DeviceState *parent, const char *name, int devfn_min) { PCIBus *bus; diff --git a/hw/pckbd.c b/hw/pckbd.c index ae65c04..027f69e 100644 --- a/hw/pckbd.c +++ b/hw/pckbd.c @@ -433,6 +433,14 @@ void i8042_mm_init(qemu_irq kbd_irq, qemu_irq mouse_irq, qemu_register_reset(kbd_reset, s); } +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description(void) +{ + register_vmstate_description(&vmstate_kbd); +} + +vmstate_init(init_vmstate_description); + typedef struct ISAKBDState { ISADevice dev; KBDState kbd; @@ -492,6 +500,14 @@ static ISADeviceInfo i8042_info = { .init = i8042_initfn, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_kbd_isa); +} + +vmstate_init(init_vmstate_description_0); + static void i8042_register(void) { isa_qdev_register(&i8042_info); diff --git a/hw/pcnet-pci.c b/hw/pcnet-pci.c index 339a401..d3c2738 100644 --- a/hw/pcnet-pci.c +++ b/hw/pcnet-pci.c @@ -338,6 +338,14 @@ static PCIDeviceInfo pcnet_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_pci_pcnet); +} + +vmstate_init(init_vmstate_description_0); + static void pci_pcnet_register_devices(void) { pci_qdev_register(&pcnet_info); diff --git a/hw/piix_pci.c b/hw/piix_pci.c index 358da58..1e5f379 100644 --- a/hw/piix_pci.c +++ b/hw/piix_pci.c @@ -364,6 +364,14 @@ static PCIDeviceInfo i440fx_info[] = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_piix3); +} + +vmstate_init(init_vmstate_description_0); + static SysBusDeviceInfo i440fx_pcihost_info = { .init = i440fx_pcihost_initfn, .qdev.name = "i440FX-pcihost", diff --git a/hw/pl031.c b/hw/pl031.c index 8c2f9d0..5372e21 100644 --- a/hw/pl031.c +++ b/hw/pl031.c @@ -229,6 +229,14 @@ static SysBusDeviceInfo pl031_info = { .qdev.no_user = 1, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_pl031); +} + +vmstate_init(init_vmstate_description_0); + static void pl031_register_devices(void) { sysbus_register_withprop(&pl031_info); diff --git a/hw/pl050.c b/hw/pl050.c index b155cc0..4c2b279 100644 --- a/hw/pl050.c +++ b/hw/pl050.c @@ -171,6 +171,14 @@ static SysBusDeviceInfo pl050_kbd_info = { .qdev.vmsd = &vmstate_pl050, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_pl050); +} + +vmstate_init(init_vmstate_description_0); + static SysBusDeviceInfo pl050_mouse_info = { .init = pl050_init_mouse, .qdev.name = "pl050_mouse", @@ -178,6 +186,14 @@ static SysBusDeviceInfo pl050_mouse_info = { .qdev.vmsd = &vmstate_pl050, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_1(void) +{ + register_vmstate_description(&vmstate_pl050); +} + +vmstate_init(init_vmstate_description_1); + static void pl050_register_devices(void) { sysbus_register_withprop(&pl050_kbd_info); diff --git a/hw/pl080.c b/hw/pl080.c index 901f04a..1c6198b 100644 --- a/hw/pl080.c +++ b/hw/pl080.c @@ -388,6 +388,14 @@ static SysBusDeviceInfo pl080_info = { .qdev.no_user = 1, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_pl080); +} + +vmstate_init(init_vmstate_description_0); + static SysBusDeviceInfo pl081_info = { .init = pl081_init, .qdev.name = "pl081", @@ -396,6 +404,14 @@ static SysBusDeviceInfo pl081_info = { .qdev.no_user = 1, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_1(void) +{ + register_vmstate_description(&vmstate_pl080); +} + +vmstate_init(init_vmstate_description_1); + /* The PL080 and PL081 are the same except for the number of channels they implement (8 and 2 respectively). */ static void pl080_register_devices(void) diff --git a/hw/pl110.c b/hw/pl110.c index 06d2dfa..9073a40 100644 --- a/hw/pl110.c +++ b/hw/pl110.c @@ -405,6 +405,14 @@ static SysBusDeviceInfo pl110_info = { .qdev.no_user = 1, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_pl110); +} + +vmstate_init(init_vmstate_description_0); + static SysBusDeviceInfo pl110_versatile_info = { .init = pl110_versatile_init, .qdev.name = "pl110_versatile", @@ -413,6 +421,14 @@ static SysBusDeviceInfo pl110_versatile_info = { .qdev.no_user = 1, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_1(void) +{ + register_vmstate_description(&vmstate_pl110); +} + +vmstate_init(init_vmstate_description_1); + static void pl110_register_devices(void) { sysbus_register_withprop(&pl110_info); diff --git a/hw/pl190.c b/hw/pl190.c index 75f2ba1..a03db5c 100644 --- a/hw/pl190.c +++ b/hw/pl190.c @@ -270,6 +270,14 @@ static SysBusDeviceInfo pl190_info = { .qdev.no_user = 1, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_pl190); +} + +vmstate_init(init_vmstate_description_0); + static void pl190_register_devices(void) { sysbus_register_withprop(&pl190_info); diff --git a/hw/ps2.c b/hw/ps2.c index 91b73e0..c77d5fc 100644 --- a/hw/ps2.c +++ b/hw/ps2.c @@ -615,6 +615,14 @@ void *ps2_kbd_init(void (*update_irq)(void *, int), void *update_arg) return s; } +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_ps2_keyboard); +} + +vmstate_init(init_vmstate_description_0); + void *ps2_mouse_init(void (*update_irq)(void *, int), void *update_arg) { PS2MouseState *s = (PS2MouseState *)qemu_mallocz(sizeof(PS2MouseState)); @@ -626,3 +634,11 @@ void *ps2_mouse_init(void (*update_irq)(void *, int), void *update_arg) qemu_register_reset(ps2_mouse_reset, s); return s; } + +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_1(void) +{ + register_vmstate_description(&vmstate_ps2_mouse); +} + +vmstate_init(init_vmstate_description_1); diff --git a/hw/pxa2xx.c b/hw/pxa2xx.c index 9b95e2c..d8f2943 100644 --- a/hw/pxa2xx.c +++ b/hw/pxa2xx.c @@ -1293,6 +1293,14 @@ static SysBusDeviceInfo pxa2xx_rtc_sysbus_info = { .qdev.vmsd = &vmstate_pxa2xx_rtc_regs, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_pxa2xx_rtc_regs); +} + +vmstate_init(init_vmstate_description_0); + /* I2C Interface */ typedef struct { i2c_slave i2c; @@ -1595,6 +1603,14 @@ static SysBusDeviceInfo pxa2xx_i2c_info = { }, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_1(void) +{ + register_vmstate_description(&vmstate_pxa2xx_i2c); +} + +vmstate_init(init_vmstate_description_1); + /* PXA Inter-IC Sound Controller */ static void pxa2xx_i2s_reset(PXA2xxI2SState *i2s) { diff --git a/hw/pxa2xx_dma.c b/hw/pxa2xx_dma.c index a67498b..6d5fb56 100644 --- a/hw/pxa2xx_dma.c +++ b/hw/pxa2xx_dma.c @@ -561,6 +561,14 @@ static SysBusDeviceInfo pxa2xx_dma_info = { }, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_pxa2xx_dma); +} + +vmstate_init(init_vmstate_description_0); + static void pxa2xx_dma_register(void) { sysbus_register_withprop(&pxa2xx_dma_info); diff --git a/hw/pxa2xx_pic.c b/hw/pxa2xx_pic.c index e9a5361..fa6abba 100644 --- a/hw/pxa2xx_pic.c +++ b/hw/pxa2xx_pic.c @@ -309,6 +309,14 @@ static SysBusDeviceInfo pxa2xx_pic_info = { .qdev.vmsd = &vmstate_pxa2xx_pic_regs, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_pxa2xx_pic_regs); +} + +vmstate_init(init_vmstate_description_0); + static void pxa2xx_pic_register(void) { sysbus_register_withprop(&pxa2xx_pic_info); diff --git a/hw/pxa2xx_timer.c b/hw/pxa2xx_timer.c index f777a21..db0603e 100644 --- a/hw/pxa2xx_timer.c +++ b/hw/pxa2xx_timer.c @@ -496,6 +496,14 @@ static SysBusDeviceInfo pxa25x_timer_dev_info = { }, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_pxa2xx_timer_regs); +} + +vmstate_init(init_vmstate_description_0); + static SysBusDeviceInfo pxa27x_timer_dev_info = { .init = pxa2xx_timer_init, .qdev.name = "pxa27x-timer", @@ -510,6 +518,14 @@ static SysBusDeviceInfo pxa27x_timer_dev_info = { }, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_1(void) +{ + register_vmstate_description(&vmstate_pxa2xx_timer_regs); +} + +vmstate_init(init_vmstate_description_1); + static void pxa2xx_timer_register(void) { sysbus_register_withprop(&pxa25x_timer_dev_info); diff --git a/hw/qxl.c b/hw/qxl.c index fe4212b..2a0d090 100644 --- a/hw/qxl.c +++ b/hw/qxl.c @@ -1504,6 +1504,14 @@ static PCIDeviceInfo qxl_info_primary = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&qxl_vmstate); +} + +vmstate_init(init_vmstate_description_0); + static PCIDeviceInfo qxl_info_secondary = { .qdev.name = "qxl", .qdev.desc = "Spice QXL GPU (secondary)", @@ -1522,6 +1530,14 @@ static PCIDeviceInfo qxl_info_secondary = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_1(void) +{ + register_vmstate_description(&qxl_vmstate); +} + +vmstate_init(init_vmstate_description_1); + static void qxl_register(void) { pci_qdev_register(&qxl_info_primary); diff --git a/hw/rtl8139.c b/hw/rtl8139.c index 0ba51fc..3b2f61e 100644 --- a/hw/rtl8139.c +++ b/hw/rtl8139.c @@ -3269,6 +3269,14 @@ static const VMStateDescription vmstate_rtl8139 = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_rtl8139_hotplug_ready); +} + +vmstate_init(init_vmstate_description_0); + /***********************************************************/ /* PCI RTL8139 definitions */ @@ -3422,6 +3430,14 @@ static PCIDeviceInfo rtl8139_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_1(void) +{ + register_vmstate_description(&vmstate_rtl8139); +} + +vmstate_init(init_vmstate_description_1); + static void rtl8139_register_devices(void) { pci_qdev_register(&rtl8139_info); diff --git a/hw/sb16.c b/hw/sb16.c index a76df1b..c98546a 100644 --- a/hw/sb16.c +++ b/hw/sb16.c @@ -1413,6 +1413,14 @@ static ISADeviceInfo sb16_info = { }, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_sb16); +} + +vmstate_init(init_vmstate_description_0); + static void sb16_register (void) { isa_qdev_register (&sb16_info); diff --git a/hw/sbi.c b/hw/sbi.c index 53f66f2..53a236c 100644 --- a/hw/sbi.c +++ b/hw/sbi.c @@ -140,6 +140,14 @@ static SysBusDeviceInfo sbi_info = { .qdev.reset = sbi_reset, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_sbi); +} + +vmstate_init(init_vmstate_description_0); + static void sbi_register_devices(void) { sysbus_register_withprop(&sbi_info); diff --git a/hw/serial.c b/hw/serial.c index 0ee61dd..c7ba97c 100644 --- a/hw/serial.c +++ b/hw/serial.c @@ -804,8 +804,6 @@ SerialState *serial_init(int base, qemu_irq irq, int baudbase, s->chr = chr; serial_init_core(s); - vmstate_register(NULL, base, &vmstate_serial, s); - register_ioport_write(base, 8, 1, serial_ioport_write, s); register_ioport_read(base, 8, 1, serial_ioport_read, s); return s; @@ -971,6 +969,14 @@ static ISADeviceInfo serial_isa_info = { }, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_isa_serial); +} + +vmstate_init(init_vmstate_description_0); + static void serial_register_devices(void) { isa_qdev_register(&serial_isa_info); diff --git a/hw/slavio_intctl.c b/hw/slavio_intctl.c index a83e5b8..8b3bdb5 100644 --- a/hw/slavio_intctl.c +++ b/hw/slavio_intctl.c @@ -455,6 +455,14 @@ static SysBusDeviceInfo slavio_intctl_info = { .qdev.reset = slavio_intctl_reset, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_intctl); +} + +vmstate_init(init_vmstate_description_0); + static void slavio_intctl_register_devices(void) { sysbus_register_withprop(&slavio_intctl_info); diff --git a/hw/slavio_misc.c b/hw/slavio_misc.c index 198360d..0b415b9 100644 --- a/hw/slavio_misc.c +++ b/hw/slavio_misc.c @@ -484,6 +484,14 @@ static SysBusDeviceInfo slavio_misc_info = { .qdev.reset = slavio_misc_reset, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_misc); +} + +vmstate_init(init_vmstate_description_0); + static SysBusDeviceInfo apc_info = { .init = apc_init1, .qdev.name = "apc", diff --git a/hw/slavio_timer.c b/hw/slavio_timer.c index 5511313..0f95113 100644 --- a/hw/slavio_timer.c +++ b/hw/slavio_timer.c @@ -416,6 +416,14 @@ static SysBusDeviceInfo slavio_timer_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_slavio_timer); +} + +vmstate_init(init_vmstate_description_0); + static void slavio_timer_register_devices(void) { sysbus_register_withprop(&slavio_timer_info); diff --git a/hw/smc91c111.c b/hw/smc91c111.c index dafea5c..63b4507 100644 --- a/hw/smc91c111.c +++ b/hw/smc91c111.c @@ -774,6 +774,14 @@ static SysBusDeviceInfo smc91c111_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_smc91c111); +} + +vmstate_init(init_vmstate_description_0); + static void smc91c111_register_devices(void) { sysbus_register_withprop(&smc91c111_info); diff --git a/hw/sparc32_dma.c b/hw/sparc32_dma.c index e75694b..d8be398 100644 --- a/hw/sparc32_dma.c +++ b/hw/sparc32_dma.c @@ -297,6 +297,14 @@ static SysBusDeviceInfo sparc32_dma_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_dma); +} + +vmstate_init(init_vmstate_description_0); + static void sparc32_dma_register_devices(void) { sysbus_register_withprop(&sparc32_dma_info); diff --git a/hw/spitz.c b/hw/spitz.c index 006f7a9..1078486 100644 --- a/hw/spitz.c +++ b/hw/spitz.c @@ -1043,6 +1043,14 @@ static SysBusDeviceInfo sl_nand_info = { }, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_sl_nand_info); +} + +vmstate_init(init_vmstate_description_0); + static VMStateDescription vmstate_spitz_kbd = { .name = "spitz-keyboard", .version_id = 1, @@ -1067,6 +1075,14 @@ static SysBusDeviceInfo spitz_keyboard_info = { }, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_1(void) +{ + register_vmstate_description(&vmstate_spitz_kbd); +} + +vmstate_init(init_vmstate_description_1); + static const VMStateDescription vmstate_corgi_ssp_regs = { .name = "corgi-ssp", .version_id = 1, @@ -1086,6 +1102,14 @@ static SSISlaveInfo corgi_ssp_info = { .transfer = corgi_ssp_transfer }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_2(void) +{ + register_vmstate_description(&vmstate_corgi_ssp_regs); +} + +vmstate_init(init_vmstate_description_2); + static const VMStateDescription vmstate_spitz_lcdtg_regs = { .name = "spitz-lcdtg", .version_id = 1, @@ -1106,6 +1130,14 @@ static SSISlaveInfo spitz_lcdtg_info = { .transfer = spitz_lcdtg_transfer }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_3(void) +{ + register_vmstate_description(&vmstate_spitz_lcdtg_regs); +} + +vmstate_init(init_vmstate_description_3); + static void spitz_register_devices(void) { ssi_register_slave(&corgi_ssp_info); diff --git a/hw/ssd0303.c b/hw/ssd0303.c index 108c068..dc3012d 100644 --- a/hw/ssd0303.c +++ b/hw/ssd0303.c @@ -304,6 +304,14 @@ static I2CSlaveInfo ssd0303_info = { .send = ssd0303_send }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_ssd0303); +} + +vmstate_init(init_vmstate_description_0); + static void ssd0303_register_devices(void) { i2c_register_slave(&ssd0303_info); diff --git a/hw/sun4c_intctl.c b/hw/sun4c_intctl.c index 5c7fdef..025ea92 100644 --- a/hw/sun4c_intctl.c +++ b/hw/sun4c_intctl.c @@ -216,6 +216,14 @@ static SysBusDeviceInfo sun4c_intctl_info = { .qdev.reset = sun4c_intctl_reset, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_sun4c_intctl); +} + +vmstate_init(init_vmstate_description_0); + static void sun4c_intctl_register_devices(void) { sysbus_register_withprop(&sun4c_intctl_info); diff --git a/hw/sun4m_iommu.c b/hw/sun4m_iommu.c index bba69ee..bb24412 100644 --- a/hw/sun4m_iommu.c +++ b/hw/sun4m_iommu.c @@ -370,6 +370,14 @@ static SysBusDeviceInfo iommu_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_iommu); +} + +vmstate_init(init_vmstate_description_0); + static void iommu_register_devices(void) { sysbus_register_withprop(&iommu_info); diff --git a/hw/tcx.c b/hw/tcx.c index 0e32830..40a771b 100644 --- a/hw/tcx.c +++ b/hw/tcx.c @@ -643,6 +643,14 @@ static SysBusDeviceInfo tcx_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_tcx); +} + +vmstate_init(init_vmstate_description_0); + static void tcx_register_devices(void) { sysbus_register_withprop(&tcx_info); diff --git a/hw/tmp105.c b/hw/tmp105.c index f7e6f2b..9d3325c 100644 --- a/hw/tmp105.c +++ b/hw/tmp105.c @@ -236,6 +236,14 @@ static I2CSlaveInfo tmp105_info = { .send = tmp105_tx }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_tmp105); +} + +vmstate_init(init_vmstate_description_0); + static void tmp105_register_devices(void) { i2c_register_slave(&tmp105_info); diff --git a/hw/twl92230.c b/hw/twl92230.c index 8e74acc..2b570a6 100644 --- a/hw/twl92230.c +++ b/hw/twl92230.c @@ -868,6 +868,14 @@ static I2CSlaveInfo twl92230_info = { .send = menelaus_tx }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_menelaus); +} + +vmstate_init(init_vmstate_description_0); + static void twl92230_register_devices(void) { i2c_register_slave(&twl92230_info); diff --git a/hw/usb-hid.c b/hw/usb-hid.c index c25362c..e8fff11 100644 --- a/hw/usb-hid.c +++ b/hw/usb-hid.c @@ -999,6 +999,14 @@ static struct USBDeviceInfo hid_info[] = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_usb_kbd); +} + +vmstate_init(init_vmstate_description_0); + static void usb_hid_register_devices(void) { usb_qdev_register_many(hid_info); diff --git a/hw/usb-hub.c b/hw/usb-hub.c index 3dd31ba..dfac0ed 100644 --- a/hw/usb-hub.c +++ b/hw/usb-hub.c @@ -583,6 +583,14 @@ static struct USBDeviceInfo hub_info = { .handle_destroy = usb_hub_handle_destroy, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_usb_hub); +} + +vmstate_init(init_vmstate_description_0); + static void usb_hub_register_devices(void) { usb_qdev_register(&hub_info); diff --git a/hw/usb-uhci.c b/hw/usb-uhci.c index 346db3e..bc8fc5b 100644 --- a/hw/usb-uhci.c +++ b/hw/usb-uhci.c @@ -1207,6 +1207,14 @@ static PCIDeviceInfo uhci_info[] = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_uhci); +} + +vmstate_init(init_vmstate_description_0); + static void uhci_register(void) { pci_qdev_register_many(uhci_info); diff --git a/hw/versatilepb.c b/hw/versatilepb.c index 9f1bfcf..659359c 100644 --- a/hw/versatilepb.c +++ b/hw/versatilepb.c @@ -354,6 +354,14 @@ static SysBusDeviceInfo vpb_sic_info = { .qdev.no_user = 1, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_vpb_sic); +} + +vmstate_init(init_vmstate_description_0); + static void versatilepb_register_devices(void) { sysbus_register_withprop(&vpb_sic_info); diff --git a/hw/vga-isa.c b/hw/vga-isa.c index fde0d56..5f1ef76 100644 --- a/hw/vga-isa.c +++ b/hw/vga-isa.c @@ -81,6 +81,14 @@ static ISADeviceInfo vga_info = { .init = vga_initfn, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_vga_common); +} + +vmstate_init(init_vmstate_description_0); + static void vga_register(void) { isa_qdev_register(&vga_info); diff --git a/hw/vga-pci.c b/hw/vga-pci.c index ce9ec45..c91739f 100644 --- a/hw/vga-pci.c +++ b/hw/vga-pci.c @@ -116,6 +116,14 @@ static PCIDeviceInfo vga_info = { .romfile = "vgabios-stdvga.bin", }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_vga_pci); +} + +vmstate_init(init_vmstate_description_0); + static void vga_register(void) { pci_qdev_register(&vga_info); diff --git a/hw/vmmouse.c b/hw/vmmouse.c index 1113f33..f2de7d8 100644 --- a/hw/vmmouse.c +++ b/hw/vmmouse.c @@ -282,6 +282,14 @@ static ISADeviceInfo vmmouse_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_vmmouse); +} + +vmstate_init(init_vmstate_description_0); + static void vmmouse_dev_register(void) { isa_qdev_register(&vmmouse_info); diff --git a/hw/vmware_vga.c b/hw/vmware_vga.c index 4656767..106c9b4 100644 --- a/hw/vmware_vga.c +++ b/hw/vmware_vga.c @@ -1318,6 +1318,14 @@ static PCIDeviceInfo vmsvga_info = { .romfile = "vgabios-vmware.bin", }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_vmware_vga); +} + +vmstate_init(init_vmstate_description_0); + static void vmsvga_register(void) { pci_qdev_register(&vmsvga_info); diff --git a/hw/vt82c686.c b/hw/vt82c686.c index 818460d..62b8c63 100644 --- a/hw/vt82c686.c +++ b/hw/vt82c686.c @@ -522,6 +522,14 @@ static PCIDeviceInfo via_pm_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_acpi); +} + +vmstate_init(init_vmstate_description_0); + static void vt82c686b_pm_register(void) { pci_qdev_register(&via_pm_info); @@ -587,6 +595,14 @@ static PCIDeviceInfo via_info = { .config_write = vt82c686b_write_config, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_1(void) +{ + register_vmstate_description(&vmstate_via); +} + +vmstate_init(init_vmstate_description_1); + static void vt82c686b_register(void) { pci_qdev_register(&via_info); diff --git a/hw/wdt_i6300esb.c b/hw/wdt_i6300esb.c index 4a7fba7..99f3c9b 100644 --- a/hw/wdt_i6300esb.c +++ b/hw/wdt_i6300esb.c @@ -439,6 +439,14 @@ static PCIDeviceInfo i6300esb_info = { .init = i6300esb_init, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_i6300esb); +} + +vmstate_init(init_vmstate_description_0); + static void i6300esb_register_devices(void) { watchdog_add_model(&model); diff --git a/hw/wdt_ib700.c b/hw/wdt_ib700.c index 81f22d0..4cd24b9 100644 --- a/hw/wdt_ib700.c +++ b/hw/wdt_ib700.c @@ -128,6 +128,14 @@ static ISADeviceInfo wdt_ib700_info = { .init = wdt_ib700_init, }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_ib700); +} + +vmstate_init(init_vmstate_description_0); + static void wdt_ib700_register_devices(void) { watchdog_add_model(&model); diff --git a/hw/wm8750.c b/hw/wm8750.c index c9c6744..dc46577 100644 --- a/hw/wm8750.c +++ b/hw/wm8750.c @@ -699,6 +699,14 @@ static I2CSlaveInfo wm8750_info = { .send = wm8750_tx }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_wm8750); +} + +vmstate_init(init_vmstate_description_0); + static void wm8750_register_devices(void) { i2c_register_slave(&wm8750_info); diff --git a/hw/xio3130_downstream.c b/hw/xio3130_downstream.c index 5aa6a6b..f6fd902 100644 --- a/hw/xio3130_downstream.c +++ b/hw/xio3130_downstream.c @@ -194,6 +194,14 @@ static PCIDeviceInfo xio3130_downstream_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_xio3130_downstream); +} + +vmstate_init(init_vmstate_description_0); + static void xio3130_downstream_register(void) { pci_qdev_register(&xio3130_downstream_info); diff --git a/hw/xio3130_upstream.c b/hw/xio3130_upstream.c index a7640f5..0b503ee 100644 --- a/hw/xio3130_upstream.c +++ b/hw/xio3130_upstream.c @@ -168,6 +168,14 @@ static PCIDeviceInfo xio3130_upstream_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_xio3130_upstream); +} + +vmstate_init(init_vmstate_description_0); + static void xio3130_upstream_register(void) { pci_qdev_register(&xio3130_upstream_info); diff --git a/hw/zaurus.c b/hw/zaurus.c index c24aeb5..6ce61af 100644 --- a/hw/zaurus.c +++ b/hw/zaurus.c @@ -236,6 +236,14 @@ static SysBusDeviceInfo scoop_sysbus_info = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description_0(void) +{ + register_vmstate_description(&vmstate_scoop_regs); +} + +vmstate_init(init_vmstate_description_0); + static void scoop_register(void) { sysbus_register_withprop(&scoop_sysbus_info); diff --git a/module.h b/module.h index 9263f1c..70c33a5 100644 --- a/module.h +++ b/module.h @@ -24,12 +24,14 @@ typedef enum { MODULE_INIT_BLOCK, MODULE_INIT_DEVICE, MODULE_INIT_MACHINE, + MODULE_INIT_VMSTATE, MODULE_INIT_MAX } module_init_type; #define block_init(function) module_init(function, MODULE_INIT_BLOCK) #define device_init(function) module_init(function, MODULE_INIT_DEVICE) #define machine_init(function) module_init(function, MODULE_INIT_MACHINE) +#define vmstate_init(function) module_init(function, MODULE_INIT_MACHINE) void register_module_init(void (*fn)(void), module_init_type type); diff --git a/savevm.c b/savevm.c index 03fce62..4a37917 100644 --- a/savevm.c +++ b/savevm.c @@ -1285,6 +1285,10 @@ void vmstate_unregister(DeviceState *dev, const VMStateDescription *vmsd, } } +void register_vmstate_description(const VMStateDescription *desc) +{ +} + static void vmstate_subsection_save(QEMUFile *f, const VMStateDescription *vmsd, void *opaque); static int vmstate_subsection_load(QEMUFile *f, const VMStateDescription *vmsd, diff --git a/target-i386/machine.c b/target-i386/machine.c index d78eceb..3a40520 100644 --- a/target-i386/machine.c +++ b/target-i386/machine.c @@ -504,6 +504,14 @@ static const VMStateDescription vmstate_cpu = { } }; +/* Register the VMState Description to support VMState introspection */ +static void init_vmstate_description(void) +{ + register_vmstate_description(&vmstate_cpu); +} + +vmstate_init(init_vmstate_description); + void cpu_save(QEMUFile *f, void *opaque) { vmstate_save_state(f, &vmstate_cpu, opaque);