Message ID | 20190817131144.26884-2-michal.wajdeczko@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Don't fail on uc init step | expand |
Quoting Michal Wajdeczko (2019-08-17 14:11:42) > 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: Michal Wajdeczko <michal.wajdeczko@intel.com> > Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> > Cc: Chris Wilson <chris@chris-wilson.co.uk> > --- > drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 8 +++----- > 1 file changed, 3 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c > index 890ae6b4a3d0..527de1fd9d78 100644 > --- a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c > +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c > @@ -559,18 +559,16 @@ void intel_uc_fw_fini(struct intel_uc_fw *uc_fw) > > /** > * intel_uc_fw_cleanup_fetch - cleanup uC firmware > - * > * @uc_fw: uC firmware > * > * Cleans up uC firmware by releasing the firmware GEM obj. > */ > 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); > - if (obj) > - i915_gem_object_put(obj); > + i915_gem_object_put(fetch_and_zero(&uc_fw->obj)); Ok, to have an object requires the fw to have successfully been loaded. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> -Chris
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c index 890ae6b4a3d0..527de1fd9d78 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c @@ -559,18 +559,16 @@ void intel_uc_fw_fini(struct intel_uc_fw *uc_fw) /** * intel_uc_fw_cleanup_fetch - cleanup uC firmware - * * @uc_fw: uC firmware * * Cleans up uC firmware by releasing the firmware GEM obj. */ 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); - if (obj) - i915_gem_object_put(obj); + i915_gem_object_put(fetch_and_zero(&uc_fw->obj)); intel_uc_fw_change_status(uc_fw, INTEL_UC_FIRMWARE_SELECTED); }
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: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> --- drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-)