[External] [PATCH RFC v2 06/17] RISC-V: QoS: define CBQRI resctrl resources and domains
Drew Fustini
fustini at kernel.org
Tue Mar 24 23:49:29 PDT 2026
On Wed, Mar 25, 2026 at 10:31:39AM +0800, yunhui cui wrote:
> Hi Drew,
>
> On Thu, Jan 29, 2026 at 4:28 AM Drew Fustini <fustini at kernel.org> wrote:
> >
> > Define data structures to encapsulate the resctrl resource
> > and domain structures.
> >
> > Co-developed-by: Adrien Ricciardi <aricciardi at baylibre.com>
> > Signed-off-by: Adrien Ricciardi <aricciardi at baylibre.com>
> > [fustini: rebased current upstream]
> > Signed-off-by: Drew Fustini <fustini at kernel.org>
> > ---
> > arch/riscv/kernel/qos/internal.h | 27 +++++++++++++++++++++++++++
> > 1 file changed, 27 insertions(+)
> >
> > diff --git a/arch/riscv/kernel/qos/internal.h b/arch/riscv/kernel/qos/internal.h
> > index ff2c7eff50be..c0402dd06cfa 100644
> > --- a/arch/riscv/kernel/qos/internal.h
> > +++ b/arch/riscv/kernel/qos/internal.h
> > @@ -65,6 +65,11 @@
> > #define CBQRI_BC_ALLOC_CTL_OP_READ_LIMIT 2
> > #define CBQRI_BC_ALLOC_CTL_STATUS_SUCCESS 1
> >
> > +int qos_resctrl_setup(void);
> > +void qos_resctrl_exit(void);
> > +int qos_resctrl_online_cpu(unsigned int cpu);
> > +int qos_resctrl_offline_cpu(unsigned int cpu);
> > +
> > /* Capacity Controller hardware capabilities */
> > struct riscv_cbqri_capacity_caps {
> > u16 ncblks; /* number of capacity blocks */
> > @@ -125,4 +130,26 @@ struct cbqri_controller {
> > bool mon_capable;
> > };
> >
> > +struct cbqri_resctrl_res {
> > + struct rdt_resource resctrl_res;
> > + struct cbqri_controller controller;
> > + u32 max_rcid;
> > + u32 max_mcid;
> > +};
> > +
> > +struct cbqri_resctrl_dom {
> > + struct rdt_domain_hdr resctrl_dom_hdr;
> > + struct rdt_ctrl_domain resctrl_ctrl_dom;
> > + struct rdt_mon_domain resctrl_mon_dom;
> > + u64 cbm;
> > + u64 rbwb;
> > + u64 *ctrl_val;
> > + struct cbqri_controller *hw_ctrl;
> > +};
> > +
>
> Can we trim down some fields? For example:
> struct cbqri_resctrl_res {
> struct rdt_resource resctrl_res;
> - struct cbqri_controller controller;
> u32 max_rcid;
> u32 max_mcid;
> };
>
> struct cbqri_resctrl_dom {
> - struct rdt_domain_hdr resctrl_dom_hdr;
> struct rdt_ctrl_domain resctrl_ctrl_dom;
> struct rdt_mon_domain resctrl_mon_dom;
> - u64 cbm;
> - u64 rbwb;
> u64 *ctrl_val;
> struct cbqri_controller *hw_ctrl;
> };
Can you explain why you don't think these are needed??
Thanks,
Drew
More information about the linux-riscv
mailing list