Driver core changes for 6.1-rc1
Here is the big set of driver core and debug printk changes for 6.1-rc1.
Included in here is:
- dynamic debug updates for the core and the drm subsystem. The
drm changes have all been acked by the relevant maintainers.
- kernfs fixes for syzbot reported problems
- kernfs refactors and updates for cgroup requirements
- magic number cleanups and removals from the kernel tree (they
were not being used and they really did not actually do
anything.)
- other tiny cleanups
All of these have been in linux-next for a while with no reported
issues.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-----BEGIN PGP SIGNATURE-----
iG0EABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCY0BYUA8cZ3JlZ0Brcm9h
aC5jb20ACgkQMUfUDdst+ylozwCdFRlcghaf7XBUyNgRZRwMC+oQI8EAn1G/nEDE
6aFd2er41uK0IGQnSmYO
=OK0k
-----END PGP SIGNATURE-----
Merge tag 'driver-core-6.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
Pull driver core updates from Greg KH:
"Here is the big set of driver core and debug printk changes for
6.1-rc1. Included in here is:
- dynamic debug updates for the core and the drm subsystem. The drm
changes have all been acked by the relevant maintainers
- kernfs fixes for syzbot reported problems
- kernfs refactors and updates for cgroup requirements
- magic number cleanups and removals from the kernel tree (they were
not being used and they really did not actually do anything)
- other tiny cleanups
All of these have been in linux-next for a while with no reported
issues"
* tag 'driver-core-6.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (74 commits)
docs: filesystems: sysfs: Make text and code for ->show() consistent
Documentation: NBD_REQUEST_MAGIC isn't a magic number
a.out: restore CMAGIC
device property: Add const qualifier to device_get_match_data() parameter
drm_print: add _ddebug descriptor to drm_*dbg prototypes
drm_print: prefer bare printk KERN_DEBUG on generic fn
drm_print: optimize drm_debug_enabled for jump-label
drm-print: add drm_dbg_driver to improve namespace symmetry
drm-print.h: include dyndbg header
drm_print: wrap drm_*_dbg in dyndbg descriptor factory macro
drm_print: interpose drm_*dbg with forwarding macros
drm: POC drm on dyndbg - use in core, 2 helpers, 3 drivers.
drm_print: condense enum drm_debug_category
debugfs: use DEFINE_SHOW_ATTRIBUTE to define debugfs_regset32_fops
driver core: use IS_ERR_OR_NULL() helper in device_create_groups_vargs()
Documentation: ENI155_MAGIC isn't a magic number
Documentation: NBD_REPLY_MAGIC isn't a magic number
nbd: remove define-only NBD_MAGIC, previously magic number
Documentation: FW_HEADER_MAGIC isn't a magic number
Documentation: EEPROM_MAGIC_VALUE isn't a magic number
...
This commit is contained in:
commit
e8bc52cb8d
46 changed files with 1320 additions and 696 deletions
|
|
@ -31,11 +31,12 @@
|
|||
#include <linux/seq_file.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/dynamic_debug.h>
|
||||
|
||||
#include <drm/drm.h>
|
||||
|
||||
/* Do *not* use outside of drm_print.[ch]! */
|
||||
extern unsigned int __drm_debug;
|
||||
extern unsigned long __drm_debug;
|
||||
|
||||
/**
|
||||
* DOC: print
|
||||
|
|
@ -275,55 +276,75 @@ static inline struct drm_printer drm_err_printer(const char *prefix)
|
|||
*
|
||||
*/
|
||||
enum drm_debug_category {
|
||||
/* These names must match those in DYNAMIC_DEBUG_CLASSBITS */
|
||||
/**
|
||||
* @DRM_UT_CORE: Used in the generic drm code: drm_ioctl.c, drm_mm.c,
|
||||
* drm_memory.c, ...
|
||||
*/
|
||||
DRM_UT_CORE = 0x01,
|
||||
DRM_UT_CORE,
|
||||
/**
|
||||
* @DRM_UT_DRIVER: Used in the vendor specific part of the driver: i915,
|
||||
* radeon, ... macro.
|
||||
*/
|
||||
DRM_UT_DRIVER = 0x02,
|
||||
DRM_UT_DRIVER,
|
||||
/**
|
||||
* @DRM_UT_KMS: Used in the modesetting code.
|
||||
*/
|
||||
DRM_UT_KMS = 0x04,
|
||||
DRM_UT_KMS,
|
||||
/**
|
||||
* @DRM_UT_PRIME: Used in the prime code.
|
||||
*/
|
||||
DRM_UT_PRIME = 0x08,
|
||||
DRM_UT_PRIME,
|
||||
/**
|
||||
* @DRM_UT_ATOMIC: Used in the atomic code.
|
||||
*/
|
||||
DRM_UT_ATOMIC = 0x10,
|
||||
DRM_UT_ATOMIC,
|
||||
/**
|
||||
* @DRM_UT_VBL: Used for verbose debug message in the vblank code.
|
||||
*/
|
||||
DRM_UT_VBL = 0x20,
|
||||
DRM_UT_VBL,
|
||||
/**
|
||||
* @DRM_UT_STATE: Used for verbose atomic state debugging.
|
||||
*/
|
||||
DRM_UT_STATE = 0x40,
|
||||
DRM_UT_STATE,
|
||||
/**
|
||||
* @DRM_UT_LEASE: Used in the lease code.
|
||||
*/
|
||||
DRM_UT_LEASE = 0x80,
|
||||
DRM_UT_LEASE,
|
||||
/**
|
||||
* @DRM_UT_DP: Used in the DP code.
|
||||
*/
|
||||
DRM_UT_DP = 0x100,
|
||||
DRM_UT_DP,
|
||||
/**
|
||||
* @DRM_UT_DRMRES: Used in the drm managed resources code.
|
||||
*/
|
||||
DRM_UT_DRMRES = 0x200,
|
||||
DRM_UT_DRMRES
|
||||
};
|
||||
|
||||
static inline bool drm_debug_enabled(enum drm_debug_category category)
|
||||
static inline bool drm_debug_enabled_raw(enum drm_debug_category category)
|
||||
{
|
||||
return unlikely(__drm_debug & category);
|
||||
return unlikely(__drm_debug & BIT(category));
|
||||
}
|
||||
|
||||
#define drm_debug_enabled_instrumented(category) \
|
||||
({ \
|
||||
pr_debug("todo: is this frequent enough to optimize ?\n"); \
|
||||
drm_debug_enabled_raw(category); \
|
||||
})
|
||||
|
||||
#if defined(CONFIG_DRM_USE_DYNAMIC_DEBUG)
|
||||
/*
|
||||
* the drm.debug API uses dyndbg, so each drm_*dbg macro/callsite gets
|
||||
* a descriptor, and only enabled callsites are reachable. They use
|
||||
* the private macro to avoid re-testing the enable-bit.
|
||||
*/
|
||||
#define __drm_debug_enabled(category) true
|
||||
#define drm_debug_enabled(category) drm_debug_enabled_instrumented(category)
|
||||
#else
|
||||
#define __drm_debug_enabled(category) drm_debug_enabled_raw(category)
|
||||
#define drm_debug_enabled(category) drm_debug_enabled_raw(category)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* struct device based logging
|
||||
*
|
||||
|
|
@ -333,9 +354,10 @@ static inline bool drm_debug_enabled(enum drm_debug_category category)
|
|||
__printf(3, 4)
|
||||
void drm_dev_printk(const struct device *dev, const char *level,
|
||||
const char *format, ...);
|
||||
__printf(3, 4)
|
||||
void drm_dev_dbg(const struct device *dev, enum drm_debug_category category,
|
||||
const char *format, ...);
|
||||
struct _ddebug;
|
||||
__printf(4, 5)
|
||||
void __drm_dev_dbg(struct _ddebug *desc, const struct device *dev,
|
||||
enum drm_debug_category category, const char *format, ...);
|
||||
|
||||
/**
|
||||
* DRM_DEV_ERROR() - Error output.
|
||||
|
|
@ -383,6 +405,15 @@ void drm_dev_dbg(const struct device *dev, enum drm_debug_category category,
|
|||
} \
|
||||
})
|
||||
|
||||
#if !defined(CONFIG_DRM_USE_DYNAMIC_DEBUG)
|
||||
#define drm_dev_dbg(dev, cat, fmt, ...) \
|
||||
__drm_dev_dbg(NULL, dev, cat, fmt, ##__VA_ARGS__)
|
||||
#else
|
||||
#define drm_dev_dbg(dev, cat, fmt, ...) \
|
||||
_dynamic_func_call_cls(cat, fmt, __drm_dev_dbg, \
|
||||
dev, cat, fmt, ##__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* DRM_DEV_DEBUG() - Debug output for generic drm code
|
||||
*
|
||||
|
|
@ -457,7 +488,7 @@ void drm_dev_dbg(const struct device *dev, enum drm_debug_category category,
|
|||
|
||||
#define drm_dbg_core(drm, fmt, ...) \
|
||||
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_CORE, fmt, ##__VA_ARGS__)
|
||||
#define drm_dbg(drm, fmt, ...) \
|
||||
#define drm_dbg_driver(drm, fmt, ...) \
|
||||
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRIVER, fmt, ##__VA_ARGS__)
|
||||
#define drm_dbg_kms(drm, fmt, ...) \
|
||||
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_KMS, fmt, ##__VA_ARGS__)
|
||||
|
|
@ -476,6 +507,7 @@ void drm_dev_dbg(const struct device *dev, enum drm_debug_category category,
|
|||
#define drm_dbg_drmres(drm, fmt, ...) \
|
||||
drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRMRES, fmt, ##__VA_ARGS__)
|
||||
|
||||
#define drm_dbg(drm, fmt, ...) drm_dbg_driver(drm, fmt, ##__VA_ARGS__)
|
||||
|
||||
/*
|
||||
* printk based logging
|
||||
|
|
@ -483,11 +515,19 @@ void drm_dev_dbg(const struct device *dev, enum drm_debug_category category,
|
|||
* Prefer drm_device based logging over device or prink based logging.
|
||||
*/
|
||||
|
||||
__printf(2, 3)
|
||||
void __drm_dbg(enum drm_debug_category category, const char *format, ...);
|
||||
__printf(3, 4)
|
||||
void ___drm_dbg(struct _ddebug *desc, enum drm_debug_category category, const char *format, ...);
|
||||
__printf(1, 2)
|
||||
void __drm_err(const char *format, ...);
|
||||
|
||||
#if !defined(CONFIG_DRM_USE_DYNAMIC_DEBUG)
|
||||
#define __drm_dbg(fmt, ...) ___drm_dbg(NULL, fmt, ##__VA_ARGS__)
|
||||
#else
|
||||
#define __drm_dbg(cat, fmt, ...) \
|
||||
_dynamic_func_call_cls(cat, fmt, ___drm_dbg, \
|
||||
cat, fmt, ##__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
/* Macros to make printk easier */
|
||||
|
||||
#define _DRM_PRINTK(once, level, fmt, ...) \
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue