Re: [PATCH] MIPS: Add R16000 detection

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.




[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux