diff options
author | Jan Glauber <jang@linux.vnet.ibm.com> | 2008-07-12 15:42:11 +0800 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2008-07-12 15:42:11 +0800 |
commit | a72f0dbfd93159acdf2467e5a022b28f763061f6 (patch) | |
tree | 62bb51c0ab16dbd7df39c34026c2f0a66ce3cd0c | |
parent | 3952f17ed63434cc2154c3765ff97e1d4adab042 (diff) | |
download | op-kernel-dev-a72f0dbfd93159acdf2467e5a022b28f763061f6.zip op-kernel-dev-a72f0dbfd93159acdf2467e5a022b28f763061f6.tar.gz |
crypto: s390 - Respect STFL bit
Bevore issuing any s390 crypto operation check whether the
CPACF facility is enabled in the facility list. That way a
virtualization layer can prevent usage of the CPACF facility
regardless of the availability of the crypto instructions.
Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r-- | arch/s390/crypto/crypt_s390.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/s390/crypto/crypt_s390.h b/arch/s390/crypto/crypt_s390.h index 9992f95..0ef9829 100644 --- a/arch/s390/crypto/crypt_s390.h +++ b/arch/s390/crypto/crypt_s390.h @@ -296,6 +296,10 @@ static inline int crypt_s390_func_available(int func) unsigned char status[16]; int ret; + /* check if CPACF facility (bit 17) is available */ + if (!(stfl() & 1ULL << (31 - 17))) + return 0; + switch (func & CRYPT_S390_OP_MASK) { case CRYPT_S390_KM: ret = crypt_s390_km(KM_QUERY, &status, NULL, NULL, 0); |