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