qemu: Add capability for the HPT maxpagesize feature

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
This commit is contained in:
Andrea Bolognani 2018-06-19 13:51:05 +02:00
parent 0a527017c4
commit 90e6e0fae8
12 changed files with 497 additions and 91 deletions

View File

@ -500,6 +500,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST,
/* 310 */
"sev-guest",
"machine.pseries.cap-hpt-max-page-size",
);
@ -1428,10 +1429,17 @@ static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsMemoryBackendFile[] =
{ "discard-data", QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD },
};
static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsSPAPRMachine[] = {
{ "cap-hpt-max-page-size", QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE },
};
static virQEMUCapsObjectTypeProps virQEMUCapsObjectProps[] = {
{ "memory-backend-file", virQEMUCapsObjectPropsMemoryBackendFile,
ARRAY_CARDINALITY(virQEMUCapsObjectPropsMemoryBackendFile),
QEMU_CAPS_OBJECT_MEMORY_FILE },
{ "spapr-machine", virQEMUCapsObjectPropsSPAPRMachine,
ARRAY_CARDINALITY(virQEMUCapsObjectPropsSPAPRMachine),
-1 },
};
static void

View File

@ -484,6 +484,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */
/* 310 */
QEMU_CAPS_SEV_GUEST, /* -object sev-guest,... */
QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE, /* -machine pseries.cap-hpt-max-page-size */
QEMU_CAPS_LAST /* this must always be the last item */
} virQEMUCapsFlags;

View File

@ -5582,10 +5582,26 @@
}
{
"execute": "query-machines",
"execute": "qom-list-properties",
"arguments": {
"typename": "spapr-machine"
},
"id": "libvirt-37"
}
{
"id": "libvirt-37",
"error": {
"class": "DeviceNotFound",
"desc": "Class 'spapr-machine' not found"
}
}
{
"execute": "query-machines",
"id": "libvirt-38"
}
{
"return": [
{
@ -5880,12 +5896,12 @@
"cpu-max": 1
}
],
"id": "libvirt-37"
"id": "libvirt-38"
}
{
"execute": "query-cpu-definitions",
"id": "libvirt-38"
"id": "libvirt-39"
}
{
@ -6061,35 +6077,35 @@
"static": false
}
],
"id": "libvirt-38"
"id": "libvirt-39"
}
{
"execute": "query-tpm-models",
"id": "libvirt-39"
"id": "libvirt-40"
}
{
"return": [
],
"id": "libvirt-39"
"id": "libvirt-40"
}
{
"execute": "query-tpm-types",
"id": "libvirt-40"
"id": "libvirt-41"
}
{
"return": [
"emulator"
],
"id": "libvirt-40"
"id": "libvirt-41"
}
{
"execute": "query-command-line-options",
"id": "libvirt-41"
"id": "libvirt-42"
}
{
@ -7250,12 +7266,12 @@
"option": "drive"
}
],
"id": "libvirt-41"
"id": "libvirt-42"
}
{
"execute": "query-migrate-capabilities",
"id": "libvirt-42"
"id": "libvirt-43"
}
{
@ -7317,12 +7333,12 @@
"capability": "dirty-bitmaps"
}
],
"id": "libvirt-42"
"id": "libvirt-43"
}
{
"execute": "query-qmp-schema",
"id": "libvirt-43"
"id": "libvirt-44"
}
{
@ -18690,12 +18706,12 @@
"meta-type": "object"
}
],
"id": "libvirt-43"
"id": "libvirt-44"
}
{
"execute": "query-gic-capabilities",
"id": "libvirt-44"
"id": "libvirt-45"
}
{
@ -18711,7 +18727,7 @@
"kernel": false
}
],
"id": "libvirt-44"
"id": "libvirt-45"
}
{

View File

@ -171,7 +171,7 @@
<flag name='tpm-emulator'/>
<version>2011090</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>347313</microcodeVersion>
<microcodeVersion>347550</microcodeVersion>
<package>v2.12.0-rc0</package>
<arch>aarch64</arch>
<cpu type='kvm' name='pxa262'/>

View File

@ -5637,10 +5637,179 @@
}
{
"execute": "query-machines",
"execute": "qom-list-properties",
"arguments": {
"typename": "spapr-machine"
},
"id": "libvirt-38"
}
{
"return": [
{
"name": "graphics",
"description": "Set on/off to enable/disable graphics emulation",
"type": "bool"
},
{
"name": "phandle-start",
"description": "The first phandle ID we may generate dynamically",
"type": "int"
},
{
"name": "dump-guest-core",
"description": "Include guest memory in a core dump",
"type": "bool"
},
{
"name": "kernel-irqchip",
"description": "Configure KVM in-kernel irqchip",
"type": "on|off|split"
},
{
"name": "accel",
"description": "Accelerator list",
"type": "string"
},
{
"name": "append",
"description": "Linux kernel command line",
"type": "string"
},
{
"name": "dumpdtb",
"description": "Dump current dtb to a file and quit",
"type": "string"
},
{
"name": "memory-encryption",
"description": "Set memory encyption object to use",
"type": "string"
},
{
"name": "igd-passthru",
"description": "Set on/off to enable/disable igd passthrou",
"type": "bool"
},
{
"name": "dt-compatible",
"description": "Overrides the \"compatible\" property of the dt root node",
"type": "string"
},
{
"name": "kernel",
"description": "Linux kernel image file",
"type": "string"
},
{
"name": "usb",
"description": "Set on/off to enable/disable usb",
"type": "bool"
},
{
"name": "suppress-vmdesc",
"description": "Set on to disable self-describing migration",
"type": "bool"
},
{
"name": "dtb",
"description": "Linux kernel device tree file",
"type": "string"
},
{
"name": "firmware",
"description": "Firmware image",
"type": "string"
},
{
"name": "mem-merge",
"description": "Enable/disable memory merge support",
"type": "bool"
},
{
"name": "initrd",
"description": "Linux initial ramdisk file",
"type": "string"
},
{
"name": "enforce-config-section",
"description": "Set on to enforce configuration section migration",
"type": "bool"
},
{
"name": "kvm-shadow-mem",
"description": "KVM shadow MMU size",
"type": "int"
},
{
"name": "cap-ibs",
"description": "Indirect Branch Speculation (broken, fixed-ibs, fixed-ccd)",
"type": "string"
},
{
"name": "cap-cfpc",
"description": "Cache Flush on Privilege Change (broken, workaround, fixed)",
"type": "string"
},
{
"name": "cap-sbbc",
"description": "Speculation Barrier Bounds Checking (broken, workaround, fixed)",
"type": "string"
},
{
"name": "cap-dfp",
"description": "Allow Decimal Floating Point (DFP)",
"type": "bool"
},
{
"name": "cap-htm",
"description": "Allow Hardware Transactional Memory (HTM)",
"type": "bool"
},
{
"name": "cap-vsx",
"description": "Allow Vector Scalar Extensions (VSX)",
"type": "bool"
},
{
"name": "cap-ibs",
"description": "Indirect Branch Speculation (broken, fixed-ibs, fixed-ccd)",
"type": "string"
},
{
"name": "cap-cfpc",
"description": "Cache Flush on Privilege Change (broken, workaround, fixed)",
"type": "string"
},
{
"name": "cap-sbbc",
"description": "Speculation Barrier Bounds Checking (broken, workaround, fixed)",
"type": "string"
},
{
"name": "cap-dfp",
"description": "Allow Decimal Floating Point (DFP)",
"type": "bool"
},
{
"name": "cap-htm",
"description": "Allow Hardware Transactional Memory (HTM)",
"type": "bool"
},
{
"name": "cap-vsx",
"description": "Allow Vector Scalar Extensions (VSX)",
"type": "bool"
}
],
"id": "libvirt-38"
}
{
"execute": "query-machines",
"id": "libvirt-39"
}
{
"return": [
{
@ -5776,12 +5945,12 @@
"cpu-max": 1
}
],
"id": "libvirt-38"
"id": "libvirt-39"
}
{
"execute": "query-cpu-definitions",
"id": "libvirt-39"
"id": "libvirt-40"
}
{
@ -7977,35 +8146,35 @@
"static": false
}
],
"id": "libvirt-39"
"id": "libvirt-40"
}
{
"execute": "query-tpm-models",
"id": "libvirt-40"
"id": "libvirt-41"
}
{
"return": [
],
"id": "libvirt-40"
"id": "libvirt-41"
}
{
"execute": "query-tpm-types",
"id": "libvirt-41"
"id": "libvirt-42"
}
{
"return": [
"emulator"
],
"id": "libvirt-41"
"id": "libvirt-42"
}
{
"execute": "query-command-line-options",
"id": "libvirt-42"
"id": "libvirt-43"
}
{
@ -9161,12 +9330,12 @@
"option": "drive"
}
],
"id": "libvirt-42"
"id": "libvirt-43"
}
{
"execute": "query-migrate-capabilities",
"id": "libvirt-43"
"id": "libvirt-44"
}
{
@ -9228,12 +9397,12 @@
"capability": "dirty-bitmaps"
}
],
"id": "libvirt-43"
"id": "libvirt-44"
}
{
"execute": "query-qmp-schema",
"id": "libvirt-44"
"id": "libvirt-45"
}
{
@ -20601,7 +20770,7 @@
"meta-type": "object"
}
],
"id": "libvirt-44"
"id": "libvirt-45"
}
{

View File

@ -168,7 +168,7 @@
<flag name='tpm-emulator'/>
<version>2011090</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>424244</microcodeVersion>
<microcodeVersion>428334</microcodeVersion>
<package>v2.12.0-rc0</package>
<arch>ppc64</arch>
<cpu type='kvm' name='default'/>

View File

@ -3936,10 +3936,26 @@
}
{
"execute": "query-machines",
"execute": "qom-list-properties",
"arguments": {
"typename": "spapr-machine"
},
"id": "libvirt-37"
}
{
"id": "libvirt-37",
"error": {
"class": "DeviceNotFound",
"desc": "Class 'spapr-machine' not found"
}
}
{
"execute": "query-machines",
"id": "libvirt-38"
}
{
"return": [
{
@ -3995,12 +4011,12 @@
"alias": "s390-ccw-virtio"
}
],
"id": "libvirt-37"
"id": "libvirt-38"
}
{
"execute": "query-cpu-definitions",
"id": "libvirt-38"
"id": "libvirt-39"
}
{
@ -4535,35 +4551,35 @@
"migration-safe": true
}
],
"id": "libvirt-38"
"id": "libvirt-39"
}
{
"execute": "query-tpm-models",
"id": "libvirt-39"
"id": "libvirt-40"
}
{
"return": [
],
"id": "libvirt-39"
"id": "libvirt-40"
}
{
"execute": "query-tpm-types",
"id": "libvirt-40"
"id": "libvirt-41"
}
{
"return": [
"emulator"
],
"id": "libvirt-40"
"id": "libvirt-41"
}
{
"execute": "query-command-line-options",
"id": "libvirt-41"
"id": "libvirt-42"
}
{
@ -5688,12 +5704,12 @@
"option": "drive"
}
],
"id": "libvirt-41"
"id": "libvirt-42"
}
{
"execute": "query-migrate-capabilities",
"id": "libvirt-42"
"id": "libvirt-43"
}
{
@ -5755,12 +5771,12 @@
"capability": "dirty-bitmaps"
}
],
"id": "libvirt-42"
"id": "libvirt-43"
}
{
"execute": "query-qmp-schema",
"id": "libvirt-43"
"id": "libvirt-44"
}
{
@ -17128,7 +17144,7 @@
"meta-type": "object"
}
],
"id": "libvirt-43"
"id": "libvirt-44"
}
{
@ -17139,7 +17155,7 @@
"name": "host"
}
},
"id": "libvirt-44"
"id": "libvirt-45"
}
{
@ -17177,7 +17193,7 @@
}
}
},
"id": "libvirt-44"
"id": "libvirt-45"
}
{
@ -17191,11 +17207,11 @@
}
}
},
"id": "libvirt-45"
"id": "libvirt-46"
}
{
"id": "libvirt-45",
"id": "libvirt-46",
"error": {
"class": "GenericError",
"desc": "Property '.migratable' not found"

View File

@ -135,7 +135,7 @@
<flag name='tpm-emulator'/>
<version>2012000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>375762</microcodeVersion>
<microcodeVersion>375999</microcodeVersion>
<package></package>
<arch>s390x</arch>
<hostCPU type='kvm' model='z14-base' migratability='no'>

View File

@ -4995,10 +4995,26 @@
}
{
"execute": "query-machines",
"execute": "qom-list-properties",
"arguments": {
"typename": "spapr-machine"
},
"id": "libvirt-42"
}
{
"id": "libvirt-42",
"error": {
"class": "DeviceNotFound",
"desc": "Class 'spapr-machine' not found"
}
}
{
"execute": "query-machines",
"id": "libvirt-43"
}
{
"return": [
{
@ -5195,12 +5211,12 @@
"cpu-max": 255
}
],
"id": "libvirt-42"
"id": "libvirt-43"
}
{
"execute": "query-cpu-definitions",
"id": "libvirt-43"
"id": "libvirt-44"
}
{
@ -5714,12 +5730,12 @@
"migration-safe": true
}
],
"id": "libvirt-43"
"id": "libvirt-44"
}
{
"execute": "query-tpm-models",
"id": "libvirt-44"
"id": "libvirt-45"
}
{
@ -5727,12 +5743,12 @@
"tpm-crb",
"tpm-tis"
],
"id": "libvirt-44"
"id": "libvirt-45"
}
{
"execute": "query-tpm-types",
"id": "libvirt-45"
"id": "libvirt-46"
}
{
@ -5740,12 +5756,12 @@
"passthrough",
"emulator"
],
"id": "libvirt-45"
"id": "libvirt-46"
}
{
"execute": "query-command-line-options",
"id": "libvirt-46"
"id": "libvirt-47"
}
{
@ -7032,12 +7048,12 @@
"option": "drive"
}
],
"id": "libvirt-46"
"id": "libvirt-47"
}
{
"execute": "query-migrate-capabilities",
"id": "libvirt-47"
"id": "libvirt-48"
}
{
@ -7099,12 +7115,12 @@
"capability": "dirty-bitmaps"
}
],
"id": "libvirt-47"
"id": "libvirt-48"
}
{
"execute": "query-qmp-schema",
"id": "libvirt-48"
"id": "libvirt-49"
}
{
@ -18472,7 +18488,7 @@
"meta-type": "object"
}
],
"id": "libvirt-48"
"id": "libvirt-49"
}
{
@ -18483,7 +18499,7 @@
"name": "host"
}
},
"id": "libvirt-49"
"id": "libvirt-50"
}
{
@ -18673,7 +18689,7 @@
}
}
},
"id": "libvirt-49"
"id": "libvirt-50"
}
{
@ -18865,7 +18881,7 @@
}
}
},
"id": "libvirt-50"
"id": "libvirt-51"
}
{
@ -19120,7 +19136,7 @@
}
}
},
"id": "libvirt-50"
"id": "libvirt-51"
}
{
@ -19134,7 +19150,7 @@
}
}
},
"id": "libvirt-51"
"id": "libvirt-52"
}
{
@ -19324,7 +19340,7 @@
}
}
},
"id": "libvirt-51"
"id": "libvirt-52"
}
{
@ -19516,7 +19532,7 @@
}
}
},
"id": "libvirt-52"
"id": "libvirt-53"
}
{
@ -19771,12 +19787,12 @@
}
}
},
"id": "libvirt-52"
"id": "libvirt-53"
}
{
"execute": "query-sev-capabilities",
"id": "libvirt-53"
"id": "libvirt-54"
}
{
@ -19786,7 +19802,7 @@
"cert-chain": "AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA",
"pdh": "AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA"
},
"id": "libvirt-52"
"id": "libvirt-54"
}
{

View File

@ -213,7 +213,7 @@
<flag name='sev-guest'/>
<version>2011090</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>415959</microcodeVersion>
<microcodeVersion>416196</microcodeVersion>
<package>v2.12.0-rc0</package>
<arch>x86_64</arch>
<hostCPU type='kvm' model='base' migratability='yes'>

View File

@ -5720,10 +5720,189 @@
}
{
"execute": "query-machines",
"execute": "qom-list-properties",
"arguments": {
"typename": "spapr-machine"
},
"id": "libvirt-38"
}
{
"return": [
{
"name": "graphics",
"description": "Set on/off to enable/disable graphics emulation",
"type": "bool"
},
{
"name": "phandle-start",
"description": "The first phandle ID we may generate dynamically",
"type": "int"
},
{
"name": "dump-guest-core",
"description": "Include guest memory in a core dump",
"type": "bool"
},
{
"name": "kernel-irqchip",
"description": "Configure KVM in-kernel irqchip",
"type": "on|off|split"
},
{
"name": "accel",
"description": "Accelerator list",
"type": "string"
},
{
"name": "append",
"description": "Linux kernel command line",
"type": "string"
},
{
"name": "dumpdtb",
"description": "Dump current dtb to a file and quit",
"type": "string"
},
{
"name": "memory-encryption",
"description": "Set memory encyption object to use",
"type": "string"
},
{
"name": "igd-passthru",
"description": "Set on/off to enable/disable igd passthrou",
"type": "bool"
},
{
"name": "dt-compatible",
"description": "Overrides the \"compatible\" property of the dt root node",
"type": "string"
},
{
"name": "kernel",
"description": "Linux kernel image file",
"type": "string"
},
{
"name": "usb",
"description": "Set on/off to enable/disable usb",
"type": "bool"
},
{
"name": "suppress-vmdesc",
"description": "Set on to disable self-describing migration",
"type": "bool"
},
{
"name": "dtb",
"description": "Linux kernel device tree file",
"type": "string"
},
{
"name": "firmware",
"description": "Firmware image",
"type": "string"
},
{
"name": "mem-merge",
"description": "Enable/disable memory merge support",
"type": "bool"
},
{
"name": "initrd",
"description": "Linux initial ramdisk file",
"type": "string"
},
{
"name": "enforce-config-section",
"description": "Set on to enforce configuration section migration",
"type": "bool"
},
{
"name": "kvm-shadow-mem",
"description": "KVM shadow MMU size",
"type": "int"
},
{
"name": "cap-hpt-max-page-size",
"description": "Maximum page size for Hash Page Table guests",
"type": "int"
},
{
"name": "cap-ibs",
"description": "Indirect Branch Speculation (broken, fixed-ibs, fixed-ccd)",
"type": "string"
},
{
"name": "cap-cfpc",
"description": "Cache Flush on Privilege Change (broken, workaround, fixed)",
"type": "string"
},
{
"name": "cap-sbbc",
"description": "Speculation Barrier Bounds Checking (broken, workaround, fixed)",
"type": "string"
},
{
"name": "cap-dfp",
"description": "Allow Decimal Floating Point (DFP)",
"type": "bool"
},
{
"name": "cap-htm",
"description": "Allow Hardware Transactional Memory (HTM)",
"type": "bool"
},
{
"name": "cap-vsx",
"description": "Allow Vector Scalar Extensions (VSX)",
"type": "bool"
},
{
"name": "cap-hpt-max-page-size",
"description": "Maximum page size for Hash Page Table guests",
"type": "int"
},
{
"name": "cap-ibs",
"description": "Indirect Branch Speculation (broken, fixed-ibs, fixed-ccd)",
"type": "string"
},
{
"name": "cap-cfpc",
"description": "Cache Flush on Privilege Change (broken, workaround, fixed)",
"type": "string"
},
{
"name": "cap-sbbc",
"description": "Speculation Barrier Bounds Checking (broken, workaround, fixed)",
"type": "string"
},
{
"name": "cap-dfp",
"description": "Allow Decimal Floating Point (DFP)",
"type": "bool"
},
{
"name": "cap-htm",
"description": "Allow Hardware Transactional Memory (HTM)",
"type": "bool"
},
{
"name": "cap-vsx",
"description": "Allow Vector Scalar Extensions (VSX)",
"type": "bool"
}
],
"id": "libvirt-38"
}
{
"execute": "query-machines",
"id": "libvirt-39"
}
{
"return": [
{
@ -5864,12 +6043,12 @@
"cpu-max": 1
}
],
"id": "libvirt-38"
"id": "libvirt-39"
}
{
"execute": "query-cpu-definitions",
"id": "libvirt-39"
"id": "libvirt-40"
}
{
@ -8065,35 +8244,35 @@
"static": false
}
],
"id": "libvirt-39"
"id": "libvirt-40"
}
{
"execute": "query-tpm-models",
"id": "libvirt-40"
"id": "libvirt-41"
}
{
"return": [
],
"id": "libvirt-40"
"id": "libvirt-41"
}
{
"execute": "query-tpm-types",
"id": "libvirt-41"
"id": "libvirt-42"
}
{
"return": [
"emulator"
],
"id": "libvirt-41"
"id": "libvirt-42"
}
{
"execute": "query-command-line-options",
"id": "libvirt-42"
"id": "libvirt-43"
}
{
@ -9223,12 +9402,12 @@
"option": "drive"
}
],
"id": "libvirt-42"
"id": "libvirt-43"
}
{
"execute": "query-migrate-capabilities",
"id": "libvirt-43"
"id": "libvirt-44"
}
{
@ -9298,12 +9477,12 @@
"capability": "late-block-activate"
}
],
"id": "libvirt-43"
"id": "libvirt-44"
}
{
"execute": "query-qmp-schema",
"id": "libvirt-44"
"id": "libvirt-45"
}
{
@ -21462,7 +21641,7 @@
"meta-type": "object"
}
],
"id": "libvirt-44"
"id": "libvirt-45"
}
{

View File

@ -165,9 +165,10 @@
<flag name='vhost-vsock'/>
<flag name='chardev-fd-pass'/>
<flag name='tpm-emulator'/>
<flag name='machine.pseries.cap-hpt-max-page-size'/>
<version>2012050</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>442399</microcodeVersion>
<microcodeVersion>446771</microcodeVersion>
<package>v2.12.0-1689-g518d23a</package>
<arch>ppc64</arch>
<cpu type='kvm' name='default'/>