MIPS: Store core & VP IDs in GlobalNumber-style variable
This patch modifies the way we store core & VP IDs such that we store them in a single 32 bit integer whose format matches that of the MIPSr6 GlobalNumber register. Whereas we have previously stored core & VP IDs in separate fields, storing them in a single GlobalNumber-like field: 1) Reduces the size of struct cpuinfo_mips by 4 bytes, and will allow it to not grow when cluster support is added. 2) Gives us a natural place to store cluster number, which matches up with what the architecture provides. 3) Will be useful in the future as a parameter to the MIPSr6 GINVI instruction to specify a target CPU whose icache that instruction should operate on. The cpu_set*() accessor functions are moved out of the asm/cpu-info.h header in order to allow them to use the WARN_ON macro, which is unusable in asm/cpu-info.h due to include ordering. Signed-off-by: Paul Burton <paul.burton@imgtec.com> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/17010/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:

committed by
Ralf Baechle

parent
f875a832d2
commit
856fbcee60
@@ -2098,3 +2098,25 @@ void cpu_report(void)
|
||||
if (cpu_has_msa)
|
||||
pr_info("MSA revision is: %08x\n", c->msa_id);
|
||||
}
|
||||
|
||||
void cpu_set_core(struct cpuinfo_mips *cpuinfo, unsigned int core)
|
||||
{
|
||||
/* Ensure the core number fits in the field */
|
||||
WARN_ON(core > (MIPS_GLOBALNUMBER_CORE >> MIPS_GLOBALNUMBER_CORE_SHF));
|
||||
|
||||
cpuinfo->globalnumber &= ~MIPS_GLOBALNUMBER_CORE;
|
||||
cpuinfo->globalnumber |= core << MIPS_GLOBALNUMBER_CORE_SHF;
|
||||
}
|
||||
|
||||
void cpu_set_vpe_id(struct cpuinfo_mips *cpuinfo, unsigned int vpe)
|
||||
{
|
||||
/* Ensure the VP(E) ID fits in the field */
|
||||
WARN_ON(vpe > (MIPS_GLOBALNUMBER_VP >> MIPS_GLOBALNUMBER_VP_SHF));
|
||||
|
||||
/* Ensure we're not using VP(E)s without support */
|
||||
WARN_ON(vpe && !IS_ENABLED(CONFIG_MIPS_MT_SMP) &&
|
||||
!IS_ENABLED(CONFIG_CPU_MIPSR6));
|
||||
|
||||
cpuinfo->globalnumber &= ~MIPS_GLOBALNUMBER_VP;
|
||||
cpuinfo->globalnumber |= vpe << MIPS_GLOBALNUMBER_VP_SHF;
|
||||
}
|
||||
|
Reference in New Issue
Block a user