Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/i915/guc: Disable rpm wakeref asserts in GuC irq handler

We're seeing "RPM wakelock ref not held during HW access" warning
otherwise. Since IRQs are synced for runtime suspend we can just disable
the wakeref asserts.

Reported-by: Marta Löfstedt <marta.lofstedt@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105710
Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180714173703.7894-1-chris@chris-wilson.co.uk
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

authored by

Michał Winiarski and committed by
Chris Wilson
e5cae659 60a94324

+2
+2
drivers/gpu/drm/i915/intel_guc.c
··· 466 466 * could happen that GuC sets the bit for 2nd interrupt but Host 467 467 * clears out the bit on handling the 1st interrupt. 468 468 */ 469 + disable_rpm_wakeref_asserts(dev_priv); 469 470 spin_lock(&guc->irq_lock); 470 471 val = I915_READ(SOFT_SCRATCH(15)); 471 472 msg = val & guc->msg_enabled_mask; 472 473 I915_WRITE(SOFT_SCRATCH(15), val & ~msg); 473 474 spin_unlock(&guc->irq_lock); 475 + enable_rpm_wakeref_asserts(dev_priv); 474 476 475 477 intel_guc_to_host_process_recv_msg(guc, msg); 476 478 }