diff --git a/control.c b/control.c
index 5470e45..7eae29c 100644
--- a/control.c
+++ b/control.c
@@ -48,7 +48,12 @@
 	 * mapping back to flash, or memory in case we're using a virtual pnor.
 	 * Better set the bmc event to notify the host of this.
 	 */
-	windows_reset_all(context, EVENT_TRIGGER);
+	if (windows_reset_all(context)) {
+		rc = protocol_events_set(context, BMC_EVENT_WINDOW_RESET);
+		if (rc < 0) {
+			return rc;
+		}
+	}
 	rc = lpc_reset(context);
 	if (rc < 0) {
 		return rc;
@@ -72,7 +77,9 @@
 	flash_set_bytemap(context, 0, context->flash_size, FLASH_DIRTY);
 
 	/* Force daemon to reload all windows -> Set BMC event to notify host */
-	windows_reset_all(context, EVENT_TRIGGER);
+	if (windows_reset_all(context)) {
+		protocol_events_set(context, BMC_EVENT_WINDOW_RESET);
+	}
 
 	return 0;
 }
@@ -87,7 +94,7 @@
 	}
 
 	/* Nothing to check - Just set the bit to notify the host */
-	rc = protocol_events_set(context, BMC_EVENT_FLASH_CTRL_LOST, EVENT_TRIGGER);
+	rc = protocol_events_set(context, BMC_EVENT_FLASH_CTRL_LOST);
 	if (rc < 0) {
 		return rc;
 	}
@@ -112,7 +119,7 @@
 	}
 
 	/* Clear the bit and send the BMC Event to the host */
-	rc = protocol_events_clear(context, BMC_EVENT_FLASH_CTRL_LOST, EVENT_TRIGGER);
+	rc = protocol_events_clear(context, BMC_EVENT_FLASH_CTRL_LOST);
 	if (rc < 0) {
 		return rc;
 	}
diff --git a/mboxd.c b/mboxd.c
index dece231..86a67f3 100644
--- a/mboxd.c
+++ b/mboxd.c
@@ -147,7 +147,14 @@
 				break;
 			case SIGHUP:
 				/* Host didn't request reset -> Notify it */
-				windows_reset_all(context, EVENT_TRIGGER);
+				if (windows_reset_all(context)) {
+				       rc = protocol_events_set(context,
+						     BMC_EVENT_WINDOW_RESET);
+				       if (rc < 0) {
+					      MSG_ERR("Failed to notify host of reset, expect host-side corruption\n");
+					      break;
+				       }
+				}
 				rc = lpc_reset(context);
 				if (rc < 0) {
 					MSG_ERR("WARNING: Failed to point the "
@@ -185,7 +192,13 @@
 
 	/* Best to reset windows and the lpc mapping for safety */
 	/* Host didn't request reset -> Notify it */
-	windows_reset_all(context, EVENT_TRIGGER);
+	if (windows_reset_all(context)) {
+	       rc = protocol_events_set(context, BMC_EVENT_WINDOW_RESET);
+	       if (rc < 0) {
+		      MSG_ERR("Failed to notify host of reset, expect host-side corruption\n");
+		      return rc;
+	       }
+	}
 	rc = lpc_reset(context);
 	/* Not much we can do if this fails */
 	if (rc < 0) {
@@ -402,7 +415,7 @@
 		MSG_ERR("LPC configuration failed, RESET required: %d\n", rc);
 	}
 
-	rc = protocol_events_set(context, BMC_EVENT_DAEMON_READY, EVENT_TRIGGER);
+	rc = protocol_events_set(context, BMC_EVENT_DAEMON_READY);
 	if (rc) {
 		goto finish;
 	}
@@ -414,7 +427,7 @@
 
 finish:
 	MSG_INFO("Daemon Exiting...\n");
-	protocol_events_clear(context, BMC_EVENT_DAEMON_READY, EVENT_TRIGGER);
+	protocol_events_clear(context, BMC_EVENT_DAEMON_READY);
 
 #ifdef VIRTUAL_PNOR_ENABLED
 	destroy_vpnor(context);
diff --git a/protocol.c b/protocol.c
index c6934e6..58dad98 100644
--- a/protocol.c
+++ b/protocol.c
@@ -17,12 +17,10 @@
  * protocol_events_set() - Set BMC events
  * @context:	The mbox context pointer
  * @bmc_event:	The bits to set
- * @write_back:	Whether to write back to the register -> will interrupt host
  *
  * Return:	0 on success otherwise negative error code
  */
-int protocol_events_set(struct mbox_context *context, uint8_t bmc_event,
-		   bool write_back)
+int protocol_events_set(struct mbox_context *context, uint8_t bmc_event)
 {
 	uint8_t mask = 0x00;
 
@@ -38,30 +36,28 @@
 	context->bmc_events |= (bmc_event & mask);
 	MSG_DBG("BMC Events set to: 0x%.2x\n", context->bmc_events);
 
-	return write_back ? context->transport->flush_events(context) : 0;
+	return context->transport->flush_events(context);
 }
 
 /*
  * protocol_events_clear() - Clear BMC events
  * @context:	The mbox context pointer
  * @bmc_event:	The bits to clear
- * @write_back:	Whether to write back to the register -> will interrupt host
  *
  * Return:	0 on success otherwise negative error code
  */
-int protocol_events_clear(struct mbox_context *context, uint8_t bmc_event,
-		   bool write_back)
+int protocol_events_clear(struct mbox_context *context, uint8_t bmc_event)
 {
 	context->bmc_events &= ~bmc_event;
 	MSG_DBG("BMC Events clear to: 0x%.2x\n", context->bmc_events);
 
-	return write_back ? context->transport->flush_events(context) : 0;
+	return context->transport->flush_events(context);
 }
 
 int protocol_v1_reset(struct mbox_context *context)
 {
 	/* Host requested it -> No BMC Event */
-	windows_reset_all(context, EVENT_SUPPRESS);
+	windows_reset_all(context);
 	return lpc_reset(context);
 }
 
@@ -78,7 +74,8 @@
 
 	/* Do the {up,down}grade if necessary*/
 	if (rc != old_version) {
-		windows_reset_all(context, EVENT_TRIGGER);
+		/* Doing version negotiation, don't alert host to reset */
+		windows_reset_all(context);
 		return context->protocol->get_info(context, io);
 	}
 
@@ -151,7 +148,7 @@
 				return rc;
 			}
 		}
-		windows_close_current(context, EVENT_SUPPRESS, FLAGS_NONE);
+		windows_close_current(context, FLAGS_NONE);
 	}
 
 	/* Offset the host has requested */
@@ -331,15 +328,15 @@
 	}
 
 	/* Host asked for it -> Don't set the BMC Event */
-	windows_close_current(context, EVENT_SUPPRESS, io->req.flags);
+	windows_close_current(context, io->req.flags);
 
 	return 0;
 }
 
 int protocol_v1_ack(struct mbox_context *context, struct protocol_ack *io)
 {
-	return protocol_events_clear(context, (io->req.flags & BMC_EVENT_ACK_MASK),
-			      EVENT_TRIGGER);
+	return protocol_events_clear(context,
+				     (io->req.flags & BMC_EVENT_ACK_MASK));
 }
 
 /*
@@ -374,7 +371,8 @@
 
 	/* Do the {up,down}grade if necessary*/
 	if (rc != old_version) {
-		windows_reset_all(context, EVENT_TRIGGER);
+		/* Doing version negotiation, don't alert host to reset */
+		windows_reset_all(context);
 		return context->protocol->get_info(context, io);
 	}
 
@@ -496,7 +494,7 @@
 	}
 
 	/* Host asked for it -> Don't set the BMC Event */
-	windows_close_current(context, EVENT_SUPPRESS, io->req.flags);
+	windows_close_current(context, io->req.flags);
 
 	return 0;
 }
diff --git a/protocol.h b/protocol.h
index f2b8e6f..44de89e 100644
--- a/protocol.h
+++ b/protocol.h
@@ -120,13 +120,8 @@
 
 int protocol_negotiate_version(struct mbox_context *context, uint8_t requested);
 
-#define EVENT_SUPPRESS		false
-#define EVENT_TRIGGER		true
-
-int protocol_events_set(struct mbox_context *context, uint8_t bmc_event,
-			bool write_back);
-int protocol_events_clear(struct mbox_context *context, uint8_t bmc_event,
-			  bool write_back);
+int protocol_events_set(struct mbox_context *context, uint8_t bmc_event);
+int protocol_events_clear(struct mbox_context *context, uint8_t bmc_event);
 
 /* Protocol v1 */
 int protocol_v1_reset(struct mbox_context *context);
diff --git a/test/bmc_event_ack_v2.c b/test/bmc_event_ack_v2.c
index 51f026e..719c27b 100644
--- a/test/bmc_event_ack_v2.c
+++ b/test/bmc_event_ack_v2.c
@@ -50,7 +50,7 @@
 	rc = mbox_command_dispatch(ctx, get_info, sizeof(get_info));
 	assert(rc == 1);
 
-	protocol_events_set(ctx, FLAGS, EVENT_TRIGGER);
+	protocol_events_set(ctx, FLAGS);
 
 	rc = mbox_command_dispatch(ctx, command, sizeof(command));
 	assert(rc == 1);
diff --git a/windows.c b/windows.c
index 3d3104a..0b852c5 100644
--- a/windows.c
+++ b/windows.c
@@ -379,7 +379,6 @@
 /*
  * windows_close_current() - Close the current (active) window
  * @context:   		The mbox context pointer
- * @set_bmc_event:	Whether to set the bmc event bit
  * @flags:		Flags as defined for a close command in the protocol
  *
  * This closes the current window. If the host has requested the current window
@@ -388,15 +387,10 @@
  * without the host requesting it the bmc event bit must be set to indicate this
  * to the host (set_bmc_event == true).
  */
-void windows_close_current(struct mbox_context *context, bool set_bmc_event,
-			  uint8_t flags)
+void windows_close_current(struct mbox_context *context, uint8_t flags)
 {
 	MSG_DBG("Close current window, flags: 0x%.2x\n", flags);
 
-	if (set_bmc_event) {
-		protocol_events_set(context, BMC_EVENT_WINDOW_RESET, EVENT_TRIGGER);
-	}
-
 	if (flags & FLAGS_SHORT_LIFETIME) {
 		context->current->age = 0;
 	}
@@ -425,22 +419,29 @@
 /*
  * windows_reset_all() - Reset all windows to a well defined default state
  * @context:		The mbox context pointer
- * @set_bmc_event:	If any state change should be indicated to the host
+ *
+ * @return True if there was a window open that was closed, false otherwise
  */
-void windows_reset_all(struct mbox_context *context, bool set_bmc_event)
+bool windows_reset_all(struct mbox_context *context)
 {
+	bool closed = context->current;
 	int i;
 
 	MSG_DBG("Resetting all windows\n");
+
+	context->windows.max_age = 0;
+
 	/* We might have an open window which needs closing */
+
 	if (context->current) {
-		windows_close_current(context, set_bmc_event, FLAGS_NONE);
+		windows_close_current(context, FLAGS_NONE);
 	}
+
 	for (i = 0; i < context->windows.num; i++) {
 		window_reset(context, &context->windows.window[i]);
 	}
 
-	context->windows.max_age = 0;
+	return closed;
 }
 
 /*
diff --git a/windows.h b/windows.h
index 1e90066..10d76f9 100644
--- a/windows.h
+++ b/windows.h
@@ -43,10 +43,9 @@
 void windows_alloc_dirty_bytemap(struct mbox_context *context);
 int window_set_bytemap(struct mbox_context *context, struct window_context *cur,
 		       uint32_t offset, uint32_t size, uint8_t val);
-void windows_close_current(struct mbox_context *context, bool set_bmc_event,
-			  uint8_t flags);
+void windows_close_current(struct mbox_context *context, uint8_t flags);
 void window_reset(struct mbox_context *context, struct window_context *window);
-void windows_reset_all(struct mbox_context *context, bool set_bmc_event);
+bool windows_reset_all(struct mbox_context *context);
 struct window_context *windows_find_oldest(struct mbox_context *context);
 struct window_context *windows_find_largest(struct mbox_context *context);
 struct window_context *windows_search(struct mbox_context *context,
