diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
commit | c71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch) | |
tree | ecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /drivers/s390/crypto/zcrypt_pcixcc.c | |
parent | ea53c912f8a86a8567697115b6a0d8152beee5c8 (diff) | |
parent | 6a00f206debf8a5c8899055726ad127dbeeed098 (diff) |
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts:
litmus/sched_cedf.c
Diffstat (limited to 'drivers/s390/crypto/zcrypt_pcixcc.c')
-rw-r--r-- | drivers/s390/crypto/zcrypt_pcixcc.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/drivers/s390/crypto/zcrypt_pcixcc.c b/drivers/s390/crypto/zcrypt_pcixcc.c index 510fab4577d4..4f85eb725f4f 100644 --- a/drivers/s390/crypto/zcrypt_pcixcc.c +++ b/drivers/s390/crypto/zcrypt_pcixcc.c | |||
@@ -45,12 +45,12 @@ | |||
45 | #define PCIXCC_MIN_MOD_SIZE_OLD 64 /* 512 bits */ | 45 | #define PCIXCC_MIN_MOD_SIZE_OLD 64 /* 512 bits */ |
46 | #define PCIXCC_MAX_MOD_SIZE 256 /* 2048 bits */ | 46 | #define PCIXCC_MAX_MOD_SIZE 256 /* 2048 bits */ |
47 | #define CEX3C_MIN_MOD_SIZE PCIXCC_MIN_MOD_SIZE | 47 | #define CEX3C_MIN_MOD_SIZE PCIXCC_MIN_MOD_SIZE |
48 | #define CEX3C_MAX_MOD_SIZE PCIXCC_MAX_MOD_SIZE | 48 | #define CEX3C_MAX_MOD_SIZE 512 /* 4096 bits */ |
49 | 49 | ||
50 | #define PCIXCC_MCL2_SPEED_RATING 7870 | 50 | #define PCIXCC_MCL2_SPEED_RATING 7870 |
51 | #define PCIXCC_MCL3_SPEED_RATING 7870 | 51 | #define PCIXCC_MCL3_SPEED_RATING 7870 |
52 | #define CEX2C_SPEED_RATING 7000 | 52 | #define CEX2C_SPEED_RATING 7000 |
53 | #define CEX3C_SPEED_RATING 6500 /* FIXME: needs finetuning */ | 53 | #define CEX3C_SPEED_RATING 6500 |
54 | 54 | ||
55 | #define PCIXCC_MAX_ICA_MESSAGE_SIZE 0x77c /* max size type6 v2 crt message */ | 55 | #define PCIXCC_MAX_ICA_MESSAGE_SIZE 0x77c /* max size type6 v2 crt message */ |
56 | #define PCIXCC_MAX_ICA_RESPONSE_SIZE 0x77c /* max size type86 v2 reply */ | 56 | #define PCIXCC_MAX_ICA_RESPONSE_SIZE 0x77c /* max size type86 v2 reply */ |
@@ -567,6 +567,15 @@ static int convert_response_ica(struct zcrypt_device *zdev, | |||
567 | case TYPE88_RSP_CODE: | 567 | case TYPE88_RSP_CODE: |
568 | return convert_error(zdev, reply); | 568 | return convert_error(zdev, reply); |
569 | case TYPE86_RSP_CODE: | 569 | case TYPE86_RSP_CODE: |
570 | if (msg->cprbx.ccp_rtcode && | ||
571 | (msg->cprbx.ccp_rscode == 0x14f) && | ||
572 | (outputdatalength > 256)) { | ||
573 | if (zdev->max_exp_bit_length <= 17) { | ||
574 | zdev->max_exp_bit_length = 17; | ||
575 | return -EAGAIN; | ||
576 | } else | ||
577 | return -EINVAL; | ||
578 | } | ||
570 | if (msg->hdr.reply_code) | 579 | if (msg->hdr.reply_code) |
571 | return convert_error(zdev, reply); | 580 | return convert_error(zdev, reply); |
572 | if (msg->cprbx.cprb_ver_id == 0x02) | 581 | if (msg->cprbx.cprb_ver_id == 0x02) |
@@ -1052,11 +1061,13 @@ static int zcrypt_pcixcc_probe(struct ap_device *ap_dev) | |||
1052 | zdev->speed_rating = PCIXCC_MCL2_SPEED_RATING; | 1061 | zdev->speed_rating = PCIXCC_MCL2_SPEED_RATING; |
1053 | zdev->min_mod_size = PCIXCC_MIN_MOD_SIZE_OLD; | 1062 | zdev->min_mod_size = PCIXCC_MIN_MOD_SIZE_OLD; |
1054 | zdev->max_mod_size = PCIXCC_MAX_MOD_SIZE; | 1063 | zdev->max_mod_size = PCIXCC_MAX_MOD_SIZE; |
1064 | zdev->max_exp_bit_length = PCIXCC_MAX_MOD_SIZE; | ||
1055 | } else { | 1065 | } else { |
1056 | zdev->type_string = "PCIXCC_MCL3"; | 1066 | zdev->type_string = "PCIXCC_MCL3"; |
1057 | zdev->speed_rating = PCIXCC_MCL3_SPEED_RATING; | 1067 | zdev->speed_rating = PCIXCC_MCL3_SPEED_RATING; |
1058 | zdev->min_mod_size = PCIXCC_MIN_MOD_SIZE; | 1068 | zdev->min_mod_size = PCIXCC_MIN_MOD_SIZE; |
1059 | zdev->max_mod_size = PCIXCC_MAX_MOD_SIZE; | 1069 | zdev->max_mod_size = PCIXCC_MAX_MOD_SIZE; |
1070 | zdev->max_exp_bit_length = PCIXCC_MAX_MOD_SIZE; | ||
1060 | } | 1071 | } |
1061 | break; | 1072 | break; |
1062 | case AP_DEVICE_TYPE_CEX2C: | 1073 | case AP_DEVICE_TYPE_CEX2C: |
@@ -1065,6 +1076,7 @@ static int zcrypt_pcixcc_probe(struct ap_device *ap_dev) | |||
1065 | zdev->speed_rating = CEX2C_SPEED_RATING; | 1076 | zdev->speed_rating = CEX2C_SPEED_RATING; |
1066 | zdev->min_mod_size = PCIXCC_MIN_MOD_SIZE; | 1077 | zdev->min_mod_size = PCIXCC_MIN_MOD_SIZE; |
1067 | zdev->max_mod_size = PCIXCC_MAX_MOD_SIZE; | 1078 | zdev->max_mod_size = PCIXCC_MAX_MOD_SIZE; |
1079 | zdev->max_exp_bit_length = PCIXCC_MAX_MOD_SIZE; | ||
1068 | break; | 1080 | break; |
1069 | case AP_DEVICE_TYPE_CEX3C: | 1081 | case AP_DEVICE_TYPE_CEX3C: |
1070 | zdev->user_space_type = ZCRYPT_CEX3C; | 1082 | zdev->user_space_type = ZCRYPT_CEX3C; |
@@ -1072,6 +1084,7 @@ static int zcrypt_pcixcc_probe(struct ap_device *ap_dev) | |||
1072 | zdev->speed_rating = CEX3C_SPEED_RATING; | 1084 | zdev->speed_rating = CEX3C_SPEED_RATING; |
1073 | zdev->min_mod_size = CEX3C_MIN_MOD_SIZE; | 1085 | zdev->min_mod_size = CEX3C_MIN_MOD_SIZE; |
1074 | zdev->max_mod_size = CEX3C_MAX_MOD_SIZE; | 1086 | zdev->max_mod_size = CEX3C_MAX_MOD_SIZE; |
1087 | zdev->max_exp_bit_length = CEX3C_MAX_MOD_SIZE; | ||
1075 | break; | 1088 | break; |
1076 | default: | 1089 | default: |
1077 | goto out_free; | 1090 | goto out_free; |