All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: stefano.stabellini@eu.citrix.com
Cc: linux-kernel@vger.kernel.org, xen-devel@lists.xensource.com,
	Jeremy.Fitzhardinge@citrix.com
Subject: Re: [PATCH 6/7] xen: enable event channels to send and receive IPIs for PV on HVM guests
Date: Tue, 22 Feb 2011 14:30:52 -0500	[thread overview]
Message-ID: <20110222193052.GB17866@dumpdata.com> (raw)
In-Reply-To: <1297878787-378-6-git-send-email-stefano.stabellini@eu.citrix.com>

On Wed, Feb 16, 2011 at 05:53:06PM +0000, stefano.stabellini@eu.citrix.com wrote:
> From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> 
> 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@eu.citrix.com>
> ---
>  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

  reply	other threads:[~2011-02-22 19:31 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-16 17:51 [PATCH 0/7] Xen PV on HVM fixes and improvements Stefano Stabellini
2011-02-16 17:51 ` Stefano Stabellini
2011-02-16 17:53 ` [PATCH 1/7] xen: no need to delay xen_setup_shutdown_event for hvm guests anymore stefano.stabellini
2011-02-16 17:53 ` [PATCH 2/7] xen: do not use xen_info on HVM, set pv_info name to "Xen HVM" stefano.stabellini
2011-02-16 17:53 ` [PATCH 3/7] xen-blkfront: handle Xen major numbers other than XENVBD stefano.stabellini
2011-02-22 19:19   ` Konrad Rzeszutek Wilk
2011-02-25 15:38     ` Stefano Stabellini
2011-02-16 17:53 ` [PATCH 4/7] xen: make the ballon driver work for hvm domains stefano.stabellini
2011-02-16 17:53 ` [PATCH 5/7] xen: PV on HVM: support PV spinlocks stefano.stabellini
2011-02-22 19:31   ` Konrad Rzeszutek Wilk
2011-02-16 17:53 ` [PATCH 6/7] xen: enable event channels to send and receive IPIs for PV on HVM guests stefano.stabellini
2011-02-22 19:30   ` Konrad Rzeszutek Wilk [this message]
2011-02-25 15:40     ` Stefano Stabellini
2011-02-16 17:53 ` [PATCH 7/7] xen: fix compile issue if XEN is enabled but XEN_PVHVM is disabled stefano.stabellini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110222193052.GB17866@dumpdata.com \
    --to=konrad.wilk@oracle.com \
    --cc=Jeremy.Fitzhardinge@citrix.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.