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

Re: [Xen-devel] [PATCH 2/5] xen: events: Make last processed event channel a per-cpu variable.



On Thu, Mar 03, 2011 at 05:10:12PM +0000, Ian Campbell wrote:
> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxxxxx>
> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

You cloned yourself?

> [ijc: forward ported from linux-2.6.18-xen.hg 325:b2768401db94]
> ---
>  drivers/xen/events.c |   13 ++++++-------
>  1 files changed, 6 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/xen/events.c b/drivers/xen/events.c
> index 75cc6f5..1fc3192 100644
> --- a/drivers/xen/events.c
> +++ b/drivers/xen/events.c
> @@ -1026,6 +1026,8 @@ irqreturn_t xen_debug_interrupt(int irq, void *dev_id)
>  }
>  
>  static DEFINE_PER_CPU(unsigned, xed_nesting_count);
> +static DEFINE_PER_CPU(unsigned int, last_word_idx) = { BITS_PER_LONG - 1 };
> +static DEFINE_PER_CPU(unsigned int, last_bit_idx) = { BITS_PER_LONG - 1 };
>  
>  /*
>   * Mask out the i least significant bits of w
> @@ -1043,8 +1045,6 @@ static DEFINE_PER_CPU(unsigned, xed_nesting_count);
>   */
>  static void __xen_evtchn_do_upcall(void)
>  {
> -     static unsigned int last_word_idx = BITS_PER_LONG - 1;
> -     static unsigned int last_bit_idx = BITS_PER_LONG - 1;
>       int word_idx, bit_idx;
>       int cpu = get_cpu();
>       struct shared_info *s = HYPERVISOR_shared_info;
> @@ -1065,8 +1065,8 @@ static void __xen_evtchn_do_upcall(void)
>  #endif
>               pending_words = xchg(&vcpu_info->evtchn_pending_sel, 0);
>  
> -             word_idx = last_word_idx;
> -             bit_idx = last_bit_idx;
> +             word_idx = __this_cpu_read(last_word_idx);
> +             bit_idx = __this_cpu_read(last_bit_idx);
>  
>               while (pending_words != 0) {
>                       unsigned long pending_bits;
> @@ -1121,9 +1121,8 @@ static void __xen_evtchn_do_upcall(void)
>                                * If this is the final port processed, we'll
>                                * pick up here+1 next time.
>                                */
> -                             last_word_idx = word_idx;
> -                             last_bit_idx = bit_idx;
> -
> +                             __this_cpu_write(last_word_idx, word_idx);
> +                             __this_cpu_write(last_bit_idx, bit_idx);
>                       } while (bit_idx != BITS_PER_LONG - 1);
>  
>                       pending_bits = active_evtchns(cpu, s, word_idx);
> -- 
> 1.5.6.5
> 
> 
> _______________________________________________
> 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®.