lib: utils: fdt_domain: Make opensbi-domain optional in CPU node

The domain_support.md documentation states that "the HART to domain instance
assignment can be parsed from the device tree using *optional* DT property
opensbi-domain in each CPU DT node". However, the current implementation does
not treat this parameter as optional when determining which HARTs to assign to
a freshly discovered domain from the device tree, causing an effect where every
HART in the system must be explicitly assigned to a domain only if a domain is
specified in the device tree. Instead, this patch simply ignores CPUs that do
not specify a domain, and does not attempt to assign them into the recently
discovered domain.

Signed-off-by: Gregor Haas <gregorhaas1997@gmail.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
Gregor Haas
2024-08-08 20:47:12 -07:00
committed by Anup Patel
parent c5b6ebd141
commit b0ad9e0bdd

View File

@@ -475,12 +475,12 @@ static int __fdt_parse_domain(const void *fdt, int domain_offset, void *opaque)
if (!fdt_node_is_enabled(fdt, cpu_offset))
continue;
/* This is an optional property */
val = fdt_getprop(fdt, cpu_offset, "opensbi-domain", &len);
if (!val || len < 4) {
err = SBI_EINVAL;
goto fail_free_all;
}
if (!val || len < 4)
continue;
/* However, it should be valid if specified */
doffset = fdt_node_offset_by_phandle(fdt, fdt32_to_cpu(*val));
if (doffset < 0) {
err = doffset;