[v3] core/init: Add hdat-map property to OPAL node

Message ID 20170302041456.21013-1-matthew.brown.dev@gmail.com
State Superseded
Headers show

Commit Message

Matt Brown March 2, 2017, 4:14 a.m.
Exports the HDAT heap to the OS. This allows the OS to view the HDAT heap
directly.  This allows us to view the HDAT area without having to use
getmemproc.

Signed-off-by: Matt Brown <matthew.brown.dev@gmail.com>
---

Changelog v2 to v3:
	- fixed a very stupid mistake!

---
 core/opal.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

Patch

diff --git a/core/opal.c b/core/opal.c
index 6087e65..9273560 100644
--- a/core/opal.c
+++ b/core/opal.c
@@ -119,15 +119,29 @@  void __opal_register(uint64_t token, void *func, unsigned int nargs)
 	opal_num_args[token] = nargs;
 }
 
+static void add_opal_firmware_exports_node(struct dt_node *node)
+{
+	struct dt_node *exports = dt_new(node, "exports");
+	uint64_t sym_start = (uint64_t)__sym_map_start;
+	uint64_t sym_size = (uint64_t)__sym_map_end - sym_start;
+
+	dt_add_property_u64s(exports, "symbol-map", sym_start, sym_size);
+	dt_add_property_u64s(exports, "hdat-map", SPIRA_HEAP_BASE,
+				SPIRA_HEAP_SIZE);
+}
+
 static void add_opal_firmware_node(void)
 {
-	struct dt_node *firmware = dt_new(opal_node, "firmware");
 	uint64_t sym_start = (uint64_t)__sym_map_start;
 	uint64_t sym_size = (uint64_t)__sym_map_end - sym_start;
+	struct dt_node *firmware = dt_new(opal_node, "firmware");
+
 	dt_add_property_string(firmware, "compatible", "ibm,opal-firmware");
 	dt_add_property_string(firmware, "name", "firmware");
 	dt_add_property_string(firmware, "version", version);
 	dt_add_property_u64s(firmware, "symbol-map", sym_start, sym_size);
+
+	add_opal_firmware_exports_node(firmware);
 }
 
 void add_opal_node(void)