On 12.12.2023 12:40, Heinrich Schuchardt wrote:
On 12.12.23 11:13, Heinrich Schuchardt wrote:
On 12.12.23 09:52, [email protected] wrote:
From: Lukas Funke <[email protected]>


This series enables the 'setexpr' command to print "cpu list"-like
bitmaps based on the printk format specifier [1].

One use-case is to pass cpu list [2] based kernel parameter like
'isolcpu', 'nohz_full', irq affinity or RCU related CPU parameter to
the kernel via a separate firmware variable without exposing the
'bootargs' variable to directly.

Example:

setexpr isolcpu_bootarg=%32pbl $myCPUisolation

I applied your patches on top of origin/next but your example simply
does not work:

=> setenv myCPUisolation 123456789abcdef0
=> setexpr isolcpu_bootarg=%32pbl $myCPUisolation
## Error: illegal character '='in variable name "isolcpu_bootarg=%32pbl"

This produces some output:

=> setexpr a fmt '%32pbl' 64; echo $a
6

But the result is completely unexpected. Number arguments in U-Boot are
always hexadecimal. So the output should be

2,5-6

doc/usage/cmd/setexpr.rst

has an example showing this.

     => setexpr foo fmt 0x%08x 63
     => echo $foo
     0x00000063
     =>

You provide a use case for %pbl but not an reason why you want to
support %pb. If you wanted to use the output in a device-tree
manipulation the %pb output would have to be big-endian formatted.

I added it to be consistent with the kernel printk. Currently there is no use case for it. Shall we remove the %pb or leave it in for consistency?

Best regards
Lukas


Best regards

Heinrcih


&& env set bootargs "$isolcpu_bootarg"
&& bootm

[1] https://www.kernel.org/doc/Documentation/printk-formats.txt
[2]
https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html


Changes in v2:
- Add bitmap format specifier to documentation

Lukas Funke (6):
   sandbox: add generic find_next_zero_bit implementation
   linux: bitmap.h: add 'for_each_set_bitrange' iteration macro
   test: cmd: setexptr: Add tests for bitmap string format
   doc: printf() codes: Add bitmap format specifier
   lib: vsprintf: enable '%*pb[l]' format specifier
   cmd: printf: forward '%p' format string specifier

  arch/sandbox/include/asm/bitops.h | 16 ++++++-
  cmd/printf.c                      | 29 ++++++++++++
  doc/develop/printf.rst            |  6 +++
  include/linux/bitmap.h            |  7 +++
  lib/vsprintf.c                    | 75 +++++++++++++++++++++++++++++++
  test/cmd/setexpr.c                |  9 ++++
  6 files changed, 140 insertions(+), 2 deletions(-)




Reply via email to