diff options
Diffstat (limited to 'arch/x86/kernel/cpu/resctrl/monitor.c')
| -rw-r--r-- | arch/x86/kernel/cpu/resctrl/monitor.c | 45 | 
1 files changed, 20 insertions, 25 deletions
diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/resctrl/monitor.c index 7fe51488e136..ded1fc7cb7cb 100644 --- a/arch/x86/kernel/cpu/resctrl/monitor.c +++ b/arch/x86/kernel/cpu/resctrl/monitor.c @@ -76,7 +76,7 @@ unsigned int resctrl_rmid_realloc_limit;  #define CF(cf)	((unsigned long)(1048576 * (cf) + 0.5))  /* - * The correction factor table is documented in Documentation/x86/resctrl.rst. + * The correction factor table is documented in Documentation/arch/x86/resctrl.rst.   * If rmid > rmid threshold, MBM total and local values should be multiplied   * by the correction factor.   * @@ -383,41 +383,36 @@ void free_rmid(u32 rmid)  		list_add_tail(&entry->list, &rmid_free_lru);  } +static struct mbm_state *get_mbm_state(struct rdt_domain *d, u32 rmid, +				       enum resctrl_event_id evtid) +{ +	switch (evtid) { +	case QOS_L3_MBM_TOTAL_EVENT_ID: +		return &d->mbm_total[rmid]; +	case QOS_L3_MBM_LOCAL_EVENT_ID: +		return &d->mbm_local[rmid]; +	default: +		return NULL; +	} +} +  static int __mon_event_count(u32 rmid, struct rmid_read *rr)  {  	struct mbm_state *m;  	u64 tval = 0; -	if (rr->first) +	if (rr->first) {  		resctrl_arch_reset_rmid(rr->r, rr->d, rmid, rr->evtid); +		m = get_mbm_state(rr->d, rmid, rr->evtid); +		if (m) +			memset(m, 0, sizeof(struct mbm_state)); +		return 0; +	}  	rr->err = resctrl_arch_rmid_read(rr->r, rr->d, rmid, rr->evtid, &tval);  	if (rr->err)  		return rr->err; -	switch (rr->evtid) { -	case QOS_L3_OCCUP_EVENT_ID: -		rr->val += tval; -		return 0; -	case QOS_L3_MBM_TOTAL_EVENT_ID: -		m = &rr->d->mbm_total[rmid]; -		break; -	case QOS_L3_MBM_LOCAL_EVENT_ID: -		m = &rr->d->mbm_local[rmid]; -		break; -	default: -		/* -		 * Code would never reach here because an invalid -		 * event id would fail in resctrl_arch_rmid_read(). -		 */ -		return -EINVAL; -	} - -	if (rr->first) { -		memset(m, 0, sizeof(struct mbm_state)); -		return 0; -	} -  	rr->val += tval;  	return 0;  |