]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/s390/cio/blacklist.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
[karo-tx-linux.git] / drivers / s390 / cio / blacklist.c
index 2d2a966a3b39cdc0cf267b060d1f64285ef4ee84..a9fe3de2dec17fcce1717d99389468dfc46f4f98 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *   S/390 common I/O routines -- blacklisting of specific devices
  *
- *    Copyright IBM Corp. 1999, 2002
+ *    Copyright IBM Corp. 1999, 2013
  *    Author(s): Ingo Adlung (adlung@de.ibm.com)
  *              Cornelia Huck (cornelia.huck@de.ibm.com)
  *              Arnd Bergmann (arndb@de.ibm.com)
@@ -17,8 +17,9 @@
 #include <linux/ctype.h>
 #include <linux/device.h>
 
-#include <asm/cio.h>
 #include <asm/uaccess.h>
+#include <asm/cio.h>
+#include <asm/ipl.h>
 
 #include "blacklist.h"
 #include "cio.h"
@@ -172,6 +173,29 @@ static int blacklist_parse_parameters(char *str, range_action action,
                        to_cssid = __MAX_CSSID;
                        to_ssid = __MAX_SSID;
                        to = __MAX_SUBCHANNEL;
+               } else if (strcmp(parm, "ipldev") == 0) {
+                       if (ipl_info.type == IPL_TYPE_CCW) {
+                               from_cssid = 0;
+                               from_ssid = ipl_info.data.ccw.dev_id.ssid;
+                               from = ipl_info.data.ccw.dev_id.devno;
+                       } else if (ipl_info.type == IPL_TYPE_FCP ||
+                                  ipl_info.type == IPL_TYPE_FCP_DUMP) {
+                               from_cssid = 0;
+                               from_ssid = ipl_info.data.fcp.dev_id.ssid;
+                               from = ipl_info.data.fcp.dev_id.devno;
+                       } else {
+                               continue;
+                       }
+                       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);