summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorLyude <cpaul@redhat.com>2016-08-05 20:30:38 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2016-08-09 18:23:43 +0200
commit27528c667a210845b35a1f49c810dba469bced52 (patch)
treef25ee1e8b89b29def0f103c164453f8912fa645b /include
parentcfc5adea1955ee8ddb62cc0d20ee454472033b6a (diff)
drm: Add ratelimited versions of the DRM_DEBUG* macros
There's a couple of places where this would be useful for drivers (such as reporting DP aux transaction timeouts). Signed-off-by: Lyude <cpaul@redhat.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/1470443443-27252-7-git-send-email-cpaul@redhat.com
Diffstat (limited to 'include')
-rw-r--r--include/drm/drmP.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 856c174bd730..f8e87fde611b 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -232,6 +232,36 @@ void drm_err(const char *format, ...);
drm_ut_debug_printk(__func__, fmt, ##args); \
} while (0)
+#define _DRM_DEFINE_DEBUG_RATELIMITED(level, fmt, args...) \
+ do { \
+ if (unlikely(drm_debug & DRM_UT_ ## level)) { \
+ static DEFINE_RATELIMIT_STATE( \
+ _rs, \
+ DEFAULT_RATELIMIT_INTERVAL, \
+ DEFAULT_RATELIMIT_BURST); \
+ \
+ if (__ratelimit(&_rs)) { \
+ drm_ut_debug_printk(__func__, fmt, \
+ ##args); \
+ } \
+ } \
+ } while (0)
+
+/**
+ * Rate limited debug output. Like DRM_DEBUG() but won't flood the log.
+ *
+ * \param fmt printf() like format string.
+ * \param arg arguments
+ */
+#define DRM_DEBUG_RATELIMITED(fmt, args...) \
+ _DRM_DEFINE_DEBUG_RATELIMITED(CORE, fmt, ##args)
+#define DRM_DEBUG_DRIVER_RATELIMITED(fmt, args...) \
+ _DRM_DEFINE_DEBUG_RATELIMITED(DRIVER, fmt, ##args)
+#define DRM_DEBUG_KMS_RATELIMITED(fmt, args...) \
+ _DRM_DEFINE_DEBUG_RATELIMITED(KMS, fmt, ##args)
+#define DRM_DEBUG_PRIME_RATELIMITED(fmt, args...) \
+ _DRM_DEFINE_DEBUG_RATELIMITED(PRIME, fmt, ##args)
+
/*@}*/
/***********************************************************************/