diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2011-07-24 08:48:28 (GMT) |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2011-07-24 08:48:22 (GMT) |
commit | 5beab99100335936f4d845f9ae2f0e25796f2584 (patch) | |
tree | 001c61d9a2250caf3081aea8ab19590fb8fe6f1b | |
parent | 89c9b66b104549a8698e412bf6f4140c1d0786fb (diff) | |
download | linux-5beab99100335936f4d845f9ae2f0e25796f2584.tar.xz |
[S390] iucv cr0 enablement bit
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>
-rw-r--r-- | arch/s390/kernel/head31.S | 2 | ||||
-rw-r--r-- | arch/s390/kernel/head64.S | 2 | ||||
-rw-r--r-- | net/iucv/iucv.c | 7 |
3 files changed, 7 insertions, 4 deletions
diff --git a/arch/s390/kernel/head31.S b/arch/s390/kernel/head31.S index dd0d1e2..f21954b 100644 --- a/arch/s390/kernel/head31.S +++ b/arch/s390/kernel/head31.S @@ -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 diff --git a/arch/s390/kernel/head64.S b/arch/s390/kernel/head64.S index 1886028..b6d3013 100644 --- a/arch/s390/kernel/head64.S +++ b/arch/s390/kernel/head64.S @@ -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 diff --git a/net/iucv/iucv.c b/net/iucv/iucv.c index 7f91249..f2b7138 100644 --- a/net/iucv/iucv.c +++ b/net/iucv/iucv.c @@ -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; } |