diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 475febc393..92f42dc759 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -309,6 +309,8 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, "virtio-tablet", /* 205 */ "virtio-input-host", "chardev-file-append", + "ich9-disable-s3", + "ich9-disable-s4", ); @@ -1650,6 +1652,11 @@ static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioGpu[] = { { "virgl", QEMU_CAPS_DEVICE_VIRTIO_GPU_VIRGL }, }; +static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsICH9[] = { + { "disable_s3", QEMU_CAPS_ICH9_DISABLE_S3 }, + { "disable_s4", QEMU_CAPS_ICH9_DISABLE_S4 }, +}; + struct virQEMUCapsObjectTypeProps { const char *type; struct virQEMUCapsStringFlags *props; @@ -1705,6 +1712,8 @@ static struct virQEMUCapsObjectTypeProps virQEMUCapsObjectProps[] = { ARRAY_CARDINALITY(virQEMUCapsObjectPropsQxlVga) }, { "virtio-gpu-pci", virQEMUCapsObjectPropsVirtioGpu, ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioGpu) }, + { "ICH9-LPC", virQEMUCapsObjectPropsICH9, + ARRAY_CARDINALITY(virQEMUCapsObjectPropsICH9) }, }; diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 99879d8b9d..336031dd08 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -336,6 +336,8 @@ typedef enum { QEMU_CAPS_VIRTIO_TABLET, /* -device virtio-tablet-{device,pci} */ QEMU_CAPS_VIRTIO_INPUT_HOST, /* -device virtio-input-host-{device,pci} */ QEMU_CAPS_CHARDEV_FILE_APPEND, /* -chardev file,append=on|off */ + QEMU_CAPS_ICH9_DISABLE_S3, /* -M q35 S3 BIOS Advertisement on/off */ + QEMU_CAPS_ICH9_DISABLE_S4, /* -M q35 S4 BIOS Advertisement on/off */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_1.2.2-1.replies b/tests/qemucapabilitiesdata/caps_1.2.2-1.replies index e7de77bc97..e6cf089a05 100644 --- a/tests/qemucapabilitiesdata/caps_1.2.2-1.replies +++ b/tests/qemucapabilitiesdata/caps_1.2.2-1.replies @@ -1605,6 +1605,15 @@ } } +{ + "id": "libvirt-32", + "error": { + "class": "DeviceNotFound", + "desc": "Device 'ICH9-LPC' not found" + } +} + + { "return": [ { @@ -1649,7 +1658,7 @@ "name": "none" } ], - "id": "libvirt-32" + "id": "libvirt-33" } { @@ -1721,7 +1730,7 @@ "name": "Opteron_G4" } ], - "id": "libvirt-33" + "id": "libvirt-34" } { @@ -1729,11 +1738,11 @@ "enabled": false, "present": true }, - "id": "libvirt-34" + "id": "libvirt-35" } { - "id": "libvirt-35", + "id": "libvirt-36", "error": { "class": "CommandNotFound", "desc": "The command query-tpm-models has not been found" @@ -1741,7 +1750,7 @@ } { - "id": "libvirt-36", + "id": "libvirt-37", "error": { "class": "CommandNotFound", "desc": "The command query-tpm-types has not been found" @@ -1749,7 +1758,7 @@ } { - "id": "libvirt-37", + "id": "libvirt-38", "error": { "class": "CommandNotFound", "desc": "The command query-command-line-options has not been found" @@ -1763,5 +1772,5 @@ "state": false } ], - "id": "libvirt-38" + "id": "libvirt-39" } diff --git a/tests/qemucapabilitiesdata/caps_1.3.1-1.replies b/tests/qemucapabilitiesdata/caps_1.3.1-1.replies index bf9cbadf69..cd48ead4a7 100644 --- a/tests/qemucapabilitiesdata/caps_1.3.1-1.replies +++ b/tests/qemucapabilitiesdata/caps_1.3.1-1.replies @@ -1784,6 +1784,14 @@ } } +{ + "id": "libvirt-33", + "error": { + "class": "DeviceNotFound", + "desc": "Device 'ICH9-LPC' not found" + } +} + { "return": [ { @@ -1835,7 +1843,7 @@ "name": "none" } ], - "id": "libvirt-33" + "id": "libvirt-34" } { @@ -1913,7 +1921,7 @@ "name": "Opteron_G5" } ], - "id": "libvirt-34" + "id": "libvirt-35" } { @@ -1921,11 +1929,11 @@ "enabled": false, "present": true }, - "id": "libvirt-35" + "id": "libvirt-36" } { - "id": "libvirt-36", + "id": "libvirt-37", "error": { "class": "CommandNotFound", "desc": "The command query-tpm-models has not been found" @@ -1933,7 +1941,7 @@ } { - "id": "libvirt-37", + "id": "libvirt-38", "error": { "class": "CommandNotFound", "desc": "The command query-tpm-types has not been found" @@ -1941,7 +1949,7 @@ } { - "id": "libvirt-38", + "id": "libvirt-39", "error": { "class": "CommandNotFound", "desc": "The command query-command-line-options has not been found" @@ -1955,5 +1963,5 @@ "state": false } ], - "id": "libvirt-39" + "id": "libvirt-40" } diff --git a/tests/qemucapabilitiesdata/caps_1.4.2-1.replies b/tests/qemucapabilitiesdata/caps_1.4.2-1.replies index bd7980f19a..5e8bdb4032 100644 --- a/tests/qemucapabilitiesdata/caps_1.4.2-1.replies +++ b/tests/qemucapabilitiesdata/caps_1.4.2-1.replies @@ -1831,6 +1831,15 @@ } } +{ + "id": "libvirt-33", + "error": { + "class": "DeviceNotFound", + "desc": "Device 'ICH9-LPC' not found" + } +} + + { "return": [ { @@ -1885,7 +1894,7 @@ "name": "none" } ], - "id": "libvirt-33" + "id": "libvirt-34" } { @@ -1963,7 +1972,7 @@ "name": "qemu64" } ], - "id": "libvirt-34" + "id": "libvirt-35" } { @@ -1971,11 +1980,11 @@ "enabled": false, "present": true }, - "id": "libvirt-35" + "id": "libvirt-36" } { - "id": "libvirt-36", + "id": "libvirt-37", "error": { "class": "CommandNotFound", "desc": "The command query-tpm-models has not been found" @@ -1983,7 +1992,7 @@ } { - "id": "libvirt-37", + "id": "libvirt-38", "error": { "class": "CommandNotFound", "desc": "The command query-tpm-types has not been found" @@ -1991,7 +2000,7 @@ } { - "id": "libvirt-38", + "id": "libvirt-39", "error": { "class": "CommandNotFound", "desc": "The command query-command-line-options has not been found" @@ -2005,5 +2014,5 @@ "state": false } ], - "id": "libvirt-39" + "id": "libvirt-40" } diff --git a/tests/qemucapabilitiesdata/caps_1.5.3-1.replies b/tests/qemucapabilitiesdata/caps_1.5.3-1.replies index abdba6c25e..1f4081eaec 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3-1.replies +++ b/tests/qemucapabilitiesdata/caps_1.5.3-1.replies @@ -1905,6 +1905,14 @@ } } +{ + "id": "libvirt-33", + "error": { + "class": "DeviceNotFound", + "desc": "Device 'ICH9-LPC' not found" + } +} + { "return": [ { @@ -1975,7 +1983,7 @@ "cpu-max": 1 } ], - "id": "libvirt-33" + "id": "libvirt-34" } { @@ -2053,7 +2061,7 @@ "name": "qemu64" } ], - "id": "libvirt-34" + "id": "libvirt-35" } { @@ -2061,12 +2069,6 @@ "enabled": false, "present": true }, - "id": "libvirt-35" -} - -{ - "return": [ - ], "id": "libvirt-36" } @@ -2076,6 +2078,12 @@ "id": "libvirt-37" } +{ + "return": [ + ], + "id": "libvirt-38" +} + { "return": [ { @@ -2749,7 +2757,7 @@ "option": "drive" } ], - "id": "libvirt-38" + "id": "libvirt-39" } { @@ -2759,5 +2767,5 @@ "state": false } ], - "id": "libvirt-39" + "id": "libvirt-40" } diff --git a/tests/qemucapabilitiesdata/caps_1.6.0-1.replies b/tests/qemucapabilitiesdata/caps_1.6.0-1.replies index 26a0e9dc5c..63dcde60c3 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0-1.replies +++ b/tests/qemucapabilitiesdata/caps_1.6.0-1.replies @@ -1967,6 +1967,14 @@ } } +{ + "id": "libvirt-33", + "error": { + "class": "DeviceNotFound", + "desc": "Device 'ICH9-LPC' not found" + } +} + { "return": [ { @@ -2053,7 +2061,7 @@ "cpu-max": 1 } ], - "id": "libvirt-33" + "id": "libvirt-34" } { @@ -2131,7 +2139,7 @@ "name": "qemu64" } ], - "id": "libvirt-34" + "id": "libvirt-35" } { @@ -2139,12 +2147,6 @@ "enabled": false, "present": true }, - "id": "libvirt-35" -} - -{ - "return": [ - ], "id": "libvirt-36" } @@ -2154,6 +2156,12 @@ "id": "libvirt-37" } +{ + "return": [ + ], + "id": "libvirt-38" +} + { "return": [ { @@ -2729,7 +2737,7 @@ "option": "drive" } ], - "id": "libvirt-38" + "id": "libvirt-39" } { @@ -2751,5 +2759,5 @@ "state": false } ], - "id": "libvirt-39" + "id": "libvirt-40" } diff --git a/tests/qemucapabilitiesdata/caps_1.6.50-1.replies b/tests/qemucapabilitiesdata/caps_1.6.50-1.replies index 5c493b7829..869b5ed00d 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.50-1.replies +++ b/tests/qemucapabilitiesdata/caps_1.6.50-1.replies @@ -1931,6 +1931,14 @@ } } +{ + "id": "libvirt-33", + "error": { + "class": "DeviceNotFound", + "desc": "Device 'ICH9-LPC' not found" + } +} + { "return": [ { @@ -2025,7 +2033,7 @@ "cpu-max": 1 } ], - "id": "libvirt-33" + "id": "libvirt-34" } { @@ -2103,7 +2111,7 @@ "name": "qemu64" } ], - "id": "libvirt-34" + "id": "libvirt-35" } { @@ -2111,12 +2119,6 @@ "enabled": false, "present": true }, - "id": "libvirt-35" -} - -{ - "return": [ - ], "id": "libvirt-36" } @@ -2126,6 +2128,12 @@ "id": "libvirt-37" } +{ + "return": [ + ], + "id": "libvirt-38" +} + { "return": [ { @@ -2711,7 +2719,7 @@ "option": "drive" } ], - "id": "libvirt-38" + "id": "libvirt-39" } { @@ -2733,5 +2741,5 @@ "state": false } ], - "id": "libvirt-39" + "id": "libvirt-40" } diff --git a/tests/qemucapabilitiesdata/caps_2.1.1-1.replies b/tests/qemucapabilitiesdata/caps_2.1.1-1.replies index ba85b28e44..86047c162b 100644 --- a/tests/qemucapabilitiesdata/caps_2.1.1-1.replies +++ b/tests/qemucapabilitiesdata/caps_2.1.1-1.replies @@ -2377,6 +2377,14 @@ } } +{ + "id": "libvirt-33", + "error": { + "class": "DeviceNotFound", + "desc": "Device 'ICH9-LPC' not found" + } +} + { "return": [ { @@ -2487,7 +2495,7 @@ "cpu-max": 255 } ], - "id": "libvirt-33" + "id": "libvirt-34" } { @@ -2568,7 +2576,7 @@ "name": "qemu64" } ], - "id": "libvirt-34" + "id": "libvirt-35" } { @@ -2576,21 +2584,21 @@ "enabled": false, "present": true }, - "id": "libvirt-35" + "id": "libvirt-36" } { "return": [ "tpm-tis" ], - "id": "libvirt-36" + "id": "libvirt-37" } { "return": [ "passthrough" ], - "id": "libvirt-37" + "id": "libvirt-38" } { @@ -3450,7 +3458,7 @@ "option": "drive" } ], - "id": "libvirt-38" + "id": "libvirt-39" } { @@ -3472,5 +3480,5 @@ "capability": "zero-blocks" } ], - "id": "libvirt-39" + "id": "libvirt-40" } diff --git a/tests/qemucapabilitiesdata/caps_2.4.0-1.caps b/tests/qemucapabilitiesdata/caps_2.4.0-1.caps index d67a48df12..ffc09c6863 100644 --- a/tests/qemucapabilitiesdata/caps_2.4.0-1.caps +++ b/tests/qemucapabilitiesdata/caps_2.4.0-1.caps @@ -167,4 +167,6 @@ + + diff --git a/tests/qemucapabilitiesdata/caps_2.4.0-1.replies b/tests/qemucapabilitiesdata/caps_2.4.0-1.replies index 8f50128dbc..8d25759cda 100644 --- a/tests/qemucapabilitiesdata/caps_2.4.0-1.replies +++ b/tests/qemucapabilitiesdata/caps_2.4.0-1.replies @@ -2758,6 +2758,84 @@ "id": "libvirt-32" } +{ + "return": [ + { + "type": "bool", + "name": "memory-hotplug-support" + }, + { + "type": "uint32", + "name": "rombar" + }, + { + "type": "uint32", + "name": "sci_int" + }, + { + "type": "uint32", + "name": "gpe0_blk_len" + }, + { + "type": "uint32", + "name": "pm_io_base" + }, + { + "type": "bool", + "name": "noreboot" + }, + { + "type": "bool", + "name": "multifunction", + "description": "on/off" + }, + { + "type": "uint8", + "name": "disable_s4" + }, + { + "type": "uint8", + "name": "acpi_disable_cmd" + }, + { + "type": "str", + "name": "romfile" + }, + { + "type": "uint8", + "name": "disable_s3" + }, + { + "type": "uint8", + "name": "s4_val" + }, + { + "type": "uint8", + "name": "acpi_enable_cmd" + }, + { + "type": "bool", + "name": "command_serr_enable", + "description": "on/off" + }, + { + "type": "int32", + "name": "addr", + "description": "Slot and optional function number, example: 06.0 or 06" + }, + { + "type": "bool", + "name": "enable_tco" + }, + { + "type": "uint32", + "name": "gpe0_blk" + } + ], + "id": "libvirt-33" +} + + { "return": [ { @@ -2884,7 +2962,7 @@ "cpu-max": 255 } ], - "id": "libvirt-33" + "id": "libvirt-34" } { @@ -2974,7 +3052,7 @@ "name": "qemu64" } ], - "id": "libvirt-34" + "id": "libvirt-35" } { @@ -2982,21 +3060,21 @@ "enabled": false, "present": true }, - "id": "libvirt-35" + "id": "libvirt-36" } { "return": [ "tpm-tis" ], - "id": "libvirt-36" + "id": "libvirt-37" } { "return": [ "passthrough" ], - "id": "libvirt-37" + "id": "libvirt-38" } { @@ -4000,7 +4078,7 @@ "option": "drive" } ], - "id": "libvirt-38" + "id": "libvirt-39" } { @@ -4030,5 +4108,5 @@ "capability": "events" } ], - "id": "libvirt-39" + "id": "libvirt-40" } diff --git a/tests/qemucapabilitiesdata/caps_2.5.0-1.caps b/tests/qemucapabilitiesdata/caps_2.5.0-1.caps index f4f3673c50..2a4f5c0ae6 100644 --- a/tests/qemucapabilitiesdata/caps_2.5.0-1.caps +++ b/tests/qemucapabilitiesdata/caps_2.5.0-1.caps @@ -168,4 +168,6 @@ + + diff --git a/tests/qemucapabilitiesdata/caps_2.5.0-1.replies b/tests/qemucapabilitiesdata/caps_2.5.0-1.replies index d90a74b50c..fc3f699195 100644 --- a/tests/qemucapabilitiesdata/caps_2.5.0-1.replies +++ b/tests/qemucapabilitiesdata/caps_2.5.0-1.replies @@ -2763,6 +2763,84 @@ "id": "libvirt-32" } +{ + "return": [ + { + "type": "bool", + "name": "memory-hotplug-support" + }, + { + "type": "uint32", + "name": "rombar" + }, + { + "type": "uint32", + "name": "sci_int" + }, + { + "type": "uint32", + "name": "gpe0_blk_len" + }, + { + "type": "uint32", + "name": "pm_io_base" + }, + { + "type": "bool", + "name": "noreboot" + }, + { + "type": "bool", + "name": "multifunction", + "description": "on/off" + }, + { + "type": "uint8", + "name": "disable_s4" + }, + { + "type": "uint8", + "name": "acpi_disable_cmd" + }, + { + "type": "str", + "name": "romfile" + }, + { + "type": "uint8", + "name": "disable_s3" + }, + { + "type": "uint8", + "name": "s4_val" + }, + { + "type": "uint8", + "name": "acpi_enable_cmd" + }, + { + "type": "bool", + "name": "command_serr_enable", + "description": "on/off" + }, + { + "type": "int32", + "name": "addr", + "description": "Slot and optional function number, example: 06.0 or 06" + }, + { + "type": "bool", + "name": "enable_tco" + }, + { + "type": "uint32", + "name": "gpe0_blk" + } + ], + "id": "libvirt-33" +} + + { "return": [ { @@ -2889,7 +2967,7 @@ "cpu-max": 255 } ], - "id": "libvirt-33" + "id": "libvirt-34" } { @@ -2979,7 +3057,7 @@ "name": "qemu64" } ], - "id": "libvirt-34" + "id": "libvirt-35" } { @@ -2987,21 +3065,21 @@ "enabled": false, "present": true }, - "id": "libvirt-35" + "id": "libvirt-36" } { "return": [ "tpm-tis" ], - "id": "libvirt-36" + "id": "libvirt-37" } { "return": [ "passthrough" ], - "id": "libvirt-37" + "id": "libvirt-38" } { @@ -4005,7 +4083,7 @@ "option": "drive" } ], - "id": "libvirt-38" + "id": "libvirt-39" } { @@ -4035,5 +4113,5 @@ "capability": "events" } ], - "id": "libvirt-39" + "id": "libvirt-40" } diff --git a/tests/qemucapabilitiesdata/caps_2.6.0-1.caps b/tests/qemucapabilitiesdata/caps_2.6.0-1.caps index e296efc90d..944208e9cf 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0-1.caps +++ b/tests/qemucapabilitiesdata/caps_2.6.0-1.caps @@ -170,4 +170,6 @@ + + diff --git a/tests/qemucapabilitiesdata/caps_2.6.0-1.replies b/tests/qemucapabilitiesdata/caps_2.6.0-1.replies index 90a1d61e93..304f9185f2 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0-1.replies +++ b/tests/qemucapabilitiesdata/caps_2.6.0-1.replies @@ -2763,6 +2763,84 @@ "id": "libvirt-32" } +{ + "return": [ + { + "type": "bool", + "name": "memory-hotplug-support" + }, + { + "type": "uint32", + "name": "rombar" + }, + { + "type": "uint32", + "name": "sci_int" + }, + { + "type": "uint32", + "name": "gpe0_blk_len" + }, + { + "type": "uint32", + "name": "pm_io_base" + }, + { + "type": "bool", + "name": "noreboot" + }, + { + "type": "bool", + "name": "multifunction", + "description": "on/off" + }, + { + "type": "uint8", + "name": "disable_s4" + }, + { + "type": "uint8", + "name": "acpi_disable_cmd" + }, + { + "type": "str", + "name": "romfile" + }, + { + "type": "uint8", + "name": "disable_s3" + }, + { + "type": "uint8", + "name": "s4_val" + }, + { + "type": "uint8", + "name": "acpi_enable_cmd" + }, + { + "type": "bool", + "name": "command_serr_enable", + "description": "on/off" + }, + { + "type": "int32", + "name": "addr", + "description": "Slot and optional function number, example: 06.0 or 06" + }, + { + "type": "bool", + "name": "enable_tco" + }, + { + "type": "uint32", + "name": "gpe0_blk" + } + ], + "id": "libvirt-33" +} + + { "return": [ { @@ -2889,7 +2967,7 @@ "cpu-max": 255 } ], - "id": "libvirt-33" + "id": "libvirt-34" } { @@ -2979,7 +3057,7 @@ "name": "qemu64" } ], - "id": "libvirt-34" + "id": "libvirt-35" } { @@ -2987,21 +3065,21 @@ "enabled": false, "present": true }, - "id": "libvirt-35" + "id": "libvirt-36" } { "return": [ "tpm-tis" ], - "id": "libvirt-36" + "id": "libvirt-37" } { "return": [ "passthrough" ], - "id": "libvirt-37" + "id": "libvirt-38" } { @@ -4009,7 +4087,7 @@ "option": "drive" } ], - "id": "libvirt-38" + "id": "libvirt-39" } { @@ -4039,5 +4117,5 @@ "capability": "events" } ], - "id": "libvirt-39" + "id": "libvirt-40" }