debugging updates
Subsystems (6)
Linus,
Please pull the latest core-urgent-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core-urgent-for-linus
# HEAD: 270750dbc18a71b23d660df110e433ff9616a2d4 hung_task: Display every hung task warning
It contains mostly kernel debugging related updates:
- make hung_task detection more configurable to distros
- add final bits for x86 UV NMI debugging, with related KGDB changes
- update the mailing-list of MAINTAINERS entries I'm involved with
Thanks,
Ingo
------------------>
Aaron Tomlin (2):
sysctl: Add neg_one as a standard constraint
hung_task: Display every hung task warning
Ingo Molnar (1):
MAINTAINERS: Restore "L: [email protected]" entries
Mike Travis (3):
kgdb/kdb: Fix no KDB config problem
x86/uv/nmi: Fix Sparse warnings
x86/uv/nmi, kgdb/kdb: Fix UV NMI handler when KDB not configured
Documentation/sysctl/kernel.txt | 42 ++++++++++++++++++++++++ MAINTAINERS | 13 ++++++++ arch/x86/include/asm/uv/uv.h | 2 -- arch/x86/kernel/apic/x2apic_uv_x.c | 1 - arch/x86/platform/uv/uv_nmi.c | 65 +++++++++++++++++++++++++++----------- include/linux/kgdb.h | 3 +- include/linux/sched/sysctl.h | 2 +- kernel/debug/debug_core.c | 5 +-- kernel/debug/debug_core.h | 2 -- kernel/hung_task.c | 6 ++-- kernel/sysctl.c | 7 ++-- 11 files changed, 116 insertions(+), 32 deletions(-)
Documentation/sysctl/kernel.txt +42 -0
@@ -33,6 +33,10 @@ show up in /proc/sys/kernel: - domainname - hostname - hotplug +- hung_task_panic +- hung_task_check_count +- hung_task_timeout_secs +- hung_task_warnings - kptr_restrict - kstack_depth_to_print [ X86 only ] - l2cr [ PPC only ]
@@ -287,6 +291,44 @@ Default value is "/sbin/hotplug". ============================================================== +hung_task_panic: + +Controls the kernel's behavior when a hung task is detected. +This file shows up if CONFIG_DETECT_HUNG_TASK is enabled. + +0: continue operation. This is the default behavior. + +1: panic immediately. + +============================================================== + +hung_task_check_count: + +The upper bound on the number of tasks that are checked. +This file shows up if CONFIG_DETECT_HUNG_TASK is enabled. + +============================================================== + +hung_task_timeout_secs: + +Check interval. When a task in D state did not get scheduled +for more than this value report a warning. +This file shows up if CONFIG_DETECT_HUNG_TASK is enabled. + +0: means infinite timeout - no checking done. + +============================================================== + +hung_task_warning: + +The maximum number of warnings to report. During a check interval +When this value is reached, no more the warnings will be reported. +This file shows up if CONFIG_DETECT_HUNG_TASK is enabled. + +-1: report an infinite number of warnings. + +============================================================== + kptr_restrict: This toggle indicates whether restrictions are placed on
MAINTAINERS +13 -0
@@ -2191,6 +2191,7 @@ F: include/linux/clk.h CLOCKSOURCE, CLOCKEVENT DRIVERS M: Daniel Lezcano <[email protected]> M: Thomas Gleixner <[email protected]> +L: [email protected] T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core S: Supported F: drivers/clocksource
@@ -3985,6 +3986,7 @@ F: include/uapi/linux/hid* HIGH-RESOLUTION TIMERS, CLOCKEVENTS, DYNTICKS M: Thomas Gleixner <[email protected]> +L: [email protected] T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core S: Maintained F: Documentation/timers/
@@ -4654,6 +4656,7 @@ F: net/irda/ IRQ SUBSYSTEM M: Thomas Gleixner <[email protected]> +L: [email protected] S: Maintained T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core F: kernel/irq/
@@ -5285,6 +5288,7 @@ F: drivers/media/usb/dvb-usb-v2/lmedm04* LOCKDEP AND LOCKSTAT M: Peter Zijlstra <[email protected]> M: Ingo Molnar <[email protected]> +L: [email protected] T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core/locking S: Maintained F: Documentation/lockdep*.txt
@@ -6581,6 +6585,7 @@ M: Peter Zijlstra <[email protected]> M: Paul Mackerras <[email protected]> M: Ingo Molnar <[email protected]> M: Arnaldo Carvalho de Melo <[email protected]> +L: [email protected] T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf/core S: Supported F: kernel/events/*
@@ -6704,6 +6709,7 @@ F: drivers/scsi/pm8001/ POSIX CLOCKS and TIMERS M: Thomas Gleixner <[email protected]> +L: [email protected] T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core S: Supported F: fs/timerfd.c
@@ -7099,6 +7105,7 @@ F: drivers/net/wireless/ray* RCUTORTURE MODULE M: Josh Triplett <[email protected]> M: "Paul E. McKenney" <[email protected]> +L: [email protected] S: Supported T: git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git F: Documentation/RCU/torture.txt
@@ -7106,6 +7113,7 @@ F: kernel/rcu/torture.c RCUTORTURE TEST FRAMEWORK M: "Paul E. McKenney" <[email protected]> +L: [email protected] S: Supported T: git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git F: tools/testing/selftests/rcutorture
@@ -7129,6 +7137,7 @@ F: net/rds/ READ-COPY UPDATE (RCU) M: Dipankar Sarma <[email protected]> M: "Paul E. McKenney" <[email protected]> +L: [email protected] W: http://www.rdrop.com/users/paulmck/RCU/ S: Supported T: git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
@@ -7432,6 +7441,7 @@ F: drivers/mmc/host/dw_mmc* TIMEKEEPING, CLOCKSOURCE CORE, NTP M: John Stultz <[email protected]> M: Thomas Gleixner <[email protected]> +L: [email protected] T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core S: Supported F: include/linux/clocksource.h
@@ -7457,6 +7467,7 @@ F: drivers/watchdog/sc1200wdt.c SCHEDULER M: Ingo Molnar <[email protected]> M: Peter Zijlstra <[email protected]> +L: [email protected] T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched/core S: Maintained F: kernel/sched/
@@ -7823,6 +7834,7 @@ F: mm/sl?b.c SLEEPABLE READ-COPY UPDATE (SRCU) M: Lai Jiangshan <[email protected]> M: "Paul E. McKenney" <[email protected]> +L: [email protected] W: http://www.rdrop.com/users/paulmck/RCU/ S: Supported T: git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
@@ -9531,6 +9543,7 @@ M: Thomas Gleixner <[email protected]> M: Ingo Molnar <[email protected]> M: "H. Peter Anvin" <[email protected]> M: [email protected] +L: [email protected] T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/core S: Maintained F: Documentation/x86/
arch/x86/include/asm/uv/uv.h +0 -2
@@ -12,7 +12,6 @@ extern enum uv_system_type get_uv_system_type(void);extern int is_uv_system (void );extern void uv_cpu_init (void );extern void uv_nmi_init (void ); -extern void uv_register_nmi_notifier (void );extern void uv_system_init (void ); extern const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask, struct mm_struct *mm,
@@ -26,7 +25,6 @@ static inline enum uv_system_type get_uv_system_type(void) { return UV_NONE; }static inline int is_uv_system (void ) {return 0 ; }static inline void uv_cpu_init (void ) { }static inline void uv_system_init (void ) { } -static inline void uv_register_nmi_notifier (void ) { }static inline const struct cpumask *uv_flush_tlb_others (const struct cpumask *cpumask,struct mm_struct *mm,unsigned long start,unsigned long end,unsigned int cpu)
arch/x86/kernel/apic/x2apic_uv_x.c +0 -1
@@ -980,7 +980,6 @@ void __init uv_system_init(void)uv_nmi_setup ();uv_cpu_init ();uv_scir_register_cpu_notifier (); -uv_register_nmi_notifier ();proc_mkdir ("sgi_uv" ,NULL );/* register Legacy VGA I/O redirection handler */
arch/x86/platform/uv/uv_nmi.c +46 -19
125 lines not on this page · raw message
include/linux/kgdb.h +2 -1
@@ -310,7 +310,8 @@ extern int kgdb_handle_exception(int ex_vector, int signo, int err_code, struct pt_regs *regs);extern int kgdb_nmicallback (int cpu,void *regs); -extern int kgdb_nmicallin (int cpu,int trapnr,void *regs,atomic_t *snd_rdy); +extern int kgdb_nmicallin (int cpu,int trapnr,void *regs,int err_code, +atomic_t *snd_rdy);extern void gdbstub_exit (int status);extern int kgdb_single_step;
include/linux/sched/sysctl.h +1 -1
@@ -5,7 +5,7 @@extern int sysctl_hung_task_check_count;extern unsigned int sysctl_hung_task_panic;extern unsigned long sysctl_hung_task_timeout_secs; -extern unsigned long sysctl_hung_task_warnings; +extern int sysctl_hung_task_warnings;extern int proc_dohung_task_timeout_secs (struct ctl_table *table,int write,void __user *buffer,size_t *lenp,loff_t *ppos);
kernel/debug/debug_core.c +3 -2
@@ -736,7 +736,8 @@ int kgdb_nmicallback(int cpu, void *regs)return 1 ; } -int kgdb_nmicallin (int cpu,int trapnr,void *regs,atomic_t *send_ready) +int kgdb_nmicallin (int cpu,int trapnr,void *regs,int err_code, +atomic_t *send_ready) {#ifdef CONFIG_SMP if (!kgdb_io_ready (0 ) || !send_ready)
@@ -750,7 +751,7 @@ int kgdb_nmicallin(int cpu, int trapnr, void *regs, atomic_t *send_ready) ks->cpu = cpu; ks->ex_vector = trapnr; ks->signo =SIGTRAP ; - ks->err_code =KGDB_KDB_REASON_SYSTEM_NMI ; + ks->err_code = err_code; ks->linux_regs = regs; ks->send_ready = send_ready;kgdb_cpu_enter (ks, regs,DCPU_WANT_MASTER );
kernel/debug/debug_core.h +0 -2
@@ -75,13 +75,11 @@ extern int kdb_stub(struct kgdb_state *ks);extern int kdb_parse (const char *cmdstr);extern int kdb_common_init_state (struct kgdb_state *ks);extern int kdb_common_deinit_state (void ); -#define KGDB_KDB_REASON_SYSTEM_NMI KDB_REASON_SYSTEM_NMI#else /* ! CONFIG_KGDB_KDB */ static inline int kdb_stub (struct kgdb_state *ks) {return DBG_PASS_EVENT ; } -#define KGDB_KDB_REASON_SYSTEM_NMI 0#endif /* CONFIG_KGDB_KDB */ #endif /* _DEBUG_CORE_H_ */
kernel/hung_task.c +4 -2
@@ -37,7 +37,7 @@ int __read_mostly sysctl_hung_task_check_count = PID_MAX_LIMIT;*/ unsigned long __read_mostly sysctl_hung_task_timeout_secs =CONFIG_DEFAULT_HUNG_TASK_TIMEOUT ; -unsigned long __read_mostly sysctl_hung_task_warnings =10 ; +int __read_mostly sysctl_hung_task_warnings =10 ;static int __read_mostly did_panic;
@@ -98,7 +98,9 @@ static void check_hung_task(struct task_struct *t, unsigned long timeout)if (!sysctl_hung_task_warnings)return ; - sysctl_hung_task_warnings--; + +if (sysctl_hung_task_warnings >0 ) + sysctl_hung_task_warnings--;/* * Ok, the task did not get scheduled for more than 2 minutes,
kernel/sysctl.c +5 -2
@@ -122,6 +122,8 @@ extern int blk_iopoll_enabled;static int sixty =60 ;#endif +static int __maybe_unused neg_one =-1 ; +static int zero;static int __maybe_unused one =1 ;static int __maybe_unused two =2 ;
@@ -977,9 +979,10 @@ static struct ctl_table kern_table[] = { { .procname = "hung_task_warnings", .data = &sysctl_hung_task_warnings, - .maxlen = sizeof(unsigned long), + .maxlen = sizeof(int), .mode = 0644, - .proc_handler = proc_doulongvec_minmax, + .proc_handler = proc_dointvec_minmax, + .extra1 = &neg_one, }, #endif #ifdef CONFIG_COMPAT