aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/block/dasd_devmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/block/dasd_devmap.c')
-rw-r--r--drivers/s390/block/dasd_devmap.c43
1 files changed, 25 insertions, 18 deletions
diff --git a/drivers/s390/block/dasd_devmap.c b/drivers/s390/block/dasd_devmap.c
index 34339902efb9..e77666c8e6c0 100644
--- a/drivers/s390/block/dasd_devmap.c
+++ b/drivers/s390/block/dasd_devmap.c
@@ -13,6 +13,8 @@
13 * 13 *
14 */ 14 */
15 15
16#define KMSG_COMPONENT "dasd"
17
16#include <linux/ctype.h> 18#include <linux/ctype.h>
17#include <linux/init.h> 19#include <linux/init.h>
18#include <linux/module.h> 20#include <linux/module.h>
@@ -67,6 +69,8 @@ int dasd_probeonly = 0; /* is true, when probeonly mode is active */
67int dasd_autodetect = 0; /* is true, when autodetection is active */ 69int dasd_autodetect = 0; /* is true, when autodetection is active */
68int dasd_nopav = 0; /* is true, when PAV is disabled */ 70int dasd_nopav = 0; /* is true, when PAV is disabled */
69EXPORT_SYMBOL_GPL(dasd_nopav); 71EXPORT_SYMBOL_GPL(dasd_nopav);
72int dasd_nofcx; /* disable High Performance Ficon */
73EXPORT_SYMBOL_GPL(dasd_nofcx);
70 74
71/* 75/*
72 * char *dasd[] is intended to hold the ranges supplied by the dasd= statement 76 * char *dasd[] is intended to hold the ranges supplied by the dasd= statement
@@ -125,6 +129,7 @@ __setup ("dasd=", dasd_call_setup);
125 * Read a device busid/devno from a string. 129 * Read a device busid/devno from a string.
126 */ 130 */
127static int 131static int
132
128dasd_busid(char **str, int *id0, int *id1, int *devno) 133dasd_busid(char **str, int *id0, int *id1, int *devno)
129{ 134{
130 int val, old_style; 135 int val, old_style;
@@ -132,8 +137,7 @@ dasd_busid(char **str, int *id0, int *id1, int *devno)
132 /* Interpret ipldev busid */ 137 /* Interpret ipldev busid */
133 if (strncmp(DASD_IPLDEV, *str, strlen(DASD_IPLDEV)) == 0) { 138 if (strncmp(DASD_IPLDEV, *str, strlen(DASD_IPLDEV)) == 0) {
134 if (ipl_info.type != IPL_TYPE_CCW) { 139 if (ipl_info.type != IPL_TYPE_CCW) {
135 MESSAGE(KERN_ERR, "%s", "ipl device is not a ccw " 140 pr_err("The IPL device is not a CCW device\n");
136 "device");
137 return -EINVAL; 141 return -EINVAL;
138 } 142 }
139 *id0 = 0; 143 *id0 = 0;
@@ -209,9 +213,8 @@ dasd_feature_list(char *str, char **endp)
209 else if (len == 8 && !strncmp(str, "failfast", 8)) 213 else if (len == 8 && !strncmp(str, "failfast", 8))
210 features |= DASD_FEATURE_FAILFAST; 214 features |= DASD_FEATURE_FAILFAST;
211 else { 215 else {
212 MESSAGE(KERN_WARNING, 216 pr_warning("%*s is not a supported device option\n",
213 "unsupported feature: %*s, " 217 len, str);
214 "ignoring setting", len, str);
215 rc = -EINVAL; 218 rc = -EINVAL;
216 } 219 }
217 str += len; 220 str += len;
@@ -220,8 +223,8 @@ dasd_feature_list(char *str, char **endp)
220 str++; 223 str++;
221 } 224 }
222 if (*str != ')') { 225 if (*str != ')') {
223 MESSAGE(KERN_WARNING, "%s", 226 pr_warning("A closing parenthesis ')' is missing in the "
224 "missing ')' in dasd parameter string\n"); 227 "dasd= parameter\n");
225 rc = -EINVAL; 228 rc = -EINVAL;
226 } else 229 } else
227 str++; 230 str++;
@@ -253,25 +256,29 @@ dasd_parse_keyword( char *parsestring ) {
253 } 256 }
254 if (strncmp("autodetect", parsestring, length) == 0) { 257 if (strncmp("autodetect", parsestring, length) == 0) {
255 dasd_autodetect = 1; 258 dasd_autodetect = 1;
256 MESSAGE (KERN_INFO, "%s", 259 pr_info("The autodetection mode has been activated\n");
257 "turning to autodetection mode");
258 return residual_str; 260 return residual_str;
259 } 261 }
260 if (strncmp("probeonly", parsestring, length) == 0) { 262 if (strncmp("probeonly", parsestring, length) == 0) {
261 dasd_probeonly = 1; 263 dasd_probeonly = 1;
262 MESSAGE(KERN_INFO, "%s", 264 pr_info("The probeonly mode has been activated\n");
263 "turning to probeonly mode");
264 return residual_str; 265 return residual_str;
265 } 266 }
266 if (strncmp("nopav", parsestring, length) == 0) { 267 if (strncmp("nopav", parsestring, length) == 0) {
267 if (MACHINE_IS_VM) 268 if (MACHINE_IS_VM)
268 MESSAGE(KERN_INFO, "%s", "'nopav' not supported on VM"); 269 pr_info("'nopav' is not supported on z/VM\n");
269 else { 270 else {
270 dasd_nopav = 1; 271 dasd_nopav = 1;
271 MESSAGE(KERN_INFO, "%s", "disable PAV mode"); 272 pr_info("PAV support has be deactivated\n");
272 } 273 }
273 return residual_str; 274 return residual_str;
274 } 275 }
276 if (strncmp("nofcx", parsestring, length) == 0) {
277 dasd_nofcx = 1;
278 pr_info("High Performance FICON support has been "
279 "deactivated\n");
280 return residual_str;
281 }
275 if (strncmp("fixedbuffers", parsestring, length) == 0) { 282 if (strncmp("fixedbuffers", parsestring, length) == 0) {
276 if (dasd_page_cache) 283 if (dasd_page_cache)
277 return residual_str; 284 return residual_str;
@@ -280,10 +287,10 @@ dasd_parse_keyword( char *parsestring ) {
280 PAGE_SIZE, SLAB_CACHE_DMA, 287 PAGE_SIZE, SLAB_CACHE_DMA,
281 NULL); 288 NULL);
282 if (!dasd_page_cache) 289 if (!dasd_page_cache)
283 MESSAGE(KERN_WARNING, "%s", "Failed to create slab, " 290 DBF_EVENT(DBF_WARNING, "%s", "Failed to create slab, "
284 "fixed buffer mode disabled."); 291 "fixed buffer mode disabled.");
285 else 292 else
286 MESSAGE (KERN_INFO, "%s", 293 DBF_EVENT(DBF_INFO, "%s",
287 "turning on fixed buffer mode"); 294 "turning on fixed buffer mode");
288 return residual_str; 295 return residual_str;
289 } 296 }
@@ -321,7 +328,7 @@ dasd_parse_range( char *parsestring ) {
321 (from_id0 != to_id0 || from_id1 != to_id1 || from > to)) 328 (from_id0 != to_id0 || from_id1 != to_id1 || from > to))
322 rc = -EINVAL; 329 rc = -EINVAL;
323 if (rc) { 330 if (rc) {
324 MESSAGE(KERN_ERR, "Invalid device range %s", parsestring); 331 pr_err("%s is not a valid device range\n", parsestring);
325 return ERR_PTR(rc); 332 return ERR_PTR(rc);
326 } 333 }
327 features = dasd_feature_list(str, &str); 334 features = dasd_feature_list(str, &str);
@@ -340,8 +347,8 @@ dasd_parse_range( char *parsestring ) {
340 return str + 1; 347 return str + 1;
341 if (*str == '\0') 348 if (*str == '\0')
342 return str; 349 return str;
343 MESSAGE(KERN_WARNING, 350 pr_warning("The dasd= parameter value %s has an invalid ending\n",
344 "junk at end of dasd parameter string: %s\n", str); 351 str);
345 return ERR_PTR(-EINVAL); 352 return ERR_PTR(-EINVAL);
346} 353}
347 354