| From d9c09dedb708eb7b191afd4ca265bcf818767f98 Mon Sep 17 00:00:00 2001 |
| From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> |
| Date: Mon, 29 Nov 2010 14:16:53 -0800 |
| Subject: [PATCH] xen: don't bother to stop other cpus on shutdown/reboot |
| |
| commit 31e323cca9d5c8afd372976c35a5d46192f540d1 upstream. |
| |
| Xen will shoot all the VCPUs when we do a shutdown hypercall, so there's |
| no need to do it manually. |
| |
| In any case it will fail because all the IPI irqs have been pulled |
| down by this point, so the cross-CPU calls will simply hang forever. |
| |
| Until change 76fac077db6b34e2c6383a7b4f3f4f7b7d06d8ce the function calls |
| were not synchronously waited for, so this wasn't apparent. However after |
| that change the calls became synchronous leading to a hang on shutdown |
| on multi-VCPU guests. |
| |
| Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> |
| Cc: Alok Kataria <akataria@vmware.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c |
| index 4d32089..25d787c 100644 |
| --- a/arch/x86/xen/enlighten.c |
| +++ b/arch/x86/xen/enlighten.c |
| @@ -1000,10 +1000,6 @@ static void xen_reboot(int reason) |
| { |
| struct sched_shutdown r = { .reason = reason }; |
| |
| -#ifdef CONFIG_SMP |
| - stop_other_cpus(); |
| -#endif |
| - |
| if (HYPERVISOR_sched_op(SCHEDOP_shutdown, &r)) |
| BUG(); |
| } |
| -- |
| 1.7.4.4 |
| |