[U-Boot] [PATCH] mpc8610hpcd: set the guarded bit to DBAT of system memory

Dave Liu daveliu at freescale.com
Thu Mar 25 17:30:52 CET 2010


The BAT of system memory is setting as 2GB block, however
the mpc8610hpcd is shipping with 512MB DDR2 memory, there will
be a hole in the 2GB memory space, no any physical memory cover
the hole. It will cause PPC speculative data access to the hole,
the result is machine check.

There are two options to resolve the issue, one is changing the
block size to 512MB, another one is setting the G bit to DBAT.
but the mpc8610hpcd memory is DIMM-based, the size is variable.
so the second option is the best.

The issue is seen by Timur Tabi with the latest u-boot tree when
boot up the Linux kernel.

Report-by: Timur Tabi <B04825 at freescale.com>
Signed-off-by: Dave Liu <daveliu at freescale.com>
---
 include/configs/MPC8610HPCD.h |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/include/configs/MPC8610HPCD.h b/include/configs/MPC8610HPCD.h
index 1d2d659..629c971 100644
--- a/include/configs/MPC8610HPCD.h
+++ b/include/configs/MPC8610HPCD.h
@@ -338,10 +338,15 @@
 #endif	/* CONFIG_PCI */
 
 /*
- * BAT0		2G	Cacheable, non-guarded
+ * BAT0		2G	Cacheable, guarded for data side. it will avoid
+ *                      speculative data access to the memory hole when
+ *                      the board use the DIMM memory size < 2GB, such as
+ *                      512MB. If you need better performance in u-boot,
+ *                      use the matching memory size to BAT.
+ *
  * 0x0000_0000	2G	DDR
  */
-#define CONFIG_SYS_DBAT0L	(BATL_PP_RW | BATL_MEMCOHERENCE)
+#define CONFIG_SYS_DBAT0L	(BATL_PP_RW | BATL_MEMCOHERENCE | BATL_GUARDEDSTORAGE)
 #define CONFIG_SYS_DBAT0U	(BATU_BL_2G | BATU_VS | BATU_VP)
 #define CONFIG_SYS_IBAT0L	(BATL_PP_RW | BATL_MEMCOHERENCE )
 #define CONFIG_SYS_IBAT0U	CONFIG_SYS_DBAT0U
-- 
1.6.4



More information about the U-Boot mailing list