Messages in this thread Patch in this message | | | Date | Mon, 6 Dec 2021 08:39:53 -0500 | Subject | Re: [PATCH] cpu/hotplug: Allow the CPU in CPU_UP_PREPARE state to be brought up again. | From | Boris Ostrovsky <> |
| |
On 12/6/21 6:25 AM, Sebastian Andrzej Siewior wrote: > On 2021-11-24 21:17:34 [-0500], Boris Ostrovsky wrote: >> On 11/24/21 5:54 PM, Thomas Gleixner wrote: >>> Any comment from XEN folks? >> >> If memory allocation in cpu_initialize_context() fails we will not be >> able to bring up the VCPU because xen_cpu_initialized_map bit at the >> top of that routine will already have been set. We will BUG in >> xen_pv_cpu_up() on second (presumably successful) attempt because >> nothing for that VCPU would be initialized. This can in principle be >> fixed by moving allocation to the top of the routine and freeing >> context if the bit in the bitmap is already set. >> >> >> Having said that, allocation really should not fail: for PV guests we >> first bring max number of VCPUs up and then offline them down to >> however many need to run. I think if we fail allocation during boot we >> are going to have a really bad day anyway. >> > So can we keep the patch as-is or are some changes needed?
I think for the sake of completeness we could add
diff --git a/arch/x86/xen/smp_pv.c b/arch/x86/xen/smp_pv.c index 6a8f3b53ab83..86368fcef466 100644 --- a/arch/x86/xen/smp_pv.c +++ b/arch/x86/xen/smp_pv.c @@ -277,8 +277,11 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle) return 0;
ctxt = kzalloc(sizeof(*ctxt), GFP_KERNEL); - if (ctxt == NULL) + if (ctxt == NULL) { + cpumask_clear_cpu(cpu, xen_cpu_initialized_map); + cpumask_clear_cpu(cpu, cpu_callout_mask); return -ENOMEM; + }
gdt = get_cpu_gdt_rw(cpu);
-boris
| |