@@ -215,6 +215,8 @@ extern int early_init_dt_scan_opal(unsigned long node, const char *uname,
int depth, void *data);
extern int early_init_dt_scan_recoverable_ranges(unsigned long node,
const char *uname, int depth, void *data);
+extern int pseries_probe_fw_features(unsigned long node,
+ const char *uname, int depth, void *data);
extern int opal_get_chars(uint32_t vtermno, char *buf, int count);
extern int opal_put_chars(uint32_t vtermno, const char *buf, int total_len);
@@ -777,6 +777,7 @@ void __init early_init_devtree(void *params)
of_scan_flat_dt(early_init_dt_scan_chosen_ppc, boot_command_line);
/* Scan memory nodes and rebuild MEMBLOCKs */
+ of_scan_flat_dt(pseries_probe_fw_features, NULL);
of_scan_flat_dt(early_init_dt_scan_root, NULL);
of_scan_flat_dt(early_init_dt_scan_memory_ppc, NULL);
@@ -736,7 +736,7 @@ static void pseries_power_off(void)
* Called very early, MMU is off, device-tree isn't unflattened
*/
-static int __init pseries_probe_fw_features(unsigned long node,
+int __init pseries_probe_fw_features(unsigned long node,
const char *uname, int depth,
void *data)
{
@@ -770,6 +770,7 @@ static int __init pseries_probe_fw_features(unsigned long node,
return hypertas_found && vec5_found;
}
+EXPORT_SYMBOL(pseries_probe_fw_features);
static int __init pSeries_probe(void)
{
architecture.vec5 features: The boot-time memory management needs to know the form of the "ibm,dynamic-memory-v2" property early during scanning of the flattened device tree. This patch moves execution of the function pseries_probe_fw_features() early enough to be before the scanning of the memory properties in the device tree to allow recognition of the supported properties. Signed-off-by: Michael Bringmann <mwb@linux.vnet.ibm.com> ---