[libvirt] [V4 RESEND PATCH] Expose resource control capabilites on cache bank

Eli Qiao qiaoliyong at gmail.com
Wed May 31 01:24:37 UTC 2017


ping 


On Wednesday, 17 May 2017 at 5:08 PM, taget wrote:

> From: Eli Qiao <liyong.qiao at intel.com (mailto:liyong.qiao at intel.com)>
> 
> * This patch amends the cache bank capability as follow:
> 
> <cache>
> <bank id='0' level='3' type='unified' size='15360' unit='KiB' cpus='0-5'>
> <control min='768' unit='KiB' scope='both' max_allocation='4'/>
> </bank>
> <bank id='1' level='3' type='unified' size='15360' unit='KiB' cpus='6-11'>
> <control min='768' unit='KiB' scope='both' max_allocation='4'/>
> </bank>
> </cache>
> 
> For CDP enabled on x86 arch, we will have:
> <cache>
> <bank id='0' level='3' type='unified' size='15360' unit='KiB' cpus='0-5'>
> <control min='768' unit='KiB' scope='code' max_allocation='4'/>
> <control min='768' unit='KiB' scope='data' max_allocation='4'/>
> </bank>
> ...
> 
> * Added a new testdata directory `linux-resctrl-cdp` to test CDP enabled
> case.
> 
> * Along with vircaps2xmltest case updated.
> 
> P.S. here the scope is from /sys/fs/resctrl/info/L3{"" "code" "data"}, I
> keep it capital upper as I need to use a macro to convert from enum to
> string easily.
> 
> Signed-off-by: Eli Qiao <liyong.qiao at intel.com (mailto:liyong.qiao at intel.com)>
> ---
> docs/schemas/capability.rng | 20 ++++
> src/conf/capabilities.c | 133 ++++++++++++++++++++-
> src/conf/capabilities.h | 10 ++
> .../vircaps2xmldata/linux-resctrl-cdp/resctrl/cpus | 1 +
> .../linux-resctrl-cdp/resctrl/info/L3CODE/cbm_mask | 1 +
> .../resctrl/info/L3CODE/min_cbm_bits | 1 +
> .../resctrl/info/L3CODE/num_closids | 1 +
> .../linux-resctrl-cdp/resctrl/info/L3DATA/cbm_mask | 1 +
> .../resctrl/info/L3DATA/min_cbm_bits | 1 +
> .../resctrl/info/L3DATA/num_closids | 1 +
> .../linux-resctrl-cdp/resctrl/manualres/cpus | 1 +
> .../linux-resctrl-cdp/resctrl/manualres/schemata | 2 +
> .../linux-resctrl-cdp/resctrl/manualres/tasks | 0
> .../linux-resctrl-cdp/resctrl/schemata | 2 +
> .../linux-resctrl-cdp/resctrl/tasks | 0
> tests/vircaps2xmldata/linux-resctrl-cdp/system | 1 +
> .../vircaps2xmldata/vircaps-x86_64-resctrl-cdp.xml | 55 +++++++++
> tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml | 8 +-
> tests/vircaps2xmltest.c | 8 ++
> 19 files changed, 244 insertions(+), 3 deletions(-)
> create mode 100644 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/cpus
> create mode 100755 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3CODE/cbm_mask
> create mode 100755 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3CODE/min_cbm_bits
> create mode 100755 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3CODE/num_closids
> create mode 100755 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/cbm_mask
> create mode 100755 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/min_cbm_bits
> create mode 100755 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/num_closids
> create mode 100644 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/manualres/cpus
> create mode 100644 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/manualres/schemata
> create mode 100644 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/manualres/tasks
> create mode 100644 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/schemata
> create mode 100644 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/tasks
> create mode 120000 tests/vircaps2xmldata/linux-resctrl-cdp/system
> create mode 100644 tests/vircaps2xmldata/vircaps-x86_64-resctrl-cdp.xml
> 
> diff --git a/docs/schemas/capability.rng b/docs/schemas/capability.rng
> index 26f0aa2..927fc18 100644
> --- a/docs/schemas/capability.rng
> +++ b/docs/schemas/capability.rng
> @@ -277,6 +277,26 @@
> <attribute name='cpus'>
> <ref name='cpuset'/>
> </attribute>
> + <zeroOrMore>
> + <element name='control'>
> + <attribute name='min'>
> + <ref name='unsignedInt'/>
> + </attribute>
> + <attribute name='unit'>
> + <ref name='unit'/>
> + </attribute>
> + <attribute name='scope'>
> + <choice>
> + <value>both</value>
> + <value>code</value>
> + <value>data</value>
> + </choice>
> + </attribute>
> + <attribute name='max_allocation'>
> + <ref name='unsignedInt'/>
> + </attribute>
> + </element>
> + </zeroOrMore>
> </element>
> </oneOrMore>
> </element>
> diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c
> index d699b08..c4a1fdf 100644
> --- a/src/conf/capabilities.c
> +++ b/src/conf/capabilities.c
> @@ -51,6 +51,7 @@
> #define VIR_FROM_THIS VIR_FROM_CAPABILITIES
> 
> #define SYSFS_SYSTEM_PATH "/sys/devices/system"
> +#define SYSFS_RESCTRL_PATH "/sys/fs/resctrl"
> 
> VIR_LOG_INIT("conf.capabilities")
> 
> @@ -872,6 +873,9 @@ virCapabilitiesFormatCaches(virBufferPtr buf,
> virCapsHostCacheBankPtr *caches)
> {
> size_t i = 0;
> + size_t j = 0;
> + int indent = virBufferGetIndent(buf, false);
> + virBuffer controlBuf = VIR_BUFFER_INITIALIZER;
> 
> if (!ncaches)
> return 0;
> @@ -893,13 +897,35 @@ virCapabilitiesFormatCaches(virBufferPtr buf,
> */
> virBufferAsprintf(buf,
> "<bank id='%u' level='%u' type='%s' "
> - "size='%llu' unit='%s' cpus='%s'/>\n",
> + "size='%llu' unit='%s' cpus='%s'",
> bank->id, bank->level,
> virCacheTypeToString(bank->type),
> bank->size >> (kilos * 10),
> kilos ? "KiB" : "B",
> cpus_str);
> 
> + virBufferAdjustIndent(&controlBuf, indent + 4);
> + for (j = 0; j < bank->ncontrols; j++) {
> + bool min_kilos = !(bank->controls[j]->min % 1024);
> + virBufferAsprintf(&controlBuf,
> + "<control min='%llu' unit='%s' "
> + "scope='%s' max_allocation='%u'/>\n",
> + bank->controls[j]->min >> (min_kilos * 10),
> + min_kilos ? "KiB" : "B",
> + virCacheTypeToString(bank->controls[j]->scope),
> + bank->controls[j]->max_allocation);
> + }
> +
> + if (virBufferUse(&controlBuf)) {
> + virBufferAddLit(buf, ">\n");
> + virBufferAddBuffer(buf, &controlBuf);
> + virBufferAddLit(buf, "</bank>\n");
> +
> + } else {
> + virBufferAddLit(buf, "/>\n");
> + }
> +
> + virBufferFreeAndReset(&controlBuf);
> VIR_FREE(cpus_str);
> }
> 
> @@ -1519,13 +1545,102 @@ virCapsHostCacheBankEquals(virCapsHostCacheBankPtr a,
> void
> virCapsHostCacheBankFree(virCapsHostCacheBankPtr ptr)
> {
> + size_t i;
> +
> if (!ptr)
> return;
> 
> virBitmapFree(ptr->cpus);
> + for (i = 0; i < ptr->ncontrols; i++)
> + VIR_FREE(ptr->controls[i]);
> + VIR_FREE(ptr->controls);
> VIR_FREE(ptr);
> }
> 
> +/* test which TYPE of cache control supported
> + * -1: don't support
> + * 0: cat
> + * 1: cdp
> + */
> +static int
> +virCapabilitiesGetCacheControlType(virCapsHostCacheBankPtr bank)
> +{
> + int ret = -1;
> + char *path = NULL;
> + if (virAsprintf(&path,
> + SYSFS_RESCTRL_PATH "/info/L%u",
> + bank->level) < 0)
> + return -1;
> +
> + if (virFileExists(path)) {
> + ret = 0;
> + } else {
> + VIR_FREE(path);
> + /* for CDP enabled case, CODE and DATA will show together */
> + if (virAsprintf(&path,
> + SYSFS_RESCTRL_PATH "/info/L%uCODE",
> + bank->level) < 0)
> + return -1;
> + if (virFileExists(path))
> + ret = 1;
> + }
> +
> + VIR_FREE(path);
> + return ret;
> +}
> +
> +static int
> +virCapabilitiesGetCacheControl(virCapsHostCacheBankPtr bank,
> + virCacheType scope)
> +{
> + int ret = -1;
> + char *path = NULL;
> + char *cbm_mask = NULL;
> + char *type_upper = NULL;
> + virCapsHostCacheControlPtr control;
> +
> + if (VIR_ALLOC(control) < 0)
> + goto cleanup;
> +
> + if ((scope > VIR_CACHE_TYPE_BOTH)
> + && (virStringToUpper(&type_upper, virCacheTypeToString(scope)) < 0))
> + goto cleanup;
> +
> + if (virFileReadValueUint(&control->max_allocation,
> + SYSFS_RESCTRL_PATH "/info/L%u%s/num_closids",
> + bank->level,
> + type_upper ? type_upper : "") < 0)
> + goto cleanup;
> +
> + if (virFileReadValueString(&cbm_mask,
> + SYSFS_RESCTRL_PATH
> + "/info/L%u%s/cbm_mask",
> + bank->level,
> + type_upper ? type_upper: "") < 0)
> + goto cleanup;
> +
> + virStringTrimOptionalNewline(cbm_mask);
> +
> + /* cbm_mask: cache bit mask, it's in hex, eg: fffff */
> + control->min = bank->size / (strlen(cbm_mask) * 4);
> +
> + control->scope = scope;
> +
> + if (VIR_APPEND_ELEMENT(bank->controls,
> + bank->ncontrols,
> + control) < 0)
> + goto cleanup;
> +
> + ret = 0;
> +
> + cleanup:
> + VIR_FREE(path);
> + VIR_FREE(cbm_mask);
> + VIR_FREE(type_upper);
> + VIR_FREE(control);
> + return ret;
> +}
> +
> int
> virCapabilitiesInitCaches(virCapsPtr caps)
> {
> @@ -1534,6 +1649,7 @@ virCapabilitiesInitCaches(virCapsPtr caps)
> ssize_t pos = -1;
> DIR *dirp = NULL;
> int ret = -1;
> + int typeret;
> char *path = NULL;
> char *type = NULL;
> struct dirent *ent = NULL;
> @@ -1607,12 +1723,27 @@ virCapabilitiesInitCaches(virCapsPtr caps)
> SYSFS_SYSTEM_PATH, pos, ent->d_name) < 0)
> goto cleanup;
> 
> + typeret = virCapabilitiesGetCacheControlType(bank);
> +
> + if (typeret == 0) {
> + if (virCapabilitiesGetCacheControl(bank,
> + VIR_CACHE_TYPE_BOTH) < 0)
> + goto cleanup;
> + } else if (typeret == 1) {
> + if ((virCapabilitiesGetCacheControl(bank,
> + VIR_CACHE_TYPE_CODE) < 0) ||
> + (virCapabilitiesGetCacheControl(bank,
> + VIR_CACHE_TYPE_DATA) < 0))
> + goto cleanup;
> + }
> +
> kernel_type = virCacheKernelTypeFromString(type);
> if (kernel_type < 0) {
> virReportError(VIR_ERR_INTERNAL_ERROR,
> _("Unknown cache type '%s'"), type);
> goto cleanup;
> }
> +
> bank->type = kernel_type;
> VIR_FREE(type);
> 
> diff --git a/src/conf/capabilities.h b/src/conf/capabilities.h
> index a8cccf7..ee87d59 100644
> --- a/src/conf/capabilities.h
> +++ b/src/conf/capabilities.h
> @@ -148,6 +148,14 @@ typedef enum {
> 
> VIR_ENUM_DECL(virCache);
> 
> +typedef struct _virCapsHostCacheControl virCapsHostCacheControl;
> +typedef virCapsHostCacheControl *virCapsHostCacheControlPtr;
> +struct _virCapsHostCacheControl {
> + unsigned long long min; /* minimum cache control size in B */
> + virCacheType scope; /* data, code or both */
> + unsigned int max_allocation; /* max number of supported allocations */
> +};
> +
> typedef struct _virCapsHostCacheBank virCapsHostCacheBank;
> typedef virCapsHostCacheBank *virCapsHostCacheBankPtr;
> struct _virCapsHostCacheBank {
> @@ -156,6 +164,8 @@ struct _virCapsHostCacheBank {
> unsigned long long size; /* B */
> virCacheType type; /* Data, Instruction or Unified */
> virBitmapPtr cpus; /* All CPUs that share this bank */
> + size_t ncontrols;
> + virCapsHostCacheControlPtr *controls;
> };
> 
> typedef struct _virCapsHost virCapsHost;
> diff --git a/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/cpus b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/cpus
> new file mode 100644
> index 0000000..b3a79aa
> --- /dev/null
> +++ b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/cpus
> @@ -0,0 +1 @@
> +ffffff,ffffffff,ffffffff
> diff --git a/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3CODE/cbm_mask b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3CODE/cbm_mask
> new file mode 100755
> index 0000000..78031da
> --- /dev/null
> +++ b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3CODE/cbm_mask
> @@ -0,0 +1 @@
> +fffff
> diff --git a/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3CODE/min_cbm_bits b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3CODE/min_cbm_bits
> new file mode 100755
> index 0000000..d00491f
> --- /dev/null
> +++ b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3CODE/min_cbm_bits
> @@ -0,0 +1 @@
> +1
> diff --git a/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3CODE/num_closids b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3CODE/num_closids
> new file mode 100755
> index 0000000..45a4fb7
> --- /dev/null
> +++ b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3CODE/num_closids
> @@ -0,0 +1 @@
> +8
> diff --git a/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/cbm_mask b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/cbm_mask
> new file mode 100755
> index 0000000..78031da
> --- /dev/null
> +++ b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/cbm_mask
> @@ -0,0 +1 @@
> +fffff
> diff --git a/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/min_cbm_bits b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/min_cbm_bits
> new file mode 100755
> index 0000000..d00491f
> --- /dev/null
> +++ b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/min_cbm_bits
> @@ -0,0 +1 @@
> +1
> diff --git a/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/num_closids b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/num_closids
> new file mode 100755
> index 0000000..45a4fb7
> --- /dev/null
> +++ b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/num_closids
> @@ -0,0 +1 @@
> +8
> diff --git a/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/manualres/cpus b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/manualres/cpus
> new file mode 100644
> index 0000000..ede4cc2
> --- /dev/null
> +++ b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/manualres/cpus
> @@ -0,0 +1 @@
> +000000,00000000,00000000
> diff --git a/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/manualres/schemata b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/manualres/schemata
> new file mode 100644
> index 0000000..a0ef381
> --- /dev/null
> +++ b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/manualres/schemata
> @@ -0,0 +1,2 @@
> +L3DATA:0=c0000;1=c0000
> +L3CODE:0=30000;1=30000
> diff --git a/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/manualres/tasks b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/manualres/tasks
> new file mode 100644
> index 0000000..e69de29
> diff --git a/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/schemata b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/schemata
> new file mode 100644
> index 0000000..89dc76b
> --- /dev/null
> +++ b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/schemata
> @@ -0,0 +1,2 @@
> +L3DATA:0=fffff;1=fffff
> +L3CODE:0=fffff;1=fffff
> diff --git a/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/tasks b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/tasks
> new file mode 100644
> index 0000000..e69de29
> diff --git a/tests/vircaps2xmldata/linux-resctrl-cdp/system b/tests/vircaps2xmldata/linux-resctrl-cdp/system
> new file mode 120000
> index 0000000..2f3a1d9
> --- /dev/null
> +++ b/tests/vircaps2xmldata/linux-resctrl-cdp/system
> @@ -0,0 +1 @@
> +../linux-resctrl/system/
> \ No newline at end of file
> diff --git a/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cdp.xml b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cdp.xml
> new file mode 100644
> index 0000000..c9f460d
> --- /dev/null
> +++ b/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cdp.xml
> @@ -0,0 +1,55 @@
> +<capabilities>
> +
> + <host>
> + <cpu>
> + <arch>x86_64</arch>
> + </cpu>
> + <power_management/>
> + <migration_features>
> + <live/>
> + </migration_features>
> + <topology>
> + <cells num='2'>
> + <cell id='0'>
> + <memory unit='KiB'>1048576</memory>
> + <pages unit='KiB' size='4'>2048</pages>
> + <pages unit='KiB' size='2048'>4096</pages>
> + <pages unit='KiB' size='1048576'>6144</pages>
> + <cpus num='6'>
> + <cpu id='0' socket_id='0' core_id='0' siblings='0'/>
> + <cpu id='1' socket_id='0' core_id='1' siblings='1'/>
> + <cpu id='2' socket_id='0' core_id='2' siblings='2'/>
> + <cpu id='3' socket_id='0' core_id='3' siblings='3'/>
> + <cpu id='4' socket_id='0' core_id='4' siblings='4'/>
> + <cpu id='5' socket_id='0' core_id='5' siblings='5'/>
> + </cpus>
> + </cell>
> + <cell id='1'>
> + <memory unit='KiB'>2097152</memory>
> + <pages unit='KiB' size='4'>4096</pages>
> + <pages unit='KiB' size='2048'>6144</pages>
> + <pages unit='KiB' size='1048576'>8192</pages>
> + <cpus num='6'>
> + <cpu id='6' socket_id='1' core_id='0' siblings='6'/>
> + <cpu id='7' socket_id='1' core_id='1' siblings='7'/>
> + <cpu id='8' socket_id='1' core_id='2' siblings='8'/>
> + <cpu id='9' socket_id='1' core_id='3' siblings='9'/>
> + <cpu id='10' socket_id='1' core_id='4' siblings='10'/>
> + <cpu id='11' socket_id='1' core_id='5' siblings='11'/>
> + </cpus>
> + </cell>
> + </cells>
> + </topology>
> + <cache>
> + <bank id='0' level='3' type='both' size='15360' unit='KiB' cpus='0-5'>
> + <control min='768' unit='KiB' scope='code' max_allocation='8'/>
> + <control min='768' unit='KiB' scope='data' max_allocation='8'/>
> + </bank>
> + <bank id='1' level='3' type='both' size='15360' unit='KiB' cpus='6-11'>
> + <control min='768' unit='KiB' scope='code' max_allocation='8'/>
> + <control min='768' unit='KiB' scope='data' max_allocation='8'/>
> + </bank>
> + </cache>
> + </host>
> +
> +</capabilities>
> diff --git a/tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml b/tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml
> index 6677791..04a5eb8 100644
> --- a/tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml
> +++ b/tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml
> @@ -41,8 +41,12 @@
> </cells>
> </topology>
> <cache>
> - <bank id='0' level='3' type='both' size='15360' unit='KiB' cpus='0-5'/>
> - <bank id='1' level='3' type='both' size='15360' unit='KiB' cpus='6-11'/>
> + <bank id='0' level='3' type='both' size='15360' unit='KiB' cpus='0-5'>
> + <control min='768' unit='KiB' scope='both' max_allocation='4'/>
> + </bank>
> + <bank id='1' level='3' type='both' size='15360' unit='KiB' cpus='6-11'>
> + <control min='768' unit='KiB' scope='both' max_allocation='4'/>
> + </bank>
> </cache>
> </host>
> 
> diff --git a/tests/vircaps2xmltest.c b/tests/vircaps2xmltest.c
> index 137598e..ae1cd52 100644
> --- a/tests/vircaps2xmltest.c
> +++ b/tests/vircaps2xmltest.c
> @@ -47,6 +47,7 @@ test_virCapabilities(const void *opaque)
> char *capsXML = NULL;
> char *path = NULL;
> char *dir = NULL;
> + char *resctrl = NULL;
> int ret = -1;
> 
> /*
> @@ -58,7 +59,12 @@ test_virCapabilities(const void *opaque)
> data->resctrl ? "/system" : "") < 0)
> goto cleanup;
> 
> + if (virAsprintf(&resctrl, "%s/vircaps2xmldata/linux-%s/resctrl",
> + abs_srcdir, data->filename) < 0)
> + goto cleanup;
> +
> virFileWrapperAddPrefix("/sys/devices/system", dir);
> + virFileWrapperAddPrefix("/sys/fs/resctrl", resctrl);
> caps = virCapabilitiesNew(data->arch, data->offlineMigrate, data->liveMigrate);
> 
> if (!caps)
> @@ -84,6 +90,7 @@ test_virCapabilities(const void *opaque)
> 
> cleanup:
> VIR_FREE(dir);
> + VIR_FREE(resctrl);
> VIR_FREE(path);
> VIR_FREE(capsXML);
> virObjectUnref(caps);
> @@ -112,6 +119,7 @@ mymain(void)
> DO_TEST("caches", VIR_ARCH_X86_64);
> 
> DO_TEST_FULL("resctrl", VIR_ARCH_X86_64, true, true, true);
> + DO_TEST_FULL("resctrl-cdp", VIR_ARCH_X86_64, true, true, true);
> 
> return ret;
> }
> -- 
> 1.9.1
> 
> --
> libvir-list mailing list
> libvir-list at redhat.com (mailto:libvir-list at redhat.com)
> https://www.redhat.com/mailman/listinfo/libvir-list
> 
> 


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170531/f33fc564/attachment-0001.htm>


More information about the libvir-list mailing list