GIC irq_start detection breaks 3.2 boot on platforms without PPIs
Will Deacon
will.deacon at arm.com
Mon Nov 28 09:25:07 EST 2011
On Mon, Nov 28, 2011 at 11:53:24AM +0000, Russell King - ARM Linux wrote:
> On Mon, Nov 28, 2011 at 11:38:00AM +0000, Will Deacon wrote:
> > and if I cat /proc/self/net/dev_mcast, then I get an OOPs:
> >
> > [ 41.771296] Unable to handle kernel NULL pointer dereference at virtual address 00000010
> > [ 41.797076] pgd = c797c000
> > [ 41.806863] [00000010] *pgd=070e7831, *pte=00000000, *ppte=00000000
> > [ 41.827111] Internal error: Oops: 17 [#1] PREEMPT
> > [ 41.841221] Modules linked in:
> > [ 41.850392] CPU: 0 Tainted: G W (3.2.0-rc2+ #3)
> > [ 41.867681] PC is at dev_seq_next+0x14c/0x1dc
> > [ 41.880763] LR is at seq_read+0x43c/0x494
> > [ 41.892798] pc : [<c024d564>] lr : [<c00cee54>] psr: 60000013
> > [ 41.892826] sp : c79f3ed4 ip : 00006405 fp : 00008000
> > [ 41.927254] r10: 00000010 r9 : c79f3f80 r8 : 00000010
> > [ 41.942927] r7 : 00000000 r6 : 00000001 r5 : c041d100 r4 : 00000001
> > [ 41.962512] r3 : c024d418 r2 : c79f3f08 r1 : 00000001 r0 : c70e5640
> > [ 41.982100] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
> > [ 42.003512] Control: 00c5387d Table: 0797c008 DAC: 00000015
> > [ 42.020750] Process cat (pid: 764, stack limit = 0xc79f22f0)
> > [ 42.037728] Stack: (0xc79f3ed4 to 0xc79f4000)
> > [ 42.050805] 3ec0: 00000000 00000001 c70e5640
> > [ 42.075369] 3ee0: c7091b00 00000000 c79f3f80 c79f3f08 c03f07c4 0138a000 c70e5668 00000000
> > [ 42.099931] 3f00: 00000000 400f1000 00000001 00000000 00000025 c7862000 c00cea18 0138a000
> > [ 42.124493] 3f20: c79f3f80 c79f2000 c79f2000 00000000 00000000 c00f6c2c 000000c5 c7091b00
> > [ 42.149059] 3f40: 0138a000 0138a000 c79f3f80 c7091b00 00008000 c00b0be8 00000003 c00a8124
> > [ 42.173621] 3f60: 00000001 c7091b00 0138a000 00000000 00000000 00008000 00000000 c00b0cf8
> > [ 42.198181] 3f80: 00000000 00000000 00000025 00000000 00008000 0138a000 00000003 00000003
> > [ 42.222745] 3fa0: c000e344 c000e1c0 00008000 0138a000 00000003 0138a000 00008000 0138a000
> > [ 42.247307] 3fc0: 00008000 0138a000 00000003 00000003 0138a000 00000000 400f1000 00000000
> > [ 42.271869] 3fe0: 7fffe000 be951b50 0000dea0 401f8a7c 60000010 00000003 00000000 00000000
> > [ 42.296468] [<c024d564>] (dev_seq_next+0x14c/0x1dc) from [<c03f07c4>] (0xc03f07c4)
> > [ 42.319206] Code: eaffffee e590803c e59f508c e1a0a008 (e5984000)
> > [ 42.343526] ---[ end trace 1b75b31a2719ed1f ]---
> >
> > but I don't think that's your fault (excuse the pun)!
>
> It is showing another problem - that's an incomplete backtrace,
> presumably because c03f07c4 is not within the kernel text. Either
> the stack has been corrupted or some other badness has happened,
> or maybe the unwinder isn't working properly.
I've debugged this down to a problem with the net dev name hashing
introduced in f04565dd ("dev: use name hash for dev_seq_ops"). I've also
posted a fix to LKML so I think we can safely ignore it for now.
As for the backtrace, I guess the unwinder had gone wrong since removing the
static inline from the hashing functions suddenly gave me a full backtrace
back to the syscall entry.
Will
More information about the linux-arm-kernel
mailing list