linux-omap.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Michael Welling <mwelling@ieee.org>
To: "Pali Rohár" <pali.rohar@gmail.com>
Cc: Sebastian Reichel <sre@kernel.org>,
	Tony Lindgren <tony@atomide.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:56:07 -0500	[thread overview]
Message-ID: <20150713175607.GA6080@deathray> (raw)
In-Reply-To: <201507131909.06521@pali>

On Mon, Jul 13, 2015 at 07:09:06PM +0200, Pali Rohár wrote:
> On Monday 13 July 2015 19:03:44 Michael Welling wrote:
> > 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?
> > 
> 
> Hello, here is my objdump of 4.2-rc2 version:
> 
> 00000064 <omap2_mcspi_set_cs>:
>       64:       e3003182        movw    r3, #386        ; 0x182
>       68:       e19030b3        ldrh    r3, [r0, r3]
>       6c:       e3130004        tst     r3, #4
>       70:       0a000001        beq     7c <omap2_mcspi_set_cs+0x18>
>       74:       e2711001        rsbs    r1, r1, #1
>       78:       33a01000        movcc   r1, #0
>       7c:       e5902188        ldr     r2, [r0, #392]  ; 0x188
>       80:       e3520000        cmp     r2, #0
>       84:       012fff1e        bxeq    lr
>       88:       e5923018        ldr     r3, [r2, #24]
>       8c:       e3510000        cmp     r1, #0
>       90:       13c33601        bicne   r3, r3, #1048576        ; 0x100000
>       94:       03833601        orreq   r3, r3, #1048576        ; 0x100000
>       98:       e5823018        str     r3, [r2, #24]
>       9c:       e5902188        ldr     r2, [r0, #392]  ; 0x188
>       a0:       e5922000        ldr     r2, [r2]
>       a4:       e582302c        str     r3, [r2, #44]   ; 0x2c
>       a8:       e592302c        ldr     r3, [r2, #44]   ; 0x2c
>       ac:       e12fff1e        bx      lr

0x64+0x44 = 0xa8

That means that it got past the check for controller_state being NULL.
So that means that controller_state is not NULL and not initialized properly
causing the data abort.

It still does not explain how the driver used to work given it initializes
the controller_state in the setup function after doing the same check.

Let me dig a little more. Wish I had a N900 to try this on.

> 
> -- 
> Pali Rohár
> pali.rohar@gmail.com

  reply	other threads:[~2015-07-13 17:56 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
2015-07-13 17:09       ` Pali Rohár
2015-07-13 17:56         ` Michael Welling [this message]
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=20150713175607.GA6080@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).