Skip to content

Commit

Permalink
platform: generic: Fix fw_platform_coldboot_harts_init() function
Browse files Browse the repository at this point in the history
It is possible that the OpenSBI config DT node is present but
the "cold-boot-harts" DT property is not present. In this case,
the fw_platform_coldboot_harts_init() will do nothing which
in-turn causes OpenSBI firmware hang at boot time.

To address the above issue, fallback to the default approach
when the "cold-boot-harts" DT property is not present.

Fixes: 67ce5a7 ("platform: generic: Add support for specify coldboot harts in DT")
Signed-off-by: Anup Patel <[email protected]>
  • Loading branch information
avpatel committed Aug 27, 2024
1 parent ef4520b commit c4940a9
Showing 1 changed file with 16 additions and 16 deletions.
32 changes: 16 additions & 16 deletions platform/generic/platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -98,26 +98,26 @@ static void fw_platform_coldboot_harts_init(const void *fdt)
goto default_config;

val = fdt_getprop(fdt, config_offset, "cold-boot-harts", &len);
len = len / sizeof(u32);
if (val && len) {
for (int i = 0; i < len; i++) {
cpu_offset = fdt_node_offset_by_phandle(fdt,
fdt32_to_cpu(val[i]));
if (cpu_offset < 0)
goto default_config;
if (!val || !len)
goto default_config;

err = fdt_parse_hart_id(fdt, cpu_offset, &val32);
if (err)
goto default_config;
len = len / sizeof(u32);
for (int i = 0; i < len; i++) {
cpu_offset = fdt_node_offset_by_phandle(fdt,
fdt32_to_cpu(val[i]));
if (cpu_offset < 0)
goto default_config;

if (!fdt_node_is_enabled(fdt, cpu_offset))
continue;
err = fdt_parse_hart_id(fdt, cpu_offset, &val32);
if (err)
goto default_config;

for (int i = 0; i < platform.hart_count; i++) {
if (val32 == generic_hart_index2id[i])
bitmap_set(generic_coldboot_harts, i, 1);
}
if (!fdt_node_is_enabled(fdt, cpu_offset))
continue;

for (int i = 0; i < platform.hart_count; i++) {
if (val32 == generic_hart_index2id[i])
bitmap_set(generic_coldboot_harts, i, 1);
}
}

Expand Down

0 comments on commit c4940a9

Please sign in to comment.