Index | Thread | Search

From:
Walter Alejandro Iglesias <wai@roquesor.com>
Subject:
Re: Intel GPU, ghosting after zzz or ZZZ
To:
Vitaliy Makkoveev <mvs@openbsd.org>
Cc:
tech@openbsd.org
Date:
Tue, 26 May 2026 20:00:58 +0200

Download raw body.

Thread
On Tue, May 26, 2026 at 08:28:42PM +0300, Vitaliy Makkoveev wrote:
> On Tue, May 26, 2026 at 10:12:31AM +0200, Walter Alejandro Iglesias wrote:
> > Vitaliy,
> > 
> > > On Mon, May 25, 2026 at 10:00:44PM +0300, Vitaliy Makkoveev wrote:
> > > > I also have the problem with wscons screen burner on ALDERLAKE. I don't
> > > > know how describe it, so the screeshot [1]. After screen unblan, the
> > > > output happens only in upper left corner, the upper half of the first
> > > > line. The other screen contains garbage.
> > > > 
> > 
> > Just to clear up a doubt.  Could you try the diff below, please?
> > 
> > This diff flips the order in which rasops_show_screen and
> > drm_client_dev_restore are called.  Notice inteldrm_doswitch is called
> > before inteldrm_burner_cb:
> > 
> > void
> > inteldrm_attachhook(struct device *self)
> > {
> > ...
> > 	task_set(&dev_priv->switchtask, inteldrm_doswitch, dev_priv);
> > 	task_set(&dev_priv->burner_task, inteldrm_burner_cb, dev_priv);
> > 
> > 
> 
> With this diff after screen on, my ALDERLAKE machine has no garbage on
> screen, screen is the same as it was before screen off.

So, the weird half line from the picture does not happen?

> It has no output
> on screen until I do tty switch with Ctl + Alt + F*. After tty switch
> everything works as before sceen burner.

Do you mean that the console is unresponsive?

> 
> > 
> > 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	26 May 2026 07:57:22 -0000
> > @@ -2077,8 +2077,8 @@ inteldrm_doswitch(void *v)
> >  	struct drm_device *dev = &dev_priv->drm;
> >  	struct rasops_info *ri = &dev_priv->ro;
> >  
> > -	rasops_show_screen(ri, dev_priv->switchcookie, 0, NULL, NULL);
> >  	drm_client_dev_restore(dev);
> > +	rasops_show_screen(ri, dev_priv->switchcookie, 0, NULL, NULL);
> >  
> >  	if (dev_priv->switchcb)
> >  		(*dev_priv->switchcb)(dev_priv->switchcbarg, 0, 0);
> > @@ -2094,8 +2094,8 @@ inteldrm_enter_ddb(void *v, void *cookie
> >  	if (cookie == ri->ri_active)
> >  		return;
> >  
> > -	rasops_show_screen(ri, cookie, 0, NULL, NULL);
> >  	drm_client_dev_restore(dev);
> > +	rasops_show_screen(ri, cookie, 0, NULL, NULL);
> >  }
> >  
> >  int
> > 
> > 
> > -- 
> > Walter
> > 

-- 
Walter