drm/i915: Report an earlier wedged event when suspending the engines
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 31 May 2019 11:32:45 +0000 (12:32 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 6 Jun 2019 14:21:51 +0000 (15:21 +0100)
On i915_gem_load_power_context() we do care whether or not we succeed in
completing the switch back to the kernel context (via idling the
engines). Currently, we detect if an error occurs while we wait, but we
do not report one if it occurred beforehand (and the status of the
switch is undefined). Check the current terminally wedged status on
entering the wait, and report it after flushing the requests, as if it
had occurred during our own wait.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110824
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190531113245.30042-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gem/i915_gem_pm.c

index 89bb6d822f6e97e4e6671e18902da52aec4a897c..f40f13c0b8b790ae35517c2aa2e28dc7648087ed 100644 (file)
@@ -90,7 +90,7 @@ static int pm_notifier(struct notifier_block *nb,
 
 static bool switch_to_kernel_context_sync(struct drm_i915_private *i915)
 {
-       bool result = true;
+       bool result = !i915_terminally_wedged(i915);
 
        do {
                if (i915_gem_wait_for_idle(i915,