mips: mt76xx: Remove cache workaround and select SYS_MALLOC_CLEAR_ON_INIT
authorStefan Roese <sr@denx.de>
Thu, 23 May 2019 05:55:54 +0000 (07:55 +0200)
committerDaniel Schwierzeck <daniel.schwierzeck@gmail.com>
Fri, 24 May 2019 13:55:17 +0000 (15:55 +0200)
With commit 06985289d452 ("watchdog: Implement generic watchdog_reset()
version") the init sequence has changed in arch_misc_init(), resulting
in a re-appearance of the d-cache issue on MT7688 boards (e.g. gardena).
When this happens, the first (or sometimes later ones as well) TFTP
command hangs and does not complete correctly. This leads to the
assumption that the d-cache is not in a clean state once the ethernet
driver is called (d-cache is used here for the buffers). The old work-
around with the cache flush somehow does not work any more now with
the new code change.

To fix this issue, this patch now removes the old workaround and selects
CONFIG_SYS_MALLOC_CLEAR_ON_INIT for ARCH_MTMIPS. With this option the
complete malloc area is initialized with zeros (cache lines are touched).
Testing has shown that this also fixes the issue on the MT7688 boards.

Signed-off-by: Stefan Roese <sr@denx.de>
Suggested-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
Cc: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
arch/mips/Kconfig
arch/mips/mach-mtmips/cpu.c

index 9cf8e9800d8305361c54dc70dd2d8bd43e072084..5cb9bdf2ee7a771db534808448cf70b034b77376 100644 (file)
@@ -84,13 +84,13 @@ config ARCH_MTMIPS
        select DM_SERIAL
        imply DM_SPI
        imply DM_SPI_FLASH
-       select ARCH_MISC_INIT
        select MIPS_TUNE_24KC
        select OF_CONTROL
        select ROM_EXCEPTION_VECTORS
        select SUPPORTS_CPU_MIPS32_R1
        select SUPPORTS_CPU_MIPS32_R2
        select SUPPORTS_LITTLE_ENDIAN
+       select SYS_MALLOC_CLEAR_ON_INIT
        select SYSRESET
 
 config ARCH_JZ47XX
index fcd0484a6d871685a0e455ecdbbf3687f37c0022..b0a6397d68f0a5366246a4b960f11fb08239d416 100644 (file)
@@ -68,18 +68,3 @@ int print_cpuinfo(void)
 
        return 0;
 }
-
-int arch_misc_init(void)
-{
-       /*
-        * It has been noticed, that sometimes the d-cache is not in a
-        * "clean-state" when U-Boot is running on MT7688. This was
-        * detected when using the ethernet driver (which uses d-cache)
-        * and a TFTP command does not complete. Flushing the complete
-        * d-cache (again?) here seems to fix this issue.
-        */
-       flush_dcache_range(gd->bd->bi_memstart,
-                          gd->bd->bi_memstart + gd->ram_size - 1);
-
-       return 0;
-}