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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list