ppc: Fix boot with yaboot with ARCH=ppc
PATCH 1/1 ppc: Fix boot with yaboot with ARCH=ppc
The merge of machine types broke boot with yaboot & ARCH=ppc due to the old code still retreiving the old-syle machine type passed in by yaboot. This patch fixes it by translating those old numbers. Since that whole mecanism is deprecated, this is a temporary fix until ARCH=ppc uses the new prom_init that the merged architecture now uses for both ppc32 and ppc64 (after 2.6.15)
arch/ppc/kernel/setup.c +13 -1
@@ -602,7 +602,19 @@#endif /* CONFIG_BLK_DEV_INITRD */ #ifdef CONFIG_PPC_MULTIPLATFORM case BI_MACHTYPE : - _machine = data[0 ]; +/* Machine types changed with the merge. Since the +* bootinfo are now deprecated, we can just hard code +* the appropriate conversion here for when we are +* called with yaboot which passes us a machine type +* this way. +*/ +switch (data[0 ]) { +case 1 : _machine = _MACH_prep;break ; +case 2 : _machine = _MACH_Pmac;break ; +case 4 : _machine = _MACH_chrp;break ; +default : + _machine = data[0 ]; + }break ;#endif case BI_MEMSIZE :
Quoted 8 lines · Benjamin Herrenschmidt
The merge of machine types broke boot with yaboot & ARCH=ppc due to the old code still retreiving the old-syle machine type passed in by yaboot. This patch fixes it by translating those old numbers. Since that whole mecanism is deprecated, this is a temporary fix until ARCH=ppc uses the new
prom_initthat the merged architecture now uses for both ppc32 and ppc64 (after 2.6.15)Signed-off-by Benjamin Herrenschmidt <[email protected]>
This fixed my eMac, thanks.
Quoted 34 lines
Index:
linux-work/arch/ppc/kernel/setup.c
===================================================================arch/ppc/kernel/setup.c +13
-2@@ -602,7 +602,19 @@#endif /* CONFIG_BLK_DEV_INITRD */ #ifdef CONFIG_PPC_MULTIPLATFORM case BI_MACHTYPE : - _machine = data[0 ]; +/* Machine types changed with the merge. Since the +* bootinfo are now deprecated, we can just hard code +* the appropriate conversion here for when we are +* called with yaboot which passes us a machine type +* this way. +*/ +switch (data[0 ]) { +case 1 : _machine = _MACH_prep;break ; +case 2 : _machine = _MACH_Pmac;break ; +case 4 : _machine = _MACH_chrp;break ; +default : + _machine = data[0 ]; + }break ;#endif case BI_MEMSIZE : -To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/