From: Leo Liang <ycliang@andestech.com>
To: u-boot@lists.denx.de
Subject: [PATCH 3/7] riscv: Use NULL as a sentinel value for smp_call_function
Date: Mon, 14 Sep 2020 14:10:44 +0800 [thread overview]
Message-ID: <20200914061043.GA13185@andestech.com> (raw)
In-Reply-To: <CAEUhbmUXvh8RT8jY+zpje3B_jbaBzX6EnpNMVFyy0qzGgRYbjA@mail.gmail.com>
Hi, Bin
On Mon, Sep 14, 2020 at 10:07:57AM +0800, Bin Meng wrote:
> Hi Leo,
>
> On Mon, Sep 14, 2020 at 9:58 AM Leo Liang <ycliang@andestech.com> wrote:
> >
> > On Fri, Sep 11, 2020 at 04:04:13PM +0800, Bin Meng wrote:
> > > On Tue, Sep 8, 2020 at 2:17 AM Sean Anderson <seanga2@gmail.com> wrote:
> > > >
> > > > Some IPIs may already be pending when U-Boot is started. This could be a
> > > > problem if a secondary hart tries to handle an IPI before the boot hart has
> > > > initialized the IPI device.
> > > >
> > > > This commit uses NULL as a sentinel for secondary harts so they know when
> > > > the IPI is initialized, and it is safe to use the IPI API. The smp addr
> > > > parameter is initialized to NULL by board_init_f_init_reserve. Before this,
> > > > secondary harts wait in wait_for_gd_init.
> > > >
> > > > This imposes a minor restriction because harts may no longer jump to NULL.
> > > > However, given that the RISC-V debug device is likely to be located at
> > > > 0x400, it is unlikely for any RISC-V implementation to have usable ram
> > > > located at 0x0.
> > > >
> > > > Signed-off-by: Sean Anderson <seanga2@gmail.com>
> > > > ---
> > > >
> > > > arch/riscv/lib/smp.c | 26 ++++++++++++++++++++++----
> > > > 1 file changed, 22 insertions(+), 4 deletions(-)
> > > >
> > >
> > > Reviewed-by: Bin Meng <bin.meng@windriver.com>
> >
> > Hi Bin,
> >
> > There is a series of follow-up discussion on this patch that you might miss reading.
> >
> > This current patch will cause AE350 to fail booting,
> >
> > so maybe we should wait until Sean's next patch comes up to consider a reviewed-by tag.
> >
>
> Do we know why AE350 fails to boot with this patch?
>
When booting with bootm command,
boot hart will use smp_call_function(addr, arg0, arg1) to tell other harts to jump to "addr",
and other hart will use handle_ipi() to get the "addr".
The address of bbl+kernel payload when booting with AE350 is at 0x0,
so the "addr" would be 0x0 that other harts have to jump to.
With this patch
+ if (!ipi->addr) {
+ pr_err("smp_function cannot be set to 0x0\n");
+ return -EINVAL;
+ }
+ if (!smp_function)
+ return;
these two code snippets would cause u-boot to hang and thus fail the booting process.
> If some big changes are reworked in newer patches, I believe author
> should remove the tag and re-request the review.
>
Oh I see! Thanks for the explanation.
> Regards,
> Bin
Best,
Leo
next prev parent reply other threads:[~2020-09-14 6:10 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-07 18:16 [PATCH 0/7] riscv: Correctly handle IPIs already pending upon boot Sean Anderson
2020-09-07 18:16 ` [PATCH 1/7] Revert "riscv: Clear pending interrupts before enabling IPIs" Sean Anderson
2020-09-09 7:50 ` Rick Chen
2020-09-09 10:23 ` Sean Anderson
2020-09-10 6:39 ` Rick Chen
2020-09-10 10:18 ` Sean Anderson
2020-09-11 7:38 ` Bin Meng
2020-09-11 10:22 ` Sean Anderson
2020-09-11 14:45 ` Bin Meng
2020-09-11 18:30 ` Sean Anderson
2020-09-14 3:10 ` Rick Chen
2020-09-14 12:45 ` Sean Anderson
2020-09-07 18:16 ` [PATCH 2/7] riscv: Match memory barriers between send_ipi_many and handle_ipi Sean Anderson
2020-09-11 7:45 ` Bin Meng
2020-09-07 18:16 ` [PATCH 3/7] riscv: Use NULL as a sentinel value for smp_call_function Sean Anderson
2020-09-09 8:33 ` Rick Chen
2020-09-09 9:01 ` Rick Chen
2020-09-09 10:16 ` Sean Anderson
2020-09-09 10:26 ` Heinrich Schuchardt
2020-09-09 10:36 ` Sean Anderson
2020-09-10 8:09 ` Rick Chen
2020-09-14 3:21 ` Rick Chen
2020-09-11 8:04 ` Bin Meng
2020-09-14 1:58 ` Leo Liang
2020-09-14 2:07 ` Bin Meng
2020-09-14 6:10 ` Leo Liang [this message]
2020-09-14 6:15 ` Bin Meng
2020-09-14 14:05 ` Sean Anderson
2020-09-07 18:16 ` [PATCH 4/7] riscv: Clear pending IPIs on initialization Sean Anderson
2020-09-14 2:08 ` Bin Meng
2020-09-07 18:16 ` [PATCH 5/7] riscv: Add fence to available_harts_lock Sean Anderson
2020-09-10 3:26 ` Rick Chen
2020-09-11 10:39 ` Sean Anderson
2020-09-11 14:47 ` Bin Meng
2020-09-07 18:16 ` [PATCH 6/7] riscv: Ensure gp is NULL or points to valid data Sean Anderson
2020-09-14 5:25 ` Bin Meng
2020-09-14 13:03 ` Sean Anderson
2020-09-14 13:27 ` Sean Anderson
2020-09-07 18:16 ` [PATCH 7/7] riscv: Add some comments to start.S Sean Anderson
2020-09-14 5:26 ` Bin Meng
2020-09-09 2:02 ` [PATCH 0/7] riscv: Correctly handle IPIs already pending upon boot Rick Chen
2020-09-09 2:38 ` Sean Anderson
2020-09-09 2:44 ` Sean Anderson
2020-09-10 7:08 ` Rick Chen
2020-09-10 10:49 ` Sean Anderson
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=20200914061043.GA13185@andestech.com \
--to=ycliang@andestech.com \
--cc=u-boot@lists.denx.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox