rtas: Move FWNMI log space reservation to QEMU
diff mbox series

Message ID 20200316022902.12891-1-aik@ozlabs.ru
State New
Headers show
Series
  • rtas: Move FWNMI log space reservation to QEMU
Related show

Commit Message

Alexey Kardashevskiy March 16, 2020, 2:29 a.m. UTC
This reverts commit 674d0d0cf66d4 ("rtas: Reserve space for FWNMI log")
which expanded the RTAS blob size to match the QEMU expectation about
the RTAS area available for FWNMI logs.

Instead, it relies on QEMU passing the "rtas-size" property and passes it
through untouched. This adds a check that QEMU allocated enough for
RTAS blob. This adds a fallback to the default 20 bytes "rtas-size" if
none specified by QEMU.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---
 board-qemu/slof/rtas.fs | 9 ++++++++-
 lib/libhvcall/hvcall.S  | 9 ---------
 2 files changed, 8 insertions(+), 10 deletions(-)

Comments

Greg Kurz March 16, 2020, 4:04 p.m. UTC | #1
On Mon, 16 Mar 2020 13:29:02 +1100
Alexey Kardashevskiy <aik@ozlabs.ru> wrote:

> This reverts commit 674d0d0cf66d4 ("rtas: Reserve space for FWNMI log")
> which expanded the RTAS blob size to match the QEMU expectation about
> the RTAS area available for FWNMI logs.
> 
> Instead, it relies on QEMU passing the "rtas-size" property and passes it
> through untouched. This adds a check that QEMU allocated enough for
> RTAS blob. This adds a fallback to the default 20 bytes "rtas-size" if
> none specified by QEMU.
> 
> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> ---

LGTM

Reviewed-by: Greg Kurz <groug@kaod.org>

>  board-qemu/slof/rtas.fs | 9 ++++++++-
>  lib/libhvcall/hvcall.S  | 9 ---------
>  2 files changed, 8 insertions(+), 10 deletions(-)
> 
> diff --git a/board-qemu/slof/rtas.fs b/board-qemu/slof/rtas.fs
> index 90efe602f5d7..6d8090fe6f9f 100644
> --- a/board-qemu/slof/rtas.fs
> +++ b/board-qemu/slof/rtas.fs
> @@ -153,7 +153,14 @@ rtas-node set-node
>  ;
>  
>  hv-rtas-get
> -dup encode-int s" rtas-size" s" /rtas" find-node set-property
> +s" rtas-size" rtas-node get-property
> +IF
> +    dup encode-int s" rtas-size" rtas-node set-property
> +ELSE
> +    decode-int nip nip
> +    over 2dup < IF ." No enough space for RTAS: " . . cr abort THEN
> +    2drop
> +THEN
>  to rtas-size
>  to rtas-base
>  
> diff --git a/lib/libhvcall/hvcall.S b/lib/libhvcall/hvcall.S
> index 9f23624d3add..b19f6dbeff2c 100644
> --- a/lib/libhvcall/hvcall.S
> +++ b/lib/libhvcall/hvcall.S
> @@ -134,13 +134,6 @@ ENTRY(hv_rtas)
>  	ori	r3,r3,KVMPPC_H_RTAS@l
>  	HVCALL
>  	blr
> -	/*
> -	 * A space reserved for a RTAS log from Firmware Assisted
> -	 * Non-Maskable Interrupts Option (FWNMI) feature.
> -	 *
> -	 * The QEMU implementation uses 0x30..0x800 for the log.
> -	 */
> -	.space 2048 - (. - hv_rtas)
>  	.globl hv_rtas_size
>  hv_rtas_size:
>  	.long . - hv_rtas;
> @@ -151,8 +144,6 @@ ENTRY(hv_rtas_broken_sc1)
>  	ori	r3,r3,KVMPPC_H_RTAS@l
>  	.long	0x7c000268
>  	blr
> -	/* See the FWNMI note above */
> -	.space 2048 - (. - hv_rtas_broken_sc1)
>  	.globl hv_rtas_broken_sc1_size
>  hv_rtas_broken_sc1_size:
>  	.long . - hv_rtas_broken_sc1;

Patch
diff mbox series

diff --git a/board-qemu/slof/rtas.fs b/board-qemu/slof/rtas.fs
index 90efe602f5d7..6d8090fe6f9f 100644
--- a/board-qemu/slof/rtas.fs
+++ b/board-qemu/slof/rtas.fs
@@ -153,7 +153,14 @@  rtas-node set-node
 ;
 
 hv-rtas-get
-dup encode-int s" rtas-size" s" /rtas" find-node set-property
+s" rtas-size" rtas-node get-property
+IF
+    dup encode-int s" rtas-size" rtas-node set-property
+ELSE
+    decode-int nip nip
+    over 2dup < IF ." No enough space for RTAS: " . . cr abort THEN
+    2drop
+THEN
 to rtas-size
 to rtas-base
 
diff --git a/lib/libhvcall/hvcall.S b/lib/libhvcall/hvcall.S
index 9f23624d3add..b19f6dbeff2c 100644
--- a/lib/libhvcall/hvcall.S
+++ b/lib/libhvcall/hvcall.S
@@ -134,13 +134,6 @@  ENTRY(hv_rtas)
 	ori	r3,r3,KVMPPC_H_RTAS@l
 	HVCALL
 	blr
-	/*
-	 * A space reserved for a RTAS log from Firmware Assisted
-	 * Non-Maskable Interrupts Option (FWNMI) feature.
-	 *
-	 * The QEMU implementation uses 0x30..0x800 for the log.
-	 */
-	.space 2048 - (. - hv_rtas)
 	.globl hv_rtas_size
 hv_rtas_size:
 	.long . - hv_rtas;
@@ -151,8 +144,6 @@  ENTRY(hv_rtas_broken_sc1)
 	ori	r3,r3,KVMPPC_H_RTAS@l
 	.long	0x7c000268
 	blr
-	/* See the FWNMI note above */
-	.space 2048 - (. - hv_rtas_broken_sc1)
 	.globl hv_rtas_broken_sc1_size
 hv_rtas_broken_sc1_size:
 	.long . - hv_rtas_broken_sc1;