diff options
author | Ankur Arora <ankur.a.arora@oracle.com> | 2017-06-03 03:06:02 +0300 |
---|---|---|
committer | Juergen Gross <jgross@suse.com> | 2017-06-13 17:10:58 +0300 |
commit | ae039001054b34c4a624539b32a8b6ff3403aaf9 (patch) | |
tree | 593737839f22262a0c46b39d86987d741f1df8d7 /arch/x86/xen/smp_hvm.c | |
parent | c9b5d98b25161a7ebee6ea59d6424dd9f33c1b99 (diff) | |
download | linux-ae039001054b34c4a624539b32a8b6ff3403aaf9.tar.xz |
xen/vcpu: Handle xen_vcpu_setup() failure at boot
On PVH, PVHVM, at failure in the VCPUOP_register_vcpu_info hypercall
we limit the number of cpus to to MAX_VIRT_CPUS. However, if this
failure had occurred for a cpu beyond MAX_VIRT_CPUS, we continue
to function with > MAX_VIRT_CPUS.
This leads to problems at the next save/restore cycle when there
are > MAX_VIRT_CPUS threads going into stop_machine() but coming
back up there's valid state for only the first MAX_VIRT_CPUS.
This patch pulls the excess CPUs down via cpu_down().
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Signed-off-by: Ankur Arora <ankur.a.arora@oracle.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
Diffstat (limited to 'arch/x86/xen/smp_hvm.c')
-rw-r--r-- | arch/x86/xen/smp_hvm.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/x86/xen/smp_hvm.c b/arch/x86/xen/smp_hvm.c index 6c8a805819ff..fd60abedf658 100644 --- a/arch/x86/xen/smp_hvm.c +++ b/arch/x86/xen/smp_hvm.c @@ -71,4 +71,5 @@ void __init xen_hvm_smp_init(void) smp_ops.send_call_func_ipi = xen_smp_send_call_function_ipi; smp_ops.send_call_func_single_ipi = xen_smp_send_call_function_single_ipi; smp_ops.smp_prepare_boot_cpu = xen_hvm_smp_prepare_boot_cpu; + smp_ops.smp_cpus_done = xen_smp_cpus_done; } |