Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752438AbdFON4w (ORCPT ); Thu, 15 Jun 2017 09:56:52 -0400 Received: from mail-wr0-f170.google.com ([209.85.128.170]:35596 "EHLO mail-wr0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751985AbdFON4v (ORCPT ); Thu, 15 Jun 2017 09:56:51 -0400 From: Stephane Eranian To: linux-kernel@vger.kernel.org Cc: acme@redhat.com, peterz@infradead.org, mingo@elte.hu, ak@linux.intel.com, kan.liang@intel.com, jolsa@redhat.com Subject: [PATCH 4/5] perf/record: add support for sampling skid ip Date: Thu, 15 Jun 2017 06:56:28 -0700 Message-Id: <1497534989-29231-5-git-send-email-eranian@google.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1497534989-29231-1-git-send-email-eranian@google.com> References: <1497534989-29231-1-git-send-email-eranian@google.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2017 Lines: 49 This patch adds a new --skid-ip option to perf record to capture the unmodified interrupted instruction pointer in each sample. With this option, the perf tool can request that the kernel records both the ip and skid IP in each sample. Unless precise mode is enabled both IPis are the same. They may be different in precise mode depending on the event. $ perf record --skid-ip ..... Signed-off-by: Stephane Eranian --- tools/perf/Documentation/perf-record.txt | 8 ++++++++ tools/perf/builtin-record.c | 2 ++ 2 files changed, 10 insertions(+) diff --git a/tools/perf/Documentation/perf-record.txt b/tools/perf/Documentation/perf-record.txt index b0e9e921d534..fa24376c20e0 100644 --- a/tools/perf/Documentation/perf-record.txt +++ b/tools/perf/Documentation/perf-record.txt @@ -477,6 +477,14 @@ config terms. For example: 'cycles/overwrite/' and 'instructions/no-overwrite/'. Implies --tail-synthesize. +--skid-ip:: +Capture the unmodified interrupt instruction pointer (IP) in each sample. Usually +with event-based sampling, the ip has skid and rarely points to the instruction which +caused the event to overflow. On some architectures, the hardware can eliminate the +skid and perf_events returns it as the IP when precise sampling is enabled. But for +certain measurements, it may be useful to have both the corrected and skid ip. This +option enables capturing the skid ip in addition to the corrected ip. Default: off + SEE ALSO -------- linkperf:perf-stat[1], linkperf:perf-list[1] diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index ee7d0a82ccd0..66b497dc4333 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -1669,6 +1669,8 @@ static struct option __record_options[] = { "signal"), OPT_BOOLEAN(0, "dry-run", &dry_run, "Parse options then exit"), + OPT_BOOLEAN(0, "skid-ip", &record.opts.skid_ip, + "capture skid ip in addition to ip"), OPT_END() }; -- 2.13.1.518.g3df882009-goog