All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5] x86: call smp vmxoff in smp stop
@ 2017-04-19 16:18 Paolo Bonzini
  2017-04-20 10:01 ` David Hildenbrand
  2017-04-20 11:16 ` [tip:x86/boot] x86/reboot: Turn off KVM when halting a CPU tip-bot for Tiantian Feng
  0 siblings, 2 replies; 5+ messages in thread
From: Paolo Bonzini @ 2017-04-19 16:18 UTC (permalink / raw)
  To: linux-kernel, kvm; +Cc: mingo, x86, Tiantian Feng, Xishi Qiu

From: Tiantian Feng <fengtiantian@huawei.com>

A CPU in VMX root mode will ignore INIT signals and fail to bring
up the APs after reboot.  Therefore, on a panic we disable VMX on all
CPUs before rebooting or triggering kdump.

Do this when halting the machine as well, in case a firmware-level reboot
does not perform a cold reset for all processors.  Without doing this,
rebooting the host may hang.

Signed-off-by: Tiantian Feng <fengtiantian@huawei.com>
Signed-off-by: Xishi Qiu <qiuxishi@huawei.com>
[Rewritten commit message. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 arch/x86/kernel/smp.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c
index d3c66a15bbde..9d7223cad389 100644
--- a/arch/x86/kernel/smp.c
+++ b/arch/x86/kernel/smp.c
@@ -33,6 +33,7 @@
 #include <asm/mce.h>
 #include <asm/trace/irq_vectors.h>
 #include <asm/kexec.h>
+#include <asm/virtext.h>
 
 /*
  *	Some notes on x86 processor bugs affecting SMP operation:
@@ -162,6 +163,7 @@ static int smp_stop_nmi_callback(unsigned int val, struct pt_regs *regs)
 	if (raw_smp_processor_id() == atomic_read(&stopping_cpu))
 		return NMI_HANDLED;
 
+	cpu_emergency_vmxoff();
 	stop_this_cpu(NULL);
 
 	return NMI_HANDLED;
@@ -174,6 +176,7 @@ static int smp_stop_nmi_callback(unsigned int val, struct pt_regs *regs)
 asmlinkage __visible void smp_reboot_interrupt(void)
 {
 	ipi_entering_ack_irq();
+	cpu_emergency_vmxoff();
 	stop_this_cpu(NULL);
 	irq_exit();
 }
-- 
2.9.3

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

* Re: [PATCH v5] x86: call smp vmxoff in smp stop
  2017-04-19 16:18 [PATCH v5] x86: call smp vmxoff in smp stop Paolo Bonzini
@ 2017-04-20 10:01 ` David Hildenbrand
  2017-04-20 10:13   ` Paolo Bonzini
  2017-04-20 11:16 ` [tip:x86/boot] x86/reboot: Turn off KVM when halting a CPU tip-bot for Tiantian Feng
  1 sibling, 1 reply; 5+ messages in thread
From: David Hildenbrand @ 2017-04-20 10:01 UTC (permalink / raw)
  To: Paolo Bonzini, linux-kernel, kvm; +Cc: mingo, x86, Tiantian Feng, Xishi Qiu

On 19.04.2017 18:18, Paolo Bonzini wrote:
> From: Tiantian Feng <fengtiantian@huawei.com>
> 
> A CPU in VMX root mode will ignore INIT signals and fail to bring
> up the APs after reboot.  Therefore, on a panic we disable VMX on all
> CPUs before rebooting or triggering kdump.
> 
> Do this when halting the machine as well, in case a firmware-level reboot
> does not perform a cold reset for all processors.  Without doing this,
> rebooting the host may hang.

Guess this make sense, just wonder if something like that is actually
expected to work? Not doing a cold reset feels like leaving a lot of
stuff in an uninitialized state. Shouldn't that specific firmware then
care about performing any necessary resets?

-- 

Thanks,

David

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

* Re: [PATCH v5] x86: call smp vmxoff in smp stop
  2017-04-20 10:01 ` David Hildenbrand
@ 2017-04-20 10:13   ` Paolo Bonzini
  2017-04-20 11:09     ` David Hildenbrand
  0 siblings, 1 reply; 5+ messages in thread
From: Paolo Bonzini @ 2017-04-20 10:13 UTC (permalink / raw)
  To: David Hildenbrand, linux-kernel, kvm; +Cc: mingo, x86, Tiantian Feng, Xishi Qiu



On 20/04/2017 12:01, David Hildenbrand wrote:
> On 19.04.2017 18:18, Paolo Bonzini wrote:
>> From: Tiantian Feng <fengtiantian@huawei.com>
>>
>> A CPU in VMX root mode will ignore INIT signals and fail to bring
>> up the APs after reboot.  Therefore, on a panic we disable VMX on all
>> CPUs before rebooting or triggering kdump.
>>
>> Do this when halting the machine as well, in case a firmware-level reboot
>> does not perform a cold reset for all processors.  Without doing this,
>> rebooting the host may hang.
>
> Guess this make sense, just wonder if something like that is actually
> expected to work? Not doing a cold reset feels like leaving a lot of
> stuff in an uninitialized state. Shouldn't that specific firmware then
> care about performing any necessary resets?

Yes, but it cannot do them if it cannot even perform the initial warm
reset ("INIT").

It's probably rare, after all the original introduction of
cpu_emergency_vmxoff is as old as 2008 and it took nine years for
someone to think of making this extra change.

Paolo

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

* Re: [PATCH v5] x86: call smp vmxoff in smp stop
  2017-04-20 10:13   ` Paolo Bonzini
@ 2017-04-20 11:09     ` David Hildenbrand
  0 siblings, 0 replies; 5+ messages in thread
From: David Hildenbrand @ 2017-04-20 11:09 UTC (permalink / raw)
  To: Paolo Bonzini, linux-kernel, kvm; +Cc: mingo, x86, Tiantian Feng, Xishi Qiu

On 20.04.2017 12:13, Paolo Bonzini wrote:
> 
> 
> On 20/04/2017 12:01, David Hildenbrand wrote:
>> On 19.04.2017 18:18, Paolo Bonzini wrote:
>>> From: Tiantian Feng <fengtiantian@huawei.com>
>>>
>>> A CPU in VMX root mode will ignore INIT signals and fail to bring
>>> up the APs after reboot.  Therefore, on a panic we disable VMX on all
>>> CPUs before rebooting or triggering kdump.
>>>
>>> Do this when halting the machine as well, in case a firmware-level reboot
>>> does not perform a cold reset for all processors.  Without doing this,
>>> rebooting the host may hang.
>>
>> Guess this make sense, just wonder if something like that is actually
>> expected to work? Not doing a cold reset feels like leaving a lot of
>> stuff in an uninitialized state. Shouldn't that specific firmware then
>> care about performing any necessary resets?
> 
> Yes, but it cannot do them if it cannot even perform the initial warm
> reset ("INIT").
> 
> It's probably rare, after all the original introduction of
> cpu_emergency_vmxoff is as old as 2008 and it took nine years for
> someone to think of making this extra change.

Right, so this is really a special case. I think this is just fine.

The same problem with !vmm_exclusive as with other callers of
cpu_emergency_vmxoff(), but that should be solved as soon as
vmm_exclusive is dropped.

Reviewed-by: David Hildenbrand <david@redhat.com>

-- 

Thanks,

David

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

* [tip:x86/boot] x86/reboot: Turn off KVM when halting a CPU
  2017-04-19 16:18 [PATCH v5] x86: call smp vmxoff in smp stop Paolo Bonzini
  2017-04-20 10:01 ` David Hildenbrand
@ 2017-04-20 11:16 ` tip-bot for Tiantian Feng
  1 sibling, 0 replies; 5+ messages in thread
From: tip-bot for Tiantian Feng @ 2017-04-20 11:16 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, fengtiantian, hpa, tglx, pbonzini, qiuxishi,
	peterz, mingo, torvalds

Commit-ID:  fba4f472b33aa81ca1836f57d005455261e9126f
Gitweb:     http://git.kernel.org/tip/fba4f472b33aa81ca1836f57d005455261e9126f
Author:     Tiantian Feng <fengtiantian@huawei.com>
AuthorDate: Wed, 19 Apr 2017 18:18:39 +0200
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 20 Apr 2017 10:06:57 +0200

x86/reboot: Turn off KVM when halting a CPU

A CPU in VMX root mode will ignore INIT signals and will fail to bring
up the APs after reboot.  Therefore, on a panic we disable VMX on all
CPUs before rebooting or triggering kdump.

Do this when halting the machine as well, in case a firmware-level reboot
does not perform a cold reset for all processors.  Without doing this,
rebooting the host may hang.

Signed-off-by: Tiantian Feng <fengtiantian@huawei.com>
Signed-off-by: Xishi Qiu <qiuxishi@huawei.com>
[ Rewritten commit message. ]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: kvm@vger.kernel.org
Link: http://lkml.kernel.org/r/20170419161839.30550-1-pbonzini@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/kernel/smp.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c
index d3c66a1..9d7223c 100644
--- a/arch/x86/kernel/smp.c
+++ b/arch/x86/kernel/smp.c
@@ -33,6 +33,7 @@
 #include <asm/mce.h>
 #include <asm/trace/irq_vectors.h>
 #include <asm/kexec.h>
+#include <asm/virtext.h>
 
 /*
  *	Some notes on x86 processor bugs affecting SMP operation:
@@ -162,6 +163,7 @@ static int smp_stop_nmi_callback(unsigned int val, struct pt_regs *regs)
 	if (raw_smp_processor_id() == atomic_read(&stopping_cpu))
 		return NMI_HANDLED;
 
+	cpu_emergency_vmxoff();
 	stop_this_cpu(NULL);
 
 	return NMI_HANDLED;
@@ -174,6 +176,7 @@ static int smp_stop_nmi_callback(unsigned int val, struct pt_regs *regs)
 asmlinkage __visible void smp_reboot_interrupt(void)
 {
 	ipi_entering_ack_irq();
+	cpu_emergency_vmxoff();
 	stop_this_cpu(NULL);
 	irq_exit();
 }

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

end of thread, other threads:[~2017-04-20 11:21 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-19 16:18 [PATCH v5] x86: call smp vmxoff in smp stop Paolo Bonzini
2017-04-20 10:01 ` David Hildenbrand
2017-04-20 10:13   ` Paolo Bonzini
2017-04-20 11:09     ` David Hildenbrand
2017-04-20 11:16 ` [tip:x86/boot] x86/reboot: Turn off KVM when halting a CPU tip-bot for Tiantian Feng

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.