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