lkml.org 
[lkml]   [2022]   [Oct]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH v7 08/12] x86/resctrl: Add sysfs interface to read mbm_local_bytes event configuration
    From
    Date
    The current event configuration can be viewed by the user by reading
    the configuration file /sys/fs/resctrl/info/L3_MON/mbm_local_config.
    The event configuration settings are domain specific and will affect
    all the CPUs in the domain.

    Following are the types of events supported:
    ==== ===========================================================
    Bits Description
    ==== ===========================================================
    6 Dirty Victims from the QOS domain to all types of memory
    5 Reads to slow memory in the non-local NUMA domain
    4 Reads to slow memory in the local NUMA domain
    3 Non-temporal writes to non-local NUMA domain
    2 Non-temporal writes to local NUMA domain
    1 Reads to memory in the non-local NUMA domain
    0 Reads to memory in the local NUMA domain
    ==== ===========================================================

    By default, the mbm_local_bytes configuration is set to 0x15 to count
    all the local event types.

    For example:
    $cat /sys/fs/resctrl/info/L3_MON/mbm_local_config
    0=0x15;1=0x15;2=0x15;3=0x15

    In this case the event mbm_local_bytes is currently configured with
    0x15 on domains 0 to 3.

    Signed-off-by: Babu Moger <babu.moger@amd.com>
    ---
    arch/x86/kernel/cpu/resctrl/rdtgroup.c | 20 ++++++++++++++++++++
    1 file changed, 20 insertions(+)

    diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
    index 0982845594d0..305fb0475970 100644
    --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
    +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
    @@ -1484,6 +1484,16 @@ static int mbm_total_config_show(struct kernfs_open_file *of,
    return 0;
    }

    +static int mbm_local_config_show(struct kernfs_open_file *of,
    + struct seq_file *seq, void *v)
    +{
    + struct rdt_resource *r = of->kn->parent->priv;
    +
    + mbm_config_show(seq, r, QOS_L3_MBM_LOCAL_EVENT_ID);
    +
    + return 0;
    +}
    +
    /* rdtgroup information files for one cache resource. */
    static struct rftype res_common_files[] = {
    {
    @@ -1588,6 +1598,12 @@ static struct rftype res_common_files[] = {
    .kf_ops = &rdtgroup_kf_single_ops,
    .seq_show = mbm_total_config_show,
    },
    + {
    + .name = "mbm_local_config",
    + .mode = 0644,
    + .kf_ops = &rdtgroup_kf_single_ops,
    + .seq_show = mbm_local_config_show,
    + },
    {
    .name = "cpus",
    .mode = 0644,
    @@ -1701,6 +1717,10 @@ void __init mbm_config_rftype_init(void)
    rft = rdtgroup_get_rftype_by_name("mbm_total_config");
    if (rft)
    rft->fflags = RF_MON_INFO | RFTYPE_RES_CACHE;
    +
    + rft = rdtgroup_get_rftype_by_name("mbm_local_config");
    + if (rft)
    + rft->fflags = RF_MON_INFO | RFTYPE_RES_CACHE;
    }

    /**

    \
     
     \ /
      Last update: 2022-10-18 00:28    [W:4.618 / U:0.196 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site