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:
https://www.redhat.com/archives/libvir-list/2018-November/msg00349.html
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
BaselineHypervisorCPU
- 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.
Thanks,
Chris
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
CPUModelInfo
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
baseline
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
output
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(-)
--
2.17.1