From nobody Mon Apr 29 18:25:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1495012031307875.6429129848676; Wed, 17 May 2017 02:07:11 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B296E448D85; Wed, 17 May 2017 09:06:56 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0349618A5D; Wed, 17 May 2017 09:06:51 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id BF854180BAF1; Wed, 17 May 2017 09:06:42 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v4H96a57028882 for ; Wed, 17 May 2017 05:06:36 -0400 Received: by smtp.corp.redhat.com (Postfix) id B177F60BE1; Wed, 17 May 2017 09:06:36 +0000 (UTC) Received: from mx1.redhat.com (ext-mx02.extmail.prod.ext.phx2.redhat.com [10.5.110.26]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E4F6817CDC; Wed, 17 May 2017 09:06:34 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 13B4D80C27; Wed, 17 May 2017 09:05:33 +0000 (UTC) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 17 May 2017 02:05:24 -0700 Received: from s2600wt.sh.intel.com ([10.239.48.56]) by fmsmga002.fm.intel.com with ESMTP; 17 May 2017 02:05:20 -0700 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com B296E448D85 Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com B296E448D85 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 13B4D80C27 Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=qiaoliyong@gmail.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 13B4D80C27 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.38,353,1491289200"; d="scan'208";a="1170251265" From: taget To: libvir-list@redhat.com Date: Wed, 17 May 2017 17:08:33 +0800 Message-Id: <1495012113-44129-1-git-send-email-qiaoliyong@gmail.com> X-Greylist: Sender passed SPF test, Sender IP whitelisted by DNSRBL, ACL 203 matched, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Wed, 17 May 2017 09:06:04 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Wed, 17 May 2017 09:06:04 +0000 (UTC) for IP:'192.55.52.88' DOMAIN:'mga01.intel.com' HELO:'mga01.intel.com' FROM:'qiaoliyong@gmail.com' RCPT:'' X-RedHat-Spam-Score: -2.653 (BAYES_50, DKIM_ADSP_CUSTOM_MED, FREEMAIL_FROM, NML_ADSP_CUSTOM_MED, RCVD_IN_DNSWL_HI, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_SOFTFAIL) 192.55.52.88 mga01.intel.com 192.55.52.88 mga01.intel.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.26 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Cc: mkletzan@redhat.com, liyong.qiao@intel.com Subject: [libvirt] [V4 RESEND PATCH] Expose resource control capabilites on cache bank X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Wed, 17 May 2017 09:07:09 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Eli Qiao * This patch amends the cache bank capability as follow: For CDP enabled on x86 arch, we will have: ... * 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 --- 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/L3= CODE/cbm_mask create mode 100755 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3= CODE/min_cbm_bits create mode 100755 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3= CODE/num_closids create mode 100755 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3= DATA/cbm_mask create mode 100755 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3= DATA/min_cbm_bits create mode 100755 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3= DATA/num_closids create mode 100644 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/manualr= es/cpus create mode 100644 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/manualr= es/schemata create mode 100644 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/manualr= es/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 @@ + + + + + + + + + + + both + code + data + + + + + + + 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 =20 #define SYSFS_SYSTEM_PATH "/sys/devices/system" +#define SYSFS_RESCTRL_PATH "/sys/fs/resctrl" =20 VIR_LOG_INIT("conf.capabilities") =20 @@ -872,6 +873,9 @@ virCapabilitiesFormatCaches(virBufferPtr buf, virCapsHostCacheBankPtr *caches) { size_t i =3D 0; + size_t j =3D 0; + int indent =3D virBufferGetIndent(buf, false); + virBuffer controlBuf =3D VIR_BUFFER_INITIALIZER; =20 if (!ncaches) return 0; @@ -893,13 +897,35 @@ virCapabilitiesFormatCaches(virBufferPtr buf, */ virBufferAsprintf(buf, "\n", + "size=3D'%llu' unit=3D'%s' cpus=3D'%s'", bank->id, bank->level, virCacheTypeToString(bank->type), bank->size >> (kilos * 10), kilos ? "KiB" : "B", cpus_str); =20 + virBufferAdjustIndent(&controlBuf, indent + 4); + for (j =3D 0; j < bank->ncontrols; j++) { + bool min_kilos =3D !(bank->controls[j]->min % 1024); + virBufferAsprintf(&controlBuf, + "\n", + bank->controls[j]->min >> (min_kilos * 10), + min_kilos ? "KiB" : "B", + virCacheTypeToString(bank->controls[j]->scop= e), + bank->controls[j]->max_allocation); + } + + if (virBufferUse(&controlBuf)) { + virBufferAddLit(buf, ">\n"); + virBufferAddBuffer(buf, &controlBuf); + virBufferAddLit(buf, "\n"); + + } else { + virBufferAddLit(buf, "/>\n"); + } + + virBufferFreeAndReset(&controlBuf); VIR_FREE(cpus_str); } =20 @@ -1519,13 +1545,102 @@ virCapsHostCacheBankEquals(virCapsHostCacheBankPtr= a, void virCapsHostCacheBankFree(virCapsHostCacheBankPtr ptr) { + size_t i; + if (!ptr) return; =20 virBitmapFree(ptr->cpus); + for (i =3D 0; i < ptr->ncontrols; i++) + VIR_FREE(ptr->controls[i]); + VIR_FREE(ptr->controls); VIR_FREE(ptr); } =20 +/* test which TYPE of cache control supported + * -1: don't support + * 0: cat + * 1: cdp + */ +static int +virCapabilitiesGetCacheControlType(virCapsHostCacheBankPtr bank) +{ + int ret =3D -1; + char *path =3D NULL; + if (virAsprintf(&path, + SYSFS_RESCTRL_PATH "/info/L%u", + bank->level) < 0) + return -1; + + if (virFileExists(path)) { + ret =3D 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 =3D 1; + } + + VIR_FREE(path); + return ret; +} + +static int +virCapabilitiesGetCacheControl(virCapsHostCacheBankPtr bank, + virCacheType scope) +{ + int ret =3D -1; + char *path =3D NULL; + char *cbm_mask =3D NULL; + char *type_upper =3D 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 =3D bank->size / (strlen(cbm_mask) * 4); + + control->scope =3D scope; + + if (VIR_APPEND_ELEMENT(bank->controls, + bank->ncontrols, + control) < 0) + goto cleanup; + + ret =3D 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 =3D -1; DIR *dirp =3D NULL; int ret =3D -1; + int typeret; char *path =3D NULL; char *type =3D NULL; struct dirent *ent =3D NULL; @@ -1607,12 +1723,27 @@ virCapabilitiesInitCaches(virCapsPtr caps) SYSFS_SYSTEM_PATH, pos, ent->d_name= ) < 0) goto cleanup; =20 + typeret =3D virCapabilitiesGetCacheControlType(bank); + + if (typeret =3D=3D 0) { + if (virCapabilitiesGetCacheControl(bank, + VIR_CACHE_TYPE_BOTH) < = 0) + goto cleanup; + } else if (typeret =3D=3D 1) { + if ((virCapabilitiesGetCacheControl(bank, + VIR_CACHE_TYPE_CODE) <= 0) || + (virCapabilitiesGetCacheControl(bank, + VIR_CACHE_TYPE_DAT= A) < 0)) + goto cleanup; + } + kernel_type =3D virCacheKernelTypeFromString(type); if (kernel_type < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Unknown cache type '%s'"), type); goto cleanup; } + bank->type =3D kernel_type; VIR_FREE(type); =20 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 { =20 VIR_ENUM_DECL(virCache); =20 +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; }; =20 typedef struct _virCapsHost virCapsHost; diff --git a/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/cpus b/tests/v= ircaps2xmldata/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/cb= m_mask b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3CODE/cbm_ma= sk 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/mi= n_cbm_bits b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3CODE/mi= n_cbm_bits new file mode 100755 index 0000000..d00491f --- /dev/null +++ b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3CODE/min_cbm_b= its @@ -0,0 +1 @@ +1 diff --git a/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3CODE/nu= m_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_closi= ds @@ -0,0 +1 @@ +8 diff --git a/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/cb= m_mask b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/cbm_ma= sk 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/mi= n_cbm_bits b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/mi= n_cbm_bits new file mode 100755 index 0000000..d00491f --- /dev/null +++ b/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/min_cbm_b= its @@ -0,0 +1 @@ +1 diff --git a/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/nu= m_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_closi= ds @@ -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/sche= mata 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=3Dc0000;1=3Dc0000 +L3CODE:0=3D30000;1=3D30000 diff --git a/tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/manualres/task= s 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/tes= ts/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=3Dfffff;1=3Dfffff +L3CODE:0=3Dfffff;1=3Dfffff 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/vircaps= 2xmldata/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/v= ircaps2xmldata/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 @@ + + + + + x86_64 + + + + + + + + + 1048576 + 2048 + 4096 + 6144 + + + + + + + + + + + 2097152 + 4096 + 6144 + 8192 + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml b/tests/virca= ps2xmldata/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 @@ - - + + + + + + =20 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 =3D NULL; char *path =3D NULL; char *dir =3D NULL; + char *resctrl =3D NULL; int ret =3D -1; =20 /* @@ -58,7 +59,12 @@ test_virCapabilities(const void *opaque) data->resctrl ? "/system" : "") < 0) goto cleanup; =20 + 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 =3D virCapabilitiesNew(data->arch, data->offlineMigrate, data->li= veMigrate); =20 if (!caps) @@ -84,6 +90,7 @@ test_virCapabilities(const void *opaque) =20 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); =20 DO_TEST_FULL("resctrl", VIR_ARCH_X86_64, true, true, true); + DO_TEST_FULL("resctrl-cdp", VIR_ARCH_X86_64, true, true, true); =20 return ret; } --=20 1.9.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list