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

[Xen-devel] Re: [PATCH 6/7] xen: enable event channels to send and recei

To: stefano.stabellini@xxxxxxxxxxxxx
Subject: [Xen-devel] Re: [PATCH 6/7] xen: enable event channels to send and receive IPIs for PV on HVM guests
From: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Date: Tue, 22 Feb 2011 14:30:52 -0500
Cc: Jeremy.Fitzhardinge@xxxxxxxxxx, xen-devel@xxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Delivery-date: Tue, 22 Feb 2011 11:31:49 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <1297878787-378-6-git-send-email-stefano.stabellini@xxxxxxxxxxxxx>
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: <alpine.DEB.2.00.1102161739370.2826@kaball-desktop> <1297878787-378-6-git-send-email-stefano.stabellini@xxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.20 (2009-06-14)
On Wed, Feb 16, 2011 at 05:53:06PM +0000, stefano.stabellini@xxxxxxxxxxxxx 
wrote:
> From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
> 
> Enable the usage of event channels to send and receive IPIs when
> running as a PV on HVM guest.

Why not squash this with the other patch? After this, the only thing
that the other patch had done was to add in the 'xen_hvm_cpu_notify' function
a call to setup the spinlocks..

> 
> Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
> ---
>  arch/x86/xen/enlighten.c |   16 +---------------
>  arch/x86/xen/smp.c       |   42 ++++++++++++++++++++++++++++++++++++++++++
>  arch/x86/xen/xen-ops.h   |    2 ++
>  3 files changed, 45 insertions(+), 15 deletions(-)
> 
> diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
> index 9c1628b..fe02574 100644
> --- a/arch/x86/xen/enlighten.c
> +++ b/arch/x86/xen/enlighten.c
> @@ -1343,20 +1343,6 @@ static struct notifier_block __cpuinitdata 
> xen_hvm_cpu_notifier = {
>       .notifier_call  = xen_hvm_cpu_notify,
>  };
>  
> -static void xen_hvm_spinlock_init(void)
> -{
> -     if (!xen_have_vector_callback)
> -             return;
> -     xen_init_lock_cpu(0);
> -     xen_init_spinlocks();
> -}
> -
> -static void __init xen_hvm_smp_prepare_cpus(unsigned int max_cpus)
> -{
> -     native_smp_prepare_cpus(max_cpus);
> -     xen_hvm_spinlock_init();
> -}
> -
>  static void __init xen_hvm_guest_init(void)
>  {
>       int r;
> @@ -1370,13 +1356,13 @@ static void __init xen_hvm_guest_init(void)
>  
>       if (xen_feature(XENFEAT_hvm_callback_vector))
>               xen_have_vector_callback = 1;
> +     xen_hvm_smp_init();
>       register_cpu_notifier(&xen_hvm_cpu_notifier);
>       xen_unplug_emulated_devices();
>       have_vcpu_info_placement = 0;
>       x86_init.irqs.intr_init = xen_init_IRQ;
>       xen_hvm_init_time_ops();
>       xen_hvm_init_mmu_ops();
> -     smp_ops.smp_prepare_cpus = xen_hvm_smp_prepare_cpus;
>  }
>  
>  static bool __init xen_hvm_platform(void)
> diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
> index 72a4c79..2300d4b 100644
> --- a/arch/x86/xen/smp.c
> +++ b/arch/x86/xen/smp.c
> @@ -509,3 +509,45 @@ void __init xen_smp_init(void)
>       xen_fill_possible_map();
>       xen_init_spinlocks();
>  }
> +
> +static void xen_hvm_spinlock_init(void)
> +{
> +     if (!xen_have_vector_callback)
> +             return;
> +     xen_init_lock_cpu(0);
> +     xen_init_spinlocks();
> +}
> +
> +static void __init xen_hvm_smp_prepare_cpus(unsigned int max_cpus)
> +{
> +     native_smp_prepare_cpus(max_cpus);
> +     WARN_ON(xen_smp_intr_init(0));
> +     xen_hvm_spinlock_init();

Why not merge 'xen_hvm_spinlock_init' in here?

> +}
> +
> +static int __cpuinit xen_hvm_cpu_up(unsigned int cpu)
> +{
> +     int rc;
> +     rc = native_cpu_up(cpu);
> +     WARN_ON (xen_smp_intr_init(cpu));
> +     return rc;
> +}
> +
> +static void xen_hvm_cpu_die(unsigned int cpu)
> +{
> +     unbind_from_irqhandler(per_cpu(xen_resched_irq, cpu), NULL);
> +     unbind_from_irqhandler(per_cpu(xen_callfunc_irq, cpu), NULL);
> +     unbind_from_irqhandler(per_cpu(xen_debug_irq, cpu), NULL);
> +     unbind_from_irqhandler(per_cpu(xen_callfuncsingle_irq, cpu), NULL);
> +     native_cpu_die(cpu);
> +}
> +
> +void __init xen_hvm_smp_init(void)
> +{
> +     smp_ops.smp_prepare_cpus = xen_hvm_smp_prepare_cpus;
> +     smp_ops.smp_send_reschedule = xen_smp_send_reschedule;
> +     smp_ops.cpu_up = xen_hvm_cpu_up;
> +     smp_ops.cpu_die = xen_hvm_cpu_die;
> +     smp_ops.send_call_func_ipi = xen_smp_send_call_function_ipi;
> +     smp_ops.send_call_func_single_ipi = 
> xen_smp_send_call_function_single_ipi;
> +}
> diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h
> index 9d41bf9..3112f55 100644
> --- a/arch/x86/xen/xen-ops.h
> +++ b/arch/x86/xen/xen-ops.h
> @@ -64,10 +64,12 @@ void xen_setup_vcpu_info_placement(void);
>  
>  #ifdef CONFIG_SMP
>  void xen_smp_init(void);
> +void __init xen_hvm_smp_init(void);
>  
>  extern cpumask_var_t xen_cpu_initialized_map;
>  #else
>  static inline void xen_smp_init(void) {}
> +static inline void xen_hvm_smp_init(void) {}
>  #endif
>  
>  #ifdef CONFIG_PARAVIRT_SPINLOCKS
> -- 
> 1.5.6.5

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