@@ -66,6 +66,9 @@ static inline void mpam_set_cpu_defaults(int cpu, u16 partid_d, u16 partid_i,
default_val |= FIELD_PREP(MPAM1_EL1_PMG_I, pmg_i);
WRITE_ONCE(per_cpu(arm64_mpam_default, cpu), default_val);
+
+ pr_info("MPAM: CPU%d -> (D=%d:%d, I=%d:%d)\n",
+ cpu, partid_d, pmg_d, partid_i, pmg_i);
}
static inline void mpam_set_task_partid_pmg(struct task_struct *tsk,
@@ -81,6 +84,10 @@ static inline void mpam_set_task_partid_pmg(struct task_struct *tsk,
regval |= FIELD_PREP(MPAM1_EL1_PMG_I, pmg_i);
WRITE_ONCE(task_thread_info(tsk)->mpam_partid_pmg, regval);
+
+ pr_info("MPAM: task %s[%d/%d] -> (D=%d:%d, I=%d:%d)\n",
+ current->comm, current->pid, current->tgid,
+ partid_d, pmg_d, partid_i, pmg_i);
#endif
}
@@ -3158,6 +3158,12 @@ int mpam_apply_config(struct mpam_component *comp, u16 partid,
mpam_extend_config(comp->class, cfg);
+ pr_info("mpam_apply_config(): comp %d partid %d cfg={0x%x: 0x%lx, 0x%lx, %u, %u}\n",
+ comp->comp_id, partid, cfg->features,
+ (unsigned long)cfg->cpbm,
+ (unsigned long)cfg->mbw_pbm,
+ cfg->mbw_min, cfg->mbw_max);
+
if (!mpam_update_config(&comp->cfg[partid], cfg))
return 0;
Purely for development purposes, add some printks to show what MPAM IDs actually get assigned and configured. This would otherwise be observable only though statistical measurements of performance (or not observable at all). This change is not intended for upstream. Signed-off-by: Dave Martin <Dave.Martin@arm.com> --- arch/arm64/include/asm/mpam.h | 7 +++++++ drivers/platform/arm64/mpam/mpam_devices.c | 6 ++++++ 2 files changed, 13 insertions(+)