From: Walter Alejandro Iglesias Subject: Re: Alder Lake ghosting after wscons screen burner (derived from "Re: Intel GPU, ghosting after zzz or ZZZ") To: Vitaliy Makkoveev Cc: Mark Kettenis , Jonathan Gray , tech@openbsd.org Date: Thu, 28 May 2026 21:20:51 +0200 +kettenis@ On Thu, May 28, 2026 at 09:05:08PM +0300, Vitaliy Makkoveev wrote: > On Thu, May 28, 2026 at 12:48:37PM +0200, Walter Alejandro Iglesias wrote: > > On Wed, May 27, 2026 at 08:51:29PM +0300, Vitaliy Makkoveev wrote: > > > On Wed, May 27, 2026 at 07:27:47PM +0200, Walter Alejandro Iglesias wrote: > > > > > > > > I found a function defined in ../drm/drm_fb_helper.c, > > > > drm_fb_helper_restore_fbdev_mode_unlocked() which restores the entire > > > > fbdev display mode (including size). > > > > > > > > > > Thanks, this diff completely fixes my issue. ok mvs@ > > > > > > > Index: i915_driver.c > > > > =================================================================== > > > > RCS file: /cvs/src/sys/dev/pci/drm/i915/i915_driver.c,v > > > > diff -u -p -u -p -r1.30 i915_driver.c > > > > --- i915_driver.c 30 Apr 2026 04:33:06 -0000 1.30 > > > > +++ i915_driver.c 27 May 2026 13:32:34 -0000 > > > > @@ -2154,8 +2154,14 @@ inteldrm_burner_cb(void *arg1) > > > > struct drm_i915_private *dev_priv = arg1; > > > > struct drm_device *dev = &dev_priv->drm; > > > > struct drm_fb_helper *helper = dev->fb_helper; > > > > + struct rasops_info *ri = &dev_priv->ro; > > > > > > > > drm_fb_helper_blank(dev_priv->burner_fblank, helper->info); > > > > + > > > > + if (dev_priv->burner_fblank == FB_BLANK_UNBLANK) { > > > > + drm_fb_helper_restore_fbdev_mode_unlocked(helper); > > > > + rasops_show_screen(ri, ri->ri_active, 0, NULL, NULL); > > > > + } > > > > } > > > > > > > > int > > > > > > To confirm your Alder Lake suffers from two different issues. I'd like > > to know what happens if we remove rasops_show_screen from the diff. > > This should avoid the Alder Lake half-line on top but not the ghosting. > > > > No ghosting, no half-line. On both machines. Then that function alone does the trick. It does a full reset. If kettenis@ gives us at least some clue of where is the right place to fix this, I'll try to investigate a new way. > > > > > Index: i915_driver.c > > =================================================================== > > RCS file: /cvs/src/sys/dev/pci/drm/i915/i915_driver.c,v > > diff -u -p -u -p -r1.30 i915_driver.c > > --- i915_driver.c 30 Apr 2026 04:33:06 -0000 1.30 > > +++ i915_driver.c 28 May 2026 10:41:46 -0000 > > @@ -2156,6 +2156,8 @@ inteldrm_burner_cb(void *arg1) > > struct drm_fb_helper *helper = dev->fb_helper; > > > > drm_fb_helper_blank(dev_priv->burner_fblank, helper->info); > > + if (dev_priv->burner_fblank == FB_BLANK_UNBLANK && helper) > ^^^^^^ > This check is useless, we have `helper' dereference in previous line. Yeah, right. > > + drm_fb_helper_restore_fbdev_mode_unlocked(helper); > > } > > > > int > > > > > > > > > > -- > > Walter -- Walter