drm/i915/guc: disable GuC submission earlier during GuC (re)load
authorDave Gordon <david.s.gordon@intel.com>
Tue, 7 Jun 2016 08:14:50 +0000 (09:14 +0100)
committerTvrtko Ursulin <tvrtko.ursulin@intel.com>
Tue, 7 Jun 2016 13:21:58 +0000 (14:21 +0100)
commit29fb72c7ad0347ab7492d633bc66dc8b5734dcc1
tree27f3374b7d11905218f1d8601b94d7d6978be948
parente556f7c168c4eeaffad0e53e1c37c27c086d51c6
drm/i915/guc: disable GuC submission earlier during GuC (re)load

When resetting and reloading the GuC, the GuC submission management code
also needs to destroy and recreate the GuC client(s). Currently this is
done by a separate call from the GuC loader, but really, it's just an
internal detail of the submission code. So here we remove the call from
the loader (which is too late, really, because the GuC has already been
reloaded at this point) and put it into guc_submission_init() instead.
This means that any preexisting client is destroyed *before* the GuC
(re)load and then recreated after, iff the firmware was successfully
loaded. If the GuC reload fails, we don't recreate the client, so
fallback to execlists mode (if active) won't leak the client object
(previously, the now-unusable client would have been left allocated,
and leaked if the driver were unloaded).

Signed-off-by: Dave Gordon <david.s.gordon@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
drivers/gpu/drm/i915/i915_guc_submission.c
drivers/gpu/drm/i915/intel_guc_loader.c