#include <linux/nmi.h>
#include <linux/module.h>
#include <linux/delay.h>
-#include <linux/perf_event.h>
#ifdef CONFIG_HARDLOCKUP_DETECTOR
-int hw_nmi_get_event(void)
-{
- if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL)
- return PERF_COUNT_HW_REF_CPU_CYCLES;
- return PERF_COUNT_HW_CPU_CYCLES;
-}
-
u64 hw_nmi_get_sample_period(int watchdog_thresh)
{
return (u64)(cpu_khz) * 1000 * watchdog_thresh;
#ifdef CONFIG_LOCKUP_DETECTOR
u64 hw_nmi_get_sample_period(int watchdog_thresh);
-int hw_nmi_get_event(void);
extern int nmi_watchdog_enabled;
extern int soft_watchdog_enabled;
extern int watchdog_user_enabled;
#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,
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);