* [PULL 00/12] Functional test patches
@ 2025-09-24 6:39 Thomas Huth
2025-09-24 6:39 ` [PULL 01/12] tests/functional/m68k: Use proper polling in the next-cube test Thomas Huth
` (12 more replies)
0 siblings, 13 replies; 16+ messages in thread
From: Thomas Huth @ 2025-09-24 6:39 UTC (permalink / raw)
To: qemu-devel; +Cc: Richard Henderson
Hi Richard!
The following changes since commit ab8008b231e758e03c87c1c483c03afdd9c02e19:
Merge tag 'pull-9p-20250918' of https://github.com/cschoenebeck/qemu into staging (2025-09-19 12:21:35 -0700)
are available in the Git repository at:
https://gitlab.com/thuth/qemu.git tags/pull-request-2025-09-24
for you to fetch changes up to 097bbfc5e0ba889ce17106ef941a56111c3de270:
tests/functional: treat unknown exceptions as transient faults (2025-09-24 08:26:11 +0200)
----------------------------------------------------------------
* New functional tests to check via the vmstate-static-checker.py script
* New functional tests for CD-ROM boot on hppa
* Skip functional tests on more exotic network errors, too
* Fix another issue with htags in the gitlab CI
* Some additional minor fixes to various functional tests
----------------------------------------------------------------
Daniel P. Berrangé (3):
tests/functional: use self.log for all logging
tests/functional: retry when seeing ConnectionError exception
tests/functional: treat unknown exceptions as transient faults
Peter Maydell (1):
.gitlab-ci.d/buildtest.yml: Unset CI_COMMIT_DESCRIPTION for htags
Thomas Huth (8):
tests/functional/m68k: Use proper polling in the next-cube test
tests/functional/s390x/test_pxelinux: Fix warnings from pylint
tests: Move the old vmstate-static-checker files to tests/data/
tests/functional: Test whether the vmstate-static-checker script works fine
tests/data/vmstate-static-checker: Add dump files from QEMU 7.2.17
tests/functional: Use vmstate-static-checker.py to test data from v7.2
tests/functional/hppa: Add a CD-ROM boot test for qemu-system-hppa
tests: Fix "make check-functional" for targets without thorough tests
MAINTAINERS | 6 +-
.gitlab-ci.d/buildtest.yml | 2 +-
tests/Makefile.include | 3 +
.../vmstate-static-checker/aarch64/virt-7.2.json | 2571 +++++++++++++++
.../vmstate-static-checker}/dump1.json | 0
.../vmstate-static-checker}/dump2.json | 0
.../data/vmstate-static-checker/m68k/virt-7.2.json | 2936 +++++++++++++++++
.../vmstate-static-checker/ppc64/pseries-7.2.json | 1068 +++++++
.../s390x/s390-ccw-virtio-7.2.json | 475 +++
.../vmstate-static-checker/x86_64/pc-q35-7.2.json | 3297 ++++++++++++++++++++
tests/functional/aarch64/meson.build | 1 +
tests/functional/aarch64/test_virt.py | 4 +-
tests/functional/arm/test_integratorcp.py | 3 +-
tests/functional/generic/test_vmstate.py | 67 +
tests/functional/hppa/meson.build | 4 +
tests/functional/hppa/test_cdboot.py | 38 +
tests/functional/m68k/meson.build | 4 +
tests/functional/m68k/test_nextcube.py | 17 +-
tests/functional/mips64el/test_malta.py | 3 +-
tests/functional/ppc64/meson.build | 1 +
tests/functional/qemu_test/asset.py | 10 +-
tests/functional/replay_kernel.py | 16 +-
tests/functional/s390x/meson.build | 4 +
tests/functional/s390x/test_pxelinux.py | 25 +-
tests/functional/x86_64/meson.build | 4 +-
tests/functional/x86_64/test_acpi_bits.py | 31 +-
tests/functional/x86_64/test_bad_vmstate.py | 58 +
27 files changed, 10599 insertions(+), 49 deletions(-)
create mode 100644 tests/data/vmstate-static-checker/aarch64/virt-7.2.json
rename tests/{vmstate-static-checker-data => data/vmstate-static-checker}/dump1.json (100%)
rename tests/{vmstate-static-checker-data => data/vmstate-static-checker}/dump2.json (100%)
create mode 100644 tests/data/vmstate-static-checker/m68k/virt-7.2.json
create mode 100644 tests/data/vmstate-static-checker/ppc64/pseries-7.2.json
create mode 100644 tests/data/vmstate-static-checker/s390x/s390-ccw-virtio-7.2.json
create mode 100644 tests/data/vmstate-static-checker/x86_64/pc-q35-7.2.json
create mode 100755 tests/functional/generic/test_vmstate.py
create mode 100755 tests/functional/hppa/test_cdboot.py
create mode 100755 tests/functional/x86_64/test_bad_vmstate.py
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PULL 01/12] tests/functional/m68k: Use proper polling in the next-cube test
2025-09-24 6:39 [PULL 00/12] Functional test patches Thomas Huth
@ 2025-09-24 6:39 ` Thomas Huth
2025-09-24 6:39 ` [PULL 02/12] tests/functional/s390x/test_pxelinux: Fix warnings from pylint Thomas Huth
` (11 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Thomas Huth @ 2025-09-24 6:39 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Mark Cave-Ayland, Philippe Mathieu-Daudé
From: Thomas Huth <thuth@redhat.com>
The next-cube tests currently sleep for 2 seconds to wait for the
guest's display to come up with the expected results. That's bad
since there is still a theoretical race left here, and since there
are two subtests, the whole test takes more than 4 seconds this way.
Looking at what the firmware does, there is a better way instead of
blindly waiting for two seconds: The firmware is writing some values
to the FPU registers during a test (and never touches them again
afterwards, so we can be sure about the final values), so we can
poll for the right values in those registers to know when we reached
a state when the display is initialized for sure. We just have to
also make sure to not look for text anymore that is only printed
after the FPU test has been done by the guest firmware.
This way the whole tests finishes in less than 1 second here, and
there should be no race condition here anymore.
Message-ID: <20250909074817.84661-1-thuth@redhat.com>
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/functional/m68k/test_nextcube.py | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/tests/functional/m68k/test_nextcube.py b/tests/functional/m68k/test_nextcube.py
index c1610e58456..e5e1c69dcbd 100755
--- a/tests/functional/m68k/test_nextcube.py
+++ b/tests/functional/m68k/test_nextcube.py
@@ -29,8 +29,15 @@ def check_bootrom_framebuffer(self, screenshot_path):
self.vm.launch()
self.log.info('VM launched, waiting for display')
- # TODO: wait for the 'displaysurface_create 1120x832' trace-event.
- time.sleep(2)
+ # Wait for the FPU test to finish, then the display is available, too:
+ while True:
+ res = self.vm.cmd('human-monitor-command',
+ command_line='info registers')
+ if ("F0 = 400e 8400000000000000" in res and
+ "F1 = 400e 83ff000000000000" in res and
+ "F2 = 400e 83ff000000000000" in res):
+ break
+ time.sleep(0.1)
res = self.vm.cmd('human-monitor-command',
command_line='screendump %s' % screenshot_path)
@@ -56,10 +63,10 @@ def test_bootrom_framebuffer_ocr_with_tesseract(self):
self.check_bootrom_framebuffer(screenshot_path)
lines = tesseract_ocr(screenshot_path)
text = '\n'.join(lines)
+ self.assertIn('Backplane slot', text)
+ self.assertIn('Ethernet address', text)
self.assertIn('Testing the FPU', text)
- self.assertIn('System test failed. Error code', text)
- self.assertIn('Boot command', text)
- self.assertIn('Next>', text)
+
if __name__ == '__main__':
QemuSystemTest.main()
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PULL 02/12] tests/functional/s390x/test_pxelinux: Fix warnings from pylint
2025-09-24 6:39 [PULL 00/12] Functional test patches Thomas Huth
2025-09-24 6:39 ` [PULL 01/12] tests/functional/m68k: Use proper polling in the next-cube test Thomas Huth
@ 2025-09-24 6:39 ` Thomas Huth
2025-09-24 6:39 ` [PULL 03/12] tests: Move the old vmstate-static-checker files to tests/data/ Thomas Huth
` (10 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Thomas Huth @ 2025-09-24 6:39 UTC (permalink / raw)
To: qemu-devel; +Cc: Richard Henderson, Jared Rossi
From: Thomas Huth <thuth@redhat.com>
pylint complains about wrong indentation in one of the lines and
that the pxelinux_cfg_contents is a constant that should be written
with capital letters. While we're at it, also add the missing doc
strings.
Reviewed-by: Jared Rossi <jrossi@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20250912085251.274294-1-thuth@redhat.com>
---
tests/functional/s390x/test_pxelinux.py | 25 ++++++++++++++++++-------
1 file changed, 18 insertions(+), 7 deletions(-)
diff --git a/tests/functional/s390x/test_pxelinux.py b/tests/functional/s390x/test_pxelinux.py
index 4fc33b8c46d..c00cce6a5a4 100755
--- a/tests/functional/s390x/test_pxelinux.py
+++ b/tests/functional/s390x/test_pxelinux.py
@@ -1,10 +1,11 @@
#!/usr/bin/env python3
#
# SPDX-License-Identifier: GPL-2.0-or-later
-#
-# Functional test that checks the pxelinux.cfg network booting of a s390x VM
-# (TFTP booting without config file is already tested by the pxe qtest, so
-# we don't repeat that here).
+'''
+Functional test that checks the pxelinux.cfg network booting of a s390x VM
+(TFTP booting without config file is already tested by the pxe qtest, so
+we don't repeat that here).
+'''
import os
import shutil
@@ -12,7 +13,7 @@
from qemu_test import QemuSystemTest, Asset, wait_for_console_pattern
-pxelinux_cfg_contents='''# pxelinux.cfg style config file
+PXELINUX_CFG_CONTENTS='''# pxelinux.cfg style config file
default Debian
label Nonexisting
kernel kernel.notavailable
@@ -26,6 +27,10 @@
'''
class S390PxeLinux(QemuSystemTest):
+ '''
+ Test various ways of booting via a pxelinux.cfg file, for details see:
+ https://wiki.syslinux.org/wiki/index.php?title=PXELINUX#Configuration
+ '''
ASSET_DEBIAN_KERNEL = Asset(
('https://snapshot.debian.org/archive/debian/'
@@ -46,6 +51,7 @@ class S390PxeLinux(QemuSystemTest):
'480859574f3f44caa6cd35c62d70e1ac0609134e22ce2a954bbed9b110c06e0b')
def pxelinux_launch(self, pl_name='default', extra_opts=None):
+ '''Create a pxelinux.cfg file in the right location and launch QEMU'''
self.require_netdev('user')
self.set_machine('s390-ccw-virtio')
@@ -66,11 +72,11 @@ def pxelinux_launch(self, pl_name='default', extra_opts=None):
cfg_fname = self.scratch_file('tftp', 'pxelinux.cfg', pl_name)
with open(cfg_fname, 'w', encoding='utf-8') as f:
- f.write(pxelinux_cfg_contents)
+ f.write(PXELINUX_CFG_CONTENTS)
virtio_net_dev = 'virtio-net-ccw,netdev=n1,bootindex=1'
if extra_opts:
- virtio_net_dev += ',' + extra_opts
+ virtio_net_dev += ',' + extra_opts
self.vm.add_args('-m', '384',
'-netdev', f'user,id=n1,tftp={tftpdir}',
@@ -80,6 +86,7 @@ def pxelinux_launch(self, pl_name='default', extra_opts=None):
def test_default(self):
+ '''Check whether the guest uses the "default" file name'''
self.pxelinux_launch()
# The kernel prints its arguments to the console, so we can use
# this to check whether the kernel parameters are correctly handled:
@@ -89,11 +96,13 @@ def test_default(self):
wait_for_console_pattern(self, 'Run /init as init process')
def test_mac(self):
+ '''Check whether the guest uses file name based on its MAC address'''
self.pxelinux_launch(pl_name='01-02-ca-fe-ba-be-42',
extra_opts='mac=02:ca:fe:ba:be:42,loadparm=3')
wait_for_console_pattern(self, 'Linux version 5.3.7-301.fc31.s390x')
def test_uuid(self):
+ '''Check whether the guest uses file name based on its UUID'''
# Also add a non-bootable disk to check the fallback to network boot:
self.vm.add_args('-blockdev', 'null-co,size=65536,node-name=d1',
'-device', 'virtio-blk,drive=d1,bootindex=0,loadparm=1',
@@ -102,11 +111,13 @@ def test_uuid(self):
wait_for_console_pattern(self, 'Debian 4.19.146-1 (2020-09-17)')
def test_ip(self):
+ '''Check whether the guest uses file name based on its IP address'''
self.vm.add_args('-M', 'loadparm=3')
self.pxelinux_launch(pl_name='0A00020F')
wait_for_console_pattern(self, 'Linux version 5.3.7-301.fc31.s390x')
def test_menu(self):
+ '''Check whether the boot menu works for pxelinux.cfg booting'''
self.vm.add_args('-boot', 'menu=on,splash-time=10')
self.pxelinux_launch(pl_name='0A00')
wait_for_console_pattern(self, '[1] Nonexisting')
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PULL 03/12] tests: Move the old vmstate-static-checker files to tests/data/
2025-09-24 6:39 [PULL 00/12] Functional test patches Thomas Huth
2025-09-24 6:39 ` [PULL 01/12] tests/functional/m68k: Use proper polling in the next-cube test Thomas Huth
2025-09-24 6:39 ` [PULL 02/12] tests/functional/s390x/test_pxelinux: Fix warnings from pylint Thomas Huth
@ 2025-09-24 6:39 ` Thomas Huth
2025-09-24 6:39 ` [PULL 04/12] tests/functional: Test whether the vmstate-static-checker script works fine Thomas Huth
` (9 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Thomas Huth @ 2025-09-24 6:39 UTC (permalink / raw)
To: qemu-devel; +Cc: Richard Henderson, Peter Xu
From: Thomas Huth <thuth@redhat.com>
All other test data resides in tests/data/, so let's move the dump
files here, too.
Reviewed-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20250912100755.316518-2-thuth@redhat.com>
---
MAINTAINERS | 2 +-
.../vmstate-static-checker}/dump1.json | 0
.../vmstate-static-checker}/dump2.json | 0
3 files changed, 1 insertion(+), 1 deletion(-)
rename tests/{vmstate-static-checker-data => data/vmstate-static-checker}/dump1.json (100%)
rename tests/{vmstate-static-checker-data => data/vmstate-static-checker}/dump2.json (100%)
diff --git a/MAINTAINERS b/MAINTAINERS
index 70eb0241d36..79abe5f6c9a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3613,7 +3613,7 @@ F: migration/
F: scripts/vmstate-static-checker.py
F: tests/functional/migration.py
F: tests/functional/*/*migration.py
-F: tests/vmstate-static-checker-data/
+F: tests/data/vmstate-static-checker/
F: tests/qtest/migration/
F: tests/qtest/migration-*
F: docs/devel/migration/
diff --git a/tests/vmstate-static-checker-data/dump1.json b/tests/data/vmstate-static-checker/dump1.json
similarity index 100%
rename from tests/vmstate-static-checker-data/dump1.json
rename to tests/data/vmstate-static-checker/dump1.json
diff --git a/tests/vmstate-static-checker-data/dump2.json b/tests/data/vmstate-static-checker/dump2.json
similarity index 100%
rename from tests/vmstate-static-checker-data/dump2.json
rename to tests/data/vmstate-static-checker/dump2.json
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PULL 04/12] tests/functional: Test whether the vmstate-static-checker script works fine
2025-09-24 6:39 [PULL 00/12] Functional test patches Thomas Huth
` (2 preceding siblings ...)
2025-09-24 6:39 ` [PULL 03/12] tests: Move the old vmstate-static-checker files to tests/data/ Thomas Huth
@ 2025-09-24 6:39 ` Thomas Huth
2025-10-29 11:58 ` Daniel P. Berrangé
2025-09-24 6:39 ` [PULL 05/12] tests/data/vmstate-static-checker: Add dump files from QEMU 7.2.17 Thomas Huth
` (8 subsequent siblings)
12 siblings, 1 reply; 16+ messages in thread
From: Thomas Huth @ 2025-09-24 6:39 UTC (permalink / raw)
To: qemu-devel; +Cc: Richard Henderson
From: Thomas Huth <thuth@redhat.com>
We've got two vmstate dump files in the repository which are meant
for verifying whether the vmstate-static-checker.py works as expected.
Since running this manually is a cumbersome job, let's add an automated
test for this instead that runs the script with the two dump files
and checks for the expected output.
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20250912100755.316518-3-thuth@redhat.com>
---
MAINTAINERS | 1 +
tests/functional/x86_64/meson.build | 1 +
tests/functional/x86_64/test_bad_vmstate.py | 58 +++++++++++++++++++++
3 files changed, 60 insertions(+)
create mode 100755 tests/functional/x86_64/test_bad_vmstate.py
diff --git a/MAINTAINERS b/MAINTAINERS
index 79abe5f6c9a..24c061aff35 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3613,6 +3613,7 @@ F: migration/
F: scripts/vmstate-static-checker.py
F: tests/functional/migration.py
F: tests/functional/*/*migration.py
+F: tests/functional/x86_64/test_bad_vmstate.py
F: tests/data/vmstate-static-checker/
F: tests/qtest/migration/
F: tests/qtest/migration-*
diff --git a/tests/functional/x86_64/meson.build b/tests/functional/x86_64/meson.build
index d0b4667bb8a..ef12ac43b37 100644
--- a/tests/functional/x86_64/meson.build
+++ b/tests/functional/x86_64/meson.build
@@ -10,6 +10,7 @@ test_x86_64_timeouts = {
}
tests_x86_64_system_quick = [
+ 'bad_vmstate',
'cpu_model_versions',
'cpu_queries',
'mem_addr_space',
diff --git a/tests/functional/x86_64/test_bad_vmstate.py b/tests/functional/x86_64/test_bad_vmstate.py
new file mode 100755
index 00000000000..40098a8490b
--- /dev/null
+++ b/tests/functional/x86_64/test_bad_vmstate.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python3
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+'''Test whether the vmstate-static-checker script detects problems correctly'''
+
+import subprocess
+
+from qemu_test import QemuBaseTest
+
+
+EXPECTED_OUTPUT='''Warning: checking incompatible machine types: "pc-i440fx-2.1", "pc-i440fx-2.2"
+Section "fw_cfg" does not exist in dest
+Section "fusbh200-ehci-usb" version error: 2 > 1
+Section "fusbh200-ehci-usb", Description "ehci-core": expected field "usbsts", got "usbsts_pending"; skipping rest
+Section "pci-serial-4x" Description "pci-serial-multi": Entry "Fields" missing
+Section "intel-hda-generic", Description "intel-hda", Field "pci": missing description
+Section "cfi.pflash01": Entry "Description" missing
+Section "megasas", Description "PCIDevice": expected field "irq_state", while dest has no further fields
+Section "PIIX3-xen" Description "PIIX3": minimum version error: 1 < 2
+Section "PIIX3-xen" Description "PIIX3": Entry "Subsections" missing
+Section "tpci200": Description "tpci200" missing, got "tpci2002" instead; skipping
+Section "sun-fdtwo" Description "fdc": version error: 2 > 1
+Section "sun-fdtwo", Description "fdrive": Subsection "fdrive/media_rate" not found
+Section "usb-kbd" Description "usb-kbd" Field "kbd.keycodes" size mismatch: 4 , 2
+'''
+
+class BadVmStateTest(QemuBaseTest):
+ '''Test class for testing vmstat-static-checker script with bad input'''
+
+ def test_checker(self):
+ """
+ Test whether the checker script correctly detects the changes
+ between dump1.json and dump2.json.
+ """
+ src_json = self.data_file('..', 'data', 'vmstate-static-checker',
+ 'dump1.json')
+ dst_json = self.data_file('..', 'data', 'vmstate-static-checker',
+ 'dump2.json')
+ checkerscript = self.data_file('..', '..', 'scripts',
+ 'vmstate-static-checker.py')
+
+ self.log.info('Comparing %s with %s', src_json, dst_json)
+ cp = subprocess.run([checkerscript, '-s', src_json, '-d', dst_json],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ text=True, check=False)
+ if cp.returncode != 13:
+ self.fail('Unexpected return code of vmstate-static-checker: ' +
+ cp.returncode)
+ if cp.stdout != EXPECTED_OUTPUT:
+ self.log.info('vmstate-static-checker output:\n%s', cp.stdout)
+ self.log.info('expected output:\n%s', EXPECTED_OUTPUT)
+ self.fail('Unexpected vmstate-static-checker output!')
+
+
+if __name__ == '__main__':
+ QemuBaseTest.main()
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PULL 05/12] tests/data/vmstate-static-checker: Add dump files from QEMU 7.2.17
2025-09-24 6:39 [PULL 00/12] Functional test patches Thomas Huth
` (3 preceding siblings ...)
2025-09-24 6:39 ` [PULL 04/12] tests/functional: Test whether the vmstate-static-checker script works fine Thomas Huth
@ 2025-09-24 6:39 ` Thomas Huth
2025-09-24 6:39 ` [PULL 06/12] tests/functional: Use vmstate-static-checker.py to test data from v7.2 Thomas Huth
` (7 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Thomas Huth @ 2025-09-24 6:39 UTC (permalink / raw)
To: qemu-devel; +Cc: Richard Henderson, Peter Xu
From: Thomas Huth <thuth@redhat.com>
For automatic tests, we need reference files from older QEMU versions.
QEMU 7.2 is a long term stable release, so it's a good candidate for
checking whether the migration could still work correctly. Let's add the
files from that version that have been taken with the "-dump-vmstate"
parameter of QEMU (compiled with single machines and the configure switch
"--without-default-devices" to keep the json files reasonable small).
Some devices also have been removed manually from the json files, e.g.
the "pci-bridge" (which can be disabled in later QEMU versions via Kconfig),
and some Linux-related devices like "scsi-block" and "scsi-generic" and
KVM-related devices. Without removing them, we might get errors otherwise
if these devices have not been compiled into the destination QEMU build.
Acked-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20250912100755.316518-4-thuth@redhat.com>
---
.../aarch64/virt-7.2.json | 2571 +++++++++++++
.../vmstate-static-checker/m68k/virt-7.2.json | 2936 +++++++++++++++
.../ppc64/pseries-7.2.json | 1068 ++++++
.../s390x/s390-ccw-virtio-7.2.json | 475 +++
.../x86_64/pc-q35-7.2.json | 3297 +++++++++++++++++
5 files changed, 10347 insertions(+)
create mode 100644 tests/data/vmstate-static-checker/aarch64/virt-7.2.json
create mode 100644 tests/data/vmstate-static-checker/m68k/virt-7.2.json
create mode 100644 tests/data/vmstate-static-checker/ppc64/pseries-7.2.json
create mode 100644 tests/data/vmstate-static-checker/s390x/s390-ccw-virtio-7.2.json
create mode 100644 tests/data/vmstate-static-checker/x86_64/pc-q35-7.2.json
diff --git a/tests/data/vmstate-static-checker/aarch64/virt-7.2.json b/tests/data/vmstate-static-checker/aarch64/virt-7.2.json
new file mode 100644
index 00000000000..d7491be99cb
--- /dev/null
+++ b/tests/data/vmstate-static-checker/aarch64/virt-7.2.json
@@ -0,0 +1,2571 @@
+{
+ "vmschkmachine": {
+ "Name": "virt-7.2"
+ },
+ "gpex-pcihost": {
+ "Name": "gpex-pcihost",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "PCIHost",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "config_reg",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ "arm_gic": {
+ "Name": "arm_gic",
+ "version_id": 12,
+ "minimum_version_id": 12,
+ "Description": {
+ "name": "arm_gic",
+ "version_id": 12,
+ "minimum_version_id": 12,
+ "Fields": [
+ {
+ "field": "ctlr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "cpu_ctlr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "irq_state",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 7,
+ "Description": {
+ "name": "arm_gic_irq_state",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "enabled",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "pending",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "active",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "level",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "model",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "edge_trigger",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "group",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ {
+ "field": "irq_target",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "priority1",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "priority2",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "sgi_pending",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "priority_mask",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "running_priority",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "current_pending",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "bpr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "abpr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "apr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "nsapr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "arm_gic_virt_state",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "h_hcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "h_misr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "h_lr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "h_apr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "cpu_ctlr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "priority_mask",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "running_priority",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "current_pending",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "bpr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "abpr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "arm-gicv3-its-common": {
+ "Name": "arm-gicv3-its-common",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Description": {
+ "name": "arm_gicv3_its",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "ctlr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "iidr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "cbaser",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "cwriter",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "creadr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "baser",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ },
+ "arm-gicv3-common": {
+ "Name": "arm-gicv3-common",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "arm_gicv3",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "gicd_ctlr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "gicd_statusr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "group",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "grpmod",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "enabled",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "pending",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "active",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "level",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "edge_trigger",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "gicd_ipriority",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "gicd_irouter",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "gicd_nsacr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "cpu",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 664,
+ "Description": {
+ "name": "arm_gicv3_cpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "level",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "gicr_ctlr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "gicr_statusr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "gicr_waker",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "gicr_propbaser",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "gicr_pendbaser",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "gicr_igroupr0",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "gicr_ienabler0",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "gicr_ipendr0",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "gicr_iactiver0",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "edge_trigger",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "gicr_igrpmodr0",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "gicr_nsacr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "gicr_ipriorityr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "icc_ctlr_el1",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "icc_pmr_el1",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "icc_bpr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "icc_apr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "icc_igrpen",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "icc_ctlr_el3",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "arm_gicv3_cpu/virt",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "ich_apr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "ich_hcr_el2",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "ich_lr_el2",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "ich_vmcr_el2",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ },
+ {
+ "name": "arm_gicv3_cpu/sre_el1",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "icc_sre_el1",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ },
+ {
+ "name": "arm_gicv3_cpu/gicv4",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "gicr_vpropbaser",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "gicr_vpendbaser",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "arm_gicv3/gicd_no_migration_shift_bug",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "gicd_no_migration_shift_bug",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "fw_cfg": {
+ "Name": "fw_cfg",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "fw_cfg",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "cur_entry",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 4
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "fw_cfg/dma",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "dma_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ },
+ {
+ "name": "fw_cfg/acpi_mr",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "table_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "linker_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "rsdp_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "cfi.pflash01": {
+ "Name": "cfi.pflash01",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "pflash_cfi01",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "wcycle",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "cmd",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "status",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "counter",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "pflash_cfi01_blk_write",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "blk_bytes",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 0
+ },
+ {
+ "field": "blk_offset",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "pl061_luminary": {
+ "Name": "pl061_luminary",
+ "version_id": 4,
+ "minimum_version_id": 4,
+ "Description": {
+ "name": "pl061",
+ "version_id": 4,
+ "minimum_version_id": 4,
+ "Fields": [
+ {
+ "field": "locked",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "data",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "old_out_data",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "old_in_data",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "dir",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "isense",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "ibe",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "iev",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "im",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "istate",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "afsel",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "dr2r",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "dr4r",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "dr8r",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "odr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "pur",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "pdr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "slr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "den",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "cr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "amsel",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ "pl011_luminary": {
+ "Name": "pl011_luminary",
+ "version_id": 2,
+ "minimum_version_id": 2,
+ "Description": {
+ "name": "pl011",
+ "version_id": 2,
+ "minimum_version_id": 2,
+ "Fields": [
+ {
+ "field": "readbuff",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "flags",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "lcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "rsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "cr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "dmacr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "int_enabled",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "int_level",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "read_fifo",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "ilpr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "ibrd",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "fbrd",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "ifl",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "read_pos",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "read_count",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "read_trigger",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "pl011/clock",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "clk",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8,
+ "Description": {
+ "name": "clock",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "period",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "clock/muldiv",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "multiplier",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "divider",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "pl061": {
+ "Name": "pl061",
+ "version_id": 4,
+ "minimum_version_id": 4,
+ "Description": {
+ "name": "pl061",
+ "version_id": 4,
+ "minimum_version_id": 4,
+ "Fields": [
+ {
+ "field": "locked",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "data",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "old_out_data",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "old_in_data",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "dir",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "isense",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "ibe",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "iev",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "im",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "istate",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "afsel",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "dr2r",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "dr4r",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "dr8r",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "odr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "pur",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "pdr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "slr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "den",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "cr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "amsel",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ "vmcoreinfo": {
+ "Name": "vmcoreinfo",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "vmcoreinfo",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "has_vmcoreinfo",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "vmcoreinfo.host_format",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "vmcoreinfo.guest_format",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "vmcoreinfo.size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "vmcoreinfo.paddr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ },
+ "arm_gic_common": {
+ "Name": "arm_gic_common",
+ "version_id": 12,
+ "minimum_version_id": 12,
+ "Description": {
+ "name": "arm_gic",
+ "version_id": 12,
+ "minimum_version_id": 12,
+ "Fields": [
+ {
+ "field": "ctlr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "cpu_ctlr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "irq_state",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 7,
+ "Description": {
+ "name": "arm_gic_irq_state",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "enabled",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "pending",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "active",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "level",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "model",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "edge_trigger",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "group",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ {
+ "field": "irq_target",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "priority1",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "priority2",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "sgi_pending",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "priority_mask",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "running_priority",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "current_pending",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "bpr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "abpr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "apr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "nsapr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "arm_gic_virt_state",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "h_hcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "h_misr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "h_lr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "h_apr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "cpu_ctlr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "priority_mask",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "running_priority",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "current_pending",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "bpr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "abpr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "arm-smmuv3": {
+ "Name": "arm-smmuv3",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "smmuv3",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "features",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "sid_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "sid_split",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "cr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "cr0ack",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "statusr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "irq_ctrl",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "gerror",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "gerrorn",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "gerror_irq_cfg0",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "gerror_irq_cfg1",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "gerror_irq_cfg2",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "strtab_base",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "strtab_base_cfg",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "eventq_irq_cfg0",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "eventq_irq_cfg1",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "eventq_irq_cfg2",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "cmdq",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "smmuv3_queue",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "base",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "prod",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "cons",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "log2size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ {
+ "field": "eventq",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "smmuv3_queue",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "base",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "prod",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "cons",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "log2size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "pl011": {
+ "Name": "pl011",
+ "version_id": 2,
+ "minimum_version_id": 2,
+ "Description": {
+ "name": "pl011",
+ "version_id": 2,
+ "minimum_version_id": 2,
+ "Fields": [
+ {
+ "field": "readbuff",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "flags",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "lcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "rsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "cr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "dmacr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "int_enabled",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "int_level",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "read_fifo",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "ilpr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "ibrd",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "fbrd",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "ifl",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "read_pos",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "read_count",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "read_trigger",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "pl011/clock",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "clk",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8,
+ "Description": {
+ "name": "clock",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "period",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "clock/muldiv",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "multiplier",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "divider",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "armv7m": {
+ "Name": "armv7m",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "armv7m",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "refclk",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8,
+ "Description": {
+ "name": "clock",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "period",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "clock/muldiv",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "multiplier",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "divider",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "field": "cpuclk",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8,
+ "Description": {
+ "name": "clock",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "period",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "clock/muldiv",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "multiplier",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "divider",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "fw_cfg_mem": {
+ "Name": "fw_cfg_mem",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "fw_cfg",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "cur_entry",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 4
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "fw_cfg/dma",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "dma_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ },
+ {
+ "name": "fw_cfg/acpi_mr",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "table_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "linker_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "rsdp_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "pl031": {
+ "Name": "pl031",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "pl031",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "tick_offset_vmstate",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "mr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "lr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "cr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "im",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "is",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "pl031/tick-offset",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "tick_offset",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "fw_cfg_io": {
+ "Name": "fw_cfg_io",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "fw_cfg",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "cur_entry",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 4
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "fw_cfg/dma",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "dma_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ },
+ {
+ "name": "fw_cfg/acpi_mr",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "table_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "linker_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "rsdp_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "virtio-serial-device": {
+ "Name": "virtio-serial-device",
+ "version_id": 3,
+ "minimum_version_id": 3,
+ "Description": {
+ "name": "virtio-console",
+ "version_id": 3,
+ "minimum_version_id": 3,
+ "Fields": [
+ {
+ "field": "virtio",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 0
+ }
+ ]
+ }
+ },
+ "acpi-ged": {
+ "Name": "acpi-ged",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "acpi-ged",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "ged_state",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 560,
+ "Description": {
+ "name": "acpi-ged-state",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "sel",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "acpi-ged/memhp",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "memhp_state",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 304,
+ "Description": {
+ "name": "memory hotplug state",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "selector",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "devs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "memory hotplug device state",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "is_enabled",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "is_inserting",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "ost_event",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "ost_status",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "name": "acpi-ged/ghes",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "ghes_state",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 16,
+ "Description": {
+ "name": "acpi-ghes",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "ghes_addr_le",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "pcie-host-bridge": {
+ "Name": "pcie-host-bridge",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "PCIHost",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "config_reg",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ "gpio-key": {
+ "Name": "gpio-key",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "gpio-key",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "timer",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ },
+ "armv7m_nvic": {
+ "Name": "armv7m_nvic",
+ "version_id": 4,
+ "minimum_version_id": 4,
+ "Description": {
+ "name": "armv7m_nvic",
+ "version_id": 4,
+ "minimum_version_id": 4,
+ "Fields": [
+ {
+ "field": "vectors",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 6,
+ "Description": {
+ "name": "armv7m_nvic_info",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "prio",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "enabled",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "pending",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "active",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "level",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ {
+ "field": "prigroup[M_REG_NS]",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "armv7m_nvic/m-security",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "sec_vectors",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 6,
+ "Description": {
+ "name": "armv7m_nvic_info",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "prio",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "enabled",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "pending",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "active",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "level",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ {
+ "field": "prigroup[M_REG_S]",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "itns",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "pci-host-bridge": {
+ "Name": "pci-host-bridge",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "PCIHost",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "config_reg",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ "gpex-root": {
+ "Name": "gpex-root",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "gpex_root",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "parent_obj",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2608,
+ "Description": {
+ "name": "PCIDevice",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "version_id",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "config",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 256
+ },
+ {
+ "field": "config",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 4096
+ },
+ {
+ "field": "irq_state",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 16
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "armv7m_systick": {
+ "Name": "armv7m_systick",
+ "version_id": 3,
+ "minimum_version_id": 3,
+ "Description": {
+ "name": "armv7m_systick",
+ "version_id": 3,
+ "minimum_version_id": 3,
+ "Fields": [
+ {
+ "field": "refclk",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8,
+ "Description": {
+ "name": "clock",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "period",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "clock/muldiv",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "multiplier",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "divider",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "field": "cpuclk",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8,
+ "Description": {
+ "name": "clock",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "period",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "clock/muldiv",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "multiplier",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "divider",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "field": "control",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "tick",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "ptimer",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 8,
+ "Description": {
+ "name": "ptimer",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "enabled",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "limit",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "delta",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "period_frac",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "period",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "last_event",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "next_event",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "timer",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+}
diff --git a/tests/data/vmstate-static-checker/m68k/virt-7.2.json b/tests/data/vmstate-static-checker/m68k/virt-7.2.json
new file mode 100644
index 00000000000..16bee8cdad0
--- /dev/null
+++ b/tests/data/vmstate-static-checker/m68k/virt-7.2.json
@@ -0,0 +1,2936 @@
+{
+ "vmschkmachine": {
+ "Name": "virt-7.2"
+ },
+ "m68020-m68k-cpu": {
+ "Name": "m68020-m68k-cpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "cpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.dregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.aregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.current_sp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_op",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_x",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_n",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_v",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_c",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_z",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pending_vector",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pending_level",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "cpu/fpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.fpcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.fpsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.fregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 16,
+ "Description": {
+ "name": "freg",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "freg_tmp",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp_mant",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "tmp_exp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "field": "env.fp_result",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 16,
+ "Description": {
+ "name": "freg",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "freg_tmp",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp_mant",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "tmp_exp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "name": "cpu/cf_spregs",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.macc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "env.macsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mac_mask",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.rambar0",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mbar",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "cpu/68040_mmu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.mmu.ar",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.ssw",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.tcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "env.mmu.urp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.srp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.fault",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "env.mmu.ttr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.mmusr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "cpu/68040_spregs",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.vbr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cacr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sfc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.dfc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "m68030-m68k-cpu": {
+ "Name": "m68030-m68k-cpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "cpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.dregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.aregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.current_sp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_op",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_x",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_n",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_v",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_c",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_z",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pending_vector",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pending_level",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "cpu/fpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.fpcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.fpsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.fregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 16,
+ "Description": {
+ "name": "freg",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "freg_tmp",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp_mant",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "tmp_exp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "field": "env.fp_result",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 16,
+ "Description": {
+ "name": "freg",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "freg_tmp",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp_mant",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "tmp_exp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "name": "cpu/cf_spregs",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.macc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "env.macsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mac_mask",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.rambar0",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mbar",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "cpu/68040_mmu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.mmu.ar",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.ssw",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.tcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "env.mmu.urp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.srp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.fault",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "env.mmu.ttr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.mmusr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "cpu/68040_spregs",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.vbr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cacr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sfc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.dfc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "fw_cfg": {
+ "Name": "fw_cfg",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "fw_cfg",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "cur_entry",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 4
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "fw_cfg/dma",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "dma_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ },
+ {
+ "name": "fw_cfg/acpi_mr",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "table_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "linker_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "rsdp_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "m68k-irq-controller": {
+ "Name": "m68k-irq-controller",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "m68k-irqc",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "ipr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ "virt-ctrl": {
+ "Name": "virt-ctrl",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "virt-ctrl",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "irq_enabled",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ "m68040-m68k-cpu": {
+ "Name": "m68040-m68k-cpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "cpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.dregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.aregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.current_sp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_op",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_x",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_n",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_v",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_c",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_z",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pending_vector",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pending_level",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "cpu/fpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.fpcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.fpsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.fregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 16,
+ "Description": {
+ "name": "freg",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "freg_tmp",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp_mant",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "tmp_exp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "field": "env.fp_result",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 16,
+ "Description": {
+ "name": "freg",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "freg_tmp",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp_mant",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "tmp_exp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "name": "cpu/cf_spregs",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.macc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "env.macsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mac_mask",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.rambar0",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mbar",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "cpu/68040_mmu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.mmu.ar",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.ssw",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.tcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "env.mmu.urp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.srp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.fault",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "env.mmu.ttr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.mmusr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "cpu/68040_spregs",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.vbr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cacr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sfc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.dfc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "goldfish_pic": {
+ "Name": "goldfish_pic",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "goldfish_pic",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "pending",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "enabled",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ "goldfish_tty": {
+ "Name": "goldfish_tty",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "goldfish_tty",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "data_len",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "data_ptr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "int_enabled",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "rx_fifo",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "Fifo8",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "data",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 0
+ },
+ {
+ "field": "head",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "num",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "m68000-m68k-cpu": {
+ "Name": "m68000-m68k-cpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "cpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.dregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.aregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.current_sp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_op",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_x",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_n",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_v",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_c",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_z",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pending_vector",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pending_level",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "cpu/fpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.fpcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.fpsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.fregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 16,
+ "Description": {
+ "name": "freg",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "freg_tmp",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp_mant",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "tmp_exp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "field": "env.fp_result",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 16,
+ "Description": {
+ "name": "freg",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "freg_tmp",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp_mant",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "tmp_exp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "name": "cpu/cf_spregs",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.macc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "env.macsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mac_mask",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.rambar0",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mbar",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "cpu/68040_mmu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.mmu.ar",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.ssw",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.tcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "env.mmu.urp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.srp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.fault",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "env.mmu.ttr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.mmusr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "cpu/68040_spregs",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.vbr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cacr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sfc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.dfc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "m68010-m68k-cpu": {
+ "Name": "m68010-m68k-cpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "cpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.dregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.aregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.current_sp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_op",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_x",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_n",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_v",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_c",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_z",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pending_vector",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pending_level",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "cpu/fpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.fpcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.fpsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.fregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 16,
+ "Description": {
+ "name": "freg",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "freg_tmp",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp_mant",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "tmp_exp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "field": "env.fp_result",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 16,
+ "Description": {
+ "name": "freg",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "freg_tmp",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp_mant",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "tmp_exp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "name": "cpu/cf_spregs",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.macc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "env.macsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mac_mask",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.rambar0",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mbar",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "cpu/68040_mmu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.mmu.ar",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.ssw",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.tcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "env.mmu.urp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.srp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.fault",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "env.mmu.ttr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.mmusr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "cpu/68040_spregs",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.vbr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cacr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sfc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.dfc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "m68060-m68k-cpu": {
+ "Name": "m68060-m68k-cpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "cpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.dregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.aregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.current_sp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_op",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_x",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_n",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_v",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_c",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_z",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pending_vector",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pending_level",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "cpu/fpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.fpcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.fpsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.fregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 16,
+ "Description": {
+ "name": "freg",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "freg_tmp",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp_mant",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "tmp_exp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "field": "env.fp_result",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 16,
+ "Description": {
+ "name": "freg",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "freg_tmp",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp_mant",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "tmp_exp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "name": "cpu/cf_spregs",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.macc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "env.macsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mac_mask",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.rambar0",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mbar",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "cpu/68040_mmu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.mmu.ar",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.ssw",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.tcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "env.mmu.urp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.srp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.fault",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "env.mmu.ttr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.mmusr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "cpu/68040_spregs",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.vbr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cacr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sfc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.dfc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "fw_cfg_mem": {
+ "Name": "fw_cfg_mem",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "fw_cfg",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "cur_entry",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 4
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "fw_cfg/dma",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "dma_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ },
+ {
+ "name": "fw_cfg/acpi_mr",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "table_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "linker_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "rsdp_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "any-m68k-cpu": {
+ "Name": "any-m68k-cpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "cpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.dregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.aregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.current_sp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_op",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_x",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_n",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_v",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_c",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_z",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pending_vector",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pending_level",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "cpu/fpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.fpcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.fpsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.fregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 16,
+ "Description": {
+ "name": "freg",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "freg_tmp",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp_mant",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "tmp_exp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "field": "env.fp_result",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 16,
+ "Description": {
+ "name": "freg",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "freg_tmp",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp_mant",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "tmp_exp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "name": "cpu/cf_spregs",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.macc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "env.macsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mac_mask",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.rambar0",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mbar",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "cpu/68040_mmu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.mmu.ar",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.ssw",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.tcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "env.mmu.urp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.srp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.fault",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "env.mmu.ttr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.mmusr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "cpu/68040_spregs",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.vbr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cacr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sfc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.dfc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "fw_cfg_io": {
+ "Name": "fw_cfg_io",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "fw_cfg",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "cur_entry",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 4
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "fw_cfg/dma",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "dma_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ },
+ {
+ "name": "fw_cfg/acpi_mr",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "table_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "linker_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "rsdp_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "virtio-serial-device": {
+ "Name": "virtio-serial-device",
+ "version_id": 3,
+ "minimum_version_id": 3,
+ "Description": {
+ "name": "virtio-console",
+ "version_id": 3,
+ "minimum_version_id": 3,
+ "Fields": [
+ {
+ "field": "virtio",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 0
+ }
+ ]
+ }
+ },
+ "goldfish_rtc": {
+ "Name": "goldfish_rtc",
+ "version_id": 3,
+ "minimum_version_id": 0,
+ "Description": {
+ "name": "goldfish_rtc",
+ "version_id": 3,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tick_offset_vmstate",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "alarm_next",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "alarm_running",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "irq_pending",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "irq_enabled",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "time_high",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "tick_offset",
+ "version_id": 3,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ },
+ "m68k-cpu": {
+ "Name": "m68k-cpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "cpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.dregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.aregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.current_sp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_op",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_x",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_n",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_v",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_c",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cc_z",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pending_vector",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.pending_level",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "cpu/fpu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.fpcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.fpsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.fregs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 16,
+ "Description": {
+ "name": "freg",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "freg_tmp",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp_mant",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "tmp_exp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "field": "env.fp_result",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 16,
+ "Description": {
+ "name": "freg",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "freg_tmp",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "tmp_mant",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "tmp_exp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "name": "cpu/cf_spregs",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.macc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "env.macsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mac_mask",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.rambar0",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mbar",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "cpu/68040_mmu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.mmu.ar",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.ssw",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.tcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "env.mmu.urp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.srp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.fault",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "env.mmu.ttr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.mmu.mmusr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "cpu/68040_spregs",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "env.vbr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.cacr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.sfc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "env.dfc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/tests/data/vmstate-static-checker/ppc64/pseries-7.2.json b/tests/data/vmstate-static-checker/ppc64/pseries-7.2.json
new file mode 100644
index 00000000000..330bbbefedf
--- /dev/null
+++ b/tests/data/vmstate-static-checker/ppc64/pseries-7.2.json
@@ -0,0 +1,1068 @@
+{
+ "vmschkmachine": {
+ "Name": "pseries-7.2"
+ },
+ "spapr-nvram": {
+ "Name": "spapr-nvram",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "spapr_nvram",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "buf",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 0
+ }
+ ]
+ }
+ },
+ "xive-source": {
+ "Name": "xive-source",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "xive-source",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "nr_irqs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "status",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 0
+ }
+ ]
+ }
+ },
+ "xive-tctx": {
+ "Name": "xive-tctx",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "xive-tctx",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "regs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 64
+ }
+ ]
+ }
+ },
+ "pci-host-bridge": {
+ "Name": "pci-host-bridge",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "PCIHost",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "config_reg",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ "ics-spapr": {
+ "Name": "ics-spapr",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "ics",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "nr_irqs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "irqs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8,
+ "Description": {
+ "name": "ics/irq",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "server",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "priority",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "saved_priority",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "status",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "flags",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "scsi-cd": {
+ "Name": "scsi-cd",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "scsi-disk",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "qdev",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 608,
+ "Description": {
+ "name": "SCSIDevice",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "unit_attention.key",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "unit_attention.asc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "unit_attention.ascq",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "sense_is_ua",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "sense",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "sense_len",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "requests",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 0
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "SCSIDevice/sense",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "sense",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "field": "media_changed",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "media_event",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "eject_request",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "tray_open",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "tray_locked",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ "spapr-xive": {
+ "Name": "spapr-xive",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "spapr-xive",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "nr_irqs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "eat",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8,
+ "Description": {
+ "name": "spapr-xive/eas",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "w",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ },
+ {
+ "field": "endt",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 32,
+ "Description": {
+ "name": "spapr-xive/end",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "w0",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "w1",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "w2",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "w3",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "w4",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "w5",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "w6",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "w7",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "scsi-hd": {
+ "Name": "scsi-hd",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "scsi-disk",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "qdev",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 608,
+ "Description": {
+ "name": "SCSIDevice",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "unit_attention.key",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "unit_attention.asc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "unit_attention.ascq",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "sense_is_ua",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "sense",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "sense_len",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "requests",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 0
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "SCSIDevice/sense",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "sense",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "field": "media_changed",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "media_event",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "eject_request",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "tray_open",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "tray_locked",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ "fw_cfg_mem": {
+ "Name": "fw_cfg_mem",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "fw_cfg",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "cur_entry",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 4
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "fw_cfg/dma",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "dma_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ },
+ {
+ "name": "fw_cfg/acpi_mr",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "table_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "linker_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "rsdp_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "spapr-vty": {
+ "Name": "spapr-vty",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "spapr_vty",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "sdev",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 848,
+ "Description": {
+ "name": "spapr_vio",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "reg",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "irq",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "signal_state",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "crq.qladdr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "crq.qsize",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "crq.qnext",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ {
+ "field": "in",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "out",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "buf",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 16
+ }
+ ]
+ }
+ },
+ "spapr-wdt": {
+ "Name": "spapr-wdt",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "spapr_watchdog",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "timer",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 48
+ },
+ {
+ "field": "action",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "leave_others",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ "fw_cfg_io": {
+ "Name": "fw_cfg_io",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "fw_cfg",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "cur_entry",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 4
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "fw_cfg/dma",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "dma_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ },
+ {
+ "name": "fw_cfg/acpi_mr",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "table_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "linker_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "rsdp_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "spapr-vscsi": {
+ "Name": "spapr-vscsi",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "spapr_vscsi",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "vdev",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 848,
+ "Description": {
+ "name": "spapr_vio",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "reg",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "irq",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "signal_state",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "crq.qladdr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "crq.qsize",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "crq.qnext",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "spapr-rtc": {
+ "Name": "spapr-rtc",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "spapr/rtc",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "ns_offset",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ },
+ "spapr-vlan": {
+ "Name": "spapr-vlan",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "spapr_llan",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "sdev",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 848,
+ "Description": {
+ "name": "spapr_vio",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "reg",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "irq",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "signal_state",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "crq.qladdr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "crq.qsize",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "crq.qnext",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ {
+ "field": "isopen",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "buf_list",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "add_buf_ptr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "use_buf_ptr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "rx_bufs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "rxq_ptr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "spapr_llan/rx_pools",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "rx_pool",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 8,
+ "Description": {
+ "name": "spapr_llan/rx_buffer_pool",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "bufsize",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "count",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "bds",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "fw_cfg": {
+ "Name": "fw_cfg",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "fw_cfg",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "cur_entry",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 4
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "fw_cfg/dma",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "dma_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ },
+ {
+ "name": "fw_cfg/acpi_mr",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "table_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "linker_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "rsdp_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "ics": {
+ "Name": "ics",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "ics",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "nr_irqs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "irqs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8,
+ "Description": {
+ "name": "ics/irq",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "server",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "priority",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "saved_priority",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "status",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "flags",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+}
diff --git a/tests/data/vmstate-static-checker/s390x/s390-ccw-virtio-7.2.json b/tests/data/vmstate-static-checker/s390x/s390-ccw-virtio-7.2.json
new file mode 100644
index 00000000000..9698852bd38
--- /dev/null
+++ b/tests/data/vmstate-static-checker/s390x/s390-ccw-virtio-7.2.json
@@ -0,0 +1,475 @@
+{
+ "vmschkmachine": {
+ "Name": "s390-ccw-virtio-7.2"
+ },
+ "sclpquiesce": {
+ "Name": "sclpquiesce",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Description": {
+ "name": "sclpquiesce",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "event_pending",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ "s390-sclp-event-facility": {
+ "Name": "s390-sclp-event-facility",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Description": {
+ "name": "vmstate-event-facility",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "receive_mask_pieces[1]",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "vmstate-event-facility/mask64",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "receive_mask_pieces[0]",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "vmstate-event-facility/mask_length",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "mask_length",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "zpci": {
+ "Name": "zpci",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Description": {
+ "name": "zpci",
+ "version_id": 0,
+ "minimum_version_id": 0
+ }
+ },
+ "sclpconsole": {
+ "Name": "sclpconsole",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Description": {
+ "name": "sclpconsole",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "event.event_pending",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "iov",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "iov_sclp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "iov_bs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "iov_data_len",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "iov_sclp_rest",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ "virtio-serial-device": {
+ "Name": "virtio-serial-device",
+ "version_id": 3,
+ "minimum_version_id": 3,
+ "Description": {
+ "name": "virtio-console",
+ "version_id": 3,
+ "minimum_version_id": 3,
+ "Fields": [
+ {
+ "field": "virtio",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 0
+ }
+ ]
+ }
+ },
+ "sclplmconsole": {
+ "Name": "sclplmconsole",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Description": {
+ "name": "sclplmconsole",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "event.event_pending",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "write_errors",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "length",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "buf",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ "s390-pcihost": {
+ "Name": "s390-pcihost",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "PCIHost",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "config_reg",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ "s390-flic-qemu": {
+ "Name": "s390-flic-qemu",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "qemu-s390-flic",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "simm",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "nimm",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ "fw_cfg_io": {
+ "Name": "fw_cfg_io",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "fw_cfg",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "cur_entry",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 4
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "fw_cfg/dma",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "dma_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ },
+ {
+ "name": "fw_cfg/acpi_mr",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "table_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "linker_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "rsdp_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "s390-ipl": {
+ "Name": "s390-ipl",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Description": {
+ "name": "ipl",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "compat_start_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "compat_bios_start_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "iplb",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4096,
+ "Description": {
+ "name": "ipl/iplb",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "reserved1",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "devno",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "reserved2",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "ipl/iplb_extended",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "reserved_ext",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "field": "iplb_valid",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "cssid",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "ssid",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "devno",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ }
+ ]
+ }
+ },
+ "pci-host-bridge": {
+ "Name": "pci-host-bridge",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "PCIHost",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "config_reg",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ "fw_cfg_mem": {
+ "Name": "fw_cfg_mem",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "fw_cfg",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "cur_entry",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 4
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "fw_cfg/dma",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "dma_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ },
+ {
+ "name": "fw_cfg/acpi_mr",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "table_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "linker_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "rsdp_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/tests/data/vmstate-static-checker/x86_64/pc-q35-7.2.json b/tests/data/vmstate-static-checker/x86_64/pc-q35-7.2.json
new file mode 100644
index 00000000000..e527dffacca
--- /dev/null
+++ b/tests/data/vmstate-static-checker/x86_64/pc-q35-7.2.json
@@ -0,0 +1,3297 @@
+{
+ "vmschkmachine": {
+ "Name": "pc-q35-7.2"
+ },
+ "fw_cfg": {
+ "Name": "fw_cfg",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "fw_cfg",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "cur_entry",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 4
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "fw_cfg/dma",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "dma_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ },
+ {
+ "name": "fw_cfg/acpi_mr",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "table_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "linker_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "rsdp_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "pcie-host-bridge": {
+ "Name": "pcie-host-bridge",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "PCIHost",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "config_reg",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ "isa-pit": {
+ "Name": "isa-pit",
+ "version_id": 3,
+ "minimum_version_id": 2,
+ "Description": {
+ "name": "i8254",
+ "version_id": 3,
+ "minimum_version_id": 2,
+ "Fields": [
+ {
+ "field": "channels[0].irq_disabled",
+ "version_id": 3,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "channels",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 56,
+ "Description": {
+ "name": "pit channel",
+ "version_id": 2,
+ "minimum_version_id": 2,
+ "Fields": [
+ {
+ "field": "count",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "latched_count",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "count_latched",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "status_latched",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "status",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "read_state",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "write_state",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "write_latch",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "rw_mode",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "mode",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "bcd",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "gate",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "count_load_time",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "next_transition_time",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ },
+ {
+ "field": "channels[0].next_transition_time",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ },
+ "mch": {
+ "Name": "mch",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "mch",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "parent_obj",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2608,
+ "Description": {
+ "name": "PCIDevice",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "version_id",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "config",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 256
+ },
+ {
+ "field": "config",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 4096
+ },
+ {
+ "field": "irq_state",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 16
+ }
+ ]
+ }
+ },
+ {
+ "field": "unused",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ "pic-common": {
+ "Name": "pic-common",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "i8259",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "last_irr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "irr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "imr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "isr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "priority_add",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "irq_base",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "read_reg_select",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "poll",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "special_mask",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "init_state",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "auto_eoi",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "rotate_on_auto_eoi",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "special_fully_nested_mode",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "init4",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "single_mode",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "elcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ "ICH9-LPC": {
+ "Name": "ICH9-LPC",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "ICH9LPC",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "d",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2608,
+ "Description": {
+ "name": "PCIDevice",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "version_id",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "config",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 256
+ },
+ {
+ "field": "config",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 4096
+ },
+ {
+ "field": "irq_state",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 16
+ }
+ ]
+ }
+ },
+ {
+ "field": "apm",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 304,
+ "Description": {
+ "name": "APM State",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "apmc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "apms",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ {
+ "field": "pm",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 6480,
+ "Description": {
+ "name": "ich9_pm",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "acpi_regs.pm1.evt.sts",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "acpi_regs.pm1.evt.en",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "acpi_regs.pm1.cnt.cnt",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "acpi_regs.tmr.timer",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "acpi_regs.tmr.overflow_time",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "acpi_regs.gpe.sts",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "acpi_regs.gpe.en",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "smi_en",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "smi_sts",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "ich9_pm/memhp",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "acpi_memory_hotplug",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 304,
+ "Description": {
+ "name": "memory hotplug state",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "selector",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "devs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "memory hotplug device state",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "is_enabled",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "is_inserting",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "ost_event",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "ost_status",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "name": "ich9_pm/tco",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "tco_regs",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 320,
+ "Description": {
+ "name": "tco io device status",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "tco.rld",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "tco.din",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "tco.dout",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "tco.sts1",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "tco.sts2",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "tco.cnt1",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "tco.cnt2",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "tco.msg1",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "tco.msg2",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "tco.wdcnt",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "tco.tmr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "sw_irq_gen",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "tco_timer",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "expire_time",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "timeouts_no",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "name": "ich9_pm/cpuhp",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "cpuhp_state",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 304,
+ "Description": {
+ "name": "CPU hotplug state",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "selector",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "command",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "devs",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 32,
+ "Description": {
+ "name": "CPU hotplug device state",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "is_inserting",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "is_removing",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "ost_event",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "ost_status",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "name": "ich9_pm/pcihp",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "acpi_pci_hotplug.hotplug_select",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "acpi_pci_hotplug.acpi_pcihp_pci_status",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 12,
+ "Description": {
+ "name": "acpi_pcihp_pci_status",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "up",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "down",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ {
+ "field": "acpi_pci_hotplug.acpi_index",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "field": "chip_config",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "sci_level",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "ICH9LPC/rst_cnt",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "rst_cnt",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ },
+ {
+ "name": "ICH9LPC/smi_feat",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "smi_guest_features_le",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "smi_features_ok",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "smi_negotiated_features",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "pit-common": {
+ "Name": "pit-common",
+ "version_id": 3,
+ "minimum_version_id": 2,
+ "Description": {
+ "name": "i8254",
+ "version_id": 3,
+ "minimum_version_id": 2,
+ "Fields": [
+ {
+ "field": "channels[0].irq_disabled",
+ "version_id": 3,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "channels",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 56,
+ "Description": {
+ "name": "pit channel",
+ "version_id": 2,
+ "minimum_version_id": 2,
+ "Fields": [
+ {
+ "field": "count",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "latched_count",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "count_latched",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "status_latched",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "status",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "read_state",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "write_state",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "write_latch",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "rw_mode",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "mode",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "bcd",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "gate",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "count_load_time",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "next_transition_time",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ },
+ {
+ "field": "channels[0].next_transition_time",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ },
+ "vmgenid": {
+ "Name": "vmgenid",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "vmgenid",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "vmgenid_addr_le",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ "ioapic-common": {
+ "Name": "ioapic-common",
+ "version_id": 3,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "ioapic",
+ "version_id": 3,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "id",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "ioregsel",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "unused",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "irr",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "ioredtbl",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ },
+ "isa-i8259": {
+ "Name": "isa-i8259",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "i8259",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "last_irr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "irr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "imr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "isr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "priority_add",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "irq_base",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "read_reg_select",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "poll",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "special_mask",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "init_state",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "auto_eoi",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "rotate_on_auto_eoi",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "special_fully_nested_mode",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "init4",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "single_mode",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "elcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ "cfi.pflash01": {
+ "Name": "cfi.pflash01",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "pflash_cfi01",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "wcycle",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "cmd",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "status",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "counter",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "pflash_cfi01_blk_write",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "blk_bytes",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 0
+ },
+ {
+ "field": "blk_offset",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "i8042-mmio": {
+ "Name": "i8042-mmio",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "pckbd-mmio",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "kbd",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2328,
+ "Description": {
+ "name": "pckbd",
+ "version_id": 3,
+ "minimum_version_id": 3,
+ "Fields": [
+ {
+ "field": "write_cmd",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "status",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "mode",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "pending_tmp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "pckbd_outport",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "outport",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ },
+ {
+ "name": "pckbd/extended_state",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "migration_flags",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "obsrc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "obdata",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "cbdata",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "isa-serial": {
+ "Name": "isa-serial",
+ "version_id": 3,
+ "minimum_version_id": 2,
+ "Description": {
+ "name": "serial",
+ "version_id": 3,
+ "minimum_version_id": 2,
+ "Fields": [
+ {
+ "field": "state",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 656,
+ "Description": {
+ "name": "serial",
+ "version_id": 3,
+ "minimum_version_id": 2,
+ "Fields": [
+ {
+ "field": "divider",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "rbr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "ier",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "iir",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "lcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "mcr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "lsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "msr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "scr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "fcr_vmstate",
+ "version_id": 3,
+ "field_exists": false,
+ "size": 1
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "serial/thr_ipending",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "thr_ipending",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "serial/tsr",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "tsr_retry",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "thr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "tsr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ },
+ {
+ "name": "serial/recv_fifo",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "recv_fifo",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "Fifo8",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "data",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 0
+ },
+ {
+ "field": "head",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "num",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "name": "serial/xmit_fifo",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "xmit_fifo",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 24,
+ "Description": {
+ "name": "Fifo8",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "data",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 0
+ },
+ {
+ "field": "head",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "num",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "name": "serial/fifo_timeout_timer",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "fifo_timeout_timer",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ },
+ {
+ "name": "serial/timeout_ipending",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "timeout_ipending",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "serial/poll",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "poll_msl",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "modem_status_poll",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "ps2-mouse": {
+ "Name": "ps2-mouse",
+ "version_id": 2,
+ "minimum_version_id": 2,
+ "Description": {
+ "name": "ps2mouse",
+ "version_id": 2,
+ "minimum_version_id": 2,
+ "Fields": [
+ {
+ "field": "parent_obj",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1104,
+ "Description": {
+ "name": "PS2 Common State",
+ "version_id": 3,
+ "minimum_version_id": 2,
+ "Fields": [
+ {
+ "field": "write_cmd",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "queue.rptr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "queue.wptr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "queue.count",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "queue.data",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 256
+ }
+ ]
+ }
+ },
+ {
+ "field": "mouse_status",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "mouse_resolution",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "mouse_sample_rate",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "mouse_wrap",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "mouse_type",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "mouse_detect_state",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "mouse_dx",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "mouse_dy",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "mouse_dz",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "mouse_buttons",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ "kvmvapic": {
+ "Name": "kvmvapic",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "kvm-tpr-opt",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "rom_state",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 124,
+ "Description": {
+ "name": "kvmvapic-guest-rom",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "unused",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "vaddr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "fixup_start",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "fixup_end",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "vapic_vaddr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "vapic_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "vcpu_shift",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "real_tpr_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "up",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 44,
+ "Description": {
+ "name": "kvmvapic-handlers",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "set_tpr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "set_tpr_eax",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "get_tpr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "get_tpr_stack",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ {
+ "field": "mp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 44,
+ "Description": {
+ "name": "kvmvapic-handlers",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "set_tpr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "set_tpr_eax",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "get_tpr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "get_tpr_stack",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "field": "state",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "real_tpr_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "rom_state_vaddr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "vapic_paddr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "rom_state_paddr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ "ich9-ahci": {
+ "Name": "ich9-ahci",
+ "version_id": 1,
+ "minimum_version_id": 0,
+ "Description": {
+ "name": "ich9_ahci",
+ "version_id": 1,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "parent_obj",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2608,
+ "Description": {
+ "name": "PCIDevice",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "version_id",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "config",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 256
+ },
+ {
+ "field": "config",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 4096
+ },
+ {
+ "field": "irq_state",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 16
+ }
+ ]
+ }
+ },
+ {
+ "field": "ahci",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 624,
+ "Description": {
+ "name": "ahci",
+ "version_id": 1,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "dev",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 6088,
+ "Description": {
+ "name": "ahci port",
+ "version_id": 1,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "port",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 2304,
+ "Description": {
+ "name": "ide_bus",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "cmd",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "unit",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "ide_bus/error",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "error_status",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "retry_sector_num",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "retry_nsector",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "retry_unit",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "field": "port.ifs[0]",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 984,
+ "Description": {
+ "name": "ide_drive",
+ "version_id": 3,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "mult_sectors",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "identify_set",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "identify_data",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 512
+ },
+ {
+ "field": "feature",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "error",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "nsector",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "sector",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "lcyl",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "hcyl",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "hob_feature",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "hob_sector",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "hob_nsector",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "hob_lcyl",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "hob_hcyl",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "select",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "status",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "lba48",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "sense_key",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "asc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "cdrom_changed",
+ "version_id": 3,
+ "field_exists": false,
+ "size": 1
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "ide_drive/pio_state",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "req_nb_sectors",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "io_buffer",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "cur_io_buffer_offset",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "cur_io_buffer_len",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "end_transfer_fn_idx",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "elementary_transfer_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "packet_transfer_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "ide_drive/tray_state",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "tray_open",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "tray_locked",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ },
+ {
+ "name": "ide_drive/atapi/gesn_state",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "events.new_media",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "events.eject_request",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "field": "port_state",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "finished",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "port_regs.lst_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "port_regs.lst_addr_hi",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "port_regs.fis_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "port_regs.fis_addr_hi",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "port_regs.irq_stat",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "port_regs.irq_mask",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "port_regs.cmd",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "port_regs.tfdata",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "port_regs.sig",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "port_regs.scr_stat",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "port_regs.scr_ctl",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "port_regs.scr_err",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "port_regs.scr_act",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "port_regs.cmd_issue",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "done_first_drq",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "busy_slot",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "init_d2h_sent",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "ncq_tfs",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 112,
+ "Description": {
+ "name": "ncq state",
+ "version_id": 1,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "sector_count",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "lba",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "tag",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "cmd",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "slot",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "used",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "halt",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "field": "control_regs.cap",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "control_regs.ghc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "control_regs.irqstatus",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "control_regs.impl",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "control_regs.version",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "idp_index",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "ports",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "i8042": {
+ "Name": "i8042",
+ "version_id": 3,
+ "minimum_version_id": 3,
+ "Description": {
+ "name": "pckbd",
+ "version_id": 3,
+ "minimum_version_id": 3,
+ "Fields": [
+ {
+ "field": "kbd",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2328,
+ "Description": {
+ "name": "pckbd",
+ "version_id": 3,
+ "minimum_version_id": 3,
+ "Fields": [
+ {
+ "field": "write_cmd",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "status",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "mode",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "pending_tmp",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "pckbd_outport",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "outport",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ },
+ {
+ "name": "pckbd/extended_state",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "migration_flags",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "obsrc",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "obdata",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "cbdata",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "fw_cfg_io": {
+ "Name": "fw_cfg_io",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "fw_cfg",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "cur_entry",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 4
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "fw_cfg/dma",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "dma_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ },
+ {
+ "name": "fw_cfg/acpi_mr",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "table_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "linker_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "rsdp_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "vmcoreinfo": {
+ "Name": "vmcoreinfo",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "vmcoreinfo",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "has_vmcoreinfo",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "vmcoreinfo.host_format",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "vmcoreinfo.guest_format",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "vmcoreinfo.size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "vmcoreinfo.paddr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ },
+ "ps2-kbd": {
+ "Name": "ps2-kbd",
+ "version_id": 3,
+ "minimum_version_id": 2,
+ "Description": {
+ "name": "ps2kbd",
+ "version_id": 3,
+ "minimum_version_id": 2,
+ "Fields": [
+ {
+ "field": "parent_obj",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1104,
+ "Description": {
+ "name": "PS2 Common State",
+ "version_id": 3,
+ "minimum_version_id": 2,
+ "Fields": [
+ {
+ "field": "write_cmd",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "queue.rptr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "queue.wptr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "queue.count",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "queue.data",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 256
+ }
+ ]
+ }
+ },
+ {
+ "field": "scan_enabled",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "translate",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "scancode_set",
+ "version_id": 3,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "ps2kbd/ledstate",
+ "version_id": 3,
+ "minimum_version_id": 2,
+ "Fields": [
+ {
+ "field": "ledstate",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ },
+ {
+ "name": "ps2kbd/need_high_bit",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "need_high_bit",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ },
+ {
+ "name": "ps2kbd/command_reply_queue",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "parent_obj.queue.cwptr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "ICH9-SMB": {
+ "Name": "ICH9-SMB",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "ich9_smb",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "dev",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2608,
+ "Description": {
+ "name": "PCIDevice",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "version_id",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "config",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 256
+ },
+ {
+ "field": "config",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 4096
+ },
+ {
+ "field": "irq_state",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 16
+ }
+ ]
+ }
+ },
+ {
+ "field": "irq_enabled",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 1
+ },
+ {
+ "field": "smb",
+ "version_id": 1,
+ "field_exists": true,
+ "size": 384,
+ "Description": {
+ "name": "pmsmb",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "smb_stat",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "smb_ctl",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "smb_cmd",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "smb_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "smb_data0",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "smb_data1",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "smb_index",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "smb_data",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "smb_auxctl",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "smb_blkdata",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "i2c_enable",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "op_done",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "in_i2c_block_read",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "start_transaction_on_status_read",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "isa-pcspk": {
+ "Name": "isa-pcspk",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "pcspk",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "data_on",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "dummy_refresh_clock",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ "acpi-erst": {
+ "Name": "acpi-erst",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "acpi-erst",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "operation",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "busy_status",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "command_status",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "record_offset",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "reg_action",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "reg_value",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "record_identifier",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "next_record_index",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ "i8257": {
+ "Name": "i8257",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "dma",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "command",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "mask",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "flip_flop",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "dshift",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "regs",
+ "version_id": 1,
+ "field_exists": false,
+ "size": 40,
+ "Description": {
+ "name": "dma_regs",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "now",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "base",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "mode",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "page",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "pageh",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "dack",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "eop",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "port92": {
+ "Name": "port92",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "port92",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "outport",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ "q35-pcihost": {
+ "Name": "q35-pcihost",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "PCIHost",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "config_reg",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ "ioapic": {
+ "Name": "ioapic",
+ "version_id": 3,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "ioapic",
+ "version_id": 3,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "id",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "ioregsel",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "unused",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "irr",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "ioredtbl",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ },
+ "smbus-eeprom": {
+ "Name": "smbus-eeprom",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "smbus-eeprom",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "smbusdev",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 216,
+ "Description": {
+ "name": "smbus-device",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "i2c",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 168,
+ "Description": {
+ "name": "I2CSlave",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "address",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ {
+ "field": "mode",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "data_len",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ },
+ {
+ "field": "data_buf",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ {
+ "field": "data",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "offset",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ },
+ {
+ "field": "accessed",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 1
+ }
+ ]
+ }
+ },
+ "pci-host-bridge": {
+ "Name": "pci-host-bridge",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "PCIHost",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "config_reg",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 4
+ }
+ ]
+ }
+ },
+ "fw_cfg_mem": {
+ "Name": "fw_cfg_mem",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Description": {
+ "name": "fw_cfg",
+ "version_id": 2,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "cur_entry",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 2
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 0,
+ "field_exists": true,
+ "size": 4
+ },
+ {
+ "field": "cur_offset",
+ "version_id": 2,
+ "field_exists": false,
+ "size": 4
+ }
+ ],
+ "Subsections": [
+ {
+ "name": "fw_cfg/dma",
+ "version_id": 0,
+ "minimum_version_id": 0,
+ "Fields": [
+ {
+ "field": "dma_addr",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ },
+ {
+ "name": "fw_cfg/acpi_mr",
+ "version_id": 1,
+ "minimum_version_id": 1,
+ "Fields": [
+ {
+ "field": "table_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "linker_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ },
+ {
+ "field": "rsdp_mr_size",
+ "version_id": 0,
+ "field_exists": false,
+ "size": 8
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PULL 06/12] tests/functional: Use vmstate-static-checker.py to test data from v7.2
2025-09-24 6:39 [PULL 00/12] Functional test patches Thomas Huth
` (4 preceding siblings ...)
2025-09-24 6:39 ` [PULL 05/12] tests/data/vmstate-static-checker: Add dump files from QEMU 7.2.17 Thomas Huth
@ 2025-09-24 6:39 ` Thomas Huth
2025-09-24 6:39 ` [PULL 07/12] tests/functional: use self.log for all logging Thomas Huth
` (6 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Thomas Huth @ 2025-09-24 6:39 UTC (permalink / raw)
To: qemu-devel; +Cc: Richard Henderson, Fabiano Rosas
From: Thomas Huth <thuth@redhat.com>
We've got this nice vmstate-static-checker.py script that can help to
detect screw-ups in the migration states. Unfortunately, it's currently
only run manually, which can be cumbersome. Let's run it from a functional
test automatically with the reference data from QEMU 7.2, so that we get
at least a basic coverage here. Since the test can fail when the checker
script detects a false positive, mark the test with a skipFlakyTest
decorator for now, so that it is only run when the user also set the
QEMU_TEST_FLAKY_TESTS environment variable.
Acked-by: Fabiano Rosas <farosas@suse.de>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20250912100755.316518-5-thuth@redhat.com>
---
MAINTAINERS | 1 +
tests/functional/aarch64/meson.build | 1 +
tests/functional/generic/test_vmstate.py | 67 ++++++++++++++++++++++++
tests/functional/m68k/meson.build | 4 ++
tests/functional/ppc64/meson.build | 1 +
tests/functional/s390x/meson.build | 4 ++
tests/functional/x86_64/meson.build | 3 +-
7 files changed, 80 insertions(+), 1 deletion(-)
create mode 100755 tests/functional/generic/test_vmstate.py
diff --git a/MAINTAINERS b/MAINTAINERS
index 24c061aff35..3d1f88a4bbe 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3613,6 +3613,7 @@ F: migration/
F: scripts/vmstate-static-checker.py
F: tests/functional/migration.py
F: tests/functional/*/*migration.py
+F: tests/functional/generic/test_vmstate.py
F: tests/functional/x86_64/test_bad_vmstate.py
F: tests/data/vmstate-static-checker/
F: tests/qtest/migration/
diff --git a/tests/functional/aarch64/meson.build b/tests/functional/aarch64/meson.build
index 04846c6eb18..5ad52f93e1d 100644
--- a/tests/functional/aarch64/meson.build
+++ b/tests/functional/aarch64/meson.build
@@ -19,6 +19,7 @@ test_aarch64_timeouts = {
tests_aarch64_system_quick = [
'migration',
+ 'vmstate',
]
tests_aarch64_system_thorough = [
diff --git a/tests/functional/generic/test_vmstate.py b/tests/functional/generic/test_vmstate.py
new file mode 100755
index 00000000000..387ff542426
--- /dev/null
+++ b/tests/functional/generic/test_vmstate.py
@@ -0,0 +1,67 @@
+#!/usr/bin/env python3
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+'''This test runs the vmstate-static-checker script with the current QEMU'''
+
+import subprocess
+
+from qemu_test import QemuSystemTest, skipFlakyTest
+
+
+@skipFlakyTest("vmstate-static-checker can produce false positives")
+class VmStateTest(QemuSystemTest):
+ '''
+ This test helps to check whether there are problems between old
+ reference data and the current QEMU
+ '''
+
+ def test_vmstate_7_2(self):
+ '''Check reference data from QEMU v7.2'''
+
+ target_machine = {
+ 'aarch64': 'virt-7.2',
+ 'm68k': 'virt-7.2',
+ 'ppc64': 'pseries-7.2',
+ 's390x': 's390-ccw-virtio-7.2',
+ 'x86_64': 'pc-q35-7.2',
+ }
+ self.set_machine(target_machine[self.arch])
+
+ # Run QEMU to get the current vmstate json file:
+ dst_json = self.scratch_file('dest.json')
+ self.log.info('Dumping vmstate from %s', self.qemu_bin)
+ cp = subprocess.run([self.qemu_bin, '-nodefaults',
+ '-M', target_machine[self.arch],
+ '-dump-vmstate', dst_json],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ text=True, check=True)
+ if cp.stdout:
+ self.log.info('QEMU output: %s', cp.stdout)
+
+ # Check whether the old vmstate json file is still compatible:
+ src_json = self.data_file('..', 'data', 'vmstate-static-checker',
+ self.arch,
+ target_machine[self.arch] + '.json')
+ self.log.info('Comparing vmstate with %s', src_json)
+ checkerscript = self.data_file('..', '..', 'scripts',
+ 'vmstate-static-checker.py')
+ cp = subprocess.run([checkerscript, '-s', src_json, '-d', dst_json],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ text=True, check=False)
+ if cp.returncode != 0:
+ self.fail('Running vmstate-static-checker failed:\n' + cp.stdout +
+ '\nThis either means that there is a migration bug '
+ 'that needs to be fixed, or\nvmstate-static-checker.py '
+ 'needs to be improved (e.g. extend the changed_names\n'
+ 'in case a field has been renamed), or drop the '
+ 'problematic field from\n' + src_json +
+ '\nin case the script cannot be fixed easily.')
+ if cp.stdout:
+ self.log.warning('vmstate-static-checker output: %s', cp.stdout)
+
+
+if __name__ == '__main__':
+ QemuSystemTest.main()
diff --git a/tests/functional/m68k/meson.build b/tests/functional/m68k/meson.build
index e29044a6d73..679faaf86d6 100644
--- a/tests/functional/m68k/meson.build
+++ b/tests/functional/m68k/meson.build
@@ -1,5 +1,9 @@
# SPDX-License-Identifier: GPL-2.0-or-later
+tests_m68k_system_quick = [
+ 'vmstate',
+]
+
tests_m68k_system_thorough = [
'mcf5208evb',
'nextcube',
diff --git a/tests/functional/ppc64/meson.build b/tests/functional/ppc64/meson.build
index 842fe0fc715..1fa0a70f7ed 100644
--- a/tests/functional/ppc64/meson.build
+++ b/tests/functional/ppc64/meson.build
@@ -11,6 +11,7 @@ test_ppc64_timeouts = {
tests_ppc64_system_quick = [
'migration',
+ 'vmstate',
]
tests_ppc64_system_thorough = [
diff --git a/tests/functional/s390x/meson.build b/tests/functional/s390x/meson.build
index 030b116039c..70cd36e2913 100644
--- a/tests/functional/s390x/meson.build
+++ b/tests/functional/s390x/meson.build
@@ -4,6 +4,10 @@ test_s390x_timeouts = {
'ccw_virtio' : 420,
}
+tests_s390x_system_quick = [
+ 'vmstate',
+]
+
tests_s390x_system_thorough = [
'ccw_virtio',
'pxelinux',
diff --git a/tests/functional/x86_64/meson.build b/tests/functional/x86_64/meson.build
index ef12ac43b37..967426c30c3 100644
--- a/tests/functional/x86_64/meson.build
+++ b/tests/functional/x86_64/meson.build
@@ -14,10 +14,11 @@ tests_x86_64_system_quick = [
'cpu_model_versions',
'cpu_queries',
'mem_addr_space',
+ 'memlock',
'migration',
'pc_cpu_hotplug_props',
'virtio_version',
- 'memlock',
+ 'vmstate',
]
tests_x86_64_system_thorough = [
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PULL 07/12] tests/functional: use self.log for all logging
2025-09-24 6:39 [PULL 00/12] Functional test patches Thomas Huth
` (5 preceding siblings ...)
2025-09-24 6:39 ` [PULL 06/12] tests/functional: Use vmstate-static-checker.py to test data from v7.2 Thomas Huth
@ 2025-09-24 6:39 ` Thomas Huth
2025-09-24 6:39 ` [PULL 08/12] .gitlab-ci.d/buildtest.yml: Unset CI_COMMIT_DESCRIPTION for htags Thomas Huth
` (5 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Thomas Huth @ 2025-09-24 6:39 UTC (permalink / raw)
To: qemu-devel; +Cc: Richard Henderson, Daniel P. Berrangé
From: Daniel P. Berrangé <berrange@redhat.com>
Some tests are creating their on logger category which means any
output they log is not captured in base.log.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
[thuth: drop changes to reverse_debugging.py (it's WIP in other patches)]
Message-ID: <20250912182200.643909-7-berrange@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/functional/aarch64/test_virt.py | 4 +--
tests/functional/arm/test_integratorcp.py | 3 +--
tests/functional/mips64el/test_malta.py | 3 +--
tests/functional/replay_kernel.py | 16 +++++-------
tests/functional/x86_64/test_acpi_bits.py | 31 +++++++++++------------
5 files changed, 25 insertions(+), 32 deletions(-)
diff --git a/tests/functional/aarch64/test_virt.py b/tests/functional/aarch64/test_virt.py
index 4d0ad90ff89..63071f9b517 100755
--- a/tests/functional/aarch64/test_virt.py
+++ b/tests/functional/aarch64/test_virt.py
@@ -72,8 +72,6 @@ def common_aarch64_virt(self, machine):
self.set_machine('virt')
self.require_accelerator("tcg")
- logger = logging.getLogger('aarch64_virt')
-
kernel_path = self.ASSET_KERNEL.fetch()
self.vm.set_console()
@@ -91,7 +89,7 @@ def common_aarch64_virt(self, machine):
'rng-random,id=rng0,filename=/dev/urandom')
# Also add a scratch block device
- logger.info('creating scratch qcow2 image')
+ self.log.info('creating scratch qcow2 image')
image_path = self.scratch_file('scratch.qcow2')
qemu_img = get_qemu_img(self)
check_call([qemu_img, 'create', '-f', 'qcow2', image_path, '8M'],
diff --git a/tests/functional/arm/test_integratorcp.py b/tests/functional/arm/test_integratorcp.py
index 4f00924aa03..23ae919359d 100755
--- a/tests/functional/arm/test_integratorcp.py
+++ b/tests/functional/arm/test_integratorcp.py
@@ -77,7 +77,6 @@ def test_framebuffer_tux_logo(self):
command_line='screendump %s' % screendump_path)
if 'unknown command' in res:
self.skipTest('screendump not available')
- logger = logging.getLogger('framebuffer')
cpu_count = 1
match_threshold = 0.92
@@ -88,7 +87,7 @@ def test_framebuffer_tux_logo(self):
loc = np.where(result >= match_threshold)
tux_count = 0
for tux_count, pt in enumerate(zip(*loc[::-1]), start=1):
- logger.debug('found Tux at position [x, y] = %s', pt)
+ self.log.debug('found Tux at position [x, y] = %s', pt)
self.assertGreaterEqual(tux_count, cpu_count)
if __name__ == '__main__':
diff --git a/tests/functional/mips64el/test_malta.py b/tests/functional/mips64el/test_malta.py
index 8fdc49b3005..170147bfcc2 100755
--- a/tests/functional/mips64el/test_malta.py
+++ b/tests/functional/mips64el/test_malta.py
@@ -159,7 +159,6 @@ def do_test_i6400_framebuffer_logo(self, cpu_cores_count):
command_line='screendump %s' % screendump_path)
if 'unknown command' in res:
self.skipTest('screendump not available')
- logger = logging.getLogger('framebuffer')
match_threshold = 0.95
screendump_bgr = cv2.imread(screendump_path, cv2.IMREAD_COLOR)
@@ -171,7 +170,7 @@ def do_test_i6400_framebuffer_logo(self, cpu_cores_count):
h, w = tuxlogo_bgr.shape[:2]
debug_png = os.getenv('QEMU_TEST_CV2_SCREENDUMP_PNG_PATH')
for tuxlogo_count, pt in enumerate(zip(*loc[::-1]), start=1):
- logger.debug('found Tux at position (x, y) = %s', pt)
+ self.log.debug('found Tux at position (x, y) = %s', pt)
cv2.rectangle(screendump_bgr, pt,
(pt[0] + w, pt[1] + h), (0, 0, 255), 2)
if debug_png:
diff --git a/tests/functional/replay_kernel.py b/tests/functional/replay_kernel.py
index 80795eb0520..acb1d29a1b5 100644
--- a/tests/functional/replay_kernel.py
+++ b/tests/functional/replay_kernel.py
@@ -32,15 +32,14 @@ def run_vm(self, kernel_path, kernel_command_line, console_pattern,
# icount requires TCG to be available
self.require_accelerator('tcg')
- logger = logging.getLogger('replay')
start_time = time.time()
vm = self.get_vm(name='recording' if record else 'replay')
vm.set_console()
if record:
- logger.info('recording the execution...')
+ self.log.info('recording the execution...')
mode = 'record'
else:
- logger.info('replaying the execution...')
+ self.log.info('replaying the execution...')
mode = 'replay'
vm.add_args('-icount', 'shift=%s,rr=%s,rrfile=%s' %
(shift, mode, replay_path),
@@ -54,15 +53,15 @@ def run_vm(self, kernel_path, kernel_command_line, console_pattern,
self.wait_for_console_pattern(console_pattern, vm)
if record:
vm.shutdown()
- logger.info('finished the recording with log size %s bytes'
+ self.log.info('finished the recording with log size %s bytes'
% os.path.getsize(replay_path))
self.run_replay_dump(replay_path)
- logger.info('successfully tested replay-dump.py')
+ self.log.info('successfully tested replay-dump.py')
else:
vm.wait()
- logger.info('successfully finished the replay')
+ self.log.info('successfully finished the replay')
elapsed = time.time() - start_time
- logger.info('elapsed time %.2f sec' % elapsed)
+ self.log.info('elapsed time %.2f sec' % elapsed)
return elapsed
def run_replay_dump(self, replay_path):
@@ -80,5 +79,4 @@ def run_rr(self, kernel_path, kernel_command_line, console_pattern,
True, shift, args, replay_path)
t2 = self.run_vm(kernel_path, kernel_command_line, console_pattern,
False, shift, args, replay_path)
- logger = logging.getLogger('replay')
- logger.info('replay overhead {:.2%}'.format(t2 / t1 - 1))
+ self.log.info('replay overhead {:.2%}'.format(t2 / t1 - 1))
diff --git a/tests/functional/x86_64/test_acpi_bits.py b/tests/functional/x86_64/test_acpi_bits.py
index 8e0563a97b1..9a2816533d6 100755
--- a/tests/functional/x86_64/test_acpi_bits.py
+++ b/tests/functional/x86_64/test_acpi_bits.py
@@ -121,10 +121,10 @@ def __init__(self, *args, **kwargs):
self._debugcon_log = 'debugcon-log.txt'
def _print_log(self, log):
- self.logger.info('\nlogs from biosbits follows:')
- self.logger.info('==========================================\n')
- self.logger.info(log)
- self.logger.info('==========================================\n')
+ self.log.info('\nlogs from biosbits follows:')
+ self.log.info('==========================================\n')
+ self.log.info(log)
+ self.log.info('==========================================\n')
def copy_bits_config(self):
""" copies the bios bits config file into bits.
@@ -138,8 +138,8 @@ def copy_bits_config(self):
self.assertTrue(os.path.exists(bits_config_file))
self.assertTrue(os.path.exists(target_config_dir))
shutil.copy2(bits_config_file, target_config_dir)
- self.logger.info('copied config file %s to %s',
- bits_config_file, target_config_dir)
+ self.log.info('copied config file %s to %s',
+ bits_config_file, target_config_dir)
def copy_test_scripts(self):
"""copies the python test scripts into bits. """
@@ -163,8 +163,8 @@ def copy_test_scripts(self):
newfilename = os.path.splitext(filename)[0] + '.py'
shutil.copy2(os.path.join(bits_test_dir, filename),
os.path.join(target_test_dir, newfilename))
- self.logger.info('copied test file %s to %s',
- filename, target_test_dir)
+ self.log.info('copied test file %s to %s',
+ filename, target_test_dir)
# now remove the pyc test file if it exists, otherwise the
# changes in the python test script won't be executed.
@@ -172,9 +172,9 @@ def copy_test_scripts(self):
if os.access(os.path.join(target_test_dir, testfile_pyc),
os.F_OK):
os.remove(os.path.join(target_test_dir, testfile_pyc))
- self.logger.info('removed compiled file %s',
- os.path.join(target_test_dir,
- testfile_pyc))
+ self.log.info('removed compiled file %s',
+ os.path.join(target_test_dir,
+ testfile_pyc))
def fix_mkrescue(self, mkrescue):
""" grub-mkrescue is a bash script with two variables, 'prefix' and
@@ -216,7 +216,7 @@ def generate_bits_iso(self):
self.fix_mkrescue(mkrescue_script)
- self.logger.info('using grub-mkrescue for generating biosbits iso ...')
+ self.log.info('using grub-mkrescue for generating biosbits iso ...')
try:
if os.getenv('V') or os.getenv('BITS_DEBUG'):
@@ -225,7 +225,7 @@ def generate_bits_iso(self):
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
check=True)
- self.logger.info("grub-mkrescue output %s" % proc.stdout)
+ self.log.info("grub-mkrescue output %s" % proc.stdout)
else:
subprocess.check_call([mkrescue_script, '-o',
iso_file, bits_dir],
@@ -238,11 +238,10 @@ def generate_bits_iso(self):
self.assertTrue(os.access(iso_file, os.R_OK))
- self.logger.info('iso file %s successfully generated.', iso_file)
+ self.log.info('iso file %s successfully generated.', iso_file)
def setUp(self): # pylint: disable=arguments-differ
super().setUp()
- self.logger = self.log
prebuiltDir = self.scratch_file('prebuilt')
if not os.path.isdir(prebuiltDir):
@@ -333,7 +332,7 @@ def test_acpi_smbios_bits(self):
# in batch mode and then automatically initiate a vm shutdown.
self._vm.event_wait('SHUTDOWN', timeout=BITS_TIMEOUT)
self._vm.wait(timeout=None)
- self.logger.debug("Checking console output ...")
+ self.log.debug("Checking console output ...")
self.parse_log()
if __name__ == '__main__':
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PULL 08/12] .gitlab-ci.d/buildtest.yml: Unset CI_COMMIT_DESCRIPTION for htags
2025-09-24 6:39 [PULL 00/12] Functional test patches Thomas Huth
` (6 preceding siblings ...)
2025-09-24 6:39 ` [PULL 07/12] tests/functional: use self.log for all logging Thomas Huth
@ 2025-09-24 6:39 ` Thomas Huth
2025-09-24 6:39 ` [PULL 09/12] tests/functional/hppa: Add a CD-ROM boot test for qemu-system-hppa Thomas Huth
` (4 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Thomas Huth @ 2025-09-24 6:39 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, qemu-stable, Peter Maydell, Alex Bennée,
Daniel P. Berrangé
From: Peter Maydell <peter.maydell@linaro.org>
In commit 52a21689cd829 we added a workaround for a bug in older
versions of htags where they fail with a weird error message if the
environment is too large. However, we missed one variable which
gitlab CI can set to the body of the commit message:
CI_COMMIT_DESCRIPTION.
Add this to the variables we unset when running htags, so that
the 'pages' job doesn't fail if the most recent commit happens
to have a very large commit message.
Cc: qemu-stable@nongnu.org
Fixes: 52a21689cd8 (".gitlab-ci.d/buildtest.yml: Work around htags bug when environment is large")
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-ID: <20250916163030.1467893-1-peter.maydell@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
.gitlab-ci.d/buildtest.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml
index f01978fb40c..e296fc3c14a 100644
--- a/.gitlab-ci.d/buildtest.yml
+++ b/.gitlab-ci.d/buildtest.yml
@@ -736,7 +736,7 @@ pages:
- make gtags
# We unset variables to work around a bug in some htags versions
# which causes it to fail when the environment is large
- - CI_COMMIT_MESSAGE= CI_COMMIT_TAG_MESSAGE= htags
+ - CI_COMMIT_MESSAGE= CI_COMMIT_TAG_MESSAGE= CI_COMMIT_DESCRIPTION= htags
-anT --tree-view=filetree -m qemu_init
-t "Welcome to the QEMU sourcecode"
- mv HTML public/src
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PULL 09/12] tests/functional/hppa: Add a CD-ROM boot test for qemu-system-hppa
2025-09-24 6:39 [PULL 00/12] Functional test patches Thomas Huth
` (7 preceding siblings ...)
2025-09-24 6:39 ` [PULL 08/12] .gitlab-ci.d/buildtest.yml: Unset CI_COMMIT_DESCRIPTION for htags Thomas Huth
@ 2025-09-24 6:39 ` Thomas Huth
2025-09-24 6:39 ` [PULL 10/12] tests: Fix "make check-functional" for targets without thorough tests Thomas Huth
` (3 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Thomas Huth @ 2025-09-24 6:39 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Sven Schnelle, Philippe Mathieu-Daudé,
Philippe Mathieu-Daudé
From: Thomas Huth <thuth@redhat.com>
Add a test which boots a HP-UX firmware upgrade CD-ROM. It exercise
the PCI LSI53C895A SCSI controller. The ISO image comes from:
https://web.archive.org/web/20101204061612/http://ftp.parisc-linux.org/kernels/712/PF_C7120023
The test is very quick, less than 3s.
Based on an old patch from Philippe that has been posted here:
https://www.mail-archive.com/qemu-devel@nongnu.org/msg651012.html
Suggested-by: Sven Schnelle <svens@stackframe.org>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
[thuth: Adjusted the patch to the functional framework,
and adjusted the commit message]
Message-ID: <20250918122447.105861-1-thuth@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
MAINTAINERS | 2 +-
tests/functional/hppa/meson.build | 4 +++
tests/functional/hppa/test_cdboot.py | 38 ++++++++++++++++++++++++++++
3 files changed, 43 insertions(+), 1 deletion(-)
create mode 100755 tests/functional/hppa/test_cdboot.py
diff --git a/MAINTAINERS b/MAINTAINERS
index 3d1f88a4bbe..24b71a4fc54 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1276,7 +1276,7 @@ F: include/hw/pci-host/astro.h
F: include/hw/pci-host/dino.h
F: pc-bios/hppa-firmware.img
F: roms/seabios-hppa/
-F: tests/functional/hppa/test_seabios.py
+F: tests/functional/hppa/
LoongArch Machines
------------------
diff --git a/tests/functional/hppa/meson.build b/tests/functional/hppa/meson.build
index a3348370884..df2f7ccc9c3 100644
--- a/tests/functional/hppa/meson.build
+++ b/tests/functional/hppa/meson.build
@@ -3,3 +3,7 @@
tests_hppa_system_quick = [
'seabios',
]
+
+tests_hppa_system_thorough = [
+ 'cdboot',
+]
diff --git a/tests/functional/hppa/test_cdboot.py b/tests/functional/hppa/test_cdboot.py
new file mode 100755
index 00000000000..84421e8d63e
--- /dev/null
+++ b/tests/functional/hppa/test_cdboot.py
@@ -0,0 +1,38 @@
+#!/usr/bin/env python3
+#
+# CD boot test for HPPA machines
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+from qemu_test import QemuSystemTest, Asset, exec_command_and_wait_for_pattern
+from qemu_test import wait_for_console_pattern
+
+
+class HppaCdBoot(QemuSystemTest):
+
+ ASSET_CD = Asset(
+ ('https://github.com/philmd/qemu-testing-blob/raw/ec1b741/'
+ 'hppa/hp9000/712/C7120023.frm'),
+ '32c612ad2074516986bdc27768903c561fa92af2ca48e5ac3f3359ade1c42f70')
+
+ def test_cdboot(self):
+ self.set_machine('B160L')
+ cdrom_path = self.ASSET_CD.fetch()
+
+ self.vm.set_console()
+ self.vm.add_args('-cdrom', cdrom_path,
+ '-boot', 'd',
+ '-no-reboot')
+ self.vm.launch()
+ wait_for_console_pattern(self, 'Unrecognized MODEL TYPE = 502')
+ wait_for_console_pattern(self, 'UPDATE PAUSED>')
+
+ exec_command_and_wait_for_pattern(self, 'exit\r', 'UPDATE>')
+ exec_command_and_wait_for_pattern(self, 'ls\r', 'IMAGE1B')
+ wait_for_console_pattern(self, 'UPDATE>')
+ exec_command_and_wait_for_pattern(self, 'exit\r',
+ 'THIS UTILITY WILL NOW RESET THE SYSTEM.....')
+
+
+if __name__ == '__main__':
+ QemuSystemTest.main()
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PULL 10/12] tests: Fix "make check-functional" for targets without thorough tests
2025-09-24 6:39 [PULL 00/12] Functional test patches Thomas Huth
` (8 preceding siblings ...)
2025-09-24 6:39 ` [PULL 09/12] tests/functional/hppa: Add a CD-ROM boot test for qemu-system-hppa Thomas Huth
@ 2025-09-24 6:39 ` Thomas Huth
2025-09-24 6:39 ` [PULL 11/12] tests/functional: retry when seeing ConnectionError exception Thomas Huth
` (2 subsequent siblings)
12 siblings, 0 replies; 16+ messages in thread
From: Thomas Huth @ 2025-09-24 6:39 UTC (permalink / raw)
To: qemu-devel; +Cc: Richard Henderson, Peter Maydell
From: Thomas Huth <thuth@redhat.com>
If QEMU gets configured for a single target that does not have
any thorough functional tests, "make check-functional" currently
fails with the error message "No rule to make target 'check-func'".
This happens because "check-func" only gets defined for thorough
tests (quick ones get added to "check-func-quick" instead).
The same problem can happen with the quick tests for targets that
do not have any functional test at all. To fix it, simply make sure
that the targets are always available in the Makefile.
Reported-by: Peter Maydell <peter.maydell@linaro.org>
Closes: https://gitlab.com/qemu-project/qemu/-/issues/3119
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20250918125154.126072-1-thuth@redhat.com>
---
tests/Makefile.include | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 3538c0c7407..62a4fc8ed31 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -113,6 +113,9 @@ check-functional:
@$(NINJA) precache-functional
@QEMU_TEST_NO_DOWNLOAD=1 $(MAKE) SPEED=thorough check-func check-func-quick
+.PHONY: check-func check-func-quick
+check-func check-func-quick:
+
# Consolidated targets
.PHONY: check check-clean
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PULL 11/12] tests/functional: retry when seeing ConnectionError exception
2025-09-24 6:39 [PULL 00/12] Functional test patches Thomas Huth
` (9 preceding siblings ...)
2025-09-24 6:39 ` [PULL 10/12] tests: Fix "make check-functional" for targets without thorough tests Thomas Huth
@ 2025-09-24 6:39 ` Thomas Huth
2025-09-24 6:39 ` [PULL 12/12] tests/functional: treat unknown exceptions as transient faults Thomas Huth
2025-09-24 21:15 ` [PULL 00/12] Functional test patches Richard Henderson
12 siblings, 0 replies; 16+ messages in thread
From: Thomas Huth @ 2025-09-24 6:39 UTC (permalink / raw)
To: qemu-devel; +Cc: Richard Henderson, Daniel P. Berrangé
From: Daniel P. Berrangé <berrange@redhat.com>
This base class is used for many different socket connection
errors, corresponding to ECONNRESET, ECONNREFUSED, ECONNABORTED
and more. Most of these are things you might expect to see every
now and then as transient flaws. We should thus retry the asset
download when seeing them.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20250918125746.1165658-2-berrange@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/functional/qemu_test/asset.py | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/tests/functional/qemu_test/asset.py b/tests/functional/qemu_test/asset.py
index 2dd32bf28d9..f8b87d21538 100644
--- a/tests/functional/qemu_test/asset.py
+++ b/tests/functional/qemu_test/asset.py
@@ -179,6 +179,13 @@ def fetch(self):
self.url, e.reason)
raise AssetError(self, "Unable to download: URL error %s" %
e.reason, transient=True)
+ except ConnectionError as e:
+ # A socket connection failure, such as dropped conn
+ # or refused conn
+ tmp_cache_file.unlink()
+ self.log.error("Unable to download %s: Connection error %s",
+ self.url, e)
+ continue
except Exception as e:
tmp_cache_file.unlink()
raise AssetError(self, "Unable to download: %s" % e)
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PULL 12/12] tests/functional: treat unknown exceptions as transient faults
2025-09-24 6:39 [PULL 00/12] Functional test patches Thomas Huth
` (10 preceding siblings ...)
2025-09-24 6:39 ` [PULL 11/12] tests/functional: retry when seeing ConnectionError exception Thomas Huth
@ 2025-09-24 6:39 ` Thomas Huth
2025-09-24 21:15 ` [PULL 00/12] Functional test patches Richard Henderson
12 siblings, 0 replies; 16+ messages in thread
From: Thomas Huth @ 2025-09-24 6:39 UTC (permalink / raw)
To: qemu-devel; +Cc: Richard Henderson, Daniel P. Berrangé
From: Daniel P. Berrangé <berrange@redhat.com>
To maximise the robustness of the functional tests we want to treat most
asset download failures as non-fatal to the test suite. Instead it
should just skip the tests which need that particular asset. The only
time aim to make it fatal is for 404 errors which are highly likely to
reflect genuine problems to be fixed.
We catch certain exception classes and handle them as transient errors,
but unfortunately it is proving difficult to predict what exception
classes urlopen() is capable of raising, with new possibilities being
discovered.
To provide a fail-safe, treat the generic Exception class as being a
transient error too. This may well mask certain genuine bugs, but it is
preferrable to prioritize running the test suite to the greatest extent
practical.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20250918125746.1165658-3-berrange@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/functional/qemu_test/asset.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tests/functional/qemu_test/asset.py b/tests/functional/qemu_test/asset.py
index f8b87d21538..2971a989d1e 100644
--- a/tests/functional/qemu_test/asset.py
+++ b/tests/functional/qemu_test/asset.py
@@ -188,7 +188,8 @@ def fetch(self):
continue
except Exception as e:
tmp_cache_file.unlink()
- raise AssetError(self, "Unable to download: %s" % e)
+ raise AssetError(self, "Unable to download: %s" % e,
+ transient=True)
if not os.path.exists(tmp_cache_file):
raise AssetError(self, "Download retries exceeded", transient=True)
--
2.51.0
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PULL 00/12] Functional test patches
2025-09-24 6:39 [PULL 00/12] Functional test patches Thomas Huth
` (11 preceding siblings ...)
2025-09-24 6:39 ` [PULL 12/12] tests/functional: treat unknown exceptions as transient faults Thomas Huth
@ 2025-09-24 21:15 ` Richard Henderson
12 siblings, 0 replies; 16+ messages in thread
From: Richard Henderson @ 2025-09-24 21:15 UTC (permalink / raw)
To: Thomas Huth, qemu-devel
On 9/23/25 23:39, Thomas Huth wrote:
> Hi Richard!
>
> The following changes since commit ab8008b231e758e03c87c1c483c03afdd9c02e19:
>
> Merge tag 'pull-9p-20250918' ofhttps://github.com/cschoenebeck/qemu into staging (2025-09-19 12:21:35 -0700)
>
> are available in the Git repository at:
>
> https://gitlab.com/thuth/qemu.git tags/pull-request-2025-09-24
>
> for you to fetch changes up to 097bbfc5e0ba889ce17106ef941a56111c3de270:
>
> tests/functional: treat unknown exceptions as transient faults (2025-09-24 08:26:11 +0200)
>
> ----------------------------------------------------------------
> * New functional tests to check via the vmstate-static-checker.py script
> * New functional tests for CD-ROM boot on hppa
> * Skip functional tests on more exotic network errors, too
> * Fix another issue with htags in the gitlab CI
> * Some additional minor fixes to various functional tests
Applied, thanks. Please update https://wiki.qemu.org/ChangeLog/10.2 as appropriate.
r~
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PULL 04/12] tests/functional: Test whether the vmstate-static-checker script works fine
2025-09-24 6:39 ` [PULL 04/12] tests/functional: Test whether the vmstate-static-checker script works fine Thomas Huth
@ 2025-10-29 11:58 ` Daniel P. Berrangé
2025-10-30 9:07 ` Thomas Huth
0 siblings, 1 reply; 16+ messages in thread
From: Daniel P. Berrangé @ 2025-10-29 11:58 UTC (permalink / raw)
To: Thomas Huth; +Cc: qemu-devel, Richard Henderson
On Wed, Sep 24, 2025 at 08:39:48AM +0200, Thomas Huth wrote:
> From: Thomas Huth <thuth@redhat.com>
>
> We've got two vmstate dump files in the repository which are meant
> for verifying whether the vmstate-static-checker.py works as expected.
> Since running this manually is a cumbersome job, let's add an automated
> test for this instead that runs the script with the two dump files
> and checks for the expected output.
This job always fails on Fedora 43, because the vmstate script
output includes python deprecation warnings:
2025-10-29 11:53:55,097 - INFO: vmstate-static-checker output:
/var/home/berrange/src/virt/qemu/tests/functional/../../scripts/vmstate-static-checker.py:385: PendingDeprecationWarning: FileType is deprecated. Simply open files after parsing arguments.
parser.add_argument('-s', '--src', type=argparse.FileType('r'),
/var/home/berrange/src/virt/qemu/tests/functional/../../scripts/vmstate-static-checker.py:388: PendingDeprecationWarning: FileType is deprecated. Simply open files after parsing arguments.
parser.add_argument('-d', '--dest', type=argparse.FileType('r'),
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> Message-ID: <20250912100755.316518-3-thuth@redhat.com>
> ---
> MAINTAINERS | 1 +
> tests/functional/x86_64/meson.build | 1 +
> tests/functional/x86_64/test_bad_vmstate.py | 58 +++++++++++++++++++++
> 3 files changed, 60 insertions(+)
> create mode 100755 tests/functional/x86_64/test_bad_vmstate.py
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PULL 04/12] tests/functional: Test whether the vmstate-static-checker script works fine
2025-10-29 11:58 ` Daniel P. Berrangé
@ 2025-10-30 9:07 ` Thomas Huth
0 siblings, 0 replies; 16+ messages in thread
From: Thomas Huth @ 2025-10-30 9:07 UTC (permalink / raw)
To: Daniel P. Berrangé; +Cc: qemu-devel, Richard Henderson
On 29/10/2025 12.58, Daniel P. Berrangé wrote:
> On Wed, Sep 24, 2025 at 08:39:48AM +0200, Thomas Huth wrote:
>> From: Thomas Huth <thuth@redhat.com>
>>
>> We've got two vmstate dump files in the repository which are meant
>> for verifying whether the vmstate-static-checker.py works as expected.
>> Since running this manually is a cumbersome job, let's add an automated
>> test for this instead that runs the script with the two dump files
>> and checks for the expected output.
>
> This job always fails on Fedora 43, because the vmstate script
> output includes python deprecation warnings:
>
> 2025-10-29 11:53:55,097 - INFO: vmstate-static-checker output:
> /var/home/berrange/src/virt/qemu/tests/functional/../../scripts/vmstate-static-checker.py:385: PendingDeprecationWarning: FileType is deprecated. Simply open files after parsing arguments.
> parser.add_argument('-s', '--src', type=argparse.FileType('r'),
> /var/home/berrange/src/virt/qemu/tests/functional/../../scripts/vmstate-static-checker.py:388: PendingDeprecationWarning: FileType is deprecated. Simply open files after parsing arguments.
> parser.add_argument('-d', '--dest', type=argparse.FileType('r'),
Thanks for the heads-up, I guess we should now rather use type=pathlib.Path
in this script instead. I'll try to come up with a patch...
Thomas
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2025-10-30 9:08 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-24 6:39 [PULL 00/12] Functional test patches Thomas Huth
2025-09-24 6:39 ` [PULL 01/12] tests/functional/m68k: Use proper polling in the next-cube test Thomas Huth
2025-09-24 6:39 ` [PULL 02/12] tests/functional/s390x/test_pxelinux: Fix warnings from pylint Thomas Huth
2025-09-24 6:39 ` [PULL 03/12] tests: Move the old vmstate-static-checker files to tests/data/ Thomas Huth
2025-09-24 6:39 ` [PULL 04/12] tests/functional: Test whether the vmstate-static-checker script works fine Thomas Huth
2025-10-29 11:58 ` Daniel P. Berrangé
2025-10-30 9:07 ` Thomas Huth
2025-09-24 6:39 ` [PULL 05/12] tests/data/vmstate-static-checker: Add dump files from QEMU 7.2.17 Thomas Huth
2025-09-24 6:39 ` [PULL 06/12] tests/functional: Use vmstate-static-checker.py to test data from v7.2 Thomas Huth
2025-09-24 6:39 ` [PULL 07/12] tests/functional: use self.log for all logging Thomas Huth
2025-09-24 6:39 ` [PULL 08/12] .gitlab-ci.d/buildtest.yml: Unset CI_COMMIT_DESCRIPTION for htags Thomas Huth
2025-09-24 6:39 ` [PULL 09/12] tests/functional/hppa: Add a CD-ROM boot test for qemu-system-hppa Thomas Huth
2025-09-24 6:39 ` [PULL 10/12] tests: Fix "make check-functional" for targets without thorough tests Thomas Huth
2025-09-24 6:39 ` [PULL 11/12] tests/functional: retry when seeing ConnectionError exception Thomas Huth
2025-09-24 6:39 ` [PULL 12/12] tests/functional: treat unknown exceptions as transient faults Thomas Huth
2025-09-24 21:15 ` [PULL 00/12] Functional test patches Richard Henderson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).