Re: [PATCH v18 11/17] x86/resctrl: Allocate a new bit in union mon_data_bits

From: Reinette Chatre
Date: Wed May 22 2024 - 17:17:08 EST


Hi Tony,

On 5/15/2024 3:23 PM, Tony Luck wrote:
> When Sub-NUMA (SNC) mode is enabled the legacy monitor reporting files

Sub-NUMA Cluster (SNC)? (I'll stop pointing these out.)

> must report the sum of the data from all of the SNC nodes that share the
> L3 cache that is referenced by the monitor file.
>
> Resctrl squeezes all the attributes of these files into 32-bits so they
> can be stored in the "priv" field of struct kernfs_node.
>
> Steal one bit from the "evtid" field (currently 8 bits, but only three
> events supported by Intel) to create a new "sum" field that indicates

This is filesystem code so should surely not be just about what us supported
by Intel.

> this file must sum across SNC nodes. This bit also indicates that the
> domid field is the display_id to match to find which domains must be
> summed.
>
> Signed-off-by: Tony Luck <tony.luck@xxxxxxxxx>
> ---
> arch/x86/kernel/cpu/resctrl/internal.h | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
> index 498c5d240c68..c54ad12ff2b8 100644
> --- a/arch/x86/kernel/cpu/resctrl/internal.h
> +++ b/arch/x86/kernel/cpu/resctrl/internal.h
> @@ -132,14 +132,19 @@ struct mon_evt {
> * as kernfs private data
> * @rid: Resource id associated with the event file
> * @evtid: Event id associated with the event file
> - * @domid: The domain to which the event file belongs
> + * @sum: Set when event must be summed across multiple
> + * domains.
> + * @domid: When @sum is zero this is the domain to which
> + * the event file belongs. When sum is one this

sum -> @sum to be consistent with previous sentence?

> + * is the display_id of all domains to be summed

"is the monitoring display scope id shared with other monitoring
domains to be summed"?

> * @u: Name of the bit fields struct
> */
> union mon_data_bits {
> void *priv;
> struct {
> unsigned int rid : 10;
> - enum resctrl_event_id evtid : 8;
> + enum resctrl_event_id evtid : 7;
> + unsigned int sum : 1;
> unsigned int domid : 14;
> } u;
> };

Reinette