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: 8+ 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:54 ` ✗ CI.checkpatch: warning for " Patchwork
2025-12-11 18:55 ` ✓ CI.KUnit: success " Patchwork
2025-12-11 20:05 ` ✓ Xe.CI.BAT: " Patchwork
2025-12-12 10:38 ` ✗ Xe.CI.Full: failure " 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox