s390/cio: add condev keyword to cio_ignore

Provide a 'condev' keyword to cio_ignore to (un)ignore the
CCW console device.

Reviewed-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
diff --git a/Documentation/s390/CommonIO b/Documentation/s390/CommonIO
index d90a5dd..6e0f63f3 100644
--- a/Documentation/s390/CommonIO
+++ b/Documentation/s390/CommonIO
@@ -10,7 +10,7 @@
 
 * cio_ignore = device[,device[,..]]
 
-	device := {all | [!]ipldev | [!]<devno> | [!]<devno>-<devno>}
+	device := {all | [!]ipldev | [!]condev | [!]<devno> | [!]<devno>-<devno>}
 
   The given devices will be ignored by the common I/O-layer; no detection
   and device sensing will be done on any of those devices. The subchannel to 
@@ -24,10 +24,11 @@
   device numbers (0xabcd or abcd, for 2.4 backward compatibility). If you
   give a device number 0xabcd, it will be interpreted as 0.0.abcd.
 
-  You can use the 'all' keyword to ignore all devices. The 'ipldev' keyword can
-  be used to refer to the CCW based boot device (this is probably useful only
-  when combined with the '!' operator). The '!' operator will cause the I/O-layer
-  to _not_ ignore a device. The command line is parsed from left to right.
+  You can use the 'all' keyword to ignore all devices. The 'ipldev' and 'condev'
+  keywords can be used to refer to the CCW based boot device and CCW console
+  device respectively (these are probably useful only when combined with the '!'
+  operator). The '!' operator will cause the I/O-layer to _not_ ignore a device.
+  The command line is parsed from left to right.
 
   For example, 
 	cio_ignore=0.0.0023-0.0.0042,0.0.4711
diff --git a/drivers/s390/cio/blacklist.c b/drivers/s390/cio/blacklist.c
index 706eb9b..a9fe3de 100644
--- a/drivers/s390/cio/blacklist.c
+++ b/drivers/s390/cio/blacklist.c
@@ -189,6 +189,13 @@
 			to_cssid = from_cssid;
 			to_ssid = from_ssid;
 			to = from;
+		} else if (strcmp(parm, "condev") == 0) {
+			if (console_devno == -1)
+				continue;
+
+			from_cssid = to_cssid = 0;
+			from_ssid = to_ssid = 0;
+			from = to = console_devno;
 		} else {
 			rc = parse_busid(strsep(&parm, "-"), &from_cssid,
 					 &from_ssid, &from, msgtrigger);