From patchwork Tue Oct 21 14:16:47 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sowmini Varadhan X-Patchwork-Id: 401516 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 6601314001A for ; Wed, 22 Oct 2014 01:16:52 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932798AbaJUOQv (ORCPT ); Tue, 21 Oct 2014 10:16:51 -0400 Received: from aserp1040.oracle.com ([141.146.126.69]:28332 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932755AbaJUOQv (ORCPT ); Tue, 21 Oct 2014 10:16:51 -0400 Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s9LEGmi5024159 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 21 Oct 2014 14:16:49 GMT Received: from userz7022.oracle.com (userz7022.oracle.com [156.151.31.86]) by ucsinet22.oracle.com (8.14.5+Sun/8.14.5) with ESMTP id s9LEGl6l008028 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 21 Oct 2014 14:16:48 GMT Received: from abhmp0007.oracle.com (abhmp0007.oracle.com [141.146.116.13]) by userz7022.oracle.com (8.14.5+Sun/8.14.4) with ESMTP id s9LEGlbQ007924; Tue, 21 Oct 2014 14:16:47 GMT Received: from oracle.com (/10.154.137.102) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 21 Oct 2014 07:16:46 -0700 Date: Tue, 21 Oct 2014 10:16:47 -0400 From: Sowmini Varadhan To: davem@davemloft.net, sowmini.varadhan@oracle.com Cc: netdev@vger.kernel.org, sparclinux@vger.kernel.org Subject: [PATCHv4 3/4] sparc64: Avoid irqsave/restore on vio.lock if in_softirq() Message-ID: <20141021141647.GF15405@oracle.com> MIME-Version: 1.0 Content-Disposition: inline Received: from oracle.com (/10.154.149.247) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 15 Oct 2014 11:02:45 -0700 User-Agent: Mutt/1.5.21 (2010-09-15) X-Source-IP: ucsinet22.oracle.com [156.151.31.94] Sender: sparclinux-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: sparclinux@vger.kernel.org For NAPIfied drivers , there is no need to synchronize by doing irqsave/restore on vio.lock in the I/O path. Signed-off-by: Sowmini Varadhan --- arch/sparc/kernel/viohs.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/arch/sparc/kernel/viohs.c b/arch/sparc/kernel/viohs.c index 7ef081a..d731586 100644 --- a/arch/sparc/kernel/viohs.c +++ b/arch/sparc/kernel/viohs.c @@ -747,10 +747,11 @@ EXPORT_SYMBOL(vio_ldc_free); void vio_port_up(struct vio_driver_state *vio) { - unsigned long flags; + unsigned long flags = 0; int err, state; - spin_lock_irqsave(&vio->lock, flags); + if (!in_softirq()) + spin_lock_irqsave(&vio->lock, flags); state = ldc_state(vio->lp); @@ -777,7 +778,8 @@ void vio_port_up(struct vio_driver_state *vio) mod_timer(&vio->timer, expires); } - spin_unlock_irqrestore(&vio->lock, flags); + if (!in_softirq()) + spin_unlock_irqrestore(&vio->lock, flags); } EXPORT_SYMBOL(vio_port_up);