• Jim Cromie's avatar
    drm: POC drm on dyndbg - use in core, 2 helpers, 3 drivers. · f158936b
    Jim Cromie authored
    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: default avatarJim Cromie <jim.cromie@gmail.com>
    Link: https://lore.kernel.org/r/20220912052852.1123868-3-jim.cromie@gmail.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    f158936b
nouveau_drm.c 35.9 KB