WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

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

To: Olaf Hering <olaf@xxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH 05/11] xen/hvm kexec: unregister debugirq during reboot
From: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Date: Fri, 29 Jul 2011 13:45:54 -0400
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Fri, 29 Jul 2011 10:46:43 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <20110728132301.858005961@xxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <20110728132300.248098023@xxxxxxxxx> <20110728132301.858005961@xxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.21 (2010-09-15)
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