diff options
author | Juergen Gross <jgross@suse.com> | 2022-11-25 07:32:47 +0100 |
---|---|---|
committer | Juergen Gross <jgross@suse.com> | 2023-02-13 06:53:19 +0100 |
commit | 336f560a8917fd60bcdb71b97263257611411453 (patch) | |
tree | ba662f8f2eee6e9dc22f99f1dde34ab7e32dfe7e /README | |
parent | 415dab3c179632d098aadc756b39cebceb977978 (diff) |
x86/xen: don't let xen_pv_play_dead() return
A function called via the paravirt play_dead() hook should not return
to the caller.
xen_pv_play_dead() has a problem in this regard, as it currently will
return in case an offlined cpu is brought to life again. This can be
changed only by doing basically a longjmp() to cpu_bringup_and_idle(),
as the hypercall for bringing down the cpu will just return when the
cpu is coming up again. Just re-initializing the cpu isn't possible,
as the Xen hypervisor will deny that operation.
So introduce xen_cpu_bringup_again() resetting the stack and calling
cpu_bringup_and_idle(), which can be called after HYPERVISOR_vcpu_op()
in xen_pv_play_dead().
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20221125063248.30256-2-jgross@suse.com
Signed-off-by: Juergen Gross <jgross@suse.com>
Diffstat (limited to 'README')
0 files changed, 0 insertions, 0 deletions