[libvirt] [PATCH RFC 3/3] qemu: Add support for paravirtual spinlocks in the guest

Ján Tomko jtomko at redhat.com
Wed Sep 25 15:43:08 UTC 2013


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




More information about the libvir-list mailing list