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