[PATCH 3/5] lib: utils: Improve fdt_cpu_fixup() implementation
Atish Patra
atishp at atishpatra.org
Thu Sep 10 21:04:50 EDT 2020
On Wed, Sep 9, 2020 at 7:51 AM Anup Patel <anup.patel at wdc.com> wrote:
>
> The fdt_cpu_fixup() should work fine even if HARTs without MMU
> are not marked invalid by platform support code.
>
> In future, we plan to treat HARTs without MMU as valid in the
> generic platform support so that we can hold these HARTs in
> HSM STOPPED state.
>
> Signed-off-by: Anup Patel <anup.patel at wdc.com>
> ---
> lib/utils/fdt/fdt_fixup.c | 13 +++++++++++--
> 1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/lib/utils/fdt/fdt_fixup.c b/lib/utils/fdt/fdt_fixup.c
> index 4da7397..8f554e1 100644
> --- a/lib/utils/fdt/fdt_fixup.c
> +++ b/lib/utils/fdt/fdt_fixup.c
> @@ -21,7 +21,8 @@ void fdt_cpu_fixup(void *fdt)
> {
> struct sbi_scratch *scratch = sbi_scratch_thishart_ptr();
> const struct sbi_platform *plat = sbi_platform_ptr(scratch);
> - int err, cpu_offset, cpus_offset;
> + int err, cpu_offset, cpus_offset, len;
> + const char *mmu_type;
> u32 hartid;
>
> err = fdt_open_into(fdt, fdt, fdt_totalsize(fdt) + 32);
> @@ -37,7 +38,15 @@ void fdt_cpu_fixup(void *fdt)
> if (err)
> continue;
>
> - if (sbi_platform_hart_invalid(plat, hartid))
> + /*
> + * Disable a HART DT node if one of the following is true:
> + * 1. The HART is marked invalid by platform support
> + * 2. MMU is not available for the HART
> + */
> +
> + mmu_type = fdt_getprop(fdt, cpu_offset, "mmu-type", &len);
> + if (sbi_platform_hart_invalid(plat, hartid) ||
> + !mmu_type || !len)
> fdt_setprop_string(fdt, cpu_offset, "status",
> "disabled");
> }
> --
> 2.25.1
>
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi
Reviewed-by: Atish Patra <atish.patra at wdc.com>
--
Regards,
Atish
More information about the opensbi
mailing list