Linux-HyperV List
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Thomas Zimmermann" <tzimmermann@suse.de>
Cc: Frank.Li@kernel.org, imx@lists.linux.dev, ojeda@kernel.org,
	intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org,
	wsa+renesas@sang-engineering.com, linux-hyperv@vger.kernel.org
Subject: Re: [PATCH v2 09/13] drm/panic: Restrict to primary planes; unconditionally unregister
Date: Mon, 24 Aug 2026 13:31:25 +0000	[thread overview]
Message-ID: <20260824133125.BEBEE1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260824125201.218863-10-tzimmermann@suse.de>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] Unconditional calls to kmsg_dump_unregister() for all planes cause severe delays during device teardown due to sequential synchronize_rcu() calls.
- [Medium] drm_panic_is_enabled() was not updated to enforce the primary plane restriction, leading to inconsistent panic handler state.
--

--- Patch [9]: [PATCH v2 09/13] drm/panic: Restrict to primary planes; unconditionally unregister ---
commit c3117dcbe59bcb2d0d31d68229c5ec24738e412e
Author: Thomas Zimmermann <tzimmermann@suse.de>

drm/panic: Restrict to primary planes; unconditionally unregister

Restrict panic handling to primary displays. Overlays and cursors
should not display panic output. If there are exceptions, they can
be registered by the driver itself.

For cleanup, unregister each plane unconditionally. The kmsg dumper
already keeps track of the registration status so DRM doesn't have
to.

> diff --git a/drivers/gpu/drm/drm_panic.c b/drivers/gpu/drm/drm_panic.c
> index 2048a3bf736f0..7dbbcc1c219ff 100644
> --- a/drivers/gpu/drm/drm_panic.c
> +++ b/drivers/gpu/drm/drm_panic.c
> @@ -1079,6 +1079,8 @@ void drm_panic_register(struct drm_device *dev)
>  		return;
>  
>  	drm_for_each_plane(plane, dev) {
> +		if (plane->type != DRM_PLANE_TYPE_PRIMARY)
> +			continue;

[Severity: Medium]
Was drm_panic_is_enabled() updated to match this new primary plane
restriction?

If a driver implements the panic callback on a non-primary plane but not on a
primary plane, drm_panic_is_enabled() will return true since it lacks this
type check:

drivers/gpu/drm/drm_panic.c:drm_panic_is_enabled() {
...
	drm_for_each_plane(plane, dev)
		if (plane->helper_private && plane->helper_private->get_scanout_buffer)
			return true;
...
}

Because drm_panic_register() skips the non-primary plane, it won't actually
be registered. Does this false positive in drm_panic_is_enabled() introduce a
regression where drm_fb_helper disables its fallback panic handling, leaving
the system with no panic screen handler at all?

>  		if (!plane->helper_private || !plane->helper_private->get_scanout_buffer)
>  			continue;
>  		plane->kmsg_panic.dump = drm_panic;

[ ... ]

> @@ -1105,11 +1107,8 @@ void drm_panic_unregister(struct drm_device *dev)
>  	if (!dev->mode_config.num_total_plane)
>  		return;
>  
> -	drm_for_each_plane(plane, dev) {
> -		if (!plane->helper_private || !plane->helper_private->get_scanout_buffer)
> -			continue;
> +	drm_for_each_plane(plane, dev)
>  		kmsg_dump_unregister(&plane->kmsg_panic);
> -	}
>  }

[Severity: Medium]
Does this unconditional loop cause severe delays during device teardown?

The function kmsg_dump_unregister() executes synchronize_rcu() at the end
regardless of the dumper's registration status:

kernel/printk/printk.c:kmsg_dump_unregister() {
...
	spin_unlock_irqrestore(&dump_list_lock, flags);
	synchronize_rcu();
...
}

Looping sequentially over all planes without checking if they were actually
registered forces the teardown path to block for multiple consecutive RCU
grace periods. Can this regression potentially add hundreds of milliseconds to
several seconds of delay during driver unbind or hot-unplug?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260824125201.218863-1-tzimmermann@suse.de?part=9

  reply	other threads:[~2026-08-24 13:31 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-24 12:43 [PATCH v2 00/13] drm/panic: Split into core and helpers Thomas Zimmermann
2026-08-24 12:43 ` [PATCH v2 01/13] drm/panic: Do not use un-escaped URL as format string Thomas Zimmermann
2026-08-24 12:43 ` [PATCH v2 02/13] drm/panic: Test address from kmap op for NULL Thomas Zimmermann
2026-08-24 12:43 ` [PATCH v2 03/13] drm/panic: Return -EINVAL if font is not available Thomas Zimmermann
2026-08-24 12:43 ` [PATCH v2 04/13] drm/panic: Return errno codes if panic output fails Thomas Zimmermann
2026-08-24 13:15   ` sashiko-bot
2026-08-24 12:43 ` [PATCH v2 05/13] drm/panic: Pass colors to draw_panic_dispatch() Thomas Zimmermann
2026-08-24 13:13   ` sashiko-bot
2026-08-24 12:43 ` [PATCH v2 06/13] drm/panic: Pass global module parameters to drm_panic_dispatch() Thomas Zimmermann
2026-08-24 12:43 ` [PATCH v2 07/13] drm/panic: Retry in dispatch function if panic output fails Thomas Zimmermann
2026-08-24 13:21   ` sashiko-bot
2026-08-24 12:43 ` [PATCH v2 08/13] drm/panic: Split draw_panic_plane() Thomas Zimmermann
2026-08-24 12:43 ` [PATCH v2 09/13] drm/panic: Restrict to primary planes; unconditionally unregister Thomas Zimmermann
2026-08-24 13:31   ` sashiko-bot [this message]
2026-08-24 12:43 ` [PATCH v2 10/13] drm/panic: Display panic screen via per-plane callback Thomas Zimmermann
2026-08-24 12:43 ` [PATCH v2 11/13] drm/panic: Internalize panic locking in DRM core and helpers Thomas Zimmermann
2026-08-24 12:43 ` [PATCH v2 12/13] drm/panic: Move panic display code into helper library Thomas Zimmermann
2026-08-24 12:43 ` [PATCH v2 13/13] drm/panic: Compile KUnit tests as module Thomas Zimmermann
2026-08-24 14:11   ` sashiko-bot

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=20260824133125.BEBEE1F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=Frank.Li@kernel.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=linux-hyperv@vger.kernel.org \
    --cc=ojeda@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=tzimmermann@suse.de \
    --cc=wsa+renesas@sang-engineering.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox