[PATCH 3/5] firmware: Remove FW_PAYLOAD_FDT_PATH compile-time option

Atish Patra atishp at atishpatra.org
Fri Oct 16 19:19:35 EDT 2020


On Thu, Oct 15, 2020 at 1:12 AM Anup Patel <anup.patel at wdc.com> wrote:
>
> The FW_PAYLOAD_FDT_PATH compile-time option is replaced by
> FW_FDT_PATH compile-time option which is more flexible and
> common across all OpenSBI firmwares.
>
> This patch removes FW_PAYLOAD_FDT_PATH and updates related
> documentation to use FW_FDT_PATH.
>
> Signed-off-by: Anup Patel <anup.patel at wdc.com>
> ---
>  docs/firmware/fw_payload.md    |  9 ++-------
>  docs/platform/andes-ae350.md   |  4 ++--
>  docs/platform/shakti_cclass.md |  4 ++--
>  docs/platform/sifive_fu540.md  |  6 +++---
>  firmware/external_deps.mk      |  1 -
>  firmware/fw_base.S             |  9 ---------
>  firmware/fw_dynamic.S          | 13 -------------
>  firmware/fw_jump.S             | 13 -------------
>  firmware/fw_payload.S          | 25 -------------------------
>  firmware/objects.mk            |  3 ---
>  platform/template/config.mk    |  4 +++-
>  11 files changed, 12 insertions(+), 79 deletions(-)
>
> diff --git a/docs/firmware/fw_payload.md b/docs/firmware/fw_payload.md
> index bc712d2..0947448 100644
> --- a/docs/firmware/fw_payload.md
> +++ b/docs/firmware/fw_payload.md
> @@ -55,14 +55,9 @@ file. The parameters currently defined are as follows:
>    automatically generated and used as a payload. This test payload executes
>    an infinite `while (1)` loop after printing a message on the platform console.
>
> -* **FW_PAYLOAD_FDT_PATH** - Path to an external flattened device tree binary
> -  file to be embedded in the *.text* section of the final firmware. If this
> -  option is not provided then the firmware will expect the FDT to be passed
> -  as an argument by the prior booting stage.
> -
>  * **FW_PAYLOAD_FDT_ADDR** - Address where the FDT passed by the prior booting
> -  stage or specified by the *FW_PAYLOAD_FDT_PATH* parameter and embedded in
> -  the *.text* section will be placed before executing the next booting stage,
> +  stage or specified by the *FW_FDT_PATH* parameter and embedded in the
> +  *.rodata* section will be placed before executing the next booting stage,
>    that is, the payload firmware. If this option is not provided, then the
>    firmware will pass the FDT address passed by the previous booting stage
>    to the next booting stage.
> diff --git a/docs/platform/andes-ae350.md b/docs/platform/andes-ae350.md
> index 5a98707..46889a1 100644
> --- a/docs/platform/andes-ae350.md
> +++ b/docs/platform/andes-ae350.md
> @@ -19,12 +19,12 @@ Building Andes AE350 Platform
>  -----------------------------
>
>  To use Linux v5.2 should be used to build Andes AE350 OpenSBI binaries by using
> -the compile time option FW_PAYLOAD_FDT_PATH.
> +the compile time option FW_FDT_PATH.
>
>  AE350's dts is included in https://github.com/andestech/linux/tree/ast-v3_2_0-release-public
>
>  **Linux Kernel Payload**
>
>  ```
> -make PLATFORM=andes/ae350 FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image FW_PAYLOAD_FDT_PATH=<ae350.dtb path>
> +make PLATFORM=andes/ae350 FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image FW_FDT_PATH=<ae350.dtb path>
>  ```
> diff --git a/docs/platform/shakti_cclass.md b/docs/platform/shakti_cclass.md
> index 2f4a699..05c9b3a 100644
> --- a/docs/platform/shakti_cclass.md
> +++ b/docs/platform/shakti_cclass.md
> @@ -23,11 +23,11 @@ Building Shakti C-class Platform
>  **Linux Kernel Payload**
>
>  ```
> -make PLATFORM=generic FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image FW_PAYLOAD_FDT_PATH=<shakti.dtb path>
> +make PLATFORM=generic FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image FW_FDT_PATH=<shakti.dtb path>
>  ```
>
>  **Test Payload**
>
>  ```
> -make PLATFORM=generic FW_PAYLOAD_FDT_PATH=<shakti.dtb path>
> +make PLATFORM=generic FW_FDT_PATH=<shakti.dtb path>
>  ```
> diff --git a/docs/platform/sifive_fu540.md b/docs/platform/sifive_fu540.md
> index 1008432..c9513eb 100644
> --- a/docs/platform/sifive_fu540.md
> +++ b/docs/platform/sifive_fu540.md
> @@ -29,13 +29,13 @@ DT (device tree) is not backward compatible with the DT passed from FSBL.
>
>  To use Linux v5.2 (or higher, the pre-built DTB (DT binary) from Linux v5.2
>  (or higher) should be used to build SiFive FU540 OpenSBI binaries by using
> -the compile time option *FW_PAYLOAD_FDT_PATH*.
> +the compile time option *FW_FDT_PATH*.
>
>  ```
>  make PLATFORM=sifive/fu540 FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image
>  or
>  (For Linux v5.2 or higher)
> -make PLATFORM=sifive/fu540 FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image FW_PAYLOAD_FDT_PATH=<hifive-unleashed-a00.dtb path from Linux kernel>
> +make PLATFORM=sifive/fu540 FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image FW_FDT_PATH=<hifive-unleashed-a00.dtb path from Linux kernel>
>  ```
>
>  **U-Boot Payload**
> @@ -147,7 +147,7 @@ booti ${kernel_addr_r} - ${fdt_addr_r}
>  QEMU Specific Instructions
>  --------------------------
>  If you want to test OpenSBI with QEMU 'sifive_u' machine, please follow the
> -same instructions above, with the exception of not passing FW_PAYLOAD_FDT_PATH.
> +same instructions above, with the exception of not passing FW_FDT_PATH.
>
>  This is because QEMU generates a device tree blob on the fly based on the
>  command line parameters and it's compatible with the one used in the upstream
> diff --git a/firmware/external_deps.mk b/firmware/external_deps.mk
> index f43ac06..6264005 100644
> --- a/firmware/external_deps.mk
> +++ b/firmware/external_deps.mk
> @@ -12,4 +12,3 @@ $(platform_build_dir)/firmware/fw_jump.o: $(FW_FDT_PATH)
>  $(platform_build_dir)/firmware/fw_payload.o: $(FW_FDT_PATH)
>
>  $(platform_build_dir)/firmware/fw_payload.o: $(FW_PAYLOAD_PATH_FINAL)
> -$(platform_build_dir)/firmware/fw_payload.o: $(FW_PAYLOAD_FDT_PATH)
> diff --git a/firmware/fw_base.S b/firmware/fw_base.S
> index 95197da..1d9b375 100644
> --- a/firmware/fw_base.S
> +++ b/firmware/fw_base.S
> @@ -187,15 +187,6 @@ _bss_zero:
>         la      a1, fw_fdt_bin
>  #endif
>
> -       /* Override previous arg1 */
> -       MOV_3R  s0, a0, s1, a1, s2, a2
> -       call    fw_prev_arg1
> -       add     t1, a0, zero
> -       MOV_3R  a0, s0, a1, s1, a2, s2
> -       beqz    t1, _prev_arg1_override_done
> -       add     a1, t1, zero
> -_prev_arg1_override_done:
> -
>         /*
>          * Initialize platform
>          * Note: The a0 to a4 registers passed to the
> diff --git a/firmware/fw_dynamic.S b/firmware/fw_dynamic.S
> index d658011..8b56947 100644
> --- a/firmware/fw_dynamic.S
> +++ b/firmware/fw_dynamic.S
> @@ -86,19 +86,6 @@ fw_save_info:
>  2:
>         ret
>
> -       .section .entry, "ax", %progbits
> -       .align 3
> -       .global fw_prev_arg1
> -       /*
> -        * We can only use a0, a1, and a2 registers here.
> -        * The a0, a1, and a2 registers will be same as passed by
> -        * previous booting stage.
> -        * The previous arg1 should be returned in 'a0'.
> -        */
> -fw_prev_arg1:
> -       add     a0, zero, zero
> -       ret
> -
>         .section .entry, "ax", %progbits
>         .align 3
>         .global fw_next_arg1
> diff --git a/firmware/fw_jump.S b/firmware/fw_jump.S
> index afbcec0..8553f8c 100644
> --- a/firmware/fw_jump.S
> +++ b/firmware/fw_jump.S
> @@ -34,19 +34,6 @@ fw_boot_hart:
>  fw_save_info:
>         ret
>
> -       .section .entry, "ax", %progbits
> -       .align 3
> -       .global fw_prev_arg1
> -       /*
> -        * We can only use a0, a1, and a2 registers here.
> -        * The a0, a1, and a2 registers will be same as passed by
> -        * previous booting stage.
> -        * The previous arg1 should be returned in 'a0'.
> -        */
> -fw_prev_arg1:
> -       add     a0, zero, zero
> -       ret
> -
>         .section .entry, "ax", %progbits
>         .align 3
>         .global fw_next_arg1
> diff --git a/firmware/fw_payload.S b/firmware/fw_payload.S
> index 9805d8c..1ef121e 100644
> --- a/firmware/fw_payload.S
> +++ b/firmware/fw_payload.S
> @@ -34,23 +34,6 @@ fw_boot_hart:
>  fw_save_info:
>         ret
>
> -       .section .entry, "ax", %progbits
> -       .align 3
> -       .global fw_prev_arg1
> -       /*
> -        * We can only use a0, a1, and a2 registers here.
> -        * The a0, a1, and a2 registers will be same as passed by
> -        * previous booting stage.
> -        * The previous arg1 should be returned in 'a0'.
> -        */
> -fw_prev_arg1:
> -#ifdef FW_PAYLOAD_FDT_PATH
> -       la      a0, fdt_bin
> -#else
> -       add     a0, zero, zero
> -#endif
> -       ret
> -
>         .section .entry, "ax", %progbits
>         .align 3
>         .global fw_next_arg1
> @@ -102,14 +85,6 @@ fw_options:
>         add     a0, zero, zero
>         ret
>
> -#ifdef FW_PAYLOAD_FDT_PATH
> -       .section .text, "ax", %progbits
> -       .align 4
> -       .globl fdt_bin
> -fdt_bin:
> -       .incbin FW_PAYLOAD_FDT_PATH
> -#endif
> -
>         .section .payload, "ax", %progbits
>         .align 4
>         .globl payload_bin
> diff --git a/firmware/objects.mk b/firmware/objects.mk
> index 2eea54c..b2ace75 100644
> --- a/firmware/objects.mk
> +++ b/firmware/objects.mk
> @@ -48,9 +48,6 @@ ifdef FW_PAYLOAD_ALIGN
>  firmware-genflags-$(FW_PAYLOAD) += -DFW_PAYLOAD_ALIGN=$(FW_PAYLOAD_ALIGN)
>  endif
>
> -ifdef FW_PAYLOAD_FDT_PATH
> -firmware-genflags-$(FW_PAYLOAD) += -DFW_PAYLOAD_FDT_PATH=\"$(FW_PAYLOAD_FDT_PATH)\"
> -endif
>  ifdef FW_PAYLOAD_FDT_ADDR
>  firmware-genflags-$(FW_PAYLOAD) += -DFW_PAYLOAD_FDT_ADDR=$(FW_PAYLOAD_FDT_ADDR)
>  endif
> diff --git a/platform/template/config.mk b/platform/template/config.mk
> index 7bcf937..f817342 100644
> --- a/platform/template/config.mk
> +++ b/platform/template/config.mk
> @@ -34,6 +34,9 @@ platform-ldflags-y =
>  # Firmware load address configuration. This is mandatory.
>  FW_TEXT_START=0x80000000
>
> +# Optional parameter for path to external FDT
> +# FW_FDT_PATH="path to platform flattened device tree file"
> +
>  #
>  # Dynamic firmware configuration.
>  # Optional parameters are commented out. Uncomment and define these parameters
> @@ -71,5 +74,4 @@ FW_PAYLOAD_OFFSET=0x200000
>  endif
>  # FW_PAYLOAD_ALIGN=0x1000
>  # FW_PAYLOAD_PATH="path to next boot stage binary image file"
> -# FW_PAYLOAD_FDT_PATH="path to platform flattened device tree file"
>  # FW_PAYLOAD_FDT_ADDR=0x82200000
> --
> 2.25.1
>
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi

LGTM.
Reviewed-by: Atish Patra <atish.patra at wdc.com>

-- 
Regards,
Atish



More information about the opensbi mailing list