[libvirt] [RFC 4/6] conf: Expose GIC capabilities

John Ferlan jferlan at redhat.com
Wed Mar 30 20:10:39 UTC 2016



On 03/21/2016 01:28 PM, Andrea Bolognani wrote:
> Add information about GIC capabilities to virDomainCaps and update
> the formatter to include them in the XML output.
> ---
>  src/conf/domain_capabilities.c                       | 20 ++++++++++++++++++++
>  src/conf/domain_capabilities.h                       | 10 ++++++++++
>  tests/domaincapsschemadata/domaincaps-basic.xml      |  3 +++
>  tests/domaincapsschemadata/domaincaps-full.xml       |  3 +++
>  .../domaincaps-qemu_1.6.50-1.xml                     |  3 +++
>  5 files changed, 39 insertions(+)
> 
> diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c
> index 466c0c6..d29ed81 100644
> --- a/src/conf/domain_capabilities.c
> +++ b/src/conf/domain_capabilities.c
> @@ -262,6 +262,18 @@ virDomainCapsDeviceHostdevFormat(virBufferPtr buf,
>  }
>  
>  
> +static void
> +virDomainCapsFeatureGICFormat(virBufferPtr buf,
> +                              virDomainCapsFeatureGICPtr const gic)
> +{
> +    FORMAT_PROLOGUE(gic);
> +
> +    ENUM_PROCESS(gic, version, virGICVersionTypeToString);
> +
> +    FORMAT_EPILOGUE(gic);
> +}
> +
> +
>  static int
>  virDomainCapsFormatInternal(virBufferPtr buf,
>                              virDomainCapsPtr const caps)
> @@ -291,6 +303,14 @@ virDomainCapsFormatInternal(virBufferPtr buf,
>      virBufferAdjustIndent(buf, -2);
>      virBufferAddLit(buf, "</devices>\n");
>  
> +    virBufferAddLit(buf, "<features>\n");
> +    virBufferAdjustIndent(buf, 2);
> +
> +    virDomainCapsFeatureGICFormat(buf, &caps->gic);
> +
> +    virBufferAdjustIndent(buf, -2);
> +    virBufferAddLit(buf, "</features>\n");
> +
>      virBufferAdjustIndent(buf, -2);
>      virBufferAddLit(buf, "</domainCapabilities>\n");
>      return 0;
> diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h
> index 3eacb35..95afe5e 100644
> --- a/src/conf/domain_capabilities.h
> +++ b/src/conf/domain_capabilities.h
> @@ -81,6 +81,13 @@ struct _virDomainCapsDeviceHostdev {
>      /* add new fields here */
>  };
>  
> +typedef struct _virDomainCapsFeatureGIC virDomainCapsFeatureGIC;
> +typedef virDomainCapsFeatureGIC *virDomainCapsFeatureGICPtr;
> +struct _virDomainCapsFeatureGIC {
> +    bool supported;

Hmmm.. I see - I guess depends on how patch 1/6 is handled...

> +    virDomainCapsEnum version; /* Info about virGICVersion */
> +};
> +
>  struct _virDomainCaps {
>      virObjectLockable parent;
>  
> @@ -96,6 +103,9 @@ struct _virDomainCaps {
>      virDomainCapsDeviceDisk disk;
>      virDomainCapsDeviceHostdev hostdev;
>      /* add new domain devices here */
> +
> +    virDomainCapsFeatureGIC gic;
> +    /* add new domain features here */
>  };
>  
>  virDomainCapsPtr virDomainCapsNew(const char *path,
> diff --git a/tests/domaincapsschemadata/domaincaps-basic.xml b/tests/domaincapsschemadata/domaincaps-basic.xml
> index 6171393..6587d56 100644
> --- a/tests/domaincapsschemadata/domaincaps-basic.xml
> +++ b/tests/domaincapsschemadata/domaincaps-basic.xml
> @@ -8,4 +8,7 @@
>      <disk supported='no'/>
>      <hostdev supported='no'/>
>    </devices>
> +  <features>
> +    <gic supported='no'/>
> +  </features>
>  </domainCapabilities>
> diff --git a/tests/domaincapsschemadata/domaincaps-full.xml b/tests/domaincapsschemadata/domaincaps-full.xml
> index 96202bc..d4f91fa 100644
> --- a/tests/domaincapsschemadata/domaincaps-full.xml
> +++ b/tests/domaincapsschemadata/domaincaps-full.xml
> @@ -68,4 +68,7 @@
>        </enum>
>      </hostdev>
>    </devices>
> +  <features>
> +    <gic supported='no'/>
> +  </features>
>  </domainCapabilities>
> diff --git a/tests/domaincapsschemadata/domaincaps-qemu_1.6.50-1.xml b/tests/domaincapsschemadata/domaincaps-qemu_1.6.50-1.xml
> index 37d2102..990661b 100644
> --- a/tests/domaincapsschemadata/domaincaps-qemu_1.6.50-1.xml
> +++ b/tests/domaincapsschemadata/domaincaps-qemu_1.6.50-1.xml
> @@ -56,4 +56,7 @@
>        </enum>
>      </hostdev>
>    </devices>
> +  <features>
> +    <gic supported='no'/>
> +  </features>
>  </domainCapabilities>
> 


I first wondered why the XML file was modified, but later understood -
sort of... Still not fully clear on how what this schema output should
look like... For prior to 2.6 should it even be printed?  For 2.6 and
beyond what would it look like?

John




More information about the libvir-list mailing list