diff --git a/arch/arm64/kernel/watchdog_sdei.c b/arch/arm64/kernel/watchdog_sdei.c
index 4fd1419729c2c37bef1879dc08413158d9b4b056..e36c4d398893b8875224539ad60842488204625a 100644
--- a/arch/arm64/kernel/watchdog_sdei.c
+++ b/arch/arm64/kernel/watchdog_sdei.c
@@ -21,11 +21,15 @@
 
 static int sdei_watchdog_event_num;
 static bool disable_sdei_nmi_watchdog;
+static bool sdei_watchdog_registered;
 
 int watchdog_nmi_enable(unsigned int cpu)
 {
 	int ret;
 
+	if (!sdei_watchdog_registered)
+		return -EINVAL;
+
 	refresh_hld_last_timestamp();
 
 	ret = sdei_api_event_enable(sdei_watchdog_event_num);
@@ -42,6 +46,9 @@ void watchdog_nmi_disable(unsigned int cpu)
 {
 	int ret;
 
+	if (!sdei_watchdog_registered)
+		return;
+
 	ret = sdei_api_event_disable(sdei_watchdog_event_num);
 	if (ret)
 		pr_err("Disable NMI Watchdog failed on cpu%d\n",
@@ -87,7 +94,7 @@ int __init watchdog_nmi_probe(void)
 
 	sdei_watchdog_event_num = sdei_api_event_interrupt_bind(SDEI_NMI_WATCHDOG_HWIRQ);
 	if (sdei_watchdog_event_num < 0) {
-		pr_err("bind interrupt failed !\n");
+		pr_err("Bind interrupt failed. Firmware may not support SDEI !\n");
 		return sdei_watchdog_event_num;
 	}
 
@@ -100,6 +107,7 @@ int __init watchdog_nmi_probe(void)
 		return ret;
 	}
 
+	sdei_watchdog_registered = true;
 	pr_info("SDEI Watchdog registered successfully\n");
 
 	return 0;