From: Jani Nikula <jani.nikula@intel.com>
To: "Kandpal, Suraj" <suraj.kandpal@intel.com>,
"intel-xe@lists.freedesktop.org" <intel-xe@lists.freedesktop.org>
Cc: "stable@vger.kernel.org" <stable@vger.kernel.org>
Subject: RE: [PATCH] drm/xe/display: fix oops in suspend/shutdown without display
Date: Sat, 16 May 2026 12:19:01 +0300 [thread overview]
Message-ID: <47fc29d462ebaa0fde9f229c8384099e9ccd99c0@intel.com> (raw)
In-Reply-To: <DM3PPF208195D8D504F655566B2A718B650E3042@DM3PPF208195D8D.namprd11.prod.outlook.com>
On Fri, 15 May 2026, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
>> Subject: [PATCH] drm/xe/display: fix oops in suspend/shutdown without
>> display
>>
>> The xe driver keeps track of whether to probe display, and whether display
>> hardware is there, using xe->info.probe_display. It gets set to false if there's no
>> display after intel_display_device_probe(). However, the display may also be
>> disabled via fuses, detected at a later time in
>> intel_display_device_info_runtime_init().
>>
>> In this case, the xe driver does for_each_intel_crtc() on uninitialized mode
>> config in xe_display_flush_cleanup_work(), leading to a NULL pointer
>> dereference, and generally calls display code with display info cleared.
>>
>> Check for intel_display_device_present() after
>> intel_display_device_info_runtime_init(), and reset
>> xe->info.probe_display as necessary. Also do unset_display_features()
>> for completeness, although display runtime init has already done that. This will
>> need to be unified across all cases later.
>>
>> Move intel_display_device_info_runtime_init() call slightly earlier, similar to
>> i915, to avoid a bunch of unnecessary setup for no display cases.
>>
>> Note #1: The xe driver has no business doing low level display plumbing like
>> for_each_intel_crtc() to begin with. It all needs to happen in display code.
>>
>> Note #2: The actual bug is present already in commit 44e694958b95
>> ("drm/xe/display: Implement display support"), but the oops was likely
>> introduced later at commit ddf6492e0e50 ("drm/xe/display: Make display
>> suspend/resume work on discrete").
>>
>> Fixes: 44e694958b95 ("drm/xe/display: Implement display support")
>> Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/7904
>> Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/6150
>> Cc: <stable@vger.kernel.org> # v6.8+
>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>
> LGTM,
> Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Thanks, pushed to drm-intel-next (and not drm-xe-next) to avoid
conflicts with other display changes.
BR,
Jani.
>
>> ---
>> drivers/gpu/drm/xe/display/xe_display.c | 11 +++++++++--
>> 1 file changed, 9 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/display/xe_display.c
>> b/drivers/gpu/drm/xe/display/xe_display.c
>> index 053abd6f6514..5f25932730f4 100644
>> --- a/drivers/gpu/drm/xe/display/xe_display.c
>> +++ b/drivers/gpu/drm/xe/display/xe_display.c
>> @@ -104,6 +104,15 @@ int xe_display_init_early(struct xe_device *xe)
>>
>> intel_display_driver_early_probe(display);
>>
>> + intel_display_device_info_runtime_init(display);
>> +
>> + /* Display may have been disabled at runtime init */
>> + if (!intel_display_device_present(display)) {
>> + xe->info.probe_display = false;
>> + unset_display_features(xe);
>> + return 0;
>> + }
>> +
>> /* Early display init.. */
>> intel_opregion_setup(display);
>>
>> @@ -117,8 +126,6 @@ int xe_display_init_early(struct xe_device *xe)
>>
>> intel_bw_init_hw(display);
>>
>> - intel_display_device_info_runtime_init(display);
>> -
>> err = intel_display_driver_probe_noirq(display);
>> if (err)
>> goto err_opregion;
>> --
>> 2.47.3
>
--
Jani Nikula, Intel
next prev parent reply other threads:[~2026-05-16 9:19 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-15 16:09 [PATCH] drm/xe/display: fix oops in suspend/shutdown without display Jani Nikula
2026-05-15 16:18 ` Kandpal, Suraj
2026-05-16 9:19 ` Jani Nikula [this message]
2026-05-15 16:40 ` ✓ CI.KUnit: success for " Patchwork
2026-05-15 17:35 ` ✗ Xe.CI.BAT: failure " Patchwork
2026-05-16 7:32 ` ✓ Xe.CI.FULL: success " 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=47fc29d462ebaa0fde9f229c8384099e9ccd99c0@intel.com \
--to=jani.nikula@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=stable@vger.kernel.org \
--cc=suraj.kandpal@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.