MIPS: Fix core number detection for MT cores
In cores which implement the MT ASE, the CPUNum in the EBase register is a concatenation of the core number & the VPE ID within that core. In order to retrieve the correct core number CPUNum must be shifted appropriately to remove the VPE ID bits. Signed-off-by: Paul Burton <paul.burton@imgtec.com> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/6666/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
committed by
Ralf Baechle
parent
968a0734db
commit
30ee615bb8
@@ -23,6 +23,7 @@
|
|||||||
#include <asm/cpu-type.h>
|
#include <asm/cpu-type.h>
|
||||||
#include <asm/fpu.h>
|
#include <asm/fpu.h>
|
||||||
#include <asm/mipsregs.h>
|
#include <asm/mipsregs.h>
|
||||||
|
#include <asm/mipsmtregs.h>
|
||||||
#include <asm/msa.h>
|
#include <asm/msa.h>
|
||||||
#include <asm/watch.h>
|
#include <asm/watch.h>
|
||||||
#include <asm/elf.h>
|
#include <asm/elf.h>
|
||||||
@@ -421,8 +422,11 @@ static void decode_configs(struct cpuinfo_mips *c)
|
|||||||
mips_probe_watch_registers(c);
|
mips_probe_watch_registers(c);
|
||||||
|
|
||||||
#ifndef CONFIG_MIPS_CPS
|
#ifndef CONFIG_MIPS_CPS
|
||||||
if (cpu_has_mips_r2)
|
if (cpu_has_mips_r2) {
|
||||||
c->core = read_c0_ebase() & 0x3ff;
|
c->core = read_c0_ebase() & 0x3ff;
|
||||||
|
if (cpu_has_mipsmt)
|
||||||
|
c->core >>= fls(core_nvpes()) - 1;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user