From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH v3 18/18] xen/arm: IRQ: Handle multiple action per IRQ Date: Wed, 16 Apr 2014 17:23:24 +0100 Message-ID: <534EAE7C.7090609@linaro.org> References: <1396968247-8768-1-git-send-email-julien.grall@linaro.org> <1396968247-8768-19-git-send-email-julien.grall@linaro.org> <1397663693.24638.226.camel@kazak.uk.xensource.com> <534EAA6C.9070601@linaro.org> <1397665048.24638.237.camel@kazak.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1WaScR-0008WN-Aj for xen-devel@lists.xenproject.org; Wed, 16 Apr 2014 16:23:27 +0000 Received: by mail-ee0-f44.google.com with SMTP id e49so9187831eek.3 for ; Wed, 16 Apr 2014 09:23:25 -0700 (PDT) In-Reply-To: <1397665048.24638.237.camel@kazak.uk.xensource.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Ian Campbell Cc: xen-devel@lists.xenproject.org, Keir Fraser , tim@xen.org, Jan Beulich , stefano.stabellini@citrix.com List-Id: xen-devel@lists.xenproject.org On 04/16/2014 05:17 PM, Ian Campbell wrote: > On Wed, 2014-04-16 at 17:06 +0100, Julien Grall wrote: >> On 04/16/2014 04:54 PM, Ian Campbell wrote: >>> On Tue, 2014-04-08 at 15:44 +0100, Julien Grall wrote: >>>> desc->status &= ~IRQ_PENDING; >>>> spin_unlock_irq(&desc->lock); >>>> - action->handler(irq, action->dev_id, regs); >>>> + list_for_each_entry_safe(action, next, &desc->action, next) >>>> + action->handler(irq, action->dev_id, regs); >>> >>> You aren't removing entries from within the loop so I don't think you >>> need the _safe variant. >> >> As we release the desc->lock here, it might be possible to have the list >> changed under the CPU feet by release_irq. >> >> With the double-linked list, how do we make sure that it won't happen? > > Normally by using a lock. I don't know if even list_for_each_entry_safe > is safe against concurrent changes to the list from other threads, I > think it only refers to safe to changing the list within the loop in > this thread. > Hmmmm... I'm wondering if we can keep desc->lock held while calling the action handler and enable IRQ. For SPI, we are fine as the same SPI can't be fired twice. For PPI, it's bank so it's fine. Did I miss something? -- Julien Grall