s390/spinlock: disabled compare-and-delay by default
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 19 Feb 2015 16:53:16 +0000 (17:53 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 19 Feb 2015 17:05:38 +0000 (18:05 +0100)
Until we have hard performance data about the effects of CAD in the
spinlock loop disable the instruction by default.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/early.c

index 70a3294509018e33c49d6b0a383c841d79d2f3af..4427ab7ac23af3e0450e4875b36b83ead687c36d 100644 (file)
@@ -393,17 +393,19 @@ static __init void detect_machine_facilities(void)
                S390_lowcore.machine_flags |= MACHINE_FLAG_TLB_LC;
        if (test_facility(129))
                S390_lowcore.machine_flags |= MACHINE_FLAG_VX;
-       if (test_facility(128))
-               S390_lowcore.machine_flags |= MACHINE_FLAG_CAD;
 #endif
 }
 
-static int __init nocad_setup(char *str)
+static int __init cad_setup(char *str)
 {
-       S390_lowcore.machine_flags &= ~MACHINE_FLAG_CAD;
+       int val;
+
+       get_option(&str, &val);
+       if (val && test_facility(128))
+               S390_lowcore.machine_flags |= MACHINE_FLAG_CAD;
        return 0;
 }
-early_param("nocad", nocad_setup);
+early_param("cad", cad_setup);
 
 static int __init cad_init(void)
 {