xref: /kvm-unit-tests/x86/smptest.c (revision 2c96b77ec9d3b1fcec7525174e23a6240ee05949)
1 #include "libcflat.h"
2 #include "apic.h"
3 #include "smp.h"
4 
5 unsigned nipis;
6 
7 static void ipi_test(void *data)
8 {
9     int n = (long)data;
10 
11     printf("ipi called, cpu %d\n", n);
12     if (id_map[n] != smp_id())
13 	printf("but wrong cpu %d\n", smp_id());
14     else
15         nipis++;
16 }
17 
18 int main(void)
19 {
20     int ncpus;
21     int i;
22 
23     ncpus = cpu_count();
24     printf("found %d cpus\n", ncpus);
25     for (i = 0; i < ncpus; ++i)
26 	on_cpu(i, ipi_test, (void *)(long)i);
27 
28     report(nipis == ncpus, "IPI to each CPU");
29     return report_summary();
30 }
31