Hi Babu On 8/5/25 4:30 PM, Babu Moger wrote: > When the io_alloc feature is enabled, a portion of the cache can be > configured for shared use between hardware and software. > > Update the bit_usage representation to reflect the io_alloc configuration. ... but no update to the bit_usage docs :( > > Signed-off-by: Babu Moger <babu.moger@xxxxxxx> > --- .. > --- > Documentation/filesystems/resctrl.rst | 19 +++++++++++++------ > fs/resctrl/ctrlmondata.c | 2 +- > fs/resctrl/internal.h | 2 ++ > fs/resctrl/rdtgroup.c | 18 ++++++++++++++++-- > 4 files changed, 32 insertions(+), 9 deletions(-) > > diff --git a/Documentation/filesystems/resctrl.rst b/Documentation/filesystems/resctrl.rst > index d955e8525af0..1e46231b929c 100644 > --- a/Documentation/filesystems/resctrl.rst > +++ b/Documentation/filesystems/resctrl.rst > @@ -90,12 +90,19 @@ related to allocation: > must be set when writing a mask. > > "shareable_bits": > - Bitmask of shareable resource with other executing > - entities (e.g. I/O). User can use this when > - setting up exclusive cache partitions. Note that > - some platforms support devices that have their > - own settings for cache use which can over-ride > - these bits. > + Bitmask of shareable resource with other executing entities > + (e.g. I/O). Applies to all instances of this resource. User > + can use this when setting up exclusive cache partitions. > + Note that some platforms support devices that have their > + own settings for cache use which can over-ride these bits. > + > + When "io_alloc" is enabled, a portion of each cache instance can > + be configured for shared use between hardware and software. > + "bit_usage" should be used to see which portions of each cache > + instance is configured for hardware use via "io_alloc" feature > + because every cache instance can have its "io_alloc" bitmask > + configured independently via io_alloc_cbm. > + > "bit_usage": More ignored feedback. I was expecting changes to the "bit_usage" section. https://lore.kernel.org/lkml/94d075e0-6703-449f-9c0c-8e5973349dff@xxxxxxxxx/ > Annotated capacity bitmasks showing how all > instances of the resource are used. The legend is: > diff --git a/fs/resctrl/ctrlmondata.c b/fs/resctrl/ctrlmondata.c > index 1f69117f96f8..cfa766319189 100644 > --- a/fs/resctrl/ctrlmondata.c > +++ b/fs/resctrl/ctrlmondata.c > @@ -754,7 +754,7 @@ static int resctrl_io_alloc_init_cbm(struct resctrl_schema *s, u32 closid) > * resource. Note that if Code Data Prioritization (CDP) is enabled, the number > * of available CLOSIDs is reduced by half. > */ > -static u32 resctrl_io_alloc_closid(struct rdt_resource *r) > +u32 resctrl_io_alloc_closid(struct rdt_resource *r) > { > if (resctrl_arch_get_cdp_enabled(r->rid)) > return resctrl_arch_get_num_closid(r) / 2 - 1; > diff --git a/fs/resctrl/internal.h b/fs/resctrl/internal.h > index 5467c3ad1b6d..98b87725508b 100644 > --- a/fs/resctrl/internal.h > +++ b/fs/resctrl/internal.h > @@ -395,6 +395,8 @@ int resctrl_io_alloc_cbm_show(struct kernfs_open_file *of, struct seq_file *seq, > ssize_t resctrl_io_alloc_cbm_write(struct kernfs_open_file *of, char *buf, > size_t nbytes, loff_t off); > > +u32 resctrl_io_alloc_closid(struct rdt_resource *r); > + > const char *rdtgroup_name_by_closid(int closid); > > #ifdef CONFIG_RESCTRL_FS_PSEUDO_LOCK > diff --git a/fs/resctrl/rdtgroup.c b/fs/resctrl/rdtgroup.c > index a3ab2851c6da..b85c2622c94b 100644 > --- a/fs/resctrl/rdtgroup.c > +++ b/fs/resctrl/rdtgroup.c > @@ -1068,15 +1068,17 @@ static int rdt_bit_usage_show(struct kernfs_open_file *of, > > cpus_read_lock(); > mutex_lock(&rdtgroup_mutex); > - hw_shareable = r->cache.shareable_bits; > list_for_each_entry(dom, &r->ctrl_domains, hdr.list) { > if (sep) > seq_putc(seq, ';'); > + hw_shareable = r->cache.shareable_bits; > sw_shareable = 0; > exclusive = 0; > seq_printf(seq, "%d=", dom->hdr.id); > for (i = 0; i < closids_supported(); i++) { > - if (!closid_allocated(i)) > + if (!closid_allocated(i) || > + (resctrl_arch_get_io_alloc_enabled(r) && > + i == resctrl_io_alloc_closid(r))) > continue; > ctrl_val = resctrl_arch_get_config(r, dom, i, > s->conf_type); > @@ -1104,6 +1106,18 @@ static int rdt_bit_usage_show(struct kernfs_open_file *of, > break; > } > } > + > + /* > + * When the "io_alloc" feature is enabled, a portion of the > + * cache is configured for shared use between hardware and software. Please add snippet to comment that highlights that CBM of CDP peers are kept in sync and the CBM used for I/O can thus be obtained from either. Reinette