Re: [PATCH v6 20/21] x86/resctrl: Add resctrl_rmid_realloc_limit to abstract x86's boot_cpu_data

From: James Morse
Date: Thu Sep 08 2022 - 13:01:59 EST


Hi Hao Xin,

On 07/09/2022 07:26, haoxin wrote:
> 在 2022/9/2 下午11:48, James Morse 写道:
>> resctrl_rmid_realloc_threshold can be set by user-space. The maximum
>> value is specified by the architecture.
>>
>> Currently max_threshold_occ_write() reads the maximum value from
>> boot_cpu_data.x86_cache_size, which is not portable to another
>> architecture.
>>
>> Add resctrl_rmid_realloc_limit to describe the maximum size in bytes
>> that user-space can set the threshold to.

>> diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/resctrl/monitor.c
>> index e91afe99b763..8d15568d7121 100644
>> --- a/arch/x86/kernel/cpu/resctrl/monitor.c
>> +++ b/arch/x86/kernel/cpu/resctrl/monitor.c
>> @@ -747,10 +752,10 @@ int rdt_get_mon_l3_config(struct rdt_resource *r)
>>   {
>>       unsigned int mbm_offset = boot_cpu_data.x86_cache_mbm_width_offset;
>>       struct rdt_hw_resource *hw_res = resctrl_to_arch_res(r);
>> -    unsigned int cl_size = boot_cpu_data.x86_cache_size;
>>       unsigned int threshold;
>>       int ret;
>>   +    resctrl_rmid_realloc_limit = boot_cpu_data.x86_cache_size * 1024;

> Use SZ_1K instead ?

Sure, that's usually more readable. I didn't because the existing code doesn't, and I
wanted it to be obvious where this had come from.

If I re-post the series I'll change this.


Thanks for taking a look!

James

>>       hw_res->mon_scale = boot_cpu_data.x86_cache_occ_scale;
>>       r->num_rmid = boot_cpu_data.x86_cache_max_rmid + 1;
>>       hw_res->mbm_width = MBM_CNTR_WIDTH_BASE;
>> @@ -767,7 +772,7 @@ int rdt_get_mon_l3_config(struct rdt_resource *r)
>> *
>> * For a 35MB LLC and 56 RMIDs, this is ~1.8% of the LLC.
>> */
>> - threshold = cl_size * 1024 / r->num_rmid;
>> + threshold = resctrl_rmid_realloc_limit / r->num_rmid;
>> /*
>> * Because num_rmid may not be a power of two, round the value