[libvirt] [PATCH v4 00/37] BaselineHypervisorCPU using QEMU QMP exchanges

Chris Venteicher cventeic at redhat.com
Sun Nov 11 20:55:02 UTC 2018


Quoting Collin Walling (2018-11-09 10:44:41)
> Hi Chris,
> 
> On 11/9/18 11:27 AM, Chris Venteicher wrote:
> > Quoting Chris Venteicher (2018-11-02 22:13:01)
> >> 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
> >>
> >> Version 4 attempts to address all issues from V1,2,3 including making the
> >> QEMU process activation for QMP Queries generic (not specific to capabilities)
> >> and moving that code from qemu_capabilities to qemu_process.
> >>
> >> Version 4 greatly expands the number of patches to make the set easier
> >> to review.
> >>
> >> The patches to do hypervisor baseline using QEMU are primarily in
> >> qemu_driver.c
> >>
> > Patches 1-2 create the cpumodel to/from Json conversion code.
> > Patches 3-4 modify the cpu expansion interface.
> > Patches 28-36 are the actual baseline changes.
> > 
> >> The patches to make the process code generic (not capabilities specific)
> >> are mostly in qemu_process.c
> > 
> > Patches 5 -> 27 move the process code from qemu_capabilities to
> > qemu_process.
> > 
> > A lot of these are code move or rename patches so the patches with real
> > implementation changes are easy to identify.
> > 
> > I might have ended up with too many patches though.
> > Want to mention... the whole "process" block could be moved to it's own
> > series if that would be easier to review.
> 
> I've been meaning to provide an in-depth review of these patches, but other things
> have been holding me up -- my apologies.
> 
> At a quick glance, a lot of your patches involve a few short patches that don't
> necessarily provide much context on their own. A lot of patches in this series can
> definitely be merged.
> 
> I think moving the "qemu process" code into its own series would be helpful. I would
> include something in the cover that they will benefit the hypervisor CPU baseline and 
> comparison patches. If you feel confident with your qemu process patches, then you 
> could also send your baseline patch series at the same time, and state that your 
> baseline patches rely on your QEMU process patches (make sure to include a mailing 
> list archive link in that header so reviewers can easily reference the other patch 
> series).
> 
> Also, make sure you CC the authors and contributors of the respective files that you
> touch. Most of them are listed at the top of the file. (I think Jiri might be interested
> in this series as well.)
> 
> So let's start there. Repost your qemu_process code as it's own series, and I'd recommend
> tagging it with "RFC" (Request For Comments) instead of giving it a version number. This
> will prompt reviewers that you're mainly looking for areas of improvement and some guidance.
> 
Thanks Collin,

The process stuff has been resubmitted in this patch series:
  [PATCH RFC 00/22] Move process code to qemu_process

The rest of this series can be resubmitted when the process changes are
solid.

> > 
> >> Many of the patches are cut / paste of existing code.  The patches that
> >> change functionality are as modular and minimal as possible to make
> >> reviewing easier.
> >>
> >> I attempted to make the new qemu_process functions
> >> consistent with the existing domain activation qemu_process functions.
> >>
> >> 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 last patch is based on past discussion of QEMU cpu
> >> expansion only returning migratable features except for one x86 case where
> >> non-migratable features are explicitly requested.  The patch records that features
> >> are migratable based on QEMU only returning migratable features.  The main result
> >> is the CPU xml for S390 CPU's contains the same migratability info the X86 currently
> >> does.  The testcases were updated to reflect the change.
> >>
> >> Every patch should compile independently if applied in sequence.
> >>
> >> Thanks,
> >> Chris
> >>
> >>
> >> Chris Venteicher (37):
> >>   qemu_monitor: Introduce qemuMonitorCPUModelInfoNew
> >>   qemu_monitor: Introduce qemuMonitorCPUModelInfo / JSON conversion
> >>   qemu_capabilities: Introduce virQEMuCapsMigratablePropsDiff
> >>   qemu_monitor: qemuMonitorGetCPUModelExpansion inputs and outputs
> >>     CPUModelInfo
> >>   qemu_process: Move process code from qemu_capabilities to qemu_process
> >>   qemu_process: Use qemuProcess prefix
> >>   qemu_process: Limit qemuProcessNew 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 qemuProcess struct for a single process
> >>   qemu_process: Persist stderr in qemuProcess struct
> >>   qemu_capabilities: Detect caps probe failure by checking monitor ptr
> >>   qemu_process: Introduce qemuProcessStartQmp
> >>   qemu_process: Add debug message in qemuProcessLaunchQmp
> >>   qemu_process: Collect monitor code in single function
> >>   qemu_process: Store libDir in qemuProcess struct
> >>   qemu_process: Setup paths within qemuProcessInitQmp
> >>   qemu_process: Stop retaining Qemu Monitor config in qemuProcess
> >>   qemu_process: Don't open monitor if process failed
> >>   qemu_process: Cleanup qemuProcess alloc function
> >>   qemu_process: Cleanup qemuProcessStopQmp 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_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                  | 567 ++++++++----------
> >>  src/qemu/qemu_capabilities.h                  |   4 +
> >>  src/qemu/qemu_driver.c                        | 219 ++++++-
> >>  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                       | 359 +++++++++++
> >>  src/qemu/qemu_process.h                       |  37 ++
> >>  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, 1388 insertions(+), 571 deletions(-)
> >>
> >> -- 
> >> 2.17.1
> >>
> > 
> 
> 
> -- 
> Respectfully,
> - Collin Walling
> 




More information about the libvir-list mailing list