[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 05/11] xen/hvm kexec: unregister debugirq during reboot



On Thu, Jul 28, 2011 at 03:23:05PM +0200, Olaf Hering wrote:
> Unregister the debugirq during kexec, otherwise the kexec kernel will
> run into the BUG() in bind_virq_to_irq() when trying to bind to the
> still registered virq.
> 
> v2:
>  use kexec_is_loaded() function

Is that really neccessary? I mean can you just do it without checking for
that? As in, if you don't have a kexec kernel loaded what will happend to
the guest?

> 
> Signed-off-by: Olaf Hering <olaf@xxxxxxxxx>
> 
> ---
>  arch/x86/xen/smp.c |   22 ++++++++++++++++++++++
>  1 file changed, 22 insertions(+)
> 
> Index: linux-3.0/arch/x86/xen/smp.c
> ===================================================================
> --- linux-3.0.orig/arch/x86/xen/smp.c
> +++ linux-3.0/arch/x86/xen/smp.c
> @@ -16,6 +16,8 @@
>  #include <linux/err.h>
>  #include <linux/slab.h>
>  #include <linux/smp.h>
> +#include <linux/kexec.h>
> +#include <linux/syscore_ops.h>
>  
>  #include <asm/paravirt.h>
>  #include <asm/desc.h>
> @@ -45,6 +47,25 @@ static DEFINE_PER_CPU(int, xen_debug_irq
>  static irqreturn_t xen_call_function_interrupt(int irq, void *dev_id);
>  static irqreturn_t xen_call_function_single_interrupt(int irq, void *dev_id);
>  
> +static void xen_hvn_smp_shutdown(void)
> +{
> +     int cpu;
> +
> +     if (!kexec_is_loaded())
> +             return;
> +
> +     for_each_online_cpu(cpu) {
> +             if (per_cpu(xen_debug_irq, cpu) < 0)
> +                     continue;
> +             unbind_from_irqhandler(per_cpu(xen_debug_irq, cpu), NULL);
> +             per_cpu(xen_debug_irq, cpu) = -1;
> +     }
> +}
> +
> +static struct syscore_ops xen_hvn_smp_syscore_ops = {
> +     .shutdown = xen_hvn_smp_shutdown,
> +};
> +
>  /*
>   * Reschedule call back.
>   */
> @@ -525,6 +546,7 @@ static void __init xen_hvm_smp_prepare_c
>               return;
>       xen_init_lock_cpu(0);
>       xen_init_spinlocks();
> +     register_syscore_ops(&xen_hvn_smp_syscore_ops);
>  }
>  
>  static int __cpuinit xen_hvm_cpu_up(unsigned int cpu)
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.