Commit 5bde5a45 authored by Michal Wajdeczko's avatar Michal Wajdeczko Committed by Chris Wilson

drm/i915/uc: Cleanup fw fetch only if it was successful

We can rely on firmware status AVAILABLE to determine if any
firmware cleanup is required. Also don't unconditionally reset
fw status to SELECTED as we will loose MISSING/ERROR codes.
Signed-off-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20190817131144.26884-2-michal.wajdeczko@intel.com
parent 9559c875
...@@ -559,18 +559,16 @@ void intel_uc_fw_fini(struct intel_uc_fw *uc_fw) ...@@ -559,18 +559,16 @@ void intel_uc_fw_fini(struct intel_uc_fw *uc_fw)
/** /**
* intel_uc_fw_cleanup_fetch - cleanup uC firmware * intel_uc_fw_cleanup_fetch - cleanup uC firmware
*
* @uc_fw: uC firmware * @uc_fw: uC firmware
* *
* Cleans up uC firmware by releasing the firmware GEM obj. * Cleans up uC firmware by releasing the firmware GEM obj.
*/ */
void intel_uc_fw_cleanup_fetch(struct intel_uc_fw *uc_fw) void intel_uc_fw_cleanup_fetch(struct intel_uc_fw *uc_fw)
{ {
struct drm_i915_gem_object *obj; if (!intel_uc_fw_is_available(uc_fw))
return;
obj = fetch_and_zero(&uc_fw->obj); i915_gem_object_put(fetch_and_zero(&uc_fw->obj));
if (obj)
i915_gem_object_put(obj);
intel_uc_fw_change_status(uc_fw, INTEL_UC_FIRMWARE_SELECTED); intel_uc_fw_change_status(uc_fw, INTEL_UC_FIRMWARE_SELECTED);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment