From: Nadav Amit <nadav.amit@xxxxxxxxx> There is no guarantee that a self-IPI would be delivered immediately. io_delay() is called after self-IPI is generated but does nothing. Instead, change io_delay() to wait for 10000 cycles, which should be enough on any system whatsoever. Signed-off-by: Nadav Amit <nadav.amit@xxxxxxxxx> --- x86/eventinj.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/x86/eventinj.c b/x86/eventinj.c index 8064eb9..250537b 100644 --- a/x86/eventinj.c +++ b/x86/eventinj.c @@ -18,6 +18,11 @@ void do_pf_tss(void); static inline void io_delay(void) { + u64 start = rdtsc(); + + do { + pause(); + } while (rdtsc() - start < 10000); } static void apic_self_ipi(u8 v) -- 2.17.1