diff options
| -rw-r--r-- | arch/arm/Kconfig | 10 | ||||
| -rw-r--r-- | arch/arm/mm/proc-v7.S | 6 |
2 files changed, 16 insertions, 0 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index ba9fc213f344..166efa2a19cd 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
| @@ -1177,6 +1177,16 @@ config ARM_ERRATA_743622 | |||
| 1177 | visible impact on the overall performance or power consumption of the | 1177 | visible impact on the overall performance or power consumption of the |
| 1178 | processor. | 1178 | processor. |
| 1179 | 1179 | ||
| 1180 | config ARM_ERRATA_751472 | ||
| 1181 | bool "ARM errata: Interrupted ICIALLUIS may prevent completion of broadcasted operation" | ||
| 1182 | depends on CPU_V7 && SMP | ||
| 1183 | help | ||
| 1184 | This option enables the workaround for the 751472 Cortex-A9 (prior | ||
| 1185 | to r3p0) erratum. An interrupted ICIALLUIS operation may prevent the | ||
| 1186 | completion of a following broadcasted operation if the second | ||
| 1187 | operation is received by a CPU before the ICIALLUIS has completed, | ||
| 1188 | potentially leading to corrupted entries in the cache or TLB. | ||
| 1189 | |||
| 1180 | config ARM_ERRATA_753970 | 1190 | config ARM_ERRATA_753970 |
| 1181 | bool "ARM errata: cache sync operation may be faulty" | 1191 | bool "ARM errata: cache sync operation may be faulty" |
| 1182 | depends on CACHE_PL310 | 1192 | depends on CACHE_PL310 |
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S index 0c1172b56b4e..8e3356239136 100644 --- a/arch/arm/mm/proc-v7.S +++ b/arch/arm/mm/proc-v7.S | |||
| @@ -264,6 +264,12 @@ __v7_setup: | |||
| 264 | orreq r10, r10, #1 << 6 @ set bit #6 | 264 | orreq r10, r10, #1 << 6 @ set bit #6 |
| 265 | mcreq p15, 0, r10, c15, c0, 1 @ write diagnostic register | 265 | mcreq p15, 0, r10, c15, c0, 1 @ write diagnostic register |
| 266 | #endif | 266 | #endif |
| 267 | #ifdef CONFIG_ARM_ERRATA_751472 | ||
| 268 | cmp r6, #0x30 @ present prior to r3p0 | ||
| 269 | mrclt p15, 0, r10, c15, c0, 1 @ read diagnostic register | ||
| 270 | orrlt r10, r10, #1 << 11 @ set bit #11 | ||
| 271 | mcrlt p15, 0, r10, c15, c0, 1 @ write diagnostic register | ||
| 272 | #endif | ||
| 267 | 273 | ||
| 268 | 3: mov r10, #0 | 274 | 3: mov r10, #0 |
| 269 | #ifdef HARVARD_CACHE | 275 | #ifdef HARVARD_CACHE |
