30 static
int __initdata testcase_total;
31 static
int __initdata testcase_successes;
32 static
int __initdata expected_testcase_failures;
33 static
int __initdata unexpected_testcase_failures;
34 static
int __initdata unexpected_testcase_unknowns;
38 unexpected_testcase_unknowns++;
42 static void __init init_nmi_testsuite(
void)
49 static void __init cleanup_nmi_testsuite(
void)
58 if (cpumask_test_and_clear_cpu(cpu,
to_cpumask(nmi_ipi_mask)))
81 while (!cpumask_empty(mask) && timeout--)
92 static void __init remote_ipi(
void)
94 cpumask_copy(
to_cpumask(nmi_ipi_mask), cpu_online_mask);
100 static void __init local_ipi(
void)
107 static void __init reset_nmi(
void)
112 static void __init dotest(
void (*testcase_fn)(
void),
int expected)
118 if (nmi_fail != expected) {
119 unexpected_testcase_failures++;
129 testcase_successes++;
137 static inline void __init print_testname(
const char *testname)
139 printk(
"%12s:", testname);
144 init_nmi_testsuite();
149 printk(
"----------------\n");
150 printk(
"| NMI testsuite:\n");
151 printk(
"--------------------\n");
153 print_testname(
"remote IPI");
156 print_testname(
"local IPI");
160 cleanup_nmi_testsuite();
162 if (unexpected_testcase_failures) {
163 printk(
"--------------------\n");
164 printk(
"BUG: %3d unexpected failures (out of %3d) - debugging disabled! |\n",
165 unexpected_testcase_failures, testcase_total);
166 printk(
"-----------------------------------------------------------------\n");
167 }
else if (expected_testcase_failures && testcase_successes) {
168 printk(
"--------------------\n");
169 printk(
"%3d out of %3d testcases failed, as expected. |\n",
170 expected_testcase_failures, testcase_total);
171 printk(
"----------------------------------------------------\n");
172 }
else if (expected_testcase_failures && !testcase_successes) {
173 printk(
"--------------------\n");
174 printk(
"All %3d testcases failed, as expected. |\n",
175 expected_testcase_failures);
176 printk(
"----------------------------------------\n");
178 printk(
"--------------------\n");
179 printk(
"Good, all %3d testcases passed! |\n",
181 printk(
"---------------------------------\n");