summaryrefslogtreecommitdiffstats
path: root/arch/x86/xen/smp.h
diff options
context:
space:
mode:
authorAnkur Arora <ankur.a.arora@oracle.com>2017-06-03 02:06:01 +0200
committerJuergen Gross <jgross@suse.com>2017-06-13 16:10:55 +0200
commitc9b5d98b25161a7ebee6ea59d6424dd9f33c1b99 (patch)
treef2c3526d303d950981f7c09cfe6ee4975896611f /arch/x86/xen/smp.h
parentxen/pv: Fix OOPS on restore for a PV, !SMP domain (diff)
downloadlinux-c9b5d98b25161a7ebee6ea59d6424dd9f33c1b99.tar.xz
linux-c9b5d98b25161a7ebee6ea59d6424dd9f33c1b99.zip
xen/vcpu: Handle xen_vcpu_setup() failure in hotplug
The hypercall VCPUOP_register_vcpu_info can fail. This failure is handled by making per_cpu(xen_vcpu, cpu) point to its shared_info slot and those without one (cpu >= MAX_VIRT_CPUS) be NULL. For PVH/PVHVM, this is not enough, because we also need to pull these VCPUs out of circulation. Fix for PVH/PVHVM: on registration failure in the cpuhp prepare callback (xen_cpu_up_prepare_hvm()), return an error to the cpuhp state-machine so it can fail the CPU init. Fix for PV: the registration happens before smp_init(), so, in the failure case we clamp setup_max_cpus and limit the number of VCPUs that smp_init() will bring-up to MAX_VIRT_CPUS. This is functionally correct but it makes the code a bit simpler if we get rid of this explicit clamping: for VCPUs that don't have valid xen_vcpu, fail the CPU init in the cpuhp prepare callback (xen_cpu_up_prepare_pv()). 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.h')
0 files changed, 0 insertions, 0 deletions