linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2 v2] cpu/hotplug: Allow the CPU in CPU_UP_PREPARE state to be brought up again.
@ 2021-12-06 15:20 Sebastian Andrzej Siewior
  2021-12-06 15:20 ` [PATCH 1/2] x86/xen: Allow to retry if cpu_initialize_context() failed Sebastian Andrzej Siewior
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Sebastian Andrzej Siewior @ 2021-12-06 15:20 UTC (permalink / raw)
  To: linux-kernel, x86, xen-devel
  Cc: Thomas Gleixner, Longpeng, Gonglei, Peter Zijlstra, Ingo Molnar,
	Valentin Schneider, Juergen Gross, Stefano Stabellini,
	Ingo Molnar, Borislav Petkov, Dave Hansen, H . Peter Anvin

This is a repost of the previous patch (#2) and adding Boris
(Ostrovsky)'s suggestion regarding the XEN bits.
The previous post can be found at
   https://lore.kernel.org/all/20211122154714.xaoxok3fpk5bgznz@linutronix.de/

Sebastian



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] x86/xen: Allow to retry if cpu_initialize_context() failed.
  2021-12-06 15:20 [PATCH 0/2 v2] cpu/hotplug: Allow the CPU in CPU_UP_PREPARE state to be brought up again Sebastian Andrzej Siewior
@ 2021-12-06 15:20 ` Sebastian Andrzej Siewior
  2021-12-06 15:20 ` [PATCH 2/2] cpu/hotplug: Allow the CPU in CPU_UP_PREPARE state to be brought up again Sebastian Andrzej Siewior
  2021-12-14 12:17 ` [PATCH 0/2 v2] " Sebastian Andrzej Siewior
  2 siblings, 0 replies; 4+ messages in thread
From: Sebastian Andrzej Siewior @ 2021-12-06 15:20 UTC (permalink / raw)
  To: linux-kernel, x86, xen-devel
  Cc: Thomas Gleixner, Longpeng, Gonglei, Peter Zijlstra, Ingo Molnar,
	Valentin Schneider, Juergen Gross, Stefano Stabellini,
	Ingo Molnar, Borislav Petkov, Dave Hansen, H . Peter Anvin,
	Boris Ostrovsky, Sebastian Andrzej Siewior

From: Boris Ostrovsky <boris.ostrovsky@oracle.com>

If memory allocation in cpu_initialize_context() fails then it will
bring up the VCPU and leave with the corresponding CPU bit set in
xen_cpu_initialized_map.
The following (presumably successful) CPU bring up will BUG in
xen_pv_cpu_up() because nothing for that VCPU would be initialized.

Clear the CPU bits, that were set in cpu_initialize_context() in case
the memory allocation fails.

[ bigeasy: Creating a patch from Boris' email. ]

Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 arch/x86/xen/smp_pv.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/arch/x86/xen/smp_pv.c b/arch/x86/xen/smp_pv.c
index 6a8f3b53ab834..86368fcef4667 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);
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] cpu/hotplug: Allow the CPU in CPU_UP_PREPARE state to be brought up again.
  2021-12-06 15:20 [PATCH 0/2 v2] cpu/hotplug: Allow the CPU in CPU_UP_PREPARE state to be brought up again Sebastian Andrzej Siewior
  2021-12-06 15:20 ` [PATCH 1/2] x86/xen: Allow to retry if cpu_initialize_context() failed Sebastian Andrzej Siewior
@ 2021-12-06 15:20 ` Sebastian Andrzej Siewior
  2021-12-14 12:17 ` [PATCH 0/2 v2] " Sebastian Andrzej Siewior
  2 siblings, 0 replies; 4+ messages in thread
From: Sebastian Andrzej Siewior @ 2021-12-06 15:20 UTC (permalink / raw)
  To: linux-kernel, x86, xen-devel
  Cc: Thomas Gleixner, Longpeng, Gonglei, Peter Zijlstra, Ingo Molnar,
	Valentin Schneider, Juergen Gross, Stefano Stabellini,
	Ingo Molnar, Borislav Petkov, Dave Hansen, H . Peter Anvin,
	Sebastian Andrzej Siewior, Dongli Zhang, Henry Wang

From: "Longpeng(Mike)" <longpeng2@huawei.com>

A CPU will not show up in virtualized environment which includes an
Enclave. The VM splits its resources into a primary VM and a Enclave
VM. While the Enclave is active, the hypervisor will ignore all requests
to bring up a CPU and this CPU will remain in CPU_UP_PREPARE state.
The kernel will wait up to ten seconds for CPU to show up
(do_boot_cpu()) and then rollback the hotplug state back to
CPUHP_OFFLINE leaving the CPU state in CPU_UP_PREPARE. The CPU state is
set back to CPUHP_TEARDOWN_CPU during the CPU_POST_DEAD stage.

After the Enclave VM terminates, the primary VM can bring up the CPU
again.

Allow to bring up the CPU if it is in the CPU_UP_PREPARE state.

[bigeasy: Rewrite commit description.]

Signed-off-by: Longpeng(Mike) <longpeng2@huawei.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Link: https://lore.kernel.org/r/20210901051143.2752-1-longpeng2@huawei.com
Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
Tested-by: Dongli Zhang <dongli.zhang@oracle.com>
Reviewed-by: Henry Wang <Henry.Wang@arm.com>
Link: https://lore.kernel.org/r/20211122154714.xaoxok3fpk5bgznz@linutronix.de
---
 kernel/smpboot.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/kernel/smpboot.c b/kernel/smpboot.c
index f6bc0bc8a2aab..b9f54544e7499 100644
--- a/kernel/smpboot.c
+++ b/kernel/smpboot.c
@@ -392,6 +392,13 @@ int cpu_check_up_prepare(int cpu)
 		 */
 		return -EAGAIN;
 
+	case CPU_UP_PREPARE:
+		/*
+		 * Timeout while waiting for the CPU to show up. Allow to try
+		 * again later.
+		 */
+		return 0;
+
 	default:
 
 		/* Should not happen.  Famous last words. */
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 0/2 v2] cpu/hotplug: Allow the CPU in CPU_UP_PREPARE state to be brought up again.
  2021-12-06 15:20 [PATCH 0/2 v2] cpu/hotplug: Allow the CPU in CPU_UP_PREPARE state to be brought up again Sebastian Andrzej Siewior
  2021-12-06 15:20 ` [PATCH 1/2] x86/xen: Allow to retry if cpu_initialize_context() failed Sebastian Andrzej Siewior
  2021-12-06 15:20 ` [PATCH 2/2] cpu/hotplug: Allow the CPU in CPU_UP_PREPARE state to be brought up again Sebastian Andrzej Siewior
@ 2021-12-14 12:17 ` Sebastian Andrzej Siewior
  2 siblings, 0 replies; 4+ messages in thread
From: Sebastian Andrzej Siewior @ 2021-12-14 12:17 UTC (permalink / raw)
  To: linux-kernel, x86, xen-devel
  Cc: Thomas Gleixner, Longpeng, Gonglei, Peter Zijlstra, Ingo Molnar,
	Valentin Schneider, Juergen Gross, Stefano Stabellini,
	Ingo Molnar, Borislav Petkov, Dave Hansen, H . Peter Anvin

On 2021-12-06 16:20:32 [+0100], To linux-kernel@vger.kernel.org wrote:
> This is a repost of the previous patch (#2) and adding Boris
> (Ostrovsky)'s suggestion regarding the XEN bits.
> The previous post can be found at
>    https://lore.kernel.org/all/20211122154714.xaoxok3fpk5bgznz@linutronix.de/

ping.

Sebastian

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-12-14 12:17 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-06 15:20 [PATCH 0/2 v2] cpu/hotplug: Allow the CPU in CPU_UP_PREPARE state to be brought up again Sebastian Andrzej Siewior
2021-12-06 15:20 ` [PATCH 1/2] x86/xen: Allow to retry if cpu_initialize_context() failed Sebastian Andrzej Siewior
2021-12-06 15:20 ` [PATCH 2/2] cpu/hotplug: Allow the CPU in CPU_UP_PREPARE state to be brought up again Sebastian Andrzej Siewior
2021-12-14 12:17 ` [PATCH 0/2 v2] " Sebastian Andrzej Siewior

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).