bisected gma500 kernel splat on portwell nano-8044

Paul Gortmaker paul.gortmaker at windriver.com
Sat Oct 29 19:13:43 UTC 2016


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:~$ 

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.

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

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