@@ -35,6 +35,11 @@ def info(istr):
sys.stdout.flush()
+def group_sep(hex):
+ """ Add a comma as a grouping separator every 32 bits to a hexadecimal number. """
+ return ','.join([hex[max(i - 8, 0):i] for i in range(len(hex), 0, -8)][::-1])
+
+
#
# Class used to manage mounting and umounting the debugfs
# filesystem. Note that if an instance of this class mounts
@@ -497,7 +502,7 @@ def microseconds(sval):
for i in range(l, r + 1):
cpumask |= (1 << i)
debug(f"set tracing_cpumask to {cpumask:x}")
- detect.set("cpumask", f"{cpumask:x}")
+ detect.set("cpumask", group_sep(f"{cpumask:x}"))
info(f"hwlatdetect: test duration {detect.testduration} seconds")
info(f" detector: {detect.type}")
Writing values longer than 32 bits without a comma results in an error: echo 100000000 > /sys/kernel/debug/tracing/tracing_cpumask bash: echo: write error: Value too large for defined data type The bitmap_pars() kernel function specification: "Commas group hex digits into chunks. Each chunk defines exactly 32 bits of the resultant bitmask. No chunk may specify a value larger than 32 bits (%-EOVERFLOW)" Add a comma as a grouping separator every 32 bits to a hexadecimal number, as expected by the bitmap_pars() kernel function. Signed-off-by: Costa Shulyupin <costa.shul@redhat.com> --- src/hwlatdetect/hwlatdetect.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)