[libvirt] [PATCH 1/2] conf: add crash to hyperv features

Dmitry Guryanov dguryanov at virtuozzo.com
Thu Nov 5 10:34:19 UTC 2015


On 10/26/2015 01:23 PM, Dmitry Andreev wrote:
> Add crash CPU feature for Hyper-V. Hyper-V crash MSR's can be used
> by Hyper-V based guests to notify about occurred guest crash.
>
> XML:
> <features>
>    <hyperv>
>      <crash state='on'/>
>    </hyperv>
> </features>

Looks good to me, ACK.

By the way, which commit has added this feature to qemu? Is it this one
http://git.qemu.org/?p=qemu.git;a=commitdiff;h=f2a53c9e05a24352a0f9740db0539ce5aeed22ca 
?

> ---
>   docs/formatdomain.html.in     | 7 +++++++
>   docs/schemas/domaincommon.rng | 5 +++++
>   src/conf/domain_conf.c        | 6 +++++-
>   src/conf/domain_conf.h        | 1 +
>   4 files changed, 18 insertions(+), 1 deletion(-)
>
> diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
> index c88b032..87abeb7 100644
> --- a/docs/formatdomain.html.in
> +++ b/docs/formatdomain.html.in
> @@ -1460,6 +1460,7 @@
>         <relaxed state='on'/>
>         <vapic state='on'/>
>         <spinlocks state='on' retries='4096'/>
> +      <crash state='on'/>
>       </hyperv>
>       <kvm>
>         <hidden state='on'/>
> @@ -1535,6 +1536,12 @@
>             <td>on, off; retries - at least 4095</td>
>             <td><span class="since">1.1.0 (QEMU only)</span></td>
>           </tr>
> +        <tr>
> +          <td>crash</td>
> +          <td>Enable guest crash notification</td>
> +          <td>on, off</td>
> +          <td><span class="since">2.5.0 (QEMU only)</span></td>
> +        </tr>
>         </table>
>         </dd>
>         <dt><code>pvspinlock</code></dt>
> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
> index f196177..07e73df 100644
> --- a/docs/schemas/domaincommon.rng
> +++ b/docs/schemas/domaincommon.rng
> @@ -4827,6 +4827,11 @@
>               </optional>
>             </element>
>           </optional>
> +        <optional>
> +          <element name="crash">
> +            <ref name="featurestate"/>
> +          </element>
> +        </optional>
>         </interleave>
>       </element>
>     </define>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 0c559d2..00f291d 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -159,7 +159,8 @@ VIR_ENUM_IMPL(virDomainCapabilitiesPolicy, VIR_DOMAIN_CAPABILITIES_POLICY_LAST,
>   VIR_ENUM_IMPL(virDomainHyperv, VIR_DOMAIN_HYPERV_LAST,
>                 "relaxed",
>                 "vapic",
> -              "spinlocks")
> +              "spinlocks",
> +              "crash")
>   
>   VIR_ENUM_IMPL(virDomainKVM, VIR_DOMAIN_KVM_LAST,
>                 "hidden")
> @@ -15466,6 +15467,7 @@ virDomainDefParseXML(xmlDocPtr xml,
>               switch ((virDomainHyperv) feature) {
>                   case VIR_DOMAIN_HYPERV_RELAXED:
>                   case VIR_DOMAIN_HYPERV_VAPIC:
> +                case VIR_DOMAIN_HYPERV_CRASH:
>                       if (!(tmp = virXPathString("string(./@state)", ctxt))) {
>                           virReportError(VIR_ERR_XML_ERROR,
>                                          _("missing 'state' attribute for "
> @@ -17535,6 +17537,7 @@ virDomainDefFeaturesCheckABIStability(virDomainDefPtr src,
>               switch ((virDomainHyperv) i) {
>               case VIR_DOMAIN_HYPERV_RELAXED:
>               case VIR_DOMAIN_HYPERV_VAPIC:
> +            case VIR_DOMAIN_HYPERV_CRASH:
>                   if (src->hyperv_features[i] != dst->hyperv_features[i]) {
>                       virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
>                                      _("State of HyperV enlightenment "
> @@ -22091,6 +22094,7 @@ virDomainDefFormatInternal(virDomainDefPtr def,
>                       switch ((virDomainHyperv) j) {
>                       case VIR_DOMAIN_HYPERV_RELAXED:
>                       case VIR_DOMAIN_HYPERV_VAPIC:
> +                    case VIR_DOMAIN_HYPERV_CRASH:
>                           if (def->hyperv_features[j])
>                               virBufferAsprintf(buf, "<%s state='%s'/>\n",
>                                                 virDomainHypervTypeToString(j),
> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
> index fd4ef82..4f35b6c 100644
> --- a/src/conf/domain_conf.h
> +++ b/src/conf/domain_conf.h
> @@ -1692,6 +1692,7 @@ typedef enum {
>       VIR_DOMAIN_HYPERV_RELAXED = 0,
>       VIR_DOMAIN_HYPERV_VAPIC,
>       VIR_DOMAIN_HYPERV_SPINLOCKS,
> +    VIR_DOMAIN_HYPERV_CRASH,
>   
>       VIR_DOMAIN_HYPERV_LAST
>   } virDomainHyperv;




More information about the libvir-list mailing list