On 09/24/2013 10:43 AM, Peter Krempa wrote:
The linux kernel recently added support for paravirtual spinlock
handling to avoid performance regressions on overcomitted hosts. This
feature needs to be turned in the hypervisor so that the guest OS is
s/turned in/turned on in/
notified about the possible support.
This patch adds a new feature "paravirt-spinlock" to the XML and
supporting code to enable the "kvm_pv_unhalt" pseudoCPU feature in qemu.
I'm guessing we can't split those without compiler warnings about not all enum
values being handled in the switch.
https://bugzilla.redhat.com/show_bug.cgi?id=1008989
---
This patch is RFC as qemu didn't add this to the upstream repo yet:
Now upstream:
http://git.qemu.org/?p=qemu.git;a=commitdiff;h=f010bc6
Pull request:
http://lists.nongnu.org/archive/html/qemu-devel/2013-09/msg03385.html
Original thread:
http://lists.nongnu.org/archive/html/qemu-devel/2013-09/msg03095.html
I'm sending it to get review feedback but will push it only after qemu will
have it.
docs/formatdomain.html.in | 7 ++++++
docs/schemas/domaincommon.rng | 10 ++++++++-
src/conf/domain_conf.c | 20 ++++++++++++++++-
src/conf/domain_conf.h | 1 +
src/qemu/qemu_command.c | 14 ++++++++++++
.../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 ++
11 files changed, 116 insertions(+), 2 deletions(-)
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
@@ -16742,6 +16759,7 @@ virDomainDefFormatInternal(virDomainDefPtr
def,
case VIR_DOMAIN_FEATURE_HAP:
case VIR_DOMAIN_FEATURE_VIRIDIAN:
case VIR_DOMAIN_FEATURE_PRIVNET:
+ case VIR_DOMAIN_FEATURE_PARAVIRT_SPINLOCK:
switch ((enum virDomainFeatureState) def->features[i]) {
case VIR_DOMAIN_FEATURE_STATE_ON:
/* output just the element */
Unlike the features above, this one can actually be turned off.
Jan