提交 3cd0ed4c 编写于 作者: D Dong Kai 提交者: Zheng Zengkai

corelockup: Add detector enable support by cmdline

ascend inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I4F3V1
CVE: NA

--------------------------------

Add cmdline params "enable_corelockup_detector" to support enable
core suspend detector. And enable defaultly within ascend features.
Signed-off-by: NDong Kai <dongkai11@huawei.com>
Reviewed-by: NKuohai Xu <xukuohai@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
Reviewed-by: NDing Tianhong <dingtianhong@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
Reviewed-by: NDing Tianhong <dingtianhong@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 d5a265a1
......@@ -131,6 +131,7 @@ extern void corelockup_detector_online_cpu(unsigned int cpu);
extern void corelockup_detector_offline_cpu(unsigned int cpu);
extern void watchdog_check_hrtimer(void);
extern unsigned long watchdog_hrtimer_interrupts(unsigned int cpu);
extern bool enable_corelockup_detector;
#endif
void watchdog_nmi_stop(void);
......
......@@ -366,7 +366,8 @@ static enum hrtimer_restart watchdog_timer_fn(struct hrtimer *hrtimer)
#ifdef CONFIG_CORELOCKUP_DETECTOR
/* check hrtimer of detector cpu */
watchdog_check_hrtimer();
if (enable_corelockup_detector)
watchdog_check_hrtimer();
#endif
/* kick the hardlockup detector */
......@@ -531,7 +532,8 @@ int lockup_detector_online_cpu(unsigned int cpu)
if (cpumask_test_cpu(cpu, &watchdog_allowed_mask)) {
watchdog_enable(cpu);
#ifdef CONFIG_CORELOCKUP_DETECTOR
corelockup_detector_online_cpu(cpu);
if (enable_corelockup_detector)
corelockup_detector_online_cpu(cpu);
#endif
}
return 0;
......@@ -542,7 +544,8 @@ int lockup_detector_offline_cpu(unsigned int cpu)
if (cpumask_test_cpu(cpu, &watchdog_allowed_mask)) {
watchdog_disable(cpu);
#ifdef CONFIG_CORELOCKUP_DETECTOR
corelockup_detector_offline_cpu(cpu);
if (enable_corelockup_detector)
corelockup_detector_offline_cpu(cpu);
#endif
}
return 0;
......@@ -775,6 +778,7 @@ void __init lockup_detector_init(void)
nmi_watchdog_available = true;
lockup_detector_setup();
#ifdef CONFIG_CORELOCKUP_DETECTOR
corelockup_detector_init();
if (enable_corelockup_detector)
corelockup_detector_init();
#endif
}
......@@ -93,6 +93,14 @@ static DEFINE_PER_CPU(unsigned long, hrint_missed);
struct cpumask corelockup_cpumask __read_mostly;
unsigned int close_wfi_wfe;
static bool pmu_based_nmi;
bool enable_corelockup_detector;
static int __init enable_corelockup_detector_setup(char *str)
{
enable_corelockup_detector = true;
return 1;
}
__setup("enable_corelockup_detector", enable_corelockup_detector_setup);
static void watchdog_nmi_interrupts(void)
{
......@@ -326,11 +334,13 @@ static inline bool watchdog_check_timestamp(void)
void watchdog_hardlockup_check(struct pt_regs *regs)
{
#ifdef CONFIG_CORELOCKUP_DETECTOR
/* Kick nmi interrupts */
watchdog_nmi_interrupts();
if (enable_corelockup_detector) {
/* Kick nmi interrupts */
watchdog_nmi_interrupts();
/* corelockup check */
watchdog_corelockup_check(regs);
/* corelockup check */
watchdog_corelockup_check(regs);
}
#endif
if (__this_cpu_read(watchdog_nmi_touch) == true) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册