diff --git a/drivers/char/watchdog/pnx4008_wdt.c b/drivers/char/watchdog/pnx4008_wdt.c
index 359168e63c1d654aa45ff5eee35ea41b2868cb7b..e7f0450a939d9cf686f78ba957052e15d4b1285f 100644
--- a/drivers/char/watchdog/pnx4008_wdt.c
+++ b/drivers/char/watchdog/pnx4008_wdt.c
@@ -104,7 +104,8 @@ static void wdt_enable(void)
 	/* stop counter, initiate counter reset */
 	__raw_writel(RESET_COUNT, WDTIM_CTRL(wdt_base));
 	/*wait for reset to complete. 100% guarantee event */
-	while (__raw_readl(WDTIM_COUNTER(wdt_base)));
+	while (__raw_readl(WDTIM_COUNTER(wdt_base)))
+		cpu_relax();
 	/* internal and external reset, stop after that */
 	__raw_writel(M_RES2 | STOP_COUNT0 | RESET_COUNT0,
 		WDTIM_MCTRL(wdt_base));