156#define drm_debug_enabled_instrumented(category) \
158 pr_debug("todo: is this frequent enough to optimize ?\n"); \
159 drm_debug_enabled_raw(category); \
162#if defined(CONFIG_DRM_USE_DYNAMIC_DEBUG)
168#define __drm_debug_enabled(category) true
169#define drm_debug_enabled(category) drm_debug_enabled_instrumented(category)
171#define __drm_debug_enabled(category) drm_debug_enabled_raw(category)
172#define drm_debug_enabled(category) drm_debug_enabled_raw(category)
209 const
char * const bits[],
unsigned int nbits);
211 const
u8 *buf,
size_t len);
234#define drm_printf_indent(printer, indent, fmt, ...) \
235 drm_printf((printer), "%.*s" fmt, (indent), "\t\t\t\t\tX", ##__VA_ARGS__)
364static inline bool drm_coredump_printer_is_full(
struct drm_printer *p)
503 .line = { .series =
series, },
519void __drm_dev_dbg(struct _ddebug *desc, const struct
device *
dev,
530#define DRM_DEV_ERROR(dev, fmt, ...) \
531 drm_dev_printk(dev, KERN_ERR, "*ERROR* " fmt, ##__VA_ARGS__)
544#define DRM_DEV_ERROR_RATELIMITED(dev, fmt, ...) \
546 static DEFINE_RATELIMIT_STATE(_rs, \
547 DEFAULT_RATELIMIT_INTERVAL, \
548 DEFAULT_RATELIMIT_BURST); \
550 if (__ratelimit(&_rs)) \
551 DRM_DEV_ERROR(dev, fmt, ##__VA_ARGS__); \
555#define DRM_DEV_INFO(dev, fmt, ...) \
556 drm_dev_printk(dev, KERN_INFO, fmt, ##__VA_ARGS__)
559#define DRM_DEV_INFO_ONCE(dev, fmt, ...) \
561 static bool __print_once __read_mostly; \
562 if (!__print_once) { \
563 __print_once = true; \
564 DRM_DEV_INFO(dev, fmt, ##__VA_ARGS__); \
568#if !defined(CONFIG_DRM_USE_DYNAMIC_DEBUG)
569#define drm_dev_dbg(dev, cat, fmt, ...) \
570 __drm_dev_dbg(NULL, dev, cat, fmt, ##__VA_ARGS__)
572#define drm_dev_dbg(dev, cat, fmt, ...) \
573 _dynamic_func_call_cls(cat, fmt, __drm_dev_dbg, \
574 dev, cat, fmt, ##__VA_ARGS__)
585#define DRM_DEV_DEBUG(dev, fmt, ...) \
586 drm_dev_dbg(dev, DRM_UT_CORE, fmt, ##__VA_ARGS__)
595#define DRM_DEV_DEBUG_DRIVER(dev, fmt, ...) \
596 drm_dev_dbg(dev, DRM_UT_DRIVER, fmt, ##__VA_ARGS__)
605#define DRM_DEV_DEBUG_KMS(dev, fmt, ...) \
606 drm_dev_dbg(dev, DRM_UT_KMS, fmt, ##__VA_ARGS__)
621#define __drm_printk(drm, level, type, fmt, ...) \
622 dev_##level##type(__drm_to_dev(drm), "[drm] " fmt, ##__VA_ARGS__)
625#define drm_info(drm, fmt, ...) \
626 __drm_printk((drm), info,, fmt, ##__VA_ARGS__)
628#define drm_notice(drm, fmt, ...) \
629 __drm_printk((drm), notice,, fmt, ##__VA_ARGS__)
631#define drm_warn(drm, fmt, ...) \
632 __drm_printk((drm), warn,, fmt, ##__VA_ARGS__)
634#define drm_err(drm, fmt, ...) \
635 __drm_printk((drm), err,, "*ERROR* " fmt, ##__VA_ARGS__)
638#define drm_info_once(drm, fmt, ...) \
639 __drm_printk((drm), info, _once, fmt, ##__VA_ARGS__)
641#define drm_notice_once(drm, fmt, ...) \
642 __drm_printk((drm), notice, _once, fmt, ##__VA_ARGS__)
644#define drm_warn_once(drm, fmt, ...) \
645 __drm_printk((drm), warn, _once, fmt, ##__VA_ARGS__)
647#define drm_err_once(drm, fmt, ...) \
648 __drm_printk((drm), err, _once, "*ERROR* " fmt, ##__VA_ARGS__)
651#define drm_err_ratelimited(drm, fmt, ...) \
652 __drm_printk((drm), err, _ratelimited, "*ERROR* " fmt, ##__VA_ARGS__)
655#define drm_dbg_core(drm, fmt, ...) \
656 drm_dev_dbg(__drm_to_dev(drm), DRM_UT_CORE, fmt, ##__VA_ARGS__)
657#define drm_dbg_driver(drm, fmt, ...) \
658 drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRIVER, fmt, ##__VA_ARGS__)
659#define drm_dbg_kms(drm, fmt, ...) \
660 drm_dev_dbg(__drm_to_dev(drm), DRM_UT_KMS, fmt, ##__VA_ARGS__)
661#define drm_dbg_prime(drm, fmt, ...) \
662 drm_dev_dbg(__drm_to_dev(drm), DRM_UT_PRIME, fmt, ##__VA_ARGS__)
663#define drm_dbg_atomic(drm, fmt, ...) \
664 drm_dev_dbg(__drm_to_dev(drm), DRM_UT_ATOMIC, fmt, ##__VA_ARGS__)
665#define drm_dbg_vbl(drm, fmt, ...) \
666 drm_dev_dbg(__drm_to_dev(drm), DRM_UT_VBL, fmt, ##__VA_ARGS__)
667#define drm_dbg_state(drm, fmt, ...) \
668 drm_dev_dbg(__drm_to_dev(drm), DRM_UT_STATE, fmt, ##__VA_ARGS__)
669#define drm_dbg_lease(drm, fmt, ...) \
670 drm_dev_dbg(__drm_to_dev(drm), DRM_UT_LEASE, fmt, ##__VA_ARGS__)
671#define drm_dbg_dp(drm, fmt, ...) \
672 drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DP, fmt, ##__VA_ARGS__)
673#define drm_dbg_drmres(drm, fmt, ...) \
674 drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRMRES, fmt, ##__VA_ARGS__)
676#define drm_dbg(drm, fmt, ...) drm_dbg_driver(drm, fmt, ##__VA_ARGS__)
685void __drm_err(const
char *
format, ...);
687#if !defined(CONFIG_DRM_USE_DYNAMIC_DEBUG)
688#define __drm_dbg(cat, fmt, ...) __drm_dev_dbg(NULL, NULL, cat, fmt, ##__VA_ARGS__)
690#define __drm_dbg(cat, fmt, ...) \
691 _dynamic_func_call_cls(cat, fmt, __drm_dev_dbg, \
692 NULL, cat, fmt, ##__VA_ARGS__)
697#define _DRM_PRINTK(once, level, fmt, ...) \
698 printk##once(KERN_##level "[" DRM_NAME "] " fmt, ##__VA_ARGS__)
701#define DRM_INFO(fmt, ...) \
702 _DRM_PRINTK(, INFO, fmt, ##__VA_ARGS__)
704#define DRM_NOTE(fmt, ...) \
705 _DRM_PRINTK(, NOTICE, fmt, ##__VA_ARGS__)
707#define DRM_WARN(fmt, ...) \
708 _DRM_PRINTK(, WARNING, fmt, ##__VA_ARGS__)
711#define DRM_INFO_ONCE(fmt, ...) \
712 _DRM_PRINTK(_once, INFO, fmt, ##__VA_ARGS__)
714#define DRM_NOTE_ONCE(fmt, ...) \
715 _DRM_PRINTK(_once, NOTICE, fmt, ##__VA_ARGS__)
717#define DRM_WARN_ONCE(fmt, ...) \
718 _DRM_PRINTK(_once, WARNING, fmt, ##__VA_ARGS__)
721#define DRM_ERROR(fmt, ...) \
722 __drm_err(fmt, ##__VA_ARGS__)
725#define DRM_ERROR_RATELIMITED(fmt, ...) \
726 DRM_DEV_ERROR_RATELIMITED(NULL, fmt, ##__VA_ARGS__)
729#define DRM_DEBUG(fmt, ...) \
730 __drm_dbg(DRM_UT_CORE, fmt, ##__VA_ARGS__)
733#define DRM_DEBUG_DRIVER(fmt, ...) \
734 __drm_dbg(DRM_UT_DRIVER, fmt, ##__VA_ARGS__)
737#define DRM_DEBUG_KMS(fmt, ...) \
738 __drm_dbg(DRM_UT_KMS, fmt, ##__VA_ARGS__)
741#define DRM_DEBUG_PRIME(fmt, ...) \
742 __drm_dbg(DRM_UT_PRIME, fmt, ##__VA_ARGS__)
745#define DRM_DEBUG_ATOMIC(fmt, ...) \
746 __drm_dbg(DRM_UT_ATOMIC, fmt, ##__VA_ARGS__)
749#define DRM_DEBUG_VBL(fmt, ...) \
750 __drm_dbg(DRM_UT_VBL, fmt, ##__VA_ARGS__)
753#define DRM_DEBUG_LEASE(fmt, ...) \
754 __drm_dbg(DRM_UT_LEASE, fmt, ##__VA_ARGS__)
757#define DRM_DEBUG_DP(fmt, ...) \
758 __drm_dbg(DRM_UT_DP, fmt, ## __VA_ARGS__)
760#define __DRM_DEFINE_DBG_RATELIMITED(category, drm, fmt, ...) \
762 static DEFINE_RATELIMIT_STATE(rs_, DEFAULT_RATELIMIT_INTERVAL, DEFAULT_RATELIMIT_BURST);\
764 if (drm_debug_enabled(DRM_UT_ ## category) && __ratelimit(&rs_)) \
765 drm_dev_printk(__drm_to_dev(drm), KERN_DEBUG, fmt, ## __VA_ARGS__); \
768#define drm_dbg_ratelimited(drm, fmt, ...) \
769 __DRM_DEFINE_DBG_RATELIMITED(DRIVER, drm, fmt, ## __VA_ARGS__)
771#define drm_dbg_kms_ratelimited(drm, fmt, ...) \
772 __DRM_DEFINE_DBG_RATELIMITED(KMS, drm, fmt, ## __VA_ARGS__)
785#define drm_WARN(drm, condition, format, arg...) \
786 WARN(condition, "%s %s: [drm] " format, \
787 dev_driver_string(__drm_to_dev(drm)), \
788 dev_name(__drm_to_dev(drm)), ## arg)
790#define drm_WARN_ONCE(drm, condition, format, arg...) \
791 WARN_ONCE(condition, "%s %s: [drm] " format, \
792 dev_driver_string(__drm_to_dev(drm)), \
793 dev_name(__drm_to_dev(drm)), ## arg)
795#define drm_WARN_ON(drm, x) \
796 drm_WARN((drm), (x), "%s", \
797 "drm_WARN_ON(" __stringify(x) ")")
799#define drm_WARN_ON_ONCE(drm, x) \
800 drm_WARN_ONCE((drm), (x), "%s", \
801 "drm_WARN_ON_ONCE(" __stringify(x) ")")
int64_t ssize_t
Definition stddef.h:38
char * va_list
Definition acmsvcex.h:186
#define NULL
Definition actypes.h:561
#define _THIS_IP_
Definition linkage.h:46
#define BIT(nr)
Definition bitops.h:112
#define __printf(fmt_idx, arg_idx)
Definition compiler.h:144
#define unlikely(x)
Definition compiler.h:30
const struct device * dev
Definition drm_print.h:519
const char const char * format
Definition drm_print.h:516
void __drm_printfn_err(struct drm_printer *p, struct va_format *vaf)
const char * fmt
Definition drm_print.h:221
void __drm_printfn_info(struct drm_printer *p, struct va_format *vaf)
const char void drm_puts(struct drm_printer *p, const char *str)
const char * level
Definition drm_print.h:515
void __drm_puts_coredump(struct drm_printer *p, const char *str)
void __drm_printfn_coredump(struct drm_printer *p, struct va_format *vaf)
void drm_print_hex_dump(struct drm_printer *p, const char *prefix, const u8 *buf, size_t len)
drm_debug_category
Definition drm_print.h:105
@ DRM_UT_PRIME
Definition drm_print.h:124
@ DRM_UT_VBL
Definition drm_print.h:132
@ DRM_UT_DRMRES
Definition drm_print.h:148
@ DRM_UT_DP
Definition drm_print.h:144
@ DRM_UT_CORE
Definition drm_print.h:111
@ DRM_UT_LEASE
Definition drm_print.h:140
@ DRM_UT_KMS
Definition drm_print.h:120
@ DRM_UT_ATOMIC
Definition drm_print.h:128
@ DRM_UT_DRIVER
Definition drm_print.h:116
@ DRM_UT_STATE
Definition drm_print.h:136
void drm_print_bits(struct drm_printer *p, unsigned long value, const char *const bits[], unsigned int nbits)
void drm_print_regset32(struct drm_printer *p, struct debugfs_regset32 *regset)
const char va_list * va
Definition drm_print.h:222
void __drm_puts_seq_file(struct drm_printer *p, const char *str)
void __drm_printfn_seq_file(struct drm_printer *p, struct va_format *vaf)
void __drm_printfn_line(struct drm_printer *p, struct va_format *vaf)
unsigned long __drm_debug
void __drm_printfn_dbg(struct drm_printer *p, struct va_format *vaf)
const char * f
Definition drm_print.h:205
size_t len
Definition initial.c:23
uint8_t u8
Definition kernel.h:14
Definition drm_device.h:75
struct device * dev
Definition drm_device.h:83
Definition drm_print.h:244
ssize_t offset
Definition drm_print.h:249
ssize_t remain
Definition drm_print.h:247
ssize_t start
Definition drm_print.h:246
void * data
Definition drm_print.h:245
Definition drm_print.h:181
void * arg
Definition drm_print.h:185
const void * origin
Definition drm_print.h:186
struct drm_printer::@52 line
const char * prefix
Definition drm_print.h:187
enum drm_debug_category category
Definition drm_print.h:192
unsigned int series
Definition drm_print.h:189
unsigned int counter
Definition drm_print.h:190
void(* puts)(struct drm_printer *p, const char *str)
Definition drm_print.h:184
void(* printfn)(struct drm_printer *p, struct va_format *vaf)
Definition drm_print.h:183