[S390] iucv cr0 enablement bit
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Sun, 24 Jul 2011 08:48:28 +0000 (10:48 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Sun, 24 Jul 2011 08:48:22 +0000 (10:48 +0200)
Do not set the cr0 enablement bit for iucv by default in head[31|64].S,
move the enablement to iucv_init in the iucv base layer.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/head31.S
arch/s390/kernel/head64.S
net/iucv/iucv.c

index dd0d1e2..f21954b 100644 (file)
@@ -45,7 +45,7 @@ ENTRY(startup_continue)
                                        # virtual and never return ...
        .align  8
 .Lentry:.long  0x00080000,0x80000000 + _stext
-.Lctl: .long   0x04b50002              # cr0: various things
+.Lctl: .long   0x04b50000              # cr0: various things
        .long   0                       # cr1: primary space segment table
        .long   .Lduct                  # cr2: dispatchable unit control table
        .long   0                       # cr3: instruction authorization
index 1886028..b6d3013 100644 (file)
@@ -46,7 +46,7 @@ ENTRY(startup_continue)
        .align  16
 .LPG1:
 .Lentry:.quad  0x0000000180000000,_stext
-.Lctl: .quad   0x04350002              # cr0: various things
+.Lctl: .quad   0x04350000              # cr0: various things
        .quad   0                       # cr1: primary space segment table
        .quad   .Lduct                  # cr2: dispatchable unit control table
        .quad   0                       # cr3: instruction authorization
index 7f91249..f2b7138 100644 (file)
@@ -1988,12 +1988,13 @@ static int __init iucv_init(void)
                rc = -EPROTONOSUPPORT;
                goto out;
        }
+       ctl_set_bit(0, 1);
        rc = iucv_query_maxconn();
        if (rc)
-               goto out;
+               goto out_ctl;
        rc = register_external_interrupt(0x4000, iucv_external_interrupt);
        if (rc)
-               goto out;
+               goto out_ctl;
        iucv_root = root_device_register("iucv");
        if (IS_ERR(iucv_root)) {
                rc = PTR_ERR(iucv_root);
@@ -2055,6 +2056,8 @@ out_free:
        root_device_unregister(iucv_root);
 out_int:
        unregister_external_interrupt(0x4000, iucv_external_interrupt);
+out_ctl:
+       ctl_clear_bit(0, 1);
 out:
        return rc;
 }