Skip to content

Commit 2b749cb

Browse files
arndbLinus Walleij
authored andcommitted
ARM: realview: remove private barrier implementation
The realview barrier implementation tries to avoid calling outer_sync in order to not lock up as a result of a bug in the l220 cache controller. This gets in the way of the multiplatform support, but we can still remove it if we make sure that the outer_sync function never gets called, by replacing the function pointer with NULL, right after initialization. Signed-off-by: Arnd Bergmann <[email protected]> [Fixed up header inclusions] Signed-off-by: Linus Walleij <[email protected]>
1 parent 38541bf commit 2b749cb

File tree

4 files changed

+13
-10
lines changed

4 files changed

+13
-10
lines changed

arch/arm/mach-realview/Kconfig

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ config REALVIEW_EB_A9MP
3636
config REALVIEW_EB_ARM11MP
3737
bool "Support ARM11MPCore Tile"
3838
depends on MACH_REALVIEW_EB
39-
select ARCH_HAS_BARRIERS if SMP
4039
select CPU_V6K
4140
select HAVE_ARM_SCU if SMP
4241
select HAVE_ARM_TWD if SMP
@@ -57,7 +56,6 @@ config REALVIEW_EB_ARM11MP_REVB
5756

5857
config MACH_REALVIEW_PB11MP
5958
bool "Support RealView(R) Platform Baseboard for ARM11MPCore"
60-
select ARCH_HAS_BARRIERS if SMP
6159
select ARM_GIC
6260
select CPU_V6K
6361
select HAVE_ARM_SCU if SMP

arch/arm/mach-realview/include/mach/barriers.h

Lines changed: 0 additions & 8 deletions
This file was deleted.

arch/arm/mach-realview/realview_eb.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
#include <asm/hardware/cache-l2x0.h>
3939
#include <asm/smp_twd.h>
4040
#include <asm/system_info.h>
41+
#include <asm/outercache.h>
4142

4243
#include <asm/mach/arch.h>
4344
#include <asm/mach/map.h>
@@ -450,6 +451,12 @@ static void __init realview_eb_init(void)
450451
* Bits: .... ...0 0111 1001 0000 .... .... ....
451452
*/
452453
l2x0_init(__io_address(REALVIEW_EB11MP_L220_BASE), 0x00790000, 0xfe000fff);
454+
455+
/*
456+
* due to a bug in the l220 cache controller, we must not call
457+
* the sync function. stub it out here instead!
458+
*/
459+
outer_cache.sync = NULL;
453460
#endif
454461
pmu_device.name = core_tile_a9mp() ? "armv7-pmu" : "armv6-pmu";
455462
platform_device_register(&pmu_device);

arch/arm/mach-realview/realview_pb11mp.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
#include <asm/mach/flash.h>
4343
#include <asm/mach/map.h>
4444
#include <asm/mach/time.h>
45+
#include <asm/outercache.h>
4546

4647
#include <mach/board-pb11mp.h>
4748
#include <mach/irqs.h>
@@ -345,6 +346,11 @@ static void __init realview_pb11mp_init(void)
345346
* Bits: .... ...0 0111 1001 0000 .... .... ....
346347
*/
347348
l2x0_init(__io_address(REALVIEW_TC11MP_L220_BASE), 0x00790000, 0xfe000fff);
349+
/*
350+
* due to a bug in the l220 cache controller, we must not call
351+
* the sync function. stub it out here instead!
352+
*/
353+
outer_cache.sync = NULL;
348354
#endif
349355

350356
realview_flash_register(realview_pb11mp_flash_resource,

0 commit comments

Comments
 (0)