[Intel-gfx] [PATCH] drm/i915/display: Fix warning callstack for imbalance wakeref
Jani Nikula
jani.nikula at linux.intel.com
Tue Aug 23 11:00:44 UTC 2022
On Tue, 23 Aug 2022, Mitul Golani <mitulkumar.ajitkumar.golani at intel.com> wrote:
> While executing i915_selftest, wakeref imbalance warning is seen
> with i915_selftest failure.
>
> Currently when Driver is suspended, while doing unregister
> it is taking wakeref without resuming the device.
> This patch is resuming the device, if driver is already suspended
> and doing unregister process. It will check the suspend state and
> if driver is not resumed before taking wakeref then resume before
> it.
>
> Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani at intel.com>
> ---
> drivers/gpu/drm/i915/i915_driver.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
> index deb8a8b76965..b3741bd49e2c 100644
> --- a/drivers/gpu/drm/i915/i915_driver.c
> +++ b/drivers/gpu/drm/i915/i915_driver.c
> @@ -948,6 +948,15 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
>
> void i915_driver_remove(struct drm_i915_private *i915)
> {
> + int ret;
> + /*
> + * Resuming Device if already suspended to complete driver unregistration
> + */
> + if (i915->runtime_pm.suspended && !atomic_read(&i915->runtime_pm.wakeref_count)) {
> + ret = pm_runtime_get_sync(rpm->kdev);
> + drm_WARN_ONCE(&i915->drm, ret < 0, "pm_runtime_get_sync() failed: %d\n", ret);
> + }
> +
I don't know what the right fix is, but under no circumstances are we
adding detailed low level code into high level function like
i915_driver_remove().
BR,
Jani.
> disable_rpm_wakeref_asserts(&i915->runtime_pm);
>
> i915_driver_unregister(i915);
--
Jani Nikula, Intel Open Source Graphics Center
More information about the Intel-gfx
mailing list