[PATCH v2 0/6] Enable setexpr command to print cpu-list like bitmaps

Heinrich Schuchardt xypron.glpk at gmx.de
Tue Dec 12 12:40:22 CET 2023


On 12.12.23 11:13, Heinrich Schuchardt wrote:
> On 12.12.23 09:52, lukas.funke-oss at weidmueller.com wrote:
>> From: Lukas Funke <lukas.funke at weidmueller.com>
>>
>>
>> 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.

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(-)
>>
>



More information about the U-Boot mailing list