Skip to content

Commit

Permalink
[PATCH] x86_64: Reduce NMI watchdog stack usage
Browse files Browse the repository at this point in the history
NR_CPUs can be quite big these days.  kmalloc the per CPU array instead of
putting it onto the stack

Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Andi Kleen authored and Linus Torvalds committed May 17, 2005
1 parent 7179906 commit ac6b931
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion arch/x86_64/kernel/nmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ static __init int cpu_has_lapic(void)

static int __init check_nmi_watchdog (void)
{
int counts[NR_CPUS];
int *counts;
int cpu;

if (nmi_watchdog == NMI_NONE)
Expand All @@ -125,6 +125,12 @@ static int __init check_nmi_watchdog (void)
return -1;
}

counts = kmalloc(NR_CPUS * sizeof(int),GFP_KERNEL);
if (!counts) {
nmi_watchdog = NMI_NONE;
return 0;
}

printk(KERN_INFO "Testing NMI watchdog ... ");

for (cpu = 0; cpu < NR_CPUS; cpu++)
Expand All @@ -139,6 +145,7 @@ static int __init check_nmi_watchdog (void)
cpu_pda[cpu].__nmi_count);
nmi_active = 0;
lapic_nmi_owner &= ~LAPIC_NMI_WATCHDOG;
kfree(counts);
return -1;
}
}
Expand All @@ -149,6 +156,7 @@ static int __init check_nmi_watchdog (void)
if (nmi_watchdog == NMI_LOCAL_APIC)
nmi_hz = 1;

kfree(counts);
return 0;
}
/* Have this called later during boot so counters are updating */
Expand Down

0 comments on commit ac6b931

Please sign in to comment.