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