<div>hi Martin
                </div><div>Thanks for you reviewing and I am okay with the diff as  you suggested.</div><div><br></div><div>Please help to push this patch.</div><div><br></div><div>Eli.</div>
                <div></div>
                 
                <p style="color: #A0A0A8;">On Sunday, 4 June 2017 at 5:39 PM, Martin Kletzander wrote:</p>
                <blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px;">
                    <span><div><div><div>On Wed, May 17, 2017 at 05:08:33PM +0800, taget wrote:</div><blockquote type="cite"><div><div>From: Eli Qiao <<a href="mailto:liyong.qiao@intel.com">liyong.qiao@intel.com</a>></div><div><br></div><div>* This patch amends the cache bank capability as follow:</div><div><br></div><div><cache></div><div> <bank id='0' level='3' type='unified' size='15360' unit='KiB' cpus='0-5'></div><div>   <control min='768' unit='KiB' scope='both' max_allocation='4'/></div><div> </bank></div><div> <bank id='1' level='3' type='unified' size='15360' unit='KiB' cpus='6-11'></div><div>   <control min='768' unit='KiB' scope='both' max_allocation='4'/></div><div> </bank></div><div></cache></div><div><br></div><div>For CDP enabled on x86 arch, we will have:</div><div><cache></div><div> <bank id='0' level='3' type='unified' size='15360' unit='KiB' cpus='0-5'></div><div>   <control min='768' unit='KiB' scope='code' max_allocation='4'/></div><div>   <control min='768' unit='KiB' scope='data' max_allocation='4'/></div><div> </bank></div><div>...</div><div><br></div><div>* Added a new testdata directory `linux-resctrl-cdp` to test CDP enabled</div><div>case.</div><div><br></div><div>* Along with vircaps2xmltest case updated.</div><div><br></div><div>P.S. here the scope is from /sys/fs/resctrl/info/L3{"" "code" "data"}, I</div><div>keep it capital upper as I need to use a macro to convert from enum to</div><div>string easily.</div><div><br></div><div>Signed-off-by: Eli Qiao <<a href="mailto:liyong.qiao@intel.com">liyong.qiao@intel.com</a>></div><div>---</div><div>docs/schemas/capability.rng                        |  20 ++++</div><div>src/conf/capabilities.c                            | 133 ++++++++++++++++++++-</div><div>src/conf/capabilities.h                            |  10 ++</div><div>.../vircaps2xmldata/linux-resctrl-cdp/resctrl/cpus |   1 +</div><div>.../linux-resctrl-cdp/resctrl/info/L3CODE/cbm_mask |   1 +</div><div>.../resctrl/info/L3CODE/min_cbm_bits               |   1 +</div><div>.../resctrl/info/L3CODE/num_closids                |   1 +</div><div>.../linux-resctrl-cdp/resctrl/info/L3DATA/cbm_mask |   1 +</div><div>.../resctrl/info/L3DATA/min_cbm_bits               |   1 +</div><div>.../resctrl/info/L3DATA/num_closids                |   1 +</div><div>.../linux-resctrl-cdp/resctrl/manualres/cpus       |   1 +</div><div>.../linux-resctrl-cdp/resctrl/manualres/schemata   |   2 +</div><div>.../linux-resctrl-cdp/resctrl/manualres/tasks      |   0</div><div>.../linux-resctrl-cdp/resctrl/schemata             |   2 +</div><div>.../linux-resctrl-cdp/resctrl/tasks                |   0</div><div>tests/vircaps2xmldata/linux-resctrl-cdp/system     |   1 +</div><div>.../vircaps2xmldata/vircaps-x86_64-resctrl-cdp.xml |  55 +++++++++</div><div>tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml   |   8 +-</div><div>tests/vircaps2xmltest.c                            |   8 ++</div><div>19 files changed, 244 insertions(+), 3 deletions(-)</div><div>create mode 100644 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/cpus</div><div>create mode 100755 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3CODE/cbm_mask</div><div>create mode 100755 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3CODE/min_cbm_bits</div><div>create mode 100755 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3CODE/num_closids</div><div>create mode 100755 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/cbm_mask</div><div>create mode 100755 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/min_cbm_bits</div><div>create mode 100755 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/info/L3DATA/num_closids</div><div>create mode 100644 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/manualres/cpus</div><div>create mode 100644 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/manualres/schemata</div><div>create mode 100644 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/manualres/tasks</div><div>create mode 100644 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/schemata</div><div>create mode 100644 tests/vircaps2xmldata/linux-resctrl-cdp/resctrl/tasks</div><div>create mode 120000 tests/vircaps2xmldata/linux-resctrl-cdp/system</div><div>create mode 100644 tests/vircaps2xmldata/vircaps-x86_64-resctrl-cdp.xml</div><div><br></div><div>diff --git a/docs/schemas/capability.rng b/docs/schemas/capability.rng</div><div>index 26f0aa2..927fc18 100644</div><div>--- a/docs/schemas/capability.rng</div><div>+++ b/docs/schemas/capability.rng</div><div>@@ -277,6 +277,26 @@</div><div>          <attribute name='cpus'></div><div>            <ref name='cpuset'/></div><div>          </attribute></div><div>+          <zeroOrMore></div><div>+            <element name='control'></div><div>+              <attribute name='min'></div><div>+                <ref name='unsignedInt'/></div><div>+              </attribute></div><div>+              <attribute name='unit'></div><div>+                <ref name='unit'/></div><div>+              </attribute></div><div>+              <attribute name='scope'></div></div></blockquote><div><br></div><div>This should be 'type', as discussed before.</div><div><br></div><blockquote type="cite"><div><div>+                <choice></div><div>+                  <value>both</value></div><div>+                  <value>code</value></div><div>+                  <value>data</value></div><div>+                </choice></div><div>+              </attribute></div></div></blockquote><div><br></div><div>And hence this could be its own new definition, since it is already used</div><div>in the bank definition.</div><div><br></div><blockquote type="cite"><div>+              <attribute name='max_allocation'></div></blockquote><div><br></div><div>Since we are trying to prefer camelCase, even in the XML, and this</div><div>should be plural, I would suggest 'maxAllocs'.</div><div><br></div><blockquote type="cite"><div><div>+                <ref name='unsignedInt'/></div><div>+              </attribute></div><div>+            </element></div><div>+          </zeroOrMore></div><div>        </element></div><div>      </oneOrMore></div><div>    </element></div><div>diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c</div><div>index d699b08..c4a1fdf 100644</div><div>--- a/src/conf/capabilities.c</div><div>+++ b/src/conf/capabilities.c</div><div>@@ -51,6 +51,7 @@</div><div>#define VIR_FROM_THIS VIR_FROM_CAPABILITIES</div><div><br></div><div>#define SYSFS_SYSTEM_PATH "/sys/devices/system"</div><div>+#define SYSFS_RESCTRL_PATH "/sys/fs/resctrl"</div><div><br></div><div>VIR_LOG_INIT("conf.capabilities")</div><div><br></div><div>@@ -872,6 +873,9 @@ virCapabilitiesFormatCaches(virBufferPtr buf,</div><div>                            virCapsHostCacheBankPtr *caches)</div><div>{</div><div>    size_t i = 0;</div><div>+    size_t j = 0;</div><div>+    int indent = virBufferGetIndent(buf, false);</div><div>+    virBuffer controlBuf = VIR_BUFFER_INITIALIZER;</div><div><br></div><div>    if (!ncaches)</div><div>        return 0;</div><div>@@ -893,13 +897,35 @@ virCapabilitiesFormatCaches(virBufferPtr buf,</div><div>         */</div><div>        virBufferAsprintf(buf,</div><div>                          "<bank id='%u' level='%u' type='%s' "</div><div>-                          "size='%llu' unit='%s' cpus='%s'/>\n",</div><div>+                          "size='%llu' unit='%s' cpus='%s'",</div><div>                          bank->id, bank->level,</div><div>                          virCacheTypeToString(bank->type),</div><div>                          bank->size >> (kilos * 10),</div><div>                          kilos ? "KiB" : "B",</div><div>                          cpus_str);</div><div><br></div><div>+        virBufferAdjustIndent(&controlBuf, indent + 4);</div><div>+        for (j = 0; j < bank->ncontrols; j++) {</div><div>+            bool min_kilos = !(bank->controls[j]->min % 1024);</div><div>+            virBufferAsprintf(&controlBuf,</div><div>+                              "<control min='%llu' unit='%s' "</div><div>+                              "scope='%s' max_allocation='%u'/>\n",</div><div>+                              bank->controls[j]->min >> (min_kilos * 10),</div><div>+                              min_kilos ? "KiB" : "B",</div><div>+                              virCacheTypeToString(bank->controls[j]->scope),</div><div>+                              bank->controls[j]->max_allocation);</div><div>+        }</div><div>+</div><div>+        if (virBufferUse(&controlBuf)) {</div><div>+            virBufferAddLit(buf, ">\n");</div><div>+            virBufferAddBuffer(buf, &controlBuf);</div><div>+            virBufferAddLit(buf, "</bank>\n");</div><div>+</div></div></blockquote><div><br></div><div>Spurious line.</div><div><br></div><blockquote type="cite"><div><div>+        } else {</div><div>+            virBufferAddLit(buf, "/>\n");</div><div>+        }</div><div>+</div><div>+        virBufferFreeAndReset(&controlBuf);</div></div></blockquote><div><br></div><div>No need for this, it is already done by virBufferAddBuffer.</div><div><br></div><blockquote type="cite"><div><div>        VIR_FREE(cpus_str);</div><div>    }</div><div><br></div><div>@@ -1519,13 +1545,102 @@ virCapsHostCacheBankEquals(virCapsHostCacheBankPtr a,</div><div>void</div><div>virCapsHostCacheBankFree(virCapsHostCacheBankPtr ptr)</div><div>{</div><div>+    size_t i;</div><div>+</div><div>    if (!ptr)</div><div>        return;</div><div><br></div><div>    virBitmapFree(ptr->cpus);</div><div>+    for (i = 0; i < ptr->ncontrols; i++)</div><div>+        VIR_FREE(ptr->controls[i]);</div><div>+    VIR_FREE(ptr->controls);</div><div>    VIR_FREE(ptr);</div><div>}</div><div><br></div><div>+/* test which TYPE of cache control supported</div><div>+ * -1: don't support</div><div>+ *  0: cat</div><div>+ *  1: cdp</div><div>+ */</div></div></blockquote><div><br></div><div>I would slightly reword this comment.</div><div><br></div><blockquote type="cite"><div><div>+static int</div><div>+virCapabilitiesGetCacheControlType(virCapsHostCacheBankPtr bank)</div><div>+{</div><div>+    int ret = -1;</div><div>+    char *path = NULL;</div></div></blockquote><div><br></div><div>Empty line here</div><div><br></div><blockquote type="cite"><div><div>+    if (virAsprintf(&path,</div><div>+                    SYSFS_RESCTRL_PATH "/info/L%u",</div><div>+                    bank->level) < 0)</div><div>+        return -1;</div><div>+</div><div>+    if (virFileExists(path)) {</div><div>+        ret = 0;</div><div>+    } else {</div><div>+        VIR_FREE(path);</div><div>+        /* for CDP enabled case, CODE and DATA will show together */</div></div></blockquote><div><br></div><div>"If CDP is enabled, there will be both CODE and DATA, but it's enough to</div><div>check one of those only."</div><div><br></div><blockquote type="cite"><div><div>+        if (virAsprintf(&path,</div><div>+                        SYSFS_RESCTRL_PATH "/info/L%uCODE",</div><div>+                        bank->level) < 0)</div><div>+            return -1;</div><div>+        if (virFileExists(path))</div><div>+            ret = 1;</div><div>+    }</div><div>+</div><div>+    VIR_FREE(path);</div><div>+    return ret;</div><div>+}</div><div>+</div><div>+static int</div><div>+virCapabilitiesGetCacheControl(virCapsHostCacheBankPtr bank,</div><div>+                               virCacheType scope)</div><div>+{</div><div>+    int ret = -1;</div><div>+    char *path = NULL;</div><div>+    char *cbm_mask = NULL;</div><div>+    char *type_upper = NULL;</div><div>+    virCapsHostCacheControlPtr control;</div><div>+</div><div>+    if (VIR_ALLOC(control) < 0)</div><div>+        goto cleanup;</div><div>+</div><div>+    if ((scope > VIR_CACHE_TYPE_BOTH)</div><div>+            && (virStringToUpper(&type_upper, virCacheTypeToString(scope)) < 0))</div></div></blockquote><div><br></div><div>Order comparison on enum values should be done only in rare cases,</div><div>and there should then be some explanation why the order must be kept and</div><div>where to add what new values.  I would just do != here instead.</div><div><br></div><div>Also the indentation is wrong, the && belongs to the previous line and</div><div>there's too much parentheses.</div><div><br></div><blockquote type="cite"><div><div>+        goto cleanup;</div><div>+</div><div>+    if (virFileReadValueUint(&control->max_allocation,</div><div>+                             SYSFS_RESCTRL_PATH "/info/L%u%s/num_closids",</div><div>+                             bank->level,</div><div>+                             type_upper ? type_upper : "") < 0)</div><div>+        goto cleanup;</div><div>+</div><div>+    if (virFileReadValueString(&cbm_mask,</div><div>+                               SYSFS_RESCTRL_PATH</div><div>+                               "/info/L%u%s/cbm_mask",</div><div>+                               bank->level,</div><div>+                               type_upper ? type_upper: "") < 0)</div><div>+        goto cleanup;</div><div>+</div><div>+    virStringTrimOptionalNewline(cbm_mask);</div><div>+</div><div>+    /* cbm_mask: cache bit mask, it's in hex, eg: fffff */</div><div>+    control->min = bank->size / (strlen(cbm_mask) * 4);</div><div>+</div></div></blockquote><div><br></div><div>I believe this should be multiplied by min_cbm_bits.</div><div><br></div><blockquote type="cite"><div><div>+    control->scope = scope;</div><div>+</div><div>+    if (VIR_APPEND_ELEMENT(bank->controls,</div><div>+                           bank->ncontrols,</div><div>+                           control) < 0)</div><div>+        goto cleanup;</div><div>+</div><div>+    ret = 0;</div><div>+</div><div>+ cleanup:</div><div>+    VIR_FREE(path);</div><div>+    VIR_FREE(cbm_mask);</div><div>+    VIR_FREE(type_upper);</div><div>+    VIR_FREE(control);</div><div>+    return ret;</div><div>+}</div><div>+</div><div>int</div><div>virCapabilitiesInitCaches(virCapsPtr caps)</div><div>{</div><div>@@ -1534,6 +1649,7 @@ virCapabilitiesInitCaches(virCapsPtr caps)</div><div>    ssize_t pos = -1;</div><div>    DIR *dirp = NULL;</div><div>    int ret = -1;</div><div>+    int typeret;</div><div>    char *path = NULL;</div><div>    char *type = NULL;</div><div>    struct dirent *ent = NULL;</div><div>@@ -1607,12 +1723,27 @@ virCapabilitiesInitCaches(virCapsPtr caps)</div><div>                                       SYSFS_SYSTEM_PATH, pos, ent->d_name) < 0)</div><div>                goto cleanup;</div><div><br></div><div>+            typeret = virCapabilitiesGetCacheControlType(bank);</div><div>+</div><div>+            if (typeret == 0) {</div><div>+                if (virCapabilitiesGetCacheControl(bank,</div><div>+                                                   VIR_CACHE_TYPE_BOTH) < 0)</div><div>+                    goto cleanup;</div><div>+            } else if (typeret == 1) {</div><div>+                if ((virCapabilitiesGetCacheControl(bank,</div><div>+                                                    VIR_CACHE_TYPE_CODE) < 0) ||</div><div>+                        (virCapabilitiesGetCacheControl(bank,</div><div>+                                                        VIR_CACHE_TYPE_DATA) < 0))</div></div></blockquote><div><br></div><div>Again, wrong indentation and unnecessary parentheses.</div><div><br></div><div>Otherwise it looks good, so ACK with those differences and reworded</div><div>commit message.  Let me know if you agree and I can push it immediately.</div><div>The suggested diff follows:</div><div><br></div><div>diff --git i/docs/schemas/capability.rng w/docs/schemas/capability.rng</div><div>index 927fc184de41..e5cbfa362ec0 100644</div><div>--- i/docs/schemas/capability.rng</div><div>+++ w/docs/schemas/capability.rng</div><div>@@ -261,13 +261,7 @@</div><div>           <attribute name='level'></div><div>             <ref name='unsignedInt'/></div><div>           </attribute></div><div>-          <attribute name='type'></div><div>-            <choice></div><div>-              <value>both</value></div><div>-              <value>code</value></div><div>-              <value>data</value></div><div>-            </choice></div><div>-          </attribute></div><div>+          <ref name='cacheType'/></div><div>           <attribute name='size'></div><div>             <ref name='unsignedInt'/></div><div>           </attribute></div><div>@@ -285,14 +279,8 @@</div><div>               <attribute name='unit'></div><div>                 <ref name='unit'/></div><div>               </attribute></div><div>-              <attribute name='scope'></div><div>-                <choice></div><div>-                  <value>both</value></div><div>-                  <value>code</value></div><div>-                  <value>data</value></div><div>-                </choice></div><div>-              </attribute></div><div>-              <attribute name='max_allocation'></div><div>+              <ref name='cacheType'/></div><div>+              <attribute name='maxAllocs'></div><div>                 <ref name='unsignedInt'/></div><div>               </attribute></div><div>             </element></div><div>@@ -302,6 +290,16 @@</div><div>     </element></div><div>   </define></div><div><br></div><div>+  <define name='cacheType'></div><div>+    <attribute name='type'></div><div>+      <choice></div><div>+        <value>both</value></div><div>+        <value>code</value></div><div>+        <value>data</value></div><div>+      </choice></div><div>+    </attribute></div><div>+  </define></div><div>+</div><div>   <define name='guestcaps'></div><div>     <element name='guest'></div><div>       <ref name='ostype'/></div><div>diff --git i/src/conf/capabilities.c w/src/conf/capabilities.c</div><div>index 8cd2957e9c88..3becc7e18c62 100644</div><div>--- i/src/conf/capabilities.c</div><div>+++ w/src/conf/capabilities.c</div><div>@@ -909,7 +909,7 @@ virCapabilitiesFormatCaches(virBufferPtr buf,</div><div>             bool min_kilos = !(bank->controls[j]->min % 1024);</div><div>             virBufferAsprintf(&controlBuf,</div><div>                               "<control min='%llu' unit='%s' "</div><div>-                              "scope='%s' max_allocation='%u'/>\n",</div><div>+                              "type='%s' maxAllocs='%u'/>\n",</div><div>                               bank->controls[j]->min >> (min_kilos * 10),</div><div>                               min_kilos ? "KiB" : "B",</div><div>                               virCacheTypeToString(bank->controls[j]->scope),</div><div>@@ -920,12 +920,10 @@ virCapabilitiesFormatCaches(virBufferPtr buf,</div><div>             virBufferAddLit(buf, ">\n");</div><div>             virBufferAddBuffer(buf, &controlBuf);</div><div>             virBufferAddLit(buf, "</bank>\n");</div><div>-</div><div>         } else {</div><div>             virBufferAddLit(buf, "/>\n");</div><div>         }</div><div><br></div><div>-        virBufferFreeAndReset(&controlBuf);</div><div>         VIR_FREE(cpus_str);</div><div>     }</div><div><br></div><div>@@ -1557,16 +1555,19 @@ virCapsHostCacheBankFree(virCapsHostCacheBankPtr ptr)</div><div>     VIR_FREE(ptr);</div><div> }</div><div><br></div><div>-/* test which TYPE of cache control supported</div><div>- * -1: don't support</div><div>- *  0: cat</div><div>- *  1: cdp</div><div>+/*</div><div>+ * This function tests which TYPE of cache control is supported</div><div>+ * Return values are:</div><div>+ *  -1: not supported</div><div>+ *   0: CAT</div><div>+ *   1: CDP</div><div>  */</div><div> static int</div><div> virCapabilitiesGetCacheControlType(virCapsHostCacheBankPtr bank)</div><div> {</div><div>     int ret = -1;</div><div>     char *path = NULL;</div><div>+</div><div>     if (virAsprintf(&path,</div><div>                     SYSFS_RESCTRL_PATH "/info/L%u",</div><div>                     bank->level) < 0)</div><div>@@ -1576,7 +1577,10 @@ virCapabilitiesGetCacheControlType(virCapsHostCacheBankPtr bank)</div><div>         ret = 0;</div><div>     } else {</div><div>         VIR_FREE(path);</div><div>-        /* for CDP enabled case, CODE and DATA will show together */</div><div>+        /*</div><div>+         * If CDP is enabled, there will be both CODE and DATA, but it's enough</div><div>+         * to check one of those only.</div><div>+         */</div><div>         if (virAsprintf(&path,</div><div>                         SYSFS_RESCTRL_PATH "/info/L%uCODE",</div><div>                         bank->level) < 0)</div><div>@@ -1597,13 +1601,14 @@ virCapabilitiesGetCacheControl(virCapsHostCacheBankPtr bank,</div><div>     char *path = NULL;</div><div>     char *cbm_mask = NULL;</div><div>     char *type_upper = NULL;</div><div>+    unsigned int min_cbm_bits = 0;</div><div>     virCapsHostCacheControlPtr control;</div><div><br></div><div>     if (VIR_ALLOC(control) < 0)</div><div>         goto cleanup;</div><div><br></div><div>-    if ((scope > VIR_CACHE_TYPE_BOTH)</div><div>-            && (virStringToUpper(&type_upper, virCacheTypeToString(scope)) < 0))</div><div>+    if (scope != VIR_CACHE_TYPE_BOTH &&</div><div>+        virStringToUpper(&type_upper, virCacheTypeToString(scope)) < 0)</div><div>         goto cleanup;</div><div><br></div><div>     if (virFileReadValueUint(&control->max_allocation,</div><div>@@ -1619,10 +1624,16 @@ virCapabilitiesGetCacheControl(virCapsHostCacheBankPtr bank,</div><div>                                type_upper ? type_upper: "") < 0)</div><div>         goto cleanup;</div><div><br></div><div>+    if (virFileReadValueUint(&min_cbm_bits,</div><div>+                             SYSFS_RESCTRL_PATH "/info/L%u%s/min_cbm_bits",</div><div>+                             bank->level,</div><div>+                             type_upper ? type_upper : "") < 0)</div><div>+        goto cleanup;</div><div>+</div><div>     virStringTrimOptionalNewline(cbm_mask);</div><div><br></div><div>     /* cbm_mask: cache bit mask, it's in hex, eg: fffff */</div><div>-    control->min = bank->size / (strlen(cbm_mask) * 4);</div><div>+    control->min = min_cbm_bits * bank->size / (strlen(cbm_mask) * 4);</div><div><br></div><div>     control->scope = scope;</div><div><br></div><div>@@ -1732,10 +1743,10 @@ virCapabilitiesInitCaches(virCapsPtr caps)</div><div>                                                    VIR_CACHE_TYPE_BOTH) < 0)</div><div>                     goto cleanup;</div><div>             } else if (typeret == 1) {</div><div>-                if ((virCapabilitiesGetCacheControl(bank,</div><div>-                                                    VIR_CACHE_TYPE_CODE) < 0) ||</div><div>-                        (virCapabilitiesGetCacheControl(bank,</div><div>-                                                        VIR_CACHE_TYPE_DATA) < 0))</div><div>+                if (virCapabilitiesGetCacheControl(bank,</div><div>+                                                   VIR_CACHE_TYPE_CODE) < 0 ||</div><div>+                    virCapabilitiesGetCacheControl(bank,</div><div>+                                                   VIR_CACHE_TYPE_DATA) < 0)</div><div>                     goto cleanup;</div><div>             }</div><div><br></div><div>diff --git i/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cdp.xml w/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cdp.xml</div><div>index c9f460d8a227..49aa0b98ca88 100644</div><div>--- i/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cdp.xml</div><div>+++ w/tests/vircaps2xmldata/vircaps-x86_64-resctrl-cdp.xml</div><div>@@ -42,12 +42,12 @@</div><div>     </topology></div><div>     <cache></div><div>       <bank id='0' level='3' type='both' size='15360' unit='KiB' cpus='0-5'></div><div>-        <control min='768' unit='KiB' scope='code' max_allocation='8'/></div><div>-        <control min='768' unit='KiB' scope='data' max_allocation='8'/></div><div>+        <control min='768' unit='KiB' type='code' maxAllocs='8'/></div><div>+        <control min='768' unit='KiB' type='data' maxAllocs='8'/></div><div>       </bank></div><div>       <bank id='1' level='3' type='both' size='15360' unit='KiB' cpus='6-11'></div><div>-        <control min='768' unit='KiB' scope='code' max_allocation='8'/></div><div>-        <control min='768' unit='KiB' scope='data' max_allocation='8'/></div><div>+        <control min='768' unit='KiB' type='code' maxAllocs='8'/></div><div>+        <control min='768' unit='KiB' type='data' maxAllocs='8'/></div><div>       </bank></div><div>     </cache></div><div>   </host></div><div>diff --git i/tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml w/tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml</div><div>index 04a5eb895727..cb78b4ab788d 100644</div><div>--- i/tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml</div><div>+++ w/tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml</div><div>@@ -42,10 +42,10 @@</div><div>     </topology></div><div>     <cache></div><div>       <bank id='0' level='3' type='both' size='15360' unit='KiB' cpus='0-5'></div><div>-        <control min='768' unit='KiB' scope='both' max_allocation='4'/></div><div>+        <control min='1536' unit='KiB' type='both' maxAllocs='4'/></div><div>       </bank></div><div>       <bank id='1' level='3' type='both' size='15360' unit='KiB' cpus='6-11'></div><div>-        <control min='768' unit='KiB' scope='both' max_allocation='4'/></div><div>+        <control min='1536' unit='KiB' type='both' maxAllocs='4'/></div><div>       </bank></div><div>     </cache></div><div>   </host></div><div>--</div><div>Martin</div></div></div></span>
                 
                 
                 
                 
                </blockquote>
                 
                <div>
                    <br>
                </div>