Re: [PATCH] lib: fdt_domain: Default boot-hart to coldboot HART for multi-domain boot
Anup Patel <[email protected]>
| Newsgroups | org.infradead.lists.opensbi |
|---|---|
| Message-ID | <CAAhSdy2X-QZM0jfwNt3JW9JStQiRqd+MALLHQ=6Wbm0eZRoNSg@mail.gmail.com> |
On Fri, Mar 27, 2026 at 11:19 AM Yu-Chien Peter Lin <[email protected]> wrote: > > When "boot-hart" is not specified, dom->boot_hartid was left as -1U, > causing domain context switching to fail. Default it to the coldboot > HART to enable SMP boot in multi-domain setups, consistent with how > next-arg1 is handled. > > Also update its description in domain_support.md. > > Signed-off-by: Yu-Chien Peter Lin <[email protected]> LGTM. Reviewed-by: Anup Patel <[email protected]> Regards, Anup > --- > docs/domain_support.md | 6 +++--- > lib/utils/fdt/fdt_domain.c | 5 +---- > 2 files changed, 4 insertions(+), 7 deletions(-) > > diff --git a/docs/domain_support.md b/docs/domain_support.md > index 93186c4a..c01e445f 100644 > --- a/docs/domain_support.md > +++ b/docs/domain_support.md > @@ -173,9 +173,9 @@ The DT properties of a domain instance DT node are as follows: > Any region of a domain defined in DT node cannot have only M-bits set > in access permissions i.e. it cannot be an m-mode only accessible region. > * **boot-hart** (Optional) - The DT node phandle of the HART booting the > - domain instance. If coldboot HART is assigned to the domain instance then > - this DT property is ignored and the coldboot HART is assumed to be the > - boot HART of the domain instance. > + domain instance. If not specified, defaults to the coldboot HART. Note that > + if the coldboot HART is assigned to this domain, it will be forced as > + the boot HART regardless of this property. > * **next-arg1** (Optional) - The 64 bit next booting stage arg1 for the > domain instance. If this DT property is not available and coldboot HART > is not assigned to the domain instance then **next booting stage arg1 of coldboot HART** > diff --git a/lib/utils/fdt/fdt_domain.c b/lib/utils/fdt/fdt_domain.c > index b2fa8633..1b039533 100644 > --- a/lib/utils/fdt/fdt_domain.c > +++ b/lib/utils/fdt/fdt_domain.c > @@ -396,16 +396,13 @@ static int __fdt_parse_domain(const void *fdt, int domain_offset, void *opaque) > dom->fw_region_inited = root.fw_region_inited; > > /* Read "boot-hart" DT property */ > - val32 = -1U; > + val32 = current_hartid(); > val = fdt_getprop(fdt, domain_offset, "boot-hart", &len); > if (val && len >= 4) { > cpu_offset = fdt_node_offset_by_phandle(fdt, > fdt32_to_cpu(*val)); > if (cpu_offset >= 0 && fdt_node_is_enabled(fdt, cpu_offset)) > fdt_parse_hart_id(fdt, cpu_offset, &val32); > - } else { > - if (domain_offset == *cold_domain_offset) > - val32 = current_hartid(); > } > dom->boot_hartid = val32; > > -- > 2.48.0 > > > -- > opensbi mailing list > [email protected] > http://lists.infradead.org/mailman/listinfo/opensbi -- opensbi mailing list [email protected] http://lists.infradead.org/mailman/listinfo/opensbi