97 lines
3.0 KiB
Diff
97 lines
3.0 KiB
Diff
From 16b3bfa4f74942d9c2f49159715008d8d93c0f2d Mon Sep 17 00:00:00 2001
|
|
From: David Gibson <dgibson@redhat.com>
|
|
Date: Tue, 7 Jan 2020 00:40:35 +0000
|
|
Subject: [PATCH 1/2] ibm, client-architecture-support: Fix stack handling
|
|
|
|
RH-Author: David Gibson <dgibson@redhat.com>
|
|
Message-id: <20200107004037.421470-2-dgibson@redhat.com>
|
|
Patchwork-id: 93280
|
|
O-Subject: [RHEL-AV-8.2.0 SLOF PATCH 1/2] ibm, client-architecture-support: Fix stack handling
|
|
Bugzilla: 1778704
|
|
RH-Acked-by: Laurent Vivier <lvivier@redhat.com>
|
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
|
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
|
From: Alexey Kardashevskiy <aik@ozlabs.ru>
|
|
|
|
fdt-fix-cas-node returns the end address after it's finished which
|
|
the caller (ibm,client-architecture-support) does not use or drop.
|
|
This renames fdt-fix-cas-node to (fdt-fix-cas-node) and adds a wrapper
|
|
on top of that which does the drop. This will be used later for 2-pass
|
|
tree patching.
|
|
|
|
While at this, exit the function if memory allocation failed.
|
|
|
|
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
|
|
(cherry picked from commit c50195e007319bf39c5315289ab93a2d7d02828b)
|
|
|
|
Signed-off-by: David Gibson <dgibson@redhat.com>
|
|
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
|
---
|
|
board-qemu/slof/archsupport.fs | 8 ++++++--
|
|
board-qemu/slof/fdt.fs | 8 ++++++--
|
|
2 files changed, 12 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/board-qemu/slof/archsupport.fs b/board-qemu/slof/archsupport.fs
|
|
index 33ea765..6512d57 100644
|
|
--- a/board-qemu/slof/archsupport.fs
|
|
+++ b/board-qemu/slof/archsupport.fs
|
|
@@ -18,7 +18,11 @@
|
|
\ to come back to right boot device
|
|
\ Allocate memory for H_CALL
|
|
cas-buffer-size alloc-mem ( vec memaddr )
|
|
- dup 0= IF ." out of memory during ibm,client-architecture-support" cr THEN
|
|
+ dup 0= IF
|
|
+ ." out of memory during ibm,client-architecture-support" cr
|
|
+ 2drop TRUE
|
|
+ EXIT
|
|
+ THEN
|
|
swap over cas-buffer-size ( memaddr vec memaddr size )
|
|
\ make h_call to hypervisor
|
|
hv-cas 0= IF ( memaddr )
|
|
@@ -28,7 +32,7 @@
|
|
dup 4 + fdt-init
|
|
fdt-check-header
|
|
fdt-struct fdt-fix-cas-node
|
|
- fdt-fix-cas-success NOT
|
|
+ fdt-fix-cas-success NOT ( memaddr err? )
|
|
s" /" find-node fdt-fix-phandles
|
|
ELSE
|
|
FALSE
|
|
diff --git a/board-qemu/slof/fdt.fs b/board-qemu/slof/fdt.fs
|
|
index 3e4c1b3..5ece270 100644
|
|
--- a/board-qemu/slof/fdt.fs
|
|
+++ b/board-qemu/slof/fdt.fs
|
|
@@ -394,7 +394,7 @@ r> drop
|
|
find-node ?dup 0 <> IF set-node THEN
|
|
;
|
|
|
|
-: fdt-fix-cas-node ( start -- end )
|
|
+: (fdt-fix-cas-node) ( start -- end )
|
|
recursive
|
|
fdt-next-tag dup OF_DT_BEGIN_NODE <> IF
|
|
." Error " cr
|
|
@@ -435,7 +435,7 @@ r> drop
|
|
ELSE dup OF_DT_BEGIN_NODE = IF
|
|
drop ( drop tag )
|
|
4 -
|
|
- fdt-fix-cas-node
|
|
+ (fdt-fix-cas-node)
|
|
get-parent set-node
|
|
fdt-debug IF ." Returning back " pwd cr THEN
|
|
ELSE
|
|
@@ -449,6 +449,10 @@ r> drop
|
|
drop \ drop tag
|
|
;
|
|
|
|
+: fdt-fix-cas-node ( start -- )
|
|
+ (fdt-fix-cas-node) drop
|
|
+;
|
|
+
|
|
: fdt-fix-cas-success
|
|
fdt-cas-fix?
|
|
;
|
|
--
|
|
1.8.3.1
|
|
|