diff --git a/board_enable.c b/board_enable.c
index 7e18a5d..feee3b8 100644
--- a/board_enable.c
+++ b/board_enable.c
@@ -860,6 +860,25 @@
 	{},
 };
 
+/* Please keep this list alphabetically ordered by vendor/board. */
+const struct board_info laptops_ok[] = {
+	/* Verified working laptops. */
+	{ "Lenovo",		"3000 V100 TF05Cxx", },
+
+	{},
+};
+
+/* Please keep this list alphabetically ordered by vendor/board. */
+const struct board_info laptops_bad[] = {
+	/* Verified non-working boards (for now). */
+	{ "Acer",		"Aspire One", },
+	{ "Dell",		"Latitude CPi A366XT", },
+	{ "IBM/Lenovo",		"Thinkpad T40p", },
+	{ "IBM/Lenovo",		"240", },
+
+	{},
+};
+
 /**
  * Match boards on coreboot table gathered vendor and part name.
  * Require main PCI IDs to match too as extra safety.
diff --git a/flash.h b/flash.h
index 88dcda2..23c4fe6 100644
--- a/flash.h
+++ b/flash.h
@@ -250,6 +250,8 @@
 
 extern const struct board_info boards_ok[];
 extern const struct board_info boards_bad[];
+extern const struct board_info laptops_ok[];
+extern const struct board_info laptops_bad[];
 
 /* udelay.c */
 void myusec_delay(int usecs);
diff --git a/print.c b/print.c
index 89a7602..235c725 100644
--- a/print.c
+++ b/print.c
@@ -167,13 +167,15 @@
 	}
 }
 
-void print_supported_boards_helper(const struct board_info *b)
+void print_supported_boards_helper(const struct board_info *b, const char *msg)
 {
 	int i, j, boardcount = 0;
 
 	for (i = 0; b[i].vendor != NULL; i++)
 		boardcount++;
 
+	printf("\n%s (total: %d):\n\n", msg, boardcount);
+
 	for (i = 0; b[i].vendor != NULL; i++) {
 		printf("%s", b[i].vendor);
 		for (j = 0; j < 25 - strlen(b[i].vendor); j++)
@@ -210,15 +212,12 @@
 			printf("(none, board is autodetected)\n");
 	}
 
-	for (i = 0, boardcount = 0; boards_ok[i].vendor != NULL; i++)
-		boardcount++;
-	printf("\nSupported boards which don't need write-enable code "
-	       "(total: %d):\n\n", boardcount);
-	print_supported_boards_helper(boards_ok);
-
-	for (i = 0, boardcount = 0; boards_bad[i].vendor != NULL; i++)
-		boardcount++;
-	printf("\nBoards which have been verified to NOT work yet "
-	       "(total: %d):\n\n", boardcount);
-	print_supported_boards_helper(boards_bad);
+	print_supported_boards_helper(boards_ok,
+		"Supported boards which don't need write-enable code");
+	print_supported_boards_helper(boards_bad,
+		"Boards which have been verified to NOT work yet");
+	print_supported_boards_helper(laptops_ok,
+		"Laptops which have been verified to work");
+	print_supported_boards_helper(laptops_bad,
+		"Laptops which have been verified to NOT work yet");
 }
