diff --git a/control.c b/control.c
index eff4f7e..5b20a28 100644
--- a/control.c
+++ b/control.c
@@ -47,7 +47,7 @@
 	 * 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.
 	 */
-	reset_all_windows(context, SET_BMC_EVENT);
+	windows_reset_all(context, SET_BMC_EVENT);
 	rc = lpc_reset(context);
 	if (rc < 0) {
 		return rc;
@@ -71,7 +71,7 @@
 	flash_set_bytemap(context, 0, context->flash_size, FLASH_DIRTY);
 
 	/* Force daemon to reload all windows -> Set BMC event to notify host */
-	reset_all_windows(context, SET_BMC_EVENT);
+	windows_reset_all(context, SET_BMC_EVENT);
 
 	return 0;
 }
diff --git a/mboxd.c b/mboxd.c
index ccdccc1..0b1357a 100644
--- a/mboxd.c
+++ b/mboxd.c
@@ -139,7 +139,7 @@
 				break;
 			case SIGHUP:
 				/* Host didn't request reset -> Notify it */
-				reset_all_windows(context, SET_BMC_EVENT);
+				windows_reset_all(context, SET_BMC_EVENT);
 				rc = lpc_reset(context);
 				if (rc < 0) {
 					MSG_ERR("WARNING: Failed to point the "
@@ -177,7 +177,7 @@
 
 	/* Best to reset windows and the lpc mapping for safety */
 	/* Host didn't request reset -> Notify it */
-	reset_all_windows(context, SET_BMC_EVENT);
+	windows_reset_all(context, SET_BMC_EVENT);
 	rc = lpc_reset(context);
 	/* Not much we can do if this fails */
 	if (rc < 0) {
diff --git a/mboxd_msg.c b/mboxd_msg.c
index cc23fe3..7304521 100644
--- a/mboxd_msg.c
+++ b/mboxd_msg.c
@@ -123,7 +123,7 @@
 			     union mbox_regs *req, struct mbox_msg *resp)
 {
 	/* Host requested it -> No BMC Event */
-	reset_all_windows(context, NO_BMC_EVENT);
+	windows_reset_all(context, NO_BMC_EVENT);
 	return lpc_reset(context);
 }
 
@@ -218,7 +218,7 @@
 		 * window -> In which case we are better off notifying the
 		 * host.
 		 */
-		reset_all_windows(context, SET_BMC_EVENT);
+		windows_reset_all(context, SET_BMC_EVENT);
 	}
 
 	resp->args[0] = mbox_api_version;
diff --git a/windows.c b/windows.c
index 729a4d3..3759bb3 100644
--- a/windows.c
+++ b/windows.c
@@ -423,11 +423,11 @@
 }
 
 /*
- * reset_all_windows() - Reset all windows to a well defined default state
+ * 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
  */
-void reset_all_windows(struct mbox_context *context, bool set_bmc_event)
+void windows_reset_all(struct mbox_context *context, bool set_bmc_event)
 {
 	int i;
 
diff --git a/windows.h b/windows.h
index 30ed68f..943ea9b 100644
--- a/windows.h
+++ b/windows.h
@@ -24,7 +24,7 @@
 void windows_close_current(struct mbox_context *context, bool set_bmc_event,
 			  uint8_t flags);
 void window_reset(struct mbox_context *context, struct window_context *window);
-void reset_all_windows(struct mbox_context *context, bool set_bmc_event);
+void windows_reset_all(struct mbox_context *context, bool set_bmc_event);
 struct window_context *find_oldest_window(struct mbox_context *context);
 struct window_context *find_largest_window(struct mbox_context *context);
 struct window_context *search_windows(struct mbox_context *context,
