Re: ThinkPad X1 Carbon gen 13, blank screen with inteldrm enabled, -current May 2026
Mikolaj Kucharski <[email protected]> Fri, 22 May 2026 18:33:06 +0000
| Newsgroups | gmane.os.openbsd.bugs |
|---|---|
| Message-ID | <[email protected]> |
Hi Jonathan. On Sat, May 23, 2026 at 12:37:30AM +1000, Jonathan Gray wrote: > On Fri, May 22, 2026 at 12:26:05PM +0000, Mikolaj Kucharski wrote: > > >Synopsis: Fresh install ends up with blank screen, disabling inteldrm brings console back. > > >Category: kernel > > >Environment: > > System : OpenBSD 7.9 > > Details : OpenBSD 7.9-current (GENERIC.MP) #501: Thu May 21 19:28:37 MDT 2026 > > [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP > > > > Architecture: OpenBSD.amd64 > > Machine : amd64 > > >Description: > > OpenBSD fresh install, every boot with non-modified GENERIC.MP. Initial dmesg is visible. Blue > > background, white font progresses with boot up. The moment filesystem is mounted and firmware files are > > fetchable screen goes dark pitch black. System boots up as I can SSH into the laptop and from inside all > > seems to be good. Except no glass console. > > >How-To-Repeat: > > Fresh install of OpenBSD/amd64 on ThinkPad X1 Carbon Gen 13 Aurora Edition. > > >Fix: > > Unknown. Workaround is to boot -c and `disable inteldrm*`. Below are details fetched over SSH with > > Does this diff to disable GuC submission (and low power states) > make the screen light up? > > Index: sys/dev/pci/drm/i915/i915_driver.c > =================================================================== > RCS file: /cvs/src/sys/dev/pci/drm/i915/i915_driver.c,v > diff -u -p -r1.30 i915_driver.c > --- sys/dev/pci/drm/i915/i915_driver.c 30 Apr 2026 04:33:06 -0000 1.30 > +++ sys/dev/pci/drm/i915/i915_driver.c 22 May 2026 14:27:18 -0000 > @@ -2322,12 +2322,10 @@ inteldrm_attach(struct device *parent, s > > dev_priv->display = display; > > - /* > - * with GuC submission, init sometimes fails on Alder Lake-P > - * and Raptor Lake-S, too early for IS_ALDERLAKE > - */ > - if (info->platform == INTEL_ALDERLAKE_P || > - info->platform == INTEL_ALDERLAKE_S) > + /* uc_expand_default_options() with no GuC submission */ > + if (GRAPHICS_VER(dev_priv) >= 12 && > + (INTEL_INFO(dev_priv)->platform != INTEL_TIGERLAKE) && > + (INTEL_INFO(dev_priv)->platform != INTEL_ROCKETLAKE)) > dev_priv->params.enable_guc = ENABLE_GUC_LOAD_HUC; > > mmio_bar = (GRAPHICS_VER(dev_priv) == 2) ? 0x14 : 0x10; > Index: sys/dev/pci/drm/i915/i915_pci.c > =================================================================== > RCS file: /cvs/src/sys/dev/pci/drm/i915/i915_pci.c,v > diff -u -p -r1.25 i915_pci.c > --- sys/dev/pci/drm/i915/i915_pci.c 9 Mar 2026 23:58:01 -0000 1.25 > +++ sys/dev/pci/drm/i915/i915_pci.c 22 May 2026 14:21:40 -0000 > @@ -771,7 +771,7 @@ static const struct intel_device_info mt > .has_flat_ccs = 0, > .has_gmd_id = 1, > .has_guc_deprivilege = 1, > - .has_guc_tlb_invalidation = 1, > + .has_guc_tlb_invalidation = 0, > .has_llc = 0, > .has_mslice_steering = 0, > .has_snoop = 1, > Above diff didn't help. After booting with your diff, I then did following change: Index: sys/dev/pci/drm/i915/i915_driver.c =================================================================== RCS file: /cvs/src/sys/dev/pci/drm/i915/i915_driver.c,v diff -u -p -u -r1.30 i915_driver.c --- sys/dev/pci/drm/i915/i915_driver.c 30 Apr 2026 04:33:06 -0000 1.30 +++ sys/dev/pci/drm/i915/i915_driver.c 22 May 2026 18:31:12 -0000 @@ -2322,13 +2322,16 @@ inteldrm_attach(struct device *parent, s dev_priv->display = display; - /* - * with GuC submission, init sometimes fails on Alder Lake-P - * and Raptor Lake-S, too early for IS_ALDERLAKE - */ - if (info->platform == INTEL_ALDERLAKE_P || - info->platform == INTEL_ALDERLAKE_S) + printf("MMM %s: drm graphics_ver=%d platform=%d\n", __func__, GRAPHICS_VER(dev_priv), INTEL_INFO(dev_priv)->platform); + /* uc_expand_default_options() with no GuC submission */ + if (GRAPHICS_VER(dev_priv) >= 12 && + (INTEL_INFO(dev_priv)->platform != INTEL_TIGERLAKE) && + (INTEL_INFO(dev_priv)->platform != INTEL_ROCKETLAKE)) { dev_priv->params.enable_guc = ENABLE_GUC_LOAD_HUC; + printf("MMM %s: drm enable_guc=%d (inside if-statment)\n", __func__, dev_priv->params.enable_guc); + } else { + printf("MMM %s: drm enable_guc=%d (outside if-statment)\n", __func__, dev_priv->params.enable_guc); + } mmio_bar = (GRAPHICS_VER(dev_priv) == 2) ? 0x14 : 0x10; Index: sys/dev/pci/drm/i915/i915_pci.c =================================================================== RCS file: /cvs/src/sys/dev/pci/drm/i915/i915_pci.c,v diff -u -p -u -r1.25 i915_pci.c --- sys/dev/pci/drm/i915/i915_pci.c 9 Mar 2026 23:58:01 -0000 1.25 +++ sys/dev/pci/drm/i915/i915_pci.c 22 May 2026 18:31:12 -0000 @@ -771,7 +771,7 @@ static const struct intel_device_info mt .has_flat_ccs = 0, .has_gmd_id = 1, .has_guc_deprivilege = 1, - .has_guc_tlb_invalidation = 1, + .has_guc_tlb_invalidation = 0, .has_llc = 0, .has_mslice_steering = 0, .has_snoop = 1, dmesg says with above patch: drm0 at inteldrm0 MMM inteldrm_attach: drm graphics_ver=12 platform=37 MMM inteldrm_attach: drm enable_guc=2 (inside if-statment) inteldrm0: msi, METEORLAKE, gen 12 -- Regards, Mikolaj