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>
This commit is contained in:
Sebastian Ott 2013-04-30 17:16:17 +02:00 коммит произвёл Martin Schwidefsky
Родитель 12d8471315
Коммит 0e6c83d187
2 изменённых файлов: 26 добавлений и 8 удалений

Просмотреть файл

@ -8,9 +8,9 @@ Command line parameters
Enable logging of debug information in case of ccw device timeouts.
* cio_ignore = {all} |
{<device> | <range of devices>} |
{!<device> | !<range of devices>}
* cio_ignore = device[,device[,..]]
device := {all | [!]ipldev | [!]<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,9 +24,10 @@ Command line parameters
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 '!' 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' 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.
For example,
cio_ignore=0.0.0023-0.0.0042,0.0.4711

Просмотреть файл

@ -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,22 @@ 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 {
rc = parse_busid(strsep(&parm, "-"), &from_cssid,
&from_ssid, &from, msgtrigger);