Hi Xin, On 2/5/25 10:24 PM, Xin Li wrote: > On 1/22/2025 12:20 PM, Babu Moger wrote: >> diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/resctrl/monitor.c >> index 8917c7261680..6fe9e610e9a0 100644 >> --- a/arch/x86/kernel/cpu/resctrl/monitor.c >> +++ b/arch/x86/kernel/cpu/resctrl/monitor.c >> @@ -1324,3 +1324,49 @@ int resctrl_arch_mbm_cntr_assign_set(struct rdt_resource *r, bool enable) >> return 0; >> } >> + >> +u32 resctrl_arch_mon_event_config_get(struct rdt_mon_domain *d, >> + enum resctrl_event_id eventid) >> +{ >> + struct rdt_hw_mon_domain *hw_dom = resctrl_to_arch_mon_dom(d); >> + >> + switch (eventid) { >> + case QOS_L3_OCCUP_EVENT_ID: >> + break; >> + case QOS_L3_MBM_TOTAL_EVENT_ID: >> + return hw_dom->mbm_total_cfg; >> + case QOS_L3_MBM_LOCAL_EVENT_ID: >> + return hw_dom->mbm_local_cfg; >> + } >> + >> + /* Never expect to get here */ >> + WARN_ON_ONCE(1); >> + >> + return INVALID_CONFIG_VALUE; >> +} >> + >> +void resctrl_arch_mon_event_config_set(void *info) >> +{ >> + struct mon_config_info *mon_info = info; >> + struct rdt_hw_mon_domain *hw_dom; >> + unsigned int index; >> + >> + index = mon_event_config_index_get(mon_info->evtid); >> + if (index == INVALID_CONFIG_INDEX) >> + return; >> + >> + wrmsr(MSR_IA32_EVT_CFG_BASE + index, mon_info->mon_config, 0); > > This is the existing code, however it would be better to use wrmsrl() > when the higher 32-bit are all 0s: > > wrmsrl(MSR_IA32_EVT_CFG_BASE + index, mon_info->mon_config); > Could you please elaborate what makes this change better? Thank you! Reinette