Bug 108773 - i915.fastboot=1 is broken on Thinkpad S1 Yoga (Haswell)
Summary: i915.fastboot=1 is broken on Thinkpad S1 Yoga (Haswell)
Status: RESOLVED FIXED
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/Intel (show other bugs)
Version: unspecified
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Intel GFX Bugs mailing list
QA Contact: Intel GFX Bugs mailing list
URL:
Whiteboard: Triaged, ReadyForDev
Keywords:
Depends on:
Blocks:
 
Reported: 2018-11-17 08:00 UTC by Julius B.
Modified: 2019-06-12 12:00 UTC (History)
4 users (show)

See Also:
i915 platform: HSW
i915 features: display/backlight


Attachments
Dmesg output from drm-tip with fastboot on T440s (67.99 KB, application/gzip)
2018-11-19 18:32 UTC, Johannes Krampf
no flags Details
Dmesg from drm-tip 20181128 with fastboot on T440s (181.33 KB, text/x-log)
2018-11-28 15:27 UTC, Johannes Krampf
no flags Details
Dmesg of drm-tip + backlight patch on T440s (212.24 KB, text/plain)
2018-11-29 19:26 UTC, Johannes Krampf
no flags Details
dmesg linux-next 20190517 without fastboot on T440s (73.65 KB, application/gzip)
2019-05-20 17:59 UTC, Johannes Krampf
no flags Details
dmesg linux-next 20190517 with fastboot on T440s (49.19 KB, application/gzip)
2019-05-20 18:09 UTC, Johannes Krampf
no flags Details
dmesg linux-next 20190517 with fastboot on Yoga (62.74 KB, text/plain)
2019-05-20 19:03 UTC, Julius B.
no flags Details
dmesg linux-next 20190517 with fastboot on Yoga (62.84 KB, text/plain)
2019-05-20 19:05 UTC, Julius B.
no flags Details
dmesg linux-next 20190517 without fastboot on Yoga (62.74 KB, text/plain)
2019-05-20 19:07 UTC, Julius B.
no flags Details
Dmesg of drm-tip without fastboot on T440s (23.88 KB, application/gzip)
2019-05-23 07:58 UTC, Johannes Krampf
no flags Details
Dmesg of drm-tip with fastboot on T440s (22.88 KB, application/gzip)
2019-05-23 08:08 UTC, Johannes Krampf
no flags Details
[PATCH] drm/i915: Do not touch the PCH SSC reference if a PLL is using it (4.45 KB, patch)
2019-06-04 16:54 UTC, Ville Syrjala
no flags Details | Splinter Review
Dmesg of drm-tip fastboot with patch "Do not touch the PCH SSC..." (22.79 KB, application/gzip)
2019-06-04 19:44 UTC, Johannes Krampf
no flags Details

Description Julius B. 2018-11-17 08:00:32 UTC
I was following the information on https://hansdegoede.livejournal.com/19224.html to enable flicker-free bot on Fedora 29.

However, enabling i915.fastboot=1 results in the screen staying black during and after boot. No login manager is shown, and I cannot switch VTs via CTRL+ALT+F keys (as usual).

This happens on a Thinkpad S1 Yoga (Haswell platform), which incidentally I know is one of the Haswell machines available for Intel employees.

Tested kernel versions:
Fedora kernels 4.18.18/19, 4.19.2-200 and 4.20.0-0.rc2.git2.1. 

I havent tested any mainline or git build yet. I reported https://bugzilla.redhat.com/show_bug.cgi?id=1639437, and was referred to here.

I'll try to create a dmesg with debug information, and attach it here.
Comment 1 Johannes Krampf 2018-11-17 10:30:03 UTC
I confirm the same behaviour on a Thinkpad T440s using an i7-4600U Haswell processor and kernel 4.19.2 on Arch. This is with an eDP panel.

The system is booting in EFI mode and the bootloader text is still visible, but as Linux starts booting there's only a black screen. I can still interact with the system as normal (start applications,...), I just don't see anything on the screen.

The screen backlight is still on at this stage. While investigating using SSH the screen went into powersave, that is, the backlight turned off. When I exited the screen powersave by moving my mouse pointer, the screen turned back on and is working normally.

I'd be happy to provide debug information/test other kernels if you tell me what would be useful.
Comment 2 Johannes Krampf 2018-11-17 10:34:43 UTC
Correction: After the bootloader is shown, the vendor logo briefly flashes on the screen and then the screen turns black.
Comment 3 Lakshmi 2018-11-19 13:21:46 UTC
(In reply to Julius B. from comment #0)
> I was following the information on
> https://hansdegoede.livejournal.com/19224.html to enable flicker-free bot on
> Fedora 29.
> 
> However, enabling i915.fastboot=1 results in the screen staying black during
> and after boot. No login manager is shown, and I cannot switch VTs via
> CTRL+ALT+F keys (as usual).
> 
> This happens on a Thinkpad S1 Yoga (Haswell platform), which incidentally I
> know is one of the Haswell machines available for Intel employees.
> 
> Tested kernel versions:
> Fedora kernels 4.18.18/19, 4.19.2-200 and 4.20.0-0.rc2.git2.1. 
> 
> I havent tested any mainline or git build yet. I reported
> https://bugzilla.redhat.com/show_bug.cgi?id=1639437, and was referred to
> here.
> 
> I'll try to create a dmesg with debug information, and attach it here.

Dmesg log from boot with kernel parameters drm.debug=0x1e log_buf_len=4M are needed from latest drm-tip.
This issue could be duplicate of https://bugs.freedesktop.org/show_bug.cgi?id=104838
Comment 4 Johannes Krampf 2018-11-19 18:32:16 UTC
Created attachment 142523 [details]
Dmesg output from drm-tip with fastboot on T440s

I cloned drm-tip, built the kernel with default options+EFISTUB, booted with fastboot (black screen), turned the screen off with `xset dpms force off` and got normal graphical output after moving the mouse pointer to wake the screen up again.
Comment 5 Lakshmi 2018-11-27 09:22:54 UTC
Maarten, Any help here?
Comment 6 Maarten Lankhorst 2018-11-28 11:47:56 UTC
https://patchwork.freedesktop.org/series/52754/ ?
Comment 7 Johannes Krampf 2018-11-28 15:27:49 UTC
Created attachment 142648 [details]
Dmesg from drm-tip 20181128 with fastboot on T440s

I built drm-tip at 5912c54d9804fb15d6a9fa2798bfef1e837c8938 (Nov 27 18:38:00 2018 -0800) with default config + EFISTUB, booted and there was no output on the screen.

When I forced the monitor into sleep mode (xset dpms force off) and woke the screen up by moving the mouse I had normal output again.

It seems the LUT update patch does not solve the issue for me.
Comment 8 Maarten Lankhorst 2018-11-29 10:38:15 UTC
Hmm dumped pipe config stays the same regardless, so link parameters don't seem t o be a problem.

Could still be backlight.
https://bugs.freedesktop.org/attachment.cgi?id=142522 ?
Comment 9 Johannes Krampf 2018-11-29 19:26:08 UTC
Created attachment 142659 [details]
Dmesg of drm-tip + backlight patch on T440s

Same drm-tip version as the the last comment + the backlight patch.

The backlight was working before the patch. That is, there was a clear difference between the black screen after boot and the black screen after xset dpms force off.

With the patch, the backlight was off after boot as well and there was no difference before and after xset dpms force off.

I could see boot messages on the screen for a split-second after exiting the boot loader. It appeared that the screen was half-filled (top-to-bottom) with messages before it turned off. Maybe this information helps in determining the timing of the problematic action.
Comment 10 Julius B. 2019-05-19 12:46:25 UTC
According to bug#104838, this should be fixed in linux-next. However, I haven't been able to verify the fix, my system still shows a black screen when booting with i915.fastboot=1.

I'll try to create a dmesg log and attach it here. Johannes Krampf, could you check if it works on your system?
Comment 11 Johannes Krampf 2019-05-20 17:59:53 UTC
Created attachment 144306 [details]
dmesg linux-next 20190517 without fastboot on T440s
Comment 12 Johannes Krampf 2019-05-20 18:09:07 UTC
Created attachment 144307 [details]
dmesg linux-next 20190517 with fastboot on T440s

I tried linux-next. When I cloned the tree, the latest version was b1d6682ef9bb6893690e39e2186371a1dc45072b with the tag next-20190517.

The kernel worked fine without fastboot.

With fastboot I would very briefly (<second) see boot messages, then the screen would go black, but with the backlight on. Finally, around the time I expect Wayland to have started, the screen went completely black with the backlight being off.

The machine was running and I was able to open a terminal and redirect dmesg to a file. I was also able to switch to a virtual terminal, redirect dmesg once more to a file and to trigger a reboot. All of this was with the backlight being off.

I did not try the equivalent of `xset dpms force off` because I couldn't remember how this worked on Wayland/sway. I can try this if it would be helpful. Please ask me in this case.
Comment 13 Julius B. 2019-05-20 19:03:55 UTC
Created attachment 144308 [details]
dmesg linux-next 20190517 with fastboot on Yoga
Comment 14 Julius B. 2019-05-20 19:05:01 UTC
Created attachment 144309 [details]
dmesg linux-next 20190517 with fastboot on Yoga
Comment 15 Julius B. 2019-05-20 19:07:25 UTC
Created attachment 144310 [details]
dmesg linux-next 20190517 without fastboot on Yoga

I can confirm the same behaviour as Johannes on the S1 Yoga with X11:

With fastboot I would very briefly (<second) see boot messages, then the screen would go black, but with the backlight on. Finally, around the time I expect X11 to have started, the screen went completely black with the backlight being off.

However, I wasn't able to switch VTs, but I captured dmesg via ssh.
Comment 16 Ville Syrjala 2019-05-22 15:33:02 UTC
Please test latest drm-tip and make sure to pass drm.debug=0xe to the kernel cmdline.
Comment 17 Johannes Krampf 2019-05-23 07:58:37 UTC
Created attachment 144328 [details]
Dmesg of drm-tip without fastboot on T440s
Comment 18 Johannes Krampf 2019-05-23 08:08:39 UTC
Created attachment 144329 [details]
Dmesg of drm-tip with fastboot on T440s

This is drm-tip version 307cedb7b907ee533bf9e746d0e06bea04f2722b from Thu May 23 12:49:55 2019 +1000. I used drm.debug=0xe on the kernel flags as requested. Previously I had 0x1e.

The behaviour changed slightly with drm-tip:

On startup, I still get the sub-second flash with boot messages and then the screen _including the backlight_ turns off. I can interact with the system (wayland+VT), but get no screen output.

Please tell me if there's any other information I can provide (video of boot process?) and I'll try to provide it.
Comment 19 Ville Syrjala 2019-05-23 15:10:02 UTC
(In reply to Johannes Krampf from comment #18)
> Created attachment 144329 [details]
> Dmesg of drm-tip with fastboot on T440s
> 
> This is drm-tip version 307cedb7b907ee533bf9e746d0e06bea04f2722b from Thu
> May 23 12:49:55 2019 +1000. I used drm.debug=0xe on the kernel flags as
> requested. Previously I had 0x1e.
> 
> The behaviour changed slightly with drm-tip:
> 
> On startup, I still get the sub-second flash with boot messages and then the
> screen _including the backlight_ turns off. I can interact with the system
> (wayland+VT), but get no screen output.

OK. I guess we're dealing with a backlight problem at this point.

We do see the telltale signs here:
[    0.910355] [drm:lpt_setup_backlight] CPU backlight register was enabled, switching to PCH override

The code was supposed to be fixed so that it can do the CPU->PCH switch but it looks like it's still not working correctly.
Comment 20 Ville Syrjala 2019-05-23 16:17:11 UTC
I think we need to check how the BIOS has programmed the backlight. Please boot without loading i915, and then do the following:
intel_reg read 0x48250 0x48254 0x48350 0x48354 0x48360 0x48260 0x48264 0x48268 0x48400 0xc8250 0xc8254

You can get intel_reg from igt-gpu-tools/intel-gpu-tools.
Comment 21 Johannes Krampf 2019-05-23 18:42:29 UTC
I booted into the Arch Linux provided 5.1.3 kernel with module_blacklist=i915 on the kernel parameters and verified that there was no i915 in lsmod output.

Output of `intel_reg read 0x48250 0x48254 0x48350 0x48354 0x48360 0x48260 0x48264 0x48268 0x48400 0xc8250 0xc8254` without i915:

```
Error: /usr/share/igt-gpu-tools/registers/common_display.txt:1: ('CPU_VGACNTRL', '0x00041000', '')
Error: /usr/share/igt-gpu-tools/registers/haswell:1: common_display.txt
Warning: reading '/usr/share/igt-gpu-tools/registers/haswell' failed. Using builtin register spec.
                   BLC_PWM_CPU_CTL2 (0x00048250): 0xe0000000 (enable 1, pipe EDP, blinking 0, granularity 128)
                    BLC_PWM_CPU_CTL (0x00048254): 0x03540354 (cycle 852, freq 852)
                  BLC_PWM2_CPU_CTL2 (0x00048350): 0x60000000 (enable 0, pipe EDP, blinking 0, granularity 128)
                   BLC_PWM2_CPU_CTL (0x00048354): 0x00000000 (cycle 0, freq 0)
                       BLC_MISC_CTL (0x00048360): 0x00000000 (PWM1-PCH PWM2-CPU)
                                    (0x00048260): 0x00000002
                                    (0x00048264): 0x00000000
                                    (0x00048268): 0x00000000
                       UTIL_PIN_CTL (0x00048400): 0x00000000 (enable 0, transcoder A, mode data, data 0 inverted polarity 0)
                   BLC_PWM_PCH_CTL1 (0x000c8250): 0x80000000 (enable 1, override 0, inverted polarity 0)
                   BLC_PWM_PCH_CTL2 (0x000c8254): 0x03540354 (freq 852, cycle 852)
```

Values when running with the module i915 loaded:

```
Error: /usr/share/igt-gpu-tools/registers/common_display.txt:1: ('CPU_VGACNTRL', '0x00041000', '')
Error: /usr/share/igt-gpu-tools/registers/haswell:1: common_display.txt
Warning: reading '/usr/share/igt-gpu-tools/registers/haswell' failed. Using builtin register spec.
                   BLC_PWM_CPU_CTL2 (0x00048250): 0x60000000 (enable 0, pipe EDP, blinking 0, granularity 128)
                    BLC_PWM_CPU_CTL (0x00048254): 0x03540354 (cycle 852, freq 852)
                  BLC_PWM2_CPU_CTL2 (0x00048350): 0x60000000 (enable 0, pipe EDP, blinking 0, granularity 128)
                   BLC_PWM2_CPU_CTL (0x00048354): 0x00000000 (cycle 0, freq 0)
                       BLC_MISC_CTL (0x00048360): 0x00000000 (PWM1-PCH PWM2-CPU)
                                    (0x00048260): 0x00000001
                                    (0x00048264): 0x00000000
                                    (0x00048268): 0x00000000
                       UTIL_PIN_CTL (0x00048400): 0x00000000 (enable 0, transcoder A, mode data, data 0 inverted polarity 0)
                   BLC_PWM_PCH_CTL1 (0x000c8250): 0xc0000000 (enable 1, override 1, inverted polarity 0)
                   BLC_PWM_PCH_CTL2 (0x000c8254): 0x03540130 (freq 852, cycle 304)
```
Comment 22 Ville Syrjala 2019-05-31 17:18:30 UTC
Nothing remarkable in the backlight setup.

Hmm. Looks like the BIOS is using SPLL for eDP. We do seem to leave that correctly enabled, but maybe we're turning off its reference by mistake.
It is using the SSC reference by the looks of it, but the question which one.

What does 'intel_reg read 0x42004' say?

Assuming it's using the PCH SSC reference this might help:
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -15342,7 +15342,7 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
                        intel_encoder_clones(encoder);
        }
 
-       intel_init_pch_refclk(dev_priv);
+       //intel_init_pch_refclk(dev_priv);
 
        drm_helper_move_panel_connectors_to_head(&dev_priv->drm);
 }
Comment 23 Ville Syrjala 2019-05-31 17:19:45 UTC
(In reply to Ville Syrjala from comment #22)
> Nothing remarkable in the backlight setup.
> 
> Hmm. Looks like the BIOS is using SPLL for eDP. We do seem to leave that
> correctly enabled, but maybe we're turning off its reference by mistake.
> It is using the SSC reference by the looks of it, but the question which one.
> 
> What does 'intel_reg read 0x42004' say?

Doh. Make that 'intel_reg read 0x42014'
Comment 24 Johannes Krampf 2019-06-03 06:41:53 UTC
After commenting out `intel_init_pch_refclk(dev_priv);` I was able to boot successfully on drm-tip 307cedb7b907ee533bf9e746d0e06bea04f2722b from 23 May (freedesktop git seems to be down, I couldn't update). It seems your suspicion is correct. :-)

Running `intel_reg read 0x42014` gives me the same value when booting Arch Linux kernel 5.1.6 (with and without loading i915) and with drm-tip and fastboot:

```
# intel_reg read 0x42014
Error: /usr/share/igt-gpu-tools/registers/common_display.txt:1: ('CPU_VGACNTRL', '0x00041000', '')
Error: /usr/share/igt-gpu-tools/registers/haswell:1: common_display.txt
Warning: reading '/usr/share/igt-gpu-tools/registers/haswell' failed. Using builtin register spec.
                                    (0x00042014): 0x21000002
```
Comment 25 Johannes Krampf 2019-06-03 06:43:24 UTC
To clarify: I get the same register value with the patched drm-tip and fastboot, I didn't try unpatched drm-tip.
Comment 26 Ville Syrjala 2019-06-04 16:54:21 UTC
Created attachment 144444 [details] [review]
[PATCH] drm/i915: Do not touch the PCH SSC reference if a PLL is  using it

This should avoid clobbering the PCH SSC reference during driver load.

Please test and post the resulting dmesg with drm.debug=0xe so that I can confirm the logic works as intended.
Comment 27 Johannes Krampf 2019-06-04 19:44:04 UTC
Created attachment 144452 [details]
Dmesg of drm-tip fastboot with patch "Do not touch the PCH SSC..."

I synced to the most recent drm-tip, applied the patch and was able to boot with fastboot and graphical output working.

I've attached the dmesg output with drm.debug=0xe.
Comment 28 Ville Syrjala 2019-06-12 12:00:10 UTC
(In reply to Johannes Krampf from comment #27)
> Created attachment 144452 [details]
> Dmesg of drm-tip fastboot with patch "Do not touch the PCH SSC..."
> 
> I synced to the most recent drm-tip, applied the patch and was able to boot
> with fastboot and graphical output working.
> 
> I've attached the dmesg output with drm.debug=0xe.

Nice. Thanks for testing.

Fix is in:
commit b16c7ed95caf270075c52faad0af8f4cb57ae979
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Tue Jun 4 23:09:29 2019 +0300

    drm/i915: Do not touch the PCH SSC reference if a PLL is using it


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.