On Tue, Apr 30, 2024 at 09:31:47AM -0500, Nathaniel Griswold wrote:
> 
> >Synopsis: Assertion !cold failed in drm after console ctrl-alt-del
> >Category: system
> >Environment:
> System      : OpenBSD 7.5
> Details     : OpenBSD 7.5 (GENERIC.MP) #82: Wed Mar 20 15:48:40 MDT 2024
>  dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP
> 
> Architecture: OpenBSD.amd64
> Machine     : amd64
> >Description:
> I was rebooting my system with ctrl-alt-del and got a panic. I believe i had 
> switched to
> a different console and possibly back in the meantime. xenodm was disabled. I 
> have intel_drm.
> >How-To-Repeat:
> 1) ctrl-alt-del on console
> 2) possibly switch consoles
> 3) possibly switch back

thanks for the report

for the archives, trace from the photo:

panic: kernel diagnostic assertion "!cold" failed: file 
"/usr/src/sys/dev/pci/drm/include/linux/completion.h", line 89
db_enter+0x14
panic+0xc3
__assert+0x29
drm_atomic_helper_swap_state+0x646
intel_atomic_commit+0x162
drm_atomic_commit+0xa7
drm_client_modeset_commit_atomic+0x178
drm_client_modeset_commit_locked+0x5a
drm_fb_helper_restore_fbdev_mode_unlocked+0x48
intel_fbdev_restore_mode+0x37
inteldrm_show_screen+0x88
wsdisplay_switch1+0xbc
internal_command+0x2b2
wskbd_translate+0xdf

drm code isn't able to handle requests when cold.  That is
partly why all drm drivers use config_mountroot().

Index: sys/dev/pci/drm/drm_fb_helper.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/drm_fb_helper.c,v
diff -u -p -r1.38 drm_fb_helper.c
--- sys/dev/pci/drm/drm_fb_helper.c     5 Apr 2024 14:31:57 -0000       1.38
+++ sys/dev/pci/drm/drm_fb_helper.c     1 May 2024 01:47:05 -0000
@@ -242,6 +242,10 @@ __drm_fb_helper_restore_fbdev_mode_unloc
                return 0;
 
 #ifdef __OpenBSD__
+       /* if we can't sleep, return */
+       if (cold)
+               return -ENXIO;
+
        force = true;
 #endif
 

Reply via email to