On 03/07/2017 05:31 AM, york sun wrote:
On 03/06/2017 07:59 PM, Marek Vasut wrote:
On 03/06/2017 06:02 PM, York Sun wrote:
Early MMU improves performance especially on emulators. However, the
early MMU is left enabled after the first stage of SPL boot. Instead
of flushing D-cache and dealing with re-enabling MMU for the second
stage U-Boot, disabling it for SPL build simplifies the process. The
performance penalty is unnoticeable on the real hardware. As of now,
SPL boot is not supported by existing emulators. So this should have
no impact on emulators.

Signed-off-by: York Sun <york....@nxp.com>

This looks stupid. Why don't you just keep it enabled between SPL and
U-Boot ? That'd be much more logical and sensible ...

Mark,

We are probably the only one using early MMU to speed up execution on
emulators. I only noticed recently the cache/MMU wasn't enabled for most
ARMv8 layerscape SoCs for SPL, except LS2080A (which is where we
started). During recent debug, I learned the process of
break-before-make process should be strictly followed when changing MMU.

I don't think I understand this part.

The normal boot part surely creates MMU tables. If the SPL also creates
MMU table and enables cache, then we need to flush cache and disable MMU
before the normal boot part begins to run. Instead of dealing all these
steps just for LS2080A, I figure it would be a lot easier to drop it as
I proposed in this patch.

But then this is a step back and makes the whole platform slower, right?

York


---

Changes in v5: None
Changes in v4: None
Changes in v3:
  Add a patch to drop early MMU setup for LS2080A SPL build.

Changes in v2: None

 arch/arm/cpu/armv8/fsl-layerscape/spl.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/arch/arm/cpu/armv8/fsl-layerscape/spl.c 
b/arch/arm/cpu/armv8/fsl-layerscape/spl.c
index 1dabdbb..73a8680 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/spl.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/spl.c
@@ -45,9 +45,6 @@ void board_init_f(ulong dummy)
 {
        /* Clear global data */
        memset((void *)gd, 0, sizeof(gd_t));
-#ifdef CONFIG_LS2080A
-       arch_cpu_init();
-#endif
        board_early_init_f();
        timer_init();
 #ifdef CONFIG_LS2080A





_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to