Archived
14
0
Fork 0

[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>
This commit is contained in:
Michael Neuling 2007-06-08 14:00:35 +10:00 committed by Paul Mackerras
parent 4cefebb1b4
commit 5a26f6bbb7

View file

@ -350,13 +350,11 @@ void __init setup_system(void)
{ {
DBG(" -> setup_system()\n"); DBG(" -> setup_system()\n");
/* Apply the CPUs-specific and firmware specific fixups to kernel /* Apply CPUs-specific fixups to kernel text (nop out sections
* text (nop out sections not relevant to this CPU or this firmware) * not relevant to this CPU)
*/ */
do_feature_fixups(cur_cpu_spec->cpu_features, do_feature_fixups(cur_cpu_spec->cpu_features,
&__start___ftr_fixup, &__stop___ftr_fixup); &__start___ftr_fixup, &__stop___ftr_fixup);
do_feature_fixups(powerpc_firmware_features,
&__start___fw_ftr_fixup, &__stop___fw_ftr_fixup);
/* /*
* Unflatten the device-tree passed by prom_init or kexec * Unflatten the device-tree passed by prom_init or kexec
@ -394,6 +392,12 @@ void __init setup_system(void)
if (ppc_md.init_early) if (ppc_md.init_early)
ppc_md.init_early(); ppc_md.init_early();
/* Apply firmware specific fixups to kernel text (nop out
* sections not relevant to this firmware)
*/
do_feature_fixups(powerpc_firmware_features,
&__start___fw_ftr_fixup, &__stop___fw_ftr_fixup);
/* /*
* We can discover serial ports now since the above did setup the * We can discover serial ports now since the above did setup the
* hash table management for us, thus ioremap works. We do that early * hash table management for us, thus ioremap works. We do that early