Subject: Re: Argh! panic on cvs checkout
To: Gavan Fantom <gavan@coolfactor.org>
From: Richard Earnshaw <rearnsha@arm.com>
List: port-arm32
Date: 05/22/2001 13:54:58
> On Mon, 21 May 2001, Gavan Fantom wrote:
>
> > On Mon, 21 May 2001, Chris Gilbert wrote:
> >
> > > hmm, what revision of SA is it? If you check dmesg it'll say somewhere (just
> > > to rule out the J/K SA bugs.
> >
> > It claims to be the SA-110 with the STM^ bug.
>
> OK, on the chip it says SA-110K.
>
> I've tried it with an ARM710 instead and I can't reproduce this crash any
> more. What is the bug in this revision of the StrongARM, and is a
> work-around possible?
There are two bugs in the early strongarms that affect NetBSD users. The
first is a bug with STM of the user register bank when in kernel mode,
this can (and is) worked around in the kernel and doesn't affect users
applications at all.
The second bug is a much bigger problem and affects demand-paging. This
is caused by having a ldm ..,{...,pc} instruction as the last instruction
in a page of memory. The only known solution is to avoid such
instructions in such locations, and the only practical way to achieve this
is to patch binaries as the problem comes to light, but this can (in
theory) corrupt the binary if what looks like an instruction is really
data (I've never seen this happen in practice though). There is a program
that I wrote a while back that will do this for you, it can be downloaded
from
ftp://ftp.netbsd.org/pub/NetBSD/arch/arm32/misc
the files you need are fix4SA110rev2.README and fix4SA110rev2.c
The readme file explains how to use the tool to patch the binaries.
R.