[POWERPC] 4xx: Workaround for the 440EP(x)/GR(x) processors identical PVR issue.
authorValentine Barshak <vbarshak@ru.mvista.com>
Thu, 25 Oct 2007 18:16:40 +0000 (04:16 +1000)
committerJosh Boyer <jwboyer@linux.vnet.ibm.com>
Thu, 1 Nov 2007 12:13:43 +0000 (07:13 -0500)
commitd1dfc35d3a62122b85ca975b80dcbf4a0da0bebc
tree61a5b0969dc452f77d3ad87ca851f1f4237a2219
parent1d6b698764084510fe6168bb5b650165dced03ae
[POWERPC] 4xx: Workaround for the 440EP(x)/GR(x) processors identical PVR issue.

PowerPC 440EP(x) 440GR(x) processors have the same PVR values, since
they have identical cores. However, FPU is not supported on GR(x) and
enabling APU instruction broadcast in the CCR0 register (to enable FPU)
may cause unpredictable results. There's no safe way to detect FPU
support at runtime. This patch provides a workarund for the issue.

We use a POWER6 "logical PVR approach". First, we identify all EP(x)
and GR(x) processors as GR(x) ones (which is safe). Then we check
the device tree cpu path. If we have a EP(x) processor entry,
we call identify_cpu again with PVR | 0x8. This bit is always 0
in the real PVR. This way we enable FPU only for 440EP(x).

Signed-off-by: Valentine Barshak <vbarshak@ru.mvista.com>
Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
arch/powerpc/kernel/cputable.c
arch/powerpc/kernel/prom.c