From 21a86c86cdf14a703a5590b56bfd53eae3609067 Mon Sep 17 00:00:00 2001 From: Xie XiuQi Date: Sun, 28 Apr 2019 22:18:15 +0800 Subject: [PATCH 2860/2944] openEuler: arm64/mpam: get num_partids from system regs instead of hard code commit 42778d9f5f82ee51eb3aef8eca610081a4c4cee0 openEuler-1.0 hulk inclusion category: bugfix bugzilla: 14212 CVE: NA Previously hard coded for num of partids, now get them through the system registers. Signed-off-by: Xie XiuQi Reviewed-by: Hanjun Guo Signed-off-by: Yang Yingliang Signed-off-by: Xin Hao Reviewed-by: Baolin Wang --- arch/arm64/kernel/mpam.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/arch/arm64/kernel/mpam.c b/arch/arm64/kernel/mpam.c index dae2303..44ba7ea 100644 --- a/arch/arm64/kernel/mpam.c +++ b/arch/arm64/kernel/mpam.c @@ -322,9 +322,17 @@ static int csu_write(struct rdt_domain *d, struct rdtgroup *g, bool enable) void closid_init(void) { - int resctrl_min_closid = 32; + struct resctrl_resource *r; + struct raw_resctrl_resource *rr; + int num_closid = INT_MAX; - closid_free_map = BIT_MASK(resctrl_min_closid) - 1; + for_each_resctrl_resource(r) { + if (r->alloc_enabled) { + rr = r->res; + num_closid = min(num_closid, rr->num_partid); + } + } + closid_free_map = BIT_MASK(num_closid) - 1; /* CLOSID 0 is always reserved for the default group */ closid_free_map &= ~1; -- 1.8.3.1