All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heinrich Schuchardt <xypron.glpk@gmx.de>
To: Tom Rini <trini@konsulko.com>
Cc: "Simon Glass" <sjg@chromium.org>, "牛 志宏" <Zone.Niuzh@hotmail.com>,
	"u-boot@lists.denx.de" <u-boot@lists.denx.de>,
	"Leo Yu-Chi Liang" <ycliang@andestech.com>,
	"Rick Chen" <rick@andestech.com>
Subject: Re: [PATCH] bootm: Pass SMP core ID and DTB address for ELF-formatted kernels
Date: Sat, 24 May 2025 06:29:01 +0200	[thread overview]
Message-ID: <fbe649de-dc78-4ef3-8204-95020ff2cf45@gmx.de> (raw)
In-Reply-To: <20250523222926.GZ100073@bill-the-cat>

On 5/24/25 00:29, Tom Rini wrote:
> On Fri, May 23, 2025 at 07:04:46PM +0200, Heinrich Schuchardt wrote:
>> Am 23. Mai 2025 18:41:45 MESZ schrieb Simon Glass <sjg@chromium.org>:
>>> +Heinrich Schuchardt
>>>
>>> Hi,
>>>
>>> On Tue, 13 May 2025 at 13:28, 牛 志宏 <Zone.Niuzh@hotmail.com> wrote:
>>>>
>>>> When booting RISC-V ELF-formatted kernel images (IH_TYPE_KERNEL + IH_OS_ELF),
>>>> explicitly pass SMP core/hart ID and DTB address to comply with modern
>>>> SMP-enabled kernels' boot protocol requirements.
>>>>
>>>> Signed-off-by: Zone.N <zone.niuzh@hotmail.com>
>>>> ---
>>>>   boot/bootm_os.c | 5 +++++
>>>>   1 file changed, 5 insertions(+)
>>>>
>>>> diff --git a/boot/bootm_os.c b/boot/bootm_os.c
>>>> index a3c7cb5332e..a0f310b1359 100644
>>>> --- a/boot/bootm_os.c
>>>> +++ b/boot/bootm_os.c
>>>> @@ -402,6 +402,11 @@ static int do_bootm_elf(int flag, struct bootm_info *bmi)
>>>>          if (flag != BOOTM_STATE_OS_GO)
>>>>                  return 0;
>>>>
>>>> +#if defined(CONFIG_RISCV)
>>>> +       bmi->argc = gd->arch.boot_hart;
>>>> +       bmi->argv = (char **)bmi->images->ft_addr;
>>>> +#endif
>>>
>>> If this is a kernel, it should really be using a FIT.  The Elf entry
>>> is for general ELF files, not Linux. Perhaps RISC-V is special in some
>>> way?
>>
>> A defconfig kernel is booted via the booti command or via its EFI stub.
>>
>> Why would you use an ELF formatted kernel? What kernel configuration are you using to get such a kernel?
> 
> This is I assume a non-Linux OS kernel being booted. So the question is,
> does anyone externally have some standard defined here which should be
> used?
> 

https://docs.kernel.org/arch/riscv/boot.html describes the requirements:

"The RISC-V kernel expects:

         $a0 to contain the hartid of the current core.

         $a1 to contain the address of the devicetree in memory."

Both the bootm command and the bootelf command end up calling 
bootelf_exec(). So the correction should probably be made in lib/elf.c 
and not in /boot/bootm_os.c.

a0 and a1 are the the first and second arguments in the RISC-V calling 
convention.

Using a0 and a1 as required by the kernel is completely incompatible 
with the current design of the bootelf command where you can pass 
arbitrary string arguments to an ELF binary.

CONFIG_CMD_ELF_FDT_SETUP allows to pass a device-tree address string as 
argv[0].

It is unclear to me if there are use cases where we want to execute ELF 
binaries that are not OS kernels via the bootelf or bootm command.

The RISC-V maintainers should review any change for RISC-V in the 
handling of ELF binaries.

Best regards

Heinrich

  reply	other threads:[~2025-05-24  4:29 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-13  9:50 [PATCH] bootm: Pass SMP core ID and DTB address for ELF-formatted kernels 牛 志宏
2025-05-23 16:41 ` Simon Glass
2025-05-23 17:04   ` Heinrich Schuchardt
2025-05-23 22:29     ` Tom Rini
2025-05-24  4:29       ` Heinrich Schuchardt [this message]
2025-05-29  9:33         ` 回复: " 牛 志宏
2025-05-29 15:49           ` Tom Rini
     [not found]             ` <ME0P300MB13099B02B4C316E4784D23529F6FA@ME0P300MB1309.AUSP300.PROD.OUTLOOK.COM>
2025-06-05 14:29               ` 回复: " Yao Zi
2025-06-05 14:47               ` Tom Rini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fbe649de-dc78-4ef3-8204-95020ff2cf45@gmx.de \
    --to=xypron.glpk@gmx.de \
    --cc=Zone.Niuzh@hotmail.com \
    --cc=rick@andestech.com \
    --cc=sjg@chromium.org \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    --cc=ycliang@andestech.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.