✗ CI.checkpatch: warning for drm/xe/gsc: Handle GSCCS ER interrupt (rev3)
Patchwork
patchwork at emeril.freedesktop.org
Thu Mar 14 18:04:39 UTC 2024
== Series Details ==
Series: drm/xe/gsc: Handle GSCCS ER interrupt (rev3)
URL : https://patchwork.freedesktop.org/series/129182/
State : warning
== Summary ==
+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
a9eb1ac8298ef9f9146567c29fa762d8e9efa1ef
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 6688d6e5766b304222080c4303762e54a7676c16
Author: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
Date: Mon Mar 4 06:56:34 2024 -0800
drm/xe/gsc: Handle GSCCS ER interrupt
Starting on Xe2, the GSCCS engine reset is a 2-step process. When the
driver or the GuC hits the GDRST register, the CS is immediately reset
and a success is reported, but the GSC shim continues its reset in the
background. While the shim reset is ongoing, the CS is able to accept
new context submission, but any commands that require the shim will
be stalled until the reset is completed. This means that we can keep
submitting to the GSCCS as long as we make sure that the preemption
timeout is big enough to cover any delay introduced by the reset; since
the GSC preempt timeout is not tunable at runtime, we only need to check
that the value set in kconfig is big enough (and increase it if it
isn't).
When the shim reset completes, a specific CS interrupt is triggered,
in response to which we need to check the GSCI_TIMER_STATUS register
to see if the reset was successful or not.
Note that the GSCI_TIMER_STATUS register is not power save/restored,
so it gets reset on MC6 entry. However, a reset failure stops MC6,
so in that scenario we're always guaranteed to find the correct value.
Since we can't check the register within interrupt context, the
existing GSC worker has been updated to handle it.
The expected action to take on ER failure is to trigger a driver FLR,
but we still don't support that, so for now we just print an error. A
comment has been added to the code to keep track of the FLR requirement.
v2: Add a check for the initial timeout value (Alan)
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
Cc: Alan Previn <alan.previn.teres.alexis at intel.com>
Reviewed-by: Alan Previn <alan.previn.teres.alexis at intel.com>
+ /mt/dim checkpatch f5246a1cf97dd1b9bf955148b0ca2cbf0b18d31e drm-intel
6688d6e5766b drm/xe/gsc: Handle GSCCS ER interrupt
-:220: WARNING:TYPO_SPELLING: 'preemptable' may be misspelled - perhaps 'preemptible'?
#220: FILE: drivers/gpu/drm/xe/xe_hw_engine.c:475:
+ * without being preemptable, which means worst case it can
^^^^^^^^^^^
-:233: WARNING:LINE_SPACING: Missing a blank line after declarations
#233: FILE: drivers/gpu/drm/xe/xe_hw_engine.c:488:
+ const u32 min_preempt_timeout = 600 * 1000;
+ if (hwe->eclass->sched_props.preempt_timeout_us < min_preempt_timeout) {
total: 0 errors, 2 warnings, 0 checks, 194 lines checked
More information about the Intel-xe
mailing list