OrangePi_CM5/arch/mips
Maciej W. Rozycki 326f02f172 MIPS: Fix CP0 counter erratum detection for R4k CPUs
commit f0a6c68f69981214cb7858738dd2bc81475111f7 upstream.

Fix the discrepancy between the two places we check for the CP0 counter
erratum in along with the incorrect comparison of the R4400 revision
number against 0x30 which matches none and consistently consider all
R4000 and R4400 processors affected, as documented in processor errata
publications[1][2][3], following the mapping between CP0 PRId register
values and processor models:

  PRId   |  Processor Model
---------+--------------------
00000422 | R4000 Revision 2.2
00000430 | R4000 Revision 3.0
00000440 | R4400 Revision 1.0
00000450 | R4400 Revision 2.0
00000460 | R4400 Revision 3.0

No other revision of either processor has ever been spotted.

Contrary to what has been stated in commit ce202cbb9e ("[MIPS] Assume
R4000/R4400 newer than 3.0 don't have the mfc0 count bug") marking the
CP0 counter as buggy does not preclude it from being used as either a
clock event or a clock source device.  It just cannot be used as both at
a time, because in that case clock event interrupts will be occasionally
lost, and the use as a clock event device takes precedence.

Compare against 0x4ff in `can_use_mips_counter' so that a single machine
instruction is produced.

References:

[1] "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0", MIPS
    Technologies Inc., May 10, 1994, Erratum 53, p.13

[2] "MIPS R4400PC/SC Errata, Processor Revision 1.0", MIPS Technologies
    Inc., February 9, 1994, Erratum 21, p.4

[3] "MIPS R4400PC/SC Errata, Processor Revision 2.0 & 3.0", MIPS
    Technologies Inc., January 24, 1995, Erratum 14, p.3

Signed-off-by: Maciej W. Rozycki <macro@orcam.me.uk>
Fixes: ce202cbb9e ("[MIPS] Assume R4000/R4400 newer than 3.0 don't have the mfc0 count bug")
Cc: stable@vger.kernel.org # v2.6.24+
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-05-12 12:25:29 +02:00
..
alchemy MIPS: alchemy: xxs1500: add gpio-au1000.h header file 2021-06-03 09:00:50 +02:00
ar7
…
ath25
…
ath79
…
bcm47xx
…
bcm63xx mips: bcm63xx: add support for clk_set_parent() 2022-01-27 10:54:09 +01:00
bmips
…
boot MIPS: ingenic: correct unit node address 2022-04-13 21:01:00 +02:00
cavium-octeon MIPS: OCTEON: add put_device() after of_find_device_by_node() 2022-01-27 10:54:23 +01:00
cobalt
…
configs
…
crypto crypto: poly1305 - fix poly1305_core_setkey() declaration 2021-05-14 09:50:13 +02:00
dec mips: DEC: honor CONFIG_MIPS_FP_SUPPORT=n 2022-04-08 14:40:20 +02:00
fw
…
generic MIPS: generic/yamon-dt: fix uninitialized variable error 2021-11-26 10:39:15 +01:00
include MIPS: Fix CP0 counter erratum detection for R4k CPUs 2022-05-12 12:25:29 +02:00
ingenic
…
jazz
…
kernel MIPS: Fix CP0 counter erratum detection for R4k CPUs 2022-05-12 12:25:29 +02:00
kvm
…
lantiq mips: lantiq: add support for clk_set_parent() 2022-01-27 10:54:09 +01:00
lib MIPS: Fix kernel hang under FUNCTION_GRAPH_TRACER and PREEMPT_TRACER 2021-06-16 12:01:37 +02:00
loongson2ef
…
loongson32
…
loongson64 MIPS: loongsoon64: Reserve memory below starting pfn to prevent Oops 2021-07-19 09:44:55 +02:00
math-emu
…
mm MIPS: c-r4k: Fix section mismatch for loongson2_sc_init 2021-03-04 11:37:38 +01:00
mti-malta MIPS: Malta: fix alignment of the devicetree buffer 2021-09-18 13:40:16 +02:00
net bpf, mips: Validate conditional branch offsets 2021-10-06 15:55:51 +02:00
netlogic
…
oprofile
…
pci MIPS: pci-legacy: stop using of_pci_range_to_resource 2021-05-14 09:50:39 +02:00
pic32
…
pistachio
…
power
…
ralink mips: ralink: fix a refcount leak in ill_acc_of_setup() 2022-04-13 21:00:58 +02:00
rb532 MIPS: RB532: fix return value of __setup handler 2022-04-08 14:40:21 +02:00
sgi-ip22
…
sgi-ip27
…
sgi-ip30
…
sgi-ip32
…
sibyte
…
sni MIPS: sni: Fix the build 2021-11-26 10:39:10 +01:00
tools
…
txx9
…
vdso MIPS: VDSO: Use CLANG_FLAGS instead of filtering out '--target=' 2021-03-04 11:38:26 +01:00
vr41xx
…
Kbuild
…
Kbuild.platforms
…
Kconfig mips: fix Kconfig reference to PHYS_ADDR_T_64BIT 2022-01-27 10:54:07 +01:00
Kconfig.debug
…
Makefile mips: Fix non-POSIX regexp 2021-08-12 13:22:07 +02:00
Makefile.postlink
…