[libvirt] [PATCH v3 00/52] qemu: Store default CPU in domain XML
Christian Borntraeger
borntraeger at de.ibm.com
Fri Nov 8 11:25:06 UTC 2019
As discussed, does it make sense to add the default change to host-model for s390
in this series or should that be a separate patch?
On 05.11.19 14:26, Jiri Denemark wrote:
> When starting a domain without a CPU model specified in the domain XML,
> QEMU will choose a default one. Which is fine unless the domain gets
> migrated to another host because libvirt doesn't perform any CPU ABI
> checks and the virtual CPU provided by QEMU on the destination host can
> differ from the one on the source host.
>
> With QEMU 4.2.0 we can probe for the default CPU model used by QEMU for
> a particular machine type and store it in the domain XML. This way the
> chosen CPU model is more visible to users and libvirt will make sure
> the guest will see the exact same CPU after migration.
>
> https://bugzilla.redhat.com/show_bug.cgi?id=1598151
> https://bugzilla.redhat.com/show_bug.cgi?id=1598162
>
> Version 2:
> - more tests
> - TCG-only support for non x86_64 architectures
>
> Version 3:
> - as a result of talking with QEMU developers dealing with s390 and
> ppc64 I have to enhance the series so that libvirt is able to fetch
> different default CPU models on TCG vs. KVM
>
> ---
>
> Some patches were too large so I decided to shorten them before sending
> to the list. You can check the full version of this series with
>
> git fetch https://gitlab.com/jirkade/libvirt cpu-default-type
>
> Jiri Denemark (52):
> tests: Add capabilities for QEMU 4.2.0 on s390x
> tests: Update 4.2.0 capabilities data on ppc64
> conf: Use VIR_AUTO* in virDomainCapsCPUModelsAdd
> conf: Drop nameLen parameter from virDomainCapsCPUModelsAdd
> qemu: Copy CPU models in virQEMUCapsGetCPUDefinitions
> qemu: Filter models in virQEMUCapsGetCPUDefinitions
> qemu: Use virQEMUCapsGetCPUDefinitions more
> qemu: Use g_autoptr in qemuMonitorJSONGetCPUDefinitions
> qemu: Change return type of virQEMUCapsFetchCPUDefinitions
> qemu: Introduce qemuMonitorCPUDefs struct
> qemu: Flatten qemuMonitorCPUDefs.cpus
> qemu: Add qemuMonitorCPUDefsCopy
> qemu: Use g_autofree in virQEMUCapsLoadCPUModels
> qemu: Use virDomainCapsCPUUsable in qemuMonitorCPUDefInfo
> qemu: Introduce virQEMUCapsCPUDefsToModels
> qemu: Rename virQEMUCaps{Get,Fetch}CPUDefinitions
> qemu: Split virQEMUCapsFetchCPUModels
> qemu: Switch qemuCaps to use qemuMonitorCPUDefs
> conf: Drop unused virDomainCapsCPUModelsFilter
> conf: Drop virDomainCapsCPUModelsAddSteal
> qemu: Store typename from query-cpu-definitions in qemuCaps
> qemu: Drop unused virQEMUCapsGetDefaultMachine
> qemu: Add virQEMUCaps{Load,Format}Accel
> qemu: Introduce virQEMUCapsAccel structure
> qemu: Introduce virQEMUCapsAccelCopy
> qemu: Introduce virQEMUCapsAccelClear
> qemu: Introduce and use virQEMUCapsGetAccel
> qemu: Drop virQEMUCapsGetHostCPUData
> qemu: Refactor virQEMUCapsLoadAccel
> qemu: Refactor virQEMUCapsFormatAccel
> qemu: Introduce virQEMUCapsProbeCPUDefinitionsTest
> qemu: Refactor probing of accelerator dependent data
> qemu: Make virQEMUCapsGetMachineTypesCaps static
> qemu: Make virQEMUCapsIsMachineSupported static
> qemu: Refactor virQEMUCapsLoadCache a bit
> qemu: Refactor virQEMUCapsFormatCache a bit
> qemu: Pass virDomainVirtType to APIs dealing with machine types
> qemu: Move machine type data in capabilities cache
> qemu: Use typedef for virQEMUCapsMachineType
> qemu: Introduce virQEMUCapsCopyMachineTypes
> qemu: Make probed machine types depend on accelerator
> qemu: Probe machine types for both KVM and TCG
> qemu: Probe for default CPU types
> qemu: Introduce virQEMUCapsGetMachineDefaultCPU
> qemu: Use g_autoptr in qemuDomainDefPostParse
> conf: Define g_autoptr cleanup function for virCPUDef
> qemuxml2argvtest: Update host arch for DO_TEST*ARCH* tests
> qemuxml2*test: Add test cases for default CPU models on aarch64
> qemuxml2*test: Add test cases for default CPU models on ppc64
> qemuxml2*test: Add test cases for default CPU models on s390x
> qemuxml2*test: Add test cases for default CPU models on x86_64
> qemu: Store default CPU in domain XML
>
> src/conf/cpu_conf.h | 1 +
> src/conf/domain_capabilities.c | 86 +-
> src/conf/domain_capabilities.h | 10 +-
> src/libvirt_private.syms | 2 -
> src/qemu/qemu_capabilities.c | 1064 +-
> src/qemu/qemu_capabilities.h | 29 +-
> src/qemu/qemu_capspriv.h | 5 +-
> src/qemu/qemu_domain.c | 97 +-
> src/qemu/qemu_driver.c | 4 +-
> src/qemu/qemu_monitor.c | 61 +-
> src/qemu/qemu_monitor.h | 19 +-
> src/qemu/qemu_monitor_json.c | 82 +-
> src/qemu/qemu_monitor_json.h | 2 +-
> src/qemu/qemu_process.c | 24 +-
> tests/cputest.c | 12 +-
> tests/domaincapsdata/qemu_4.2.0.s390x.xml | 202 +
> tests/domaincapstest.c | 10 +-
> .../caps_1.5.3.x86_64.replies | 78 +
> .../caps_1.5.3.x86_64.xml | 45 +-
> .../caps_1.6.0.x86_64.replies | 86 +
> .../caps_1.6.0.x86_64.xml | 51 +-
> .../caps_1.7.0.x86_64.replies | 94 +
> .../caps_1.7.0.x86_64.xml | 57 +-
> .../caps_2.1.1.x86_64.replies | 110 +
> .../caps_2.1.1.x86_64.xml | 69 +-
> .../caps_2.10.0.aarch64.replies | 272 +
> .../caps_2.10.0.aarch64.xml | 279 +-
> .../caps_2.10.0.ppc64.replies | 123 +
> .../caps_2.10.0.ppc64.xml | 575 +-
> .../caps_2.10.0.s390x.replies | 53 +
> .../caps_2.10.0.s390x.xml | 285 +-
> .../caps_2.10.0.x86_64.replies | 194 +
> .../caps_2.10.0.x86_64.xml | 387 +-
> .../caps_2.11.0.s390x.replies | 58 +
> .../caps_2.11.0.s390x.xml | 288 +-
> .../caps_2.11.0.x86_64.replies | 194 +
> .../caps_2.11.0.x86_64.xml | 327 +-
> .../caps_2.12.0.aarch64.replies | 302 +
> .../caps_2.12.0.aarch64.xml | 307 +-
> .../caps_2.12.0.ppc64.replies | 143 +
> .../caps_2.12.0.ppc64.xml | 591 +-
> .../caps_2.12.0.s390x.replies | 63 +
> .../caps_2.12.0.s390x.xml | 291 +-
> .../caps_2.12.0.x86_64.replies | 204 +
> .../caps_2.12.0.x86_64.xml | 631 +-
> .../caps_2.4.0.x86_64.replies | 134 +
> .../caps_2.4.0.x86_64.xml | 87 +-
> .../caps_2.5.0.x86_64.replies | 142 +
> .../caps_2.5.0.x86_64.xml | 93 +-
> .../caps_2.6.0.aarch64.replies | 180 +
> .../caps_2.6.0.aarch64.xml | 123 +-
> .../caps_2.6.0.ppc64.replies | 77 +
> .../qemucapabilitiesdata/caps_2.6.0.ppc64.xml | 45 +-
> .../caps_2.6.0.x86_64.replies | 118 +
> .../caps_2.6.0.x86_64.xml | 75 +-
> .../caps_2.7.0.s390x.replies | 38 +
> .../qemucapabilitiesdata/caps_2.7.0.s390x.xml | 12 +-
> .../caps_2.7.0.x86_64.replies | 154 +
> .../caps_2.7.0.x86_64.xml | 81 +-
> .../caps_2.8.0.s390x.replies | 43 +
> .../qemucapabilitiesdata/caps_2.8.0.s390x.xml | 15 +-
> .../caps_2.8.0.x86_64.replies | 174 +
> .../caps_2.8.0.x86_64.xml | 93 +-
> .../caps_2.9.0.ppc64.replies | 118 +
> .../qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 572 +-
> .../caps_2.9.0.s390x.replies | 48 +
> .../qemucapabilitiesdata/caps_2.9.0.s390x.xml | 274 +-
> .../caps_2.9.0.x86_64.replies | 184 +
> .../caps_2.9.0.x86_64.xml | 277 +-
> .../caps_3.0.0.ppc64.replies | 148 +
> .../qemucapabilitiesdata/caps_3.0.0.ppc64.xml | 594 +-
> .../caps_3.0.0.riscv32.replies | 42 +
> .../caps_3.0.0.riscv32.xml | 10 +-
> .../caps_3.0.0.riscv64.replies | 42 +
> .../caps_3.0.0.riscv64.xml | 10 +-
> .../caps_3.0.0.s390x.replies | 68 +
> .../qemucapabilitiesdata/caps_3.0.0.s390x.xml | 302 +-
> .../caps_3.0.0.x86_64.replies | 214 +
> .../caps_3.0.0.x86_64.xml | 447 +-
> .../caps_3.1.0.ppc64.replies | 153 +
> .../qemucapabilitiesdata/caps_3.1.0.ppc64.xml | 597 +-
> .../caps_3.1.0.x86_64.replies | 224 +
> .../caps_3.1.0.x86_64.xml | 587 +-
> .../caps_4.0.0.aarch64.replies | 347 +
> .../caps_4.0.0.aarch64.xml | 346 +-
> .../caps_4.0.0.ppc64.replies | 158 +
> .../qemucapabilitiesdata/caps_4.0.0.ppc64.xml | 600 +-
> .../caps_4.0.0.riscv32.replies | 42 +
> .../caps_4.0.0.riscv32.xml | 10 +-
> .../caps_4.0.0.riscv64.replies | 42 +
> .../caps_4.0.0.riscv64.xml | 10 +-
> .../caps_4.0.0.s390x.replies | 78 +
> .../qemucapabilitiesdata/caps_4.0.0.s390x.xml | 324 +-
> .../caps_4.0.0.x86_64.replies | 224 +
> .../caps_4.0.0.x86_64.xml | 583 +-
> .../caps_4.1.0.x86_64.replies | 329 +
> .../caps_4.1.0.x86_64.xml | 930 +-
> .../caps_4.2.0.aarch64.replies | 556 +
> .../caps_4.2.0.aarch64.xml | 358 +-
> .../caps_4.2.0.ppc64.replies | 305 +-
> .../qemucapabilitiesdata/caps_4.2.0.ppc64.xml | 611 +-
> .../caps_4.2.0.s390x.replies | 22548 ++++++++++++++++
> .../qemucapabilitiesdata/caps_4.2.0.s390x.xml | 3359 +++
> .../caps_4.2.0.x86_64.replies | 389 +
> .../caps_4.2.0.x86_64.xml | 942 +-
> tests/qemumonitorjsontest.c | 42 +-
> ...fault-cpu-kvm-virt-4.2.aarch64-latest.args | 38 +
> .../aarch64-default-cpu-kvm-virt-4.2.xml | 20 +
> ...fault-cpu-tcg-virt-4.2.aarch64-latest.args | 39 +
> .../aarch64-default-cpu-tcg-virt-4.2.xml | 20 +
> .../disk-cache.x86_64-latest.args | 1 +
> .../disk-cdrom-network.x86_64-latest.args | 1 +
> .../disk-cdrom-tray.x86_64-latest.args | 1 +
> .../disk-copy_on_read.x86_64-latest.args | 1 +
> .../disk-detect-zeroes.x86_64-latest.args | 1 +
> .../disk-floppy-q35-2_11.x86_64-latest.args | 1 +
> .../disk-floppy-q35-2_9.x86_64-latest.args | 1 +
> .../os-firmware-bios.x86_64-latest.args | 1 +
> ...os-firmware-efi-secboot.x86_64-latest.args | 1 +
> .../os-firmware-efi.x86_64-latest.args | 1 +
> ...ault-cpu-kvm-pseries-2.7.ppc64-latest.args | 39 +
> .../ppc64-default-cpu-kvm-pseries-2.7.xml | 22 +
> ...ault-cpu-kvm-pseries-3.1.ppc64-latest.args | 39 +
> .../ppc64-default-cpu-kvm-pseries-3.1.xml | 22 +
> ...ault-cpu-kvm-pseries-4.2.ppc64-latest.args | 39 +
> .../ppc64-default-cpu-kvm-pseries-4.2.xml | 22 +
> ...ault-cpu-tcg-pseries-2.7.ppc64-latest.args | 39 +
> .../ppc64-default-cpu-tcg-pseries-2.7.xml | 22 +
> ...ault-cpu-tcg-pseries-3.1.ppc64-latest.args | 39 +
> .../ppc64-default-cpu-tcg-pseries-3.1.xml | 22 +
> ...ault-cpu-tcg-pseries-4.2.ppc64-latest.args | 39 +
> .../ppc64-default-cpu-tcg-pseries-4.2.xml | 22 +
> ...t-cpu-kvm-ccw-virtio-4.2.s390x-latest.args | 32 +
> .../s390-default-cpu-kvm-ccw-virtio-4.2.xml | 16 +
> ...t-cpu-tcg-ccw-virtio-4.2.s390x-latest.args | 32 +
> .../s390-default-cpu-tcg-ccw-virtio-4.2.xml | 16 +
> .../tpm-emulator-tpm2-enc.x86_64-latest.args | 1 +
> .../tpm-emulator-tpm2.x86_64-latest.args | 1 +
> .../tpm-emulator.x86_64-latest.args | 1 +
> .../tseg-explicit-size.x86_64-latest.args | 1 +
> .../vhost-vsock-auto.x86_64-latest.args | 1 +
> .../vhost-vsock.x86_64-latest.args | 1 +
> ...-default-cpu-kvm-pc-4.2.x86_64-latest.args | 37 +
> .../x86_64-default-cpu-kvm-pc-4.2.xml | 24 +
> ...default-cpu-kvm-q35-4.2.x86_64-latest.args | 42 +
> .../x86_64-default-cpu-kvm-q35-4.2.xml | 24 +
> ...-default-cpu-tcg-pc-4.2.x86_64-latest.args | 37 +
> .../x86_64-default-cpu-tcg-pc-4.2.xml | 24 +
> ...default-cpu-tcg-q35-4.2.x86_64-latest.args | 42 +
> .../x86_64-default-cpu-tcg-q35-4.2.xml | 24 +
> tests/qemuxml2argvtest.c | 19 +
> ...efault-cpu-kvm-virt-4.2.aarch64-latest.xml | 38 +
> ...efault-cpu-tcg-virt-4.2.aarch64-latest.xml | 41 +
> .../os-firmware-bios.x86_64-latest.xml | 3 +
> .../os-firmware-efi-secboot.x86_64-latest.xml | 3 +
> .../os-firmware-efi.x86_64-latest.xml | 3 +
> ...fault-cpu-kvm-pseries-2.7.ppc64-latest.xml | 48 +
> ...fault-cpu-kvm-pseries-3.1.ppc64-latest.xml | 48 +
> ...fault-cpu-kvm-pseries-4.2.ppc64-latest.xml | 48 +
> ...fault-cpu-tcg-pseries-2.7.ppc64-latest.xml | 48 +
> ...fault-cpu-tcg-pseries-3.1.ppc64-latest.xml | 48 +
> ...fault-cpu-tcg-pseries-4.2.ppc64-latest.xml | 48 +
> ...lt-cpu-kvm-ccw-virtio-4.2.s390x-latest.xml | 24 +
> ...lt-cpu-tcg-ccw-virtio-4.2.s390x-latest.xml | 26 +
> .../tpm-emulator-tpm2-enc.x86_64-latest.xml | 3 +
> .../tpm-emulator-tpm2.x86_64-latest.xml | 3 +
> .../tpm-emulator.x86_64-latest.xml | 3 +
> .../tpm-passthrough-crb.x86_64-latest.xml | 3 +
> .../tpm-passthrough.x86_64-latest.xml | 3 +
> ...4-default-cpu-kvm-pc-4.2.x86_64-latest.xml | 40 +
> ...-default-cpu-kvm-q35-4.2.x86_64-latest.xml | 63 +
> ...4-default-cpu-tcg-pc-4.2.x86_64-latest.xml | 40 +
> ...-default-cpu-tcg-q35-4.2.x86_64-latest.xml | 63 +
> tests/qemuxml2xmltest.c | 15 +
> tests/testutilsqemu.c | 6 +-
> tests/testutilsqemu.h | 1 +
> 176 files changed, 42397 insertions(+), 6735 deletions(-)
> create mode 100644 tests/domaincapsdata/qemu_4.2.0.s390x.xml
> create mode 100644 tests/qemucapabilitiesdata/caps_4.2.0.s390x.replies
> create mode 100644 tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml
> create mode 100644 tests/qemuxml2argvdata/aarch64-default-cpu-kvm-virt-4.2.aarch64-latest.args
> create mode 100644 tests/qemuxml2argvdata/aarch64-default-cpu-kvm-virt-4.2.xml
> create mode 100644 tests/qemuxml2argvdata/aarch64-default-cpu-tcg-virt-4.2.aarch64-latest.args
> create mode 100644 tests/qemuxml2argvdata/aarch64-default-cpu-tcg-virt-4.2.xml
> create mode 100644 tests/qemuxml2argvdata/ppc64-default-cpu-kvm-pseries-2.7.ppc64-latest.args
> create mode 100644 tests/qemuxml2argvdata/ppc64-default-cpu-kvm-pseries-2.7.xml
> create mode 100644 tests/qemuxml2argvdata/ppc64-default-cpu-kvm-pseries-3.1.ppc64-latest.args
> create mode 100644 tests/qemuxml2argvdata/ppc64-default-cpu-kvm-pseries-3.1.xml
> create mode 100644 tests/qemuxml2argvdata/ppc64-default-cpu-kvm-pseries-4.2.ppc64-latest.args
> create mode 100644 tests/qemuxml2argvdata/ppc64-default-cpu-kvm-pseries-4.2.xml
> create mode 100644 tests/qemuxml2argvdata/ppc64-default-cpu-tcg-pseries-2.7.ppc64-latest.args
> create mode 100644 tests/qemuxml2argvdata/ppc64-default-cpu-tcg-pseries-2.7.xml
> create mode 100644 tests/qemuxml2argvdata/ppc64-default-cpu-tcg-pseries-3.1.ppc64-latest.args
> create mode 100644 tests/qemuxml2argvdata/ppc64-default-cpu-tcg-pseries-3.1.xml
> create mode 100644 tests/qemuxml2argvdata/ppc64-default-cpu-tcg-pseries-4.2.ppc64-latest.args
> create mode 100644 tests/qemuxml2argvdata/ppc64-default-cpu-tcg-pseries-4.2.xml
> create mode 100644 tests/qemuxml2argvdata/s390-default-cpu-kvm-ccw-virtio-4.2.s390x-latest.args
> create mode 100644 tests/qemuxml2argvdata/s390-default-cpu-kvm-ccw-virtio-4.2.xml
> create mode 100644 tests/qemuxml2argvdata/s390-default-cpu-tcg-ccw-virtio-4.2.s390x-latest.args
> create mode 100644 tests/qemuxml2argvdata/s390-default-cpu-tcg-ccw-virtio-4.2.xml
> create mode 100644 tests/qemuxml2argvdata/x86_64-default-cpu-kvm-pc-4.2.x86_64-latest.args
> create mode 100644 tests/qemuxml2argvdata/x86_64-default-cpu-kvm-pc-4.2.xml
> create mode 100644 tests/qemuxml2argvdata/x86_64-default-cpu-kvm-q35-4.2.x86_64-latest.args
> create mode 100644 tests/qemuxml2argvdata/x86_64-default-cpu-kvm-q35-4.2.xml
> create mode 100644 tests/qemuxml2argvdata/x86_64-default-cpu-tcg-pc-4.2.x86_64-latest.args
> create mode 100644 tests/qemuxml2argvdata/x86_64-default-cpu-tcg-pc-4.2.xml
> create mode 100644 tests/qemuxml2argvdata/x86_64-default-cpu-tcg-q35-4.2.x86_64-latest.args
> create mode 100644 tests/qemuxml2argvdata/x86_64-default-cpu-tcg-q35-4.2.xml
> create mode 100644 tests/qemuxml2xmloutdata/aarch64-default-cpu-kvm-virt-4.2.aarch64-latest.xml
> create mode 100644 tests/qemuxml2xmloutdata/aarch64-default-cpu-tcg-virt-4.2.aarch64-latest.xml
> create mode 100644 tests/qemuxml2xmloutdata/ppc64-default-cpu-kvm-pseries-2.7.ppc64-latest.xml
> create mode 100644 tests/qemuxml2xmloutdata/ppc64-default-cpu-kvm-pseries-3.1.ppc64-latest.xml
> create mode 100644 tests/qemuxml2xmloutdata/ppc64-default-cpu-kvm-pseries-4.2.ppc64-latest.xml
> create mode 100644 tests/qemuxml2xmloutdata/ppc64-default-cpu-tcg-pseries-2.7.ppc64-latest.xml
> create mode 100644 tests/qemuxml2xmloutdata/ppc64-default-cpu-tcg-pseries-3.1.ppc64-latest.xml
> create mode 100644 tests/qemuxml2xmloutdata/ppc64-default-cpu-tcg-pseries-4.2.ppc64-latest.xml
> create mode 100644 tests/qemuxml2xmloutdata/s390-default-cpu-kvm-ccw-virtio-4.2.s390x-latest.xml
> create mode 100644 tests/qemuxml2xmloutdata/s390-default-cpu-tcg-ccw-virtio-4.2.s390x-latest.xml
> create mode 100644 tests/qemuxml2xmloutdata/x86_64-default-cpu-kvm-pc-4.2.x86_64-latest.xml
> create mode 100644 tests/qemuxml2xmloutdata/x86_64-default-cpu-kvm-q35-4.2.x86_64-latest.xml
> create mode 100644 tests/qemuxml2xmloutdata/x86_64-default-cpu-tcg-pc-4.2.x86_64-latest.xml
> create mode 100644 tests/qemuxml2xmloutdata/x86_64-default-cpu-tcg-q35-4.2.x86_64-latest.xml
>
More information about the libvir-list
mailing list