From: kan.liang@linux.intel.com
To: peterz@infradead.org, acme@kernel.org, mingo@redhat.com,
eranian@google.com, mpe@ellerman.id.au,
linux-kernel@vger.kernel.org
Cc: ak@linux.intel.com, andreas.kogler.0x@gmail.com,
atrajeev@linux.vnet.ibm.com,
Kan Liang <kan.liang@linux.intel.com>
Subject: [PATCH 6/6] perf: Use sample_flags for txn
Date: Wed, 31 Aug 2022 07:55:14 -0700 [thread overview]
Message-ID: <20220831145514.190514-7-kan.liang@linux.intel.com> (raw)
In-Reply-To: <20220831145514.190514-1-kan.liang@linux.intel.com>
From: Kan Liang <kan.liang@linux.intel.com>
Use the new sample_flags to indicate whether the txn field is filled by
the PMU driver.
Remove the txn field from the perf_sample_data_init() to minimize the
number of cache lines touched.
Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
---
arch/x86/events/intel/ds.c | 8 ++++++--
include/linux/perf_event.h | 3 +--
kernel/events/core.c | 3 +++
3 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/arch/x86/events/intel/ds.c b/arch/x86/events/intel/ds.c
index 9a10457ff32a..3c6a68d7fe42 100644
--- a/arch/x86/events/intel/ds.c
+++ b/arch/x86/events/intel/ds.c
@@ -1633,9 +1633,11 @@ static void setup_pebs_fixed_sample_data(struct perf_event *event,
data->weight.full = intel_get_tsx_weight(pebs->tsx_tuning);
data->sample_flags |= PERF_SAMPLE_WEIGHT_TYPE;
}
- if (sample_type & PERF_SAMPLE_TRANSACTION)
+ if (sample_type & PERF_SAMPLE_TRANSACTION) {
data->txn = intel_get_tsx_transaction(pebs->tsx_tuning,
pebs->ax);
+ data->sample_flags |= PERF_SAMPLE_TRANSACTION;
+ }
}
/*
@@ -1785,9 +1787,11 @@ static void setup_pebs_adaptive_sample_data(struct perf_event *event,
if (sample_type & PERF_SAMPLE_ADDR_TYPE)
data->addr = meminfo->address;
- if (sample_type & PERF_SAMPLE_TRANSACTION)
+ if (sample_type & PERF_SAMPLE_TRANSACTION) {
data->txn = intel_get_tsx_transaction(meminfo->tsx_tuning,
gprs ? gprs->ax : 0);
+ data->sample_flags |= PERF_SAMPLE_TRANSACTION;
+ }
}
if (format_size & PEBS_DATACFG_XMMS) {
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 79b44084c15d..d7c9fdd82bc3 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -1011,7 +1011,6 @@ struct perf_sample_data {
u64 addr;
struct perf_raw_record *raw;
u64 period;
- u64 txn;
/*
* The other fields, optionally {set,used} by
@@ -1020,6 +1019,7 @@ struct perf_sample_data {
struct perf_branch_stack *br_stack;
union perf_sample_weight weight;
union perf_mem_data_src data_src;
+ u64 txn;
u64 type;
u64 ip;
@@ -1062,7 +1062,6 @@ static inline void perf_sample_data_init(struct perf_sample_data *data,
data->addr = addr;
data->raw = NULL;
data->period = period;
- data->txn = 0;
}
/*
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 163e2f478e61..15d27b14c827 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -7414,6 +7414,9 @@ void perf_prepare_sample(struct perf_event_header *header,
if (filtered_sample_type & PERF_SAMPLE_DATA_SRC)
data->data_src.val = PERF_MEM_NA;
+ if (filtered_sample_type & PERF_SAMPLE_TRANSACTION)
+ data->txn = 0;
+
if (sample_type & PERF_SAMPLE_REGS_INTR) {
/* regs dump ABI info */
int size = sizeof(u64);
--
2.35.1
next prev parent reply other threads:[~2022-08-31 14:57 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-31 14:55 [PATCH 0/6] Add sample_flags to improve the perf_sample_data struct kan.liang
2022-08-31 14:55 ` [PATCH 1/6] perf: Add sample_flags to indicate the PMU-filled sample data kan.liang
2022-08-31 14:55 ` [PATCH 2/6] perf/x86/intel/pebs: Fix PEBS timestamps overwritten kan.liang
2022-08-31 14:55 ` [PATCH 3/6] perf: Use sample_flags for branch stack kan.liang
2022-08-31 22:47 ` Namhyung Kim
2022-09-01 12:42 ` Liang, Kan
2022-08-31 14:55 ` [PATCH 4/6] perf: Use sample_flags for weight kan.liang
2022-08-31 14:55 ` [PATCH 5/6] perf: Use sample_flags for data_src kan.liang
2022-08-31 14:55 ` kan.liang [this message]
2022-08-31 22:42 ` [PATCH 0/6] Add sample_flags to improve the perf_sample_data struct Namhyung Kim
2022-09-01 12:47 ` Liang, Kan
2022-09-02 5:24 ` Namhyung Kim
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=20220831145514.190514-7-kan.liang@linux.intel.com \
--to=kan.liang@linux.intel.com \
--cc=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=andreas.kogler.0x@gmail.com \
--cc=atrajeev@linux.vnet.ibm.com \
--cc=eranian@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=mpe@ellerman.id.au \
--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.