[libvirt] [PATCH v5 00/36] BaselineHypervisorCPU using QEMU QMP exchanges

Chris Venteicher cventeic at redhat.com
Mon Dec 3 05:09:54 UTC 2018

Some architectures (S390) depend on QEMU to compute baseline CPU model and
expand a models feature set.

Interacting with QEMU requires starting the QEMU process and completing one or
more query-cpu-model-baseline QMP exchanges with QEMU in addition to a
query-cpu-model-expansion QMP exchange to expand all features in the model.

See "s390x CPU models: exposing features" patch set on Qemu-devel for discussion
of QEMU aspects.

This is part of resolution of: https://bugzilla.redhat.com/show_bug.cgi?id=1511999


This patch set fixes all process code issues identified here:
in patches 1-22 of the series.

The remaining patches implement the BaselineHypervisorCPU changes using
the non-domain qemu process code.

The process changes (patches 1-22)...

- Make the process code generic (not capabilities specific) for use by

- Many of the process patches are simple code moves with implementation
changes in other distinct patches

- A thread safe library function creates a unique directory under libDir for each QEMU
process (for QMP messaging) to decouple processes in terms of sockets and
file system footprint.

The BaselineHypervisorCPU changes (patches 22-36)...

- Fix all issues raised in patch sets 1-4.


Chris Venteicher (36):
  qemu_process: Move process code from qemu_capabilities to qemu_process
  qemu_process: Use qemuProcessQmp prefix
  qemu_process: Limit qemuProcessQmpNew to const input strings
  qemu_process: Refer to proc not cmd in process code
  qemu_process: Use consistent name for stop process function
  qemu_capabilities: Stop QEMU process before freeing
  qemu_process: Use qemuProcessQmp struct for a single process
  qemu_process: All ProcessQMP errors are fatal
  qemu_process: Persist stderr in qemuProcessQmp struct
  qemu_process: Introduce qemuProcessQmpStart
  qemu_process: Collect monitor code in single function
  qemu_process: Store libDir in qemuProcessQmp struct
  qemu_process: Setup paths within qemuProcessQmpInit
  qemu_process: Stop retaining Monitor config in qemuProcessQmp
  qemu_process: Don't open monitor if process failed
  qemu_process: Cleanup qemuProcessQmp alloc function
  qemu_process: Cleanup qemuProcessQmpStop function
  qemu_process: Catch process free before process stop
  qemu_monitor: Make monitor callbacks optional
  qemu_process: Enter QMP command mode when starting QEMU Process
  qemu_process: Use unique directories for QMP processes
  qemu_process: Stop locking QMP process monitor immediately
  qemu_monitor: Introduce qemuMonitorCPUModelInfoNew
  qemu_monitor: Introduce qemuMonitorCPUModelInfo / JSON conversion
  qemu_capabilities: Introduce virQEMuCapsMigratablePropsDiff
  qemu_monitor: qemuMonitorGetCPUModelExpansion inputs and outputs
  qemu_capabilities: Introduce CPUModelInfo to virCPUDef function
  qemu_capabilities: Introduce virCPUDef to CPUModelInfo function
  qemu_monitor: Support query-cpu-model-baseline QMP command
  qemu_driver: Consolidate code to baseline using libvirt
  qemu_driver: Decouple code for baseline using libvirt
  qemu_driver: Identify using libvirt as a distinct way to compute
  qemu_driver: Support baseline calculation using QEMU
  qemu_driver: Support feature expansion via QEMU when baselining cpu
  qemu_driver: Remove unsupported props in expanded hypervisor baseline
  qemu_monitor: Default props to migratable when expanding cpu model

 src/qemu/qemu_capabilities.c                  | 617 ++++++++----------
 src/qemu/qemu_capabilities.h                  |   4 +
 src/qemu/qemu_driver.c                        | 216 +++++-
 src/qemu/qemu_monitor.c                       | 184 +++++-
 src/qemu/qemu_monitor.h                       |  29 +-
 src/qemu/qemu_monitor_json.c                  | 226 +++++--
 src/qemu/qemu_monitor_json.h                  |  12 +-
 src/qemu/qemu_process.c                       | 356 ++++++++++
 src/qemu/qemu_process.h                       |  32 +
 tests/cputest.c                               |  11 +-
 .../caps_2.10.0.s390x.xml                     |  60 +-
 .../caps_2.11.0.s390x.xml                     |  58 +-
 .../caps_2.12.0.s390x.xml                     |  56 +-
 .../qemucapabilitiesdata/caps_2.8.0.s390x.xml |  32 +-
 .../qemucapabilitiesdata/caps_2.9.0.s390x.xml |  34 +-
 .../qemucapabilitiesdata/caps_3.0.0.s390x.xml |  64 +-
 tests/qemucapabilitiestest.c                  |   7 +
 17 files changed, 1396 insertions(+), 602 deletions(-)


More information about the libvir-list mailing list