diff mbox

[v3,11/15] tools: implement the new xl get hw info interface

Message ID 1504603957-5389-12-git-send-email-yi.y.sun@linux.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Yi Sun Sept. 5, 2017, 9:32 a.m. UTC
This patch implements a new xl get HW info interface. A new argument
is added for psr-hwinfo command to get and show MBA HW info.

Signed-off-by: Yi Sun <yi.y.sun@linux.intel.com>
---
v3:
    - change the format string of printf in 'psr_mba_hwinfo'.
      (suggested by Roger Pau Monné)
    - add 'const' for 'opts[]' in 'main_psr_hwinfo'.
      (suggested by Roger Pau Monné)
v2:
    - split out this patch from a big patch in v1.
      (suggested by Wei Liu)
    - change 'MBA_INFO' to 'MBA'. Also, change 'mba_info' to 'mba'.
      (suggested by Chao Peng)
---
 tools/xl/xl_cmdtable.c |  1 +
 tools/xl/xl_psr.c      | 40 +++++++++++++++++++++++++++++++++++++---
 2 files changed, 38 insertions(+), 3 deletions(-)

Comments

Roger Pau Monné Sept. 19, 2017, 10:32 a.m. UTC | #1
On Tue, Sep 05, 2017 at 05:32:33PM +0800, Yi Sun wrote:
> This patch implements a new xl get HW info interface. A new argument
> is added for psr-hwinfo command to get and show MBA HW info.
> 
> Signed-off-by: Yi Sun <yi.y.sun@linux.intel.com>
> ---
> v3:
>     - change the format string of printf in 'psr_mba_hwinfo'.
>       (suggested by Roger Pau Monné)
>     - add 'const' for 'opts[]' in 'main_psr_hwinfo'.
>       (suggested by Roger Pau Monné)
> v2:
>     - split out this patch from a big patch in v1.
>       (suggested by Wei Liu)
>     - change 'MBA_INFO' to 'MBA'. Also, change 'mba_info' to 'mba'.
>       (suggested by Chao Peng)
> ---
>  tools/xl/xl_cmdtable.c |  1 +
>  tools/xl/xl_psr.c      | 40 +++++++++++++++++++++++++++++++++++++---
>  2 files changed, 38 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/xl/xl_cmdtable.c b/tools/xl/xl_cmdtable.c
> index 6baaed2..a01245d 100644
> --- a/tools/xl/xl_cmdtable.c
> +++ b/tools/xl/xl_cmdtable.c
> @@ -524,6 +524,7 @@ struct cmd_spec cmd_table[] = {
>        "[options]",
>        "-m, --cmt       Show Cache Monitoring Technology (CMT) hardware info\n"
>        "-a, --cat       Show Cache Allocation Technology (CAT) hardware info\n"
> +      "-b, --mba       Show Memory Bandwidth Allocation (MBA) hardware info\n"
>      },
>      { "psr-cmt-attach",
>        &main_psr_cmt_attach, 0, 1,
> diff --git a/tools/xl/xl_psr.c b/tools/xl/xl_psr.c
> index ef00048..40269b4 100644
> --- a/tools/xl/xl_psr.c
> +++ b/tools/xl/xl_psr.c
> @@ -475,6 +475,32 @@ static int psr_l2_cat_hwinfo(void)
>      return rc;
>  }
>  
> +static int psr_mba_hwinfo(void)
> +{
> +    int rc;
> +    unsigned int i, nr;
> +    libxl_psr_hw_info *info;
> +
> +    rc = libxl_psr_get_hw_info(ctx, &info, &nr,
> +                               LIBXL_PSR_FEAT_TYPE_MBA, 0);
> +    if (rc)
> +        return rc;
> +
> +    printf("Memory Bandwidth Allocation (MBA):\n");
> +
> +    for (i = 0; i < nr; i++) {
> +        printf("Socket ID               : %u\n", info[i].id);
> +        printf("Linear Mode             : %s\n",
> +               info[i].u.mba.linear ? "Enabled" : "Disabled");
> +        printf("Maximum COS             : %u\n", info[i].u.mba.cos_max);
> +        printf("Maximum Throttling Value: %u\n", info[i].u.mba.thrtl_max);
> +        printf("Default Throttling Value: %u\n", 0);

What's the point in printing a default value if it's always 0? Ie:
this can be on the docs, but I don't think is meaningful here.

Thanks, Roger.
Yi Sun Sept. 20, 2017, 6:23 a.m. UTC | #2
On 17-09-19 11:32:19, Roger Pau Monn� wrote:
> On Tue, Sep 05, 2017 at 05:32:33PM +0800, Yi Sun wrote:
> > index 6baaed2..a01245d 100644
> > --- a/tools/xl/xl_cmdtable.c
> > +++ b/tools/xl/xl_cmdtable.c
> > +static int psr_mba_hwinfo(void)
> > +{
> > +    int rc;
> > +    unsigned int i, nr;
> > +    libxl_psr_hw_info *info;
> > +
> > +    rc = libxl_psr_get_hw_info(ctx, &info, &nr,
> > +                               LIBXL_PSR_FEAT_TYPE_MBA, 0);
> > +    if (rc)
> > +        return rc;
> > +
> > +    printf("Memory Bandwidth Allocation (MBA):\n");
> > +
> > +    for (i = 0; i < nr; i++) {
> > +        printf("Socket ID               : %u\n", info[i].id);
> > +        printf("Linear Mode             : %s\n",
> > +               info[i].u.mba.linear ? "Enabled" : "Disabled");
> > +        printf("Maximum COS             : %u\n", info[i].u.mba.cos_max);
> > +        printf("Maximum Throttling Value: %u\n", info[i].u.mba.thrtl_max);
> > +        printf("Default Throttling Value: %u\n", 0);
> 
> What's the point in printing a default value if it's always 0? Ie:
> this can be on the docs, but I don't think is meaningful here.
> 
This follows the convention of CAT. It shows the default CBM.

> Thanks, Roger.
diff mbox

Patch

diff --git a/tools/xl/xl_cmdtable.c b/tools/xl/xl_cmdtable.c
index 6baaed2..a01245d 100644
--- a/tools/xl/xl_cmdtable.c
+++ b/tools/xl/xl_cmdtable.c
@@ -524,6 +524,7 @@  struct cmd_spec cmd_table[] = {
       "[options]",
       "-m, --cmt       Show Cache Monitoring Technology (CMT) hardware info\n"
       "-a, --cat       Show Cache Allocation Technology (CAT) hardware info\n"
+      "-b, --mba       Show Memory Bandwidth Allocation (MBA) hardware info\n"
     },
     { "psr-cmt-attach",
       &main_psr_cmt_attach, 0, 1,
diff --git a/tools/xl/xl_psr.c b/tools/xl/xl_psr.c
index ef00048..40269b4 100644
--- a/tools/xl/xl_psr.c
+++ b/tools/xl/xl_psr.c
@@ -475,6 +475,32 @@  static int psr_l2_cat_hwinfo(void)
     return rc;
 }
 
+static int psr_mba_hwinfo(void)
+{
+    int rc;
+    unsigned int i, nr;
+    libxl_psr_hw_info *info;
+
+    rc = libxl_psr_get_hw_info(ctx, &info, &nr,
+                               LIBXL_PSR_FEAT_TYPE_MBA, 0);
+    if (rc)
+        return rc;
+
+    printf("Memory Bandwidth Allocation (MBA):\n");
+
+    for (i = 0; i < nr; i++) {
+        printf("Socket ID               : %u\n", info[i].id);
+        printf("Linear Mode             : %s\n",
+               info[i].u.mba.linear ? "Enabled" : "Disabled");
+        printf("Maximum COS             : %u\n", info[i].u.mba.cos_max);
+        printf("Maximum Throttling Value: %u\n", info[i].u.mba.thrtl_max);
+        printf("Default Throttling Value: %u\n", 0);
+    }
+
+    libxl_psr_hw_info_list_free(info, nr);
+    return rc;
+}
+
 int main_psr_cat_cbm_set(int argc, char **argv)
 {
     uint32_t domid;
@@ -593,20 +619,24 @@  int main_psr_cat_show(int argc, char **argv)
 int main_psr_hwinfo(int argc, char **argv)
 {
     int opt, ret = 0;
-    bool all = true, cmt = false, cat = false;
-    static struct option opts[] = {
+    bool all = true, cmt = false, cat = false, mba = false;
+    static const struct option opts[] = {
         {"cmt", 0, 0, 'm'},
         {"cat", 0, 0, 'a'},
+        {"mba", 0, 0, 'b'},
         COMMON_LONG_OPTS
     };
 
-    SWITCH_FOREACH_OPT(opt, "ma", opts, "psr-hwinfo", 0) {
+    SWITCH_FOREACH_OPT(opt, "mab", opts, "psr-hwinfo", 0) {
     case 'm':
         all = false; cmt = true;
         break;
     case 'a':
         all = false; cat = true;
         break;
+    case 'b':
+        all = false; mba = true;
+        break;
     }
 
     if (!ret && (all || cmt))
@@ -619,6 +649,10 @@  int main_psr_hwinfo(int argc, char **argv)
     if (all || cat)
         ret = psr_l2_cat_hwinfo();
 
+    /* MBA is independent of CMT and CAT */
+    if (all || mba)
+        ret = psr_mba_hwinfo();
+
     return ret;
 }