summaryrefslogtreecommitdiffstats
path: root/hw/i386/pc.c
diff options
context:
space:
mode:
authorPeter Maydell2019-01-07 16:32:24 +0100
committerPeter Maydell2019-01-07 16:32:24 +0100
commit31ed41889e6e13699871040fe089a2884dca46cb (patch)
treec045cb2dfafade1ee80ae448f2ebaaf2a90d6cc8 /hw/i386/pc.c
parentMerge remote-tracking branch 'remotes/ericb/tags/pull-nbd-2019-01-05' into st... (diff)
parenthostmem: use object id for memory region name with >= 4.0 (diff)
downloadqemu-31ed41889e6e13699871040fe089a2884dca46cb.tar.gz
qemu-31ed41889e6e13699871040fe089a2884dca46cb.tar.xz
qemu-31ed41889e6e13699871040fe089a2884dca46cb.zip
Merge remote-tracking branch 'remotes/elmarco/tags/machine-props-pull-request' into staging
Generalize machine compatibility properties During "[PATCH v2 05/10] qom/globals: generalize object_property_set_globals()" review, Eduardo suggested to rework the GlobalProperty handling, so that -global is limited to QDev only and we avoid mixing the machine compats and the user-provided -global properties (instead of generalizing -global to various object kinds, like I proposed in v2). "qdev: do not mix compat props with global props" patch decouples a bit user-provided -global from machine compat properties. This allows to get rid of "user_provided" and "errp" fields in following patches. A new compat property "x-use-canonical-path-for-ramblock-id" is added to hostmem for legacy canonical path names, set to true for -file and -memfd with qemu < 4.0. (this series was initially titled "[PATCH v2 00/10] hostmem: use object "id" for memory region name with >= 3.1", but its focus is more in refactoring the global and compatilibity properties handling now) # gpg: Signature made Mon 07 Jan 2019 12:22:43 GMT # gpg: using RSA key DAE8E10975969CE5 # gpg: Good signature from "Marc-André Lureau <marcandre.lureau@redhat.com>" # gpg: aka "Marc-André Lureau <marcandre.lureau@gmail.com>" # Primary key fingerprint: 87A9 BD93 3F87 C606 D276 F62D DAE8 E109 7596 9CE5 * remotes/elmarco/tags/machine-props-pull-request: (28 commits) hostmem: use object id for memory region name with >= 4.0 arm: replace instance_post_init() qdev-props: call object_apply_global_props() qdev-props: remove errp from GlobalProperty qdev-props: convert global_props to GPtrArray qdev: all globals are now user-provided qdev: make a separate helper function to apply compat properties compat: remove remaining PC_COMPAT macros include: remove compat.h compat: replace PC_COMPAT_2_1 & HW_COMPAT_2_1 macros compat: replace PC_COMPAT_2_2 & HW_COMPAT_2_2 macros compat: replace PC_COMPAT_2_3 & HW_COMPAT_2_3 macros compat: replace PC_COMPAT_2_4 & HW_COMPAT_2_4 macros compat: replace PC_COMPAT_2_5 & HW_COMPAT_2_5 macros compat: replace PC_COMPAT_2_6 & HW_COMPAT_2_6 macros compat: replace PC_COMPAT_2_7 & HW_COMPAT_2_7 macros compat: replace PC_COMPAT_2_8 & HW_COMPAT_2_8 macros compat: replace PC_COMPAT_2_9 & HW_COMPAT_2_9 macros compat: replace PC_COMPAT_2_10 & HW_COMPAT_2_10 macros compat: replace PC_COMPAT_2_11 & HW_COMPAT_2_11 macros ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/i386/pc.c')
-rw-r--r--hw/i386/pc.c674
1 files changed, 674 insertions, 0 deletions
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index f248662e97..4952feb476 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -72,6 +72,7 @@
#include "qapi/visitor.h"
#include "qom/cpu.h"
#include "hw/nmi.h"
+#include "hw/usb.h"
#include "hw/i386/intel_iommu.h"
#include "hw/net/ne2000-isa.h"
@@ -109,6 +110,679 @@ static struct e820_entry *e820_table;
static unsigned e820_entries;
struct hpet_fw_config hpet_cfg = {.count = UINT8_MAX};
+GlobalProperty pc_compat_3_1[] = {
+ {
+ .driver = "intel-iommu",
+ .property = "dma-drain",
+ .value = "off",
+ },
+};
+const size_t pc_compat_3_1_len = G_N_ELEMENTS(pc_compat_3_1);
+
+GlobalProperty pc_compat_3_0[] = {
+ {
+ .driver = TYPE_X86_CPU,
+ .property = "x-hv-synic-kvm-only",
+ .value = "on",
+ },{
+ .driver = "Skylake-Server" "-" TYPE_X86_CPU,
+ .property = "pku",
+ .value = "off",
+ },{
+ .driver = "Skylake-Server-IBRS" "-" TYPE_X86_CPU,
+ .property = "pku",
+ .value = "off",
+ },
+};
+const size_t pc_compat_3_0_len = G_N_ELEMENTS(pc_compat_3_0);
+
+GlobalProperty pc_compat_2_12[] = {
+ {
+ .driver = TYPE_X86_CPU,
+ .property = "legacy-cache",
+ .value = "on",
+ },{
+ .driver = TYPE_X86_CPU,
+ .property = "topoext",
+ .value = "off",
+ },{
+ .driver = "EPYC-" TYPE_X86_CPU,
+ .property = "xlevel",
+ .value = stringify(0x8000000a),
+ },{
+ .driver = "EPYC-IBPB-" TYPE_X86_CPU,
+ .property = "xlevel",
+ .value = stringify(0x8000000a),
+ },
+};
+const size_t pc_compat_2_12_len = G_N_ELEMENTS(pc_compat_2_12);
+
+GlobalProperty pc_compat_2_11[] = {
+ {
+ .driver = TYPE_X86_CPU,
+ .property = "x-migrate-smi-count",
+ .value = "off",
+ },{
+ .driver = "Skylake-Server" "-" TYPE_X86_CPU,
+ .property = "clflushopt",
+ .value = "off",
+ },
+};
+const size_t pc_compat_2_11_len = G_N_ELEMENTS(pc_compat_2_11);
+
+GlobalProperty pc_compat_2_10[] = {
+ {
+ .driver = TYPE_X86_CPU,
+ .property = "x-hv-max-vps",
+ .value = "0x40",
+ },{
+ .driver = "i440FX-pcihost",
+ .property = "x-pci-hole64-fix",
+ .value = "off",
+ },{
+ .driver = "q35-pcihost",
+ .property = "x-pci-hole64-fix",
+ .value = "off",
+ },
+};
+const size_t pc_compat_2_10_len = G_N_ELEMENTS(pc_compat_2_10);
+
+GlobalProperty pc_compat_2_9[] = {
+ {
+ .driver = "mch",
+ .property = "extended-tseg-mbytes",
+ .value = stringify(0),
+ },
+};
+const size_t pc_compat_2_9_len = G_N_ELEMENTS(pc_compat_2_9);
+
+GlobalProperty pc_compat_2_8[] = {
+ {
+ .driver = TYPE_X86_CPU,
+ .property = "tcg-cpuid",
+ .value = "off",
+ },
+ {
+ .driver = "kvmclock",
+ .property = "x-mach-use-reliable-get-clock",
+ .value = "off",
+ },
+ {
+ .driver = "ICH9-LPC",
+ .property = "x-smi-broadcast",
+ .value = "off",
+ },
+ {
+ .driver = TYPE_X86_CPU,
+ .property = "vmware-cpuid-freq",
+ .value = "off",
+ },
+ {
+ .driver = "Haswell-" TYPE_X86_CPU,
+ .property = "stepping",
+ .value = "1",
+ },
+};
+const size_t pc_compat_2_8_len = G_N_ELEMENTS(pc_compat_2_8);
+
+GlobalProperty pc_compat_2_7[] = {
+ {
+ .driver = TYPE_X86_CPU,
+ .property = "l3-cache",
+ .value = "off",
+ },
+ {
+ .driver = TYPE_X86_CPU,
+ .property = "full-cpuid-auto-level",
+ .value = "off",
+ },
+ {
+ .driver = "Opteron_G3" "-" TYPE_X86_CPU,
+ .property = "family",
+ .value = "15",
+ },
+ {
+ .driver = "Opteron_G3" "-" TYPE_X86_CPU,
+ .property = "model",
+ .value = "6",
+ },
+ {
+ .driver = "Opteron_G3" "-" TYPE_X86_CPU,
+ .property = "stepping",
+ .value = "1",
+ },
+ {
+ .driver = "isa-pcspk",
+ .property = "migrate",
+ .value = "off",
+ },
+};
+const size_t pc_compat_2_7_len = G_N_ELEMENTS(pc_compat_2_7);
+
+GlobalProperty pc_compat_2_6[] = {
+ {
+ .driver = TYPE_X86_CPU,
+ .property = "cpuid-0xb",
+ .value = "off",
+ },{
+ .driver = "vmxnet3",
+ .property = "romfile",
+ .value = "",
+ },
+ {
+ .driver = TYPE_X86_CPU,
+ .property = "fill-mtrr-mask",
+ .value = "off",
+ },
+ {
+ .driver = "apic-common",
+ .property = "legacy-instance-id",
+ .value = "on",
+ }
+};
+const size_t pc_compat_2_6_len = G_N_ELEMENTS(pc_compat_2_6);
+
+GlobalProperty pc_compat_2_5[] = {};
+const size_t pc_compat_2_5_len = G_N_ELEMENTS(pc_compat_2_5);
+
+GlobalProperty pc_compat_2_4[] = {
+ PC_CPU_MODEL_IDS("2.4.0")
+ {
+ .driver = "Haswell-" TYPE_X86_CPU,
+ .property = "abm",
+ .value = "off",
+ },
+ {
+ .driver = "Haswell-noTSX-" TYPE_X86_CPU,
+ .property = "abm",
+ .value = "off",
+ },
+ {
+ .driver = "Broadwell-" TYPE_X86_CPU,
+ .property = "abm",
+ .value = "off",
+ },
+ {
+ .driver = "Broadwell-noTSX-" TYPE_X86_CPU,
+ .property = "abm",
+ .value = "off",
+ },
+ {
+ .driver = "host" "-" TYPE_X86_CPU,
+ .property = "host-cache-info",
+ .value = "on",
+ },
+ {
+ .driver = TYPE_X86_CPU,
+ .property = "check",
+ .value = "off",
+ },
+ {
+ .driver = "qemu64" "-" TYPE_X86_CPU,
+ .property = "sse4a",
+ .value = "on",
+ },
+ {
+ .driver = "qemu64" "-" TYPE_X86_CPU,
+ .property = "abm",
+ .value = "on",
+ },
+ {
+ .driver = "qemu64" "-" TYPE_X86_CPU,
+ .property = "popcnt",
+ .value = "on",
+ },
+ {
+ .driver = "qemu32" "-" TYPE_X86_CPU,
+ .property = "popcnt",
+ .value = "on",
+ },{
+ .driver = "Opteron_G2" "-" TYPE_X86_CPU,
+ .property = "rdtscp",
+ .value = "on",
+ },{
+ .driver = "Opteron_G3" "-" TYPE_X86_CPU,
+ .property = "rdtscp",
+ .value = "on",
+ },{
+ .driver = "Opteron_G4" "-" TYPE_X86_CPU,
+ .property = "rdtscp",
+ .value = "on",
+ },{
+ .driver = "Opteron_G5" "-" TYPE_X86_CPU,
+ .property = "rdtscp",
+ .value = "on",
+ }
+};
+const size_t pc_compat_2_4_len = G_N_ELEMENTS(pc_compat_2_4);
+
+GlobalProperty pc_compat_2_3[] = {
+ PC_CPU_MODEL_IDS("2.3.0")
+ {
+ .driver = TYPE_X86_CPU,
+ .property = "arat",
+ .value = "off",
+ },{
+ .driver = "qemu64" "-" TYPE_X86_CPU,
+ .property = "min-level",
+ .value = stringify(4),
+ },{
+ .driver = "kvm64" "-" TYPE_X86_CPU,
+ .property = "min-level",
+ .value = stringify(5),
+ },{
+ .driver = "pentium3" "-" TYPE_X86_CPU,
+ .property = "min-level",
+ .value = stringify(2),
+ },{
+ .driver = "n270" "-" TYPE_X86_CPU,
+ .property = "min-level",
+ .value = stringify(5),
+ },{
+ .driver = "Conroe" "-" TYPE_X86_CPU,
+ .property = "min-level",
+ .value = stringify(4),
+ },{
+ .driver = "Penryn" "-" TYPE_X86_CPU,
+ .property = "min-level",
+ .value = stringify(4),
+ },{
+ .driver = "Nehalem" "-" TYPE_X86_CPU,
+ .property = "min-level",
+ .value = stringify(4),
+ },{
+ .driver = "n270" "-" TYPE_X86_CPU,
+ .property = "min-xlevel",
+ .value = stringify(0x8000000a),
+ },{
+ .driver = "Penryn" "-" TYPE_X86_CPU,
+ .property = "min-xlevel",
+ .value = stringify(0x8000000a),
+ },{
+ .driver = "Conroe" "-" TYPE_X86_CPU,
+ .property = "min-xlevel",
+ .value = stringify(0x8000000a),
+ },{
+ .driver = "Nehalem" "-" TYPE_X86_CPU,
+ .property = "min-xlevel",
+ .value = stringify(0x8000000a),
+ },{
+ .driver = "Westmere" "-" TYPE_X86_CPU,
+ .property = "min-xlevel",
+ .value = stringify(0x8000000a),
+ },{
+ .driver = "SandyBridge" "-" TYPE_X86_CPU,
+ .property = "min-xlevel",
+ .value = stringify(0x8000000a),
+ },{
+ .driver = "IvyBridge" "-" TYPE_X86_CPU,
+ .property = "min-xlevel",
+ .value = stringify(0x8000000a),
+ },{
+ .driver = "Haswell" "-" TYPE_X86_CPU,
+ .property = "min-xlevel",
+ .value = stringify(0x8000000a),
+ },{
+ .driver = "Haswell-noTSX" "-" TYPE_X86_CPU,
+ .property = "min-xlevel",
+ .value = stringify(0x8000000a),
+ },{
+ .driver = "Broadwell" "-" TYPE_X86_CPU,
+ .property = "min-xlevel",
+ .value = stringify(0x8000000a),
+ },{
+ .driver = "Broadwell-noTSX" "-" TYPE_X86_CPU,
+ .property = "min-xlevel",
+ .value = stringify(0x8000000a),
+ },{
+ .driver = TYPE_X86_CPU,
+ .property = "kvm-no-smi-migration",
+ .value = "on",
+ },
+};
+const size_t pc_compat_2_3_len = G_N_ELEMENTS(pc_compat_2_3);
+
+GlobalProperty pc_compat_2_2[] = {
+ PC_CPU_MODEL_IDS("2.2.0")
+ {
+ .driver = "kvm64" "-" TYPE_X86_CPU,
+ .property = "vme",
+ .value = "off",
+ },
+ {
+ .driver = "kvm32" "-" TYPE_X86_CPU,
+ .property = "vme",
+ .value = "off",
+ },
+ {
+ .driver = "Conroe" "-" TYPE_X86_CPU,
+ .property = "vme",
+ .value = "off",
+ },
+ {
+ .driver = "Penryn" "-" TYPE_X86_CPU,
+ .property = "vme",
+ .value = "off",
+ },
+ {
+ .driver = "Nehalem" "-" TYPE_X86_CPU,
+ .property = "vme",
+ .value = "off",
+ },
+ {
+ .driver = "Westmere" "-" TYPE_X86_CPU,
+ .property = "vme",
+ .value = "off",
+ },
+ {
+ .driver = "SandyBridge" "-" TYPE_X86_CPU,
+ .property = "vme",
+ .value = "off",
+ },
+ {
+ .driver = "Haswell" "-" TYPE_X86_CPU,
+ .property = "vme",
+ .value = "off",
+ },
+ {
+ .driver = "Broadwell" "-" TYPE_X86_CPU,
+ .property = "vme",
+ .value = "off",
+ },
+ {
+ .driver = "Opteron_G1" "-" TYPE_X86_CPU,
+ .property = "vme",
+ .value = "off",
+ },
+ {
+ .driver = "Opteron_G2" "-" TYPE_X86_CPU,
+ .property = "vme",
+ .value = "off",
+ },
+ {
+ .driver = "Opteron_G3" "-" TYPE_X86_CPU,
+ .property = "vme",
+ .value = "off",
+ },
+ {
+ .driver = "Opteron_G4" "-" TYPE_X86_CPU,
+ .property = "vme",
+ .value = "off",
+ },
+ {
+ .driver = "Opteron_G5" "-" TYPE_X86_CPU,
+ .property = "vme",
+ .value = "off",
+ },
+ {
+ .driver = "Haswell" "-" TYPE_X86_CPU,
+ .property = "f16c",
+ .value = "off",
+ },
+ {
+ .driver = "Haswell" "-" TYPE_X86_CPU,
+ .property = "rdrand",
+ .value = "off",
+ },
+ {
+ .driver = "Broadwell" "-" TYPE_X86_CPU,
+ .property = "f16c",
+ .value = "off",
+ },
+ {
+ .driver = "Broadwell" "-" TYPE_X86_CPU,
+ .property = "rdrand",
+ .value = "off",
+ },
+};
+const size_t pc_compat_2_2_len = G_N_ELEMENTS(pc_compat_2_2);
+
+GlobalProperty pc_compat_2_1[] = {
+ PC_CPU_MODEL_IDS("2.1.0")
+ {
+ .driver = "coreduo" "-" TYPE_X86_CPU,
+ .property = "vmx",
+ .value = "on",
+ },
+ {
+ .driver = "core2duo" "-" TYPE_X86_CPU,
+ .property = "vmx",
+ .value = "on",
+ },
+};
+const size_t pc_compat_2_1_len = G_N_ELEMENTS(pc_compat_2_1);
+
+GlobalProperty pc_compat_2_0[] = {
+ PC_CPU_MODEL_IDS("2.0.0")
+ {
+ .driver = "virtio-scsi-pci",
+ .property = "any_layout",
+ .value = "off",
+ },{
+ .driver = "PIIX4_PM",
+ .property = "memory-hotplug-support",
+ .value = "off",
+ },
+ {
+ .driver = "apic",
+ .property = "version",
+ .value = stringify(0x11),
+ },
+ {
+ .driver = "nec-usb-xhci",
+ .property = "superspeed-ports-first",
+ .value = "off",
+ },
+ {
+ .driver = "nec-usb-xhci",
+ .property = "force-pcie-endcap",
+ .value = "on",
+ },
+ {
+ .driver = "pci-serial",
+ .property = "prog_if",
+ .value = stringify(0),
+ },
+ {
+ .driver = "pci-serial-2x",
+ .property = "prog_if",
+ .value = stringify(0),
+ },
+ {
+ .driver = "pci-serial-4x",
+ .property = "prog_if",
+ .value = stringify(0),
+ },
+ {
+ .driver = "virtio-net-pci",
+ .property = "guest_announce",
+ .value = "off",
+ },
+ {
+ .driver = "ICH9-LPC",
+ .property = "memory-hotplug-support",
+ .value = "off",
+ },{
+ .driver = "xio3130-downstream",
+ .property = COMPAT_PROP_PCP,
+ .value = "off",
+ },{
+ .driver = "ioh3420",
+ .property = COMPAT_PROP_PCP,
+ .value = "off",
+ },
+};
+const size_t pc_compat_2_0_len = G_N_ELEMENTS(pc_compat_2_0);
+
+GlobalProperty pc_compat_1_7[] = {
+ PC_CPU_MODEL_IDS("1.7.0")
+ {
+ .driver = TYPE_USB_DEVICE,
+ .property = "msos-desc",
+ .value = "no",
+ },
+ {
+ .driver = "PIIX4_PM",
+ .property = "acpi-pci-hotplug-with-bridge-support",
+ .value = "off",
+ },
+ {
+ .driver = "hpet",
+ .property = HPET_INTCAP,
+ .value = stringify(4),
+ },
+};
+const size_t pc_compat_1_7_len = G_N_ELEMENTS(pc_compat_1_7);
+
+GlobalProperty pc_compat_1_6[] = {
+ PC_CPU_MODEL_IDS("1.6.0")
+ {
+ .driver = "e1000",
+ .property = "mitigation",
+ .value = "off",
+ },{
+ .driver = "qemu64-" TYPE_X86_CPU,
+ .property = "model",
+ .value = stringify(2),
+ },{
+ .driver = "qemu32-" TYPE_X86_CPU,
+ .property = "model",
+ .value = stringify(3),
+ },{
+ .driver = "i440FX-pcihost",
+ .property = "short_root_bus",
+ .value = stringify(1),
+ },{
+ .driver = "q35-pcihost",
+ .property = "short_root_bus",
+ .value = stringify(1),
+ },
+};
+const size_t pc_compat_1_6_len = G_N_ELEMENTS(pc_compat_1_6);
+
+GlobalProperty pc_compat_1_5[] = {
+ PC_CPU_MODEL_IDS("1.5.0")
+ {
+ .driver = "Conroe-" TYPE_X86_CPU,
+ .property = "model",
+ .value = stringify(2),
+ },{
+ .driver = "Conroe-" TYPE_X86_CPU,
+ .property = "min-level",
+ .value = stringify(2),
+ },{
+ .driver = "Penryn-" TYPE_X86_CPU,
+ .property = "model",
+ .value = stringify(2),
+ },{
+ .driver = "Penryn-" TYPE_X86_CPU,
+ .property = "min-level",
+ .value = stringify(2),
+ },{
+ .driver = "Nehalem-" TYPE_X86_CPU,
+ .property = "model",
+ .value = stringify(2),
+ },{
+ .driver = "Nehalem-" TYPE_X86_CPU,
+ .property = "min-level",
+ .value = stringify(2),
+ },{
+ .driver = "virtio-net-pci",
+ .property = "any_layout",
+ .value = "off",
+ },{
+ .driver = TYPE_X86_CPU,
+ .property = "pmu",
+ .value = "on",
+ },{
+ .driver = "i440FX-pcihost",
+ .property = "short_root_bus",
+ .value = stringify(0),
+ },{
+ .driver = "q35-pcihost",
+ .property = "short_root_bus",
+ .value = stringify(0),
+ },
+};
+const size_t pc_compat_1_5_len = G_N_ELEMENTS(pc_compat_1_5);
+
+GlobalProperty pc_compat_1_4[] = {
+ PC_CPU_MODEL_IDS("1.4.0")
+ {
+ .driver = "scsi-hd",
+ .property = "discard_granularity",
+ .value = stringify(0),
+ },{
+ .driver = "scsi-cd",
+ .property = "discard_granularity",
+ .value = stringify(0),
+ },{
+ .driver = "scsi-disk",
+ .property = "discard_granularity",
+ .value = stringify(0),
+ },{
+ .driver = "ide-hd",
+ .property = "discard_granularity",
+ .value = stringify(0),
+ },{
+ .driver = "ide-cd",
+ .property = "discard_granularity",
+ .value = stringify(0),
+ },{
+ .driver = "ide-drive",
+ .property = "discard_granularity",
+ .value = stringify(0),
+ },{
+ .driver = "virtio-blk-pci",
+ .property = "discard_granularity",
+ .value = stringify(0),
+ },{
+ .driver = "virtio-serial-pci",
+ .property = "vectors",
+ /* DEV_NVECTORS_UNSPECIFIED as a uint32_t string */
+ .value = stringify(0xFFFFFFFF),
+ },{
+ .driver = "virtio-net-pci",
+ .property = "ctrl_guest_offloads",
+ .value = "off",
+ },{
+ .driver = "e1000",
+ .property = "romfile",
+ .value = "pxe-e1000.rom",
+ },{
+ .driver = "ne2k_pci",
+ .property = "romfile",
+ .value = "pxe-ne2k_pci.rom",
+ },{
+ .driver = "pcnet",
+ .property = "romfile",
+ .value = "pxe-pcnet.rom",
+ },{
+ .driver = "rtl8139",
+ .property = "romfile",
+ .value = "pxe-rtl8139.rom",
+ },{
+ .driver = "virtio-net-pci",
+ .property = "romfile",
+ .value = "pxe-virtio.rom",
+ },{
+ .driver = "486-" TYPE_X86_CPU,
+ .property = "model",
+ .value = stringify(0),
+ },
+ {
+ .driver = "n270" "-" TYPE_X86_CPU,
+ .property = "movbe",
+ .value = "off",
+ },
+ {
+ .driver = "Westmere" "-" TYPE_X86_CPU,
+ .property = "pclmulqdq",
+ .value = "off",
+ },
+};
+const size_t pc_compat_1_4_len = G_N_ELEMENTS(pc_compat_1_4);
+
void gsi_handler(void *opaque, int n, int level)
{
GSIState *s = opaque;