Re: [PATCH v2] MIPS: Tell R4k SC and MC variations apart

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

 



On Mon, Sep 23, 2013 at 2:35 PM, Maciej W. Rozycki <macro@xxxxxxxxxxxxxx> wrote:
(snip)

> linux-mips-r4k-mc.patch
> Index: linux/arch/mips/kernel/cpu-probe.c
> ===================================================================
> --- linux.orig/arch/mips/kernel/cpu-probe.c
> +++ linux/arch/mips/kernel/cpu-probe.c
> @@ -362,13 +362,33 @@ static inline void cpu_probe_legacy(stru
>                                 __cpu_name[cpu] = "R4000PC";
>                         }
>                 } else {
> +                       int cca = read_c0_config() & CONF_CM_CMASK;
> +                       int mc;
> +
> +                       /*
> +                        * SC and MC versions can't be reliably told apart,
> +                        * but only the latter support coherent caching
> +                        * modes so assume the firmware has set the KSEG0
> +                        * coherency attribute reasonably (if uncached, we
> +                        * assume SC).
> +                        */
> +                       switch (cca) {
> +                       case CONF_CM_CACHABLE_CE:
> +                       case CONF_CM_CACHABLE_COW:
> +                       case CONF_CM_CACHABLE_CUW:
> +                               mc = 1;
> +                               break;
> +                       default:
> +                               mc = 0;
> +                               break;
> +                       }
>                         if ((c->processor_id & PRID_REV_MASK) >=
>                             PRID_REV_R4400) {
> -                               c->cputype = CPU_R4400SC;
> -                               __cpu_name[cpu] = "R4400SC";
> +                               c->cputype = mc ? CPU_R4400MC : CPU_R4400SC;
> +                               __cpu_name[cpu] = mc ? "R4400MC" : "R4400SC";
>                         } else {
> -                               c->cputype = CPU_R4000SC;
> -                               __cpu_name[cpu] = "R4000SC";
> +                               c->cputype = mc ? CPU_R4000MC : CPU_R4000SC;
> +                               __cpu_name[cpu] = mc ? "R4400MC" : "R4000SC";

You are still calling it "R4400", not "R4000" as expected.


Jonas


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

  Powered by Linux