File tree Expand file tree Collapse file tree 2 files changed +13
-0
lines changed Expand file tree Collapse file tree 2 files changed +13
-0
lines changed Original file line number Diff line number Diff line change 55#include <asm/bmips.h>
66#include <asm/io.h>
77
8+ bool bmips_rac_flush_disable ;
9+
810void arch_sync_dma_for_cpu_all (void )
911{
1012 void __iomem * cbr = BMIPS_GET_CBR ();
@@ -15,6 +17,9 @@ void arch_sync_dma_for_cpu_all(void)
1517 boot_cpu_type () != CPU_BMIPS4380 )
1618 return ;
1719
20+ if (unlikely (bmips_rac_flush_disable ))
21+ return ;
22+
1823 /* Flush stale data out of the readahead cache */
1924 cfg = __raw_readl (cbr + BMIPS_RAC_CONFIG );
2025 __raw_writel (cfg | 0x100 , cbr + BMIPS_RAC_CONFIG );
Original file line number Diff line number Diff line change 3535#define REG_BCM6328_OTP ((void __iomem *)CKSEG1ADDR(0x1000062c))
3636#define BCM6328_TP1_DISABLED BIT(9)
3737
38+ extern bool bmips_rac_flush_disable ;
39+
3840static const unsigned long kbase = VMLINUX_LOAD_ADDRESS & 0xfff00000 ;
3941
4042struct bmips_quirk {
@@ -104,6 +106,12 @@ static void bcm6358_quirks(void)
104106 * disable SMP for now
105107 */
106108 bmips_smp_enabled = 0 ;
109+
110+ /*
111+ * RAC flush causes kernel panics on BCM6358 when booting from TP1
112+ * because the bootloader is not initializing it properly.
113+ */
114+ bmips_rac_flush_disable = !!(read_c0_brcm_cmt_local () & (1 << 31 ));
107115}
108116
109117static void bcm6368_quirks (void )
You can’t perform that action at this time.
0 commit comments