svn commit: r333135 - in head/sys/powerpc: booke mpc85xx

Justin Hibbits jhibbits at FreeBSD.org
Tue May 1 04:31:18 UTC 2018


Author: jhibbits
Date: Tue May  1 04:31:17 2018
New Revision: 333135
URL: https://svnweb.freebsd.org/changeset/base/333135

Log:
  Remove dead errata fixup code
  
  This code caused more problems than it should have fixed (boot failures) on
  the machines I tested, so has been commented out for a while now.  Remove
  it, and assume the errata fixups were done by the bootloader where they
  belong.

Modified:
  head/sys/powerpc/booke/locore.S
  head/sys/powerpc/mpc85xx/mpc85xx.c
  head/sys/powerpc/mpc85xx/mpc85xx.h
  head/sys/powerpc/mpc85xx/platform_mpc85xx.c

Modified: head/sys/powerpc/booke/locore.S
==============================================================================
--- head/sys/powerpc/booke/locore.S	Tue May  1 04:06:59 2018	(r333134)
+++ head/sys/powerpc/booke/locore.S	Tue May  1 04:31:17 2018	(r333135)
@@ -906,68 +906,6 @@ ENTRY(bpred_enable)
 	isync
 	blr
 
-ENTRY(dataloss_erratum_access)
-	/* Lock two cache lines into I-Cache */
-	sync
-	mfspr	%r11, SPR_L1CSR1
-	rlwinm	%r11, %r11, 0, ~L1CSR1_ICUL
-	sync
-	isync
-	mtspr	SPR_L1CSR1, %r11
-	isync
-
-	lis	%r8, 2f at h
-	ori	%r8, %r8, 2f at l
-	icbtls	0, 0, %r8
-	addi	%r9, %r8, 64
-
-	sync
-	mfspr	%r11, SPR_L1CSR1
-3:	andi.	%r11, %r11, L1CSR1_ICUL
-	bne	3b
-
-	icbtls	0, 0, %r9
-
-	sync
-	mfspr	%r11, SPR_L1CSR1
-3:	andi.	%r11, %r11, L1CSR1_ICUL
-	bne	3b
-
-	b	2f
-	.align	6
-	/* Inside a locked cacheline, wait a while, write, then wait a while */
-2:	sync
-
-	mfspr	%r5, TBR_TBL
-4:	addis	%r11, %r5, 0x100000 at h	/* wait around one million timebase ticks */
-	mfspr	%r5, TBR_TBL
-	subf.	%r5, %r5, %r11
-	bgt	4b
-
-	stw	%r4, 0(%r3)
-
-	mfspr	%r5, TBR_TBL
-4:	addis	%r11, %r5, 0x100000 at h	/* wait around one million timebase ticks */
-	mfspr	%r5, TBR_TBL
-	subf.	%r5, %r5, %r11
-	bgt	4b
-
-	sync
-
-	/*
-	 * Fill out the rest of this cache line and the next with nops,
-	 * to ensure that nothing outside the locked area will be
-	 * fetched due to a branch.
-	 */
-	.rept 19
-	nop
-	.endr
-
-	icblc	0, 0, %r8
-	icblc	0, 0, %r9
-
-	blr
-
 /*
  * XXX: This should be moved to a shared AIM/booke asm file, if one ever is
  * created.

Modified: head/sys/powerpc/mpc85xx/mpc85xx.c
==============================================================================
--- head/sys/powerpc/mpc85xx/mpc85xx.c	Tue May  1 04:06:59 2018	(r333134)
+++ head/sys/powerpc/mpc85xx/mpc85xx.c	Tue May  1 04:31:17 2018	(r333135)
@@ -329,120 +329,6 @@ mpc85xx_is_qoriq(void)
 	return (0);
 }
 
-static void
-mpc85xx_dataloss_erratum_spr976(void)
-{
-	uint32_t svr = SVR_VER(mfspr(SPR_SVR));
-
-	/* Ignore whether it's the E variant */
-	svr &= ~0x8;
-
-	if (svr != SVR_P3041 && svr != SVR_P4040 &&
-	    svr != SVR_P4080 && svr != SVR_P5020)
-		return;
-
-	mb();
-	isync();
-	mtspr(976, (mfspr(976) & ~0x1f8) | 0x48);
-	isync();
-}
-
-static vm_offset_t
-mpc85xx_map_dcsr(void)
-{
-	phandle_t node;
-	u_long b, s;
-	int err;
-
-	/*
-	 * Try to access the dcsr node directly i.e. through /aliases/.
-	 */
-	if ((node = OF_finddevice("dcsr")) != -1)
-		if (fdt_is_compatible_strict(node, "fsl,dcsr"))
-			goto moveon;
-	/*
-	 * Find the node the long way.
-	 */
-	if ((node = OF_finddevice("/")) == -1)
-		return (0);
-
-	if ((node = ofw_bus_find_compatible(node, "fsl,dcsr")) == 0)
-		return (0);
-
-moveon:
-	err = fdt_get_range(node, 0, &b, &s);
-
-	if (err != 0)
-		return (0);
-
-	law_enable(OCP85XX_TGTIF_DCSR, b, 0x400000);
-	return pmap_early_io_map(b, 0x400000);
-}
-
-
-
-void
-mpc85xx_fix_errata(vm_offset_t va_ccsr)
-{
-	uint32_t svr = SVR_VER(mfspr(SPR_SVR));
-	vm_offset_t va_dcsr;
-
-	/* Ignore whether it's the E variant */
-	svr &= ~0x8;
-
-	if (svr != SVR_P3041 && svr != SVR_P4040 &&
-	    svr != SVR_P4080 && svr != SVR_P5020)
-		return;
-
-	if (mfmsr() & PSL_EE)
-		return;
-
-	/*
-	 * dcsr region need to be mapped thus patch can refer to.
-	 * Align dcsr right after ccsbar.
-	 */
-	va_dcsr = mpc85xx_map_dcsr();
-	if (va_dcsr == 0)
-		goto err;
-
-	/*
-	 * As A004510 errata specify, special purpose register 976
-	 * SPR976[56:60] = 6'b001001 must be set. e500mc core reference manual
-	 * does not document SPR976 register.
-	 */
-	mpc85xx_dataloss_erratum_spr976();
-
-	/*
-	 * Specific settings in the CCF and core platform cache (CPC)
-	 * are required to reconfigure the CoreNet coherency fabric.
-	 * The register settings that should be updated are described
-	 * in errata and relay on base address, offset and updated value.
-	 * Special conditions must be used to update these registers correctly.
-	 */
-	dataloss_erratum_access(va_dcsr + 0xb0e08, 0xe0201800);
-	dataloss_erratum_access(va_dcsr + 0xb0e18, 0xe0201800);
-	dataloss_erratum_access(va_dcsr + 0xb0e38, 0xe0400000);
-	dataloss_erratum_access(va_dcsr + 0xb0008, 0x00900000);
-	dataloss_erratum_access(va_dcsr + 0xb0e40, 0xe00a0000);
-
-	switch (svr) {
-	case SVR_P5020:
-		dataloss_erratum_access(va_ccsr + 0x18600, 0xc0000000);
-		break;
-	case SVR_P4040:
-	case SVR_P4080:
-		dataloss_erratum_access(va_ccsr + 0x18600, 0xff000000);
-		break;
-	case SVR_P3041:
-		dataloss_erratum_access(va_ccsr + 0x18600, 0xf0000000);
-	}
-	dataloss_erratum_access(va_ccsr + 0x10f00, 0x415e5000);
-	dataloss_erratum_access(va_ccsr + 0x11f00, 0x415e5000);
-
-err:
-	return;
-}
-
 uint32_t
 mpc85xx_get_platform_clock(void)
 {

Modified: head/sys/powerpc/mpc85xx/mpc85xx.h
==============================================================================
--- head/sys/powerpc/mpc85xx/mpc85xx.h	Tue May  1 04:06:59 2018	(r333134)
+++ head/sys/powerpc/mpc85xx/mpc85xx.h	Tue May  1 04:31:17 2018	(r333135)
@@ -170,8 +170,6 @@ DECLARE_CLASS(mpc85xx_platform);
 int mpc85xx_attach(platform_t);
 
 void mpc85xx_enable_l3_cache(void);
-void mpc85xx_fix_errata(vm_offset_t);
-void dataloss_erratum_access(vm_offset_t, uint32_t);
 int mpc85xx_is_qoriq(void);
 uint32_t mpc85xx_get_platform_clock(void);
 uint32_t mpc85xx_get_system_clock(void);

Modified: head/sys/powerpc/mpc85xx/platform_mpc85xx.c
==============================================================================
--- head/sys/powerpc/mpc85xx/platform_mpc85xx.c	Tue May  1 04:06:59 2018	(r333134)
+++ head/sys/powerpc/mpc85xx/platform_mpc85xx.c	Tue May  1 04:31:17 2018	(r333135)
@@ -199,9 +199,6 @@ mpc85xx_attach(platform_t plat)
 	ccsrbar_pa = ccsrbar;
 	ccsrbar_size = ccsrsize;
 
-#if 0
-	mpc85xx_fix_errata(ccsrbar_va);
-#endif
 	mpc85xx_enable_l3_cache();
 
 	return (0);


More information about the svn-src-all mailing list