Re: Alder Lake ghosting after wscons screen burner (derived from "Re: Intel GPU, ghosting after zzz or ZZZ")

Walter Alejandro Iglesias <[email protected]>
Newsgroups gmane.os.openbsd.tech
Message-ID <[email protected]>
+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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.