Hi, on the Calxeda Midway box a 3.14-rc kernel compiled with KVM support crashes during kernel boot: ... [ 3.663897] Kernel panic - not syncing: unexpected prefetch abort in Hyp mode at: 0x685760 [ 3.663897] unexpected data abort in Hyp mode at: 0xc067d150 [ 3.663897] unexpected HVC/SVC trap in Hyp mode at: 0xc0901dd0 [ 3.663897] [ 3.663901] CPU: 3 PID: 0 Comm: swapper/3 Not tainted 3.14.0-rc3 #118 [ 3.663912] CPU1: stopping [ 3.663916] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.14.0-rc3 #118 [ 3.663919] CPU0: stopping [ 3.663923] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.14.0-rc3 #118 [ 3.744453] CPU2: stopping [ 3.747151] CPU: 2 PID: 1 Comm: swapper/0 Not tainted 3.14.0-rc3 #118 I traced it down to this commit: commit 1fcf7ce0c60213994269fb59569ec161eb6e08d6 Author: Lorenzo Pieralisi <lorenzo.pieralisi@xxxxxxx> Date: Mon Aug 5 15:04:46 2013 +0100 arm: kvm: implement CPU PM notifier It seems like there is some address translation confusion if a CPU comes out of suspend. I added some debug printks to shed some light on the sequence of power management stuff going on. The initial per-cpu KVM setup works fine: [ 2.402059] switch from the HYP stub to our own HYP init vector [ 2.402060] switch from the HYP stub to our own HYP init vector [ 2.402062] switch from the HYP stub to our own HYP init vector [ 2.402065] __hyp_set_vectors(685760) [ 2.402067] __hyp_set_vectors(685760) [ 2.402071] __hyp_set_vectors() done [ 2.402073] __hyp_set_vectors() done [ 2.444884] __hyp_set_vectors(685760) [ 2.451486] __hyp_set_vectors() done [ 2.456007] switch from the HYP stub to our own HYP init vector [ 2.462871] __hyp_set_vectors(685760) [ 2.469473] __hyp_set_vectors() done [ 2.474035] kvm [1]: interrupt-controller@fff14000 IRQ25 [ 2.479411] kvm [1]: timer IRQ27 [ 2.482636] kvm [1]: Hyp mode initialized successfully Also the new notifier registration goes fine: [ 2.487773] calling hyp_cpu_pm_init() (address: c001460c) [ 2.494121] calling cpu_pm_register_notifier(c08c3dc8) [ 2.502199] cpu_pm_register_notifier(fn=0xc001465c); [ 2.507157] cpu_pm_register_notifier() finished [ 2.512631] hyp_cpu_pm_init() returned Then later on (but still without userland) obviously CPU3 goes to sleep already (cmd=0) and seems to be woken up again (cmd=2) immediately: [ 3.643923] hyp_init_cpu_pm_notifier(self=c08c3dc8,cmd=0,v=(null)),CPU: 3 [ 3.643925] hyp_init_cpu_pm_notifier returns NOTIFY_DONE [ 3.643933] psci_cpu_suspend(state.id=0,state.type=1, entry=0x8c44bc); [ 3.663884] hyp_init_cpu_pm_notifier(self=c08c3dc8,cmd=2,v=(null)),CPU: 3 [ 3.663886] calling cpu_init_hyp_mode(NULL) (address=c0014518) [ 3.663888] switch from the HYP stub to our own HYP init vector [ 3.663890] __hyp_set_vectors(685760) [ 3.663897] Kernel panic - not syncing: unexpected prefetch abort in Hyp mode at: 0x685760 [ 3.663897] unexpected data abort in Hyp mode at: 0xc067d150 [ 3.663897] unexpected HVC/SVC trap in Hyp mode at: 0xc0901dd0 Obviously it tries to access the physical address. I wonder if there is something missing in the Calxeda PSCI firmware? Has anyone a clue what could go on here? Unfortunately it crashes every time at boot if KVM and CONFIG_PM is configured - and it worked fine with 3.13. Grateful for any ideas, Andre. _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm