From: Nitin Gote <nitin.r.gote@intel.com>
To: intel-xe@lists.freedesktop.org
Cc: Nitin Gote <nitin.r.gote@intel.com>
Subject: [PATCH 0/2] drm/xe/guc: handle exec queue teardown after hot-unplug
Date: Tue, 11 Aug 2026 19:07:54 +0530 [thread overview]
Message-ID: <20260811133753.1742666-4-nitin.r.gote@intel.com> (raw)
This series moves the hot-unplug handling for GuC exec queue teardown into
the GuC message submision layer.
The issue was seen with the new core_hotunplug "with-load" IGT subtests,
where an exec queue can be destroyed from a deferred fd close after the
device has already been hot-unplugged:
guc_exec_queue_add_msg()
guc_exec_queue_destroy()
xe_exec_queue_destroy()
xe_file_close()
The warning is:
Missing outer runtime PM protection
After some debugging, this does not look like a missing runtime PM
reference or a zero usage count. At the warning point I saw:
usage_count=3, status=RPM_SUSPENDED and disable_depth=1
During hot-unplug, the PCI remove path disables runtime PM. The old
struct device can still remain alive because the old drm_device is still
referenced by an open fd. When that fd is finally closed,
guc_exec_queue_destroy() runs on the old device where runtime PM is
already disabled. In that state pm_runtime_get_if_in_use() returns
-EINVAL even with a non-zero usage count, so
xe_pm_runtime_get_noresume() cannot observe the existing PM state and
warns.
Instead of suppressing the warning in xe_pm_runtime_get_noresume(), this
series handles the unplug case where the GuC exec queue message is queued
and processed.
Patch 1 reworks the GuC exec queue message teardown handling.
Patch 2 removes EXEC_QUEUE_FLAG_PERMANENT, which is no longer needed.
Observed with new igt tests:
igt@core_hotunplug@hotreplug-with-load
igt@core_hotunplug@hotunplug-rescan-with-load
Link: https://patchwork.freedesktop.org/patch/725773/?series=166744&rev=4
v2:
- Drop the drm_dev_is_unplugged() bypass from guc_exec_queue_destroy()
and instead exclude hot-unplug from the WARN in
xe_pm_runtime_get_noresume().
v3:
- Rework the fix in the message-submission layer instead of touching the
WARN; gate PM/HW work on drm_dev_enter() and route all queues through
the CLEANUP message. (Matthew Brost)
- Prove the root cause (runtime PM disabled on unplug, not a zero
refcount) and record it in the commit message. (Matt B, Raag Jadav)
- Also remove EXEC_QUEUE_FLAG_PERMANENT flag in
separate patch (Matthew Brost)
Nitin Gote (2):
drm/xe/guc: rework exec queue teardown PM/unplug handling
drm/xe: remove EXEC_QUEUE_FLAG_PERMANENT
drivers/gpu/drm/xe/xe_exec_queue.c | 3 -
drivers/gpu/drm/xe/xe_exec_queue_types.h | 14 ++--
drivers/gpu/drm/xe/xe_gsc.c | 3 +-
drivers/gpu/drm/xe/xe_guc_submit.c | 98 ++++++++++++------------
drivers/gpu/drm/xe/xe_migrate.c | 2 -
drivers/gpu/drm/xe/xe_pm.c | 5 ++
drivers/gpu/drm/xe/xe_pxp_submit.c | 5 +-
drivers/gpu/drm/xe/xe_sriov_vf_ccs.c | 1 -
drivers/gpu/drm/xe/xe_vm.c | 1 -
9 files changed, 65 insertions(+), 67 deletions(-)
--
2.50.1
next reply other threads:[~2026-08-11 13:00 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-11 13:37 Nitin Gote [this message]
2026-08-11 13:07 ` ✓ CI.KUnit: success for drm/xe/guc: handle exec queue teardown after hot-unplug Patchwork
2026-08-11 13:37 ` [PATCH 1/2] drm/xe/guc: rework exec queue teardown PM/unplug handling Nitin Gote
2026-08-13 6:46 ` Upadhyay, Tejas
2026-08-19 5:29 ` Gupta, Varun
2026-08-19 6:18 ` Gote, Nitin R
2026-08-11 13:37 ` [PATCH 2/2] drm/xe: remove EXEC_QUEUE_FLAG_PERMANENT Nitin Gote
2026-08-11 23:36 ` Matthew Brost
2026-08-13 6:40 ` Upadhyay, Tejas
2026-08-11 13:45 ` ✓ Xe.CI.BAT: success for drm/xe/guc: handle exec queue teardown after hot-unplug Patchwork
2026-08-11 14:50 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-08-14 4:23 ` Gote, Nitin R
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=20260811133753.1742666-4-nitin.r.gote@intel.com \
--to=nitin.r.gote@intel.com \
--cc=intel-xe@lists.freedesktop.org \
/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.