Re: bisected gma500 kernel splat on portwell nano-8044

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Oct 29, 2016 at 9:13 PM, Paul Gortmaker
<paul.gortmaker@xxxxxxxxxxxxx> 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@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@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.

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

> 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.

>
> 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 :)
-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 ]---
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux