From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Jani Nikula <jani.nikula@intel.com>
Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Subject: Re: [PATCH 2/2] drm/{i915, xe}/panic: move panic handling to parent interface
Date: Fri, 12 Dec 2025 13:51:39 +0200 [thread overview]
Message-ID: <aTwBywbLwbGvz7Xn@intel.com> (raw)
In-Reply-To: <e27eca5424479e8936b786018d0af19a34f839f6.1765474612.git.jani.nikula@intel.com>
On Thu, Dec 11, 2025 at 07:37:12PM +0200, Jani Nikula wrote:
> Move the panic handling to the display parent interface, making display
> more independent of i915 and xe driver implementations.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/display/i9xx_plane.c | 1 -
> drivers/gpu/drm/i915/display/intel_fb.c | 3 +--
> drivers/gpu/drm/i915/display/intel_panic.h | 14 --------------
> drivers/gpu/drm/i915/display/intel_parent.c | 15 +++++++++++++++
> drivers/gpu/drm/i915/display/intel_parent.h | 6 ++++++
> drivers/gpu/drm/i915/display/intel_plane.c | 5 ++---
> .../gpu/drm/i915/display/skl_universal_plane.c | 1 -
> drivers/gpu/drm/i915/i915_driver.c | 2 ++
> drivers/gpu/drm/i915/i915_panic.c | 16 ++++++++++++----
> drivers/gpu/drm/i915/i915_panic.h | 9 +++++++++
> drivers/gpu/drm/xe/display/xe_display.c | 2 ++
> drivers/gpu/drm/xe/display/xe_panic.c | 16 +++++++++-------
> drivers/gpu/drm/xe/display/xe_panic.h | 9 +++++++++
> include/drm/intel/display_parent_interface.h | 11 +++++++++++
> 14 files changed, 78 insertions(+), 32 deletions(-)
> delete mode 100644 drivers/gpu/drm/i915/display/intel_panic.h
> create mode 100644 drivers/gpu/drm/i915/i915_panic.h
> create mode 100644 drivers/gpu/drm/xe/display/xe_panic.h
>
> diff --git a/drivers/gpu/drm/i915/display/i9xx_plane.c b/drivers/gpu/drm/i915/display/i9xx_plane.c
> index 45730ae05591..b1fecf178906 100644
> --- a/drivers/gpu/drm/i915/display/i9xx_plane.c
> +++ b/drivers/gpu/drm/i915/display/i9xx_plane.c
> @@ -22,7 +22,6 @@
> #include "intel_fb.h"
> #include "intel_fbc.h"
> #include "intel_frontbuffer.h"
> -#include "intel_panic.h"
> #include "intel_plane.h"
> #include "intel_sprite.h"
>
> diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c
> index 5b8e02ca2faf..b9bd9b6dfe94 100644
> --- a/drivers/gpu/drm/i915/display/intel_fb.c
> +++ b/drivers/gpu/drm/i915/display/intel_fb.c
> @@ -20,7 +20,6 @@
> #include "intel_fb.h"
> #include "intel_fb_bo.h"
> #include "intel_frontbuffer.h"
> -#include "intel_panic.h"
> #include "intel_parent.h"
> #include "intel_plane.h"
>
> @@ -2217,7 +2216,7 @@ int intel_framebuffer_init(struct intel_framebuffer *intel_fb,
> int ret;
> int i;
>
> - intel_fb->panic = intel_panic_alloc();
> + intel_fb->panic = intel_parent_panic_alloc(display);
> if (!intel_fb->panic)
> return -ENOMEM;
>
> diff --git a/drivers/gpu/drm/i915/display/intel_panic.h b/drivers/gpu/drm/i915/display/intel_panic.h
> deleted file mode 100644
> index afb472e924aa..000000000000
> --- a/drivers/gpu/drm/i915/display/intel_panic.h
> +++ /dev/null
> @@ -1,14 +0,0 @@
> -/* SPDX-License-Identifier: MIT */
> -/* Copyright © 2025 Intel Corporation */
> -
> -#ifndef __INTEL_PANIC_H__
> -#define __INTEL_PANIC_H__
> -
> -struct drm_scanout_buffer;
> -struct intel_panic;
> -
> -struct intel_panic *intel_panic_alloc(void);
> -int intel_panic_setup(struct intel_panic *panic, struct drm_scanout_buffer *sb);
> -void intel_panic_finish(struct intel_panic *panic);
> -
> -#endif /* __INTEL_PANIC_H__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_parent.c b/drivers/gpu/drm/i915/display/intel_parent.c
> index 1d7bee7d2ccd..d1c2194767e7 100644
> --- a/drivers/gpu/drm/i915/display/intel_parent.c
> +++ b/drivers/gpu/drm/i915/display/intel_parent.c
> @@ -47,6 +47,21 @@ void intel_parent_hdcp_gsc_context_free(struct intel_display *display,
> display->parent->hdcp->gsc_context_free(gsc_context);
> }
>
> +struct intel_panic *intel_parent_panic_alloc(struct intel_display *display)
> +{
> + return display->parent->panic->alloc();
> +}
> +
> +int intel_parent_panic_setup(struct intel_display *display, struct intel_panic *panic, struct drm_scanout_buffer *sb)
> +{
> + return display->parent->panic->setup(panic, sb);
> +}
> +
> +void intel_parent_panic_finish(struct intel_display *display, struct intel_panic *panic)
> +{
> + display->parent->panic->finish(panic);
> +}
> +
> bool intel_parent_irq_enabled(struct intel_display *display)
> {
> return display->parent->irq->enabled(display->drm);
> diff --git a/drivers/gpu/drm/i915/display/intel_parent.h b/drivers/gpu/drm/i915/display/intel_parent.h
> index 1bb584d850e5..8cd811d14fb1 100644
> --- a/drivers/gpu/drm/i915/display/intel_parent.h
> +++ b/drivers/gpu/drm/i915/display/intel_parent.h
> @@ -7,8 +7,10 @@
> #include <linux/types.h>
>
> struct dma_fence;
> +struct drm_scanout_buffer;
> struct intel_display;
> struct intel_hdcp_gsc_context;
> +struct intel_panic;
> struct intel_stolen_node;
>
> ssize_t intel_parent_hdcp_gsc_msg_send(struct intel_display *display,
> @@ -23,6 +25,10 @@ void intel_parent_hdcp_gsc_context_free(struct intel_display *display,
> bool intel_parent_irq_enabled(struct intel_display *display);
> void intel_parent_irq_synchronize(struct intel_display *display);
>
> +struct intel_panic *intel_parent_panic_alloc(struct intel_display *display);
> +int intel_parent_panic_setup(struct intel_display *display, struct intel_panic *panic, struct drm_scanout_buffer *sb);
> +void intel_parent_panic_finish(struct intel_display *display, struct intel_panic *panic);
> +
> bool intel_parent_rps_available(struct intel_display *display);
> void intel_parent_rps_boost_if_not_started(struct intel_display *display, struct dma_fence *fence);
> void intel_parent_rps_mark_interactive(struct intel_display *display, bool interactive);
> diff --git a/drivers/gpu/drm/i915/display/intel_plane.c b/drivers/gpu/drm/i915/display/intel_plane.c
> index ca9449589161..3dc2ed52147f 100644
> --- a/drivers/gpu/drm/i915/display/intel_plane.c
> +++ b/drivers/gpu/drm/i915/display/intel_plane.c
> @@ -55,7 +55,6 @@
> #include "intel_fb.h"
> #include "intel_fb_pin.h"
> #include "intel_fbdev.h"
> -#include "intel_panic.h"
> #include "intel_parent.h"
> #include "intel_plane.h"
> #include "intel_psr.h"
> @@ -1344,7 +1343,7 @@ static void intel_panic_flush(struct drm_plane *_plane)
> const struct intel_crtc_state *crtc_state = to_intel_crtc_state(crtc->base.state);
> const struct intel_framebuffer *fb = to_intel_framebuffer(plane_state->hw.fb);
>
> - intel_panic_finish(fb->panic);
> + intel_parent_panic_finish(display, fb->panic);
>
> if (crtc_state->enable_psr2_sel_fetch) {
> /* Force a full update for psr2 */
> @@ -1425,7 +1424,7 @@ static int intel_get_scanout_buffer(struct drm_plane *plane,
> return -EOPNOTSUPP;
> }
> sb->private = fb;
> - ret = intel_panic_setup(fb->panic, sb);
> + ret = intel_parent_panic_setup(display, fb->panic, sb);
> if (ret)
> return ret;
> }
> diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
> index 40148d225410..b3d41705448a 100644
> --- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
> +++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
> @@ -21,7 +21,6 @@
> #include "intel_fb.h"
> #include "intel_fbc.h"
> #include "intel_frontbuffer.h"
> -#include "intel_panic.h"
> #include "intel_parent.h"
> #include "intel_plane.h"
> #include "intel_psr.h"
> diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
> index 0300a1df8bd2..a341e2d46551 100644
> --- a/drivers/gpu/drm/i915/i915_driver.c
> +++ b/drivers/gpu/drm/i915/i915_driver.c
> @@ -102,6 +102,7 @@
> #include "i915_ioctl.h"
> #include "i915_irq.h"
> #include "i915_memcpy.h"
> +#include "i915_panic.h"
> #include "i915_perf.h"
> #include "i915_query.h"
> #include "i915_reg.h"
> @@ -768,6 +769,7 @@ static bool has_auxccs(struct drm_device *drm)
>
> static const struct intel_display_parent_interface parent = {
> .hdcp = &i915_display_hdcp_interface,
> + .panic = &i915_display_panic_interface,
> .rpm = &i915_display_rpm_interface,
This 'rpm' guy seems to be in the wrong spot. I'd expect these to
be sorted alphabetically. I already noticed this when doing the
pc8 stuff but forgot to send a patch to deal with this.
> .irq = &i915_display_irq_interface,
> .rps = &i915_display_rps_interface,
<snip>
> @@ -86,6 +94,9 @@ struct intel_display_parent_interface {
> /** @irq: IRQ interface */
> const struct intel_display_irq_interface *irq;
Same sorting issue here.
Though I suppose the naked vfuncs that don't have their
own interface struct also screw up the order, so not sure
if there ever was a plan to keep these sorted.
>
> + /** @panic: Panic interface */
> + const struct intel_display_panic_interface *panic;
> +
> /** @rpm: RPS interface. Optional. */
^^^
Docs wrong here.
But all of that is not directly related to this stuff, so
the series is
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> const struct intel_display_rps_interface *rps;
>
> --
> 2.47.3
--
Ville Syrjälä
Intel
next prev parent reply other threads:[~2025-12-12 11:51 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-11 17:37 [PATCH 0/2] drm/{i915, xe}/panic: move panic handling to parent interface Jani Nikula
2025-12-11 17:37 ` [PATCH 1/2] drm/i915/panic: move i915 specific panic implementation to i915 Jani Nikula
2025-12-11 17:37 ` [PATCH 2/2] drm/{i915, xe}/panic: move panic handling to parent interface Jani Nikula
2025-12-12 11:51 ` Ville Syrjälä [this message]
2025-12-11 18:41 ` ✓ i915.CI.BAT: success for " Patchwork
2025-12-11 18:54 ` ✗ CI.checkpatch: warning " Patchwork
2025-12-11 18:55 ` ✓ CI.KUnit: success " Patchwork
2025-12-11 20:05 ` ✓ Xe.CI.BAT: " Patchwork
2025-12-12 5:58 ` ✗ i915.CI.Full: failure " Patchwork
2025-12-12 10:38 ` ✗ Xe.CI.Full: " Patchwork
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=aTwBywbLwbGvz7Xn@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jani.nikula@intel.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 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.