aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Ott <sebott@linux.vnet.ibm.com>2013-04-30 11:16:17 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2013-05-02 09:50:20 -0400
commit0e6c83d18759e282fb4cfc19478a4217923421b3 (patch)
tree465961a27c8ce1ffadbb4f8038657d504c9cd406
parent12d8471315e01f0663a45fa5b4ae2fc0f38d1dea (diff)
s390/cio: add ipldev keyword to cio_ignore
Provide an 'ipldev' keyword to cio_ignore to (un)ignore the CCW or FCP based boot 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>
-rw-r--r--Documentation/s390/CommonIO13
-rw-r--r--drivers/s390/cio/blacklist.c21
2 files changed, 26 insertions, 8 deletions
diff --git a/Documentation/s390/CommonIO b/Documentation/s390/CommonIO
index d378cba66456..d90a5ddb2b07 100644
--- a/Documentation/s390/CommonIO
+++ b/Documentation/s390/CommonIO
@@ -8,9 +8,9 @@ Command line parameters
8 8
9 Enable logging of debug information in case of ccw device timeouts. 9 Enable logging of debug information in case of ccw device timeouts.
10 10
11* cio_ignore = {all} | 11* cio_ignore = device[,device[,..]]
12 {<device> | <range of devices>} | 12
13 {!<device> | !<range of devices>} 13 device := {all | [!]ipldev | [!]<devno> | [!]<devno>-<devno>}
14 14
15 The given devices will be ignored by the common I/O-layer; no detection 15 The given devices will be ignored by the common I/O-layer; no detection
16 and device sensing will be done on any of those devices. The subchannel to 16 and device sensing will be done on any of those devices. The subchannel to
@@ -24,9 +24,10 @@ Command line parameters
24 device numbers (0xabcd or abcd, for 2.4 backward compatibility). If you 24 device numbers (0xabcd or abcd, for 2.4 backward compatibility). If you
25 give a device number 0xabcd, it will be interpreted as 0.0.abcd. 25 give a device number 0xabcd, it will be interpreted as 0.0.abcd.
26 26
27 You can use the 'all' keyword to ignore all devices. 27 You can use the 'all' keyword to ignore all devices. The 'ipldev' keyword can
28 The '!' operator will cause the I/O-layer to _not_ ignore a device. 28 be used to refer to the CCW based boot device (this is probably useful only
29 The command line is parsed from left to right. 29 when combined with the '!' operator). The '!' operator will cause the I/O-layer
30 to _not_ ignore a device. The command line is parsed from left to right.
30 31
31 For example, 32 For example,
32 cio_ignore=0.0.0023-0.0.0042,0.0.4711 33 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 2d2a966a3b39..706eb9b6513f 100644
--- a/drivers/s390/cio/blacklist.c
+++ b/drivers/s390/cio/blacklist.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * S/390 common I/O routines -- blacklisting of specific devices 2 * S/390 common I/O routines -- blacklisting of specific devices
3 * 3 *
4 * Copyright IBM Corp. 1999, 2002 4 * Copyright IBM Corp. 1999, 2013
5 * Author(s): Ingo Adlung (adlung@de.ibm.com) 5 * Author(s): Ingo Adlung (adlung@de.ibm.com)
6 * Cornelia Huck (cornelia.huck@de.ibm.com) 6 * Cornelia Huck (cornelia.huck@de.ibm.com)
7 * Arnd Bergmann (arndb@de.ibm.com) 7 * Arnd Bergmann (arndb@de.ibm.com)
@@ -17,8 +17,9 @@
17#include <linux/ctype.h> 17#include <linux/ctype.h>
18#include <linux/device.h> 18#include <linux/device.h>
19 19
20#include <asm/cio.h>
21#include <asm/uaccess.h> 20#include <asm/uaccess.h>
21#include <asm/cio.h>
22#include <asm/ipl.h>
22 23
23#include "blacklist.h" 24#include "blacklist.h"
24#include "cio.h" 25#include "cio.h"
@@ -172,6 +173,22 @@ static int blacklist_parse_parameters(char *str, range_action action,
172 to_cssid = __MAX_CSSID; 173 to_cssid = __MAX_CSSID;
173 to_ssid = __MAX_SSID; 174 to_ssid = __MAX_SSID;
174 to = __MAX_SUBCHANNEL; 175 to = __MAX_SUBCHANNEL;
176 } else if (strcmp(parm, "ipldev") == 0) {
177 if (ipl_info.type == IPL_TYPE_CCW) {
178 from_cssid = 0;
179 from_ssid = ipl_info.data.ccw.dev_id.ssid;
180 from = ipl_info.data.ccw.dev_id.devno;
181 } else if (ipl_info.type == IPL_TYPE_FCP ||
182 ipl_info.type == IPL_TYPE_FCP_DUMP) {
183 from_cssid = 0;
184 from_ssid = ipl_info.data.fcp.dev_id.ssid;
185 from = ipl_info.data.fcp.dev_id.devno;
186 } else {
187 continue;
188 }
189 to_cssid = from_cssid;
190 to_ssid = from_ssid;
191 to = from;
175 } else { 192 } else {
176 rc = parse_busid(strsep(&parm, "-"), &from_cssid, 193 rc = parse_busid(strsep(&parm, "-"), &from_cssid,
177 &from_ssid, &from, msgtrigger); 194 &from_ssid, &from, msgtrigger);