Skip to content

Commit 29297ff

Browse files
sandip4nIngo Molnar
authored andcommitted
perf/x86/amd/lbr: Discard erroneous branch entries
The Revision Guide for AMD Family 19h Model 10-1Fh processors declares Erratum 1452 which states that non-branch entries may erroneously be recorded in the Last Branch Record (LBR) stack with the valid and spec bits set. Such entries can be recognized by inspecting bit 61 of the corresponding LastBranchStackToIp register. This bit is currently reserved but if found to be set, the associated branch entry should be discarded. Signed-off-by: Sandipan Das <sandipan.das@amd.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: https://bugzilla.kernel.org/attachment.cgi?id=305518 Link: https://lore.kernel.org/r/3ad2aa305f7396d41a40e3f054f740d464b16b7f.1706526029.git.sandipan.das@amd.com
1 parent b29f377 commit 29297ff

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

arch/x86/events/amd/lbr.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,11 @@ void amd_pmu_lbr_read(void)
173173

174174
/*
175175
* Check if a branch has been logged; if valid = 0, spec = 0
176-
* then no branch was recorded
176+
* then no branch was recorded; if reserved = 1 then an
177+
* erroneous branch was recorded (see Erratum 1452)
177178
*/
178-
if (!entry.to.split.valid && !entry.to.split.spec)
179+
if ((!entry.to.split.valid && !entry.to.split.spec) ||
180+
entry.to.split.reserved)
179181
continue;
180182

181183
perf_clear_branch_entry_bitfields(br + out);

0 commit comments

Comments
 (0)