* [PATCH] arm: kvm: fix CPU hotplug
@ 2014-09-22 14:52 Vladimir Murzin
2014-09-29 14:03 ` Christoffer Dall
0 siblings, 1 reply; 2+ messages in thread
From: Vladimir Murzin @ 2014-09-22 14:52 UTC (permalink / raw)
To: linux-arm-kernel
On some platforms with no power management capabilities, the hotplug
implementation is allowed to return from a smp_ops.cpu_die() call as a
function return. Upon a CPU onlining event, the KVM CPU notifier tries
to reinstall the hyp stub, which fails on platform where no reset took
place following a hotplug event, with the message:
CPU1: smp_ops.cpu_die() returned, trying to resuscitate
CPU1: Booted secondary processor
Kernel panic - not syncing: unexpected prefetch abort in Hyp mode at: 0x80409540
unexpected data abort in Hyp mode at: 0x80401fe8
unexpected HVC/SVC trap in Hyp mode at: 0x805c6170
since KVM code is trying to reinstall the stub on a system where it is
already configured.
To prevent this issue, this patch adds a check in the KVM hotplug
notifier that detects if the HYP stub really needs re-installing when a
CPU is onlined and skips the installation call if the stub is already in
place, which means that the CPU has not been reset.
Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
Acked-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
---
arch/arm/kvm/arm.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c
index a99e0cd..9b43f54 100644
--- a/arch/arm/kvm/arm.c
+++ b/arch/arm/kvm/arm.c
@@ -826,7 +826,8 @@ static int hyp_init_cpu_notify(struct notifier_block *self,
switch (action) {
case CPU_STARTING:
case CPU_STARTING_FROZEN:
- cpu_init_hyp_mode(NULL);
+ if (__hyp_get_vectors() == hyp_default_vectors)
+ cpu_init_hyp_mode(NULL);
break;
}
--
2.0.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [PATCH] arm: kvm: fix CPU hotplug
2014-09-22 14:52 [PATCH] arm: kvm: fix CPU hotplug Vladimir Murzin
@ 2014-09-29 14:03 ` Christoffer Dall
0 siblings, 0 replies; 2+ messages in thread
From: Christoffer Dall @ 2014-09-29 14:03 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Sep 22, 2014 at 03:52:48PM +0100, Vladimir Murzin wrote:
> On some platforms with no power management capabilities, the hotplug
> implementation is allowed to return from a smp_ops.cpu_die() call as a
> function return. Upon a CPU onlining event, the KVM CPU notifier tries
> to reinstall the hyp stub, which fails on platform where no reset took
> place following a hotplug event, with the message:
>
> CPU1: smp_ops.cpu_die() returned, trying to resuscitate
> CPU1: Booted secondary processor
> Kernel panic - not syncing: unexpected prefetch abort in Hyp mode at: 0x80409540
> unexpected data abort in Hyp mode at: 0x80401fe8
> unexpected HVC/SVC trap in Hyp mode at: 0x805c6170
>
> since KVM code is trying to reinstall the stub on a system where it is
> already configured.
>
> To prevent this issue, this patch adds a check in the KVM hotplug
> notifier that detects if the HYP stub really needs re-installing when a
> CPU is onlined and skips the installation call if the stub is already in
> place, which means that the CPU has not been reset.
>
> Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
> Acked-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Applied to queue, thanks
-Christoffer
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2014-09-29 14:03 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-22 14:52 [PATCH] arm: kvm: fix CPU hotplug Vladimir Murzin
2014-09-29 14:03 ` Christoffer Dall
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).