diff --git a/soc/swr-mstr-ctrl.c b/soc/swr-mstr-ctrl.c
index f2fa733e363b..0d81239707b6 100644
--- a/soc/swr-mstr-ctrl.c
+++ b/soc/swr-mstr-ctrl.c
@@ -1430,12 +1430,17 @@ static irqreturn_t swrm_wakeup_interrupt(int irq, void *dev)
 		return ret;
 	}
 	mutex_unlock(&swrm->devlock);
+	if (unlikely(swrm_lock_sleep(swrm) == false)) {
+		dev_err(swrm->dev, "%s Failed to hold suspend\n", __func__);
+		goto exit;
+	}
 	if (swrm->wake_irq > 0)
 		disable_irq_nosync(swrm->wake_irq);
 	pm_runtime_get_sync(swrm->dev);
 	pm_runtime_mark_last_busy(swrm->dev);
 	pm_runtime_put_autosuspend(swrm->dev);
-
+	swrm_unlock_sleep(swrm);
+exit:
 	return ret;
 }