Index | Thread | Search

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

Download raw body.

Thread
On Tue, May 26, 2026 at 09:37:06PM +0200, Walter Alejandro Iglesias wrote:
> On Tue, May 26, 2026 at 09:53:58PM +0300, Vitaliy Makkoveev wrote:
> > On Tue, May 26, 2026 at 08:43:48PM +0200, Walter Alejandro Iglesias wrote:
> > > On Tue, May 26, 2026 at 06:29:32PM +0000, Vitaliy Makkoveev wrote:
> > > > On Tue, May 26, 2026 at 08:00:58PM +0200, Walter Alejandro Iglesias wrote:
> > > > > 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?
> > > 
> > > This happens without your diff?  I mean, this half line is a side effect
> > > of your diff?
> > > 
> > 
> > We have 3 cases:
> > 
> >  1. Without any diffs this half line always presents.
> 
> I wanted to be sure that was not consequence of calling
> rapsops_show_screen.
> 
> The Ctl+Alt+F* switching was to verify if what you're dealing with is
> what I described as ghosting.  Let me show you my case:
> 
>    https://en.roquesor.com/Downloads/ghosting/original.jpg
> 
> You'll see in the next image parts of the 'cal -y' output overlapping
> valid output (the kernel messages are another unrelated issue):
> 
>    https://en.roquesor.com/Downloads/ghosting/after_resume.jpg
> 
> After switching to and back from another tty (Ctl+Alt+F*) the ghosting
> goes away:
> 
>    https://en.roquesor.com/Downloads/ghosting/after_switching_tty.jpg
> 
> My suspicion is that the weird half line in your Alder Lake is a
> different issue.  We have to find out what causes it.  Anyways, what
> fixes one version of the Intel GPU can break another; what you are
> telling me now, that moving rasops_show_screen after
> drm_client_dev_restore leaves your console without output, makes me
> doubt my original patch.
> 

I have two machines. The behavior you described above is absolutely
identical to my GEMINILAKE machine, except it happens not after zzz
(I never used it, so may be all is the same), but after wscons screen
burner.

Your initial diff for this thread calls rasops_show_screen() in the
DVACT_WAKEUP case of inteldrm_activate(), so I decided to call it
inteldrm_burner_cb(). This diff fixed my GEMINILAKE lake machine. I
explicitly wrote about this in my first message in this thread.

Index: sys/dev/pci/drm/i915/i915_driver.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/i915/i915_driver.c,v
retrieving revision 1.30
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	26 May 2026 17:03:06 -0000
@@ -2154,8 +2154,10 @@ 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);
+	rasops_show_screen(ri, ri->ri_active, 0, NULL, NULL);
 }
 
 int