diff --git a/firmware/include/vboot_api.h b/firmware/include/vboot_api.h
index f93df51..af61eed 100644
--- a/firmware/include/vboot_api.h
+++ b/firmware/include/vboot_api.h
@@ -925,9 +925,9 @@
 /**
  * Check if the firmware needs to shut down the system.
  *
- * Returns 1 if a shutdown is being requested (for example, the user has
- * pressed the power button or closed the lid), or 0 if a shutdown is not being
- * requested.
+ * Returns a non-zero VB_SHUTDOWN_REQUEST mask indicating the reason(s) for
+ * shutdown if a shutdown is being requested (see VB_SHUTDOWN_REQUEST_*), or 0
+ * if a shutdown is not being requested.
  *
  * NOTE: When we're displaying a screen, pressing the power button should shut
  * down the computer.  We need a way to break out of our control loop so this
@@ -935,6 +935,17 @@
  */
 uint32_t VbExIsShutdownRequested(void);
 
+/*
+ * Shutdown requested for a reason which is not defined among other
+ * VB_SHUTDOWN_REQUEST_* values. This must be defined as 1 for backward
+ * compatibility with old versions of the API.
+ */
+#define VB_SHUTDOWN_REQUEST_OTHER		0x00000001
+/* Shutdown requested due to a lid switch being closed. */
+#define VB_SHUTDOWN_REQUEST_LID_CLOSED		0x00000002
+/* Shutdown requested due to a power button being pressed. */
+#define VB_SHUTDOWN_REQUEST_POWER_BUTTON	0x00000004
+
 /**
  * Expose the BIOS' built-in decompression routine to the vboot wrapper. The
  * caller must know how large the uncompressed data will be and must manage
diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c
index 3a34625..784751a 100644
--- a/firmware/lib/vboot_api_kernel.c
+++ b/firmware/lib/vboot_api_kernel.c
@@ -42,6 +42,23 @@
 }
 
 /**
+ * Checks GBB flags against VbExIsShutdownRequested() shutdown request to
+ * determine if a shutdown is required.
+ *
+ * Returns true if a shutdown is required and false if no shutdown is required.
+ */
+static int VbWantShutdown(uint32_t gbb_flags)
+{
+	uint32_t shutdown_request = VbExIsShutdownRequested();
+
+	/* If desired, ignore shutdown request due to lid closure. */
+	if (gbb_flags & GBB_FLAG_DISABLE_LID_SHUTDOWN)
+		shutdown_request &= ~VB_SHUTDOWN_REQUEST_LID_CLOSED;
+
+	return !!shutdown_request;
+}
+
+/**
  * Attempt loading a kernel from the specified type(s) of disks.
  *
  * If successful, sets p->disk_handle to the disk for the kernel and returns
@@ -147,7 +164,7 @@
 
 	/* Await further instructions */
 	while (1) {
-		if (VbExIsShutdownRequested())
+		if (VbWantShutdown(cparams->gbb->flags))
 			return -1;
 		key = VbExKeyboardReadWithFlags(&key_flags);
                 button = VbExGetSwitches(VB_INIT_FLAG_REC_BUTTON_PRESSED);
@@ -237,7 +254,7 @@
 	do {
 		uint32_t key;
 
-		if (VbExIsShutdownRequested()) {
+		if (VbWantShutdown(gbb->flags)) {
 			VBDEBUG(("VbBootDeveloper() - shutdown requested!\n"));
 			VbAudioClose(audio);
 			return VBERROR_SHUTDOWN_REQUESTED;
@@ -491,7 +508,7 @@
 			for (i = 0; i < REC_DISK_DELAY; i += REC_KEY_DELAY) {
 				VbCheckDisplayKey(cparams, VbExKeyboardRead(),
 						  &vnc);
-				if (VbExIsShutdownRequested())
+				if (VbWantShutdown(cparams->gbb->flags))
 					return VBERROR_SHUTDOWN_REQUESTED;
 				VbExSleepMs(REC_KEY_DELAY);
 			}
@@ -588,7 +605,7 @@
 			} else {
 				VbCheckDisplayKey(cparams, key, &vnc);
 			}
-			if (VbExIsShutdownRequested())
+			if (VbWantShutdown(cparams->gbb->flags))
 				return VBERROR_SHUTDOWN_REQUESTED;
 			VbExSleepMs(REC_KEY_DELAY);
 		}
