diff --git a/arch/x86/lib/tsc_timer.c b/arch/x86/lib/tsc_timer.c
index 7f5ba2ca6f..0df1af238c 100644
--- a/arch/x86/lib/tsc_timer.c
+++ b/arch/x86/lib/tsc_timer.c
@@ -355,7 +355,15 @@ void __udelay(unsigned long usec)
 	stop = now + usec * get_tbclk_mhz();
 
 	while ((int64_t)(stop - get_ticks()) > 0)
+#if defined(CONFIG_QEMU) && defined(CONFIG_SMP)
+		/*
+		 * Add a 'pause' instruction on qemu target,
+		 * to give other VCPUs a chance to run.
+		 */
+		asm volatile("pause");
+#else
 		;
+#endif
 }
 
 int timer_init(void)