Skip to content

Commit 3e9b358

Browse files
benhor01James Morse
authored andcommitted
arm_mpam: resctrl: Add rmid index helpers
Because MPAM's pmg aren't identical to RDT's rmid, resctrl handles some data structures by index. This allows x86 to map indexes to RMID, and MPAM to map them to partid-and-pmg. Add the helpers to do this. Tested-by: Gavin Shan <gshan@redhat.com> Tested-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.com> Tested-by: Peter Newman <peternewman@google.com> Tested-by: Zeng Heng <zengheng4@huawei.com> Tested-by: Punit Agrawal <punit.agrawal@oss.qualcomm.com> Tested-by: Jesse Chick <jessechick@os.amperecomputing.com> Reviewed-by: Zeng Heng <zengheng4@huawei.com> Reviewed-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.com> Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com> Reviewed-by: Gavin Shan <gshan@redhat.com> Suggested-by: James Morse <james.morse@arm.com> Signed-off-by: Ben Horgan <ben.horgan@arm.com> Signed-off-by: James Morse <james.morse@arm.com>
1 parent 80d147d commit 3e9b358

2 files changed

Lines changed: 19 additions & 0 deletions

File tree

drivers/resctrl/mpam_resctrl.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,22 @@ u32 resctrl_arch_get_num_closid(struct rdt_resource *ignored)
145145
return mpam_partid_max + 1;
146146
}
147147

148+
u32 resctrl_arch_system_num_rmid_idx(void)
149+
{
150+
return (mpam_pmg_max + 1) * (mpam_partid_max + 1);
151+
}
152+
153+
u32 resctrl_arch_rmid_idx_encode(u32 closid, u32 rmid)
154+
{
155+
return closid * (mpam_pmg_max + 1) + rmid;
156+
}
157+
158+
void resctrl_arch_rmid_idx_decode(u32 idx, u32 *closid, u32 *rmid)
159+
{
160+
*closid = idx / (mpam_pmg_max + 1);
161+
*rmid = idx % (mpam_pmg_max + 1);
162+
}
163+
148164
void resctrl_arch_sched_in(struct task_struct *tsk)
149165
{
150166
lockdep_assert_preemption_disabled();

include/linux/arm_mpam.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ void resctrl_arch_set_cpu_default_closid_rmid(int cpu, u32 closid, u32 rmid);
5858
void resctrl_arch_sched_in(struct task_struct *tsk);
5959
bool resctrl_arch_match_closid(struct task_struct *tsk, u32 closid);
6060
bool resctrl_arch_match_rmid(struct task_struct *tsk, u32 closid, u32 rmid);
61+
u32 resctrl_arch_rmid_idx_encode(u32 closid, u32 rmid);
62+
void resctrl_arch_rmid_idx_decode(u32 idx, u32 *closid, u32 *rmid);
63+
u32 resctrl_arch_system_num_rmid_idx(void);
6164

6265
/**
6366
* mpam_register_requestor() - Register a requestor with the MPAM driver

0 commit comments

Comments
 (0)