Skip to content

Commit d05386a

Browse files
committed
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 e5f3081 commit d05386a

File tree

1 file changed

+23
-18
lines changed

1 file changed

+23
-18
lines changed

include/drm/drm_print.h

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -584,9 +584,15 @@ void __drm_dev_dbg(struct _ddebug *desc, const struct device *dev,
584584
* Prefer drm_device based logging over device or prink based logging.
585585
*/
586586

587+
/* Helper to enforce struct drm_device type */
588+
static inline struct device *__drm_to_dev(const struct drm_device *drm)
589+
{
590+
return drm ? drm->dev : NULL;
591+
}
592+
587593
/* Helper for struct drm_device based logging. */
588594
#define __drm_printk(drm, level, type, fmt, ...) \
589-
dev_##level##type((drm) ? (drm)->dev : NULL, "[drm] " fmt, ##__VA_ARGS__)
595+
dev_##level##type(__drm_to_dev(drm), "[drm] " fmt, ##__VA_ARGS__)
590596

591597

592598
#define drm_info(drm, fmt, ...) \
@@ -620,25 +626,25 @@ void __drm_dev_dbg(struct _ddebug *desc, const struct device *dev,
620626

621627

622628
#define drm_dbg_core(drm, fmt, ...) \
623-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_CORE, fmt, ##__VA_ARGS__)
624-
#define drm_dbg_driver(drm, fmt, ...) \
625-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRIVER, fmt, ##__VA_ARGS__)
629+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_CORE, fmt, ##__VA_ARGS__)
630+
#define drm_dbg_driver(drm, fmt, ...) \
631+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRIVER, fmt, ##__VA_ARGS__)
626632
#define drm_dbg_kms(drm, fmt, ...) \
627-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_KMS, fmt, ##__VA_ARGS__)
633+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_KMS, fmt, ##__VA_ARGS__)
628634
#define drm_dbg_prime(drm, fmt, ...) \
629-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_PRIME, fmt, ##__VA_ARGS__)
635+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_PRIME, fmt, ##__VA_ARGS__)
630636
#define drm_dbg_atomic(drm, fmt, ...) \
631-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_ATOMIC, fmt, ##__VA_ARGS__)
637+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_ATOMIC, fmt, ##__VA_ARGS__)
632638
#define drm_dbg_vbl(drm, fmt, ...) \
633-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_VBL, fmt, ##__VA_ARGS__)
639+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_VBL, fmt, ##__VA_ARGS__)
634640
#define drm_dbg_state(drm, fmt, ...) \
635-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_STATE, fmt, ##__VA_ARGS__)
641+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_STATE, fmt, ##__VA_ARGS__)
636642
#define drm_dbg_lease(drm, fmt, ...) \
637-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_LEASE, fmt, ##__VA_ARGS__)
643+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_LEASE, fmt, ##__VA_ARGS__)
638644
#define drm_dbg_dp(drm, fmt, ...) \
639-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DP, fmt, ##__VA_ARGS__)
645+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DP, fmt, ##__VA_ARGS__)
640646
#define drm_dbg_drmres(drm, fmt, ...) \
641-
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRMRES, fmt, ##__VA_ARGS__)
647+
drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRMRES, fmt, ##__VA_ARGS__)
642648

643649
#define drm_dbg(drm, fmt, ...) drm_dbg_driver(drm, fmt, ##__VA_ARGS__)
644650

@@ -727,10 +733,9 @@ void __drm_err(const char *format, ...);
727733
#define __DRM_DEFINE_DBG_RATELIMITED(category, drm, fmt, ...) \
728734
({ \
729735
static DEFINE_RATELIMIT_STATE(rs_, DEFAULT_RATELIMIT_INTERVAL, DEFAULT_RATELIMIT_BURST);\
730-
const struct drm_device *drm_ = (drm); \
731736
\
732737
if (drm_debug_enabled(DRM_UT_ ## category) && __ratelimit(&rs_)) \
733-
drm_dev_printk(drm_ ? drm_->dev : NULL, KERN_DEBUG, fmt, ## __VA_ARGS__); \
738+
drm_dev_printk(__drm_to_dev(drm), KERN_DEBUG, fmt, ## __VA_ARGS__); \
734739
})
735740

736741
#define drm_dbg_ratelimited(drm, fmt, ...) \
@@ -752,13 +757,13 @@ void __drm_err(const char *format, ...);
752757
/* Helper for struct drm_device based WARNs */
753758
#define drm_WARN(drm, condition, format, arg...) \
754759
WARN(condition, "%s %s: [drm] " format, \
755-
dev_driver_string((drm)->dev), \
756-
dev_name((drm)->dev), ## arg)
760+
dev_driver_string(__drm_to_dev(drm)), \
761+
dev_name(__drm_to_dev(drm)), ## arg)
757762

758763
#define drm_WARN_ONCE(drm, condition, format, arg...) \
759764
WARN_ONCE(condition, "%s %s: [drm] " format, \
760-
dev_driver_string((drm)->dev), \
761-
dev_name((drm)->dev), ## arg)
765+
dev_driver_string(__drm_to_dev(drm)), \
766+
dev_name(__drm_to_dev(drm)), ## arg)
762767

763768
#define drm_WARN_ON(drm, x) \
764769
drm_WARN((drm), (x), "%s", \

0 commit comments

Comments
 (0)