From patchwork Wed Oct 22 22:12:45 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sowmini Varadhan X-Patchwork-Id: 402305 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 F337E14007D for ; Thu, 23 Oct 2014 09:12:48 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933258AbaJVWMs (ORCPT ); Wed, 22 Oct 2014 18:12:48 -0400 Received: from userp1040.oracle.com ([156.151.31.81]:45250 "EHLO userp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933196AbaJVWMr (ORCPT ); Wed, 22 Oct 2014 18:12:47 -0400 Received: from ucsinet21.oracle.com (ucsinet21.oracle.com [156.151.31.93]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s9MMCjEb031398 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 22 Oct 2014 22:12:46 GMT Received: from userz7022.oracle.com (userz7022.oracle.com [156.151.31.86]) by ucsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s9MMCjd3019401 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 22 Oct 2014 22:12:45 GMT Received: from abhmp0004.oracle.com (abhmp0004.oracle.com [141.146.116.10]) by userz7022.oracle.com (8.14.5+Sun/8.14.4) with ESMTP id s9MMCipU015667; Wed, 22 Oct 2014 22:12:44 GMT Received: from oracle.com (/10.154.166.97) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 22 Oct 2014 15:12:44 -0700 Date: Wed, 22 Oct 2014 18:12:45 -0400 From: Sowmini Varadhan To: davem@davemloft.net, sowmini.varadhan@oracle.com Cc: netdev@vger.kernel.org, sparclinux@vger.kernel.org Subject: [PATCHv5 3/4] sparc64: Avoid irqsave/restore on vio.lock if in_softirq() Message-ID: <20141022221245.GE17252@oracle.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-Source-IP: ucsinet21.oracle.com [156.151.31.93] 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 526fcb5..92e2a32 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);