From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthias Weisser Date: Sat, 10 Dec 2011 17:36:53 +0100 Subject: [U-Boot] Cache function change breaks zmx25 In-Reply-To: <4EE22329.5090700@emcraft.com> References: <4EE21A38.2070908@arcor.de> <4EE22329.5090700@emcraft.com> Message-ID: <4EE38AA5.4030703@arcor.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Am 09.12.2011 16:03, schrieb Ilya Yanok: > Hi Matthias, > > On 09.12.2011 18:24, Matthias Wei?er wrote: >> breaks zmx25 booting with the following command: >> >> tftpboot 0x82000000 foo.img; dcache on; bootm 0x82000000 >> >> It is stuck then in an endless loop after dcache is disabled before >> jumping to the OS. >> >> ------------------------------------------------ >> WARNING: cache operations are not implemented! >> WARNING: disabling D-Cache now, you can re-enable itlater with 'dcache >> on' command >> ------------------------------------------------ > > Argh.. That's really bad. May I ask you to debug this a little bit? > > What is exact cache function being called? Where from? > How comes that dcache_status() returns true after dcache_disable()? Or > does somebody call dcache_enable() in between? The call trace in may case should be something like (not debuged, only looked at the code): cmd_elf.c : do_bootelf() cmd_elf.c : do_bootelf_exec() cache-cp15.c : dcache_disable() cache-cp15.c : cache_disable(CR_C); -> Cache is not disabled in this function before cache.c : flush_dcache_all(); is called cache.c : dcache_noop(); cache-cp15.c : dcache_status() -> returns true cache-cp15.c : dcache_disable() cache-cp15.c : cache_disable(CR_C) cache.c : flush_dcache_all(); .... And we have the endless loop. I think this impacts not only zmx25 but other boards enabling dcache. If you need additional informations: I will have access to the board on monday again. -- Matthias