forked from Minki/linux
drm: POC drm on dyndbg - use in core, 2 helpers, 3 drivers.
Use DECLARE_DYNDBG_CLASSMAP across DRM: - in .c files, since macro defines/initializes a record - in drivers, $mod_{drv,drm,param}.c ie where param setup is done, since a classmap is param related - in drm/drm_print.c since existing __drm_debug param is defined there, and we ifdef it, and provide an elaborated alternative. - in drm_*_helper modules: dp/drm_dp - 1st item in makefile target drivers/gpu/drm/drm_crtc_helper.c - random pick iirc. Since these modules all use identical CLASSMAP declarations (ie: names and .class_id's) they will all respond together to "class DRM_UT_*" query-commands: :#> echo class DRM_UT_KMS +p > /proc/dynamic_debug/control NOTES: This changes __drm_debug from int to ulong, so BIT() is usable on it. DRM's enum drm_debug_category values need to sync with the index of their respective class-names here. Then .class_id == category, and dyndbg's class FOO mechanisms will enable drm_dbg(DRM_UT_KMS, ...). Though DRM needs consistent categories across all modules, thats not generally needed; modules X and Y could define FOO differently (ie a different NAME => class_id mapping), changes are made according to each module's private class-map. No callsites are actually selected by this patch, since none are class'd yet. Signed-off-by: Jim Cromie <jim.cromie@gmail.com> Link: https://lore.kernel.org/r/20220912052852.1123868-3-jim.cromie@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
0406faf25f
commit
f158936b60
@ -38,6 +38,8 @@
|
||||
#include <linux/mmu_notifier.h>
|
||||
#include <linux/suspend.h>
|
||||
#include <linux/cc_platform.h>
|
||||
#include <linux/fb.h>
|
||||
#include <linux/dynamic_debug.h>
|
||||
|
||||
#include "amdgpu.h"
|
||||
#include "amdgpu_irq.h"
|
||||
@ -185,6 +187,18 @@ int amdgpu_vcnfw_log;
|
||||
|
||||
static void amdgpu_drv_delayed_reset_work_handler(struct work_struct *work);
|
||||
|
||||
DECLARE_DYNDBG_CLASSMAP(drm_debug_classes, DD_CLASS_TYPE_DISJOINT_BITS, 0,
|
||||
"DRM_UT_CORE",
|
||||
"DRM_UT_DRIVER",
|
||||
"DRM_UT_KMS",
|
||||
"DRM_UT_PRIME",
|
||||
"DRM_UT_ATOMIC",
|
||||
"DRM_UT_VBL",
|
||||
"DRM_UT_STATE",
|
||||
"DRM_UT_LEASE",
|
||||
"DRM_UT_DP",
|
||||
"DRM_UT_DRMRES");
|
||||
|
||||
struct amdgpu_mgpu_info mgpu_info = {
|
||||
.mutex = __MUTEX_INITIALIZER(mgpu_info.mutex),
|
||||
.delayed_reset_work = __DELAYED_WORK_INITIALIZER(
|
||||
|
@ -30,6 +30,7 @@
|
||||
#include <linux/sched.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/string_helpers.h>
|
||||
#include <linux/dynamic_debug.h>
|
||||
|
||||
#include <drm/display/drm_dp_helper.h>
|
||||
#include <drm/display/drm_dp_mst_helper.h>
|
||||
@ -40,6 +41,18 @@
|
||||
|
||||
#include "drm_dp_helper_internal.h"
|
||||
|
||||
DECLARE_DYNDBG_CLASSMAP(drm_debug_classes, DD_CLASS_TYPE_DISJOINT_BITS, 0,
|
||||
"DRM_UT_CORE",
|
||||
"DRM_UT_DRIVER",
|
||||
"DRM_UT_KMS",
|
||||
"DRM_UT_PRIME",
|
||||
"DRM_UT_ATOMIC",
|
||||
"DRM_UT_VBL",
|
||||
"DRM_UT_STATE",
|
||||
"DRM_UT_LEASE",
|
||||
"DRM_UT_DP",
|
||||
"DRM_UT_DRMRES");
|
||||
|
||||
struct dp_aux_backlight {
|
||||
struct backlight_device *base;
|
||||
struct drm_dp_aux *aux;
|
||||
|
@ -32,6 +32,7 @@
|
||||
#include <linux/export.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/moduleparam.h>
|
||||
#include <linux/dynamic_debug.h>
|
||||
|
||||
#include <drm/drm_atomic.h>
|
||||
#include <drm/drm_atomic_helper.h>
|
||||
@ -51,6 +52,18 @@
|
||||
|
||||
#include "drm_crtc_helper_internal.h"
|
||||
|
||||
DECLARE_DYNDBG_CLASSMAP(drm_debug_classes, DD_CLASS_TYPE_DISJOINT_BITS, 0,
|
||||
"DRM_UT_CORE",
|
||||
"DRM_UT_DRIVER",
|
||||
"DRM_UT_KMS",
|
||||
"DRM_UT_PRIME",
|
||||
"DRM_UT_ATOMIC",
|
||||
"DRM_UT_VBL",
|
||||
"DRM_UT_STATE",
|
||||
"DRM_UT_LEASE",
|
||||
"DRM_UT_DP",
|
||||
"DRM_UT_DRMRES");
|
||||
|
||||
/**
|
||||
* DOC: overview
|
||||
*
|
||||
|
@ -40,7 +40,7 @@
|
||||
* __drm_debug: Enable debug output.
|
||||
* Bitmask of DRM_UT_x. See include/drm/drm_print.h for details.
|
||||
*/
|
||||
unsigned int __drm_debug;
|
||||
unsigned long __drm_debug;
|
||||
EXPORT_SYMBOL(__drm_debug);
|
||||
|
||||
MODULE_PARM_DESC(debug, "Enable debug output, where each bit enables a debug category.\n"
|
||||
@ -52,7 +52,30 @@ MODULE_PARM_DESC(debug, "Enable debug output, where each bit enables a debug cat
|
||||
"\t\tBit 5 (0x20) will enable VBL messages (vblank code)\n"
|
||||
"\t\tBit 7 (0x80) will enable LEASE messages (leasing code)\n"
|
||||
"\t\tBit 8 (0x100) will enable DP messages (displayport code)");
|
||||
module_param_named(debug, __drm_debug, int, 0600);
|
||||
|
||||
#if !defined(CONFIG_DRM_USE_DYNAMIC_DEBUG)
|
||||
module_param_named(debug, __drm_debug, ulong, 0600);
|
||||
#else
|
||||
/* classnames must match vals of enum drm_debug_category */
|
||||
DECLARE_DYNDBG_CLASSMAP(drm_debug_classes, DD_CLASS_TYPE_DISJOINT_BITS, 0,
|
||||
"DRM_UT_CORE",
|
||||
"DRM_UT_DRIVER",
|
||||
"DRM_UT_KMS",
|
||||
"DRM_UT_PRIME",
|
||||
"DRM_UT_ATOMIC",
|
||||
"DRM_UT_VBL",
|
||||
"DRM_UT_STATE",
|
||||
"DRM_UT_LEASE",
|
||||
"DRM_UT_DP",
|
||||
"DRM_UT_DRMRES");
|
||||
|
||||
static struct ddebug_class_param drm_debug_bitmap = {
|
||||
.bits = &__drm_debug,
|
||||
.flags = "p",
|
||||
.map = &drm_debug_classes,
|
||||
};
|
||||
module_param_cb(debug, ¶m_ops_dyndbg_classes, &drm_debug_bitmap, 0600);
|
||||
#endif
|
||||
|
||||
void __drm_puts_coredump(struct drm_printer *p, const char *str)
|
||||
{
|
||||
|
@ -29,6 +29,18 @@
|
||||
#include "i915_params.h"
|
||||
#include "i915_drv.h"
|
||||
|
||||
DECLARE_DYNDBG_CLASSMAP(drm_debug_classes, DD_CLASS_TYPE_DISJOINT_BITS, 0,
|
||||
"DRM_UT_CORE",
|
||||
"DRM_UT_DRIVER",
|
||||
"DRM_UT_KMS",
|
||||
"DRM_UT_PRIME",
|
||||
"DRM_UT_ATOMIC",
|
||||
"DRM_UT_VBL",
|
||||
"DRM_UT_STATE",
|
||||
"DRM_UT_LEASE",
|
||||
"DRM_UT_DP",
|
||||
"DRM_UT_DRMRES");
|
||||
|
||||
#define i915_param_named(name, T, perm, desc) \
|
||||
module_param_named(name, i915_modparams.name, T, perm); \
|
||||
MODULE_PARM_DESC(name, desc)
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/vga_switcheroo.h>
|
||||
#include <linux/mmu_notifier.h>
|
||||
#include <linux/dynamic_debug.h>
|
||||
|
||||
#include <drm/drm_aperture.h>
|
||||
#include <drm/drm_crtc_helper.h>
|
||||
@ -70,6 +71,18 @@
|
||||
#include "nouveau_svm.h"
|
||||
#include "nouveau_dmem.h"
|
||||
|
||||
DECLARE_DYNDBG_CLASSMAP(drm_debug_classes, DD_CLASS_TYPE_DISJOINT_BITS, 0,
|
||||
"DRM_UT_CORE",
|
||||
"DRM_UT_DRIVER",
|
||||
"DRM_UT_KMS",
|
||||
"DRM_UT_PRIME",
|
||||
"DRM_UT_ATOMIC",
|
||||
"DRM_UT_VBL",
|
||||
"DRM_UT_STATE",
|
||||
"DRM_UT_LEASE",
|
||||
"DRM_UT_DP",
|
||||
"DRM_UT_DRMRES");
|
||||
|
||||
MODULE_PARM_DESC(config, "option string to pass to driver core");
|
||||
static char *nouveau_config;
|
||||
module_param_named(config, nouveau_config, charp, 0400);
|
||||
|
@ -35,7 +35,7 @@
|
||||
#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,6 +275,7 @@ 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, ...
|
||||
|
Loading…
Reference in New Issue
Block a user