strange, spurious seeming vector exception on pxa300

Russell King - ARM Linux linux at arm.linux.org.uk
Wed Dec 2 10:50:57 EST 2009


On Wed, Dec 02, 2009 at 09:40:41AM -0500, Yeasah Pell wrote:
> Eric Miao wrote:
>> On Wed, Dec 2, 2009 at 2:00 PM, Eric Miao <eric.y.miao at gmail.com> wrote:
>>> On Wed, Dec 2, 2009 at 6:13 AM, Yeasah Pell <yeasah at comrex.com> wrote:
>>>> Has anybody ever seen vector exceptions happen on an ARM (xscale, pxa300)
>>>> without 26-bit mode being used? I have some application and kernel code
>>>> which appears to work on most hardware, but we have at least one board which
>>>> causes periodic messages:
>>>>
>>>> Unhandled fault: vector exception (0x010) at 0x412c8a90

FSR=0x010, which decodes as: Read. Domain 1. Status 0.

>>>> (I also fudged the fault handler a bit to dump the SPSR: 0x80000010)

NZCV=1000, 32-bit, user mode.

> There's no 26-bit code in the system that I'm aware of, certainly not in  
> the application where the exception occurs. As you can see from the  
> saved CPSR, the processor isn't in 26-bit mode at the time of the  
> exception anyway. And even if it was, the load is from 0x412c8a90  
> (etc.), not 0x0-0x1f. From what I've seen in the ARM architecture manual  
> (mostly the part that you've copied above), this operation should not be  
> able to cause such an exception, so I'm wondering if there is some  
> alternate condition that can lead to this kind of exception.
>
> In gdb, things look like this (after the SEGV from the fault is received  
> by the target):
>
> (gdb) info registers
> r0             0x0    0
> r1             0x412c8a04    1093437956
> r2             0x0    0
> r3             0x401c57f8    1075599352
> r4             0x4029457c    1076446588
> r5             0x9    9
> r6             0x40390000    1077477376
> r7             0x412c94e0    1093440736
> r8             0x40390150    1077477712
> r9             0x3d0f00    4001536
> r10            0x4037a6bc    1077388988
> r11            0x412c8b84    1093438340

0x412c8a90 (the fault value) + 224 = 0x412c8b84, which is the r11 value.
So that's consistent.

> r12            0x401d6c20    1075670048
> sp             0x412c8a2c    0x412c8a2c
> lr             0x4029603c    1076453436
> pc             0x400ec47c    0x400ec47c <f1+172>
> fps            0x0    0
> cpsr           0x60000010    1610612752

CPSR says NZCV=0110 (zero, carry).  32-bit user mode.

Given that the conditions are clearly wrong for a vector exception, I would
say that you're hitting some kind of hardware bug - maybe caused by a dirty
power supply to the PXA, causing it to misbehave?



More information about the linux-arm-kernel mailing list