diff mbox

drm: add DRM_ERROR_RATELIMITED

Message ID 1385062191-30854-1-git-send-email-robdclark@gmail.com (mailing list archive)
State Accepted
Headers show

Commit Message

Rob Clark Nov. 21, 2013, 7:29 p.m. UTC
For error traces in situations that can run away, it is nice to have a
rate-limited version of DRM_ERROR() to avoid massing log flooding.

Signed-off-by: Rob Clark <robdclark@gmail.com>
---
 include/drm/drmP.h | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

Comments

Thierry Reding Nov. 22, 2013, 3:34 p.m. UTC | #1
On Thu, Nov 21, 2013 at 02:29:51PM -0500, Rob Clark wrote:
> For error traces in situations that can run away, it is nice to have a
> rate-limited version of DRM_ERROR() to avoid massing log flooding.

s/massing/massive/?

Other than that, looks good:

Reviewed-by: Thierry Reding <treding@nvidia.com>
Rob Clark Nov. 22, 2013, 4:37 p.m. UTC | #2
On Fri, Nov 22, 2013 at 10:34 AM, Thierry Reding
<thierry.reding@gmail.com> wrote:
> On Thu, Nov 21, 2013 at 02:29:51PM -0500, Rob Clark wrote:
>> For error traces in situations that can run away, it is nice to have a
>> rate-limited version of DRM_ERROR() to avoid massing log flooding.
>
> s/massing/massive/?

errg, yes

Dave, let me know if you want me to resend or just smash that spelling
fix in yourself

BR,
-R

> Other than that, looks good:
>
> Reviewed-by: Thierry Reding <treding@nvidia.com>
diff mbox

Patch

diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 0a372b2..dd6699e 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -56,6 +56,7 @@ 
 #include <linux/mutex.h>
 #include <linux/io.h>
 #include <linux/slab.h>
+#include <linux/ratelimit.h>
 #if defined(__alpha__) || defined(__powerpc__)
 #include <asm/pgtable.h>	/* For pte_wrprotect */
 #endif
@@ -180,6 +181,22 @@  int drm_err(const char *func, const char *format, ...);
 #define DRM_ERROR(fmt, ...)				\
 	drm_err(__func__, fmt, ##__VA_ARGS__)
 
+/**
+ * Rate limited error output.  Like DRM_ERROR() but won't flood the log.
+ *
+ * \param fmt printf() like format string.
+ * \param arg arguments
+ */
+#define DRM_ERROR_RATELIMITED(fmt, ...)				\
+({									\
+	static DEFINE_RATELIMIT_STATE(_rs,				\
+				      DEFAULT_RATELIMIT_INTERVAL,	\
+				      DEFAULT_RATELIMIT_BURST);		\
+									\
+	if (__ratelimit(&_rs))						\
+		drm_err(__func__, fmt, ##__VA_ARGS__);			\
+})
+
 #define DRM_INFO(fmt, ...)				\
 	printk(KERN_INFO "[" DRM_NAME "] " fmt, ##__VA_ARGS__)