lkml.org 
[lkml]   [2023]   [Jan]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v11 08/13] x86/resctrl: Support monitor configuration
    Date
    Add a new field in struct mon_evt to support Bandwidth Monitoring Event
    Configuration(BMEC) and also update the "mon_features" display.

    The resctrl file "mon_features" will display the supported events
    and files that can be used to configure those events if monitor
    configuration is supported.

    Before the change.
    $cat /sys/fs/resctrl/info/L3_MON/mon_features
    llc_occupancy
    mbm_total_bytes
    mbm_local_bytes

    After the change when BMEC is supported.
    $cat /sys/fs/resctrl/info/L3_MON/mon_features
    llc_occupancy
    mbm_total_bytes
    mbm_total_bytes_config
    mbm_local_bytes
    mbm_local_bytes_config

    Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
    Signed-off-by: Babu Moger <babu.moger@amd.com>
    ---
    arch/x86/kernel/cpu/resctrl/internal.h | 2 ++
    arch/x86/kernel/cpu/resctrl/monitor.c | 7 +++++++
    arch/x86/kernel/cpu/resctrl/rdtgroup.c | 5 ++++-
    3 files changed, 13 insertions(+), 1 deletion(-)

    diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
    index f16b8bc5448c..0605b04f1b7a 100644
    --- a/arch/x86/kernel/cpu/resctrl/internal.h
    +++ b/arch/x86/kernel/cpu/resctrl/internal.h
    @@ -52,11 +52,13 @@ DECLARE_STATIC_KEY_FALSE(rdt_mon_enable_key);
    * struct mon_evt - Entry in the event list of a resource
    * @evtid: event id
    * @name: name of the event
    + * @configurable: true if the event is configurable
    * @list: entry in &rdt_resource->evt_list
    */
    struct mon_evt {
    enum resctrl_event_id evtid;
    char *name;
    + bool configurable;
    struct list_head list;
    };

    diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/resctrl/monitor.c
    index e33e8d8bd796..b39e0eca1879 100644
    --- a/arch/x86/kernel/cpu/resctrl/monitor.c
    +++ b/arch/x86/kernel/cpu/resctrl/monitor.c
    @@ -783,6 +783,13 @@ int __init rdt_get_mon_l3_config(struct rdt_resource *r)
    if (ret)
    return ret;

    + if (rdt_cpu_has(X86_FEATURE_BMEC)) {
    + if (rdt_cpu_has(X86_FEATURE_CQM_MBM_TOTAL))
    + mbm_total_event.configurable = true;
    + if (rdt_cpu_has(X86_FEATURE_CQM_MBM_LOCAL))
    + mbm_local_event.configurable = true;
    + }
    +
    l3_mon_evt_init(r);

    r->mon_capable = true;
    diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
    index aa469d708991..f34c70c7a791 100644
    --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
    +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
    @@ -996,8 +996,11 @@ static int rdt_mon_features_show(struct kernfs_open_file *of,
    struct rdt_resource *r = of->kn->parent->priv;
    struct mon_evt *mevt;

    - list_for_each_entry(mevt, &r->evt_list, list)
    + list_for_each_entry(mevt, &r->evt_list, list) {
    seq_printf(seq, "%s\n", mevt->name);
    + if (mevt->configurable)
    + seq_printf(seq, "%s_config\n", mevt->name);
    + }

    return 0;
    }
    --
    2.34.1
    \
     
     \ /
      Last update: 2023-03-26 23:33    [W:6.597 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site