[PATCH v2] lib: utils: fdt_domain: Use consistent device-tree address when next-arg1 is missing
Anup Patel
anup at brainfault.org
Fri Aug 23 04:56:44 PDT 2024
On Wed, Jul 24, 2024 at 8:31 PM Yu Chien Peter Lin
<peterlin at andestech.com> wrote:
>
> The diagram shown below illustrates the boot-flow involving OP-TEE OS
> initialization.
>
> (1)-----------+
> | U-Boot SPL |
> +------------+
> |
> v
> (2)-------------------------------------------------------------+
> | OpenSBI (fw_dynamic) |
> | (4)------------------------+ |
> | | optee dispatcher driver | |
> +-----------------+-------^---------|-------+------------------+
> M-mode | | |
> ---------+--[trusted domain]---+----.----+--[untrusted domain]-------
> S-mode | (coldboot domain) | | |
> v | | v
> (3)---------------------------+ |(5)----------------------------+
> | OP-TEE OS | | | U-Boot |
> +----------------------------+ | +-----------------------------+
> | |
> | v
> |(6)----------------------------+
> | | Linux |
> | +-----------------------------+
>
> As OP-TEE OS has device-tree node fixups that need to be passed
> through to the next boot stages, e.g. the reserved memory node:
>
> reserved-memory {
> #address-cells = <2>;
> #size-cells = <2>;
> ranges;
> optee_core at f1000000 {
> no-map;
> reg = <0x0 0xf1000000 // OP-TEE OS base address
> 0x0 0x01000000>;
> };
> <...>
> };
>
> Instead of using 0x0 as the default value, allow identical next-arg1
> to be used by non-coldboot domain (i.e., untrusted domain) when the
> property is not provided.
>
> Also, update the description of next-arg1 property in the document.
>
> Signed-off-by: Yu Chien Peter Lin <peterlin at andestech.com>
> Reviewed-by: Alvin Chang <alvinga at andestech.com>
> Reviewed-by: Anup Patel <anup at brainfault.org>
Applied this patch to the riscv/opensbi repo.
Thanks,
Anup
> ---
> Changes v1 -> v2:
> - Improve commit message, no functional change
> ---
> docs/domain_support.md | 4 +---
> lib/utils/fdt/fdt_domain.c | 3 +--
> 2 files changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/docs/domain_support.md b/docs/domain_support.md
> index b34e43a..1a40068 100644
> --- a/docs/domain_support.md
> +++ b/docs/domain_support.md
> @@ -180,9 +180,7 @@ The DT properties of a domain instance DT node are as follows:
> boot HART of the domain instance.
> * **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 **0x0** is used as default
> - value. If this DT property is not available and coldboot HART is assigned
> - to the domain instance then **next booting stage arg1 of coldboot HART**
> + is not assigned to the domain instance then **next booting stage arg1 of coldboot HART**
> is used as default value.
> * **next-addr** (Optional) - The 64 bit next booting stage address for the
> domain instance. If this DT property is not available and coldboot HART
> diff --git a/lib/utils/fdt/fdt_domain.c b/lib/utils/fdt/fdt_domain.c
> index fa1c357..a13daa6 100644
> --- a/lib/utils/fdt/fdt_domain.c
> +++ b/lib/utils/fdt/fdt_domain.c
> @@ -395,8 +395,7 @@ static int __fdt_parse_domain(void *fdt, int domain_offset, void *opaque)
> val64 = fdt32_to_cpu(val[0]);
> val64 = (val64 << 32) | fdt32_to_cpu(val[1]);
> } else {
> - if (domain_offset == *cold_domain_offset)
> - val64 = sbi_scratch_thishart_ptr()->next_arg1;
> + val64 = sbi_scratch_thishart_ptr()->next_arg1;
> }
> dom->next_arg1 = val64;
>
> --
> 2.45.2
>
More information about the opensbi
mailing list