]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
accel/ivpu: Clear runtime_error after pm_runtime_resume_and_get() fails
authorJacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Wed, 29 Jan 2025 12:40:08 +0000 (13:40 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 17 Feb 2025 09:05:30 +0000 (10:05 +0100)
commit f2bc2afe34c107a02ce829a4039e85514feafe55 upstream.

pm_runtime_resume_and_get() sets dev->power.runtime_error that causes
all subsequent pm_runtime_get_sync() calls to fail.
Clear the runtime_error using pm_runtime_set_suspended(), so the driver
doesn't have to be reloaded to recover when the NPU fails to boot during
runtime resume.

Fixes: 7d4b4c74432d ("accel/ivpu: Remove suspend_reschedule_counter")
Cc: stable@vger.kernel.org # v6.11+
Reviewed-by: Maciej Falkowski <maciej.falkowski@linux.intel.com>
Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250129124009.1039982-3-jacek.lawrynowicz@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/accel/ivpu/ivpu_pm.c

index 682da13b0d671e5be4c6b2fa0c1161d07aaac619..ef9a4ba18cb8a89f4f9cbf9c1579dbdaad59ffcd 100644 (file)
@@ -295,7 +295,10 @@ int ivpu_rpm_get(struct ivpu_device *vdev)
        int ret;
 
        ret = pm_runtime_resume_and_get(vdev->drm.dev);
-       drm_WARN_ON(&vdev->drm, ret < 0);
+       if (ret < 0) {
+               ivpu_err(vdev, "Failed to resume NPU: %d\n", ret);
+               pm_runtime_set_suspended(vdev->drm.dev);
+       }
 
        return ret;
 }