diff mbox

[libvirt,V2,1/4] conf: add 'state' attribute to <hap> feature

Message ID 56DEFFB7.8030001@oracle.com (mailing list archive)
State New, archived
Headers show

Commit Message

Joao Martins March 8, 2016, 4:37 p.m. UTC
On 03/01/2016 04:00 AM, Jim Fehlig wrote:
> Most hypervisors use Hardware Assisted Paging by default and don't
> require specifying the feature in domain conf. But some hypervisors
> support disabling HAP on a per-domain basis. To enable HAP by default
> yet provide a knob to disable it, extend the <hap> feature with a
> 'state=on|off' attribute, similar to <pvspinlock> and <vmport> features.
> 
> In the absence of <hap>, the hypervisor default (on) is used. <hap>
> without the state attribute would be the same as <hap state='on'/> for
> backwards compatibility. And of course <hap state='off'/> disables hap.
> 
> Signed-off-by: Jim Fehlig <jfehlig@suse.com>
> ---
>  docs/formatdomain.html.in     | 6 ++++--
>  docs/schemas/domaincommon.rng | 6 +++++-
>  src/conf/domain_conf.c        | 4 ++--
>  3 files changed, 11 insertions(+), 5 deletions(-)
> 
> diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
> index 5016772..c06bcf3 100644
> --- a/docs/formatdomain.html.in
> +++ b/docs/formatdomain.html.in
> @@ -1494,8 +1494,10 @@
>        Interrupt) for the guest.
>        </dd>
>        <dt><code>hap</code></dt>
> -      <dd>Enable use of Hardware Assisted Paging if available in
> -        the hardware.
> +      <dd>Depending on the <code>state</code> attribute (values <code>on</code>,
> +        <code>off</code>) enable or disable use of Hardware Assisted Paging.
> +        The default is <code>on</code> if the hypervisor detects availability
> +        of Hardware Assisted Paging.
>        </dd>
>        <dt><code>viridian</code></dt>
>        <dd>Enable Viridian hypervisor extensions for paravirtualizing
> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
> index 67af93a..dd6e93a 100644
> --- a/docs/schemas/domaincommon.rng
> +++ b/docs/schemas/domaincommon.rng
> @@ -4108,7 +4108,11 @@
>            </optional>
>            <optional>
>              <element name="hap">
> -              <empty/>
> +              <optional>
> +                <attribute name="state">
> +                  <ref name="virOnOff"/>
> +                </attribute>
> +              </optional>
Perhaps <ref name="featurestate"/> would be better (see chunk below) ? That one
appears to be a reference of what you are adding above, and it's the same as
pvspinlock. Though some other elements don't appear to use this, not sure why.


Other that,

Reviewed-by: Joao Martins <joao.m.martins@oracle.com>

>              </element>
>            </optional>
>            <optional>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 79758d4..714bbfc 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -15296,7 +15296,6 @@ virDomainDefParseXML(xmlDocPtr xml,
>              /* fallthrough */
>          case VIR_DOMAIN_FEATURE_ACPI:
>          case VIR_DOMAIN_FEATURE_PAE:
> -        case VIR_DOMAIN_FEATURE_HAP:
>          case VIR_DOMAIN_FEATURE_VIRIDIAN:
>          case VIR_DOMAIN_FEATURE_PRIVNET:
>          case VIR_DOMAIN_FEATURE_HYPERV:
> @@ -15321,6 +15320,7 @@ virDomainDefParseXML(xmlDocPtr xml,
>              ctxt->node = node;
>              break;
>  
> +        case VIR_DOMAIN_FEATURE_HAP:
>          case VIR_DOMAIN_FEATURE_PMU:
>          case VIR_DOMAIN_FEATURE_PVSPINLOCK:
>          case VIR_DOMAIN_FEATURE_VMPORT:
> @@ -22043,7 +22043,6 @@ virDomainDefFormatInternal(virDomainDefPtr def,
>              switch ((virDomainFeature) i) {
>              case VIR_DOMAIN_FEATURE_ACPI:
>              case VIR_DOMAIN_FEATURE_PAE:
> -            case VIR_DOMAIN_FEATURE_HAP:
>              case VIR_DOMAIN_FEATURE_VIRIDIAN:
>              case VIR_DOMAIN_FEATURE_PRIVNET:
>                  switch ((virTristateSwitch) def->features[i]) {
> @@ -22065,6 +22064,7 @@ virDomainDefFormatInternal(virDomainDefPtr def,
>  
>                  break;
>  
> +            case VIR_DOMAIN_FEATURE_HAP:
>              case VIR_DOMAIN_FEATURE_PMU:
>              case VIR_DOMAIN_FEATURE_PVSPINLOCK:
>              case VIR_DOMAIN_FEATURE_VMPORT:
>

Comments

Jim Fehlig March 8, 2016, 8:21 p.m. UTC | #1
Joao Martins wrote:
> 
> On 03/01/2016 04:00 AM, Jim Fehlig wrote:
>> Most hypervisors use Hardware Assisted Paging by default and don't
>> require specifying the feature in domain conf. But some hypervisors
>> support disabling HAP on a per-domain basis. To enable HAP by default
>> yet provide a knob to disable it, extend the <hap> feature with a
>> 'state=on|off' attribute, similar to <pvspinlock> and <vmport> features.
>>
>> In the absence of <hap>, the hypervisor default (on) is used. <hap>
>> without the state attribute would be the same as <hap state='on'/> for
>> backwards compatibility. And of course <hap state='off'/> disables hap.
>>
>> Signed-off-by: Jim Fehlig <jfehlig@suse.com>
>> ---
>>  docs/formatdomain.html.in     | 6 ++++--
>>  docs/schemas/domaincommon.rng | 6 +++++-
>>  src/conf/domain_conf.c        | 4 ++--
>>  3 files changed, 11 insertions(+), 5 deletions(-)
>>
>> diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
>> index 5016772..c06bcf3 100644
>> --- a/docs/formatdomain.html.in
>> +++ b/docs/formatdomain.html.in
>> @@ -1494,8 +1494,10 @@
>>        Interrupt) for the guest.
>>        </dd>
>>        <dt><code>hap</code></dt>
>> -      <dd>Enable use of Hardware Assisted Paging if available in
>> -        the hardware.
>> +      <dd>Depending on the <code>state</code> attribute (values <code>on</code>,
>> +        <code>off</code>) enable or disable use of Hardware Assisted Paging.
>> +        The default is <code>on</code> if the hypervisor detects availability
>> +        of Hardware Assisted Paging.
>>        </dd>
>>        <dt><code>viridian</code></dt>
>>        <dd>Enable Viridian hypervisor extensions for paravirtualizing
>> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
>> index 67af93a..dd6e93a 100644
>> --- a/docs/schemas/domaincommon.rng
>> +++ b/docs/schemas/domaincommon.rng
>> @@ -4108,7 +4108,11 @@
>>            </optional>
>>            <optional>
>>              <element name="hap">
>> -              <empty/>
>> +              <optional>
>> +                <attribute name="state">
>> +                  <ref name="virOnOff"/>
>> +                </attribute>
>> +              </optional>
> Perhaps <ref name="featurestate"/> would be better (see chunk below) ? That one
> appears to be a reference of what you are adding above, and it's the same as
> pvspinlock. Though some other elements don't appear to use this, not sure why.

Ah, thanks for catching that. 'featurestate' is definitely the better choice here.

> 
> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
> index 89d3a6b..141122c 100644
> --- a/docs/schemas/domaincommon.rng
> +++ b/docs/schemas/domaincommon.rng
> @@ -4132,9 +4132,7 @@
>            <optional>
>              <element name="hap">
>                <optional>
> -                <attribute name="state">
> -                  <ref name="virOnOff"/>
> -                </attribute>
> +                <ref name="featurestate"/>
>                </optional>
>              </element>
>            </optional>
> 
> Other that,
> 
> Reviewed-by: Joao Martins <joao.m.martins@oracle.com>

Thanks. I've squashed in your diff, but should probably wait for any additional
comments before pushing this series.

Regards,
Jim
diff mbox

Patch

diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index 89d3a6b..141122c 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -4132,9 +4132,7 @@ 
           <optional>
             <element name="hap">
               <optional>
-                <attribute name="state">
-                  <ref name="virOnOff"/>
-                </attribute>
+                <ref name="featurestate"/>
               </optional>
             </element>
           </optional>