lkml.org 
[lkml]   [2023]   [Oct]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip: x86/cache] x86/resctrl: Display RMID of resource group
    The following commit has been merged into the x86/cache branch of tip:

    Commit-ID: 4cee14bcb14881aae81d60f106a335c68553ac1f
    Gitweb: https://git.kernel.org/tip/4cee14bcb14881aae81d60f106a335c68553ac1f
    Author: Babu Moger <babu.moger@amd.com>
    AuthorDate: Mon, 16 Oct 2023 19:23:08 -05:00
    Committer: Borislav Petkov (AMD) <bp@alien8.de>
    CommitterDate: Tue, 17 Oct 2023 14:05:40 +02:00

    x86/resctrl: Display RMID of resource group

    In x86, hardware uses RMID to identify a monitoring group. When a user
    creates a monitor group these details are not visible. These details
    can help resctrl debugging.

    Add RMID(mon_hw_id) to the monitor groups display in the resctrl interface.
    Users can see these details when resctrl is mounted with "-o debug" option.

    Add RFTYPE_MON_BASE that complements existing RFTYPE_CTRL_BASE and
    represents files belonging to monitoring groups.

    Other architectures do not use "RMID". Use the name mon_hw_id to refer
    to "RMID" in an effort to keep the naming generic.

    For example:
    $cat /sys/fs/resctrl/mon_groups/mon_grp1/mon_hw_id
    3

    Signed-off-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Reviewed-by: Peter Newman <peternewman@google.com>
    Reviewed-by: Tan Shaopeng <tan.shaopeng@jp.fujitsu.com>
    Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
    Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Tested-by: Peter Newman <peternewman@google.com>
    Tested-by: Tan Shaopeng <tan.shaopeng@jp.fujitsu.com>
    Link: https://lore.kernel.org/r/20231017002308.134480-10-babu.moger@amd.com
    ---
    Documentation/arch/x86/resctrl.rst | 4 ++++
    arch/x86/kernel/cpu/resctrl/internal.h | 1 +
    arch/x86/kernel/cpu/resctrl/rdtgroup.c | 23 +++++++++++++++++++++++
    3 files changed, 28 insertions(+)

    diff --git a/Documentation/arch/x86/resctrl.rst b/Documentation/arch/x86/resctrl.rst
    index 7412252..a6279df 100644
    --- a/Documentation/arch/x86/resctrl.rst
    +++ b/Documentation/arch/x86/resctrl.rst
    @@ -376,6 +376,10 @@ When monitoring is enabled all MON groups will also contain:
    the sum for all tasks in the CTRL_MON group and all tasks in
    MON groups. Please see example section for more details on usage.

    +"mon_hw_id":
    + Available only with debug option. The identifier used by hardware
    + for the monitor group. On x86 this is the RMID.
    +
    Resource allocation rules
    -------------------------

    diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
    index b816b90..a4f1aa1 100644
    --- a/arch/x86/kernel/cpu/resctrl/internal.h
    +++ b/arch/x86/kernel/cpu/resctrl/internal.h
    @@ -254,6 +254,7 @@ struct rdtgroup {
    #define RFTYPE_MON_INFO (RFTYPE_INFO | RFTYPE_MON)
    #define RFTYPE_TOP_INFO (RFTYPE_INFO | RFTYPE_TOP)
    #define RFTYPE_CTRL_BASE (RFTYPE_BASE | RFTYPE_CTRL)
    +#define RFTYPE_MON_BASE (RFTYPE_BASE | RFTYPE_MON)

    /* List of all resource groups */
    extern struct list_head rdt_all_groups;
    diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
    index 5f6d6ba..69a1de9 100644
    --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
    +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
    @@ -795,6 +795,22 @@ static int rdtgroup_closid_show(struct kernfs_open_file *of,
    return ret;
    }

    +static int rdtgroup_rmid_show(struct kernfs_open_file *of,
    + struct seq_file *s, void *v)
    +{
    + struct rdtgroup *rdtgrp;
    + int ret = 0;
    +
    + rdtgrp = rdtgroup_kn_lock_live(of->kn);
    + if (rdtgrp)
    + seq_printf(s, "%u\n", rdtgrp->mon.rmid);
    + else
    + ret = -ENOENT;
    + rdtgroup_kn_unlock(of->kn);
    +
    + return ret;
    +}
    +
    #ifdef CONFIG_PROC_CPU_RESCTRL

    /*
    @@ -1868,6 +1884,13 @@ static struct rftype res_common_files[] = {
    .fflags = RFTYPE_BASE,
    },
    {
    + .name = "mon_hw_id",
    + .mode = 0444,
    + .kf_ops = &rdtgroup_kf_single_ops,
    + .seq_show = rdtgroup_rmid_show,
    + .fflags = RFTYPE_MON_BASE | RFTYPE_DEBUG,
    + },
    + {
    .name = "schemata",
    .mode = 0644,
    .kf_ops = &rdtgroup_kf_single_ops,
    \
     
     \ /
      Last update: 2023-10-17 14:21    [W:2.569 / U:0.192 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site