[PATCH] drm/print: Mark __drm_debug as __read_mostly

From: Jim Cromie

Date: Fri Sep 25 2026 - 16:46:32 EST


Under multi-client workloads (e.g. 12 concurrent vkcubes on AMD iGPU),
__drm_debug is read at ~83.3 kHz across multiple cores during atomic and
vblank checks, but is otherwise write-rare.

Without section placement attributes, the linker packs __drm_debug into
.bss adjacent to hot structures like drm_lease_idr_object, drm_class,
and drm_global_mutex, causing unnecessary cacheline invalidations.

Mark __drm_debug as __read_mostly to relocate it to .data..read_mostly.

Signed-off-by: Jim Cromie <jim.cromie@xxxxxxxxx>
---
drivers/gpu/drm/drm_print.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_print.c b/drivers/gpu/drm/drm_print.c
index 86cef1a37678..50cdeb1b15e2 100644
--- a/drivers/gpu/drm/drm_print.c
+++ b/drivers/gpu/drm/drm_print.c
@@ -40,7 +40,7 @@
* __drm_debug: Enable debug output.
* Bitmask of DRM_UT_x. See include/drm/drm_print.h for details.
*/
-unsigned long __drm_debug;
+unsigned long __drm_debug __read_mostly;
EXPORT_SYMBOL(__drm_debug);

MODULE_PARM_DESC(debug, "Enable debug output, where each bit enables a debug category.\n"
--
2.55.0