drm/i915: Local debug BUG_ON for intel_wakeref
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 21 Jun 2019 18:38:01 +0000 (19:38 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 21 Jun 2019 18:48:00 +0000 (19:48 +0100)
Avoid pulling in i915_gem.h just so that we can use a conditional BUG_ON
for debugging.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190621183801.23252-5-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/intel_wakeref.c
drivers/gpu/drm/i915/intel_wakeref.h

index 3db6fa68282340e4c85a53151a28906bb20fc803..06bd8b215cc2edc5d86af26f91a24a78521fc480 100644 (file)
@@ -5,7 +5,7 @@
  */
 
 #include "intel_runtime_pm.h"
-#include "i915_gem.h"
+#include "intel_wakeref.h"
 
 static void rpm_get(struct intel_runtime_pm *rpm, struct intel_wakeref *wf)
 {
@@ -17,7 +17,7 @@ static void rpm_put(struct intel_runtime_pm *rpm, struct intel_wakeref *wf)
        intel_wakeref_t wakeref = fetch_and_zero(&wf->wakeref);
 
        intel_runtime_pm_put(rpm, wakeref);
-       GEM_BUG_ON(!wakeref);
+       INTEL_WAKEREF_BUG_ON(!wakeref);
 }
 
 int __intel_wakeref_get_first(struct intel_runtime_pm *rpm,
@@ -48,6 +48,7 @@ int __intel_wakeref_get_first(struct intel_runtime_pm *rpm,
        atomic_inc(&wf->count);
        mutex_unlock(&wf->mutex);
 
+       INTEL_WAKEREF_BUG_ON(atomic_read(&wf->count) <= 0);
        return 0;
 }
 
@@ -115,7 +116,7 @@ void intel_wakeref_auto(struct intel_wakeref_auto *wf, unsigned long timeout)
        if (!refcount_inc_not_zero(&wf->count)) {
                spin_lock_irqsave(&wf->lock, flags);
                if (!refcount_inc_not_zero(&wf->count)) {
-                       GEM_BUG_ON(wf->wakeref);
+                       INTEL_WAKEREF_BUG_ON(wf->wakeref);
                        wf->wakeref = intel_runtime_pm_get_if_in_use(wf->rpm);
                        refcount_set(&wf->count, 1);
                }
@@ -134,5 +135,5 @@ void intel_wakeref_auto(struct intel_wakeref_auto *wf, unsigned long timeout)
 void intel_wakeref_auto_fini(struct intel_wakeref_auto *wf)
 {
        intel_wakeref_auto(wf, 0);
-       GEM_BUG_ON(wf->wakeref);
+       INTEL_WAKEREF_BUG_ON(wf->wakeref);
 }
index 9cbb2ebf575b5f610c27535728c4f9fd79c25ff4..d45e78639dc42636c5a2df4ddb4b1486038eef3f 100644 (file)
 #include <linux/stackdepot.h>
 #include <linux/timer.h>
 
+#if IS_ENABLED(CONFIG_DRM_I915_DEBUG)
+#define INTEL_WAKEREF_BUG_ON(expr) BUG_ON(expr)
+#else
+#define INTEL_WAKEREF_BUG_ON(expr) BUILD_BUG_ON_INVALID(expr)
+#endif
+
 struct intel_runtime_pm;
 
 typedef depot_stack_handle_t intel_wakeref_t;
@@ -86,6 +92,7 @@ intel_wakeref_put(struct intel_runtime_pm *rpm,
                  struct intel_wakeref *wf,
                  int (*fn)(struct intel_wakeref *wf))
 {
+       INTEL_WAKEREF_BUG_ON(atomic_read(&wf->count) <= 0);
        if (atomic_dec_and_mutex_lock(&wf->count, &wf->mutex))
                return __intel_wakeref_put_last(rpm, wf, fn);