diff --git a/board_enable.c b/board_enable.c
index 7f30180..28a8fcd 100644
--- a/board_enable.c
+++ b/board_enable.c
@@ -2499,7 +2499,6 @@
 	if (partmatch)
 		return partmatch;
 
-	msg_perr("No suitable board enable found for vendor=\"%s\", model=\"%s\".\n", vendor, model);
 	return NULL;
 }
 
@@ -2609,16 +2608,27 @@
 	board_handle_phase(P2);
 }
 
-int board_flash_enable(const char *vendor, const char *model)
+int board_flash_enable(const char *vendor, const char *model, const char *cb_vendor, const char *cb_model)
 {
 	const struct board_match *board = NULL;
 	int ret = 0;
 
-	if (vendor && model) {
+	if (vendor != NULL  && model != NULL) {
 		board = board_match_name(vendor, model);
-		if (!board) /* if a board was given it has to match, else we abort here. */
+		if (!board) { /* If a board was given by the user it has to match, else we abort here. */
+			msg_perr("No suitable board enable found for vendor=\"%s\", model=\"%s\".\n",
+				 vendor, model);
 			return 1;
-	} else {
+		}
+	}
+	if (board == NULL && cb_vendor != NULL && cb_model != NULL) {
+		board = board_match_name(cb_vendor, cb_model);
+		if (!board) { /* Failure is an option here, because many cb boards don't require an enable. */
+			msg_pdbg2("No board enable found matching coreboot IDs vendor=\"%s\", model=\"%s\".\n",
+				  cb_vendor, cb_model);
+		}
+	}
+	if (board == NULL) {
 		board = board_match_pci_ids(P3);
 		if (!board) /* i.e. there is just no board enable available for this board */
 			return 0;
diff --git a/internal.c b/internal.c
index d31808d..eda4d59 100644
--- a/internal.c
+++ b/internal.c
@@ -257,12 +257,8 @@
 	}
 
 #if defined(__i386__) || defined(__x86_64__)
-	if (cb_parse_table(&cb_vendor, &cb_model) == 0) { /* coreboot IDs valid */
-		/* If no -p internal:mainboard was given but there are valid coreboot IDs then use those. */
-		if (board_vendor == NULL || board_model == NULL) {
-			board_vendor = cb_vendor;
-			board_model = cb_model;
-		} else if (strcasecmp(board_vendor, cb_vendor) || strcasecmp(board_model, cb_model)) {
+	if ((cb_parse_table(&cb_vendor, &cb_model) == 0) && (board_vendor != NULL) && (board_model != NULL)) {
+		if (strcasecmp(board_vendor, cb_vendor) || strcasecmp(board_model, cb_model)) {
 			msg_pinfo("WARNING: The mainboard IDs set by -p internal:mainboard (%s:%s) do not\n"
 				  "         match the current coreboot IDs of the mainboard (%s:%s).\n",
 				  board_vendor, board_model, cb_vendor, cb_model);
@@ -339,7 +335,7 @@
 	init_superio_ite();
 #endif
 
-	if (board_flash_enable(board_vendor, board_model)) {
+	if (board_flash_enable(board_vendor, board_model, cb_vendor, cb_model)) {
 		msg_perr("Aborting to be safe.\n");
 		return 1;
 	}
diff --git a/programmer.h b/programmer.h
index 51b9c40..dedec67 100644
--- a/programmer.h
+++ b/programmer.h
@@ -256,7 +256,7 @@
 void sio_mask(uint16_t port, uint8_t reg, uint8_t data, uint8_t mask);
 void board_handle_before_superio(void);
 void board_handle_before_laptop(void);
-int board_flash_enable(const char *vendor, const char *model);
+int board_flash_enable(const char *vendor, const char *model, const char *cb_vendor, const char *cb_model);
 
 /* chipset_enable.c */
 int chipset_flash_enable(void);
