summaryrefslogtreecommitdiffstats
path: root/core/opal.c
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2014-12-05 11:39:19 +1100
committerStewart Smith <stewart@linux.vnet.ibm.com>2014-12-05 11:42:58 +1100
commit0e6167e3fee3adbd9f65fdb5cfe59d6e544bd4bb (patch)
tree80d98938cb735b7806193d0db194ad3cd7f43864 /core/opal.c
parent17b02f1b14fea4e9ff89d2059295f85f525e6492 (diff)
downloadtalos-skiboot-0e6167e3fee3adbd9f65fdb5cfe59d6e544bd4bb.tar.gz
talos-skiboot-0e6167e3fee3adbd9f65fdb5cfe59d6e544bd4bb.zip
opal: Don't put the symbol map whole into a property
The huge property trips a bug in some versions of kexec, and it generally makes looking at the device-tree more painful than it has to be. Instead, let's just pass the address & size and we'll add a debugfs file on the Linux side to recover them. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'core/opal.c')
-rw-r--r--core/opal.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/core/opal.c b/core/opal.c
index 5b96064e..044ff929 100644
--- a/core/opal.c
+++ b/core/opal.c
@@ -115,12 +115,14 @@ void __opal_register(uint64_t token, void *func, unsigned int nargs)
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;
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(firmware, "symbol-map", __sym_map_start,
- __sym_map_end - __sym_map_start);
+ dt_add_property_cells(firmware, "symbol-map",
+ hi32(sym_start), lo32(sym_start),
+ hi32(sym_size), lo32(sym_size));
}
void add_opal_node(void)
OpenPOWER on IntegriCloud