From patchwork Mon Apr 14 16:23:57 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viresh Kumar X-Patchwork-Id: 28349 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-ie0-f200.google.com (mail-ie0-f200.google.com [209.85.223.200]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 0FBF320534 for ; Mon, 14 Apr 2014 16:28:15 +0000 (UTC) Received: by mail-ie0-f200.google.com with SMTP id lx4sf46668483iec.3 for ; Mon, 14 Apr 2014 09:28:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:delivered-to:from:to:cc:subject :date:message-id:in-reply-to:references:in-reply-to:references :sender:precedence:list-id:x-original-sender :x-original-authentication-results:mailing-list:list-post:list-help :list-archive:list-unsubscribe; bh=xOdTVeFXA6kX8Y+n/AXM9PriD9zovrtaXb9JyUsNq+4=; b=C+4O5bZRXQ+yrpV5fUVH8zk3NG0c+Da6TYW4FUnXUAu6cHJPgdbdr8N5oeuTAiygmN j57OGqvCrwQlQXzdOZbZGBY8Si31FdJfaeGi9qIxpvOdmnEENuDgU1lX9QOten3zGYJm WnRP+G42D7Us+/OH5cw0BDWlTAcnARnmsS1/sQYqs0dy+VJbmlcE+wkwhYDLy1FYWRnT lcOcNBvU9tDok4cv4UzPMR22Ti8yHhRA+1+KPuvPh2dze3cGn9CXVozS2cgg9ZLBjT5D KBOxy2LWSUV+FoNPNOA8rOIvkI3XFP2aR42KKWh9GIAlB1qAVFlXLHnDBKATjl7+ICxk TPlg== X-Gm-Message-State: ALoCoQnroSK6NDRoHMftdmMZiAZnNmMcHnwTtk3oH7BT4KYpjcc6S++F7uyQgmrvob+pYnD/X22N X-Received: by 10.182.24.5 with SMTP id q5mr20631339obf.23.1397492895515; Mon, 14 Apr 2014 09:28:15 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.19.115 with SMTP id 106ls2668308qgg.75.gmail; Mon, 14 Apr 2014 09:28:15 -0700 (PDT) X-Received: by 10.220.92.135 with SMTP id r7mr37291570vcm.11.1397492895438; Mon, 14 Apr 2014 09:28:15 -0700 (PDT) Received: from mail-ve0-f178.google.com (mail-ve0-f178.google.com [209.85.128.178]) by mx.google.com with ESMTPS id cx1si1496813vdb.74.2014.04.14.09.28.15 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 14 Apr 2014 09:28:15 -0700 (PDT) Received-SPF: neutral (google.com: 209.85.128.178 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) client-ip=209.85.128.178; Received: by mail-ve0-f178.google.com with SMTP id jw12so7607902veb.23 for ; Mon, 14 Apr 2014 09:28:15 -0700 (PDT) X-Received: by 10.58.230.103 with SMTP id sx7mr2049563vec.28.1397492895367; Mon, 14 Apr 2014 09:28:15 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.220.221.72 with SMTP id ib8csp162918vcb; Mon, 14 Apr 2014 09:28:15 -0700 (PDT) X-Received: by 10.67.5.233 with SMTP id cp9mr3322492pad.147.1397492894642; Mon, 14 Apr 2014 09:28:14 -0700 (PDT) Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u6si9165918paa.11.2014.04.14.09.28.14; Mon, 14 Apr 2014 09:28:14 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755903AbaDNQ2I (ORCPT + 26 others); Mon, 14 Apr 2014 12:28:08 -0400 Received: from mail-pa0-f53.google.com ([209.85.220.53]:36457 "EHLO mail-pa0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753360AbaDNQ2F (ORCPT ); Mon, 14 Apr 2014 12:28:05 -0400 Received: by mail-pa0-f53.google.com with SMTP id ld10so8376497pab.40 for ; Mon, 14 Apr 2014 09:28:04 -0700 (PDT) X-Received: by 10.66.246.229 with SMTP id xz5mr4625599pac.119.1397492884818; Mon, 14 Apr 2014 09:28:04 -0700 (PDT) Received: from localhost ([122.167.126.16]) by mx.google.com with ESMTPSA id bc4sm34781288pbb.2.2014.04.14.09.28.01 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Mon, 14 Apr 2014 09:28:03 -0700 (PDT) From: Viresh Kumar To: tglx@linutronix.de Cc: linaro-kernel@lists.linaro.org, linux-kernel@vger.kernel.org, fweisbec@gmail.com, Arvind.Chauhan@arm.com, linaro-networking@linaro.org, Viresh Kumar Subject: [PATCH 35/38] tick-broadcast: do checks before taking locks in tick_do_broadcast_on_off() Date: Mon, 14 Apr 2014 21:53:57 +0530 Message-Id: <6dd682c8bb0c56f0b40a4ff5ca94acfb536b109f.1397492345.git.viresh.kumar@linaro.org> X-Mailer: git-send-email 1.7.12.rc2.18.g61b472e In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org Precedence: list List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: viresh.kumar@linaro.org X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 209.85.128.178 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , Some of the checks which may force tick_do_broadcast_on_off() to return early can be done before taking locks. This would make these codepaths faster. Signed-off-by: Viresh Kumar --- kernel/time/tick-broadcast.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c index 1597d03..3b07569 100644 --- a/kernel/time/tick-broadcast.c +++ b/kernel/time/tick-broadcast.c @@ -329,27 +329,22 @@ unlock: */ static void tick_do_broadcast_on_off(unsigned long *reason) { - struct clock_event_device *bc, *dev; - struct tick_device *td; + struct tick_device *td = tick_get_cpu_device(); + struct clock_event_device *bc, *dev = td->evtdev; + int cpu = smp_processor_id(), bc_stopped; unsigned long flags; - int cpu, bc_stopped; - - raw_spin_lock_irqsave(&tick_broadcast_lock, flags); - - cpu = smp_processor_id(); - td = tick_get_device(cpu); - dev = td->evtdev; - bc = tick_broadcast_device.evtdev; /* * Is the device not affected by the powerstate ? */ if (!dev || !(dev->features & CLOCK_EVT_FEAT_C3STOP)) - goto out; + return; if (!tick_device_is_functional(dev)) - goto out; + return; + raw_spin_lock_irqsave(&tick_broadcast_lock, flags); + bc = tick_broadcast_device.evtdev; bc_stopped = cpumask_empty(tick_broadcast_mask); switch (*reason) { @@ -385,7 +380,6 @@ static void tick_do_broadcast_on_off(unsigned long *reason) else tick_broadcast_setup_oneshot(bc); } -out: raw_spin_unlock_irqrestore(&tick_broadcast_lock, flags); }