From 5aed58400998b0d6ead5c29ccfd09da3228e7fb5 Mon Sep 17 00:00:00 2001 From: Jason Harper <78619061+harp-intel@users.noreply.github.com> Date: Wed, 29 Oct 2025 17:10:36 -0700 Subject: [PATCH] Fix parsing of dmesg line to retrieve # of ARM counters --- cmd/metrics/metadata.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/cmd/metrics/metadata.go b/cmd/metrics/metadata.go index d53fcd4f..b0480b1c 100644 --- a/cmd/metrics/metadata.go +++ b/cmd/metrics/metadata.go @@ -829,8 +829,11 @@ func getNumGPCountersARM(target target.Target) (numGPCounters int, err error) { err = fmt.Errorf("failed to get PMU Driver line: %s, %d, %v", stderr, exitcode, err) return } - // example [ 1.339550] hw perfevents: enabled with armv8_pmuv3_0 PMU driver, 5 counters available - counterRegex := regexp.MustCompile(`(\d+) counters available`) + // examples: + // [ 1.339550] hw perfevents: enabled with armv8_pmuv3_0 PMU driver, 5 counters available + // [ 3.663956] hw perfevents: enabled with armv8_pmuv3_0 PMU driver, 6 (0,8000001f) counters available + // regex to match both "5 counters available" and "6 (0,8000001f) counters available" + counterRegex := regexp.MustCompile(`(\d+)\s*(?:\([^)]+\))?\s+counters available`) matches := counterRegex.FindStringSubmatch(stdout) if len(matches) > 1 { numberStr := matches[1]