powerpc/perf: Drop the check for SIAR_VALID
authorAthira Rajeev <atrajeev@linux.vnet.ibm.com>
Wed, 21 Oct 2020 08:53:26 +0000 (14:23 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 19 Nov 2020 05:56:56 +0000 (16:56 +1100)
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
arch/powerpc/perf/core-book3s.c

index 08643cb..3b62dbb 100644 (file)
@@ -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)