Re: [PATCH V4] x86: call smp vmxoff in smp stop

From: Paolo Bonzini
Date: Tue Apr 18 2017 - 09:34:42 EST


Ingo, can you put this in tip?

Thanks,

Paolo

On 18/01/2017 12:32, Xishi Qiu wrote:
> From: Tiantian Feng <fengtiantian@xxxxxxxxxx>
>
> We need to disable VMX on all CPUs before stop cpu when OS panic,
> otherwisewe risk hanging up the machine, because the CPU ignore INIT
> signals when VMX is enabled. In kernel mainline this issue existence.
>
> Signed-off-by: Tiantian Feng <fengtiantian@xxxxxxxxxx>
> Signed-off-by: Xishi Qiu <qiuxishi@xxxxxxxxxx>
> ---
> 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 68f8cc2..b574d55 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();
> }
>