diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2014-03-16 08:12:11 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2014-05-29 19:48:37 -0400 |
commit | c0fe18ba30a62854490b1ac0f7a02145d84153f5 (patch) | |
tree | 1bb2230d168490b0bffa1970e6ee211325397ed0 | |
parent | 0493aef4da8231b4b2f2da8dc1784c265e610a7d (diff) |
ARM: l2c: move errata configuration options to arch/arm/mm/Kconfig
Move the L2C-310 errata configuration options to arch/arm/mm/Kconfig
along side the option which enables support for this device.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | arch/arm/Kconfig | 51 | ||||
-rw-r--r-- | arch/arm/mm/Kconfig | 51 |
2 files changed, 51 insertions, 51 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index db3c5414223e..c9d7196fd0bd 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -1230,19 +1230,6 @@ config ARM_ERRATA_742231 | |||
1230 | register of the Cortex-A9 which reduces the linefill issuing | 1230 | register of the Cortex-A9 which reduces the linefill issuing |
1231 | capabilities of the processor. | 1231 | capabilities of the processor. |
1232 | 1232 | ||
1233 | config PL310_ERRATA_588369 | ||
1234 | bool "PL310 errata: Clean & Invalidate maintenance operations do not invalidate clean lines" | ||
1235 | depends on CACHE_L2X0 | ||
1236 | help | ||
1237 | The PL310 L2 cache controller implements three types of Clean & | ||
1238 | Invalidate maintenance operations: by Physical Address | ||
1239 | (offset 0x7F0), by Index/Way (0x7F8) and by Way (0x7FC). | ||
1240 | They are architecturally defined to behave as the execution of a | ||
1241 | clean operation followed immediately by an invalidate operation, | ||
1242 | both performing to the same memory location. This functionality | ||
1243 | is not correctly implemented in PL310 as clean lines are not | ||
1244 | invalidated as a result of these operations. | ||
1245 | |||
1246 | config ARM_ERRATA_643719 | 1233 | config ARM_ERRATA_643719 |
1247 | bool "ARM errata: LoUIS bit field in CLIDR register is incorrect" | 1234 | bool "ARM errata: LoUIS bit field in CLIDR register is incorrect" |
1248 | depends on CPU_V7 && SMP | 1235 | depends on CPU_V7 && SMP |
@@ -1265,17 +1252,6 @@ config ARM_ERRATA_720789 | |||
1265 | tables. The workaround changes the TLB flushing routines to invalidate | 1252 | tables. The workaround changes the TLB flushing routines to invalidate |
1266 | entries regardless of the ASID. | 1253 | entries regardless of the ASID. |
1267 | 1254 | ||
1268 | config PL310_ERRATA_727915 | ||
1269 | bool "PL310 errata: Background Clean & Invalidate by Way operation can cause data corruption" | ||
1270 | depends on CACHE_L2X0 | ||
1271 | help | ||
1272 | PL310 implements the Clean & Invalidate by Way L2 cache maintenance | ||
1273 | operation (offset 0x7FC). This operation runs in background so that | ||
1274 | PL310 can handle normal accesses while it is in progress. Under very | ||
1275 | rare circumstances, due to this erratum, write data can be lost when | ||
1276 | PL310 treats a cacheable write transaction during a Clean & | ||
1277 | Invalidate by Way operation. | ||
1278 | |||
1279 | config ARM_ERRATA_743622 | 1255 | config ARM_ERRATA_743622 |
1280 | bool "ARM errata: Faulty hazard checking in the Store Buffer may lead to data corruption" | 1256 | bool "ARM errata: Faulty hazard checking in the Store Buffer may lead to data corruption" |
1281 | depends on CPU_V7 | 1257 | depends on CPU_V7 |
@@ -1301,21 +1277,6 @@ config ARM_ERRATA_751472 | |||
1301 | operation is received by a CPU before the ICIALLUIS has completed, | 1277 | operation is received by a CPU before the ICIALLUIS has completed, |
1302 | potentially leading to corrupted entries in the cache or TLB. | 1278 | potentially leading to corrupted entries in the cache or TLB. |
1303 | 1279 | ||
1304 | config PL310_ERRATA_753970 | ||
1305 | bool "PL310 errata: cache sync operation may be faulty" | ||
1306 | depends on CACHE_PL310 | ||
1307 | help | ||
1308 | This option enables the workaround for the 753970 PL310 (r3p0) erratum. | ||
1309 | |||
1310 | Under some condition the effect of cache sync operation on | ||
1311 | the store buffer still remains when the operation completes. | ||
1312 | This means that the store buffer is always asked to drain and | ||
1313 | this prevents it from merging any further writes. The workaround | ||
1314 | is to replace the normal offset of cache sync operation (0x730) | ||
1315 | by another offset targeting an unmapped PL310 register 0x740. | ||
1316 | This has the same effect as the cache sync operation: store buffer | ||
1317 | drain and waiting for all buffers empty. | ||
1318 | |||
1319 | config ARM_ERRATA_754322 | 1280 | config ARM_ERRATA_754322 |
1320 | bool "ARM errata: possible faulty MMU translations following an ASID switch" | 1281 | bool "ARM errata: possible faulty MMU translations following an ASID switch" |
1321 | depends on CPU_V7 | 1282 | depends on CPU_V7 |
@@ -1364,18 +1325,6 @@ config ARM_ERRATA_764369 | |||
1364 | relevant cache maintenance functions and sets a specific bit | 1325 | relevant cache maintenance functions and sets a specific bit |
1365 | in the diagnostic control register of the SCU. | 1326 | in the diagnostic control register of the SCU. |
1366 | 1327 | ||
1367 | config PL310_ERRATA_769419 | ||
1368 | bool "PL310 errata: no automatic Store Buffer drain" | ||
1369 | depends on CACHE_L2X0 | ||
1370 | help | ||
1371 | On revisions of the PL310 prior to r3p2, the Store Buffer does | ||
1372 | not automatically drain. This can cause normal, non-cacheable | ||
1373 | writes to be retained when the memory system is idle, leading | ||
1374 | to suboptimal I/O performance for drivers using coherent DMA. | ||
1375 | This option adds a write barrier to the cpu_idle loop so that, | ||
1376 | on systems with an outer cache, the store buffer is drained | ||
1377 | explicitly. | ||
1378 | |||
1379 | config ARM_ERRATA_775420 | 1328 | config ARM_ERRATA_775420 |
1380 | bool "ARM errata: A data cache maintenance operation which aborts, might lead to deadlock" | 1329 | bool "ARM errata: A data cache maintenance operation which aborts, might lead to deadlock" |
1381 | depends on CPU_V7 | 1330 | depends on CPU_V7 |
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index 5bf7c3c3b301..eda0dd0ab97b 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
@@ -897,6 +897,57 @@ config CACHE_PL310 | |||
897 | This option enables optimisations for the PL310 cache | 897 | This option enables optimisations for the PL310 cache |
898 | controller. | 898 | controller. |
899 | 899 | ||
900 | config PL310_ERRATA_588369 | ||
901 | bool "PL310 errata: Clean & Invalidate maintenance operations do not invalidate clean lines" | ||
902 | depends on CACHE_L2X0 | ||
903 | help | ||
904 | The PL310 L2 cache controller implements three types of Clean & | ||
905 | Invalidate maintenance operations: by Physical Address | ||
906 | (offset 0x7F0), by Index/Way (0x7F8) and by Way (0x7FC). | ||
907 | They are architecturally defined to behave as the execution of a | ||
908 | clean operation followed immediately by an invalidate operation, | ||
909 | both performing to the same memory location. This functionality | ||
910 | is not correctly implemented in PL310 as clean lines are not | ||
911 | invalidated as a result of these operations. | ||
912 | |||
913 | config PL310_ERRATA_727915 | ||
914 | bool "PL310 errata: Background Clean & Invalidate by Way operation can cause data corruption" | ||
915 | depends on CACHE_L2X0 | ||
916 | help | ||
917 | PL310 implements the Clean & Invalidate by Way L2 cache maintenance | ||
918 | operation (offset 0x7FC). This operation runs in background so that | ||
919 | PL310 can handle normal accesses while it is in progress. Under very | ||
920 | rare circumstances, due to this erratum, write data can be lost when | ||
921 | PL310 treats a cacheable write transaction during a Clean & | ||
922 | Invalidate by Way operation. | ||
923 | |||
924 | config PL310_ERRATA_753970 | ||
925 | bool "PL310 errata: cache sync operation may be faulty" | ||
926 | depends on CACHE_PL310 | ||
927 | help | ||
928 | This option enables the workaround for the 753970 PL310 (r3p0) erratum. | ||
929 | |||
930 | Under some condition the effect of cache sync operation on | ||
931 | the store buffer still remains when the operation completes. | ||
932 | This means that the store buffer is always asked to drain and | ||
933 | this prevents it from merging any further writes. The workaround | ||
934 | is to replace the normal offset of cache sync operation (0x730) | ||
935 | by another offset targeting an unmapped PL310 register 0x740. | ||
936 | This has the same effect as the cache sync operation: store buffer | ||
937 | drain and waiting for all buffers empty. | ||
938 | |||
939 | config PL310_ERRATA_769419 | ||
940 | bool "PL310 errata: no automatic Store Buffer drain" | ||
941 | depends on CACHE_L2X0 | ||
942 | help | ||
943 | On revisions of the PL310 prior to r3p2, the Store Buffer does | ||
944 | not automatically drain. This can cause normal, non-cacheable | ||
945 | writes to be retained when the memory system is idle, leading | ||
946 | to suboptimal I/O performance for drivers using coherent DMA. | ||
947 | This option adds a write barrier to the cpu_idle loop so that, | ||
948 | on systems with an outer cache, the store buffer is drained | ||
949 | explicitly. | ||
950 | |||
900 | config CACHE_TAUROS2 | 951 | config CACHE_TAUROS2 |
901 | bool "Enable the Tauros2 L2 cache controller" | 952 | bool "Enable the Tauros2 L2 cache controller" |
902 | depends on (ARCH_DOVE || ARCH_MMP || CPU_PJ4) | 953 | depends on (ARCH_DOVE || ARCH_MMP || CPU_PJ4) |