|
@@ -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__)
|
|
|
|