Skip to content

Commit c3c6792

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 52287ec commit c3c6792

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
@@ -629,9 +629,15 @@ static inline struct drm_printer drm_line_printer(struct drm_printer *p,
629629
* Prefer drm_device based logging over device or prink based logging.
630630
*/
631631

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

636642

637643
#define drm_info(drm, fmt, ...) \
@@ -667,47 +673,47 @@ static inline struct drm_printer drm_line_printer(struct drm_printer *p,
667673
#ifdef __linux__
668674

669675
#define drm_dbg_core(drm, fmt, ...) \
670-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_CORE, fmt, ##__VA_ARGS__)
676+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_CORE, fmt, ##__VA_ARGS__)
671677
#define drm_dbg_driver(drm, fmt, ...) \
672-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRIVER, fmt, ##__VA_ARGS__)
678+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRIVER, fmt, ##__VA_ARGS__)
673679
#define drm_dbg_kms(drm, fmt, ...) \
674-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_KMS, fmt, ##__VA_ARGS__)
680+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_KMS, fmt, ##__VA_ARGS__)
675681
#define drm_dbg_prime(drm, fmt, ...) \
676-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_PRIME, fmt, ##__VA_ARGS__)
682+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_PRIME, fmt, ##__VA_ARGS__)
677683
#define drm_dbg_atomic(drm, fmt, ...) \
678-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_ATOMIC, fmt, ##__VA_ARGS__)
684+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_ATOMIC, fmt, ##__VA_ARGS__)
679685
#define drm_dbg_vbl(drm, fmt, ...) \
680-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_VBL, fmt, ##__VA_ARGS__)
686+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_VBL, fmt, ##__VA_ARGS__)
681687
#define drm_dbg_state(drm, fmt, ...) \
682-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_STATE, fmt, ##__VA_ARGS__)
688+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_STATE, fmt, ##__VA_ARGS__)
683689
#define drm_dbg_lease(drm, fmt, ...) \
684-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_LEASE, fmt, ##__VA_ARGS__)
690+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_LEASE, fmt, ##__VA_ARGS__)
685691
#define drm_dbg_dp(drm, fmt, ...) \
686-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DP, fmt, ##__VA_ARGS__)
692+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DP, fmt, ##__VA_ARGS__)
687693
#define drm_dbg_drmres(drm, fmt, ...) \
688-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRMRES, fmt, ##__VA_ARGS__)
694+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRMRES, fmt, ##__VA_ARGS__)
689695
#else
690696

691697
#define drm_dbg_core(drm, fmt, ...) \
692-
drm_dev_dbg((drm)->dev, DRM_UT_CORE, __func__, fmt, ##__VA_ARGS__)
698+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_CORE, __func__, fmt, ##__VA_ARGS__)
693699
#define drm_dbg_driver(drm, fmt, ...) \
694-
drm_dev_dbg((drm)->dev, DRM_UT_DRIVER, __func__, fmt, ##__VA_ARGS__)
700+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRIVER, __func__, fmt, ##__VA_ARGS__)
695701
#define drm_dbg_kms(drm, fmt, ...) \
696-
drm_dev_dbg((drm)->dev, DRM_UT_KMS, __func__, fmt, ##__VA_ARGS__)
702+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_KMS, __func__, fmt, ##__VA_ARGS__)
697703
#define drm_dbg_prime(drm, fmt, ...) \
698-
drm_dev_dbg((drm)->dev, DRM_UT_PRIME, __func__, fmt, ##__VA_ARGS__)
704+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_PRIME, __func__, fmt, ##__VA_ARGS__)
699705
#define drm_dbg_atomic(drm, fmt, ...) \
700-
drm_dev_dbg((drm)->dev, DRM_UT_ATOMIC, __func__, fmt, ##__VA_ARGS__)
706+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_ATOMIC, __func__, fmt, ##__VA_ARGS__)
701707
#define drm_dbg_vbl(drm, fmt, ...) \
702-
drm_dev_dbg((drm)->dev, DRM_UT_VBL, __func__, fmt, ##__VA_ARGS__)
708+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_VBL, __func__, fmt, ##__VA_ARGS__)
703709
#define drm_dbg_state(drm, fmt, ...) \
704-
drm_dev_dbg((drm)->dev, DRM_UT_STATE, __func__, fmt, ##__VA_ARGS__)
710+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_STATE, __func__, fmt, ##__VA_ARGS__)
705711
#define drm_dbg_lease(drm, fmt, ...) \
706-
drm_dev_dbg((drm)->dev, DRM_UT_LEASE, __func__, fmt, ##__VA_ARGS__)
712+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_LEASE, __func__, fmt, ##__VA_ARGS__)
707713
#define drm_dbg_dp(drm, fmt, ...) \
708-
drm_dev_dbg((drm)->dev, DRM_UT_DP, __func__, fmt, ##__VA_ARGS__)
714+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DP, __func__, fmt, ##__VA_ARGS__)
709715
#define drm_dbg_drmres(drm, fmt, ...) \
710-
drm_dev_dbg((drm)->dev, DRM_UT_DRMRES, __func__, fmt, ##__VA_ARGS__)
716+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRMRES, __func__, fmt, ##__VA_ARGS__)
711717
#endif
712718

713719
#define drm_dbg(drm, fmt, ...) drm_dbg_driver(drm, fmt, ##__VA_ARGS__)
@@ -839,10 +845,9 @@ void __drm_err(const char *function_name, const char *format, ...);
839845
#define __DRM_DEFINE_DBG_RATELIMITED(category, drm, fmt, ...) \
840846
({ \
841847
static DEFINE_RATELIMIT_STATE(rs_, DEFAULT_RATELIMIT_INTERVAL, DEFAULT_RATELIMIT_BURST);\
842-
const struct drm_device *drm_ = (drm); \
843848
\
844849
if (drm_debug_enabled(DRM_UT_ ## category) && __ratelimit(&rs_)) \
845-
drm_dev_printk(drm_ ? drm_->dev : NULL, KERN_DEBUG, fmt, ## __VA_ARGS__); \
850+
drm_dev_printk(__drm_to_dev(drm), KERN_DEBUG, fmt, ## __VA_ARGS__); \
846851
})
847852

848853
#define drm_dbg_ratelimited(drm, fmt, ...) \
@@ -864,13 +869,13 @@ void __drm_err(const char *function_name, const char *format, ...);
864869
/* Helper for struct drm_device based WARNs */
865870
#define drm_WARN(drm, condition, format, arg...) \
866871
WARN(condition, "%s %s: [drm] " format, \
867-
dev_driver_string((drm)->dev), \
868-
dev_name((drm)->dev), ## arg)
872+
dev_driver_string(__drm_to_dev(drm)), \
873+
dev_name(__drm_to_dev(drm)), ## arg)
869874

870875
#define drm_WARN_ONCE(drm, condition, format, arg...) \
871876
WARN_ONCE(condition, "%s %s: [drm] " format, \
872-
dev_driver_string((drm)->dev), \
873-
dev_name((drm)->dev), ## arg)
877+
dev_driver_string(__drm_to_dev(drm)), \
878+
dev_name(__drm_to_dev(drm)), ## arg)
874879

875880
#define drm_WARN_ON(drm, x) \
876881
drm_WARN((drm), (x), "%s", \

0 commit comments

Comments
 (0)