powerpc/watchpoint: Return available watchpoints dynamically
authorRavi Bangoria <ravi.bangoria@linux.ibm.com>
Thu, 23 Jul 2020 09:08:12 +0000 (14:38 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Sun, 26 Jul 2020 13:34:19 +0000 (23:34 +1000)
So far Book3S Powerpc supported only one watchpoint. Power10 is
introducing 2nd DAWR. Enable 2nd DAWR support for Power10.
Availability of 2nd DAWR will depend on CPU_FTR_DAWR1.

Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20200723090813.303838-10-ravi.bangoria@linux.ibm.com
arch/powerpc/include/asm/cputable.h
arch/powerpc/include/asm/hw_breakpoint.h

index d36db35..fdddb82 100644 (file)
@@ -629,9 +629,10 @@ enum {
 
 /*
  * Maximum number of hw breakpoint supported on powerpc. Number of
- * breakpoints supported by actual hw might be less than this.
+ * breakpoints supported by actual hw might be less than this, which
+ * is decided at run time in nr_wp_slots().
  */
-#define HBP_NUM_MAX    1
+#define HBP_NUM_MAX    2
 
 #endif /* !__ASSEMBLY__ */
 
index cb42479..c89250b 100644 (file)
@@ -9,6 +9,8 @@
 #ifndef _PPC_BOOK3S_64_HW_BREAKPOINT_H
 #define _PPC_BOOK3S_64_HW_BREAKPOINT_H
 
+#include <asm/cpu_has_feature.h>
+
 #ifdef __KERNEL__
 struct arch_hw_breakpoint {
        unsigned long   address;
@@ -46,7 +48,7 @@ struct arch_hw_breakpoint {
 
 static inline int nr_wp_slots(void)
 {
-       return HBP_NUM_MAX;
+       return cpu_has_feature(CPU_FTR_DAWR1) ? 2 : 1;
 }
 
 #ifdef CONFIG_HAVE_HW_BREAKPOINT