diff options
author | Sebastian Ott <sebott@linux.vnet.ibm.com> | 2013-04-30 11:16:17 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2013-05-02 09:50:20 -0400 |
commit | 0e6c83d18759e282fb4cfc19478a4217923421b3 (patch) | |
tree | 465961a27c8ce1ffadbb4f8038657d504c9cd406 | |
parent | 12d8471315e01f0663a45fa5b4ae2fc0f38d1dea (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/CommonIO | 13 | ||||
-rw-r--r-- | drivers/s390/cio/blacklist.c | 21 |
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); |