bisected gma500 kernel splat on portwell nano-8044

Paul Gortmaker paul.gortmaker at windriver.com
Sat Oct 29 22:14:44 UTC 2016


[Re: bisected gma500 kernel splat on portwell nano-8044] On 29/10/2016 (Sat 23:05) Patrik Jakobsson wrote:

> On Sat, Oct 29, 2016 at 9:13 PM, Paul Gortmaker
> <paul.gortmaker at windriver.com> wrote:
> > Dusted off an old Portwell nano-8044 that hadn't been booted for years
> > and found that it wouldn't boot mainline - it puts the D-sub VGA into no
> > signal mode.  Hooking up a serial cable and I see a boot splat, which I
> > bisected down to
> >
> > # first bad commit: [01934c2a691882185b3021d437df13bcba07711d]
> > # drm/fb-helper: Propagate errors from initial config failure
> >
> > ..introduced 1st into the 4.0 kernel.  To be fair, the 3.19 kernel also
> > blanked the screen once gma500 was loaded but it came on again once X11
> > started up and was splat free.
> >
> > Looking at the above commit, it is clear we were returning an error
> > before that we were simply ignoring, and I confirmed that by making this
> > simple change on the latest mainline from Linus, and X11 started again
> > just like 3.19 before the commit was merged.
> >
> >
> >   diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c
> >   index 3a44e705db53..96503a329a3b 100644
> >   --- a/drivers/gpu/drm/gma500/framebuffer.c
> >   +++ b/drivers/gpu/drm/gma500/framebuffer.c
> >   @@ -586,7 +586,7 @@ int psb_fbdev_init(struct drm_device *dev)
> >
> >           ret = drm_fb_helper_initial_config(&fbdev->psb_fb_helper, 32);
> >           if (ret)
> >   -               goto fini;
> >   +               printk("gma500: initial config = %d\n", ret);
> >
> >           return 0;
> >
> >
> > The return value it prints is:
> >
> > paul at nano:~$ dmesg|grep gma
> > [    4.239282] gma500 0000:00:02.0: trying to get vblank count for disabled pipe 1
> > [    4.240006] gma500 0000:00:02.0: trying to get vblank count for disabled pipe 1
> > [    4.567972] gma500: initial config = -12
> > [    4.576715] gma500 0000:00:02.0: I2C transfer error
> > [    4.581628] [drm] Initialized gma500 1.0.0 20140314 for 0000:00:02.0 on minor 0
> > [   24.143524] gma500 0000:00:02.0: I2C transfer error
> > paul at nano:~$
> 
> My best bet is that we are failing to allocate backing for the
> framebuffer in psbfb_gtt_alloc_range(). We allocate contiguous memory
> from a special memory pool for the framebuffer layer which is quite
> limited in size. Possibly when I2C fails we fall back on bogus VBT
> data for LVDS or something. The driver assumes that the board (BIOS /
> VBT / fuses) is configured properly and currently don't fail
> gracefully.

Sounds reasonable.  I forgot to mention -12 == -ENOMEM for the context
of the discussion.  This was advertised as the 1st nano-ATX Atom based
board back in the day, so I'm sure the BIOS isn't populating things with
100% correct info. (If it was, text mode presumably wouldn't get trashed
by the loading of gma500_gfx).

> 
> Can you give me the dmesg with drm.debug=0xfe?

Sure ; it looks quite verbose, so I'll send it off list.  I'm still
booting recent mainline (8e819101ce6fcc58801c9) with my one line patch,
so I can log in and run dmesg ; if you'd rather I run w/o the patch and
capture the output from the serial console, let me know.

> > I assume the disabled pipe msgs are for the internal (currently unused) LVDS
> > connector.
> >
> > The splats varied a bit ; I've included a couple samples below.
> > Sometimes it would stumble on a bit further but most times a subsequent
> > fault triggered by the initial one would kill it dead.
> >
> > I'd checked Portwell's site to see if there was a newer BIOS on
> > drivers.portwell.com since the kernel also complains about a Firmware
> > bug relating to initial brightness, but couldn't find any.
> 
> Sounds like the board is configured to have an LVDS panel connected.

I reloaded the CMOS defaults - it didn't help.  It does have an LVDS
panel selection choice dialog in the BIOS, but there isn't a choice for
"None" for some odd reason.

> 
> >
> > Probably not worth losing a lot of sleep over, since the board is old
> > enough to be tossed into the e-waste now anyways, but since I bisected
> > it I figured I might as well report what I'd found.
> >
> > https://www.portwell.com.tw/products/NANO-8044.html
> 
> Thanks for the report, who needs sleep anyway :)

Well, if you are sufficiently bored (or interested) to keep diagnosing
it by remote, I'll run whatever tests/patches you want.  :)

Paul.
--

> -Patrik
> 
> > Paul.
> > --
> >
> > [   25.647208] BUG: unable to handle kernel paging request at 0001022d
> > [   25.648016] IP: [<c178585d>] mutex_lock+0xd/0x30
> > [   25.648016] *pde = 00000000
> > [   25.648016] Oops: 0002 [#1] SMP
> > [   25.648016] Modules linked in:
> > [   25.648016] CPU: 0 PID: 1387 Comm: gpu-manager Not tainted 3.19.0-rc3+ #18
> > [   25.648016] Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./To be filled by O.E.M., BIOS 080015  07/24/2009
> > [   25.648016] task: f35363e0 ti: f529c000 task.ti: f529c000
> > [   25.648016] EIP: 0060:[<c178585d>] EFLAGS: 00010246 CPU: 0
> > [   25.648016] EIP is at mutex_lock+0xd/0x30
> > [   25.648016] EAX: 0001022d EBX: 0001022d ECX: 00000000 EDX: 80000000
> > [   25.648016] ESI: 00000000 EDI: 00010101 EBP: f529dee4 ESP: f529dee0
> > [   25.648016]  DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
> > [   25.648016] CR0: 80050033 CR2: 0001022d CR3: 35194000 CR4: 000007c0
> > [   25.648016] Stack:
> > [   25.648016]  f34b3260 f529def8 c136da41 f614df00 00010101 f6289000 f529df00 c136daea
> > [   25.648016]  f529df14 c1351e12 f6289000 f6289000 f6289000 f529df1c c140c611 f529df2c
> > [   25.648016]  c13555c2 00000000 f6289000 f529df5c c135595f f529df8c f6289034 f6289000
> > [   25.648016] Call Trace:
> > [   25.648016]  [<c136da41>] __drm_modeset_lock_all+0x71/0x110
> > [   25.648016]  [<c136daea>] drm_modeset_lock_all+0xa/0x30
> > [   25.648016]  [<c1351e12>] drm_fb_helper_restore_fbdev_mode_unlocked+0x12/0x50
> > [   25.648016]  [<c140c611>] psb_driver_lastclose+0x11/0x40
> > [   25.648016]  [<c13555c2>] drm_lastclose+0x22/0x130
> > [   25.648016]  [<c135595f>] drm_release+0x28f/0x450
> > [   25.648016]  [<c1133525>] __fput+0xb5/0x1c0
> > [   25.648016]  [<c1133668>] ____fput+0x8/0x10
> > [   25.648016]  [<c1059c01>] task_work_run+0xa1/0xd0
> > [   25.648016]  [<c10023b5>] do_notify_resume+0x65/0x70
> > [   25.648016]  [<c1787b77>] work_notifysig+0x24/0x29
> > [   25.648016] Code: 01 75 13 64 a1 38 77 b0 c1 5d 89 42 10 b8 01 00 00 00 c3 8d 76 00 31 c0 5d c3 8d 74 26 00 55 89 e5 53 89 c3 e8 15 f0 ff ff 89 d8 <f0> ff 08 79 05 e8 79 06 00 00 64 a1 38 77 b0 c1 89 43 10 5bd
> > [   25.648016] EIP: [<c178585d>] mutex_lock+0xd/0x30 SS:ESP 0068:f529dee0
> > [   25.648016] CR2: 000000000001022d
> > [   25.837795] ---[ end trace 6df62ac22aa38097 ]---
> >
> >
> > [   14.559091] BUG: unable to handle kernel paging request at 74746d9e
> > [   14.560006] IP: [<c178597d>] mutex_lock+0xd/0x30
> > [   14.560006] *pde = 00000000
> > [   14.560006] Oops: 0002 [#1] SMP
> > [   14.560006] Modules linked in:
> > [   14.560006] CPU: 0 PID: 483 Comm: kworker/0:1 Not tainted 3.19.0-rc3+ #17
> > [   14.560006] Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./To be filled by O.E.M., BIOS 080015  07/24/2009
> > [   14.560006] Workqueue: events output_poll_execute
> > [   14.560006] task: f61f9d60 ti: f62b0000 task.ti: f62b0000
> > [   14.560006] EIP: 0060:[<c178597d>] EFLAGS: 00010246 CPU: 0
> > [   14.560006] EIP is at mutex_lock+0xd/0x30
> > [   14.560006] EAX: 74746d9e EBX: 74746d9e ECX: 00000000 EDX: 80000000
> > [   14.560006] ESI: f613c900 EDI: f34af1e4 EBP: f62b1ec8 ESP: f62b1ec4
> > [   14.560006]  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
> > [   14.560006] CR0: 8005003b CR2: 74746d9e CR3: 334c5000 CR4: 000007c0
> > [   14.560006] Stack:
> > [   14.560006]  f34af000 f62b1ee8 c1351dcb 74746c72 f34af244 f34af1e4 f34af000 f34af244
> > [   14.560006]  f34af1e4 f62b1ef0 c1407b91 f62b1efc c13486cc f34af1d8 f62b1f1c c1348838
> > [   14.560006]  f34af244 f34af12c 01010000 f34af244 f62acde0 00000000 f62b1f40 c1056d10
> > [   14.560006] Call Trace:
> > [   14.560006]  [<c1351dcb>] drm_fb_helper_hotplug_event+0x1b/0x100
> > [   14.560006]  [<c1407b91>] psbfb_output_poll_changed+0x11/0x20
> > [   14.560006]  [<c13486cc>] drm_kms_helper_hotplug_event+0x1c/0x20
> > [   14.560006]  [<c1348838>] output_poll_execute+0x128/0x170
> > [   14.560006]  [<c1056d10>] process_one_work+0x110/0x3f0
> > [   14.560006]  [<c105710f>] worker_thread+0x11f/0x450
> > [   14.560006]  [<c1056ff0>] ? process_one_work+0x3f0/0x3f0
> > [   14.560006]  [<c105b0b6>] kthread+0x96/0xb0
> > [   14.560006]  [<c1787a41>] ret_from_kernel_thread+0x21/0x30
> > [   14.560006]  [<c105b020>] ? kthread_worker_fn+0x130/0x130
> > [   14.560006] Code: 01 75 13 64 a1 38 77 b0 c1 5d 89 42 10 b8 01 00 00 00 c3 8d 76 00 31 c0 5d c3 8d 74 26 00 55 89 e5 53 89 c3 e8 15 f0 ff ff 89 d8 <f0> ff 08 79 05 e8 79 06 00 00 64 a1 38 77 b0 c1 89 43 10 5bd
> > [   14.560006] EIP: [<c178597d>] mutex_lock+0xd/0x30 SS:ESP 0068:f62b1ec4
> > [   14.560006] CR2: 0000000074746d9e
> > [   14.560006] ---[ end trace 28a2f24980af4c7d ]---


More information about the dri-devel mailing list