Contributors: 14
Author |
Tokens |
Token Proportion |
Commits |
Commit Proportion |
Don Zickus |
95 |
59.01% |
7 |
35.00% |
Chris Metcalf |
17 |
10.56% |
1 |
5.00% |
Steven Rostedt |
16 |
9.94% |
1 |
5.00% |
Russell King |
10 |
6.21% |
1 |
5.00% |
Masami Hiramatsu |
4 |
2.48% |
1 |
5.00% |
Jean Delvare |
3 |
1.86% |
1 |
5.00% |
Ingo Molnar |
3 |
1.86% |
1 |
5.00% |
Mandeep Singh Baines |
3 |
1.86% |
1 |
5.00% |
Michel Lespinasse |
3 |
1.86% |
1 |
5.00% |
Aaron Tomlin |
2 |
1.24% |
1 |
5.00% |
Rakib Mullick |
2 |
1.24% |
1 |
5.00% |
Paul Gortmaker |
1 |
0.62% |
1 |
5.00% |
Greg Kroah-Hartman |
1 |
0.62% |
1 |
5.00% |
Nicholas Piggin |
1 |
0.62% |
1 |
5.00% |
Total |
161 |
|
20 |
|
// SPDX-License-Identifier: GPL-2.0
/*
* HW NMI watchdog support
*
* started by Don Zickus, Copyright (C) 2010 Red Hat, Inc.
*
* Arch specific calls to support NMI watchdog
*
* Bits copied from original nmi.c file
*
*/
#include <asm/apic.h>
#include <asm/nmi.h>
#include <linux/cpumask.h>
#include <linux/kdebug.h>
#include <linux/notifier.h>
#include <linux/kprobes.h>
#include <linux/nmi.h>
#include <linux/init.h>
#include <linux/delay.h>
#ifdef CONFIG_HARDLOCKUP_DETECTOR_PERF
u64 hw_nmi_get_sample_period(int watchdog_thresh)
{
return (u64)(cpu_khz) * 1000 * watchdog_thresh;
}
#endif
#ifdef arch_trigger_cpumask_backtrace
static void nmi_raise_cpu_backtrace(cpumask_t *mask)
{
apic->send_IPI_mask(mask, NMI_VECTOR);
}
void arch_trigger_cpumask_backtrace(const cpumask_t *mask, bool exclude_self)
{
nmi_trigger_cpumask_backtrace(mask, exclude_self,
nmi_raise_cpu_backtrace);
}
static int nmi_cpu_backtrace_handler(unsigned int cmd, struct pt_regs *regs)
{
if (nmi_cpu_backtrace(regs))
return NMI_HANDLED;
return NMI_DONE;
}
NOKPROBE_SYMBOL(nmi_cpu_backtrace_handler);
static int __init register_nmi_cpu_backtrace_handler(void)
{
register_nmi_handler(NMI_LOCAL, nmi_cpu_backtrace_handler,
0, "arch_bt");
return 0;
}
early_initcall(register_nmi_cpu_backtrace_handler);
#endif