xref: /kvm-unit-tests/x86/smptest.c (revision a299895b7abb54e7ba6bb4108f202acbb484ac65)
17d36db35SAvi Kivity #include "libcflat.h"
27d36db35SAvi Kivity #include "smp.h"
37d36db35SAvi Kivity 
47226c4a7SRadim Krčmář unsigned nipis;
57226c4a7SRadim Krčmář 
67d36db35SAvi Kivity static void ipi_test(void *data)
77d36db35SAvi Kivity {
87d36db35SAvi Kivity     int n = (long)data;
97d36db35SAvi Kivity 
107d36db35SAvi Kivity     printf("ipi called, cpu %d\n", n);
117d36db35SAvi Kivity     if (n != smp_id())
127d36db35SAvi Kivity 	printf("but wrong cpu %d\n", smp_id());
137226c4a7SRadim Krčmář     else
147226c4a7SRadim Krčmář         nipis++;
157d36db35SAvi Kivity }
167d36db35SAvi Kivity 
177db17e21SThomas Huth int main(void)
187d36db35SAvi Kivity {
197d36db35SAvi Kivity     int ncpus;
207d36db35SAvi Kivity     int i;
217d36db35SAvi Kivity 
227d36db35SAvi Kivity     smp_init();
237d36db35SAvi Kivity 
247d36db35SAvi Kivity     ncpus = cpu_count();
257d36db35SAvi Kivity     printf("found %d cpus\n", ncpus);
267d36db35SAvi Kivity     for (i = 0; i < ncpus; ++i)
277d36db35SAvi Kivity 	on_cpu(i, ipi_test, (void *)(long)i);
287226c4a7SRadim Krčmář 
29*a299895bSThomas Huth     report(nipis == ncpus, "IPI to each CPU");
307226c4a7SRadim Krčmář     return report_summary();
317d36db35SAvi Kivity }
32