drm/i915/guc: fix GuC suspend/resume
authorDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Tue, 16 Oct 2018 22:46:47 +0000 (15:46 -0700)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 17 Oct 2018 16:46:38 +0000 (17:46 +0100)
commit20fd600099754bb1d29405247c6c2b74ebc3b9f2
tree64828ad554640121f6b6f00eec415477c44e2fa1
parent138bdac891831d3e86ee75a5217c9b0f001ab12b
drm/i915/guc: fix GuC suspend/resume

The ENTER/EXIT_S_STATE actions queue the save/restore operation in GuC
FW and then return, so waiting on the H2G is not enough to guarantee
GuC is done.
When all the processing is done, GuC writes 0 to scratch register 14,
so we can poll on that. Note that GuC does not ensure that the value
in the register is different from 0 while the action is in progress
so we need to take care of that ourselves as well.

v2: improve comment, return early on GuC error and improve error
    message (Michal)

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20181016224648.2326-1-daniele.ceraolospurio@intel.com
drivers/gpu/drm/i915/intel_guc.c
drivers/gpu/drm/i915/intel_guc_fwif.h