diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2014-12-05 11:39:19 +1100 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2014-12-05 11:42:58 +1100 |
commit | 0e6167e3fee3adbd9f65fdb5cfe59d6e544bd4bb (patch) | |
tree | 80d98938cb735b7806193d0db194ad3cd7f43864 | |
parent | 17b02f1b14fea4e9ff89d2059295f85f525e6492 (diff) | |
download | skiboot-0e6167e3fee3adbd9f65fdb5cfe59d6e544bd4bb.zip skiboot-0e6167e3fee3adbd9f65fdb5cfe59d6e544bd4bb.tar.gz skiboot-0e6167e3fee3adbd9f65fdb5cfe59d6e544bd4bb.tar.bz2 |
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>
-rw-r--r-- | core/opal.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/core/opal.c b/core/opal.c index 5b96064..044ff92 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) |