diff options
author | Michael Neuling <mikey@neuling.org> | 2007-06-08 00:00:35 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-06-25 03:03:26 -0400 |
commit | 5a26f6bbb767d7ad23311a1e81cfdd2bebefb855 (patch) | |
tree | 48820eafb45df6fb5afbaa0ca087dacba8cc71a8 | |
parent | 4cefebb1b497a84d61f2fa29d497df75a84b69d4 (diff) |
[POWERPC] Do firmware feature fixups after features are initialised
On pSeries the firmware features are not setup until ppc_md.init_early,
so we can't do the firmware feature sections fixups till after this.
Currently firmware feature sections is only used on iSeries which inits
the firmware features much earlier. This is a bug in waiting on
pSeries.
Signed-off-by: Michael Neuling <mikey@neuling.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
-rw-r--r-- | arch/powerpc/kernel/setup_64.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c index 6018178708a5..bc43bba05cf8 100644 --- a/arch/powerpc/kernel/setup_64.c +++ b/arch/powerpc/kernel/setup_64.c | |||
@@ -350,13 +350,11 @@ void __init setup_system(void) | |||
350 | { | 350 | { |
351 | DBG(" -> setup_system()\n"); | 351 | DBG(" -> setup_system()\n"); |
352 | 352 | ||
353 | /* Apply the CPUs-specific and firmware specific fixups to kernel | 353 | /* Apply CPUs-specific fixups to kernel text (nop out sections |
354 | * text (nop out sections not relevant to this CPU or this firmware) | 354 | * not relevant to this CPU) |
355 | */ | 355 | */ |
356 | do_feature_fixups(cur_cpu_spec->cpu_features, | 356 | do_feature_fixups(cur_cpu_spec->cpu_features, |
357 | &__start___ftr_fixup, &__stop___ftr_fixup); | 357 | &__start___ftr_fixup, &__stop___ftr_fixup); |
358 | do_feature_fixups(powerpc_firmware_features, | ||
359 | &__start___fw_ftr_fixup, &__stop___fw_ftr_fixup); | ||
360 | 358 | ||
361 | /* | 359 | /* |
362 | * Unflatten the device-tree passed by prom_init or kexec | 360 | * Unflatten the device-tree passed by prom_init or kexec |
@@ -394,6 +392,12 @@ void __init setup_system(void) | |||
394 | if (ppc_md.init_early) | 392 | if (ppc_md.init_early) |
395 | ppc_md.init_early(); | 393 | ppc_md.init_early(); |
396 | 394 | ||
395 | /* Apply firmware specific fixups to kernel text (nop out | ||
396 | * sections not relevant to this firmware) | ||
397 | */ | ||
398 | do_feature_fixups(powerpc_firmware_features, | ||
399 | &__start___fw_ftr_fixup, &__stop___fw_ftr_fixup); | ||
400 | |||
397 | /* | 401 | /* |
398 | * We can discover serial ports now since the above did setup the | 402 | * We can discover serial ports now since the above did setup the |
399 | * hash table management for us, thus ioremap works. We do that early | 403 | * hash table management for us, thus ioremap works. We do that early |