lkml.org 
[lkml]   [2023]   [Aug]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH v7 8/8] x86/resctrl: Display hardware ids of resource groups
    From
    Date
    In x86, hardware uses CLOSID and an RMID to identify a control group and
    a monitoring group respectively. When a user creates a control or monitor
    group these details are not visible to the user. These details can help
    debugging.

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

    Other architectures do not use "CLOSID" and "RMID". Use the names
    ctrl_hw_id and mon_hw_id to refer "CLOSID" and "RMID" respectively in an
    effort to keep the naming generic.

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

    Reviewed-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.com>
    Tested-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.com>
    Signed-off-by: Babu Moger <babu.moger@amd.com>
    ---
    Documentation/arch/x86/resctrl.rst | 8 ++++++
    arch/x86/kernel/cpu/resctrl/rdtgroup.c | 46 ++++++++++++++++++++++++++++++++
    2 files changed, 54 insertions(+)

    diff --git a/Documentation/arch/x86/resctrl.rst b/Documentation/arch/x86/resctrl.rst
    index 5a2346d2c561..41ad9b1f0c6a 100644
    --- a/Documentation/arch/x86/resctrl.rst
    +++ b/Documentation/arch/x86/resctrl.rst
    @@ -351,6 +351,10 @@ When control is enabled all CTRL_MON groups will also contain:
    file. On successful pseudo-locked region creation the mode will
    automatically change to "pseudo-locked".

    +"ctrl_hw_id":
    + Available only with debug option. The identifier used by hardware
    + for the control group. On x86 this is the CLOSID.
    +
    When monitoring is enabled all MON groups will also contain:

    "mon_data":
    @@ -364,6 +368,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/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
    index 6b7e914657fa..94471ad9d905 100644
    --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
    +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
    @@ -776,6 +776,38 @@ static int rdtgroup_tasks_show(struct kernfs_open_file *of,
    return ret;
    }

    +static int rdtgroup_closid_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->closid);
    + else
    + ret = -ENOENT;
    + rdtgroup_kn_unlock(of->kn);
    +
    + 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

    /*
    @@ -1837,6 +1869,13 @@ static struct rftype res_common_files[] = {
    .seq_show = rdtgroup_tasks_show,
    .fflags = RFTYPE_BASE,
    },
    + {
    + .name = "mon_hw_id",
    + .mode = 0444,
    + .kf_ops = &rdtgroup_kf_single_ops,
    + .seq_show = rdtgroup_rmid_show,
    + .fflags = RFTYPE_BASE | RFTYPE_DEBUG,
    + },
    {
    .name = "schemata",
    .mode = 0644,
    @@ -1860,6 +1899,13 @@ static struct rftype res_common_files[] = {
    .seq_show = rdtgroup_size_show,
    .fflags = RFTYPE_CTRL_BASE,
    },
    + {
    + .name = "ctrl_hw_id",
    + .mode = 0444,
    + .kf_ops = &rdtgroup_kf_single_ops,
    + .seq_show = rdtgroup_closid_show,
    + .fflags = RFTYPE_CTRL_BASE | RFTYPE_DEBUG,
    + },

    };


    \
     
     \ /
      Last update: 2023-08-11 22:13    [W:5.067 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site