From ed2c588afd6a4927973ff96a3b3cec6223b62e52 Mon Sep 17 00:00:00 2001 From: Russell McGuire Date: Fri, 7 Aug 2026 15:58:18 -0700 Subject: [PATCH 1/2] Add missing tracing definitions into template Signed-off-by: Russell McGuire --- scripts/templates/ze_loader_internal.h.mako | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/scripts/templates/ze_loader_internal.h.mako b/scripts/templates/ze_loader_internal.h.mako index cf0537a8..8ad812d8 100644 --- a/scripts/templates/ze_loader_internal.h.mako +++ b/scripts/templates/ze_loader_internal.h.mako @@ -76,6 +76,12 @@ namespace loader ze_result_t zetddiInitResult = ZE_RESULT_ERROR_UNINITIALIZED; ze_result_t zesddiInitResult = ZE_RESULT_ERROR_UNINITIALIZED; ze_result_t zerddiInitResult = ZE_RESULT_ERROR_UNINITIALIZED; + + // This driver's "zelDriverEnableTracing" gate hook, resolved once at + // driver-init time. A null pointer means the driver does not support + // extension-function tracing. + zel_pfnDriverEnableTracing_t pfnDriverEnableTracing = nullptr; + bool driverEnableTracingResolved = false; }; using driver_vector_t = std::vector< driver_t >; @@ -132,6 +138,11 @@ namespace loader bool debugTraceAdvanced = false; // true when ZE_ENABLE_LOADER_DEBUG_TRACE=2 or ZEL_ENABLE_LOADER_LOGGING=2 bool driverDDIPathDefault = false; bool tracingLayerEnabled = false; + // Monotonic latch set on the first extension-callback registration. While + // false, the enable/disable toggle skips per-driver gate propagation, so + // the common case (no extension callbacks, e.g. VTune) stays a cheap + // DDI-table swap. Never reset. + std::atomic anyExtensionCallbackRegistered{false}; std::once_flag coreDriverSortOnce; std::once_flag sysmanDriverSortOnce; std::atomic sortingInProgress = {false}; @@ -146,4 +157,10 @@ namespace loader extern ze_handle_t* loaderDispatch; extern zer_dditable_t* defaultZerDdiTable; extern context_t *context; + + // Enable/disable extension-function tracing on a single driver by resolving + // its "zelDriverEnableTracing" hook by name. No-op (returns UNSUPPORTED) for + // drivers that don't implement it. Used to propagate the tracing-layer + // enable/disable state (env + dynamic) down to each driver. + ze_result_t enableDriverExtensionTracing(driver_t &driver, ze_bool_t enable); } From b8e9fc9cd0e7f1372f3d631811b340bb19fd8cc7 Mon Sep 17 00:00:00 2001 From: Russell McGuire Date: Fri, 7 Aug 2026 16:08:25 -0700 Subject: [PATCH 2/2] Reduce comments Signed-off-by: Russell McGuire --- scripts/templates/ze_loader_internal.h.mako | 13 ++----------- source/loader/ze_loader_internal.h | 15 +++------------ 2 files changed, 5 insertions(+), 23 deletions(-) diff --git a/scripts/templates/ze_loader_internal.h.mako b/scripts/templates/ze_loader_internal.h.mako index 8ad812d8..084ff315 100644 --- a/scripts/templates/ze_loader_internal.h.mako +++ b/scripts/templates/ze_loader_internal.h.mako @@ -77,9 +77,7 @@ namespace loader ze_result_t zesddiInitResult = ZE_RESULT_ERROR_UNINITIALIZED; ze_result_t zerddiInitResult = ZE_RESULT_ERROR_UNINITIALIZED; - // This driver's "zelDriverEnableTracing" gate hook, resolved once at - // driver-init time. A null pointer means the driver does not support - // extension-function tracing. + // Resolved gate hook; null = driver doesn't support extension tracing. zel_pfnDriverEnableTracing_t pfnDriverEnableTracing = nullptr; bool driverEnableTracingResolved = false; }; @@ -138,10 +136,6 @@ namespace loader bool debugTraceAdvanced = false; // true when ZE_ENABLE_LOADER_DEBUG_TRACE=2 or ZEL_ENABLE_LOADER_LOGGING=2 bool driverDDIPathDefault = false; bool tracingLayerEnabled = false; - // Monotonic latch set on the first extension-callback registration. While - // false, the enable/disable toggle skips per-driver gate propagation, so - // the common case (no extension callbacks, e.g. VTune) stays a cheap - // DDI-table swap. Never reset. std::atomic anyExtensionCallbackRegistered{false}; std::once_flag coreDriverSortOnce; std::once_flag sysmanDriverSortOnce; @@ -158,9 +152,6 @@ namespace loader extern zer_dditable_t* defaultZerDdiTable; extern context_t *context; - // Enable/disable extension-function tracing on a single driver by resolving - // its "zelDriverEnableTracing" hook by name. No-op (returns UNSUPPORTED) for - // drivers that don't implement it. Used to propagate the tracing-layer - // enable/disable state (env + dynamic) down to each driver. + // Toggles one driver's "zelDriverEnableTracing" gate; UNSUPPORTED if absent. ze_result_t enableDriverExtensionTracing(driver_t &driver, ze_bool_t enable); } diff --git a/source/loader/ze_loader_internal.h b/source/loader/ze_loader_internal.h index fe656ec0..2f80f492 100644 --- a/source/loader/ze_loader_internal.h +++ b/source/loader/ze_loader_internal.h @@ -67,14 +67,8 @@ namespace loader ze_result_t zetddiInitResult = ZE_RESULT_ERROR_UNINITIALIZED; ze_result_t zesddiInitResult = ZE_RESULT_ERROR_UNINITIALIZED; ze_result_t zerddiInitResult = ZE_RESULT_ERROR_UNINITIALIZED; - // This driver's "zelDriverEnableTracing" gate hook, resolved once at - // driver-init time. A null pointer means the driver does not support - // extension-function tracing, so every runtime enable/disable toggle - // (which a perf tool like VTune calls frequently) is a simple null check - // plus a call - no by-name GetExtensionFunctionAddress lookup on the hot - // path. driverEnableTracingResolved guards the one-time capability probe: - // init_driver can run more than once per driver, and the probe call - // mutates the gate, so it must fire exactly once (before any real enable). + + // Resolved gate hook; null = driver doesn't support extension tracing. zel_pfnDriverEnableTracing_t pfnDriverEnableTracing = nullptr; bool driverEnableTracingResolved = false; }; @@ -200,9 +194,6 @@ namespace loader extern zer_dditable_t* defaultZerDdiTable; extern context_t *context; - // Enable/disable extension-function tracing on a single driver by resolving - // its "zelDriverEnableTracing" hook by name. No-op (returns UNSUPPORTED) for - // drivers that don't implement it. Used to propagate the tracing-layer - // enable/disable state (env + dynamic) down to each driver. + // Toggles one driver's "zelDriverEnableTracing" gate; UNSUPPORTED if absent. ze_result_t enableDriverExtensionTracing(driver_t &driver, ze_bool_t enable); }