On 10/27/21 12:36 AM, Jim Cromie wrote:
Use new macro to create a sysfs control bitmap knob to control print-to-trace in: /sys/module/drm/parameters/trace
todo: reconsider this api, ie a single macro expecting both debug & trace terms (2 each), followed by a single description and the bitmap-spec::
Good: declares bitmap once for both interfaces
Bad: arg-type/count handling (expecting 4 args) is ugly, especially preceding the bitmap-init var-args.
Hi Jim,
I agree having the bitmap declared twice seems redundant. But I like having fewer args and not necessarily combining the trace/log variants of DEBUG_CATEGORIES. hmmm...what if the DEFINE_DYNAMIC_DEBUG_CATEGORIES() took a pointer to the array of struct dyndbg_bitdesc map[] directly as the final argument instead of the __VA_ARGS__? Then, we could just declare the map once?
Thanks,
-Jason
Signed-off-by: Jim Cromie jim.cromie@gmail.com
drivers/gpu/drm/drm_print.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
diff --git a/drivers/gpu/drm/drm_print.c b/drivers/gpu/drm/drm_print.c index ce662d0f339b..7b49fbc5e21d 100644 --- a/drivers/gpu/drm/drm_print.c +++ b/drivers/gpu/drm/drm_print.c @@ -73,6 +73,25 @@ DEFINE_DYNAMIC_DEBUG_CATEGORIES(debug, __drm_debug, [7] = { DRM_DBG_CAT_LEASE }, [8] = { DRM_DBG_CAT_DP }, [9] = { DRM_DBG_CAT_DRMRES });
+#ifdef CONFIG_TRACING +unsigned long __drm_trace; +EXPORT_SYMBOL(__drm_trace); +DEFINE_DYNAMIC_DEBUG_TRACE_CATEGORIES(trace, __drm_trace,
DRM_DEBUG_DESC,
[0] = { DRM_DBG_CAT_CORE },
[1] = { DRM_DBG_CAT_DRIVER },
[2] = { DRM_DBG_CAT_KMS },
[3] = { DRM_DBG_CAT_PRIME },
[4] = { DRM_DBG_CAT_ATOMIC },
[5] = { DRM_DBG_CAT_VBL },
[6] = { DRM_DBG_CAT_STATE },
[7] = { DRM_DBG_CAT_LEASE },
[8] = { DRM_DBG_CAT_DP },
[9] = { DRM_DBG_CAT_DRMRES });
+struct trace_array *trace_arr; +#endif #endif
void __drm_puts_coredump(struct drm_printer *p, const char *str)