diff --git a/kernel/printk.c b/kernel/printk.c
index 8b42f87e311d54e01172c72c3f6c795d1dfd8525..7d555615223410127696691eb7daa73876b7c124 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -1157,8 +1157,11 @@ void register_console(struct console *console)
 			console->index = 0;
 		if (console->setup == NULL ||
 		    console->setup(console, NULL) == 0) {
-			console->flags |= CON_ENABLED | CON_CONSDEV;
-			preferred_console = 0;
+			console->flags |= CON_ENABLED;
+			if (console->device) {
+				console->flags |= CON_CONSDEV;
+				preferred_console = 0;
+			}
 		}
 	}