diff --git a/ChangeLog b/ChangeLog
index 1fc55d34..413652b4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2012-03-20  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
+
+	* jtagmkII.c (jtagmkII_close): The GO command before signing off
+	turned out to do more harm than good; on the Xmega, it caused exactly
+	the opposite reaction, the CPU stopped.  Even without it, after the
+	RESET command, the target is running already.  So, drop the GO.
+
 2012-03-20  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
 
 	* configure.ac: Print a configuration summary at the end of the
diff --git a/jtagmkII.c b/jtagmkII.c
index f3e54857..b4b66467 100644
--- a/jtagmkII.c
+++ b/jtagmkII.c
@@ -1685,39 +1685,6 @@ void jtagmkII_close(PROGRAMMER * pgm)
   if (verbose >= 2)
     fprintf(stderr, "%s: jtagmkII_close()\n", progname);
 
-  if (PDATA(pgm)->device_descriptor_length) {
-    /* When in JTAG mode, restart target. */
-    buf[0] = CMND_GO;
-    if (verbose >= 2)
-      fprintf(stderr, "%s: jtagmkII_close(): Sending GO command: ",
-	      progname);
-    jtagmkII_send(pgm, buf, 1);
-
-    status = jtagmkII_recv(pgm, &resp);
-    if (status <= 0) {
-      if (verbose >= 2)
-	putc('\n', stderr);
-      fprintf(stderr,
-	      "%s: jtagmkII_close(): "
-	      "timeout/error communicating with programmer (status %d)\n",
-	      progname, status);
-    } else {
-      if (verbose >= 3) {
-	putc('\n', stderr);
-	jtagmkII_prmsg(pgm, resp, status);
-      } else if (verbose == 2)
-	fprintf(stderr, "0x%02x (%d bytes msg)\n", resp[0], status);
-      c = resp[0];
-      free(resp);
-      if (c != RSP_OK) {
-	fprintf(stderr,
-		"%s: jtagmkII_close(): "
-		"bad response to GO command: %s\n",
-		progname, jtagmkII_get_rc(c));
-      }
-    }
-  }
-
   buf[0] = CMND_SIGN_OFF;
   if (verbose >= 2)
     fprintf(stderr, "%s: jtagmkII_close(): Sending sign-off command: ",