On Mon, 24 May 2010, Anoop P.A. wrote:
> Thanks for your reply but unfortunately we are not in a position to
> upgrade the kernel. It will be great if you can give me some pointers to
> debug the issue.
Well, you are on your own then.
Pointers? Well, first despite the confusing message it's not an
alignment error. The Linux kernel does not try to be particularly precise
here and hardware does not always help either (the RM9000 isn't a MIPS64
architecture processor, is it?). Anyway, BadVAddr is 0x9a5d9c1483fa8a60,
which clearly indicates this is a reference to an address outside the
defined address space. I don't know off the head how many physical
address bits the RM9000 implements, but the typical number is 40 and the
extreme one is 44. Masking out the XKPHYS cache coherence mode and
(optimistically) 44 address bits we are still left with
0x025d900000000000. These bits in the address are what the CPU complains
about.
Second, the address looks remarkably similar to the value in $lo, that is
0x025d9c1482fa8a60. Go calculate the difference! That's probably an
index to an array of some sort that went out of limits.
The rest you need to figure out yourself. It might be easier if you
disable the unaligned access emulator altogether (#ifdef it out or
whatever) and let the kernel throw an error straight away. It might be
that you're getting a nested fault. That's what the decoded value of EPC
being do_ade+0x1c4/0x470 actually suggests.
Good luck!
Maciej
|