FAILED: patch "[PATCH] perf/x86/intel: Fix GRT PEBS load/store direction for latency" failed to apply to 6.18-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 6.18-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.18.y
git checkout FETCH_HEAD
git cherry-pick -x 89dc568e8c0be60e05e5fcd0b528c79077d7b84b
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026092919-dab-circus-267e@gregkh' --subject-prefix 'PATCH 6.18.y' 'HEAD^..'
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 89dc568e8c0be60e05e5fcd0b528c79077d7b84b Mon Sep 17 00:00:00 2001
From: Dapeng Mi <[email protected]>
Date: Thu, 17 Sep 2026 09:52:23 +0800
Subject: [PATCH] perf/x86/intel: Fix GRT PEBS load/store direction for latency
events, to fix sample classification
On Gracemont, intel_grt_pebs_event_constraints[] applies LAT_CONSTRAINT constraints to MEM_UOPS_RETIRED.{LOAD,STORE}_LATENCY, but does not set explicit LOAD/STORE flags for those events.
The PEBS latency path (pebs_latency_data(), via __grt_latency_data()) uses the event flags to determine memory operation direction. Without an explicit STORE flag, samples from MEM_UOPS_RETIRED.STORE_LATENCY can be misclassified as LOADs.
Set explicit LOAD/STORE flags in intel_grt_pebs_event_constraints[] for:
- MEM_UOPS_RETIRED.LOAD_LATENCY
- MEM_UOPS_RETIRED.STORE_LATENCY
Also update __grt_latency_data() to explicitly interpret these flags when assigning the sampled memory operation direction.
This fixes incorrect STORE sample classification.
arch/x86/events/intel/ds.c +13 -3
@@ -455,6 +455,7 @@ static inline void pebs_set_tlb_lock(u64 *val, bool tlb, bool lock)static u64 __grt_latency_data (struct perf_event *event,u64 status,u8 dse,bool tlb,bool lock,bool blk) { +union perf_mem_data_src src;u64 val; WARN_ON_ONCE(is_hybrid() &&
@@ -470,7 +471,16 @@ static u64 __grt_latency_data(struct perf_event *event, u64 status,else val |=P (BLK ,NA ); -return val; + src.val = val; + +if (event->hw.flags & + (PERF_X86_EVENT_PEBS_LDLAT |PERF_X86_EVENT_PEBS_LD_HSW )) + src.mem_op =P (OP ,LOAD ); +if (event->hw.flags & + (PERF_X86_EVENT_PEBS_STLAT |PERF_X86_EVENT_PEBS_ST_HSW )) + src.mem_op =P (OP ,STORE ); + +return src.val; }u64 grt_latency_data (struct perf_event *event,u64 status)
@@ -1291,8 +1301,8 @@ struct event_constraint intel_glm_pebs_event_constraints[] = {struct event_constraint intel_grt_pebs_event_constraints[] = {/* Allow all events as PEBS with no flags */ -INTEL_HYBRID_LAT_CONSTRAINT (0x5d0 ,0x3 ), -INTEL_HYBRID_LAT_CONSTRAINT (0x6d0 ,0x3f ), +INTEL_HYBRID_LDLAT_CONSTRAINT (0x5d0 ,0x3 ), +INTEL_HYBRID_STLAT_CONSTRAINT (0x6d0 ,0x3f ),EVENT_CONSTRAINT_END };
Sasha Levin
maintainerPATCH 1/2 perf/x86/intel: Update event constraints and cache_extra_regsfor ADL
From: Dapeng Mi <[email protected]>
[ Upstream commit 4ef863352bcde482d65722ed721c3fd3967a67d6 ]
Update perf hard-coded event constraints and cache_extra_regs[] for Alderlake according to the latest ADL perfmon events (V1.39).
One important note is that ADL has differences on the L3/node related OCR events although it shares same uarch with SPR server, e.g., ADL has different extra MSR values and no node events. So some variants of structures and functions are introduced to reflect these differences, like adl_glc_hw_cache_event_ids[], adl_glc_hw_cache_extra_regs[] and intel_pmu_init_glc_hybrid(), etc.
Please note these changes would temporarily impact other platforms like MTL/ARL-U which shares hard-coded event structures, but it would be fixed soon in subsequent patches.
ADL perfmon events:
https://github.com/intel/perfmon/blob/main/ADL/events/alderlake_goldencove_core.json
https://github.com/intel/perfmon/blob/main/ADL/events/alderlake_gracemont_core.json
[Stable dependency adaptation]
Retain only the Gracemont STORE_LATENCY (event 0x6d0) PEBS counter-mask update from 0xf to 0x3f in intel_grt_pebs_event_constraints[]. This is the preimage required by target 89dc568e8c0be60e05e5fcd0b528c79077d7b84b. The existing latency decoder and LOAD/STORE constraint macros are already available in this stable tree, so no new functions are needed.
Drop all core.c changes: the cache-event tables, offcore MSR masks, fixed-event aliases and hybrid initialization changes are unrelated to the target. Their upstream context includes cache tables absent from 6.18, and retaining them would bring in an unnecessary helper function and broader platform changes.
[ sashal: Reduced backport -- upstream 4ef863352bcde touches 2 file(s), this
backport carries 1. Not backported here:
arch/x86/events/intel/core.c
This note is generated from the file lists only; see the resolution record for the reasoning. ]
Stable-dep-of: 89dc568e8c0b ("perf/x86/intel: Fix GRT PEBS load/store direction for latency events, to fix sample classification")
--- arch/x86/events/intel/ds.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/x86/events/intel/ds.c +1 -1
@@ -1011,7 +1011,7 @@ struct event_constraint intel_glm_pebs_event_constraints[] = {struct event_constraint intel_grt_pebs_event_constraints[] = {/* Allow all events as PEBS with no flags */ INTEL_HYBRID_LAT_CONSTRAINT (0x5d0 ,0x3 ), -INTEL_HYBRID_LAT_CONSTRAINT (0x6d0 ,0xf ), +INTEL_HYBRID_LAT_CONSTRAINT (0x6d0 ,0x3f ),EVENT_CONSTRAINT_END };
Signature · 1 line
2.53.0
Sasha Levin
maintainerPATCH 2/2 perf/x86/intel: Fix GRT PEBS load/store direction for latency events, to fix sample classification
From: Dapeng Mi <[email protected]>
[ Upstream commit 89dc568e8c0be60e05e5fcd0b528c79077d7b84b ]
On Gracemont, intel_grt_pebs_event_constraints[] applies LAT_CONSTRAINT constraints to MEM_UOPS_RETIRED.{LOAD,STORE}_LATENCY, but does not set explicit LOAD/STORE flags for those events.
The PEBS latency path (pebs_latency_data(), via __grt_latency_data()) uses the event flags to determine memory operation direction. Without an explicit STORE flag, samples from MEM_UOPS_RETIRED.STORE_LATENCY can be misclassified as LOADs.
Set explicit LOAD/STORE flags in intel_grt_pebs_event_constraints[] for:
- MEM_UOPS_RETIRED.LOAD_LATENCY
- MEM_UOPS_RETIRED.STORE_LATENCY
Also update __grt_latency_data() to explicitly interpret these flags when assigning the sampled memory operation direction.
This fixes incorrect STORE sample classification.
--- arch/x86/events/intel/ds.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-)
arch/x86/events/intel/ds.c +13 -3
@@ -315,6 +315,7 @@ static inline void pebs_set_tlb_lock(u64 *val, bool tlb, bool lock)static u64 __grt_latency_data (struct perf_event *event,u64 status,u8 dse,bool tlb,bool lock,bool blk) { +union perf_mem_data_src src;u64 val; WARN_ON_ONCE(is_hybrid() &&
@@ -330,7 +331,16 @@ static u64 __grt_latency_data(struct perf_event *event, u64 status,else val |=P (BLK ,NA ); -return val; + src.val = val; + +if (event->hw.flags & + (PERF_X86_EVENT_PEBS_LDLAT |PERF_X86_EVENT_PEBS_LD_HSW )) + src.mem_op =P (OP ,LOAD ); +if (event->hw.flags & + (PERF_X86_EVENT_PEBS_STLAT |PERF_X86_EVENT_PEBS_ST_HSW )) + src.mem_op =P (OP ,STORE ); + +return src.val; }u64 grt_latency_data (struct perf_event *event,u64 status)
@@ -1010,8 +1020,8 @@ struct event_constraint intel_glm_pebs_event_constraints[] = {struct event_constraint intel_grt_pebs_event_constraints[] = {/* Allow all events as PEBS with no flags */ -INTEL_HYBRID_LAT_CONSTRAINT (0x5d0 ,0x3 ), -INTEL_HYBRID_LAT_CONSTRAINT (0x6d0 ,0x3f ), +INTEL_HYBRID_LDLAT_CONSTRAINT (0x5d0 ,0x3 ), +INTEL_HYBRID_STLAT_CONSTRAINT (0x6d0 ,0x3f ),EVENT_CONSTRAINT_END };
Signature · 1 line
2.53.0