From: Sam Ravnborg <sam@ravnborg.org>
To: dri-devel@lists.freedesktop.org,
Jani Nikula <jani.nikula@intel.com>,
Daniel Vetter <daniel@ffwll.ch>
Cc: Joe Perches <joe@perches.com>, Sam Ravnborg <sam@ravnborg.org>,
Sean Paul <sean@poorly.run>
Subject: [PATCH v1 1/8] drm/print: document logging functions
Date: Sat, 21 Dec 2019 10:55:46 +0100 [thread overview]
Message-ID: <20191221095553.13332-2-sam@ravnborg.org> (raw)
In-Reply-To: <20191221095553.13332-1-sam@ravnborg.org>
This is the documentation I have missed when I looked for help
how to do proper logging. Hopefully it can help others.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Sean Paul <sean@poorly.run>
Cc: Daniel Vetter <daniel@ffwll.ch>
---
Documentation/gpu/drm-internals.rst | 6 ++
include/drm/drm_print.h | 91 ++++++++++++++++++++++++++---
2 files changed, 90 insertions(+), 7 deletions(-)
diff --git a/Documentation/gpu/drm-internals.rst b/Documentation/gpu/drm-internals.rst
index a73320576ca9..c2093611999c 100644
--- a/Documentation/gpu/drm-internals.rst
+++ b/Documentation/gpu/drm-internals.rst
@@ -164,6 +164,12 @@ File Operations
Misc Utilities
==============
+Logging
+-------
+
+.. kernel-doc:: include/drm/drm_print.h
+ :doc: logging
+
Printer
-------
diff --git a/include/drm/drm_print.h b/include/drm/drm_print.h
index 8f99d389792d..e9e31ace0afa 100644
--- a/include/drm/drm_print.h
+++ b/include/drm/drm_print.h
@@ -250,22 +250,42 @@ static inline struct drm_printer drm_err_printer(const char *prefix)
}
/**
- * enum drm_debug_category - The DRM debug categories
+ * DOC: logging
+ *
+ * There is a set of functions/macros available used for logging
+ * in the DRM subsystem.
+ * Using the drm logging function enables that the logging is consistently
+ * prefixed with *[drm]* thus the logging is easy to recognize.
+ *
+ * Example of logging with *[drm]* prefix::
*
- * Each of the DRM debug logging macros use a specific category, and the logging
- * is filtered by the drm.debug module parameter. This enum specifies the values
- * for the interface.
+ * [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
+ * [drm] Driver supports precise vblank timestamp query.
*
- * Each DRM_DEBUG_<CATEGORY> macro logs to DRM_UT_<CATEGORY> category, except
- * DRM_DEBUG() logs to DRM_UT_CORE.
+ *
+ * Each of the debug logging macros use a specific category, and the logging
+ * is filtered by the drm.debug module parameter. The &drm_debug_category enum
+ * specifies the values for the interface.
+ *
+ * Each drm_dbg_<category> macro logs to a DRM_UT_<category> category,
+ * except drm_dbg() that logs to DRM_UT_DRIVER.
*
* Enabling verbose debug messages is done through the drm.debug parameter, each
* category being enabled by a bit:
*
* - drm.debug=0x1 will enable CORE messages
* - drm.debug=0x2 will enable DRIVER messages
+ * - drm.debug=0x4 will enable KMS messages
+ * - drm.debug=0x8 will enable PRIME messages
+ * - drm.debug=0x10 will enable ATOMIC messages
+ * - drm.debug=0x20 will enable VBL messages
+ * - drm.debug=0x40 will enable STATE messages
+ * - drm.debug=0x80 will enable LEASE messages
+ * - drm.debug=0x100 will enable DP messages
+ *
+ * To enable more than one category OR the values - examples:
+ *
* - drm.debug=0x3 will enable CORE and DRIVER messages
- * - ...
* - drm.debug=0x1ff will enable all messages
*
* An interesting feature is that it's possible to enable verbose logging at
@@ -273,6 +293,63 @@ static inline struct drm_printer drm_err_printer(const char *prefix)
*
* # echo 0xf > /sys/module/drm/parameters/debug
*
+ *
+ * When a &drm_device * is available use one of the following logging functions.
+ * The same prototype is shared by all the logging functions
+ * that take a &drm_device * as first argument:
+ *
+ * .. code-block:: c
+ *
+ * void drm_xxx(struct drm_device *, char * fmt, ...)
+ *
+ * Drivers can use the following functions for logging.
+ *
+ * .. code-block:: none
+ *
+ * # Plain logging
+ * drm_dbg()
+ * drm_info()
+ * drm_notice()
+ * drm_warn()
+ * drm_err()
+ *
+ * # Log only once
+ * drm_info_once()
+ * drm_notice_once()
+ * drm_warn_once()
+ * drm_err_once()
+ *
+ * # Ratelimited - do not flood the logs
+ * drm_err_ratelimited()
+ *
+ * # Logging with a specific category
+ * drm_dbg_core()
+ * drm_dbg() # Uses the DRIVER category
+ * drm_dbg_kms()
+ * drm_dbg_prime()
+ * drm_dbg_atomic()
+ * drm_dbg_vbl()
+ * drm_dbg_state()
+ * drm_dbg_lease()
+ * drm_dbg_dp()
+ *
+ * See enum &drm_debug_category for a description of the categories.
+ *
+ * Logging when a &device * is available, but no &drm_device *
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ * TODO
+ *
+ * Logging when no &device * nor &drm_device * is available
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ * TODO
+ *
+ * Obsoleted logging functions
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ * The DRM_*() logging functions are deprecated - do not use them in new code.
+ */
+
+/**
+ * enum drm_debug_category - The DRM debug categories
*/
enum drm_debug_category {
/**
--
2.20.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2019-12-21 9:56 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-21 9:55 [RFC PATCH 0/9] drm: add more new-style logging functions Sam Ravnborg
2019-12-21 9:55 ` Sam Ravnborg [this message]
2019-12-23 11:23 ` [PATCH v1 1/8] drm/print: document " Jani Nikula
2019-12-23 12:07 ` Sam Ravnborg
2019-12-21 9:55 ` [PATCH v1 2/8] drm/print: move new style " Sam Ravnborg
2019-12-21 9:55 ` [PATCH v1 3/8] drm/print: add new logging helper for drm logging Sam Ravnborg
2019-12-23 11:16 ` Jani Nikula
2019-12-23 11:18 ` Joe Perches
2019-12-23 12:10 ` Sam Ravnborg
2019-12-21 9:55 ` [PATCH v1 4/8] drm/print: add kernel-doc for drm_debug_enabled Sam Ravnborg
2019-12-23 11:18 ` Jani Nikula
2019-12-21 9:55 ` [PATCH v1 5/8] drm/print: rename drm_dev_dbg Sam Ravnborg
2019-12-21 9:55 ` [PATCH v1 6/8] drm/print: add drm_dev_* logging functions Sam Ravnborg
2019-12-21 13:56 ` Joe Perches
2019-12-21 14:48 ` Sam Ravnborg
2019-12-23 11:21 ` Jani Nikula
2019-12-23 11:29 ` Jani Nikula
2019-12-23 12:35 ` Sam Ravnborg
2019-12-31 14:35 ` Jani Nikula
2019-12-21 9:55 ` [PATCH v1 7/8] drm/print: add drm_pr_ logging Sam Ravnborg
2019-12-21 9:55 ` [PATCH v1 8/8] drm/print: let legacy logging use new style functions Sam Ravnborg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191221095553.13332-2-sam@ravnborg.org \
--to=sam@ravnborg.org \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=jani.nikula@intel.com \
--cc=joe@perches.com \
--cc=sean@poorly.run \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox