[S390] xpram module parameter parsing - take 2.
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Mon, 17 Jul 2006 14:09:23 +0000 (16:09 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Mon, 17 Jul 2006 14:09:23 +0000 (16:09 +0200)
Don't use memparse since the default size modifier is 'k'.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/block/xpram.c

index 4cd879cb9bdd86fa1c5b3031a13bdc2e26a21928..1140302ff11d852de1c1d20ba29069db84593dd6 100644 (file)
@@ -304,6 +304,7 @@ static int __init xpram_setup_sizes(unsigned long pages)
 {
        unsigned long mem_needed;
        unsigned long mem_auto;
+       unsigned long long size;
        int mem_auto_no;
        int i;
 
@@ -321,9 +322,19 @@ static int __init xpram_setup_sizes(unsigned long pages)
        mem_needed = 0;
        mem_auto_no = 0;
        for (i = 0; i < xpram_devs; i++) {
-               if (sizes[i])
-                       xpram_sizes[i] =
-                               (memparse(sizes[i], &sizes[i]) + 3) & -4UL;
+               if (sizes[i]) {
+                       size = simple_strtoull(sizes[i], &sizes[i], 0);
+                       switch (sizes[i][0]) {
+                       case 'g':
+                       case 'G':
+                               size <<= 20;
+                               break;
+                       case 'm':
+                       case 'M':
+                               size <<= 10;
+                       }
+                       xpram_sizes[i] = (size + 3) & -4UL;
+               }
                if (xpram_sizes[i])
                        mem_needed += xpram_sizes[i];
                else