[REGRESSION][BISECTED] kernel panic is not displayed correctly in qemu (CONFIG_DRM_BOCHS)
Thomas Zimmermann
tzimmermann at suse.de
Wed Aug 13 09:06:18 UTC 2025
Hi
Am 10.07.25 um 06:21 schrieb Askar Safin:
> Steps to reproduce:
>
> - Build Linux v6.16-rc5 so:
>
> $ cat mini
> CONFIG_64BIT=y
>
> CONFIG_EXPERT=y
> CONFIG_EMBEDDED=y
>
> CONFIG_PRINTK=y
> CONFIG_PRINTK_TIME=y
>
> CONFIG_PCI=y
>
> CONFIG_TTY=y
> CONFIG_VT=y
> CONFIG_VT_CONSOLE=y
> CONFIG_DRM=y
> CONFIG_DRM_FBDEV_EMULATION=y
> CONFIG_DRM_BOCHS=y
> CONFIG_FRAMEBUFFER_CONSOLE=y
> CONFIG_PROC_FS=y
> $ make KCONFIG_ALLCONFIG=mini allnoconfig
> $ make
>
> - Then boot this Linux image in Qemu so:
>
> $ qemu-system-x86_64 -enable-kvm -m 1024 -daemonize -kernel arch/x86_64/boot/bzImage
>
> Kernel will (predictably) panic (because it has no initramfs, nor real disk), but actual panic message will not be shown!
>
> Last shown line is "Run /bin/sh as init process"
>
> My host OS is Debian Trixie. "uname -a":
>
> Linux receipt 6.12.33+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.33-1 (2025-06-19) x86_64 GNU/Linux
>
> Qemu version is:
>
> QEMU emulator version 10.0.2 (Debian 1:10.0.2+ds-1)
>
> Guest kernel is v6.16-rc5 x86_64.
>
> The problem doesn't reproduce on old guest kernels. I. e. old guest kernels actually show panic message.
>
> I did bisect, and bisect showed the following two commits:
>
> ===
>
> commit a6c3464f69cf5a8a31eb31cc436e7dbd325b8ff9
> Author: Thomas Zimmermann <tzimmermann at suse.de>
> Date: Thu Jun 13 09:30:33 2019 +0200
>
> drm/gem-vram: Support pinning buffers to current location
>
> Pinning a buffer prevents it from being moved to a different memory
> location. For some operations, such as buffer updates, it is not
> important where the buffer is located. Setting the pin function's
> pl_flag argument to 0 will pin the buffer to whereever it is stored.
>
> v2:
> * document pin flags in PRIME pin helper
>
> Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
> Acked-by: Gerd Hoffmann <kraxel at redhat.com>
> Link: https://patchwork.freedesktop.org/patch/msgid/20190613073041.29350-2-tzimmermann@suse.de
>
> commit 58540594570778fd149cd8c9b2bff61f2cefa8c9
> Author: Thomas Zimmermann <tzimmermann at suse.de>
> Date: Wed Jul 3 09:58:34 2019 +0200
>
> drm/bochs: Use shadow buffer for bochs framebuffer console
>
> The bochs driver (and virtual hardware) requires buffer objects to
> reside in video ram to display them to the screen. So it can not
> display the framebuffer console because the respective buffer object
> is permanently pinned in system memory.
>
> Using a shadow buffer for the console solves this problem. The console
> emulation will pin the buffer object only during updates from the shadow
> buffer. Otherwise, the bochs driver can freely relocated the buffer
> between system memory and video ram.
>
> v2:
> * select shadow FB via struct drm_mode_config.prefer_shadow_fbdev
>
> Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
> Acked-by: Noralf Trønnes <noralf at tronnes.org>
> Link: https://patchwork.freedesktop.org/patch/315833/
> Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>
>
> ===
>
> Commit a6c3464f69cf5a8a31e changed good behavior to absolutely wrong: after a6c3464f69cf5a8a31e I see just black screen.
> Then (after many commits) 58540594570778fd149 made screen working again, but now panics are not shown.
>
> So, result: all commits in range a6c3464f69cf5a8a31e .. 58540594570778fd149 are not testable (black screen), all commits before a6c3464f69cf5a8a31e
> are "good" (panic is shown) and all commits after 58540594570778fd149 (inclusive) (including v6.16-rc5) are "bad" (panic is not shown).
The bochs driver uses a shadow framebuffer. It's apparently not being
flushed to VRAM on kernel panics. You could try the new DRM panic screen
to make that happen.
Best regards
Thomas
>
> The next commit after 58540594570778fd149 is 5fd5d2b7c53de5a1290d82, thus correct regzbot instruction is:
>
> #regzbot introduced: a6c3464f69cf5a8a31e..5fd5d2b7c53de5a1290d82
>
> Config above is not special. It is result of minimizing standard Debian config.
>
> The bug is reproducible with standard Debian kernels (if we use them as guests).
>
> Reproduction steps are so:
> - Install Debian Trixie to Qemu VM
> - Boot it with "init=/bin/true" added (to cause kernel panic)
>
> You will not see panic message.
>
> I minimized this Debian bug to small config shown in the beginning of this letter.
>
> --
> Askar Safin
> https://types.pl/@safinaskar
>
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
More information about the dri-devel
mailing list