Skip to content

Commit a702704

Browse files
dzickusrhIngo Molnar
authored andcommitted
watchdog: Quiet down the boot messages
A bunch of bugzillas have complained how noisy the nmi_watchdog is during boot-up especially with its expected failure cases (like virt and bios resource contention). This is my attempt to quiet them down and keep it less confusing for the end user. What I did is print the message for cpu0 and save it for future comparisons. If future cpus have an identical message as cpu0, then don't print the redundant info. However, if a future cpu has a different message, happily print that loudly. Before the change, you would see something like: ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 CPU0: Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz stepping 0a Performance Events: PEBS fmt0+, Core2 events, Intel PMU driver. ... version: 2 ... bit width: 40 ... generic registers: 2 ... value mask: 000000ffffffffff ... max period: 000000007fffffff ... fixed-purpose events: 3 ... event mask: 0000000700000003 NMI watchdog enabled, takes one hw-pmu counter. Booting Node 0, Processors #1 NMI watchdog enabled, takes one hw-pmu counter. #2 NMI watchdog enabled, takes one hw-pmu counter. #3 Ok. NMI watchdog enabled, takes one hw-pmu counter. Brought up 4 CPUs Total of 4 processors activated (22607.24 BogoMIPS). After the change, it is simplified to: ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 CPU0: Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz stepping 0a Performance Events: PEBS fmt0+, Core2 events, Intel PMU driver. ... version: 2 ... bit width: 40 ... generic registers: 2 ... value mask: 000000ffffffffff ... max period: 000000007fffffff ... fixed-purpose events: 3 ... event mask: 0000000700000003 NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter. Booting Node 0, Processors #1 #2 #3 Ok. Brought up 4 CPUs V2: little changes based on Joe Perches' feedback V3: printk cleanup based on Ingo's feedback; checkpatch fix V4: keep printk as one long line V5: Ingo fix ups Reported-and-tested-by: Nathan Zimmer <[email protected]> Signed-off-by: Don Zickus <[email protected]> Cc: [email protected] Cc: [email protected] Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Ingo Molnar <[email protected]>
1 parent 25f4298 commit a702704

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

kernel/watchdog.c

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,13 @@ static int watchdog(void *unused)
372372

373373

374374
#ifdef CONFIG_HARDLOCKUP_DETECTOR
375+
/*
376+
* People like the simple clean cpu node info on boot.
377+
* Reduce the watchdog noise by only printing messages
378+
* that are different from what cpu0 displayed.
379+
*/
380+
static unsigned long cpu0_err;
381+
375382
static int watchdog_nmi_enable(int cpu)
376383
{
377384
struct perf_event_attr *wd_attr;
@@ -390,11 +397,21 @@ static int watchdog_nmi_enable(int cpu)
390397

391398
/* Try to register using hardware perf events */
392399
event = perf_event_create_kernel_counter(wd_attr, cpu, NULL, watchdog_overflow_callback, NULL);
400+
401+
/* save cpu0 error for future comparision */
402+
if (cpu == 0 && IS_ERR(event))
403+
cpu0_err = PTR_ERR(event);
404+
393405
if (!IS_ERR(event)) {
394-
pr_info("enabled, takes one hw-pmu counter.\n");
406+
/* only print for cpu0 or different than cpu0 */
407+
if (cpu == 0 || cpu0_err)
408+
pr_info("enabled on all CPUs, permanently consumes one hw-PMU counter.\n");
395409
goto out_save;
396410
}
397411

412+
/* skip displaying the same error again */
413+
if (cpu > 0 && (PTR_ERR(event) == cpu0_err))
414+
return PTR_ERR(event);
398415

399416
/* vary the KERN level based on the returned errno */
400417
if (PTR_ERR(event) == -EOPNOTSUPP)

0 commit comments

Comments
 (0)