aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_runtime_pm.c
diff options
context:
space:
mode:
authorPaulo Zanoni <paulo.r.zanoni@intel.com>2018-08-20 19:31:36 -0400
committerPaulo Zanoni <paulo.r.zanoni@intel.com>2018-08-24 15:30:26 -0400
commit99da0b35396f3907fa8594b554bf81904389c48c (patch)
treec1f807a9c8237ef86104f2b60aa637a52408edc5 /drivers/gpu/drm/i915/intel_runtime_pm.c
parent39d1e234e1e13f65f4d53715d34aadfb6249eeaf (diff)
drm/i915: WARN() if we can't lookup_power_well()
None of the current lookup_power_well() callers are actually checking for NULL return values, they all just use the pointer right away. The first idea was to replace these theoretical segfaults with a BUG() since this would at least make our code a little more explicit to the reader. It was suggested that just converting the BUG() to a WARN() and returning any power well would probably be better since it would still keep the system running while at the same time exposing the driver bug. We can only hit this NULL/BUG()/WARN() condition if we try to lookup a power well that isn't defined on a given platform. If that ever happens, we have to fix our code, making it lookup the correct power well. Because of this, I don't think it's worth trying to implement error checking in every caller. Improving our CI system will be a better use of our time once a bug is found in the wild. v2: Avoid the BUG() with a WARN() return a random PW (Michal). Cc: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Imre Deak <imre.deak@intel.com> Reviewed-by: Imre Deak <imre.deak@intel.com> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20180820233139.11936-2-paulo.r.zanoni@intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/intel_runtime_pm.c')
-rw-r--r--drivers/gpu/drm/i915/intel_runtime_pm.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915/intel_runtime_pm.c
index 1b10b7041513..dd5d1ba4a7f1 100644
--- a/drivers/gpu/drm/i915/intel_runtime_pm.c
+++ b/drivers/gpu/drm/i915/intel_runtime_pm.c
@@ -1098,7 +1098,15 @@ lookup_power_well(struct drm_i915_private *dev_priv,
1098 return power_well; 1098 return power_well;
1099 } 1099 }
1100 1100
1101 return NULL; 1101 /*
1102 * It's not feasible to add error checking code to the callers since
1103 * this condition really shouldn't happen and it doesn't even make sense
1104 * to abort things like display initialization sequences. Just return
1105 * the first power well and hope the WARN gets reported so we can fix
1106 * our driver.
1107 */
1108 WARN(1, "Power well %d not defined for this platform\n", power_well_id);
1109 return &power_domains->power_wells[0];
1102} 1110}
1103 1111
1104#define BITS_SET(val, bits) (((val) & (bits)) == (bits)) 1112#define BITS_SET(val, bits) (((val) & (bits)) == (bits))