summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorTony Breeds <tony@bakeyournoodle.com>2007-06-20 07:17:29 +0200
committerPaul Mackerras <paulus@samba.org>2007-06-20 14:07:38 +0200
commitc5f226c7e95bf318879fb6ae02fc0dfb0f6d408c (patch)
tree229a668644f8a90ee371ec30666a0b9a865db8af /arch
parent[POWERPC] PowerPC: Prevent data exception in kernel space (32-bit) (diff)
downloadlinux-c5f226c7e95bf318879fb6ae02fc0dfb0f6d408c.tar.xz
linux-c5f226c7e95bf318879fb6ae02fc0dfb0f6d408c.zip
[POWERPC] Fix powermac late initcall to only run on powermac
Current ppc64_defconfig kernel fails to boot on iSeries, dying with: Unable to handle kernel paging request for data at address 0x00000000 Faulting instruction address: 0xc00000000071b258 Oops: Kernel access of bad area, sig: 11 [#1] SMP NR_CPUS=32 iSeries <snip> NIP [c00000000071b258] .iSeries_src_init+0x34/0x64 LR [c000000000701bb4] .kernel_init+0x1fc/0x3bc Call Trace: [c000000007d0be30] [0000000000008000] 0x8000 (unreliable) [c000000007d0bea0] [c000000000701bb4] .kernel_init+0x1fc/0x3bc [c000000007d0bf90] [c0000000000262d4] .kernel_thread+0x4c/0x68 Instruction dump: e922cba8 3880ffff 78840420 f8010010 f821ff91 60000000 e8090000 78095fe3 4182002c e922cb58 e862cbb0 e9290140 <e8090000> f8410028 7c0903a6 e9690010 Kernel panic - not syncing: Attempted to kill init! This happens because some powermac code unconditionally sets ppc_md.progress to NULL. This patch makes sure the powermac late initcall is only run on powermac machines. Signed-off-by: Tony Breeds <tony@bakeyournoodle.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/platforms/powermac/setup.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/powermac/setup.c b/arch/powerpc/platforms/powermac/setup.c
index 956571526a57..7ccb9236e8b4 100644
--- a/arch/powerpc/platforms/powermac/setup.c
+++ b/arch/powerpc/platforms/powermac/setup.c
@@ -454,6 +454,9 @@ static int initializing = 1;
static int pmac_late_init(void)
{
+ if (!machine_is(powermac))
+ return -ENODEV;
+
initializing = 0;
/* this is udbg (which is __init) and we can later use it during
* cpu hotplug (in smp_core99_kick_cpu) */