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 Kivitystatic 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 Huthint 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