[libvirt] [PATCHv2 00/23] Better approach to add the "pvticketlocks" feature

Peter Krempa pkrempa at redhat.com
Tue Oct 15 12:30:29 UTC 2013


This version resolves conflicts with Eric's const correctnes series.

The paravirtual spinlock feature was introduced recently into the qemu and
linux code base. To test it you need the most recent -rc version of the linux
kernel and the git version of qemu.

As the requirements to activate this feature in the guest are really volatile
(kernel support, qemu support .. .) I decided to improve the original version
so that it detects if the feature was actually enabled in the guest. This
avoids possible problems with breaking guest ABI when migrating between two
hosts with different kernels. Additionally we may start enforcin other features
too.

This patchset is partialy based on Jiri's work on getting actual cpu definition
from a running qemu.

Jiri Denemark (8):
  cpu: Add support for loading and storing CPU data
  cpu: x86: Rename struct cpuX86cpuid as virCPUx86CPUID
  cpu: x86: Rename struct cpuX86Data as virCPUx86Data
  cpu: x86: Rename x86DataFree() as virCPUx86DataFree()
  cpu: x86: Rename x86MakeCPUData as virCPUx86MakeData
  cpu: x86: Rename x86DataAddCpuid as virCPUx86DataAddCPUID
  cpu: Export few x86-specific APIs
  qemu: Add monitor APIs to fetch CPUID data from QEMU

Peter Krempa (15):
  schema: Rename option to make it reusable
  conf: Clean up few error messages
  qemu: command: Fix macro indentation
  cpu: x86: Rename data_iterator and DATA_ITERATOR_INIT
  cpu: x86: Fix return types of x86cpuidMatch and x86cpuidMatchMasked
  cpu: x86: Fix function header formatting and whitespace
  cpu: x86: Use whitespace to clarify context and use consistent labels
  cpu: x86: Clean up error messages in x86VendorLoad()
  qemu: Clean up check of maximum cpu count supported by a machine type
  cpu_x86: Refactor storage of CPUID data to add support for KVM
    features
  cpu: x86: Parse the CPU feature map only once
  cpu: x86: Add internal CPUID features support and KVM feature bits
  conf: Refactor storing and usage of feature flags
  qemu: Add support for paravirtual spinlocks in the guest
  qemu: process: Validate specific CPUID flags of a guest

 docs/formatdomain.html.in                          |   7 +
 docs/schemas/domaincommon.rng                      |  18 +-
 src/conf/domain_conf.c                             | 200 ++++--
 src/conf/domain_conf.h                             |   3 +-
 src/cpu/cpu.c                                      |  41 ++
 src/cpu/cpu.h                                      |  16 +-
 src/cpu/cpu_x86.c                                  | 699 ++++++++++++---------
 src/cpu/cpu_x86.h                                  |   9 +
 src/cpu/cpu_x86_data.h                             |  26 +-
 src/libvirt_private.syms                           |   8 +
 src/libxl/libxl_conf.c                             |   9 +-
 src/lxc/lxc_container.c                            |   6 +-
 src/qemu/qemu_command.c                            |  31 +-
 src/qemu/qemu_monitor.c                            |  21 +
 src/qemu/qemu_monitor.h                            |   3 +
 src/qemu/qemu_monitor_json.c                       | 107 ++++
 src/qemu/qemu_monitor_json.h                       |   3 +
 src/qemu/qemu_process.c                            |  50 +-
 src/vbox/vbox_tmpl.c                               |  45 +-
 src/xenapi/xenapi_driver.c                         |  10 +-
 src/xenapi/xenapi_utils.c                          |  22 +-
 src/xenxs/xen_sxpr.c                               |  20 +-
 src/xenxs/xen_xm.c                                 |  30 +-
 tests/Makefile.am                                  |   1 +
 .../qemumonitorjson-getcpu-empty.data              |   2 +
 .../qemumonitorjson-getcpu-empty.json              |  46 ++
 .../qemumonitorjson-getcpu-filtered.data           |   4 +
 .../qemumonitorjson-getcpu-filtered.json           |  46 ++
 .../qemumonitorjson-getcpu-full.data               |   5 +
 .../qemumonitorjson-getcpu-full.json               |  46 ++
 .../qemumonitorjson-getcpu-host.data               |   6 +
 .../qemumonitorjson-getcpu-host.json               |  45 ++
 tests/qemumonitorjsontest.c                        |  76 +++
 .../qemuxml2argv-pv-spinlock-disabled.args         |   5 +
 .../qemuxml2argv-pv-spinlock-disabled.xml          |  26 +
 .../qemuxml2argv-pv-spinlock-enabled.args          |   5 +
 .../qemuxml2argv-pv-spinlock-enabled.xml           |  26 +
 tests/qemuxml2argvtest.c                           |   2 +
 tests/qemuxml2xmltest.c                            |   2 +
 39 files changed, 1279 insertions(+), 448 deletions(-)
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-getcpu-empty.data
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-getcpu-empty.json
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-getcpu-filtered.data
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-getcpu-filtered.json
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-getcpu-full.data
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-getcpu-full.json
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-getcpu-host.data
 create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-getcpu-host.json
 create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pv-spinlock-disabled.args
 create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pv-spinlock-disabled.xml
 create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pv-spinlock-enabled.args
 create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pv-spinlock-enabled.xml

-- 
1.8.3.2




More information about the libvir-list mailing list