From: Andi Kleen <andi@firstfloor.org>
To: mingo@kernel.org
Cc: peterz@infradead.org, acme@infradead.org,
linux-kernel@vger.kernel.org, eranian@google.com,
Andi Kleen <ak@linux.intel.com>
Subject: [PATCH 2/6] perf, x86: Add Haswell specific transaction flag reporting v4
Date: Fri, 13 Sep 2013 11:08:32 -0700 [thread overview]
Message-ID: <1379095716-4705-3-git-send-email-andi@firstfloor.org> (raw)
In-Reply-To: <1379095716-4705-1-git-send-email-andi@firstfloor.org>
From: Andi Kleen <ak@linux.intel.com>
In the PEBS handler report the transaction flags using the new
generic transaction flags facility. Most of them come from
the "tsx_tuning" field in PEBSv2, but the abort code is derived
from the RAX register reported in the PEBS record.
v2: Fix interaction with precise-loads
v3: Mask out reserved bits. More comments.
v4: Adjust white space
Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
arch/x86/kernel/cpu/perf_event_intel_ds.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/arch/x86/kernel/cpu/perf_event_intel_ds.c b/arch/x86/kernel/cpu/perf_event_intel_ds.c
index 104cbba..f798be8 100644
--- a/arch/x86/kernel/cpu/perf_event_intel_ds.c
+++ b/arch/x86/kernel/cpu/perf_event_intel_ds.c
@@ -207,6 +207,8 @@ union hsw_tsx_tuning {
u64 value;
};
+#define PEBS_HSW_TSX_FLAGS 0xff00000000
+
void init_debug_store_on_cpu(int cpu)
{
struct debug_store *ds = per_cpu(cpu_hw_events, cpu).ds;
@@ -893,6 +895,16 @@ static void __intel_pmu_pebs_event(struct perf_event *event,
(x86_pmu.intel_cap.pebs_format >= 2))
data.weight = intel_hsw_weight(pebs);
+ if ((event->attr.sample_type & PERF_SAMPLE_TRANSACTION) &&
+ x86_pmu.intel_cap.pebs_format >= 2) {
+ data.transaction =
+ (pebs->tsx_tuning & PEBS_HSW_TSX_FLAGS) >> 32;
+ /* For RTM XABORTs also log the abort code from AX */
+ if ((data.transaction & PERF_SAMPLE_TXN_TRANSACTION) &&
+ (pebs->ax & 1))
+ data.transaction |= pebs->ax & 0xff000000;
+ }
+
if (has_branch_stack(event))
data.br_stack = &cpuc->lbr_stack;
--
1.8.3.1
next prev parent reply other threads:[~2013-09-13 18:09 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-13 18:08 perf, x86: Add last TSX PMU code for Haswell Andi Kleen
2013-09-13 18:08 ` [PATCH 1/6] perf, core: Add generic transaction flags v4 Andi Kleen
2013-09-16 10:58 ` Peter Zijlstra
2013-09-16 11:04 ` Peter Zijlstra
2013-09-13 18:08 ` Andi Kleen [this message]
2013-09-16 11:08 ` [PATCH 2/6] perf, x86: Add Haswell specific transaction flag reporting v4 Peter Zijlstra
2013-09-16 11:21 ` Peter Zijlstra
2013-09-13 18:08 ` [PATCH 3/6] perf, tools: Support sorting by in_tx, abort branch flags v3 Andi Kleen
2013-09-13 18:08 ` [PATCH 4/6] perf, tools: Add abort_tx,no_tx,in_tx branch filter options to perf record -j v3 Andi Kleen
2013-09-13 18:08 ` [PATCH 5/6] perf, tools: Add support for record transaction flags v4 Andi Kleen
2013-09-13 18:08 ` [PATCH 6/6] perf, x86: Suppress duplicated abort LBR records Andi Kleen
2013-09-16 11:28 ` Peter Zijlstra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1379095716-4705-3-git-send-email-andi@firstfloor.org \
--to=andi@firstfloor.org \
--cc=acme@infradead.org \
--cc=ak@linux.intel.com \
--cc=eranian@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.