Google
  Web www.spinics.net

Re: something wrong when I read infomation from portG ,s3c44b0

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


Why don't you try to interpret what the kernel is telling you?

On Thu, Mar 29, 2007 at 03:14:14PM +0800, zhang guocheng wrote:
> Unhandled fault: alignment exception (93) at 0x00000001
> fault-common.c(97): start_code=0xc5c0040, start_stack=0xc5fff84)
> Internal error: Oops: 0
> CPU: 0
> pc : [<0c01ee6c>] lr : [<00030001>] Not tainted
> sp : 0c607e1c ip : 00000004 fp : 0c607eb0
> r10: 0c5ad000 r9 : 20000013 r8 : 00000060
> r7 : ffffffea r6 : 0c5a6000 r5 : e1d230b0 r4 : 20000013
> r3 : 00000000 r2 : 0c60601c r1 : 0c607e1c r0 : 00000004
> Flags: nZCv IRQs off FIQs on Mode SVC_32 Segment user
> Control: 0
> Process insmod (pid: 25, stackpage=0c607000)
> Stack:
> ...
> Backtrace:
> Function entered at [<0c01ee2c>] from [<0c01fc98>]
> r5 = 0C607EE8 r4 = E1D230B0
> Function entered at [<0c5ac9c0>] from [<0c02466c>]
> r5 = 0C5AC000 r4 = 00000000
> Function entered at [<0c023ff0>] from [<0c01a980>]

Why aren't these being decoded to kernel symbols?  My guess is that this
is a 2.4 kernel, and our attitude here to 2.4 kernel bug reports is well
documented.

> Code: e50be08c e3cd2d7f (e594303c) e3c2203f e50b3088

Do this:
cat > t.s
.word 0xe50be08c
.word 0xe3cd2d7f
.word 0xe594303c
.word 0xe3c2203f
.word 0xe50b3088
^D
arm-linux-as -o t.o t.s
arm-linux-objdump -d t.o

This gives you the following disassembly:

   0:   e50be08c        str     lr, [fp, #-140]
   4:   e3cd2d7f        bic     r2, sp, #8128   ; 0x1fc0
   8:   e594303c        ldr     r3, [r4, #60]
   c:   e3c2203f        bic     r2, r2, #63     ; 0x3f
  10:   e50b3088        str     r3, [fp, #-136]

>From the register dump, r4=20000013, add on the 0x3c and you get an
address of 0x2000004f - not what the oops dump was telling you.

On Thu, Mar 29, 2007 at 03:14:14PM +0800, zhang guocheng wrote:
> #define PCONC   (unsigned int *)0x01D20010
> #define PUPC      (unsigned int *)0x01D20018
> #define PCONG   (unsigned int *)0x01D20040
> #define PUPG      (unsigned int *)0x01D20048
> 
> I also tried to do like this:
> u32 save_C __attribute__((aligned(4)));
> u16 save_G __attribute__((aligned(4)));
> but it seems ineffective .
> 
> save_C=inl(PCONC);
> save_PC=inw(PUPC);

None of your statements above seem to correspond with an access being
performed.  Moreover, the access which seems to actually be performed
has nothing to do with the oops dump - in that the oops dump seems
to be inconsistent with itself.

No idea.

My guess is that this is a heavily (and inappropriately) modified vendor
kernel.  So even if it was a recent 2.6, those modifications causing
corruption of the oops reporting effectively make it an absolutely
worthless bug report to this community.

Alternatively, maybe the oops reporting was buggy; and since it's 2.4
it's too long ago for anyone to remember if it was.  This again makes it
absolutely worthless to this community.

Sorry.

-------------------------------------------------------------------
List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm
FAQ:        http://www.arm.linux.org.uk/mailinglists/faq.php
Etiquette:  http://www.arm.linux.org.uk/mailinglists/etiquette.php

[Site Home]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux ARM Kernel]     [Linux MIPS]     [ECOS]     [Tools]     [DDR & Rambus]     [Monitors]

Powered by Linux