diff options
| author | David Daney <david.daney@cavium.com> | 2015-01-15 08:11:10 -0500 |
|---|---|---|
| committer | Ralf Baechle <ralf@linux-mips.org> | 2015-02-20 09:30:42 -0500 |
| commit | 664d699af24ee73cbc147c4c0f76c8c8ff9ef66f (patch) | |
| tree | 364a6315b49e725a956ef18e08611c87c776b767 | |
| parent | 69f7cd472493f97976598a8b5b515d9ad4814aa6 (diff) | |
MIPS: OCTEON: Implement the core-16057 workaround
Disable ICache prefetch for certian Octeon II processors.
Signed-off-by: David Daney <david.daney@cavium.com>
Signed-off-by: Aleksey Makarov <aleksey.makarov@auriga.com>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/8938/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
| -rw-r--r-- | arch/mips/include/asm/mach-cavium-octeon/kernel-entry-init.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/arch/mips/include/asm/mach-cavium-octeon/kernel-entry-init.h b/arch/mips/include/asm/mach-cavium-octeon/kernel-entry-init.h index 1668ee57acb9..21732c306635 100644 --- a/arch/mips/include/asm/mach-cavium-octeon/kernel-entry-init.h +++ b/arch/mips/include/asm/mach-cavium-octeon/kernel-entry-init.h | |||
| @@ -63,6 +63,28 @@ skip: | |||
| 63 | li v1, ~(7 << 7) | 63 | li v1, ~(7 << 7) |
| 64 | and v0, v0, v1 | 64 | and v0, v0, v1 |
| 65 | ori v0, v0, (6 << 7) | 65 | ori v0, v0, (6 << 7) |
| 66 | |||
| 67 | mfc0 v1, CP0_PRID_REG | ||
| 68 | and t1, v1, 0xfff8 | ||
| 69 | xor t1, t1, 0x9000 # 63-P1 | ||
| 70 | beqz t1, 4f | ||
| 71 | and t1, v1, 0xfff8 | ||
| 72 | xor t1, t1, 0x9008 # 63-P2 | ||
| 73 | beqz t1, 4f | ||
| 74 | and t1, v1, 0xfff8 | ||
| 75 | xor t1, t1, 0x9100 # 68-P1 | ||
| 76 | beqz t1, 4f | ||
| 77 | and t1, v1, 0xff00 | ||
| 78 | xor t1, t1, 0x9200 # 66-PX | ||
| 79 | bnez t1, 5f # Skip WAR for others. | ||
| 80 | and t1, v1, 0x00ff | ||
| 81 | slti t1, t1, 2 # 66-P1.2 and later good. | ||
| 82 | beqz t1, 5f | ||
| 83 | |||
| 84 | 4: # core-16057 work around | ||
| 85 | or v0, v0, 0x2000 # Set IPREF bit. | ||
| 86 | |||
| 87 | 5: # No core-16057 work around | ||
| 66 | # Write the cavium control register | 88 | # Write the cavium control register |
| 67 | dmtc0 v0, CP0_CVMCTL_REG | 89 | dmtc0 v0, CP0_CVMCTL_REG |
| 68 | sync | 90 | sync |
