On Sat, Mar 01, 2025 at 06:43:17PM +0100, Marcus Glocker wrote:
> >Synopsis:    ThinkPad X1 screen turns occasionally black
> >Category:    video inteldrm
> >Environment:
>       System      : OpenBSD 7.6
>       Details     : OpenBSD 7.6-current (GENERIC.MP) #14: Sat Mar  1 14:53:36 
> CET 2025
>                        [email protected]:/sys/arch/amd64/compile/GENERIC.MP
> 
>       Architecture: OpenBSD.amd64
>       Machine     : amd64
> >Description:
>       In X11, the screen of my ThinkPad X1 will occasionally turn black.
>       The only way to recover, is to switch to console, and back to X11.
>       After that, follwing lines are printed on the console:
> 
>       drm_gem_plane_helper_prepare_fb: explicit fence not handled
>       drm_gem_plane_helper_prepare_fb: explicit fence not handled

what are you running in X when this happens?

try this:

Index: sys/dev/pci/drm/drm_gem_atomic_helper.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/drm_gem_atomic_helper.c,v
diff -u -p -r1.2 drm_gem_atomic_helper.c
--- sys/dev/pci/drm/drm_gem_atomic_helper.c     1 Jan 2023 01:34:34 -0000       
1.2
+++ sys/dev/pci/drm/drm_gem_atomic_helper.c     2 Mar 2025 03:28:20 -0000
@@ -20,14 +20,13 @@ drm_gem_plane_helper_prepare_fb(struct d
                obj = dps->fb->obj[0];
                if (obj == NULL)
                        return -EINVAL;
-               if (dps->fence) {
-                       printf("%s: explicit fence not handled\n", __func__);
-                       return -EINVAL;
-               }
                r = dma_resv_get_singleton(obj->resv, DMA_RESV_USAGE_WRITE, &f);
                if (r)
                        return r;
-               dps->fence = f;
+               if (dps->fence)
+                       dma_fence_put(f);
+               else
+                       dps->fence = f;
        }
 
        return 0;

Reply via email to