Re: Blank screen on boot of Linux 6.5 and later on Lenovo ThinkPad L570

From: Huacai Chen
Date: Tue Oct 31 2023 - 08:18:07 EST


Hi, Jaak and Evan,

On Sun, Oct 29, 2023 at 9:42 AM Huacai Chen <chenhuacai@xxxxxxxxxx> wrote:
>
> On Sat, Oct 28, 2023 at 7:06 PM Jaak Ristioja <jaak@xxxxxxxxxxx> wrote:
> >
> > On 26.10.23 03:58, Huacai Chen wrote:
> > > Hi, Jaak,
> > >
> > > On Thu, Oct 26, 2023 at 2:49 AM Jaak Ristioja <jaak@xxxxxxxxxxx> wrote:
> > >>
> > >> On 25.10.23 16:23, Huacai Chen wrote:
> > >>> On Wed, Oct 25, 2023 at 6:08 PM Thorsten Leemhuis
> > >>> <regressions@xxxxxxxxxxxxx> wrote:
> > >>>>
> > >>>> Javier, Dave, Sima,
> > >>>>
> > >>>> On 23.10.23 00:54, Evan Preston wrote:
> > >>>>> On 2023-10-20 Fri 05:48pm, Huacai Chen wrote:
> > >>>>>> On Fri, Oct 20, 2023 at 5:35 PM Linux regression tracking (Thorsten
> > >>>>>> Leemhuis) <regressions@xxxxxxxxxxxxx> wrote:
> > >>>>>>> On 09.10.23 10:54, Huacai Chen wrote:
> > >>>>>>>> On Mon, Oct 9, 2023 at 4:45 PM Bagas Sanjaya <bagasdotme@xxxxxxxxx> wrote:
> > >>>>>>>>> On Mon, Oct 09, 2023 at 09:27:02AM +0800, Huacai Chen wrote:
> > >>>>>>>>>> On Tue, Sep 26, 2023 at 10:31 PM Huacai Chen <chenhuacai@xxxxxxxxxx> wrote:
> > >>>>>>>>>>> On Tue, Sep 26, 2023 at 7:15 PM Linux regression tracking (Thorsten
> > >>>>>>>>>>> Leemhuis) <regressions@xxxxxxxxxxxxx> wrote:
> > >>>>>>>>>>>> On 13.09.23 14:02, Jaak Ristioja wrote:
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> Upgrading to Linux 6.5 on a Lenovo ThinkPad L570 (Integrated Intel HD
> > >>>>>>>>>>>>> Graphics 620 (rev 02), Intel(R) Core(TM) i7-7500U) results in a blank
> > >>>>>>>>>>>>> screen after boot until the display manager starts... if it does start
> > >>>>>>>>>>>>> at all. Using the nomodeset kernel parameter seems to be a workaround.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> I've bisected this to commit 60aebc9559492cea6a9625f514a8041717e3a2e4
> > >>>>>>>>>>>>> ("drivers/firmware: Move sysfb_init() from device_initcall to
> > >>>>>>>>>>>>> subsys_initcall_sync").
> > >>>>>>>>>>>>
> > >>>>>>>>>> As confirmed by Jaak, disabling DRM_SIMPLEDRM makes things work fine
> > >>>>>>>>>> again. So I guess the reason:
> > >>>>>>>
> > >>>>>>> Well, this to me still looks a lot (please correct me if I'm wrong) like
> > >>>>>>> regression that should be fixed, as DRM_SIMPLEDRM was enabled beforehand
> > >>>>>>> if I understood things correctly. Or is there a proper fix for this
> > >>>>>>> already in the works and I just missed this? Or is there some good
> > >>>>>>> reason why this won't/can't be fixed?
> > >>>>>>
> > >>>>>> DRM_SIMPLEDRM was enabled but it didn't work at all because there was
> > >>>>>> no corresponding platform device. Now DRM_SIMPLEDRM works but it has a
> > >>>>>> blank screen. Of course it is valuable to investigate further about
> > >>>>>> DRM_SIMPLEDRM on Jaak's machine, but that needs Jaak's effort because
> > >>>>>> I don't have a same machine.
> > >>>>
> > >>>> Side note: Huacai, have you tried working with Jaak to get down to the
> > >>>> real problem? Evan, might you be able to help out here?
> > >>> No, Jaak has no response after he 'fixed' his problem by disabling SIMPLEDRM.
> > >>>
> > >>
> > >> I'm sorry, what was it exactly you want me to do? Please be mindful that
> > >> I'm not familiar with the internals of the Linux kernel and DRI, and it
> > >> might sometimes take weeks before I have time to work and respond on this.
> > > It doesn't matter. I hope you can do some experiments to investigate
> > > deeper. The first experiment you can do is enabling SIMPLEFB (i.e.
> > > CONFIG_FB_SIMPLE) instead of SIMPLEDRM (CONFIG_DRM_SIMPLEDRM) to see
> > > whether there is also a blank screen. If no blank screen, that
> > > probably means SIMPLEDRM has a bug, if still blank screen, that means
> > > the firmware may pass wrong screen information.
> >
> > Testing with 6.5.9 I get a blank screen with CONFIG_DRM_SIMPLEDRM=y and
> > get no blank screen with CONFIG_FB_SIMPLE=y and CONFIG_DRM_SIMPLEDRM unset.
> CONFIG_FB_SIMPLE and CONFIG_DRM_SIMPLEDRM use the same device created
> by sysfb_init(). Since FB_SIMPLE works fine, I think the real problem
> is that DRM_SIMPLEDRM has a bug. The next step is to enable
> CONFIG_DRM_SIMPLEDRM and trace its initialization. In detail, adding
> some printk() in simpledrm_probe() and its sub-routines to see where
> the driver fails. The output of these printk() can be seen by the
> 'dmesg' command after boot.
I need your help. I tried with my laptop (ThinkPad E490, Intel Core
i3-8145U, UHD Graphics 620) but I can't reproduce your problem. So
please patch your 6.5.x kernel with this temporary patch [1], then
build a "bad kernel" with SIMPLEDRM enabled. And after booting your
machine with this "bad kernel", please give me the dmesg output. Thank
you very much.

[1] http://ddns.miaomiaomiao.top:9000/download/kernel/patch-6.5.9


Huacai

>
> Huacai
>
> >
> > Jaak
> >
> > >
> > > Huacai
> > >
> > >>
> > >> Jaak
> > >>
> > >>>>
> > >>>> But I write this mail for a different reason:
> > >>>>
> > >>>>> I am having the same issue on a Lenovo Thinkpad P70 (Intel
> > >>>>> Corporation HD Graphics 530 (rev 06), Intel(R) Core(TM) i7-6700HQ).
> > >>>>> Upgrading from Linux 6.4.12 to 6.5 and later results in only a blank
> > >>>>> screen after boot and a rapidly flashing device-access-status
> > >>>>> indicator.
> > >>>>
> > >>>> This additional report makes me wonder if we should revert the culprit
> > >>>> (60aebc9559492c ("drivers/firmware: Move sysfb_init() from
> > >>>> device_initcall to subsys_initcall_sync") [v6.5-rc1]). But I guess that
> > >>>> might lead to regressions for some users? But the patch description says
> > >>>> that this is not a common configuration, so can we maybe get away with that?
> > >>> From my point of view, this is not a regression, 60aebc9559492c
> > >>> doesn't cause a problem, but exposes a problem. So we need to fix the
> > >>> real problem (SIMPLEDRM has a blank screen on some conditions). This
> > >>> needs Jaak or Evan's help.
> > >>>
> > >>> Huacai
> > >>>>
> > >>>> Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker' hat)
> > >>>> --
> > >>>> Everything you wanna know about Linux kernel regression tracking:
> > >>>> https://linux-regtracking.leemhuis.info/about/#tldr
> > >>>> If I did something stupid, please tell me, as explained on that page.
> > >>>>
> > >>>>>>>>>> When SIMPLEDRM takes over the framebuffer, the screen is blank (don't
> > >>>>>>>>>> know why). And before 60aebc9559492cea6a9625f ("drivers/firmware: Move
> > >>>>>>>>>> sysfb_init() from device_initcall to subsys_initcall_sync") there is
> > >>>>>>>>>> no platform device created for SIMPLEDRM at early stage, so it seems
> > >>>>>>>>>> also "no problem".
> > >>>>>>>>> I don't understand above. You mean that after that commit the platform
> > >>>>>>>>> device is also none, right?
> > >>>>>>>> No. The SIMPLEDRM driver needs a platform device to work, and that
> > >>>>>>>> commit makes the platform device created earlier. So, before that
> > >>>>>>>> commit, SIMPLEDRM doesn't work, but the screen isn't blank; after that
> > >>>>>>>> commit, SIMPLEDRM works, but the screen is blank.
> > >>>>>>>>
> > >>>>>>>> Huacai
> > >>>>>>>>>
> > >>>>>>>>> Confused...
> > >>>>>>>>>
> > >>>>>>>>> --
> > >>>>>>>>> An old man doll... just what I always wanted! - Clara
> > >>>>>>>>
> > >>>>>>>>
> > >>>>>
> > >>>>>
> > >>
> >