From nobody Tue Apr 7 00:42:40 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 473DDECAAD1 for ; Thu, 1 Sep 2022 13:13:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233940AbiIANNB (ORCPT ); Thu, 1 Sep 2022 09:13:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55260 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234106AbiIANML (ORCPT ); Thu, 1 Sep 2022 09:12:11 -0400 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6D8FCDECC for ; Thu, 1 Sep 2022 06:10:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1662037804; x=1693573804; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=W90ukXHTqD3/ytQV1eaV6HB5Q17e2Jfw0GZUVVJ897A=; b=Aw+DyveaCcGMx+MYowAdzP+es+dO/l0CFU5Vf2l271DTLzKySWfQWavm P8FlA+aJXrbvRieFd3htyynZlrDe13aFkO6UehxV78M4dp9GaMTxYv9wW YxgMjNUcaEwpB5vVv/EpCQcG51BhS1pY3HH8uSvmU2sCmvR+qc/A2+zqY +g4R6LQotibNUF2rW6HM/5tqORbhKz2fcj74AnJx9dmKIEKBqwdNRx1vp 1MUJwVm1duFQH8qezYpS4S2lUQ8grfITqCSxQL+WCLJOh/U+LJitO6lqj RBQ8QitnvNrljqJhqv/5boPHpvqmj4BK+A5AEmEDyvm7vRwVG6zjdVSpA Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10457"; a="321858085" X-IronPort-AV: E=Sophos;i="5.93,280,1654585200"; d="scan'208";a="321858085" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Sep 2022 06:10:02 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,280,1654585200"; d="scan'208";a="612485311" Received: from kanliang-dev.jf.intel.com ([10.165.154.102]) by orsmga002.jf.intel.com with ESMTP; 01 Sep 2022 06:10:01 -0700 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, namhyung@kernel.org, ravi.bangoria@amd.com, Kan Liang Subject: [PATCH V2 1/6] perf: Add sample_flags to indicate the PMU-filled sample data Date: Thu, 1 Sep 2022 06:09:54 -0700 Message-Id: <20220901130959.1285717-2-kan.liang@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220901130959.1285717-1-kan.liang@linux.intel.com> References: <20220901130959.1285717-1-kan.liang@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Kan Liang On some platforms, some data e.g., timestamps, can be retrieved from the PMU driver. Usually, the data from the PMU driver is more accurate. The current perf kernel should output the PMU-filled sample data if it's available. To check the availability of the PMU-filled sample data, the current perf kernel initializes the related fields in the perf_sample_data_init(). When outputting a sample, the perf checks whether the field is updated by the PMU driver. If yes, the updated value will be output. If not, the perf uses an SW way to calculate the value or just outputs the initialized value if an SW way is unavailable either. With more and more data being provided by the PMU driver, more fields has to be initialized in the perf_sample_data_init(). That will increase the number of cache lines touched in perf_sample_data_init() and be harmful to the performance. Add new "sample_flags" to indicate the PMU-filled sample data. The PMU driver should set the corresponding PERF_SAMPLE_ flag when the field is updated. The initialization of the corresponding field is not required anymore. The following patches will make use of it and remove the corresponding fields from the perf_sample_data_init(), which will further minimize the number of cache lines touched. Only clear the sample flags that have already been done by the PMU driver in the perf_prepare_sample() for the PERF_RECORD_SAMPLE. For the other PERF_RECORD_ event type, the sample data is not available. Suggested-by: Peter Zijlstra (Intel) Signed-off-by: Kan Liang Acked-by: Namhyung Kim --- include/linux/perf_event.h | 2 ++ kernel/events/core.c | 17 +++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 1999408a9cbb..0978165a2d87 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -1008,6 +1008,7 @@ struct perf_sample_data { * Fields set by perf_sample_data_init(), group so as to * minimize the cachelines touched. */ + u64 sample_flags; u64 addr; struct perf_raw_record *raw; struct perf_branch_stack *br_stack; @@ -1057,6 +1058,7 @@ static inline void perf_sample_data_init(struct perf_= sample_data *data, u64 addr, u64 period) { /* remaining struct members initialized in perf_prepare_sample() */ + data->sample_flags =3D 0; data->addr =3D addr; data->raw =3D NULL; data->br_stack =3D NULL; diff --git a/kernel/events/core.c b/kernel/events/core.c index 2621fd24ad26..c9b9cb79231a 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -6794,11 +6794,10 @@ static void perf_aux_sample_output(struct perf_even= t *event, =20 static void __perf_event_header__init_id(struct perf_event_header *header, struct perf_sample_data *data, - struct perf_event *event) + struct perf_event *event, + u64 sample_type) { - u64 sample_type =3D event->attr.sample_type; - - data->type =3D sample_type; + data->type =3D event->attr.sample_type; header->size +=3D event->id_header_size; =20 if (sample_type & PERF_SAMPLE_TID) { @@ -6827,7 +6826,7 @@ void perf_event_header__init_id(struct perf_event_hea= der *header, struct perf_event *event) { if (event->attr.sample_id_all) - __perf_event_header__init_id(header, data, event); + __perf_event_header__init_id(header, data, event, event->attr.sample_typ= e); } =20 static void __perf_event__output_id_sample(struct perf_output_handle *hand= le, @@ -7303,6 +7302,7 @@ void perf_prepare_sample(struct perf_event_header *he= ader, struct pt_regs *regs) { u64 sample_type =3D event->attr.sample_type; + u64 filtered_sample_type; =20 header->type =3D PERF_RECORD_SAMPLE; header->size =3D sizeof(*header) + event->header_size; @@ -7310,7 +7310,12 @@ void perf_prepare_sample(struct perf_event_header *h= eader, header->misc =3D 0; header->misc |=3D perf_misc_flags(regs); =20 - __perf_event_header__init_id(header, data, event); + /* + * Clear the sample flags that have already been done by the + * PMU driver. + */ + filtered_sample_type =3D sample_type & ~data->sample_flags; + __perf_event_header__init_id(header, data, event, filtered_sample_type); =20 if (sample_type & (PERF_SAMPLE_IP | PERF_SAMPLE_CODE_PAGE_SIZE)) data->ip =3D perf_instruction_pointer(regs); --=20 2.35.1 From nobody Tue Apr 7 00:42:40 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 67B4AECAAD3 for ; Thu, 1 Sep 2022 13:12:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234159AbiIANM5 (ORCPT ); Thu, 1 Sep 2022 09:12:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55252 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233877AbiIANML (ORCPT ); Thu, 1 Sep 2022 09:12:11 -0400 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8298617049 for ; Thu, 1 Sep 2022 06:10:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1662037805; x=1693573805; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=sbi6khNsjjvSS4caSIbQyKIV39nuU2klly/xGl3rjT8=; b=QzVPrnf0A4xUqdXjv4tvAGcXWnApZGcBKS6NcF6t3sAGdNB5kVXk4hVC RVlUHGFuvYcvjHDIAtzj2EgeGUqwzPZpqiU+sB6l0XQXHnDN/cj+oVFzc 2gYxcxqQoiF5JayAIqPq5ksRatbpB84n5zaQy3myYNX1ae/NZENiDa2wl MO3SSMji3J7h/BQsAaa7jSdi50olxHChEygI1HcPX2efoXGNw4QN8APiJ Yc517HVfp8Y/78Y3JXkxYy/JSKXMZkKx9k8Os2RsJGp8YHUJelJzKYe3N wEbSUU8LofEKbxnr3FV8FFXEBJ8XK3gxfWEFNNy/uARY0M7qY7+IH/3ng A==; X-IronPort-AV: E=McAfee;i="6500,9779,10457"; a="321858087" X-IronPort-AV: E=Sophos;i="5.93,280,1654585200"; d="scan'208";a="321858087" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Sep 2022 06:10:02 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,280,1654585200"; d="scan'208";a="612485335" Received: from kanliang-dev.jf.intel.com ([10.165.154.102]) by orsmga002.jf.intel.com with ESMTP; 01 Sep 2022 06:10:02 -0700 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, namhyung@kernel.org, ravi.bangoria@amd.com, Kan Liang Subject: [PATCH V2 2/6] perf/x86/intel/pebs: Fix PEBS timestamps overwritten Date: Thu, 1 Sep 2022 06:09:55 -0700 Message-Id: <20220901130959.1285717-3-kan.liang@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220901130959.1285717-1-kan.liang@linux.intel.com> References: <20220901130959.1285717-1-kan.liang@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Kan Liang The PEBS TSC-based timestamps do not appear correctly in the final perf.data output file from perf record. The data->time field setup by PEBS in the setup_pebs_fixed_sample_data() is later overwritten by perf_events generic code in perf_prepare_sample(). There is an ordering problem. Set the sample flags when the data->time is updated by PEBS. The data->time field will not be overwritten anymore. Reported-by: Andreas Kogler Reported-by: Stephane Eranian Signed-off-by: Kan Liang Acked-by: Namhyung Kim --- arch/x86/events/intel/ds.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/arch/x86/events/intel/ds.c b/arch/x86/events/intel/ds.c index de1f55d51784..01cbe26225c2 100644 --- a/arch/x86/events/intel/ds.c +++ b/arch/x86/events/intel/ds.c @@ -1643,8 +1643,10 @@ static void setup_pebs_fixed_sample_data(struct perf= _event *event, * We can only do this for the default trace clock. */ if (x86_pmu.intel_cap.pebs_format >=3D 3 && - event->attr.use_clockid =3D=3D 0) + event->attr.use_clockid =3D=3D 0) { data->time =3D native_sched_clock_from_tsc(pebs->tsc); + data->sample_flags |=3D PERF_SAMPLE_TIME; + } =20 if (has_branch_stack(event)) data->br_stack =3D &cpuc->lbr_stack; @@ -1705,8 +1707,10 @@ static void setup_pebs_adaptive_sample_data(struct p= erf_event *event, perf_sample_data_init(data, 0, event->hw.last_period); data->period =3D event->hw.last_period; =20 - if (event->attr.use_clockid =3D=3D 0) + if (event->attr.use_clockid =3D=3D 0) { data->time =3D native_sched_clock_from_tsc(basic->tsc); + data->sample_flags |=3D PERF_SAMPLE_TIME; + } =20 /* * We must however always use iregs for the unwinder to stay sane; the --=20 2.35.1 From nobody Tue Apr 7 00:42:40 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 44FD3ECAAD3 for ; Thu, 1 Sep 2022 13:13:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234209AbiIANNI (ORCPT ); Thu, 1 Sep 2022 09:13:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55276 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233884AbiIANMO (ORCPT ); Thu, 1 Sep 2022 09:12:14 -0400 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B4382E0B7 for ; Thu, 1 Sep 2022 06:10:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1662037810; x=1693573810; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=aYEJXQp4LMSuhaEYUhvioL84bOLWTKxZFDPBy+R5Et4=; b=ky84W9liK7jSws8XccfKU4c91lAQwAU7AI1y22LMaT1V+QBDKOVlndhI N3E9B+Z60JxI6XM/AvXRMSd7c7p3I4nXQWRSYSULHv3zuzeYtAGhBgGr/ 8RejXa1rZFNVre0WL0n3KpvUme7QsbLPHu4BDhDJfkm4I4e/qaMuLaV96 OLQLAm0hwnVIY7DQRKFbFQrG3j5cwTqr3pgyjo8GesSHGZbiELIUB4pm7 zy97CQaAsOmc9qxm9n/jM/p2kA13VhEpITQd8C5CVoJsItvMOxtLBPAg5 P+amzdgT1/Xp/PJUw0/h56vfRvj+VxLuBgfvSeTASDiJve2NQsVXBapA1 Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10457"; a="321858097" X-IronPort-AV: E=Sophos;i="5.93,280,1654585200"; d="scan'208";a="321858097" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Sep 2022 06:10:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,280,1654585200"; d="scan'208";a="612485357" Received: from kanliang-dev.jf.intel.com ([10.165.154.102]) by orsmga002.jf.intel.com with ESMTP; 01 Sep 2022 06:10:03 -0700 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, namhyung@kernel.org, ravi.bangoria@amd.com, Kan Liang Subject: [PATCH V2 3/6] perf: Use sample_flags for branch stack Date: Thu, 1 Sep 2022 06:09:56 -0700 Message-Id: <20220901130959.1285717-4-kan.liang@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220901130959.1285717-1-kan.liang@linux.intel.com> References: <20220901130959.1285717-1-kan.liang@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Kan Liang Use the new sample_flags to indicate whether the branch stack is filled by the PMU driver. Remove the br_stack from the perf_sample_data_init() to minimize the number of cache lines touched. Signed-off-by: Kan Liang Acked-by: Namhyung Kim --- arch/powerpc/perf/core-book3s.c | 1 + arch/x86/events/amd/core.c | 4 +++- arch/x86/events/core.c | 4 +++- arch/x86/events/intel/core.c | 4 +++- arch/x86/events/intel/ds.c | 5 ++++- include/linux/perf_event.h | 4 ++-- kernel/events/core.c | 4 ++-- 7 files changed, 18 insertions(+), 8 deletions(-) diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3= s.c index 13919eb96931..1ad1efdb33f9 100644 --- a/arch/powerpc/perf/core-book3s.c +++ b/arch/powerpc/perf/core-book3s.c @@ -2297,6 +2297,7 @@ static void record_and_restart(struct perf_event *eve= nt, unsigned long val, cpuhw =3D this_cpu_ptr(&cpu_hw_events); power_pmu_bhrb_read(event, cpuhw); data.br_stack =3D &cpuhw->bhrb_stack; + data.sample_flags |=3D PERF_SAMPLE_BRANCH_STACK; } =20 if (event->attr.sample_type & PERF_SAMPLE_DATA_SRC && diff --git a/arch/x86/events/amd/core.c b/arch/x86/events/amd/core.c index 9fbdfbcaf25a..8b70237c33f7 100644 --- a/arch/x86/events/amd/core.c +++ b/arch/x86/events/amd/core.c @@ -929,8 +929,10 @@ static int amd_pmu_v2_handle_irq(struct pt_regs *regs) if (!x86_perf_event_set_period(event)) continue; =20 - if (has_branch_stack(event)) + if (has_branch_stack(event)) { data.br_stack =3D &cpuc->lbr_stack; + data.sample_flags |=3D PERF_SAMPLE_BRANCH_STACK; + } =20 if (perf_event_overflow(event, &data, regs)) x86_pmu_stop(event, 0); diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c index c3d6d139a3c1..b30b8bbcd1e2 100644 --- a/arch/x86/events/core.c +++ b/arch/x86/events/core.c @@ -1701,8 +1701,10 @@ int x86_pmu_handle_irq(struct pt_regs *regs) =20 perf_sample_data_init(&data, 0, event->hw.last_period); =20 - if (has_branch_stack(event)) + if (has_branch_stack(event)) { data.br_stack =3D &cpuc->lbr_stack; + data.sample_flags |=3D PERF_SAMPLE_BRANCH_STACK; + } =20 if (perf_event_overflow(event, &data, regs)) x86_pmu_stop(event, 0); diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c index 7c1e3d36bc65..b5c02627a155 100644 --- a/arch/x86/events/intel/core.c +++ b/arch/x86/events/intel/core.c @@ -3017,8 +3017,10 @@ static int handle_pmi_common(struct pt_regs *regs, u= 64 status) =20 perf_sample_data_init(&data, 0, event->hw.last_period); =20 - if (has_branch_stack(event)) + if (has_branch_stack(event)) { data.br_stack =3D &cpuc->lbr_stack; + data.sample_flags |=3D PERF_SAMPLE_BRANCH_STACK; + } =20 if (perf_event_overflow(event, &data, regs)) x86_pmu_stop(event, 0); diff --git a/arch/x86/events/intel/ds.c b/arch/x86/events/intel/ds.c index 01cbe26225c2..5dcfd2de6ef8 100644 --- a/arch/x86/events/intel/ds.c +++ b/arch/x86/events/intel/ds.c @@ -1648,8 +1648,10 @@ static void setup_pebs_fixed_sample_data(struct perf= _event *event, data->sample_flags |=3D PERF_SAMPLE_TIME; } =20 - if (has_branch_stack(event)) + if (has_branch_stack(event)) { data->br_stack =3D &cpuc->lbr_stack; + data->sample_flags |=3D PERF_SAMPLE_BRANCH_STACK; + } } =20 static void adaptive_pebs_save_regs(struct pt_regs *regs, @@ -1799,6 +1801,7 @@ static void setup_pebs_adaptive_sample_data(struct pe= rf_event *event, if (has_branch_stack(event)) { intel_pmu_store_pebs_lbrs(lbr); data->br_stack =3D &cpuc->lbr_stack; + data->sample_flags |=3D PERF_SAMPLE_BRANCH_STACK; } } =20 diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 0978165a2d87..1e12e79454e0 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -1011,7 +1011,6 @@ struct perf_sample_data { u64 sample_flags; u64 addr; struct perf_raw_record *raw; - struct perf_branch_stack *br_stack; u64 period; union perf_sample_weight weight; u64 txn; @@ -1021,6 +1020,8 @@ struct perf_sample_data { * The other fields, optionally {set,used} by * perf_{prepare,output}_sample(). */ + struct perf_branch_stack *br_stack; + u64 type; u64 ip; struct { @@ -1061,7 +1062,6 @@ static inline void perf_sample_data_init(struct perf_= sample_data *data, data->sample_flags =3D 0; data->addr =3D addr; data->raw =3D NULL; - data->br_stack =3D NULL; data->period =3D period; data->weight.full =3D 0; data->data_src.val =3D PERF_MEM_NA; diff --git a/kernel/events/core.c b/kernel/events/core.c index c9b9cb79231a..104c0c9f4e6f 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -7052,7 +7052,7 @@ void perf_output_sample(struct perf_output_handle *ha= ndle, } =20 if (sample_type & PERF_SAMPLE_BRANCH_STACK) { - if (data->br_stack) { + if (data->sample_flags & PERF_SAMPLE_BRANCH_STACK) { size_t size; =20 size =3D data->br_stack->nr @@ -7358,7 +7358,7 @@ void perf_prepare_sample(struct perf_event_header *he= ader, =20 if (sample_type & PERF_SAMPLE_BRANCH_STACK) { int size =3D sizeof(u64); /* nr */ - if (data->br_stack) { + if (data->sample_flags & PERF_SAMPLE_BRANCH_STACK) { if (perf_sample_save_hw_index(event)) size +=3D sizeof(u64); =20 --=20 2.35.1 From nobody Tue Apr 7 00:42:40 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E8B04ECAAD3 for ; Thu, 1 Sep 2022 13:13:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234002AbiIANNT (ORCPT ); Thu, 1 Sep 2022 09:13:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53728 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233916AbiIANMP (ORCPT ); Thu, 1 Sep 2022 09:12:15 -0400 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8A72D193F8 for ; Thu, 1 Sep 2022 06:10:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1662037812; x=1693573812; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=aIu9wyISiFJZ1L6Y2dnIVdHXNqiCTMNU09sP58Dafk4=; b=VWPHRZtu6jG8Lja37eapVhh4xOrKpLbkHfhfylCPUmatSHlnUO20tckK nyVkhAjgas3vHCqbpbk158/CYmxrzUYMwuBxH07i1nSlQC7QBVLJuz6uK mk9EYXJkUHkNzJtb+KK9asKVOzw/o/7PrfVWXNJpwTaw9jdZalrVDxUhw m+r+voCEQUanH5tVVXcVUsMFNrGk8v5jND/8dRBVjdylM+LJfqd+UINfF CiocX8Q7JRXeMbfJXM+zi20f4/L0FRlXVElONIu/fPY+NeosDg52uWs6W qxj3YZaI3FKehgX4WKJYjU3bdcqxX9FbQZZ89fuVWoHr+JX16AHT5rUW4 A==; X-IronPort-AV: E=McAfee;i="6500,9779,10457"; a="321858102" X-IronPort-AV: E=Sophos;i="5.93,280,1654585200"; d="scan'208";a="321858102" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Sep 2022 06:10:05 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,280,1654585200"; d="scan'208";a="612485377" Received: from kanliang-dev.jf.intel.com ([10.165.154.102]) by orsmga002.jf.intel.com with ESMTP; 01 Sep 2022 06:10:04 -0700 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, namhyung@kernel.org, ravi.bangoria@amd.com, Kan Liang Subject: [PATCH V2 4/6] perf: Use sample_flags for weight Date: Thu, 1 Sep 2022 06:09:57 -0700 Message-Id: <20220901130959.1285717-5-kan.liang@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220901130959.1285717-1-kan.liang@linux.intel.com> References: <20220901130959.1285717-1-kan.liang@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Kan Liang Use the new sample_flags to indicate whether the weight field is filled by the PMU driver. Remove the weight field from the perf_sample_data_init() to minimize the number of cache lines touched. Signed-off-by: Kan Liang Acked-by: Namhyung Kim --- arch/powerpc/perf/core-book3s.c | 5 +++-- arch/x86/events/intel/ds.c | 10 +++++++--- include/linux/perf_event.h | 3 +-- kernel/events/core.c | 3 +++ 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3= s.c index 1ad1efdb33f9..a5c95a2006ea 100644 --- a/arch/powerpc/perf/core-book3s.c +++ b/arch/powerpc/perf/core-book3s.c @@ -2305,9 +2305,10 @@ static void record_and_restart(struct perf_event *ev= ent, unsigned long val, ppmu->get_mem_data_src(&data.data_src, ppmu->flags, regs); =20 if (event->attr.sample_type & PERF_SAMPLE_WEIGHT_TYPE && - ppmu->get_mem_weight) + ppmu->get_mem_weight) { ppmu->get_mem_weight(&data.weight.full, event->attr.sample_type); - + data.sample_flags |=3D PERF_SAMPLE_WEIGHT_TYPE; + } if (perf_event_overflow(event, &data, regs)) power_pmu_stop(event, 0); } else if (period) { diff --git a/arch/x86/events/intel/ds.c b/arch/x86/events/intel/ds.c index 5dcfd2de6ef8..f66a4905cc87 100644 --- a/arch/x86/events/intel/ds.c +++ b/arch/x86/events/intel/ds.c @@ -1535,8 +1535,10 @@ static void setup_pebs_fixed_sample_data(struct perf= _event *event, /* * Use latency for weight (only avail with PEBS-LL) */ - if (fll && (sample_type & PERF_SAMPLE_WEIGHT_TYPE)) + if (fll && (sample_type & PERF_SAMPLE_WEIGHT_TYPE)) { data->weight.full =3D pebs->lat; + data->sample_flags |=3D PERF_SAMPLE_WEIGHT_TYPE; + } =20 /* * data.data_src encodes the data source @@ -1628,9 +1630,10 @@ static void setup_pebs_fixed_sample_data(struct perf= _event *event, =20 if (x86_pmu.intel_cap.pebs_format >=3D 2) { /* Only set the TSX weight when no memory weight. */ - if ((sample_type & PERF_SAMPLE_WEIGHT_TYPE) && !fll) + if ((sample_type & PERF_SAMPLE_WEIGHT_TYPE) && !fll) { data->weight.full =3D intel_get_tsx_weight(pebs->tsx_tuning); - + data->sample_flags |=3D PERF_SAMPLE_WEIGHT_TYPE; + } if (sample_type & PERF_SAMPLE_TRANSACTION) data->txn =3D intel_get_tsx_transaction(pebs->tsx_tuning, pebs->ax); @@ -1772,6 +1775,7 @@ static void setup_pebs_adaptive_sample_data(struct pe= rf_event *event, data->weight.var1_dw =3D (u32)(weight & PEBS_LATENCY_MASK) ?: intel_get_tsx_weight(meminfo->tsx_tuning); } + data->sample_flags |=3D PERF_SAMPLE_WEIGHT_TYPE; } =20 if (sample_type & PERF_SAMPLE_DATA_SRC) diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 1e12e79454e0..06a587b5faa9 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -1012,7 +1012,6 @@ struct perf_sample_data { u64 addr; struct perf_raw_record *raw; u64 period; - union perf_sample_weight weight; u64 txn; union perf_mem_data_src data_src; =20 @@ -1021,6 +1020,7 @@ struct perf_sample_data { * perf_{prepare,output}_sample(). */ struct perf_branch_stack *br_stack; + union perf_sample_weight weight; =20 u64 type; u64 ip; @@ -1063,7 +1063,6 @@ static inline void perf_sample_data_init(struct perf_= sample_data *data, data->addr =3D addr; data->raw =3D NULL; data->period =3D period; - data->weight.full =3D 0; data->data_src.val =3D PERF_MEM_NA; data->txn =3D 0; } diff --git a/kernel/events/core.c b/kernel/events/core.c index 104c0c9f4e6f..f0af45db02b3 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -7408,6 +7408,9 @@ void perf_prepare_sample(struct perf_event_header *he= ader, header->size +=3D size; } =20 + if (filtered_sample_type & PERF_SAMPLE_WEIGHT_TYPE) + data->weight.full =3D 0; + if (sample_type & PERF_SAMPLE_REGS_INTR) { /* regs dump ABI info */ int size =3D sizeof(u64); --=20 2.35.1 From nobody Tue Apr 7 00:42:40 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2B51AECAAD3 for ; Thu, 1 Sep 2022 13:13:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233486AbiIANNN (ORCPT ); Thu, 1 Sep 2022 09:13:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55580 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233897AbiIANMP (ORCPT ); Thu, 1 Sep 2022 09:12:15 -0400 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 89EDE193E1 for ; Thu, 1 Sep 2022 06:10:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1662037812; x=1693573812; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=VAYkyqDSnodGS6K9hdzSBPYe+K9VppgK0hQVX5QVscs=; b=VBygMV7Ee0/BrtlPtMBrQFW2Bv4dpze2dFOqN9xam1hAbfegS1VN4QVi QXGaVsTyC8H5yJXI7oZMolPW+tQfQnyVFFMhGs+k7Ax2B5uXSXdxL6Xxd VGUiLtj2oFavl71oWAYwWqIXkgTPF3TZyywMc9cRSEyfjH3DAapYFET++ xUWobEcenC0dr58sigHL2KyWl77KRexnIo8A0oNhg6EbwJTRqyxhMjYA9 tt/IouGRxG0Ltew3T2545RlQpcT1LEWZ34o3KlWiYznwfhTU3kZyylegW dRPDcFEySh/eQpuCJ4FlCxKEBP3XFD6+mMcAoX4/RtMYqpQueTnheJ2rJ Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10457"; a="321858103" X-IronPort-AV: E=Sophos;i="5.93,280,1654585200"; d="scan'208";a="321858103" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Sep 2022 06:10:05 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,280,1654585200"; d="scan'208";a="612485385" Received: from kanliang-dev.jf.intel.com ([10.165.154.102]) by orsmga002.jf.intel.com with ESMTP; 01 Sep 2022 06:10:05 -0700 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, namhyung@kernel.org, ravi.bangoria@amd.com, Kan Liang Subject: [PATCH V2 5/6] perf: Use sample_flags for data_src Date: Thu, 1 Sep 2022 06:09:58 -0700 Message-Id: <20220901130959.1285717-6-kan.liang@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220901130959.1285717-1-kan.liang@linux.intel.com> References: <20220901130959.1285717-1-kan.liang@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Kan Liang Use the new sample_flags to indicate whether the data_src field is filled by the PMU driver. Remove the data_src field from the perf_sample_data_init() to minimize the number of cache lines touched. Signed-off-by: Kan Liang Acked-by: Namhyung Kim --- arch/powerpc/perf/core-book3s.c | 4 +++- arch/x86/events/intel/ds.c | 8 ++++++-- include/linux/perf_event.h | 3 +-- kernel/events/core.c | 3 +++ 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3= s.c index a5c95a2006ea..6ec7069e6482 100644 --- a/arch/powerpc/perf/core-book3s.c +++ b/arch/powerpc/perf/core-book3s.c @@ -2301,8 +2301,10 @@ static void record_and_restart(struct perf_event *ev= ent, unsigned long val, } =20 if (event->attr.sample_type & PERF_SAMPLE_DATA_SRC && - ppmu->get_mem_data_src) + ppmu->get_mem_data_src) { ppmu->get_mem_data_src(&data.data_src, ppmu->flags, regs); + data.sample_flags |=3D PERF_SAMPLE_DATA_SRC; + } =20 if (event->attr.sample_type & PERF_SAMPLE_WEIGHT_TYPE && ppmu->get_mem_weight) { diff --git a/arch/x86/events/intel/ds.c b/arch/x86/events/intel/ds.c index f66a4905cc87..985bbbab057f 100644 --- a/arch/x86/events/intel/ds.c +++ b/arch/x86/events/intel/ds.c @@ -1543,8 +1543,10 @@ static void setup_pebs_fixed_sample_data(struct perf= _event *event, /* * data.data_src encodes the data source */ - if (sample_type & PERF_SAMPLE_DATA_SRC) + if (sample_type & PERF_SAMPLE_DATA_SRC) { data->data_src.val =3D get_data_src(event, pebs->dse); + data->sample_flags |=3D PERF_SAMPLE_DATA_SRC; + } =20 /* * We must however always use iregs for the unwinder to stay sane; the @@ -1778,8 +1780,10 @@ static void setup_pebs_adaptive_sample_data(struct p= erf_event *event, data->sample_flags |=3D PERF_SAMPLE_WEIGHT_TYPE; } =20 - if (sample_type & PERF_SAMPLE_DATA_SRC) + if (sample_type & PERF_SAMPLE_DATA_SRC) { data->data_src.val =3D get_data_src(event, meminfo->aux); + data->sample_flags |=3D PERF_SAMPLE_DATA_SRC; + } =20 if (sample_type & PERF_SAMPLE_ADDR_TYPE) data->addr =3D meminfo->address; diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 06a587b5faa9..6849f10dfc7e 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -1013,7 +1013,6 @@ struct perf_sample_data { struct perf_raw_record *raw; u64 period; u64 txn; - union perf_mem_data_src data_src; =20 /* * The other fields, optionally {set,used} by @@ -1021,6 +1020,7 @@ struct perf_sample_data { */ struct perf_branch_stack *br_stack; union perf_sample_weight weight; + union perf_mem_data_src data_src; =20 u64 type; u64 ip; @@ -1063,7 +1063,6 @@ static inline void perf_sample_data_init(struct perf_= sample_data *data, data->addr =3D addr; data->raw =3D NULL; data->period =3D period; - data->data_src.val =3D PERF_MEM_NA; data->txn =3D 0; } =20 diff --git a/kernel/events/core.c b/kernel/events/core.c index f0af45db02b3..163e2f478e61 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -7411,6 +7411,9 @@ void perf_prepare_sample(struct perf_event_header *he= ader, if (filtered_sample_type & PERF_SAMPLE_WEIGHT_TYPE) data->weight.full =3D 0; =20 + if (filtered_sample_type & PERF_SAMPLE_DATA_SRC) + data->data_src.val =3D PERF_MEM_NA; + if (sample_type & PERF_SAMPLE_REGS_INTR) { /* regs dump ABI info */ int size =3D sizeof(u64); --=20 2.35.1 From nobody Tue Apr 7 00:42:40 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B5A7EECAAD3 for ; Thu, 1 Sep 2022 13:13:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234232AbiIANN0 (ORCPT ); Thu, 1 Sep 2022 09:13:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55266 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233919AbiIANMQ (ORCPT ); Thu, 1 Sep 2022 09:12:16 -0400 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 534DB1836E for ; Thu, 1 Sep 2022 06:10:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1662037820; x=1693573820; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qpsqdIXip8GJMg2qH7wz01QFOLYcLgSpec40aEnpF+8=; b=ZtYnvCWbtxMRYeKSvU9aqxLfH68XjZpT+3DteiDJ2QBzQTo0Lrk6/jLq ijOu980969Lzxxq6lgG0GvjNF7XuvHT1ZvRok8H5hKazg9MFkoNF1gUfc 4lGp2zei37xrIJeVFgjoNZ2/pMd1/OSZt6/hjaEsEcT8AWGrE14d63J8U 4mpddRscV/hT3Ufdc8qLCJTlOlGE0H3cGBxoIphL2JvM7xC00W2iTbDWY l6mMhU9ZrTdQJ/Ls4rXLANetE3Zg9d8R+OjwCNlNVb4wAXb8MT1zS1J// /krToRpPiXQ0TlY0aI/+8BnS3ry7ChoRu8JEUMjpCFbaVVhZzIn/hQCGu w==; X-IronPort-AV: E=McAfee;i="6500,9779,10457"; a="321858106" X-IronPort-AV: E=Sophos;i="5.93,280,1654585200"; d="scan'208";a="321858106" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Sep 2022 06:10:07 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,280,1654585200"; d="scan'208";a="612485395" Received: from kanliang-dev.jf.intel.com ([10.165.154.102]) by orsmga002.jf.intel.com with ESMTP; 01 Sep 2022 06:10:06 -0700 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, namhyung@kernel.org, ravi.bangoria@amd.com, Kan Liang Subject: [PATCH V2 6/6] perf: Use sample_flags for txn Date: Thu, 1 Sep 2022 06:09:59 -0700 Message-Id: <20220901130959.1285717-7-kan.liang@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220901130959.1285717-1-kan.liang@linux.intel.com> References: <20220901130959.1285717-1-kan.liang@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Kan Liang 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 Acked-by: Namhyung Kim --- 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 985bbbab057f..cbcb5c2e832c 100644 --- a/arch/x86/events/intel/ds.c +++ b/arch/x86/events/intel/ds.c @@ -1636,9 +1636,11 @@ static void setup_pebs_fixed_sample_data(struct perf= _event *event, data->weight.full =3D intel_get_tsx_weight(pebs->tsx_tuning); data->sample_flags |=3D PERF_SAMPLE_WEIGHT_TYPE; } - if (sample_type & PERF_SAMPLE_TRANSACTION) + if (sample_type & PERF_SAMPLE_TRANSACTION) { data->txn =3D intel_get_tsx_transaction(pebs->tsx_tuning, pebs->ax); + data->sample_flags |=3D PERF_SAMPLE_TRANSACTION; + } } =20 /* @@ -1788,9 +1790,11 @@ static void setup_pebs_adaptive_sample_data(struct p= erf_event *event, if (sample_type & PERF_SAMPLE_ADDR_TYPE) data->addr =3D meminfo->address; =20 - if (sample_type & PERF_SAMPLE_TRANSACTION) + if (sample_type & PERF_SAMPLE_TRANSACTION) { data->txn =3D intel_get_tsx_transaction(meminfo->tsx_tuning, gprs ? gprs->ax : 0); + data->sample_flags |=3D PERF_SAMPLE_TRANSACTION; + } } =20 if (format_size & PEBS_DATACFG_XMMS) { diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 6849f10dfc7e..581880ddb9ef 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -1012,7 +1012,6 @@ struct perf_sample_data { u64 addr; struct perf_raw_record *raw; u64 period; - u64 txn; =20 /* * The other fields, optionally {set,used} by @@ -1021,6 +1020,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; =20 u64 type; u64 ip; @@ -1063,7 +1063,6 @@ static inline void perf_sample_data_init(struct perf_= sample_data *data, data->addr =3D addr; data->raw =3D NULL; data->period =3D period; - data->txn =3D 0; } =20 /* 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 *he= ader, if (filtered_sample_type & PERF_SAMPLE_DATA_SRC) data->data_src.val =3D PERF_MEM_NA; =20 + if (filtered_sample_type & PERF_SAMPLE_TRANSACTION) + data->txn =3D 0; + if (sample_type & PERF_SAMPLE_REGS_INTR) { /* regs dump ABI info */ int size =3D sizeof(u64); --=20 2.35.1