Comment 20 for bug 720055

Revision history for this message
Dave Martin (dave-martin-arm) wrote : Re: Unhandled fault: imprecise external abort (0x1406) at 0x2ada61a8

A similar-looking bug has started to sting me when building with certain combinations of config options, particularly CONFIG_THUMB2_KERNEL.

A good way to debug this kind of thing is to build a uniprocessor kernel with all caches (including any external L2) disabled -- this makes the memory system behave in a much less asynchronous way, so you have a chance that the abort will be received close to the code which provokes it. (For reasons to do with SMP memory sharing, an SMP kernel may not work properly with caches turned off, so it's best not to try that.)

In the end, I tracked it down to the following lines in drivers/video/omap2/dss/dss.c :

   117 #ifdef CONFIG_OMAP2_DSS_SDI
   118 SR(SDI_CONTROL);
   119 SR(PLL_CONTROL);
   120 #endif

After turning all the caching whizziness back on again, a kernel with those likes commented out still works, with no abort.

This is unlikely to be an acceptable fix, but it could be useful clue for someone who knows about the hardware.
If anyone else who can currently reproduce the bug can see whether the same fix works, that would be useful.

Kernel version: commit b51b2a814959d76e69f1a1ea9ab3a7190afbf2f3 from git://git.linaro.org/kernel/linux-linaro-2.6.38.git master
My config: see next attachment