From: Michael Welling <mwelling@ieee.org>
To: Sebastian Reichel <sre@kernel.org>
Cc: "Tony Lindgren" <tony@atomide.com>,
"Pali Rohár" <pali.rohar@gmail.com>,
"Pavel Machek" <pavel@ucw.cz>,
"Ivaylo Dimitrov" <ivo.g.dimitrov.75@gmail.com>,
"Aaro Koskinen" <aaro.koskinen@iki.fi>,
"Nishanth Menon" <nm@ti.com>,
linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: linux 4.2-rc1 broken Nokia N900
Date: Mon, 13 Jul 2015 12:03:44 -0500 [thread overview]
Message-ID: <20150713170344.GA5825@deathray> (raw)
In-Reply-To: <20150713080920.GA25585@earth>
On Mon, Jul 13, 2015 at 10:09:21AM +0200, Sebastian Reichel wrote:
> [+cc Michael Welling <mwelling@ieee.org>, author of all omap-spi patches between 4.1 and 4.2-rc1]
>
> Hi,
>
> On Sun, Jul 12, 2015 at 11:44:25PM -0700, Tony Lindgren wrote:
> > * Pali Rohár <pali.rohar@gmail.com> [150711 05:07]:
> > > Hello,
> > >
> > > now I tested 4.2-rc1 release on Nokia N900 and couple of drivers are
> > > broken and cause kernel oops...
> > >
> > > Basically wifi, touchscreen and rtc drivers not working...
> > >
> > > Here are some relevant snippets form dmesg:
> > >
> > > [ 13.933959] Unhandled fault: external abort on non-linefetch (0x1028) at 0xfa09802c
> > > [ 13.940490] pgd = cfb38000
> > > [ 13.946594] [fa09802c] *pgd=48011452(bad)
> > > [ 13.952758] Internal error: : 1028 [#1] PREEMPT ARM
> > > [ 13.958862] Modules linked in: tsc2005(+) omap_sham twl4030_wdt omap_wdt
> > > [ 13.965332] CPU: 0 PID: 183 Comm: modprobe Not tainted 4.2.0-rc1+ #363
> > > [ 13.971801] Hardware name: Nokia RX-51 board
> > > [ 13.978302] task: cf572300 ti: cb1f2000 task.ti: cb1f2000
> > > [ 13.984924] PC is at omap2_mcspi_set_cs+0x44/0x4c
Here is the disassembly of the omap2_mcspi_set_cs function from my compiler:
00000040 <omap2_mcspi_set_cs>:
40: e2803e25 add r3, r0, #592 ; 0x250
44: e5902258 ldr r2, [r0, #600] ; 0x258
48: e1d330b2 ldrh r3, [r3, #2]
4c: e3130004 tst r3, #4
50: 12211001 eorne r1, r1, #1
54: e3520000 cmp r2, #0
58: 012fff1e bxeq lr
5c: e5923018 ldr r3, [r2, #24]
60: e3510000 cmp r1, #0
64: 13c33601 bicne r3, r3, #1048576 ; 0x100000
68: 03833601 orreq r3, r3, #1048576 ; 0x100000
6c: e5823018 str r3, [r2, #24]
70: e5902258 ldr r2, [r0, #600] ; 0x258
74: e5922000 ldr r2, [r2]
78: e582302c str r3, [r2, #44] ; 0x2c
7c: e5903258 ldr r3, [r0, #600] ; 0x258
80: e5933000 ldr r3, [r3]
84: e593202c ldr r2, [r3, #44] ; 0x2c
88: e12fff1e bx lr
The omap2_mcspi_set_cs function is being called before the controller_state is
initialized in omap2_mcspi_setup.
That is why there is a conditional checking if controller_state is NULL.
Perhaps the controller_state is uninitialized but has garbage instead of NULL
causing the data abort.
Though that does not make much sense because a similar check in the setup function
did not cause a data abort in the past.
Not sure what is going wrong here.
Could you do a objdump with the compiler you are using?
> > > [ 13.991485] LR is at spi_set_cs+0x5c/0x60
> > > [ 13.997985] pc : [<c02bd3ac>] lr : [<c02baecc>] psr: 20000013
> > > [ 13.997985] sp : cb1f3dd0 ip : 00000001 fp : 00000004
> > > [ 14.011260] r10: cfce5be8 r9 : 00000fff r8 : c0654f98
> > > [ 14.017913] r7 : 00000000 r6 : 00000000 r5 : 00000000 r4 : 00000000
> > > [ 14.024505] r3 : 200103dc r2 : fa098000 r1 : 00000001 r0 : cf09bc00
> > > [ 14.031036] Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
> > > [ 14.037689] Control: 10c5387d Table: 8fb38019 DAC: 00000015
> > > [ 14.044403] Process modprobe (pid: 183, stack limit = 0xcb1f2210)
> > > [ 14.051300] Stack: (0xcb1f3dd0 to 0xcb1f4000)
> > > [ 14.058105] 3dc0: cf09bc00 c02bafa4 cf09bc00 cf09bc00
> > > [ 14.065277] 3de0: bf013444 bf01254c cf0e2230 cf0e2230 00000001 c0654f98 00000fff 00000fff
> > > [ 14.072570] 3e00: 00000008 00000002 00000118 00001f40 00000031 cf09bc00 ffffffed bf013444
> > > [ 14.080078] 3e20: 00000031 c0654f98 cb1f2000 00000000 00000000 c02bb5c0 cf09bc00 00000000
> > > [ 14.087738] 3e40: bf013454 c027a2f4 00000000 cf09bc00 bf013454 bf013454 00000000 c027a594
> > > [ 14.095367] 3e60: 00000000 cf09bc00 cf09bc34 c027a60c bf013454 cb1f3e80 c027a5ac c0278ec8
> > > [ 14.102935] 3e80: cf972c4c cf09d630 bf013454 bf013454 cbb55300 c06848d8 00000000 c0279c84
> > > [ 14.110473] 3ea0: bf01327c bf01327d 00000000 bf013454 cb889180 00000000 c0654f98 c027b0c8
> > > [ 14.117980] 3ec0: 00000000 bf015000 cb889180 c00095b0 0040003e cfe6a080 0040003f 00000000
> > > [ 14.125457] 3ee0: 00080000 cfcf9000 cb1f2000 60000013 0040003e cbf1bbc0 00000000 00000001
> > > [ 14.132843] 3f00: bf0134cc cb1f2000 bf0134c0 cb1f3f58 00000000 c04352d0 cf801f00 000000d0
> > > [ 14.140136] 3f20: bf0134c0 bf0134c0 0000416c cb889040 00000080 c000ebe4 cb1f2000 c0089f68
> > > [ 14.147308] 3f40: bf0134c0 cbf1bc00 001a9193 0000416c 001f8d20 c008ab30 d0b10000 0000416c
> > > [ 14.154571] 3f60: d0b1267c d0b1252b d0b13514 000016c0 00001ad0 00000000 00000000 00000000
> > > [ 14.161865] 3f80: 0000001f 00000020 00000017 00000014 00000012 00000000 00201208 00000000
> > > [ 14.169097] 3fa0: 00000000 c000ea60 00201208 00000000 001f8d20 0000416c 001a9193 00000000
> > > [ 14.176177] 3fc0: 00201208 00000000 00000000 00000080 00208c20 001a9193 bee09e98 00000000
> > > [ 14.183197] 3fe0: b6f742b4 bee09ae4 000153f0 000093e4 60000010 001f8d20 72757463 69665f65
> > > [ 14.190277] [<c02bd3ac>] (omap2_mcspi_set_cs) from [<c02baecc>] (spi_set_cs+0x5c/0x60)
> > > [ 14.197479] [<c02baecc>] (spi_set_cs) from [<c02bafa4>] (spi_setup+0xd4/0x10c)
> > > [ 14.204833] [<c02bafa4>] (spi_setup) from [<bf01254c>] (tsc2005_probe+0x104/0x484 [tsc2005])
> > > [ 14.212249] [<bf01254c>] (tsc2005_probe [tsc2005]) from [<c02bb5c0>] (spi_drv_probe+0x50/0x6c)
> > > [ 14.219818] [<c02bb5c0>] (spi_drv_probe) from [<c027a2f4>] (really_probe+0xd4/0x230)
> > > [ 14.227478] [<c027a2f4>] (really_probe) from [<c027a594>] (driver_probe_device+0x30/0x48)
> > > [ 14.235290] [<c027a594>] (driver_probe_device) from [<c027a60c>] (__driver_attach+0x60/0x84)
> > > [ 14.243286] [<c027a60c>] (__driver_attach) from [<c0278ec8>] (bus_for_each_dev+0x50/0x84)
> > > [ 14.251281] [<c0278ec8>] (bus_for_each_dev) from [<c0279c84>] (bus_add_driver+0xcc/0x1e0)
> > > [ 14.259246] [<c0279c84>] (bus_add_driver) from [<c027b0c8>] (driver_register+0x9c/0xe0)
> > > [ 14.267272] [<c027b0c8>] (driver_register) from [<c00095b0>] (do_one_initcall+0x100/0x1b0)
> > > [ 14.275421] [<c00095b0>] (do_one_initcall) from [<c0089f68>] (do_init_module+0x58/0x1bc)
> > > [ 14.283477] [<c0089f68>] (do_init_module) from [<c008ab30>] (SyS_init_module+0x54/0x64)
> > > [ 14.291412] [<c008ab30>] (SyS_init_module) from [<c000ea60>] (ret_fast_syscall+0x0/0x3c)
> > > [ 14.299407] Code: e5823018 e5902188 e5922000 e582302c (e592302c)
> > > [ 14.307403] ---[ end trace d21553dcaefcb5ac ]---
> >
> > That seems to be a regression with the SPI driver. Care to git bisect it?
> > It's probably one of the following commits:
> >
> > $ git log --pretty=oneline v4.1..v4.2-rc2 drivers/spi/spi-omap2-mcspi.c
> >
> > Looks like just modprobe tsc2005 is enough to reproduce it.
>
> mh omap2_mcspi_set_cs has been introduced in this range
> (ddcad7e9068) and from the commit message it seems to be
> a fix for the first commit (b28cb9414d) in this range.
>
> Just looking at the commit log, I sugest starting with testing if
> ddcad7e9068 is affected and if b28cb9414d~1 is not affected.
>
> -- Sebastian
next prev parent reply other threads:[~2015-07-13 17:03 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-11 12:05 linux 4.2-rc1 broken Nokia N900 Pali Rohár
2015-07-13 6:44 ` Tony Lindgren
2015-07-13 8:09 ` Sebastian Reichel
2015-07-13 17:03 ` Michael Welling [this message]
2015-07-13 17:09 ` Pali Rohár
2015-07-13 17:56 ` Michael Welling
2015-07-13 20:28 ` Michael Welling
2015-07-13 20:34 ` Pali Rohár
2015-07-13 21:52 ` Michael Welling
2015-07-13 22:02 ` Pali Rohár
2015-07-13 22:36 ` Michael Welling
2015-07-14 7:14 ` Pali Rohár
2015-07-14 7:45 ` Tony Lindgren
2015-07-14 16:33 ` Michael Welling
2015-07-14 20:01 ` Pavel Machek
2015-07-14 20:17 ` Michael Welling
2015-07-15 19:49 ` Pavel Machek
2015-07-15 20:10 ` Michael Welling
2015-07-21 7:31 ` Pavel Machek
2015-07-21 7:33 ` Pavel Machek
2015-07-21 8:04 ` Pali Rohár
2015-07-20 20:48 ` Michael Welling
2015-07-20 20:46 ` Michael Welling
2015-07-20 20:58 ` Pali Rohár
2015-07-21 9:34 ` Pavel Machek
2015-07-21 21:28 ` Michael Welling
2015-07-22 0:17 ` Michael Welling
2015-07-22 2:03 ` Sebastian Reichel
2015-07-22 5:13 ` Michael Welling
2015-07-22 7:27 ` Pali Rohár
2015-07-22 13:33 ` Sebastian Reichel
2015-07-22 14:27 ` Pali Rohár
2015-07-22 13:30 ` Pavel Machek
2015-07-25 8:55 ` Pali Rohár
2015-07-28 8:39 ` Pali Rohár
2015-07-28 12:26 ` Sebastian Reichel
2015-07-28 12:32 ` Pali Rohár
2015-07-13 11:10 ` Pali Rohár
2015-07-13 13:26 ` Tony Lindgren
2015-07-13 15:51 ` Sebastian Reichel
2015-07-13 16:05 ` Pali Rohár
2015-07-13 19:32 ` Sebastian Reichel
2015-07-14 0:18 ` Krzysztof Kozlowski
2015-07-24 8:18 ` Dave Young
2015-07-24 8:30 ` Ivaylo Dimitrov
2015-07-24 10:28 ` Dave Young
2015-07-24 10:53 ` Pali Rohár
2015-07-24 8:40 ` Pali Rohár
2015-07-24 10:33 ` Dave Young
2015-07-24 10:52 ` Pali Rohár
2015-07-24 15:50 ` Pali Rohár
2015-07-24 8:51 ` Pavel Machek
2015-07-24 10:39 ` Dave Young
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150713170344.GA5825@deathray \
--to=mwelling@ieee.org \
--cc=aaro.koskinen@iki.fi \
--cc=ivo.g.dimitrov.75@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=nm@ti.com \
--cc=pali.rohar@gmail.com \
--cc=pavel@ucw.cz \
--cc=sre@kernel.org \
--cc=tony@atomide.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.