diff options
Diffstat (limited to 'drivers/s390/block')
-rw-r--r-- | drivers/s390/block/dasd_devmap.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/s390/block/dasd_devmap.c b/drivers/s390/block/dasd_devmap.c index 66958b8d7c45..6a89cefe99bb 100644 --- a/drivers/s390/block/dasd_devmap.c +++ b/drivers/s390/block/dasd_devmap.c | |||
@@ -19,6 +19,7 @@ | |||
19 | 19 | ||
20 | #include <asm/debug.h> | 20 | #include <asm/debug.h> |
21 | #include <asm/uaccess.h> | 21 | #include <asm/uaccess.h> |
22 | #include <asm/ipl.h> | ||
22 | 23 | ||
23 | /* This is ugly... */ | 24 | /* This is ugly... */ |
24 | #define PRINTK_HEADER "dasd_devmap:" | 25 | #define PRINTK_HEADER "dasd_devmap:" |
@@ -133,6 +134,8 @@ dasd_call_setup(char *str) | |||
133 | __setup ("dasd=", dasd_call_setup); | 134 | __setup ("dasd=", dasd_call_setup); |
134 | #endif /* #ifndef MODULE */ | 135 | #endif /* #ifndef MODULE */ |
135 | 136 | ||
137 | #define DASD_IPLDEV "ipldev" | ||
138 | |||
136 | /* | 139 | /* |
137 | * Read a device busid/devno from a string. | 140 | * Read a device busid/devno from a string. |
138 | */ | 141 | */ |
@@ -141,6 +144,20 @@ dasd_busid(char **str, int *id0, int *id1, int *devno) | |||
141 | { | 144 | { |
142 | int val, old_style; | 145 | int val, old_style; |
143 | 146 | ||
147 | /* Interpret ipldev busid */ | ||
148 | if (strncmp(DASD_IPLDEV, *str, strlen(DASD_IPLDEV)) == 0) { | ||
149 | if (ipl_info.type != IPL_TYPE_CCW) { | ||
150 | MESSAGE(KERN_ERR, "%s", "ipl device is not a ccw " | ||
151 | "device"); | ||
152 | return -EINVAL; | ||
153 | } | ||
154 | *id0 = 0; | ||
155 | *id1 = ipl_info.data.ccw.dev_id.ssid; | ||
156 | *devno = ipl_info.data.ccw.dev_id.devno; | ||
157 | *str += strlen(DASD_IPLDEV); | ||
158 | |||
159 | return 0; | ||
160 | } | ||
144 | /* check for leading '0x' */ | 161 | /* check for leading '0x' */ |
145 | old_style = 0; | 162 | old_style = 0; |
146 | if ((*str)[0] == '0' && (*str)[1] == 'x') { | 163 | if ((*str)[0] == '0' && (*str)[1] == 'x') { |