* [PATCH v2 0/4] tests/functional: Test with scripts/vmstate-static-checker.py
@ 2025-05-22 13:37 Thomas Huth
2025-05-22 13:37 ` [PATCH v2 1/4] tests: Move the old vmstate-static-checker files to tests/data/ Thomas Huth
` (3 more replies)
0 siblings, 4 replies; 13+ messages in thread
From: Thomas Huth @ 2025-05-22 13:37 UTC (permalink / raw)
To: qemu-devel, Fabiano Rosas, Peter Xu
This set of patches adds an automatic test of the vmstate via the
scripts/vmstate-static-checker.py script. For this we need some
reference files from an older version of QEMU. I chose to use QEMU 7.2
for the reference files since this is a long term support release that
is still actively being maintained, so we certainly want to make sure
that we don't break migration from that version to the latest one.
There are also some files available in tests/vmstate-static-checker-data/
which were used in the past to verify the functionality of the checker
script. Move them to tests/data/vmstate-static-checker now and add an
automated test for this task, too.
(I originally mentioned that I could also look into testing automatically
with an older version of QEMU, but I currently lack the time to do so,
so if somebody else wants to have a try that would be very welcome!)
v2:
- Dropped the patch that is already upstream
- Don't remove the old dump files, rather test for the expected
output of the checker script with them
Thomas Huth (4):
tests: Move the old vmstate-static-checker files to tests/data/
tests/data/vmstate-static-checker: Add dump files from QEMU 7.2.17
tests/functional: Test with scripts/vmstate-static-checker.py
tests/functional/test_vmstate: Test whether the checker script works
as expected
MAINTAINERS | 3 +-
.../aarch64/virt-7.2.json | 2571 +++++++++++++
.../vmstate-static-checker}/dump1.json | 0
.../vmstate-static-checker}/dump2.json | 0
.../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 +++++++++++++++++
tests/functional/meson.build | 13 +-
tests/functional/test_vmstate.py | 96 +
10 files changed, 10457 insertions(+), 2 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/test_vmstate.py
--
2.49.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 1/4] tests: Move the old vmstate-static-checker files to tests/data/
2025-05-22 13:37 [PATCH v2 0/4] tests/functional: Test with scripts/vmstate-static-checker.py Thomas Huth
@ 2025-05-22 13:37 ` Thomas Huth
2025-05-22 14:35 ` Peter Xu
2025-05-22 13:37 ` [PATCH v2 2/4] tests/data/vmstate-static-checker: Add dump files from QEMU 7.2.17 Thomas Huth
` (2 subsequent siblings)
3 siblings, 1 reply; 13+ messages in thread
From: Thomas Huth @ 2025-05-22 13:37 UTC (permalink / raw)
To: qemu-devel, Fabiano Rosas, 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.
Signed-off-by: Thomas Huth <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 7060cf49b98..55735de4e4e 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3546,8 +3546,8 @@ F: include/migration/
F: include/qemu/userfaultfd.h
F: migration/
F: scripts/vmstate-static-checker.py
+F: tests/data/vmstate-static-checker/
F: tests/functional/test_migration.py
-F: tests/vmstate-static-checker-data/
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.49.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 2/4] tests/data/vmstate-static-checker: Add dump files from QEMU 7.2.17
2025-05-22 13:37 [PATCH v2 0/4] tests/functional: Test with scripts/vmstate-static-checker.py Thomas Huth
2025-05-22 13:37 ` [PATCH v2 1/4] tests: Move the old vmstate-static-checker files to tests/data/ Thomas Huth
@ 2025-05-22 13:37 ` Thomas Huth
2025-05-22 14:35 ` Peter Xu
2025-05-22 13:37 ` [PATCH v2 3/4] tests/functional: Test with scripts/vmstate-static-checker.py Thomas Huth
2025-05-22 13:37 ` [PATCH v2 4/4] tests/functional/test_vmstate: Test whether the checker script works as expected Thomas Huth
3 siblings, 1 reply; 13+ messages in thread
From: Thomas Huth @ 2025-05-22 13:37 UTC (permalink / raw)
To: qemu-devel, Fabiano Rosas, 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.
Signed-off-by: Thomas Huth <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.49.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 3/4] tests/functional: Test with scripts/vmstate-static-checker.py
2025-05-22 13:37 [PATCH v2 0/4] tests/functional: Test with scripts/vmstate-static-checker.py Thomas Huth
2025-05-22 13:37 ` [PATCH v2 1/4] tests: Move the old vmstate-static-checker files to tests/data/ Thomas Huth
2025-05-22 13:37 ` [PATCH v2 2/4] tests/data/vmstate-static-checker: Add dump files from QEMU 7.2.17 Thomas Huth
@ 2025-05-22 13:37 ` Thomas Huth
2025-05-22 14:38 ` Peter Xu
2025-05-22 13:37 ` [PATCH v2 4/4] tests/functional/test_vmstate: Test whether the checker script works as expected Thomas Huth
3 siblings, 1 reply; 13+ messages in thread
From: Thomas Huth @ 2025-05-22 13:37 UTC (permalink / raw)
To: qemu-devel, Fabiano Rosas, Peter Xu
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, so there are regressions that nobody
notices immediately. Let's run it from a functional test automatically
so that we got at least a basic coverage in each CI run.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
MAINTAINERS | 1 +
tests/functional/meson.build | 13 ++++++-
tests/functional/test_vmstate.py | 59 ++++++++++++++++++++++++++++++++
3 files changed, 72 insertions(+), 1 deletion(-)
create mode 100755 tests/functional/test_vmstate.py
diff --git a/MAINTAINERS b/MAINTAINERS
index 55735de4e4e..e92c60f891d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3548,6 +3548,7 @@ F: migration/
F: scripts/vmstate-static-checker.py
F: tests/data/vmstate-static-checker/
F: tests/functional/test_migration.py
+F: tests/functional/test_vmstate.py
F: tests/qtest/migration/
F: tests/qtest/migration-*
F: docs/devel/migration/
diff --git a/tests/functional/meson.build b/tests/functional/meson.build
index 52b4706cfe8..81fc26ca3d5 100644
--- a/tests/functional/meson.build
+++ b/tests/functional/meson.build
@@ -78,6 +78,7 @@ tests_generic_bsduser = [
tests_aarch64_system_quick = [
'migration',
+ 'vmstate',
]
tests_aarch64_system_thorough = [
@@ -168,6 +169,10 @@ tests_loongarch64_system_thorough = [
'loongarch64_virt',
]
+tests_m68k_system_quick = [
+ 'vmstate',
+]
+
tests_m68k_system_thorough = [
'm68k_mcf5208evb',
'm68k_nextcube',
@@ -234,6 +239,7 @@ tests_ppc_system_thorough = [
tests_ppc64_system_quick = [
'migration',
+ 'vmstate',
]
tests_ppc64_system_thorough = [
@@ -269,6 +275,10 @@ tests_rx_system_thorough = [
'rx_gdbsim',
]
+tests_s390x_system_quick = [
+ 'vmstate',
+]
+
tests_s390x_system_thorough = [
's390x_ccw_virtio',
's390x_replay',
@@ -309,8 +319,9 @@ tests_x86_64_system_quick = [
'migration',
'pc_cpu_hotplug_props',
'virtio_version',
- 'x86_cpu_model_versions',
+ 'vmstate',
'vnc',
+ 'x86_cpu_model_versions',
]
tests_x86_64_system_thorough = [
diff --git a/tests/functional/test_vmstate.py b/tests/functional/test_vmstate.py
new file mode 100755
index 00000000000..cc988987481
--- /dev/null
+++ b/tests/functional/test_vmstate.py
@@ -0,0 +1,59 @@
+#!/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
+
+
+class VmStateTest(QemuSystemTest):
+
+ def run_vmstate_checker(self, src_json, dst_json):
+ checkerscript = self.data_file('..', '..', 'scripts',
+ 'vmstate-static-checker.py')
+ return subprocess.run([checkerscript, '-s', src_json, '-d', dst_json],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ text=True)
+
+ def test_vmstate(self):
+ 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 ' + 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)
+ if cp.returncode != 0:
+ self.fail('Running QEMU failed:\n' + cp.stdout)
+ if cp.stdout:
+ self.log.info('QEMU output: ' + 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 ' + src_json)
+ cp = self.run_vmstate_checker(src_json, dst_json)
+ if cp.returncode != 0:
+ self.fail('Running vmstate-static-checker failed:\n' + cp.stdout)
+ if cp.stdout:
+ self.log.warning('vmstate-static-checker output: ' + cp.stdout)
+
+
+if __name__ == '__main__':
+ QemuSystemTest.main()
--
2.49.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 4/4] tests/functional/test_vmstate: Test whether the checker script works as expected
2025-05-22 13:37 [PATCH v2 0/4] tests/functional: Test with scripts/vmstate-static-checker.py Thomas Huth
` (2 preceding siblings ...)
2025-05-22 13:37 ` [PATCH v2 3/4] tests/functional: Test with scripts/vmstate-static-checker.py Thomas Huth
@ 2025-05-22 13:37 ` Thomas Huth
2025-05-22 14:40 ` Peter Xu
3 siblings, 1 reply; 13+ messages in thread
From: Thomas Huth @ 2025-05-22 13:37 UTC (permalink / raw)
To: qemu-devel, Fabiano Rosas, Peter Xu
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>
---
tests/functional/test_vmstate.py | 37 ++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/tests/functional/test_vmstate.py b/tests/functional/test_vmstate.py
index cc988987481..19a62e8a17e 100755
--- a/tests/functional/test_vmstate.py
+++ b/tests/functional/test_vmstate.py
@@ -9,6 +9,22 @@
from qemu_test import QemuSystemTest
+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 VmStateTest(QemuSystemTest):
def run_vmstate_checker(self, src_json, dst_json):
@@ -19,6 +35,27 @@ def run_vmstate_checker(self, src_json, dst_json):
stderr=subprocess.STDOUT,
text=True)
+ def test_checker(self):
+ """
+ Test whether the checker script correctly detects the changes
+ between dump1.json and dump2.json.
+ """
+ if self.arch != 'x86_64':
+ self.skipTest('for x86 only')
+ src_json = self.data_file('..', 'data', 'vmstate-static-checker',
+ 'dump1.json')
+ dst_json = self.data_file('..', 'data', 'vmstate-static-checker',
+ 'dump2.json')
+ self.log.info(f'Comparing {src_json} with {dst_json}')
+ cp = self.run_vmstate_checker(src_json, dst_json)
+ 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' + cp.stdout)
+ self.log.info('expected output:\n' + expected_output)
+ self.fail('Unexpected vmstate-static-checker output!')
+
def test_vmstate(self):
target_machine = {
'aarch64': 'virt-7.2',
--
2.49.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v2 1/4] tests: Move the old vmstate-static-checker files to tests/data/
2025-05-22 13:37 ` [PATCH v2 1/4] tests: Move the old vmstate-static-checker files to tests/data/ Thomas Huth
@ 2025-05-22 14:35 ` Peter Xu
0 siblings, 0 replies; 13+ messages in thread
From: Peter Xu @ 2025-05-22 14:35 UTC (permalink / raw)
To: Thomas Huth; +Cc: qemu-devel, Fabiano Rosas
On Thu, May 22, 2025 at 03:37:53PM +0200, Thomas Huth wrote:
> From: Thomas Huth <thuth@redhat.com>
>
> All other test data resides in tests/data/, so let's move the dump
> files here, too.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
--
Peter Xu
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 2/4] tests/data/vmstate-static-checker: Add dump files from QEMU 7.2.17
2025-05-22 13:37 ` [PATCH v2 2/4] tests/data/vmstate-static-checker: Add dump files from QEMU 7.2.17 Thomas Huth
@ 2025-05-22 14:35 ` Peter Xu
0 siblings, 0 replies; 13+ messages in thread
From: Peter Xu @ 2025-05-22 14:35 UTC (permalink / raw)
To: Thomas Huth; +Cc: qemu-devel, Fabiano Rosas
On Thu, May 22, 2025 at 03:37:54PM +0200, Thomas Huth wrote:
> 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.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
Acked-by: Peter Xu <peterx@redhat.com>
--
Peter Xu
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 3/4] tests/functional: Test with scripts/vmstate-static-checker.py
2025-05-22 13:37 ` [PATCH v2 3/4] tests/functional: Test with scripts/vmstate-static-checker.py Thomas Huth
@ 2025-05-22 14:38 ` Peter Xu
2025-05-22 18:08 ` Thomas Huth
0 siblings, 1 reply; 13+ messages in thread
From: Peter Xu @ 2025-05-22 14:38 UTC (permalink / raw)
To: Thomas Huth; +Cc: qemu-devel, Fabiano Rosas
On Thu, May 22, 2025 at 03:37:55PM +0200, Thomas Huth wrote:
[...]
> + def test_vmstate(self):
> + 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 ' + 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)
> + if cp.returncode != 0:
> + self.fail('Running QEMU failed:\n' + cp.stdout)
> + if cp.stdout:
> + self.log.info('QEMU output: ' + 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 ' + src_json)
> + cp = self.run_vmstate_checker(src_json, dst_json)
> + if cp.returncode != 0:
> + self.fail('Running vmstate-static-checker failed:\n' + cp.stdout)
Would false positives happen here? Would it fail "make check" and CI, even
if the change was intended?
> + if cp.stdout:
> + self.log.warning('vmstate-static-checker output: ' + cp.stdout)
> +
> +
> +if __name__ == '__main__':
> + QemuSystemTest.main()
> --
> 2.49.0
>
--
Peter Xu
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 4/4] tests/functional/test_vmstate: Test whether the checker script works as expected
2025-05-22 13:37 ` [PATCH v2 4/4] tests/functional/test_vmstate: Test whether the checker script works as expected Thomas Huth
@ 2025-05-22 14:40 ` Peter Xu
2025-05-22 18:12 ` Thomas Huth
0 siblings, 1 reply; 13+ messages in thread
From: Peter Xu @ 2025-05-22 14:40 UTC (permalink / raw)
To: Thomas Huth; +Cc: qemu-devel, Fabiano Rosas
On Thu, May 22, 2025 at 03:37:56PM +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.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> tests/functional/test_vmstate.py | 37 ++++++++++++++++++++++++++++++++
> 1 file changed, 37 insertions(+)
>
> diff --git a/tests/functional/test_vmstate.py b/tests/functional/test_vmstate.py
> index cc988987481..19a62e8a17e 100755
> --- a/tests/functional/test_vmstate.py
> +++ b/tests/functional/test_vmstate.py
> @@ -9,6 +9,22 @@
> from qemu_test import QemuSystemTest
>
>
> +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 VmStateTest(QemuSystemTest):
>
> def run_vmstate_checker(self, src_json, dst_json):
> @@ -19,6 +35,27 @@ def run_vmstate_checker(self, src_json, dst_json):
> stderr=subprocess.STDOUT,
> text=True)
>
> + def test_checker(self):
> + """
> + Test whether the checker script correctly detects the changes
> + between dump1.json and dump2.json.
> + """
> + if self.arch != 'x86_64':
> + self.skipTest('for x86 only')
> + src_json = self.data_file('..', 'data', 'vmstate-static-checker',
> + 'dump1.json')
> + dst_json = self.data_file('..', 'data', 'vmstate-static-checker',
> + 'dump2.json')
> + self.log.info(f'Comparing {src_json} with {dst_json}')
> + cp = self.run_vmstate_checker(src_json, dst_json)
> + 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' + cp.stdout)
> + self.log.info('expected output:\n' + expected_output)
> + self.fail('Unexpected vmstate-static-checker output!')
> +
Would this run for every make check and every CI run?
Since the script almost never change, I wonder whether this test should be
triggered only if manually. But maybe I totally missed how the functional
framework works..
> def test_vmstate(self):
> target_machine = {
> 'aarch64': 'virt-7.2',
> --
> 2.49.0
>
--
Peter Xu
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 3/4] tests/functional: Test with scripts/vmstate-static-checker.py
2025-05-22 14:38 ` Peter Xu
@ 2025-05-22 18:08 ` Thomas Huth
2025-05-26 13:52 ` Peter Xu
0 siblings, 1 reply; 13+ messages in thread
From: Thomas Huth @ 2025-05-22 18:08 UTC (permalink / raw)
To: Peter Xu; +Cc: qemu-devel, Fabiano Rosas
On 22/05/2025 16.38, Peter Xu wrote:
> On Thu, May 22, 2025 at 03:37:55PM +0200, Thomas Huth wrote:
>
> [...]
>
>> + def test_vmstate(self):
>> + 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 ' + 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)
>> + if cp.returncode != 0:
>> + self.fail('Running QEMU failed:\n' + cp.stdout)
>> + if cp.stdout:
>> + self.log.info('QEMU output: ' + 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 ' + src_json)
>> + cp = self.run_vmstate_checker(src_json, dst_json)
>> + if cp.returncode != 0:
>> + self.fail('Running vmstate-static-checker failed:\n' + cp.stdout)
>
> Would false positives happen here? Would it fail "make check" and CI, even
> if the change was intended?
Yes. In that case, the quick fix is to remove the problematic piece from the
7.2 json files. Or we could try to improve the vmstate-static-checker
script. At least we now notice it immediately, not only after a long delay
until someone runs the script manually again.
But yes, this can be confusing for the who runs into this problem for the
first time. I guess I should at least add some friendly words here with
instructions what has to be done?
Thomas
>> + if cp.stdout:
>> + self.log.warning('vmstate-static-checker output: ' + cp.stdout)
>> +
>> +
>> +if __name__ == '__main__':
>> + QemuSystemTest.main()
>> --
>> 2.49.0
>>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 4/4] tests/functional/test_vmstate: Test whether the checker script works as expected
2025-05-22 14:40 ` Peter Xu
@ 2025-05-22 18:12 ` Thomas Huth
2025-05-26 13:47 ` Peter Xu
0 siblings, 1 reply; 13+ messages in thread
From: Thomas Huth @ 2025-05-22 18:12 UTC (permalink / raw)
To: Peter Xu; +Cc: qemu-devel, Fabiano Rosas
On 22/05/2025 16.40, Peter Xu wrote:
> On Thu, May 22, 2025 at 03:37:56PM +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.
>>
>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>> ---
>> tests/functional/test_vmstate.py | 37 ++++++++++++++++++++++++++++++++
>> 1 file changed, 37 insertions(+)
>>
>> diff --git a/tests/functional/test_vmstate.py b/tests/functional/test_vmstate.py
>> index cc988987481..19a62e8a17e 100755
>> --- a/tests/functional/test_vmstate.py
>> +++ b/tests/functional/test_vmstate.py
>> @@ -9,6 +9,22 @@
>> from qemu_test import QemuSystemTest
>>
>>
>> +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 VmStateTest(QemuSystemTest):
>>
>> def run_vmstate_checker(self, src_json, dst_json):
>> @@ -19,6 +35,27 @@ def run_vmstate_checker(self, src_json, dst_json):
>> stderr=subprocess.STDOUT,
>> text=True)
>>
>> + def test_checker(self):
>> + """
>> + Test whether the checker script correctly detects the changes
>> + between dump1.json and dump2.json.
>> + """
>> + if self.arch != 'x86_64':
>> + self.skipTest('for x86 only')
>> + src_json = self.data_file('..', 'data', 'vmstate-static-checker',
>> + 'dump1.json')
>> + dst_json = self.data_file('..', 'data', 'vmstate-static-checker',
>> + 'dump2.json')
>> + self.log.info(f'Comparing {src_json} with {dst_json}')
>> + cp = self.run_vmstate_checker(src_json, dst_json)
>> + 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' + cp.stdout)
>> + self.log.info('expected output:\n' + expected_output)
>> + self.fail('Unexpected vmstate-static-checker output!')
>> +
>
> Would this run for every make check and every CI run?
Yes.
> Since the script almost never change, I wonder whether this test should be
> triggered only if manually.
We could disable it by default with a @skip... decorator, but I think it's
not really worth the effort: The runtime of test_checker() is about 100 ms,
that's really nothing compared to the hunders of seconds that some other
tests take.
Thomas
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 4/4] tests/functional/test_vmstate: Test whether the checker script works as expected
2025-05-22 18:12 ` Thomas Huth
@ 2025-05-26 13:47 ` Peter Xu
0 siblings, 0 replies; 13+ messages in thread
From: Peter Xu @ 2025-05-26 13:47 UTC (permalink / raw)
To: Thomas Huth; +Cc: qemu-devel, Fabiano Rosas
On Thu, May 22, 2025 at 08:12:49PM +0200, Thomas Huth wrote:
> On 22/05/2025 16.40, Peter Xu wrote:
> > On Thu, May 22, 2025 at 03:37:56PM +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.
> > >
> > > Signed-off-by: Thomas Huth <thuth@redhat.com>
> > > ---
> > > tests/functional/test_vmstate.py | 37 ++++++++++++++++++++++++++++++++
> > > 1 file changed, 37 insertions(+)
> > >
> > > diff --git a/tests/functional/test_vmstate.py b/tests/functional/test_vmstate.py
> > > index cc988987481..19a62e8a17e 100755
> > > --- a/tests/functional/test_vmstate.py
> > > +++ b/tests/functional/test_vmstate.py
> > > @@ -9,6 +9,22 @@
> > > from qemu_test import QemuSystemTest
> > > +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 VmStateTest(QemuSystemTest):
> > > def run_vmstate_checker(self, src_json, dst_json):
> > > @@ -19,6 +35,27 @@ def run_vmstate_checker(self, src_json, dst_json):
> > > stderr=subprocess.STDOUT,
> > > text=True)
> > > + def test_checker(self):
> > > + """
> > > + Test whether the checker script correctly detects the changes
> > > + between dump1.json and dump2.json.
> > > + """
> > > + if self.arch != 'x86_64':
> > > + self.skipTest('for x86 only')
> > > + src_json = self.data_file('..', 'data', 'vmstate-static-checker',
> > > + 'dump1.json')
> > > + dst_json = self.data_file('..', 'data', 'vmstate-static-checker',
> > > + 'dump2.json')
> > > + self.log.info(f'Comparing {src_json} with {dst_json}')
> > > + cp = self.run_vmstate_checker(src_json, dst_json)
> > > + 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' + cp.stdout)
> > > + self.log.info('expected output:\n' + expected_output)
> > > + self.fail('Unexpected vmstate-static-checker output!')
> > > +
> >
> > Would this run for every make check and every CI run?
>
> Yes.
>
> > Since the script almost never change, I wonder whether this test should be
> > triggered only if manually.
>
> We could disable it by default with a @skip... decorator, but I think it's
> not really worth the effort: The runtime of test_checker() is about 100 ms,
> that's really nothing compared to the hunders of seconds that some other
> tests take.
Right, not a concern of time used but only CPU burns.
Meanwhile, this is not part of the QEMU function that the repo delivers,
but the infra to test QEMU, hence here we're always running this check
script for everyone testing yet another almost not-changing (and may not be
helpful, not anymore?) script to test QEMU..
I think we should save the cycles, but no strong opinions.
Thanks,
--
Peter Xu
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 3/4] tests/functional: Test with scripts/vmstate-static-checker.py
2025-05-22 18:08 ` Thomas Huth
@ 2025-05-26 13:52 ` Peter Xu
0 siblings, 0 replies; 13+ messages in thread
From: Peter Xu @ 2025-05-26 13:52 UTC (permalink / raw)
To: Thomas Huth; +Cc: qemu-devel, Fabiano Rosas
On Thu, May 22, 2025 at 08:08:44PM +0200, Thomas Huth wrote:
> On 22/05/2025 16.38, Peter Xu wrote:
> > On Thu, May 22, 2025 at 03:37:55PM +0200, Thomas Huth wrote:
> >
> > [...]
> >
> > > + def test_vmstate(self):
> > > + 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 ' + 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)
> > > + if cp.returncode != 0:
> > > + self.fail('Running QEMU failed:\n' + cp.stdout)
> > > + if cp.stdout:
> > > + self.log.info('QEMU output: ' + 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 ' + src_json)
> > > + cp = self.run_vmstate_checker(src_json, dst_json)
> > > + if cp.returncode != 0:
> > > + self.fail('Running vmstate-static-checker failed:\n' + cp.stdout)
> >
> > Would false positives happen here? Would it fail "make check" and CI, even
> > if the change was intended?
>
> Yes. In that case, the quick fix is to remove the problematic piece from the
> 7.2 json files. Or we could try to improve the vmstate-static-checker
> script. At least we now notice it immediately, not only after a long delay
> until someone runs the script manually again.
Yes, the thing is I worry it'll almost always be false positives (from
statistical POV.. unfortunately). Then in that case it's actually better
to be found later because otherwise it means we're adding overhead to every
developer who might cause the false positive and each of them doing this
work with no real gain.. :(
>
> But yes, this can be confusing for the who runs into this problem for the
> first time. I guess I should at least add some friendly words here with
> instructions what has to be done?
Some instructions would be helpful for sure. Though do we have easy way to
whitelist any false positives? As this test compares the dumps so there's
no diff to fix or work around.
--
Peter Xu
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2025-05-26 13:52 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-22 13:37 [PATCH v2 0/4] tests/functional: Test with scripts/vmstate-static-checker.py Thomas Huth
2025-05-22 13:37 ` [PATCH v2 1/4] tests: Move the old vmstate-static-checker files to tests/data/ Thomas Huth
2025-05-22 14:35 ` Peter Xu
2025-05-22 13:37 ` [PATCH v2 2/4] tests/data/vmstate-static-checker: Add dump files from QEMU 7.2.17 Thomas Huth
2025-05-22 14:35 ` Peter Xu
2025-05-22 13:37 ` [PATCH v2 3/4] tests/functional: Test with scripts/vmstate-static-checker.py Thomas Huth
2025-05-22 14:38 ` Peter Xu
2025-05-22 18:08 ` Thomas Huth
2025-05-26 13:52 ` Peter Xu
2025-05-22 13:37 ` [PATCH v2 4/4] tests/functional/test_vmstate: Test whether the checker script works as expected Thomas Huth
2025-05-22 14:40 ` Peter Xu
2025-05-22 18:12 ` Thomas Huth
2025-05-26 13:47 ` Peter Xu
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).