diff options
author | Athira Rajeev <atrajeev@linux.vnet.ibm.com> | 2020-10-21 14:23:26 +0530 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2020-11-19 16:56:56 +1100 |
commit | fdf13a657508a12cd21a4d7b988cb260cb8fbd38 (patch) | |
tree | 9aafd0a159bb43fa030ffe3a95b38e8796700424 /arch/powerpc/perf | |
parent | 9e8d13697c38a86e0fcf1bb20d419e3d6103e085 (diff) | |
download | linux-fdf13a657508a12cd21a4d7b988cb260cb8fbd38.tar.gz linux-fdf13a657508a12cd21a4d7b988cb260cb8fbd38.tar.bz2 linux-fdf13a657508a12cd21a4d7b988cb260cb8fbd38.zip |
powerpc/perf: Drop the check for SIAR_VALID
In power10 DD1, there is an issue that causes the SIAR_VALID bit of
the SIER (Sampled Instruction Event Register) to not be set. But the
SIAR_VALID bit is used for fetching the instruction address from the
SIAR (Sampled Instruction Address Register), and marked events are
sampled only if the SIAR_VALID bit is set. So drop the check for
SIAR_VALID and return true always incase of power10 DD1.
Signed-off-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20201021085329.384535-2-maddy@linux.ibm.com
Diffstat (limited to 'arch/powerpc/perf')
-rw-r--r-- | arch/powerpc/perf/core-book3s.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c index 08643cba1494..3b62dbb94796 100644 --- a/arch/powerpc/perf/core-book3s.c +++ b/arch/powerpc/perf/core-book3s.c @@ -350,7 +350,14 @@ static inline int siar_valid(struct pt_regs *regs) int marked = mmcra & MMCRA_SAMPLE_ENABLE; if (marked) { - if (ppmu->flags & PPMU_HAS_SIER) + /* + * SIER[SIAR_VALID] is not set for some + * marked events on power10 DD1, so drop + * the check for SIER[SIAR_VALID] and return true. + */ + if (ppmu->flags & PPMU_P10_DD1) + return 0x1; + else if (ppmu->flags & PPMU_HAS_SIER) return regs->dar & SIER_SIAR_VALID; if (ppmu->flags & PPMU_SIAR_VALID) |