diff mbox series

[v2] docs/firmware: Update FW_JUMP documentation

Message ID 20220922073612.28320-1-nylon.chen@sifive.com
State Superseded
Headers show
Series [v2] docs/firmware: Update FW_JUMP documentation | expand

Commit Message

Nylon Chen Sept. 22, 2022, 7:36 a.m. UTC
From: "Nylon.Chen" <nylon.chen@sifive.com>

Add a tip for OpenSBI's FW_JUMP which helps
users avoid overwriting the kernel.

Signed-off-by: Nylon Chen <nylon.chen@sifive.com>
---
 docs/firmware/fw_jump.md | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

Comments

Andrew Jones Sept. 22, 2022, 8:09 a.m. UTC | #1
On Thu, Sep 22, 2022 at 03:36:12PM +0800, Nylon Chen wrote:
> From: "Nylon.Chen" <nylon.chen@sifive.com>
> 
> Add a tip for OpenSBI's FW_JUMP which helps
> users avoid overwriting the kernel.
> 
> Signed-off-by: Nylon Chen <nylon.chen@sifive.com>
> ---
>  docs/firmware/fw_jump.md | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
> 
> diff --git a/docs/firmware/fw_jump.md b/docs/firmware/fw_jump.md
> index 35a4301..848f515 100644
> --- a/docs/firmware/fw_jump.md
> +++ b/docs/firmware/fw_jump.md
> @@ -41,6 +41,23 @@ follows:
>    provided, then the OpenSBI firmware will pass the FDT address passed by the
>    previous booting stage to the next booting stage.
>  
> +  If your *PLATFORM=generic* and your *FW_JUMP_FDT_ADDR* is default, you must

When using the default *FW_JUMP_FDT_ADDR* with *PLATFORM=generic*,

> +  ensure *FW_JUMP_FDT_ADDR* is set high enough to avoid overwriting the kernel

Missing the period at the end of the sentence.

> +  You can use the following method.
> +
> +  ```
> +  ${CROSS_COMPILE}objdump -h $KERNEL_ELF | sort -k 5,5 | awk '/^ +[0-9]+ / ' \
> +  | awk -n '{addr="0x"$3; size="0x"$5; printf "0x""%x\n",addr+size}' | \
> +  if [[ `tail -n -1` -gt 0x2200000 ]]; then \
> +  echo fdt overlaps kernel, increase FW_JUMP_FDT_ADDR ; fi

Should be able to merge the awks and drop the -n on tail and just use &&
instead of if-then. Also can use (( )) with normal math operators and
don't need \ after |

  ${CROSS_COMPILE}objdump -h $KERNEL_ELF | sort -k 5,5 |
  awk -n '/^ +[0-9]+ / {addr="0x"$3; size="0x"$5; printf "0x""%x\n",addr+size}' |
  (( `tail -1` > 0x2200000 )) && echo fdt overlaps kernel, increase FW_JUMP_FDT_ADDR


Thanks,
drew


> +
> +
> +  ${LLVM}objdump -h --show-lma $KERNEL_ELF | sort -k 5,5 | awk '/^ +[0-9]+ / ' \
> +  | awk -n '{addr="0x"$3; size="0x"$5; printf "0x""%x\n",addr+size}' | \
> +  if [[ `tail -n -1` -gt 0x2200000 ]]; then \
> +  echo fdt overlaps kernel, increase FW_JUMP_FDT_ADDR ; fi
> +  ```
> +
>  *FW_JUMP* Example
>  -----------------
>  
> -- 
> 2.36.1
>
diff mbox series

Patch

diff --git a/docs/firmware/fw_jump.md b/docs/firmware/fw_jump.md
index 35a4301..848f515 100644
--- a/docs/firmware/fw_jump.md
+++ b/docs/firmware/fw_jump.md
@@ -41,6 +41,23 @@  follows:
   provided, then the OpenSBI firmware will pass the FDT address passed by the
   previous booting stage to the next booting stage.
 
+  If your *PLATFORM=generic* and your *FW_JUMP_FDT_ADDR* is default, you must
+  ensure *FW_JUMP_FDT_ADDR* is set high enough to avoid overwriting the kernel
+  You can use the following method.
+
+  ```
+  ${CROSS_COMPILE}objdump -h $KERNEL_ELF | sort -k 5,5 | awk '/^ +[0-9]+ / ' \
+  | awk -n '{addr="0x"$3; size="0x"$5; printf "0x""%x\n",addr+size}' | \
+  if [[ `tail -n -1` -gt 0x2200000 ]]; then \
+  echo fdt overlaps kernel, increase FW_JUMP_FDT_ADDR ; fi
+
+
+  ${LLVM}objdump -h --show-lma $KERNEL_ELF | sort -k 5,5 | awk '/^ +[0-9]+ / ' \
+  | awk -n '{addr="0x"$3; size="0x"$5; printf "0x""%x\n",addr+size}' | \
+  if [[ `tail -n -1` -gt 0x2200000 ]]; then \
+  echo fdt overlaps kernel, increase FW_JUMP_FDT_ADDR ; fi
+  ```
+
 *FW_JUMP* Example
 -----------------