From: Jocelyn Falempe <jfalempe@redhat.com>
To: Thomas Zimmermann <tzimmermann@suse.de>,
javierm@redhat.com, airlied@gmail.com, simona@ffwll.ch,
maarten.lankhorst@linux.intel.com, mripard@kernel.org
Cc: dri-devel@lists.freedesktop.org, linux-doc@vger.kernel.org,
amd-gfx@lists.freedesktop.org, rust-for-linux@vger.kernel.org,
linux-hyperv@vger.kernel.org, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org, imx@lists.linux.dev,
linux-arm-kernel@lists.infradead.org,
nouveau@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org,
virtualization@lists.linux.dev, sashiko-reviews@lists.linux.dev
Subject: Re: [PATCH 00/12] drm/panic: Split into core and helpers
Date: Thu, 20 Aug 2026 19:49:36 +0200 [thread overview]
Message-ID: <e4da5ba4-9a02-4080-9a83-19d401017910@redhat.com> (raw)
In-Reply-To: <20260818125012.468092-1-tzimmermann@suse.de>
On 18/08/2026 14:27, Thomas Zimmermann wrote:
> Split DRM's current panic handling into a core and a helper module.
> The core is still part of DRM's core library. The panic helpers are
> part of DRM's KMS helper module (for now).
>
> The motivation behind this series is to get panic handling's drawing
> code out of the DRM core. At some point it should share a single
> module with DRM's other drawing and format conversion.
>
> With the series applied, panic hanlding follows DRM's established
> design pattern of having a DRM core interface with an dedicated
> implementation in each driver. Drivers share common code in helper
> modules. For panic handling, the DRM core still contains the panic
> entry points, the parameters and the debugfs interface. All drawing
> is now located in the panic helpers.
>
> Patches 1 to 4 improve several issues in the current panic code. It
> makes sense to fix them before moving the core around.
>
> Patches 5 to 8 put handling of all panic state and locking into a
> single place, drm_panic_display_panic_screen(). It is maintained by
> panic handling's DRM core code. This also enables the test cases to
> work more independently from the kernel's configuration.
>
> Patches 9 to 11 split the panic-handling code into the core and panic
> helpers. The former maintain all state, locking and public interfaces.
> The latter handles drawing and details of the involved framebuffers.
>
> DRM devices that offer panic handling provide a single callback, struct
> drm_plane_funcs.display_panic_screen. A new initializer macro makes it
> point to the existing panic-drawing implementation. Hence there's no
> change in features or functionality. If panic handling is configured
> off, it all clears out to NULL.
>
> Patch 12 reworks the test cases slighly, so that they can be build as
> a separate module. Do 'modprobe drm_panic_helper_test' to run them.
>
> Tested under bochs with debugfs and test cases.
Overall the series looks good to me, and I like the split between the
helper and the core.
I would just drop the first two patches, as I don't see much difference
between static allocation or kmalloc() at init, and I think that
memset() the buffers to 0 is not useful in this case.
Best regards,
--
Jocelyn
>
> Future directions:
>
> - Panic handling shares some drawing code with format conversion and
> clients. There's even more drawing code in vkms. Later series' can
> attempt to unify and harmonize all these implementations in a single
> draw module.
>
> - The drawing helper drm_plane_helper_display_panic_screen() still
> implements various access schemes (map, set_pixel, memcpy) in a single
> function. It could be split up into specifialized helpers.
>
> - If we ever need a driver-specific helper, it is now possible to
> implement a custom version of display_panic_screen.
>
> Thomas Zimmermann (12):
> drm/panic: Allocate QR-code buffers statically
> drm/panic: Make allocation of zlib workspace more robust
> drm/panic: Return -EINVAL if font is not available
> drm/panic: Return errno codes if panic output fails
> drm/panic: Pass colors to draw_panic_dispatch()
> drm/panic: Pass global module parameters to drm_panic_dispatch()
> drm/panic: Retry in dispatch function if panic output fails
> drm/panic: Split draw_panic_plane()
> drm/panic: Display panic screen via per-plane callback
> drm/panic: Internalize panic locking in DRM core and helpers
> drm/panic: Move panic display code into helper library
> drm/panic: Compile KUnit tests as module
>
> Documentation/gpu/drm-kms-helpers.rst | 11 +-
> Documentation/gpu/drm-kms.rst | 3 +
> MAINTAINERS | 11 +-
> drivers/gpu/drm/Kconfig | 5 +
> drivers/gpu/drm/Kconfig.debug | 1 +
> drivers/gpu/drm/Makefile | 3 +-
> .../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 2 +
> drivers/gpu/drm/ast/ast_mode.c | 2 +
> drivers/gpu/drm/drm_atomic_helper.c | 2 +-
> drivers/gpu/drm/drm_crtc_internal.h | 2 -
> drivers/gpu/drm/drm_drv.c | 3 +-
> drivers/gpu/drm/drm_kms_helper_common.c | 14 +
> drivers/gpu/drm/drm_panic.c | 914 +----------------
> drivers/gpu/drm/drm_panic_helper.c | 915 ++++++++++++++++++
> ...drm_panic_qr.rs => drm_panic_helper_qr.rs} | 4 +-
> drivers/gpu/drm/drm_panic_internal.h | 59 ++
> drivers/gpu/drm/hyperv/hyperv_drm_modeset.c | 2 +
> drivers/gpu/drm/i915/display/i9xx_plane.c | 3 +
> .../drm/i915/display/skl_universal_plane.c | 4 +
> drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c | 2 +
> drivers/gpu/drm/mgag200/mgag200_drv.h | 4 +-
> drivers/gpu/drm/nouveau/dispnv50/wndw.c | 2 +
> .../gpu/drm/renesas/rcar-du/rcar_du_plane.c | 2 +
> .../drm/renesas/shmobile/shmob_drm_plane.c | 2 +
> drivers/gpu/drm/sysfb/drm_sysfb_helper.h | 4 +-
> drivers/gpu/drm/sysfb/vesadrm.c | 1 +
> drivers/gpu/drm/tests/Makefile | 1 +
> ...m_panic_test.c => drm_panic_helper_test.c} | 65 +-
> drivers/gpu/drm/tidss/tidss_plane.c | 2 +
> drivers/gpu/drm/tiny/bochs.c | 4 +-
> drivers/gpu/drm/virtio/virtgpu_plane.c | 2 +
> include/drm/drm_mode_config.h | 4 +-
> include/drm/drm_modeset_helper_vtables.h | 11 +-
> include/drm/drm_panic.h | 117 +--
> include/drm/drm_panic_helper.h | 40 +
> include/drm/drm_plane.h | 57 ++
> rust/bindings/bindings_helper.h | 4 +-
> 37 files changed, 1253 insertions(+), 1031 deletions(-)
> create mode 100644 drivers/gpu/drm/drm_panic_helper.c
> rename drivers/gpu/drm/{drm_panic_qr.rs => drm_panic_helper_qr.rs} (99%)
> create mode 100644 drivers/gpu/drm/drm_panic_internal.h
> rename drivers/gpu/drm/tests/{drm_panic_test.c => drm_panic_helper_test.c} (80%)
> create mode 100644 include/drm/drm_panic_helper.h
>
>
> base-commit: dc462ab791b686c48545c160ecc81be64f77a846
> prerequisite-patch-id: c67e5d886a47b7d0266d81100837557fda34cb24
> prerequisite-patch-id: a5a973e527c88a5b47053d7a72aefe0b550197cb
> prerequisite-patch-id: b9adc9622920a3e70168e672c2c92795b3e3a106
> prerequisite-patch-id: 5030de433a01c2e99056cadb676a8e2ba35f055a
next prev parent reply other threads:[~2026-08-20 17:49 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-18 12:27 [PATCH 00/12] drm/panic: Split into core and helpers Thomas Zimmermann
2026-08-18 12:27 ` Thomas Zimmermann
2026-08-18 12:27 ` [PATCH 01/12] drm/panic: Allocate QR-code buffers statically Thomas Zimmermann
2026-08-18 12:27 ` Thomas Zimmermann
2026-08-18 13:09 ` sashiko-bot
2026-08-19 9:38 ` Geert Uytterhoeven
2026-08-19 9:38 ` Geert Uytterhoeven
2026-08-19 10:45 ` Thomas Zimmermann
2026-08-19 10:45 ` Thomas Zimmermann
2026-08-18 12:28 ` [PATCH 02/12] drm/panic: Make allocation of zlib workspace more robust Thomas Zimmermann
2026-08-18 12:28 ` Thomas Zimmermann
2026-08-18 12:28 ` [PATCH 03/12] drm/panic: Return -EINVAL if font is not available Thomas Zimmermann
2026-08-18 12:28 ` Thomas Zimmermann
2026-08-18 13:04 ` sashiko-bot
2026-08-20 17:04 ` Jocelyn Falempe
2026-08-18 12:28 ` [PATCH 04/12] drm/panic: Return errno codes if panic output fails Thomas Zimmermann
2026-08-18 12:28 ` Thomas Zimmermann
2026-08-18 13:03 ` sashiko-bot
2026-08-20 17:05 ` Jocelyn Falempe
2026-08-18 12:28 ` [PATCH 05/12] drm/panic: Pass colors to draw_panic_dispatch() Thomas Zimmermann
2026-08-18 12:28 ` Thomas Zimmermann
2026-08-20 17:08 ` Jocelyn Falempe
2026-08-18 12:28 ` [PATCH 06/12] drm/panic: Pass global module parameters to drm_panic_dispatch() Thomas Zimmermann
2026-08-18 12:28 ` Thomas Zimmermann
2026-08-18 13:09 ` sashiko-bot
2026-08-19 8:19 ` Thomas Zimmermann
2026-08-20 17:10 ` Jocelyn Falempe
2026-08-18 12:28 ` [PATCH 07/12] drm/panic: Retry in dispatch function if panic output fails Thomas Zimmermann
2026-08-18 12:28 ` Thomas Zimmermann
2026-08-18 13:05 ` sashiko-bot
2026-08-19 8:22 ` Thomas Zimmermann
2026-08-20 17:12 ` Jocelyn Falempe
2026-08-20 17:15 ` Jocelyn Falempe
2026-08-18 12:28 ` [PATCH 08/12] drm/panic: Split draw_panic_plane() Thomas Zimmermann
2026-08-18 12:28 ` Thomas Zimmermann
2026-08-18 13:14 ` sashiko-bot
2026-08-18 12:28 ` [PATCH 09/12] drm/panic: Display panic screen via per-plane callback Thomas Zimmermann
2026-08-18 12:28 ` Thomas Zimmermann
2026-08-18 13:19 ` sashiko-bot
2026-08-19 9:02 ` Thomas Zimmermann
2026-08-20 17:25 ` Jocelyn Falempe
2026-08-18 12:28 ` [PATCH 10/12] drm/panic: Internalize panic locking in DRM core and helpers Thomas Zimmermann
2026-08-18 12:28 ` Thomas Zimmermann
2026-08-18 12:28 ` [PATCH 11/12] drm/panic: Move panic display code into helper library Thomas Zimmermann
2026-08-18 12:28 ` Thomas Zimmermann
2026-08-18 13:13 ` sashiko-bot
2026-08-18 15:55 ` Randy Dunlap
2026-08-19 6:16 ` Thomas Zimmermann
2026-08-18 12:28 ` [PATCH 12/12] drm/panic: Compile KUnit tests as module Thomas Zimmermann
2026-08-18 12:28 ` Thomas Zimmermann
2026-08-18 13:18 ` sashiko-bot
2026-08-18 13:28 ` ✗ Fi.CI.BUILD: failure for drm/panic: Split into core and helpers Patchwork
2026-08-18 14:23 ` ✗ CI.checkpatch: warning " Patchwork
2026-08-18 14:24 ` ✗ CI.KUnit: failure " Patchwork
2026-08-20 17:49 ` Jocelyn Falempe [this message]
2026-08-21 6:38 ` [PATCH 00/12] " Thomas Zimmermann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e4da5ba4-9a02-4080-9a83-19d401017910@redhat.com \
--to=jfalempe@redhat.com \
--cc=airlied@gmail.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=imx@lists.linux.dev \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=javierm@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=nouveau@lists.freedesktop.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=simona@ffwll.ch \
--cc=tzimmermann@suse.de \
--cc=virtualization@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.