From: Igor Druzhinin Date: Tue, 1 Oct 2019 19:15:57 +0000 (+0100) Subject: x86/crash: force unlock console before printing on kexec crash X-Git-Tag: archive/raspbian/4.14.0+80-gd101b417b7-1+rpi1^2~63^2~1373 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=7d5247cee21aa38a16c4b21bc9243eda70c8aebd;p=xen.git x86/crash: force unlock console before printing on kexec crash There is a small window where shootdown NMI might come to a CPU (e.g. in serial interrupt handler) where console lock is taken. In order not to leave following console prints waiting infinitely for shot down CPUs to free the lock - force unlock the console. The race has been frequently observed while crashing nested Xen in an HVM domain. Signed-off-by: Igor Druzhinin Reviewed-by: Andrew Cooper Release-acked-by: Juergen Gross --- diff --git a/xen/arch/x86/crash.c b/xen/arch/x86/crash.c index 6e1d3d3a84..450eecd46b 100644 --- a/xen/arch/x86/crash.c +++ b/xen/arch/x86/crash.c @@ -29,6 +29,7 @@ #include #include #include +#include static cpumask_t waiting_to_crash; static unsigned int crashing_cpu; @@ -154,6 +155,12 @@ static void nmi_shootdown_cpus(void) msecs--; } + /* + * We may have NMI'd another CPU while it was holding the console lock. + * It won't be in a position to release the lock... + */ + console_force_unlock(); + /* Leave a hint of how well we did trying to shoot down the other cpus */ if ( cpumask_empty(&waiting_to_crash) ) printk("Shot down all CPUs\n");