diff options
author | Alexander Graf | 2012-01-19 00:23:46 +0100 |
---|---|---|
committer | Avi Kivity | 2012-03-05 14:57:23 +0200 |
commit | 9cf7c0e465197fa97972428e93162318e917f8ed (patch) | |
tree | 72932bc5775bf167988f85840c773ec157877174 | |
parent | 9d4cba7f93c52d4121ab9c6f289e582d368a6979 (diff) |
KVM: PPC: E500: Fail init when not on e500v2
When enabling the current KVM code on e500mc, I get the following oops:
Oops: Exception in kernel mode, sig: 4 [#1]
SMP NR_CPUS=8 P2041 RDB
Modules linked in:
NIP: c067df4c LR: c067df44 CTR: 00000000
REGS: ee055ed0 TRAP: 0700 Not tainted (3.2.0-10391-g36c5afe)
MSR: 00029002 <CE,EE,ME> CR: 24042022 XER: 00000000
TASK = ee0429b0[1] 'swapper/0' THREAD: ee054000 CPU: 2
GPR00: c067df44 ee055f80 ee0429b0 00000000 00000058 0000003f ee211600 60c6b864
GPR08: 7cc903a6 0000002c 00000000 00000001 44042082 2d180088 00000000 00000000
GPR16: c0000a00 00000014 3fffffff 03fe9000 00000015 7ff3be68 c06e0000 00000000
GPR24: 00000000 00000000 00001720 c067df1c c06e0000 00000000 ee054000 c06ab51c
NIP [c067df4c] kvmppc_e500_init+0x30/0xf8
LR [c067df44] kvmppc_e500_init+0x28/0xf8
Call Trace:
[ee055f80] [c067df44] kvmppc_e500_init+0x28/0xf8 (unreliable)
[ee055fb0] [c0001d30] do_one_initcall+0x50/0x1f0
[ee055fe0] [c06721dc] kernel_init+0xa4/0x14c
[ee055ff0] [c000e910] kernel_thread+0x4c/0x68
Instruction dump:
9421ffd0 7c0802a6 93410018 9361001c 90010034 93810020 93a10024 93c10028
93e1002c 4bfffe7d 2c030000 408200a4 <7c1082a6> 90010008 7c1182a6 9001000c
---[ end trace b8ef4903fcbf9dd3 ]---
Since it doesn't make sense to run the init function on any non-supported
platform, we can just call our "is this platform supported?" function and
bail out of init() if it's not.
Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Avi Kivity <avi@redhat.com>
-rw-r--r-- | arch/powerpc/kvm/e500.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/powerpc/kvm/e500.c b/arch/powerpc/kvm/e500.c index 709d82f956e3..ddcd896fa2ff 100644 --- a/arch/powerpc/kvm/e500.c +++ b/arch/powerpc/kvm/e500.c @@ -229,6 +229,10 @@ static int __init kvmppc_e500_init(void) unsigned long ivor[3]; unsigned long max_ivor = 0; + r = kvmppc_core_check_processor_compat(); + if (r) + return r; + r = kvmppc_booke_init(); if (r) return r; |