From: Jim Cromie <[email protected]> Under a multi-client workload of 12 concurrent vkcubes on AMD iGPU, __drm_debug is read at ~83.3 kHz across multiple cores during atomic and vblank checks.
__drm_debug is written only when userspace does: echo 0xff > /sys/module/drm/parameters/debug Currently the linker packs __drm_debug into .bss adjacent to hot structures: 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 <[email protected]> --- 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
