xref: /kvm-unit-tests/x86/smptest.c (revision 90ab30c22dbb18b6d9804421ef3f160cfef031b8)
17d36db35SAvi Kivity #include "libcflat.h"
2*90ab30c2SNadav Amit #include "apic.h"
37d36db35SAvi Kivity #include "smp.h"
47d36db35SAvi Kivity 
57226c4a7SRadim Krčmář unsigned nipis;
67226c4a7SRadim Krčmář 
ipi_test(void * data)77d36db35SAvi Kivity static void ipi_test(void *data)
87d36db35SAvi Kivity {
97d36db35SAvi Kivity     int n = (long)data;
107d36db35SAvi Kivity 
117d36db35SAvi Kivity     printf("ipi called, cpu %d\n", n);
12*90ab30c2SNadav Amit     if (id_map[n] != smp_id())
137d36db35SAvi Kivity 	printf("but wrong cpu %d\n", smp_id());
147226c4a7SRadim Krčmář     else
157226c4a7SRadim Krčmář         nipis++;
167d36db35SAvi Kivity }
177d36db35SAvi Kivity 
main(void)187db17e21SThomas Huth int main(void)
197d36db35SAvi Kivity {
207d36db35SAvi Kivity     int ncpus;
217d36db35SAvi Kivity     int i;
227d36db35SAvi Kivity 
237d36db35SAvi Kivity     ncpus = cpu_count();
247d36db35SAvi Kivity     printf("found %d cpus\n", ncpus);
257d36db35SAvi Kivity     for (i = 0; i < ncpus; ++i)
267d36db35SAvi Kivity 	on_cpu(i, ipi_test, (void *)(long)i);
277226c4a7SRadim Krčmář 
28a299895bSThomas Huth     report(nipis == ncpus, "IPI to each CPU");
297226c4a7SRadim Krčmář     return report_summary();
307d36db35SAvi Kivity }
31