Kernel 4.15.0-47 broke external monitors on Lenovo ultradock displayports


I know I'm going to need to do a kernel bisection to figure out why this happened, but as a hail mary, I figured I'd do the lazy thing and ask here if someone else has the problem and has solved it.

I have a Thinkpad P50 with one of those wedge ultradocks that the laptop sits on, and it has a couple of displayport ports which have external monitors hooked up. This setup worked fine until 4.15.0-47, and now fails. When X starts, there is no display on any exernal monitor nor on the internal display, and I need to do a hard restart or ssh in to get it going again. If I boot to 4.15.0-46 it works as expected. Anybody else?


It turns out that this is intermittent. Trying to boot into -47 while the PC is in the dock in discrete mode locks the system up hard most of the time (can't use the keyboard nor ssh to it), but every so often it actually works and the greeter is displayed. I investigated the output in /var/log/lightdm/lightdm.log and it appears to be an X problem of some kind, as when it locks up, lightdm is trying to start X and then just stops spewing log ouput.

There is a lame workaround. If I do "systemctl disable lightdm" and boot into the -47 kernel into a bare console, then do "service lightdm start" from that console, it works every time. Must be some kind of timing issue. This is even worse from an actually-solving-it perspective because it's a heisenbug (it can't be reproduced while you're in a position to inspect it). Good times.