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

[Xen-devel] Re: [PATCH] linux/netback: save interrupt state in add_to_net_schedule_list_tail



Hi Jan, 

Which tree are you intending for this (and the other kernel patches you
sent recently) to be applied to?

Ian.

On Mon, 2010-09-13 at 14:56 +0100, Jan Beulich wrote:
> From: Ian Campbell <ijc@xxxxxxxxxxxxxx>
> Subject: xen: netback: save interrupt state in add_to_net_schedule_list_tail
> 
> add_to_net_schedule_list_tail is called from both hard interrupt context
> (add_to_net_schedule_list_tail) and soft interrupt/process context
> (netif_schedule_work) so use the interrupt state saving spinlock
> variants.
> 
> Fixes:
>         ------------[ cut here ]------------
>         WARNING: at kernel/lockdep.c:2323 
> trace_hardirqs_on_caller+0xef/0x1a0()
>         Hardware name: PowerEdge 860
>         Modules linked in: rtc_cmos rtc_core rtc_lib
>         Pid: 16, comm: xenwatch Not tainted 
> 2.6.32.18-x86_32p-xen0-00850-ge6b9b2c #98
>         Call Trace:
>          [<c103951c>] warn_slowpath_common+0x6c/0xc0
>          [<c1039585>] warn_slowpath_null+0x15/0x20
>          [<c105f60f>] trace_hardirqs_on_caller+0xef/0x1a0
>          [<c105f6cb>] trace_hardirqs_on+0xb/0x10
>          [<c136cc72>] _spin_unlock_irq+0x22/0x40
>          [<c11ab9ef>] add_to_net_schedule_list_tail+0x5f/0xb0
>          [<c11aba6b>] netif_be_int+0x2b/0x120
>          [<c106dd8e>] handle_IRQ_event+0x2e/0xe0
>          [<c106f98e>] handle_level_irq+0x6e/0xf0
>          [<c1197cdf>] __xen_evtchn_do_upcall+0x16f/0x190
>          [<c11981b8>] xen_evtchn_do_upcall+0x28/0x40
>          [<c100b487>] xen_do_upcall+0x7/0xc
>          [<c119bcf9>] xs_talkv+0x59/0x1a0
>          [<c119bf6a>] xs_single+0x3a/0x50
>          [<c119c6f9>] xenbus_read+0x39/0x60
>          [<c11adf77>] frontend_changed+0x3e7/0x6a0
>          [<c119d35a>] xenbus_otherend_changed+0x8a/0xa0
>          [<c119d572>] frontend_changed+0x12/0x20
>          [<c119b9dc>] xenwatch_thread+0x7c/0x140
>          [<c104ea74>] kthread+0x74/0x80
>          [<c100b433>] kernel_thread_helper+0x7/0x10
>         ---[ end trace 48d73949a8e0909a ]---
>         
> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
> 
> --- a/drivers/xen/netback/netback.c
> +++ b/drivers/xen/netback/netback.c
> @@ -821,16 +821,18 @@ static void remove_from_net_schedule_lis
>  
>  static void add_to_net_schedule_list_tail(netif_t *netif)
>  {
> +     unsigned long flags;
> +
>       if (__on_net_schedule_list(netif))
>               return;
>  
> -     spin_lock_irq(&net_schedule_list_lock);
> +     spin_lock_irqsave(&net_schedule_list_lock, flags);
>       if (!__on_net_schedule_list(netif) &&
>           likely(netif_schedulable(netif))) {
>               list_add_tail(&netif->list, &net_schedule_list);
>               netif_get(netif);
>       }
> -     spin_unlock_irq(&net_schedule_list_lock);
> +     spin_unlock_irqrestore(&net_schedule_list_lock, flags);
>  }
>  
>  /*
> 
> 
> 



_______________________________________________
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®.