From: Andi Kleen <ak@suse.de>
Date: Tue, 17 May 2005 04:53:19 +0000 (-0700)
Subject: [PATCH] x86_64: Reduce NMI watchdog stack usage
X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=ac6b931c44fd9988eaa821c339d54ba06b212412;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git

[PATCH] x86_64: Reduce NMI watchdog stack usage

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>
---

diff --git a/arch/x86_64/kernel/nmi.c b/arch/x86_64/kernel/nmi.c
index 61de0b34a01e..ec13eb97e8e6 100644
--- a/arch/x86_64/kernel/nmi.c
+++ b/arch/x86_64/kernel/nmi.c
@@ -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)
@@ -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++)
@@ -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;
 		}
 	}
@@ -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 */