[PATCH] lib: sbi: Try to make each domain have boot hart
Xiang W
wxjstz at 126.com
Tue Jul 4 02:51:53 PDT 2023
在 2023-07-04星期二的 14:41 +0530,Anup Patel写道:
> On Tue, Jul 4, 2023 at 2:16 PM Xiang W <wxjstz at 126.com> wrote:
> >
> > 在 2023-07-04星期二的 09:18 +0530,Anup Patel写道:
> > > On Tue, Jun 20, 2023 at 6:02 PM Xiang W <wxjstz at 126.com> wrote:
> > > >
> > > > domain register will move the hart from the old domain to the
> > > > new domain, and should not move the boot hart to prevent the
> > > > old domain from losing the boot hart.
> > > >
> > > > Signed-off-by: Xiang W <wxjstz at 126.com>
> > > > ---
> > > > lib/sbi/sbi_domain.c | 16 +++++++++++++++-
> > > > 1 file changed, 15 insertions(+), 1 deletion(-)
> > > >
> > > > diff --git a/lib/sbi/sbi_domain.c b/lib/sbi/sbi_domain.c
> > > > index 38a5902..46a4aef 100644
> > > > --- a/lib/sbi/sbi_domain.c
> > > > +++ b/lib/sbi/sbi_domain.c
> > > > @@ -543,9 +543,23 @@ int sbi_domain_register(struct sbi_domain *dom,
> > > > continue;
> > > >
> > > > tdom = sbi_hartid_to_domain(i);
> > > > - if (tdom)
> > > > + if (tdom) {
> > > > + if (i == tdom->boot_hartid) {
> > > > + /* Newly registered domain should not
> > > > + * take up the boot hart of the older domain */
> > > > + if (i == dom->boot_hartid)
> > > > + sbi_printf("%s: failed assign Hart%d to %s, "
> > > > + "conflict with %s\n",
> > > > + __func__, i, dom->name, tdom->name);
> > > > + else
> > > > + sbi_printf("%s: skip assign Hart%d to %s, "
> > > > + "because Hart%d is boot hart of %s\n",
> > > > + __func__, i, dom->name, i, tdom->name);
> > > > + continue;
> > > > + }
> > >
> > > This is not needed because sbi_domain_finalize() already checks that
> > > dom->boot_hartid is assigned to dom before starting dom->boot_hartid.
> > >
> > > The cold boot HART is by default boot HART of the root domain and
> > > assigned to the root domain. This patch prevents cold boot HART from
> > > changing its own domain.
> >
> > If the cold boot hart changes its own domain, the root domain will not
> > lost boot hart and will not be able to start.
> >
> > Is it not a mistake that root dmain cannot be started?
>
> No it's not a mistake. For instance, look at example in the
> docs/domain_support.md where we have two additional
> domains "trusted" and "untrusted" apart from the root domain
> which cover all HARTs already covered by the root domain. In
> this example, the root domain never runs because the boot
> HART changes its own domain to "untrusted" domain.
>
> The root domain is a default/fallback domain which exists in the
> system even when no domains are defined via FDT. We can have
> many domains defined in the system but a HART is running in exactly
> one domain context.
Thank you for the explanation
Regards,
Xiang W
>
> Regards,
> Anup
>
> >
> > Regards,
> > Xiang W
> > >
> > > NACK for this patch.
> > >
> > > Regards,
> > > Anup
> > >
> > > > sbi_hartmask_clear_hart(i,
> > > > &tdom->assigned_harts);
> > > > + }
> > > > update_hartid_to_domain(i, dom);
> > > > sbi_hartmask_set_hart(i, &dom->assigned_harts);
> > > >
> > > > --
> > > > 2.39.2
> > > >
> > > >
> > > > --
> > > > opensbi mailing list
> > > > opensbi at lists.infradead.org
> > > > http://lists.infradead.org/mailman/listinfo/opensbi
> >
More information about the opensbi
mailing list