From: Athira Rajeev <atraj...@linux.vnet.ibm.com>

In power10 DD1, there is an issue that causes the SIAR_VALID
bit of Sampled Instruction Event Register(SIER) not to be
set. But the SIAR_VALID bit is used for fetching the instruction
address from Sampled Instruction Address Register(SIAR), 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 <atraj...@linux.vnet.ibm.com>
Signed-off-by: Madhavan Srinivasan <ma...@linux.ibm.com>
---
Changelog v1:
- Drop the check for SIER[CMPL] and retur true instead
- Made changes to commit message

 arch/powerpc/perf/core-book3s.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

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)
-- 
2.26.2

Reply via email to