From: Dave Airlie Date: Wed, 6 May 2026 00:54:51 +0000 (+1000) Subject: Merge tag 'drm-intel-next-2026-05-05' of https://gitlab.freedesktop.org/drm/i915... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7a777dccc2d7957f81fec38183abd15254679ac4;p=thirdparty%2Fkernel%2Flinux.git Merge tag 'drm-intel-next-2026-05-05' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next - Enable PIPEDMC_ERROR interrupt (Dibin) - Some general display fixes and cleanups (Ville, Nemesa, Suraj, Dibin, Arun, Desnes, Juha-Pekka, Vidya, Julian) - More refactor to split display code (Jani, Ville, Luca) - Panel Replay BW optimization (Animesh) - Integrate the sharpness filter properly into the scaler (Ville) - Watermark/SAGV fixes/cleanups/etc (Ville) - Restructure DP/HDMI sink format handling (Ville) - Eliminate FB usage from low level pinning code (Ville) - Some initial prep patches for always enable AS SDP (Ankit) - Many PSR related fixes (Jouni) - Fix MST VCPI lookup and modeset-lock splat (Suraj) Signed-off-by: Dave Airlie From: Rodrigo Vivi Link: https://patch.msgid.link/afot1cjSpeAjYzg2@intel.com --- 7a777dccc2d7957f81fec38183abd15254679ac4 diff --cc drivers/gpu/drm/i915/display/intel_display_core.h index d9424d954b181,796517e7bc6c2..76745ce6a716e --- a/drivers/gpu/drm/i915/display/intel_display_core.h +++ b/drivers/gpu/drm/i915/display/intel_display_core.h @@@ -559,12 -558,15 +558,15 @@@ struct intel_display unsigned long mask; } quirks; + struct { + u32 count; + } reset; + struct { /* restore state for suspend/resume and display reset */ - struct drm_atomic_state *modeset_state; + struct drm_atomic_commit *modeset_state; struct drm_modeset_acquire_ctx reset_ctx; /* modeset stuck tracking for reset */ - atomic_t pending_fb_pin; u32 saveDSPARB; u32 saveSWF0[16]; u32 saveSWF1[16]; diff --cc drivers/gpu/drm/i915/display/intel_display_reset.c index 9481165ecfec4,fb3ac52a0acf1..504ec7043cd91 --- a/drivers/gpu/drm/i915/display/intel_display_reset.c +++ b/drivers/gpu/drm/i915/display/intel_display_reset.c @@@ -16,28 -18,23 +18,23 @@@ #include "intel_hotplug.h" #include "intel_pps.h" + bool intel_display_reset_supported(struct intel_display *display) + { + return display && HAS_DISPLAY(display); + } + bool intel_display_reset_test(struct intel_display *display) { - return display->params.force_reset_modeset_test; + return display && HAS_DISPLAY(display) && + display->params.force_reset_modeset_test; } - /* returns true if intel_display_reset_finish() needs to be called */ - bool intel_display_reset_prepare(struct intel_display *display, - modeset_stuck_fn modeset_stuck, void *context) + void intel_display_reset_prepare(struct intel_display *display) { struct drm_modeset_acquire_ctx *ctx = &display->restore.reset_ctx; - struct drm_atomic_state *state; + struct drm_atomic_commit *state; int ret; - if (!HAS_DISPLAY(display)) - return false; - - if (atomic_read(&display->restore.pending_fb_pin)) { - drm_dbg_kms(display->drm, - "Modeset potentially stuck, unbreaking through wedging\n"); - modeset_stuck(context); - } - /* * Need mode_config.mutex so that we don't * trample ongoing ->detect() and whatnot. @@@ -67,25 -64,21 +64,21 @@@ if (ret) { drm_err(display->drm, "Suspending crtc's failed with %i\n", ret); - drm_atomic_state_put(state); + drm_atomic_commit_put(state); - return true; + return; } + display->reset.count++; display->restore.modeset_state = state; state->acquire_ctx = ctx; - - return true; } void intel_display_reset_finish(struct intel_display *display, bool test_only) { struct drm_modeset_acquire_ctx *ctx = &display->restore.reset_ctx; - struct drm_atomic_state *state; + struct drm_atomic_commit *state; int ret; - if (!HAS_DISPLAY(display)) - return; - state = fetch_and_zero(&display->restore.modeset_state); if (!state) goto unlock; diff --cc drivers/gpu/drm/i915/display/intel_modeset_setup.c index 9a0f89f1a1f2a,4c646b1bd0ee0..e88082c8caace --- a/drivers/gpu/drm/i915/display/intel_modeset_setup.c +++ b/drivers/gpu/drm/i915/display/intel_modeset_setup.c @@@ -83,9 -83,9 +83,9 @@@ static void intel_crtc_disable_noatomic drm_WARN_ON(display->drm, IS_ERR(temp_crtc_state) || ret); } - display->funcs.display->crtc_disable(to_intel_atomic_state(state), crtc); + display->modeset.funcs->crtc_disable(to_intel_atomic_state(state), crtc); - drm_atomic_state_put(state); + drm_atomic_commit_put(state); drm_dbg_kms(display->drm, "[CRTC:%d:%s] hw state adjusted, was enabled, now disabled\n",