powerpc/sec: Add workaround for SEC A-003571
authorShengzhou Liu <Shengzhou.Liu@freescale.com>
Thu, 15 Aug 2013 01:31:47 +0000 (09:31 +0800)
committerYork Sun <yorksun@freescale.com>
Tue, 20 Aug 2013 17:47:07 +0000 (10:47 -0700)
Multiple read/write transactions initiated by security
engine may cause system to hang.
Workaround: set MCFGR[AXIPIPE] to 0 to avoid hang.

Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com>
Acked-by: York Sun <yorksun@freescale.com>
arch/powerpc/cpu/mpc85xx/cmd_errata.c
arch/powerpc/cpu/mpc85xx/cpu_init.c
arch/powerpc/include/asm/config_mpc85xx.h

index cbb443fd2c50b428d1fc5360757d38ca47e1a243..8a2a3ee76cfea812acc699d0aa3b9b421f45814b 100644 (file)
@@ -245,6 +245,10 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 #ifdef CONFIG_SYS_FSL_ERRATUM_A006593
        puts("Work-around for Erratum A006593 enabled\n");
 #endif
+#ifdef CONFIG_SYS_FSL_ERRATUM_SEC_A003571
+       if (IS_SVR_REV(svr, 1, 0))
+               puts("Work-around for Erratum A003571 enabled\n");
+#endif
 #ifdef CONFIG_SYS_FSL_ERRATUM_A005812
        puts("Work-around for Erratum A-005812 enabled\n");
 #endif
index c6e09ca905e16e1484a47b189e0388b6155693fa..6036333eaa72fba3ac3e3378d42abb06dce12d6e 100644 (file)
@@ -357,7 +357,9 @@ int cpu_init_r(void)
        extern int spin_table_compat;
        const char *spin;
 #endif
-
+#ifdef CONFIG_SYS_FSL_ERRATUM_SEC_A003571
+       ccsr_sec_t __iomem *sec = (void *)CONFIG_SYS_FSL_SEC_ADDR;
+#endif
 #if defined(CONFIG_SYS_P4080_ERRATUM_CPU22) || \
        defined(CONFIG_SYS_FSL_ERRATUM_NMG_CPU_A011)
        /*
@@ -548,6 +550,12 @@ skip_l2:
        fsl_serdes_init();
 #endif
 
+#ifdef CONFIG_SYS_FSL_ERRATUM_SEC_A003571
+#define MCFGR_AXIPIPE 0x000000f0
+       if (IS_SVR_REV(svr, 1, 0))
+               clrbits_be32(&sec->mcfgr, MCFGR_AXIPIPE);
+#endif
+
 #ifdef CONFIG_SYS_FSL_ERRATUM_A005871
        if (IS_SVR_REV(svr, 1, 0)) {
                int i;
index e1fc0f72c06a65e0ece92beb27443da49ccc26b7..d748cb62d48fee05ee73bb006b43894f59ce3944 100644 (file)
 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
 #define CONFIG_SYS_FSL_ERRATUM_IFC_A002769
 #define CONFIG_SYS_FSL_ERRATUM_P1010_A003549
+#define CONFIG_SYS_FSL_ERRATUM_SEC_A003571
 #define CONFIG_SYS_FSL_ERRATUM_IFC_A003399
 
 /* P1011 is single core version of P1020 */