Thinkpad + Optimus + dock + multiple monitors = apocalypse

Hi, all. I haven’t posted here for ages so please be gentle. Been using Tumbleweed for years with no problems I couldn’t solve on my own, but new computer brings new troubles.

The machine is a Thinkpad P51 with nVidia Quadro M2200 and an integrated Intel graphics. Been using it for a few months with the panel only with no problems at all. Also plugged a monitor into the HDMI port once or twice, again, no problems. Adding a docking station and trying to use it with two monitors broke everything though. Works just fine with one monitor, but the other one either has no signal, shows only garbled image or mirrors the first one with a lot of tear on both.

A working setup with only a single monitor on looks like this:


@linux-39re:~> xrandr --listproviders --listmonitors
Providers: number : 2
Provider 0: id: 0xa8; cap: 0xf (Source Output, Sink Output, Source Offload, Sink Offload); crtcs: 3; outputs: 1; associated providers: 1; name: modesetting
    output eDP-1
Provider 1: id: 0x69; cap: 0x7 (Source Output, Sink Output, Source Offload); crtcs: 4; outputs: 6; associated providers: 1; name: nouveau
    output DP-1-1
    output DP-1-2
    output DP-1-3
    output DP-1-4
    output DP-1-5
    output DP-1-6
Monitors: 2
 0: +*DP-1-5 1920/518x1200/324+0+0  DP-1-5
 1: +eDP-1 1920/344x1080/194+1920+120  eDP-1

Not sure what modesetting means. That my panel is on the Intel graphics? I know nouveau switched off modesetting recently.

The first docking monitor will always get DP-1-5 assigned, the second DP-1-4, regardless of which one of the 5 ports they are plugged into. A monitor plugged into laptop port will get DP-1-2.

@linux-39re:~> sudo hwinfo --gfxcard says:


13: PCI 100.0: 0302 3D controller                                
  [Created at pci.386]
  Unique ID: VCu0.wXJ7vQ3oQJ7
  Parent ID: vSkL.pTnfu8pCn94
  SysFS ID: /devices/pci0000:00/0000:00:01.0/0000:01:00.0
  SysFS BusID: 0000:01:00.0
  Hardware Class: graphics card
  Model: "nVidia GM206GLM [Quadro M2200 Mobile]"
  Vendor: pci 0x10de "nVidia Corporation"
  Device: pci 0x1436 "GM206GLM [Quadro M2200 Mobile]"
  SubVendor: pci 0x17aa "Lenovo"
  SubDevice: pci 0x224d  
  Revision: 0xa1
  Driver: "nouveau"
  Driver Modules: "nouveau"
  Memory Range: 0xeb000000-0xebffffff (rw,non-prefetchable)
  Memory Range: 0xc0000000-0xcfffffff (ro,non-prefetchable)
  Memory Range: 0xd0000000-0xd1ffffff (ro,non-prefetchable)
  I/O Ports: 0xd000-0xdfff (rw)
  Memory Range: 0xec000000-0xec07ffff (ro,non-prefetchable,disabled)
  IRQ: 134 (260954 events)
  Module Alias: "pci:v000010DEd00001436sv000017AAsd0000224Dbc03sc02i00"
  Driver Info #0:
    Driver Status: nouveau is active
    Driver Activation Cmd: "modprobe nouveau"
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #11 (PCI bridge)

26: PCI 02.0: 0300 VGA compatible controller (VGA)
  [Created at pci.386]
  Unique ID: _Znp.dboVTSVyj00
  SysFS ID: /devices/pci0000:00/0000:00:02.0
  SysFS BusID: 0000:00:02.0
  Hardware Class: graphics card
  Model: "Intel HD Graphics P630"
  Vendor: pci 0x8086 "Intel Corporation"
  Device: pci 0x591d "HD Graphics P630"
  SubVendor: pci 0x17aa "Lenovo"
  SubDevice: pci 0x224d  
  Revision: 0x04
  Driver: "i915"
  Driver Modules: "i915"
  Memory Range: 0x2ff2000000-0x2ff2ffffff (rw,non-prefetchable)
  Memory Range: 0x2fc0000000-0x2fcfffffff (ro,non-prefetchable)
  I/O Ports: 0xe000-0xe03f (rw)
  Memory Range: 0x000c0000-0x000dffff (rw,non-prefetchable,disabled)
  IRQ: 133 (1429336 events)
  Module Alias: "pci:v00008086d0000591Dsv000017AAsd0000224Dbc03sc00i00"
  Driver Info #0:
    Driver Status: i915 is active
    Driver Activation Cmd: "modprobe i915"
  Config Status: cfg=new, avail=yes, need=no, active=unknown

Primary display adapter: #26

Using the monitor layout f key on the laptop (fn + f7) or win + p (discovered by a friend who though I was on windows just because it’s a PC :’() will break everything. None of the monitors is selected as primary and there will be a lot of tearing on all of them.

Using kscreen or arandr, I get the problems explained above when trying to turn on the second external monitor.

I also get a “Nouveau: MMIO read of 00000000 FAULT at 022554” error at boot. Not idea what that means.

/var/log/Xorg.0.log looks like this when turning on the second external with kscreen or arandr:


  3686.454] (II) modeset(0): EDID vendor "LGD", prod id 1424
  3686.454] (II) modeset(0): Printing DDC gathered Modelines:
  3686.454] (II) modeset(0): Modeline "1920x1080"x0.0  138.70  1920 1968 2000 2080  1080 1083 1088 1111 +hsync -vsync (66.7 kHz eP)
  3686.454] (II) modeset(0): Modeline "1920x1080"x0.0  114.46  1920 1968 2000 2164  1080 1083 1088 1102 +hsync -vsync (52.9 kHz e)
  3706.454] (II) modeset(0): Allocate new frame buffer 5768x1200 stride
  3706.518] failed to get BO with handle -1
  3706.526] randr: falling back to unsynchronized pixmap sharing
  3706.584] randr: falling back to unsynchronized pixmap sharing
  3706.584] resize called 3840 1200
  3707.267] (II) modeset(0): EDID vendor "LGD", prod id 1424
  3707.267] (II) modeset(0): Printing DDC gathered Modelines:
  3707.267] (II) modeset(0): Modeline "1920x1080"x0.0  138.70  1920 1968 2000 2080  1080 1083 1088 1111 +hsync -vsync (66.7 kHz eP)
  3707.267] (II) modeset(0): Modeline "1920x1080"x0.0  114.46  1920 1968 2000 2164  1080 1083 1088 1102 +hsync -vsync (52.9 kHz e)
  3707.268] (II) modeset(0): EDID vendor "LGD", prod id 1424
  3707.268] (II) modeset(0): Printing DDC gathered Modelines:
  3707.268] (II) modeset(0): Modeline "1920x1080"x0.0  138.70  1920 1968 2000 2080  1080 1083 1088 1111 +hsync -vsync (66.7 kHz eP)
  3707.268] (II) modeset(0): Modeline "1920x1080"x0.0  114.46  1920 1968 2000 2164  1080 1083 1088 1102 +hsync -vsync (52.9 kHz e)

Things I’ve tried:

  • Switch the monitor around, try different ports, different cables, etc
  • Switch from Hybrid to Discrete mode in BIOS (only nVidia graphics). Can’t boot at all. After Tumbleweed splash it goes back to Lenovo splash and is stuck forever.
  • Switch to proprietary drivers with suse-prime. External monitors not detected at all. Only the panel works. Discrete mode still freezing on boot.
  • With proprietary drivers, tried to replace suse-prime with bumblebee. Broke everything. Had to rollback with snapper.
  • Boot with no or only one of the monitors plugged in, the plug the other one(s) later. No difference.

Anyone have any idea about what’s wrong? Any help would be much appreciated. Having a monitor on my desk turned off is depressing af :frowning:

Under what driver configuration were you achieving this? I suspect you’d get the best result from configuring your optimus system with the nvidia drivers and use their configuration tool.

Your laptop has both thunderbolt and a legacy type dockng port on the bottom. From what you wrote, it reads like your using the latter variety, as opposed to a thunderbolt based dock. That said, while it is good to be able to get a full understanding of the exact setup, I don’t think the dock (either case) has any impact on the problem.

A working setup with only a single monitor on looks like this:
Looks like a pretty standard optimus setup:

  • laptop panel connected to integrated intel adapter
  • laptop’s hdmi and displayport outputs connected to the discrete nvidia adapter … additional outputs (supplied via the dock) are connected to the nvidia adapter

Not sure what modesetting means. That my panel is on the Intel graphics? I know nouveau switched off modesetting recently.
it refers to the (built into the Xserver) modesetting xorg driver … simplistically, the graphics driver stack under X consists of the kernel driver, xorg driver and the 3d/opengl driver … with intel hardware that’s i915, intel, and i965 respectively … only, the intel xorg driver hasn’t seen a new release in eons now, so the modesetting driver is being used instead … for the nvidia hardware, the oss stack is nouveau, nouveau, and whatever the 3d driver is for your hardware (you can get a concise summary of your system from installing inxi and then running the command “inxi -SGxx”)

I also get a “Nouveau: MMIO read of 00000000 FAULT at 022554” error at boot. Not idea what that means.
it’s a message from the nouveau kernel driver regarding memory mapped input output in relation to the register hex address 022554 on your nvidia device … Your particular device probably doesn’t have such address. You should report this to bugzilla and hopefully this can get fixed in a future kernel

/var/log/Xorg.0.log looks like this when turning on the second external with kscreen or arandr:

3706.518] failed to get BO with handle -1
3706.526] randr: falling back to unsynchronized pixmap sharing
looks like the modesetting driver is reporting a buffer objects problem

Things I’ve tried:

  • Switch the monitor around, try different ports, different cables, etc
  • Switch from Hybrid to Discrete mode in BIOS (only nVidia graphics). Can’t boot at all. After Tumbleweed splash it goes back to Lenovo splash and is stuck forever.
  • Switch to proprietary drivers with suse-prime. External monitors not detected at all. Only the panel works. Discrete mode still freezing on boot.
  • With proprietary drivers, tried to replace suse-prime with bumblebee. Broke everything. Had to rollback with snapper.
  • Boot with no or only one of the monitors plugged in, the plug the other one(s) later. No difference.

Anyone have any idea about what’s wrong? Any help would be much appreciated. Having a monitor on my desk turned off is depressing af :frowning:

I’ll leave it to others to help you with your optimus configuration … I haven’t had “the pleasure” of dealing with such.