diff mbox series

[v2] rt-tests: hwlatdetect: Add a grouping separator to tracing_cpumask

Message ID 20250602160342.2740857-1-costa.shul@redhat.com
State New
Headers show
Series [v2] rt-tests: hwlatdetect: Add a grouping separator to tracing_cpumask | expand

Commit Message

Costa Shulyupin June 2, 2025, 4:03 p.m. UTC
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>

---
Cnahges in v2:
- rebased

Signed-off-by: Costa Shulyupin <costa.shul@redhat.com>
---
 src/hwlatdetect/hwlatdetect.py | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

John Kacur June 17, 2025, 5:33 p.m. UTC | #1
On Mon, 2 Jun 2025, Costa Shulyupin wrote:

> 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>
> 
> ---
> Cnahges in v2:
> - rebased
> 
> Signed-off-by: Costa Shulyupin <costa.shul@redhat.com>
> ---
>  src/hwlatdetect/hwlatdetect.py | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/src/hwlatdetect/hwlatdetect.py b/src/hwlatdetect/hwlatdetect.py
> index dc28f38b751a..946bef33748b 100755
> --- a/src/hwlatdetect/hwlatdetect.py
> +++ b/src/hwlatdetect/hwlatdetect.py
> @@ -33,6 +33,11 @@ def info(istr):
>          print(istr)
>  
>  
> +def group_sep(hex):

Can you rename the above since hex is a python built-in?

> +    """ 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
> @@ -494,7 +499,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}")
> -- 
> 2.48.1
> 
> 
>
diff mbox series

Patch

diff --git a/src/hwlatdetect/hwlatdetect.py b/src/hwlatdetect/hwlatdetect.py
index dc28f38b751a..946bef33748b 100755
--- a/src/hwlatdetect/hwlatdetect.py
+++ b/src/hwlatdetect/hwlatdetect.py
@@ -33,6 +33,11 @@  def info(istr):
         print(istr)
 
 
+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
@@ -494,7 +499,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}")