On Sun, Jan 18, 2015 at 5:30 PM, Joshua Kinard <kumba@xxxxxxxxxx> wrote: > From: Joshua Kinard <kumba@xxxxxxxxxx> > > This allows the kernel to correctly detect an R16000 MIPS CPU on systems that > have those. Otherwise, such systems will detect the CPU as an R14000, due to > similarities in the CPU PRId value. > > Signed-off-by: Joshua Kinard <kumba@xxxxxxxxxx> > --- > arch/mips/include/asm/cpu-type.h | 1 + > arch/mips/include/asm/cpu.h | 6 +++--- > arch/mips/kernel/cpu-probe.c | 9 +++++++-- > arch/mips/kernel/perf_event_mipsxx.c | 1 + > arch/mips/mm/c-r4k.c | 4 ++++ > arch/mips/mm/page.c | 1 + > arch/mips/mm/tlb-r4k.c | 3 ++- > arch/mips/mm/tlbex.c | 1 + > arch/mips/oprofile/common.c | 1 + > arch/mips/oprofile/op_model_mipsxx.c | 1 + > 10 files changed, 22 insertions(+), 6 deletions(-) > > linux-mips-add-r16000-detection.patch > diff --git a/arch/mips/include/asm/cpu-type.h b/arch/mips/include/asm/cpu-type.h > index b4e2bd8..d85fc26 100644 > --- a/arch/mips/include/asm/cpu-type.h > +++ b/arch/mips/include/asm/cpu-type.h > @@ -150,6 +150,7 @@ static inline int __pure __get_cpu_type(const int cpu_type) > case CPU_R10000: > case CPU_R12000: > case CPU_R14000: > + case CPU_R16000: > #endif > #ifdef CONFIG_SYS_HAS_CPU_RM7000 > case CPU_RM7000: > diff --git a/arch/mips/include/asm/cpu.h b/arch/mips/include/asm/cpu.h > index 33866fc..53acfce 100644 > --- a/arch/mips/include/asm/cpu.h > +++ b/arch/mips/include/asm/cpu.h > @@ -67,7 +67,7 @@ > #define PRID_IMP_R4300 0x0b00 > #define PRID_IMP_VR41XX 0x0c00 > #define PRID_IMP_R12000 0x0e00 > -#define PRID_IMP_R14000 0x0f00 > +#define PRID_IMP_R14000 0x0f00 /* R14K && R16K */ > #define PRID_IMP_R8000 0x1000 > #define PRID_IMP_PR4450 0x1200 > #define PRID_IMP_R4600 0x2000 > @@ -283,8 +283,8 @@ enum cpu_type_enum { > CPU_R4000PC, CPU_R4000SC, CPU_R4000MC, CPU_R4200, CPU_R4300, CPU_R4310, > CPU_R4400PC, CPU_R4400SC, CPU_R4400MC, CPU_R4600, CPU_R4640, CPU_R4650, > CPU_R4700, CPU_R5000, CPU_R5500, CPU_NEVADA, CPU_R5432, CPU_R10000, > - CPU_R12000, CPU_R14000, CPU_VR41XX, CPU_VR4111, CPU_VR4121, CPU_VR4122, > - CPU_VR4131, CPU_VR4133, CPU_VR4181, CPU_VR4181A, CPU_RM7000, > + CPU_R12000, CPU_R14000, CPU_R16000, CPU_VR41XX, CPU_VR4111, CPU_VR4121, > + CPU_VR4122, CPU_VR4131, CPU_VR4133, CPU_VR4181, CPU_VR4181A, CPU_RM7000, > CPU_SR71000, CPU_TX49XX, > > /* > diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c > index 5342674..3f334a8 100644 > --- a/arch/mips/kernel/cpu-probe.c > +++ b/arch/mips/kernel/cpu-probe.c > @@ -833,8 +833,13 @@ static inline void cpu_probe_legacy(struct cpuinfo_mips *c, unsigned int cpu) > c->tlbsize = 64; > break; > case PRID_IMP_R14000: > - c->cputype = CPU_R14000; > - __cpu_name[cpu] = "R14000"; > + if (((c->processor_id >> 4) & 0x0f) > 2) { > + c->cputype = CPU_R16000; > + __cpu_name[cpu] = "R16000"; > + } else { > + c->cputype = CPU_R14000; > + __cpu_name[cpu] = "R14000"; > + } It looks like this is the only hunk that has a functional change, and that is simply setting __cpu_name[cpu] to "R16000" You can do that without adding CPU_R16000 to the enumeration. I don't see that adding it accomplishes anything.