Am 13. September 2025 17:18:07 MESZ schrieb Tom Rini <tr...@konsulko.com>:
>On Sat, Sep 13, 2025 at 02:32:26AM +0200, Heinrich Schuchardt wrote:
>> On 9/13/25 01:02, Tom Rini wrote:
>> > This converts the existing README.commands.spl file to rST as
>> > doc/usage/cmd/spl.rst and adds it to the command index. Minimal
>> > rewording is done to the previous contents, to make it fit better with
>> > the overall style of documentation now.
>> > 
>> > Signed-off-by: Tom Rini <tr...@konsulko.com>
>> > ---
>> > Cc: Heinrich Schuchardt <xypron.g...@gmx.de>
>> > ---
>> >   doc/README.commands.spl | 31 --------------------------
>> >   doc/usage/cmd/spl.rst   | 48 +++++++++++++++++++++++++++++++++++++++++
>> >   doc/usage/index.rst     |  1 +
>> >   3 files changed, 49 insertions(+), 31 deletions(-)
>> >   delete mode 100644 doc/README.commands.spl
>> >   create mode 100644 doc/usage/cmd/spl.rst
>> > 
>> > diff --git a/doc/README.commands.spl b/doc/README.commands.spl
>> > deleted file mode 100644
>> > index ecfd3ca9ee58..000000000000
>> > --- a/doc/README.commands.spl
>> > +++ /dev/null
>> > @@ -1,31 +0,0 @@
>> > -The spl command is used to export a boot parameter image to RAM. Later
>> > -it may implement more functions connected to the SPL.
>> > -
>> > -SUBCOMMAND EXPORT
>> > -To execute the command everything has to be in place as if bootm should be
>> > -used. (kernel image, initrd-image, fdt-image etc.)
>> > -
>> > -export has two subcommands:
>> > -  atags: exports the ATAGS
>> > -  fdt: exports the FDT
>> > -
>> > -Call is:
>> > -spl export <fdt|atags> [kernel_addr] [initrd_addr] [fdt_addr if fdt]
>> > -
>> > -
>> > -TYPICAL CALL
>> > -
>> > -on OMAP3:
>> > -nandecc hw
>> > -nand read 0x82000000 0x280000 0x400000    /* Read kernel image from NAND*/
>> > -spl export atags                  /* export ATAGS */
>> > -nand erase 0x680000 0x20000               /* erase - one page */
>> > -nand write 0x80000100 0x680000 0x20000    /* write the image - one page */
>> > -
>> > -call with FDT:
>> > -nandecc hw
>> > -nand read 0x82000000 0x280000 0x400000    /* Read kernel image from NAND*/
>> > -tftpboot 0x80000100 devkit8000.dtb /* Read fdt */
>> > -spl export fdt 0x82000000 - 0x80000100    /* export FDT */
>> > -nand erase 0x680000 0x20000               /* erase - one page */
>> > -nand write <adress shown by spl export> 0x680000 0x20000
>> > diff --git a/doc/usage/cmd/spl.rst b/doc/usage/cmd/spl.rst
>> > new file mode 100644
>> > index 000000000000..59471c65a623
>> > --- /dev/null
>> > +++ b/doc/usage/cmd/spl.rst
>> > @@ -0,0 +1,48 @@
>> > +.. SPDX-License-Identifier: GPL-2.0+:
>> 
>> %s/GPL-2.0+/GPL-2.0-OR-LATER/
>> 
>> Cf. https://spdx.org/licenses/GPL-2.0-or-later.html
>
>Yes, and it's not a hard requirement to use the new tag, checkpatch.pl
>doesn't even complain. I got this from the existing command I copied,
>FWIW.
>
>> 
>> > +
>> > +.. index::
>> > +   single: spl (command)
>> > +
>> > +spl command
>> > +===========
>> > +
>> > +Synopsis
>> > +--------
>> > +
>> > +::
>> > +
>> > +    spl export <fdt|atags> [kernel_addr] [initrd_addr] [fdt_addr if fdt]
>> 
>> Those brackets cannot be correct. I definitively cannot remove the
>> kernel_addr and provide an initrd_addr instead. Do you mean:
>> 
>> spl export <fdt|atags> [kernel_addr [initrd_addr [fdt_addr if fdt]]]
>
>It's what the command itself says currently, however.
>
>I'd be happy to do a follow-up patch to fix both.

I am fine with the current patch if you supply the follow up.  



>
>> > +
>> > +Description
>> > +-----------
>> > +
>> > +The *spl* command is used to export a boot parameter image to RAM. Later
>> 
>> In the current state the man-page is not very helpful. Please, move the more
>> extensive description from doc/develop/falcon.rst here.
>
>As I said in the commit message, it's a conversion with minimal changes.
>I'd be happy to do a follow-up however improving it (and making
>cmd/spl.c's help text also better/correct).
>
>> * I would not know what a "boot parameter image" might be. Please, explain
>> it for a novice user.
>> * Please, describe what each parameter is used for.
>> * Please, explain what atags refers to. I would assume you mean what is
>> described in 
>> https://developer.arm.com/documentation/den0013/0400/Boot-Code/Booting-Linux/Kernel-parameters-using-ATAGs.
>> But don't expect a novice user to know.
>> * What does the command do if "fdt" is used?
>> 
>> > +it may implement more functions connected to the SPL.
>> > +
>> > +spl export
>> > +~~~~~~~~~~
>> 
>> This heading makes no sense.
>
>I just copied doc/usage/cmd/acpi.rst for format as it's the first file.
>I'd be happy to look at a better example.
>
>> > +To execute the command everything has to be in place as if bootm should be
>> 
>> Bootm can for instance boot a FIT image with an EFI binary.
>> I wouldn't expect this to work when booting in Falcon mode where EFI is not
>> available.
>> 
>> This sentence should be replaced by a meaningful description.
>
>I don't understand what's unclear, sorry. And yes, Falcon mode and EFI
>aren't compatible, but that should be spelled out in
>doc/develop/falcon.rst and not here I think.
>
>> 
>> > +used. (kernel image, initrd-image, fdt-image if used). The first argument
>> > +passed to the export subcommand must be either atags or fdt, which 
>> > signifies if
>> 
>> %s/signifies/indicates/
>> 
>> > +we are preparing an ATAGS or device tree for export.
>> 
>> Isn't ATAGs the plural form of ATAG?
>
>The most consistent usage is "ATAGS" and not "ATAGs".
>
>> Why would you write 'an ATAGS' if there are multiple tags?
>> 
>> Please, describe under which circumstances and with which values these
>> environment variables are filled and what they are used for.
>> 
>> * fdtargsaddr
>> * fdtargslen
>
>These are covered in doc/develop/falcon.rst which should be linked from
>this document I think.
>
>> > +
>> > +Example
>> > +-------
>> > +
>> > +On an OMAP3 platform with ATAGS::
>> > +
>> > +    => nandecc hw
>> > +    => nand read 0x82000000 0x280000 0x400000     /* Read kernel image 
>> > from NAND*/
>> 
>> What format must the image have to be used for booting? A FIT image?
>> 
>> > +    => spl export atags                   /* export ATAGS */
>> 
>> Is spl export atags never used with kernel_addr, initrd_addr, fdt_addr?
>> 
>> Does `spl export atags` without further arguments create any ATAGs?
>> Where would it take the values from?
>
>Working with ATAGS was indeed "fun". I'd honestly rather follow-up and
>remove ATAGS support from Falcon mode since it's 2025 and not 2012, but
>the point of this patch is to move doc/README.* content to rST so that
>we can then go "oof, that needs work" and try and improve it.
>
>> > +    => nand erase 0x680000 0x20000                /* erase - one page */
>> > +    => nand write 0x80000100 0x680000 0x20000     /* write the image - 
>> > one page */
>> 
>> What is written to nand here?
>> What relevance have these magic addresses?
>> How would a user know which address to use?
>
>More of the magic of ATAGS, which we can be glad aren't relevant
>anymore. It's always at that magic 0x100 offset. And the "on OMAP3" is
>the key to decoding the rest.
>
>> > +On an OMAP3 platform with device tree::
>> > +
>> > +    => nandecc hw
>> > +    => nand read 0x82000000 0x280000 0x400000     /* Read kernel image 
>> > from NAND*/
>> > +    => tftpboot 0x80000100 devkit8000.dtb /* Read fdt */
>> > +    => spl export fdt 0x82000000 - 0x80000100     /* export FDT */
>> 
>> Why would anybody use a device-tree from a TFTP server in conjunction with a
>> kernel from nand?
>
>It was the example at the time. But, because there's not a device tree
>on NAND, that's what spl export is creating.
>

It is unclear what the command does due to the incompleteness of this man-page.

Is it copying the device-tree? Is it creating ATAGs?

Is it adding ATAGs to a device-tree  copy?

>> 
>> > +    => nand erase 0x680000 0x20000                /* erase - one page */
>> > +    => nand write <adress shown by spl export> 0x680000 0x20000
>> 
>> The address seems to be gd->bd->bi_boot_params which is hard coded in board
>> files and not visible to the user. This is just gruesome. The address should
>> be exported to a variable to be usable in scripts.
>
>Preparing a board for falcon mode isn't a general task, you need to know
>what your platform is and where things are because you're about to make
>it a lot less flexible.
>
>> Which customizing is needed to use the spl command? These settings seem to
>> be relevant and should be described in sufficient detail:
>> 
>> CONFIG_CMD_SPL
>> CONFIG_OF_LIBFDT
>> CONFIG_CMD_SPL_WRITE_SIZE
>> CONFIG_SUPPORT_PASSING_ATAGS
>> CONFIG_SYS_BOOT_RAMDISK_HIGH
>
>Some of these I suspect so, yes.

All of these impact the spl command.

Best regards 

Heinrich 


>
>> Which return values does the command provide?
>
>Only the standard ones. A quick grep on "on success" in doc/usage/cmd
>says we aren't consistent about this phrasing nor inclusion to start
>with. I think we should update the "General rules" section of
>doc/usage/cmdline.rst to state that "The return value $? is 0 (true) on
>success and 1 (false) on failure unless otherwise noted.".
>

Reply via email to