From dd51cabb6adff7022e0c81a4a06eb160a2c90ce3 Mon Sep 17 00:00:00 2001 From: Olof Johansson Date: Thu, 2 Sep 2004 20:23:19 -0700 Subject: [PATCH] [PATCH] ppc64: Setup fw_features before init_early calls on pSeries To be able to use the cur_cpu_spec->firmware_features values in early setup, the function initializing them has to be moved up to before the early init calls. Signed-off-by: Olof Johansson Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- arch/ppc64/kernel/chrp_setup.c | 20 ++++++++++++-------- arch/ppc64/kernel/setup.c | 3 +++ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/arch/ppc64/kernel/chrp_setup.c b/arch/ppc64/kernel/chrp_setup.c index d2a7377add536..b26319f7cf28a 100644 --- a/arch/ppc64/kernel/chrp_setup.c +++ b/arch/ppc64/kernel/chrp_setup.c @@ -229,10 +229,6 @@ void __init chrp_init(unsigned long r3, unsigned long r4, unsigned long r5, unsigned long r6, unsigned long r7) { - struct device_node * dn; - char * hypertas; - unsigned int len; - ppc_md.setup_arch = chrp_setup_arch; ppc_md.get_cpuinfo = chrp_get_cpuinfo; if (naca->interrupt_controller == IC_OPEN_PIC) { @@ -261,10 +257,18 @@ chrp_init(unsigned long r3, unsigned long r4, unsigned long r5, ppc_md.progress = chrp_progress; - /* Build up the firmware_features bitmask field - * using contents of device-tree/ibm,hypertas-functions. - * Ultimately this functionality may be moved into prom.c prom_init(). - */ +} + +/* Build up the firmware_features bitmask field + * using contents of device-tree/ibm,hypertas-functions. + * Ultimately this functionality may be moved into prom.c prom_init(). + */ +void __init fw_feature_init(void) +{ + struct device_node * dn; + char * hypertas; + unsigned int len; + cur_cpu_spec->firmware_features = 0; dn = of_find_node_by_path("/rtas"); if (dn == NULL) { diff --git a/arch/ppc64/kernel/setup.c b/arch/ppc64/kernel/setup.c index 4baa8cf38cd9d..7796e4e52964a 100644 --- a/arch/ppc64/kernel/setup.c +++ b/arch/ppc64/kernel/setup.c @@ -67,6 +67,7 @@ extern void pmac_init(unsigned long r3, unsigned long r6, unsigned long r7); +extern void fw_feature_init(void); extern void iSeries_init( void ); extern void iSeries_init_early( void ); extern void pSeries_init_early( void ); @@ -279,11 +280,13 @@ void setup_system(unsigned long r3, unsigned long r4, unsigned long r5, #ifdef CONFIG_PPC_PSERIES case PLATFORM_PSERIES: + fw_feature_init(); pSeries_init_early(); parse_bootinfo(); break; case PLATFORM_PSERIES_LPAR: + fw_feature_init(); pSeriesLP_init_early(); parse_bootinfo(); break; -- 2.53.0