diff options
author | Jan Glauber <jang@linux.vnet.ibm.com> | 2011-11-14 11:19:07 +0100 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2011-11-14 11:19:09 +0100 |
commit | 6ed54387dc470fc439cb154724a1ac81d251c126 (patch) | |
tree | 52c5c3bb66f38eae5cba19109cd5657d9526f4ea /arch/s390 | |
parent | [S390] avoid STCKF if running in ESA mode (diff) | |
download | linux-6ed54387dc470fc439cb154724a1ac81d251c126.tar.xz linux-6ed54387dc470fc439cb154724a1ac81d251c126.zip |
[S390] crypto: avoid MSA3 and MSA4 instructions in ESA mode
MSA3 and MSA4 instructions are only available under CONFIG_64BIT.
Bail out before using any of these instructions if the kernel is
running in 31 bit mode.
Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/crypto/crypt_s390.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/s390/crypto/crypt_s390.h b/arch/s390/crypto/crypt_s390.h index 49676771bd66..ffd1ac255f19 100644 --- a/arch/s390/crypto/crypt_s390.h +++ b/arch/s390/crypto/crypt_s390.h @@ -368,9 +368,12 @@ static inline int crypt_s390_func_available(int func, if (facility_mask & CRYPT_S390_MSA && !test_facility(17)) return 0; - if (facility_mask & CRYPT_S390_MSA3 && !test_facility(76)) + + if (facility_mask & CRYPT_S390_MSA3 && + (!test_facility(2) || !test_facility(76))) return 0; - if (facility_mask & CRYPT_S390_MSA4 && !test_facility(77)) + if (facility_mask & CRYPT_S390_MSA4 && + (!test_facility(2) || !test_facility(77))) return 0; switch (func & CRYPT_S390_OP_MASK) { |