mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
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 <igor.druzhinin@citrix.com> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com> Release-acked-by: Juergen Gross <jgross@suse.com>
This commit is contained in:
1 parent
3b53b89291
commit
7d5247cee2
1 file changed
+7
@@ -29,6 +29,7 @@
|
||||
#include <asm/io_apic.h>
|
||||
#include <xen/iommu.h>
|
||||
#include <asm/hpet.h>
|
||||
#include <xen/console.h>
|
||||
|
||||
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");
|
||||
|
||||