diff --git a/src/target/nds32.c b/src/target/nds32.c
index 49fde0c9abb2c7b89172255fc0d0682b39a4f5d6..4c9f29134b32b9cdd4d15e7eb3176dd17cfe5bbb 100644
--- a/src/target/nds32.c
+++ b/src/target/nds32.c
@@ -2161,8 +2161,6 @@ int nds32_assert_reset(struct target *target)
 	struct aice_port_s *aice = target_to_aice(target);
 	struct nds32_cpu_version *cpu_version = &(nds32->cpu_version);
 
-	jtag_poll_set_enabled(true);
-
 	if (target->reset_halt) {
 		if ((nds32->soft_reset_halt)
 			|| (nds32->edm.version < 0x51)
@@ -2205,7 +2203,9 @@ static int nds32_gdb_attach(struct nds32 *nds32)
 		}
 
 		target_halt(nds32->target);
-		target_poll(nds32->target);
+
+		/* turn on polling */
+		jtag_poll_set_enabled(true);
 
 		gdb_attached = true;
 	}
diff --git a/src/target/nds32_v2.c b/src/target/nds32_v2.c
index ceeed0af35624f1d243b3f3d1068eee34189692d..c774194e263057c294d6a8587c8ddd638f116b66 100644
--- a/src/target/nds32_v2.c
+++ b/src/target/nds32_v2.c
@@ -287,8 +287,6 @@ static int nds32_v2_debug_entry(struct nds32 *nds32, bool enable_watchpoint)
 {
 	LOG_DEBUG("nds32_v2_debug_entry");
 
-	jtag_poll_set_enabled(false);
-
 	if (nds32->virtual_hosting)
 		LOG_WARNING("<-- TARGET WARNING! Virtual hosting is not supported "
 				"under V1/V2 architecture. -->");
@@ -387,8 +385,6 @@ static int nds32_v2_leave_debug_state(struct nds32 *nds32, bool enable_watchpoin
 
 	register_cache_invalidate(nds32->core_cache);
 
-	jtag_poll_set_enabled(true);
-
 	return ERROR_OK;
 }
 
@@ -426,10 +422,6 @@ static int nds32_v2_deassert_reset(struct target *target)
 		retval = target_halt(target);
 		if (retval != ERROR_OK)
 			return retval;
-		/* call target_poll() to avoid "Halt timed out" */
-		CHECK_RETVAL(target_poll(target));
-	} else {
-		jtag_poll_set_enabled(false);
 	}
 
 	return ERROR_OK;
diff --git a/src/target/nds32_v3.c b/src/target/nds32_v3.c
index 5996a908095efb2dac80fb08d2abb8b94f2a521e..f1763cb0db66e6af4092f529bbab12c8e49556af 100644
--- a/src/target/nds32_v3.c
+++ b/src/target/nds32_v3.c
@@ -254,12 +254,8 @@ static int nds32_v3_deassert_reset(struct target *target)
 		if (retval != ERROR_OK)
 			return retval;
 
-		/* call target_poll() to avoid "Halt timed out" */
-		CHECK_RETVAL(target_poll(target));
 	} else {
 		/* reset-halt */
-		jtag_poll_set_enabled(false);
-
 		struct nds32_v3_common *nds32_v3 = target_to_nds32_v3(target);
 		struct nds32 *nds32 = &(nds32_v3->nds32);
 		uint32_t value;
diff --git a/src/target/nds32_v3_common.c b/src/target/nds32_v3_common.c
index f0cd77d234079ab1e37a768adbf2be16f5311f87..b524679e286e2eae1c4fdc8e90e21cff86360fb6 100644
--- a/src/target/nds32_v3_common.c
+++ b/src/target/nds32_v3_common.c
@@ -71,8 +71,6 @@ static int nds32_v3_debug_entry(struct nds32 *nds32, bool enable_watchpoint)
 {
 	LOG_DEBUG("nds32_v3_debug_entry");
 
-	jtag_poll_set_enabled(false);
-
 	enum target_state backup_state = nds32->target->state;
 	nds32->target->state = TARGET_HALTED;
 
@@ -117,8 +115,6 @@ static int nds32_v3_debug_entry(struct nds32 *nds32, bool enable_watchpoint)
 		if (enable_watchpoint)
 			CHECK_RETVAL(v3_common_callback->activate_hardware_watchpoint(nds32->target));
 
-		jtag_poll_set_enabled(true);
-
 		return ERROR_FAIL;
 	}
 
@@ -228,9 +224,6 @@ static int nds32_v3_leave_debug_state(struct nds32 *nds32, bool enable_watchpoin
 		target_add_breakpoint(target, &syscall_breakpoint);
 	}
 
-	/* enable polling */
-	jtag_poll_set_enabled(true);
-
 	return ERROR_OK;
 }
 
diff --git a/src/target/nds32_v3m.c b/src/target/nds32_v3m.c
index d72d986915fb0246caf49b73a20c354eb1e146c0..35a76378021a6b77777df86100dd63695153f56b 100644
--- a/src/target/nds32_v3m.c
+++ b/src/target/nds32_v3m.c
@@ -235,10 +235,7 @@ static int nds32_v3m_deassert_reset(struct target *target)
 		retval = target_halt(target);
 		if (retval != ERROR_OK)
 			return retval;
-		/* call target_poll() to avoid "Halt timed out" */
-		CHECK_RETVAL(target_poll(target));
-	} else {
-		jtag_poll_set_enabled(false);
+
 	}
 
 	return ERROR_OK;