|
@@ -315,6 +315,12 @@ static int is_softlockup(unsigned long touch_ts)
|
|
|
|
|
|
#ifdef CONFIG_HARDLOCKUP_DETECTOR
|
|
|
|
|
|
+/* Can be overriden by architecture */
|
|
|
+__weak int hw_nmi_get_event(void)
|
|
|
+{
|
|
|
+ return PERF_COUNT_HW_CPU_CYCLES;
|
|
|
+}
|
|
|
+
|
|
|
static struct perf_event_attr wd_hw_attr = {
|
|
|
.type = PERF_TYPE_HARDWARE,
|
|
|
.config = PERF_COUNT_HW_CPU_CYCLES,
|
|
@@ -604,6 +610,7 @@ static int watchdog_nmi_enable(unsigned int cpu)
|
|
|
|
|
|
wd_attr = &wd_hw_attr;
|
|
|
wd_attr->sample_period = hw_nmi_get_sample_period(watchdog_thresh);
|
|
|
+ wd_attr->config = hw_nmi_get_event();
|
|
|
|
|
|
/* Try to register using hardware perf events */
|
|
|
event = perf_event_create_kernel_counter(wd_attr, cpu, NULL, watchdog_overflow_callback, NULL);
|