From: Walter Alejandro Iglesias Subject: Re: Intel GPU, ghosting after zzz or ZZZ To: Vitaliy Makkoveev Cc: tech@openbsd.org Date: Tue, 26 May 2026 21:37:06 +0200 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. > > 2. With my diff this half line always presents. > > 3. With your diff below this half line always absent. > > > > > > > Yes. > > > > > > > > > > > > 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? > > > > > > > > > > No output until Ctl + Alt + F* switch. For example I type 'ls' and > > > nothing happens. However, after Ctl + Alt + F* switch the 'ls' and > > > it's output appears on console. After this Ctl + Alt + F* switch > > > sequence console works as it does. > > > > > > Screen off/on ttyC0 -> Console without garbage but no output -> > > > Ctl + Alt + F2 -> Ctl + Alt + F1 -> ttyC0 works fine. > > > > > > The console could be ttyC1, ttyC2 - there behavior is the same. > > > > > > > > > > > > > > > > > > > > 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 > > > > -- > > Walter > > -- Walter