From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753096AbbLNIhK (ORCPT ); Mon, 14 Dec 2015 03:37:10 -0500 Received: from terminus.zytor.com ([198.137.202.10]:52535 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752786AbbLNIhG (ORCPT ); Mon, 14 Dec 2015 03:37:06 -0500 Date: Mon, 14 Dec 2015 00:36:51 -0800 From: tip-bot for Namhyung Kim Message-ID: Cc: linux-kernel@vger.kernel.org, tglx@linutronix.de, namhyung@kernel.org, jolsa@redhat.com, dsahern@gmail.com, mingo@kernel.org, hpa@zytor.com, acme@redhat.com, a.p.zijlstra@chello.nl Reply-To: linux-kernel@vger.kernel.org, tglx@linutronix.de, hpa@zytor.com, mingo@kernel.org, namhyung@kernel.org, dsahern@gmail.com, jolsa@redhat.com, a.p.zijlstra@chello.nl, acme@redhat.com In-Reply-To: <1449802616-16170-2-git-send-email-namhyung@kernel.org> References: <1449802616-16170-2-git-send-email-namhyung@kernel.org> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf top: Access hists->lock only if needed Git-Commit-ID: 151ee834cc946fa159ee406c62b4d5ce1ebd7115 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 151ee834cc946fa159ee406c62b4d5ce1ebd7115 Gitweb: http://git.kernel.org/tip/151ee834cc946fa159ee406c62b4d5ce1ebd7115 Author: Namhyung Kim AuthorDate: Fri, 11 Dec 2015 11:56:54 +0900 Committer: Arnaldo Carvalho de Melo CommitDate: Fri, 11 Dec 2015 08:34:49 -0300 perf top: Access hists->lock only if needed The perf_top__record_precise_ip() releases and regrabs the he->hists->lock because it can sleep if there's an error. But it should be done conditionally as it slows down the fast path. Signed-off-by: Namhyung Kim Cc: David Ahern Cc: Jiri Olsa Cc: Peter Zijlstra Link: http://lkml.kernel.org/r/1449802616-16170-2-git-send-email-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/builtin-top.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c index 3b0978e..586798a 100644 --- a/tools/perf/builtin-top.c +++ b/tools/perf/builtin-top.c @@ -194,21 +194,23 @@ static void perf_top__record_precise_ip(struct perf_top *top, pthread_mutex_unlock(¬es->lock); - /* - * This function is now called with he->hists->lock held. - * Release it before going to sleep. - */ - pthread_mutex_unlock(&he->hists->lock); + if (unlikely(err)) { + /* + * This function is now called with he->hists->lock held. + * Release it before going to sleep. + */ + pthread_mutex_unlock(&he->hists->lock); + + if (err == -ERANGE && !he->ms.map->erange_warned) + ui__warn_map_erange(he->ms.map, sym, ip); + else if (err == -ENOMEM) { + pr_err("Not enough memory for annotating '%s' symbol!\n", + sym->name); + sleep(1); + } - if (err == -ERANGE && !he->ms.map->erange_warned) - ui__warn_map_erange(he->ms.map, sym, ip); - else if (err == -ENOMEM) { - pr_err("Not enough memory for annotating '%s' symbol!\n", - sym->name); - sleep(1); + pthread_mutex_lock(&he->hists->lock); } - - pthread_mutex_lock(&he->hists->lock); } static void perf_top__show_details(struct perf_top *top)