Skip to content

Commit f482f1a

Browse files
jnikulalutzbichler
authored andcommitted
drm/print: require struct drm_device for drm_err() and friends
The expectation is that the struct drm_device based logging helpers get passed an actual struct drm_device pointer rather than some random struct pointer where you can dereference the ->dev member. Add a static inline helper to convert struct drm_device to struct device, with the main benefit being the type checking of the macro argument. As a side effect, this also reduces macro argument double references. Reviewed-by: Simona Vetter <[email protected]> Reviewed-by: Louis Chauvet <[email protected]> Reviewed-by: Luca Ceresoli <[email protected]> Signed-off-by: Jani Nikula <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/dfe6e774883e6ef93cfaa2b6fe92b804061ab9d9.1737644530.git.jani.nikula@intel.com
1 parent 569f5f2 commit f482f1a

File tree

1 file changed

+32
-27
lines changed

1 file changed

+32
-27
lines changed

include/drm/drm_print.h

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -632,9 +632,15 @@ static inline struct drm_printer drm_line_printer(struct drm_printer *p,
632632
* Prefer drm_device based logging over device or prink based logging.
633633
*/
634634

635+
/* Helper to enforce struct drm_device type */
636+
static inline struct device *__drm_to_dev(const struct drm_device *drm)
637+
{
638+
return drm ? drm->dev : NULL;
639+
}
640+
635641
/* Helper for struct drm_device based logging. */
636642
#define __drm_printk(drm, level, type, fmt, ...) \
637-
dev_##level##type((drm) ? (drm)->dev : NULL, "[drm] " fmt, ##__VA_ARGS__)
643+
dev_##level##type(__drm_to_dev(drm), "[drm] " fmt, ##__VA_ARGS__)
638644

639645

640646
#define drm_info(drm, fmt, ...) \
@@ -670,47 +676,47 @@ static inline struct drm_printer drm_line_printer(struct drm_printer *p,
670676
#ifdef __linux__
671677

672678
#define drm_dbg_core(drm, fmt, ...) \
673-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_CORE, fmt, ##__VA_ARGS__)
679+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_CORE, fmt, ##__VA_ARGS__)
674680
#define drm_dbg_driver(drm, fmt, ...) \
675-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRIVER, fmt, ##__VA_ARGS__)
681+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRIVER, fmt, ##__VA_ARGS__)
676682
#define drm_dbg_kms(drm, fmt, ...) \
677-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_KMS, fmt, ##__VA_ARGS__)
683+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_KMS, fmt, ##__VA_ARGS__)
678684
#define drm_dbg_prime(drm, fmt, ...) \
679-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_PRIME, fmt, ##__VA_ARGS__)
685+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_PRIME, fmt, ##__VA_ARGS__)
680686
#define drm_dbg_atomic(drm, fmt, ...) \
681-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_ATOMIC, fmt, ##__VA_ARGS__)
687+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_ATOMIC, fmt, ##__VA_ARGS__)
682688
#define drm_dbg_vbl(drm, fmt, ...) \
683-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_VBL, fmt, ##__VA_ARGS__)
689+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_VBL, fmt, ##__VA_ARGS__)
684690
#define drm_dbg_state(drm, fmt, ...) \
685-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_STATE, fmt, ##__VA_ARGS__)
691+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_STATE, fmt, ##__VA_ARGS__)
686692
#define drm_dbg_lease(drm, fmt, ...) \
687-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_LEASE, fmt, ##__VA_ARGS__)
693+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_LEASE, fmt, ##__VA_ARGS__)
688694
#define drm_dbg_dp(drm, fmt, ...) \
689-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DP, fmt, ##__VA_ARGS__)
695+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DP, fmt, ##__VA_ARGS__)
690696
#define drm_dbg_drmres(drm, fmt, ...) \
691-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRMRES, fmt, ##__VA_ARGS__)
697+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRMRES, fmt, ##__VA_ARGS__)
692698
#else
693699

694700
#define drm_dbg_core(drm, fmt, ...) \
695-
drm_dev_dbg((drm)->dev, DRM_UT_CORE, __func__, fmt, ##__VA_ARGS__)
701+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_CORE, __func__, fmt, ##__VA_ARGS__)
696702
#define drm_dbg_driver(drm, fmt, ...) \
697-
drm_dev_dbg((drm)->dev, DRM_UT_DRIVER, __func__, fmt, ##__VA_ARGS__)
703+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRIVER, __func__, fmt, ##__VA_ARGS__)
698704
#define drm_dbg_kms(drm, fmt, ...) \
699-
drm_dev_dbg((drm)->dev, DRM_UT_KMS, __func__, fmt, ##__VA_ARGS__)
705+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_KMS, __func__, fmt, ##__VA_ARGS__)
700706
#define drm_dbg_prime(drm, fmt, ...) \
701-
drm_dev_dbg((drm)->dev, DRM_UT_PRIME, __func__, fmt, ##__VA_ARGS__)
707+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_PRIME, __func__, fmt, ##__VA_ARGS__)
702708
#define drm_dbg_atomic(drm, fmt, ...) \
703-
drm_dev_dbg((drm)->dev, DRM_UT_ATOMIC, __func__, fmt, ##__VA_ARGS__)
709+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_ATOMIC, __func__, fmt, ##__VA_ARGS__)
704710
#define drm_dbg_vbl(drm, fmt, ...) \
705-
drm_dev_dbg((drm)->dev, DRM_UT_VBL, __func__, fmt, ##__VA_ARGS__)
711+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_VBL, __func__, fmt, ##__VA_ARGS__)
706712
#define drm_dbg_state(drm, fmt, ...) \
707-
drm_dev_dbg((drm)->dev, DRM_UT_STATE, __func__, fmt, ##__VA_ARGS__)
713+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_STATE, __func__, fmt, ##__VA_ARGS__)
708714
#define drm_dbg_lease(drm, fmt, ...) \
709-
drm_dev_dbg((drm)->dev, DRM_UT_LEASE, __func__, fmt, ##__VA_ARGS__)
715+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_LEASE, __func__, fmt, ##__VA_ARGS__)
710716
#define drm_dbg_dp(drm, fmt, ...) \
711-
drm_dev_dbg((drm)->dev, DRM_UT_DP, __func__, fmt, ##__VA_ARGS__)
717+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DP, __func__, fmt, ##__VA_ARGS__)
712718
#define drm_dbg_drmres(drm, fmt, ...) \
713-
drm_dev_dbg((drm)->dev, DRM_UT_DRMRES, __func__, fmt, ##__VA_ARGS__)
719+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRMRES, __func__, fmt, ##__VA_ARGS__)
714720
#endif
715721

716722
#define drm_dbg(drm, fmt, ...) drm_dbg_driver(drm, fmt, ##__VA_ARGS__)
@@ -842,10 +848,9 @@ void __drm_err(const char *function_name, const char *format, ...);
842848
#define __DRM_DEFINE_DBG_RATELIMITED(category, drm, fmt, ...) \
843849
({ \
844850
static DEFINE_RATELIMIT_STATE(rs_, DEFAULT_RATELIMIT_INTERVAL, DEFAULT_RATELIMIT_BURST);\
845-
const struct drm_device *drm_ = (drm); \
846851
\
847852
if (drm_debug_enabled(DRM_UT_ ## category) && __ratelimit(&rs_)) \
848-
drm_dev_printk(drm_ ? drm_->dev : NULL, KERN_DEBUG, fmt, ## __VA_ARGS__); \
853+
drm_dev_printk(__drm_to_dev(drm), KERN_DEBUG, fmt, ## __VA_ARGS__); \
849854
})
850855

851856
#define drm_dbg_ratelimited(drm, fmt, ...) \
@@ -867,13 +872,13 @@ void __drm_err(const char *function_name, const char *format, ...);
867872
/* Helper for struct drm_device based WARNs */
868873
#define drm_WARN(drm, condition, format, arg...) \
869874
WARN(condition, "%s %s: [drm] " format, \
870-
dev_driver_string((drm)->dev), \
871-
dev_name((drm)->dev), ## arg)
875+
dev_driver_string(__drm_to_dev(drm)), \
876+
dev_name(__drm_to_dev(drm)), ## arg)
872877

873878
#define drm_WARN_ONCE(drm, condition, format, arg...) \
874879
WARN_ONCE(condition, "%s %s: [drm] " format, \
875-
dev_driver_string((drm)->dev), \
876-
dev_name((drm)->dev), ## arg)
880+
dev_driver_string(__drm_to_dev(drm)), \
881+
dev_name(__drm_to_dev(drm)), ## arg)
877882

878883
#define drm_WARN_ON(drm, x) \
879884
drm_WARN((drm), (x), "%s", \

0 commit comments

Comments
 (0)