tech-kern archive


Cache corruption on OMAP? (was Re: linking on ARM fails)

This linking problem[1] might be cache corruption since a kernel with data
cache disabled[2] managed to compile a booting kernel during last weekend. 
Without data cache the OMAP2420 is really slow so perhaps some other timing
related bug does not get triggered.

The test case is basically: compile some big project like NetBSD
kernel or TET (

Linking TET failed on proctc.o being corrupt and not recognized by
linker. Manual proctc.c recompilations produced similar results until I
removed -O from the cc invocation. After that linking succeeds and the tcc
executable seems to run ok. I have tried to produce a simple test case
but have failed so far. After TET or kernel compilation has failed a
simple 'cat largefile > perfect_copy' produces a corrupt perfect_copy
which was easily verified on the NFS server side with md5sum. But from
a freshly booted system I could not get a corrupt cat file with
various scripts consuming network bandwidth, CPU time and memory on the

Since current on OMAP has been broken so long on I can't just try
bisecting for commits which might have caused this. Are there some other
kernel debugging tricks which might help finding out what is causing this

I have been working with current from Dec 2nd with the stability increasing 
interrupt fix 



[2] Disable data cache for OMAP2420:

--- a/sys/arch/arm/arm/cpufunc.c
+++ b/sys/arch/arm/arm/cpufunc.c
@@ -2487,7 +2487,9 @@ arm1136_setup(char *args)

        cpuctrl =
                CPU_CONTROL_MMU_ENABLE  |
-               CPU_CONTROL_DC_ENABLE   |
+               /* disable data cache for testing if it's corrupting files
+                * CPU_CONTROL_DC_ENABLE   |
+                */
                CPU_CONTROL_WBUF_ENABLE |
                CPU_CONTROL_32BP_ENABLE |
                CPU_CONTROL_32BD_ENABLE |

Home | Main Index | Thread Index | Old Index