Commit ee410de8 authored by Harald Freudenberger's avatar Harald Freudenberger Committed by Martin Schwidefsky

s390/zcrypt: zcrypt device driver cleanup

Some cleanup in the s390 zcrypt device driver:
- Removed fragments of pcixx crypto card code. This code
  can't be reached anymore because the hardware detection
  function does not recognize crypto cards < CEX2 since
  commit f56545430736 ("s390/zcrypt: Introduce QACT support
  for AP bus devices.")
- Rename of some files and driver names which where still
  reflecting pcixx support to cex2a/cex2c.
- Removed all the zcrypt version strings in the file headers.
  There is only one place left - the zcrypt.h header file is
  now the only place for zcrypt device driver version info.
- Zcrypt version pump up from 2.2.0 to 2.2.1.
Signed-off-by: default avatarHarald Freudenberger <freude@linux.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 78333d1f
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/* /*
* include/asm-s390/zcrypt.h * include/asm-s390/zcrypt.h
* *
* zcrypt 2.2.0 (user-visible header) * zcrypt 2.2.1 (user-visible header)
* *
* Copyright IBM Corp. 2001, 2018 * Copyright IBM Corp. 2001, 2018
* Author(s): Robert Burroughs * Author(s): Robert Burroughs
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
#define ZCRYPT_VERSION 2 #define ZCRYPT_VERSION 2
#define ZCRYPT_RELEASE 2 #define ZCRYPT_RELEASE 2
#define ZCRYPT_VARIANT 0 #define ZCRYPT_VARIANT 1
#include <linux/ioctl.h> #include <linux/ioctl.h>
#include <linux/compiler.h> #include <linux/compiler.h>
......
...@@ -10,7 +10,7 @@ zcrypt-objs := zcrypt_api.o zcrypt_card.o zcrypt_queue.o ...@@ -10,7 +10,7 @@ zcrypt-objs := zcrypt_api.o zcrypt_card.o zcrypt_queue.o
zcrypt-objs += zcrypt_msgtype6.o zcrypt_msgtype50.o zcrypt-objs += zcrypt_msgtype6.o zcrypt_msgtype50.o
obj-$(CONFIG_ZCRYPT) += zcrypt.o obj-$(CONFIG_ZCRYPT) += zcrypt.o
# adapter drivers depend on ap.o and zcrypt.o # adapter drivers depend on ap.o and zcrypt.o
obj-$(CONFIG_ZCRYPT) += zcrypt_pcixcc.o zcrypt_cex2a.o zcrypt_cex4.o obj-$(CONFIG_ZCRYPT) += zcrypt_cex2c.o zcrypt_cex2a.o zcrypt_cex4.o
# pkey kernel module # pkey kernel module
pkey-objs := pkey_api.o pkey-objs := pkey_api.o
......
// SPDX-License-Identifier: GPL-2.0+ // SPDX-License-Identifier: GPL-2.0+
/* /*
* zcrypt 2.2.0
*
* Copyright IBM Corp. 2001, 2018 * Copyright IBM Corp. 2001, 2018
* Author(s): Robert Burroughs * Author(s): Robert Burroughs
* Eric Rossman (edrossma@us.ibm.com) * Eric Rossman (edrossma@us.ibm.com)
......
/* SPDX-License-Identifier: GPL-2.0+ */ /* SPDX-License-Identifier: GPL-2.0+ */
/* /*
* zcrypt 2.1.0 * Copyright IBM Corp. 2001, 2018
*
* Copyright IBM Corp. 2001, 2012
* Author(s): Robert Burroughs * Author(s): Robert Burroughs
* Eric Rossman (edrossma@us.ibm.com) * Eric Rossman (edrossma@us.ibm.com)
* Cornelia Huck <cornelia.huck@de.ibm.com> * Cornelia Huck <cornelia.huck@de.ibm.com>
...@@ -22,17 +20,8 @@ ...@@ -22,17 +20,8 @@
#include "ap_bus.h" #include "ap_bus.h"
/** /**
* device type for an actual device is either PCICA, PCICC, PCIXCC_MCL2, * Supported device types
* PCIXCC_MCL3, CEX2C, or CEX2A
*
* NOTE: PCIXCC_MCL3 refers to a PCIXCC with May 2004 version of Licensed
* Internal Code (LIC) (EC J12220 level 29).
* PCIXCC_MCL2 refers to any LIC before this level.
*/ */
#define ZCRYPT_PCICA 1
#define ZCRYPT_PCICC 2
#define ZCRYPT_PCIXCC_MCL2 3
#define ZCRYPT_PCIXCC_MCL3 4
#define ZCRYPT_CEX2C 5 #define ZCRYPT_CEX2C 5
#define ZCRYPT_CEX2A 6 #define ZCRYPT_CEX2A 6
#define ZCRYPT_CEX3C 7 #define ZCRYPT_CEX3C 7
......
// SPDX-License-Identifier: GPL-2.0+ // SPDX-License-Identifier: GPL-2.0+
/* /*
* zcrypt 2.1.0
*
* Copyright IBM Corp. 2001, 2012 * Copyright IBM Corp. 2001, 2012
* Author(s): Robert Burroughs * Author(s): Robert Burroughs
* Eric Rossman (edrossma@us.ibm.com) * Eric Rossman (edrossma@us.ibm.com)
......
/* SPDX-License-Identifier: GPL-2.0+ */ /* SPDX-License-Identifier: GPL-2.0+ */
/* /*
* zcrypt 2.1.0
*
* Copyright IBM Corp. 2001, 2006 * Copyright IBM Corp. 2001, 2006
* Author(s): Robert Burroughs * Author(s): Robert Burroughs
* Eric Rossman (edrossma@us.ibm.com) * Eric Rossman (edrossma@us.ibm.com)
......
// SPDX-License-Identifier: GPL-2.0+ // SPDX-License-Identifier: GPL-2.0+
/* /*
* zcrypt 2.1.0
*
* Copyright IBM Corp. 2001, 2012 * Copyright IBM Corp. 2001, 2012
* Author(s): Robert Burroughs * Author(s): Robert Burroughs
* Eric Rossman (edrossma@us.ibm.com) * Eric Rossman (edrossma@us.ibm.com)
...@@ -43,8 +41,8 @@ ...@@ -43,8 +41,8 @@
#define CEX3A_CLEANUP_TIME CEX2A_CLEANUP_TIME #define CEX3A_CLEANUP_TIME CEX2A_CLEANUP_TIME
MODULE_AUTHOR("IBM Corporation"); MODULE_AUTHOR("IBM Corporation");
MODULE_DESCRIPTION("CEX2A Cryptographic Coprocessor device driver, " \ MODULE_DESCRIPTION("CEX2A/CEX3A Cryptographic Coprocessor device driver, " \
"Copyright IBM Corp. 2001, 2012"); "Copyright IBM Corp. 2001, 2018");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
static struct ap_device_id zcrypt_cex2a_card_ids[] = { static struct ap_device_id zcrypt_cex2a_card_ids[] = {
......
/* SPDX-License-Identifier: GPL-2.0+ */ /* SPDX-License-Identifier: GPL-2.0+ */
/* /*
* zcrypt 2.1.0
*
* Copyright IBM Corp. 2001, 2006 * Copyright IBM Corp. 2001, 2006
* Author(s): Robert Burroughs * Author(s): Robert Burroughs
* Eric Rossman (edrossma@us.ibm.com) * Eric Rossman (edrossma@us.ibm.com)
...@@ -14,7 +12,7 @@ ...@@ -14,7 +12,7 @@
#define _ZCRYPT_CEX2A_H_ #define _ZCRYPT_CEX2A_H_
/** /**
* The type 50 message family is associated with a CEX2A card. * The type 50 message family is associated with CEXxA cards.
* *
* The four members of the family are described below. * The four members of the family are described below.
* *
...@@ -111,7 +109,7 @@ struct type50_crb3_msg { ...@@ -111,7 +109,7 @@ struct type50_crb3_msg {
} __packed; } __packed;
/** /**
* The type 80 response family is associated with a CEX2A card. * The type 80 response family is associated with a CEXxA cards.
* *
* Note that all unsigned char arrays are right-justified and left-padded * Note that all unsigned char arrays are right-justified and left-padded
* with zeroes. * with zeroes.
......
// SPDX-License-Identifier: GPL-2.0+ // SPDX-License-Identifier: GPL-2.0+
/* /*
* zcrypt 2.1.0 * Copyright IBM Corp. 2001, 2018
*
* Copyright IBM Corp. 2001, 2012
* Author(s): Robert Burroughs * Author(s): Robert Burroughs
* Eric Rossman (edrossma@us.ibm.com) * Eric Rossman (edrossma@us.ibm.com)
* *
...@@ -25,39 +23,22 @@ ...@@ -25,39 +23,22 @@
#include "zcrypt_api.h" #include "zcrypt_api.h"
#include "zcrypt_error.h" #include "zcrypt_error.h"
#include "zcrypt_msgtype6.h" #include "zcrypt_msgtype6.h"
#include "zcrypt_pcixcc.h" #include "zcrypt_cex2c.h"
#include "zcrypt_cca_key.h" #include "zcrypt_cca_key.h"
#define PCIXCC_MIN_MOD_SIZE 16 /* 128 bits */ #define CEX2C_MIN_MOD_SIZE 16 /* 128 bits */
#define PCIXCC_MIN_MOD_SIZE_OLD 64 /* 512 bits */ #define CEX2C_MAX_MOD_SIZE 256 /* 2048 bits */
#define PCIXCC_MAX_MOD_SIZE 256 /* 2048 bits */ #define CEX3C_MIN_MOD_SIZE 16 /* 128 bits */
#define CEX3C_MIN_MOD_SIZE PCIXCC_MIN_MOD_SIZE
#define CEX3C_MAX_MOD_SIZE 512 /* 4096 bits */ #define CEX3C_MAX_MOD_SIZE 512 /* 4096 bits */
#define CEX2C_MAX_XCRB_MESSAGE_SIZE (12*1024)
#define PCIXCC_MAX_ICA_MESSAGE_SIZE 0x77c /* max size type6 v2 crt message */ #define CEX2C_CLEANUP_TIME (15*HZ)
#define PCIXCC_MAX_ICA_RESPONSE_SIZE 0x77c /* max size type86 v2 reply */
#define PCIXCC_MAX_XCRB_MESSAGE_SIZE (12*1024)
#define PCIXCC_CLEANUP_TIME (15*HZ)
#define CEIL4(x) ((((x)+3)/4)*4)
struct response_type {
struct completion work;
int type;
};
#define PCIXCC_RESPONSE_TYPE_ICA 0
#define PCIXCC_RESPONSE_TYPE_XCRB 1
MODULE_AUTHOR("IBM Corporation"); MODULE_AUTHOR("IBM Corporation");
MODULE_DESCRIPTION("PCIXCC Cryptographic Coprocessor device driver, " \ MODULE_DESCRIPTION("CEX2C/CEX3C Cryptographic Coprocessor device driver, " \
"Copyright IBM Corp. 2001, 2012"); "Copyright IBM Corp. 2001, 2018");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
static struct ap_device_id zcrypt_pcixcc_card_ids[] = { static struct ap_device_id zcrypt_cex2c_card_ids[] = {
{ .dev_type = AP_DEVICE_TYPE_PCIXCC,
.match_flags = AP_DEVICE_ID_MATCH_CARD_TYPE },
{ .dev_type = AP_DEVICE_TYPE_CEX2C, { .dev_type = AP_DEVICE_TYPE_CEX2C,
.match_flags = AP_DEVICE_ID_MATCH_CARD_TYPE }, .match_flags = AP_DEVICE_ID_MATCH_CARD_TYPE },
{ .dev_type = AP_DEVICE_TYPE_CEX3C, { .dev_type = AP_DEVICE_TYPE_CEX3C,
...@@ -65,11 +46,9 @@ static struct ap_device_id zcrypt_pcixcc_card_ids[] = { ...@@ -65,11 +46,9 @@ static struct ap_device_id zcrypt_pcixcc_card_ids[] = {
{ /* end of list */ }, { /* end of list */ },
}; };
MODULE_DEVICE_TABLE(ap, zcrypt_pcixcc_card_ids); MODULE_DEVICE_TABLE(ap, zcrypt_cex2c_card_ids);
static struct ap_device_id zcrypt_pcixcc_queue_ids[] = { static struct ap_device_id zcrypt_cex2c_queue_ids[] = {
{ .dev_type = AP_DEVICE_TYPE_PCIXCC,
.match_flags = AP_DEVICE_ID_MATCH_QUEUE_TYPE },
{ .dev_type = AP_DEVICE_TYPE_CEX2C, { .dev_type = AP_DEVICE_TYPE_CEX2C,
.match_flags = AP_DEVICE_ID_MATCH_QUEUE_TYPE }, .match_flags = AP_DEVICE_ID_MATCH_QUEUE_TYPE },
{ .dev_type = AP_DEVICE_TYPE_CEX3C, { .dev_type = AP_DEVICE_TYPE_CEX3C,
...@@ -77,16 +56,16 @@ static struct ap_device_id zcrypt_pcixcc_queue_ids[] = { ...@@ -77,16 +56,16 @@ static struct ap_device_id zcrypt_pcixcc_queue_ids[] = {
{ /* end of list */ }, { /* end of list */ },
}; };
MODULE_DEVICE_TABLE(ap, zcrypt_pcixcc_queue_ids); MODULE_DEVICE_TABLE(ap, zcrypt_cex2c_queue_ids);
/** /**
* Large random number detection function. Its sends a message to a pcixcc * Large random number detection function. Its sends a message to a CEX2C/CEX3C
* card to find out if large random numbers are supported. * card to find out if large random numbers are supported.
* @ap_dev: pointer to the AP device. * @ap_dev: pointer to the AP device.
* *
* Returns 1 if large random numbers are supported, 0 if not and < 0 on error. * Returns 1 if large random numbers are supported, 0 if not and < 0 on error.
*/ */
static int zcrypt_pcixcc_rng_supported(struct ap_queue *aq) static int zcrypt_cex2c_rng_supported(struct ap_queue *aq)
{ {
struct ap_message ap_msg; struct ap_message ap_msg;
unsigned long long psmid; unsigned long long psmid;
...@@ -147,13 +126,11 @@ static int zcrypt_pcixcc_rng_supported(struct ap_queue *aq) ...@@ -147,13 +126,11 @@ static int zcrypt_pcixcc_rng_supported(struct ap_queue *aq)
} }
/** /**
* Probe function for PCIXCC/CEX2C card devices. It always accepts the * Probe function for CEX2C/CEX3C card devices. It always accepts the
* AP device since the bus_match already checked the hardware type. The * AP device since the bus_match already checked the hardware type.
* PCIXCC cards come in two flavours: micro code level 2 and micro code
* level 3. This is checked by sending a test message to the device.
* @ap_dev: pointer to the AP card device. * @ap_dev: pointer to the AP card device.
*/ */
static int zcrypt_pcixcc_card_probe(struct ap_device *ap_dev) static int zcrypt_cex2c_card_probe(struct ap_device *ap_dev)
{ {
/* /*
* Normalized speed ratings per crypto adapter * Normalized speed ratings per crypto adapter
...@@ -179,9 +156,9 @@ static int zcrypt_pcixcc_card_probe(struct ap_device *ap_dev) ...@@ -179,9 +156,9 @@ static int zcrypt_pcixcc_card_probe(struct ap_device *ap_dev)
zc->type_string = "CEX2C"; zc->type_string = "CEX2C";
memcpy(zc->speed_rating, CEX2C_SPEED_IDX, memcpy(zc->speed_rating, CEX2C_SPEED_IDX,
sizeof(CEX2C_SPEED_IDX)); sizeof(CEX2C_SPEED_IDX));
zc->min_mod_size = PCIXCC_MIN_MOD_SIZE; zc->min_mod_size = CEX2C_MIN_MOD_SIZE;
zc->max_mod_size = PCIXCC_MAX_MOD_SIZE; zc->max_mod_size = CEX2C_MAX_MOD_SIZE;
zc->max_exp_bit_length = PCIXCC_MAX_MOD_SIZE; zc->max_exp_bit_length = CEX2C_MAX_MOD_SIZE;
break; break;
case AP_DEVICE_TYPE_CEX3C: case AP_DEVICE_TYPE_CEX3C:
zc->user_space_type = ZCRYPT_CEX3C; zc->user_space_type = ZCRYPT_CEX3C;
...@@ -208,10 +185,10 @@ static int zcrypt_pcixcc_card_probe(struct ap_device *ap_dev) ...@@ -208,10 +185,10 @@ static int zcrypt_pcixcc_card_probe(struct ap_device *ap_dev)
} }
/** /**
* This is called to remove the PCIXCC/CEX2C card driver information * This is called to remove the CEX2C/CEX3C card driver information
* if an AP card device is removed. * if an AP card device is removed.
*/ */
static void zcrypt_pcixcc_card_remove(struct ap_device *ap_dev) static void zcrypt_cex2c_card_remove(struct ap_device *ap_dev)
{ {
struct zcrypt_card *zc = to_ap_card(&ap_dev->device)->private; struct zcrypt_card *zc = to_ap_card(&ap_dev->device)->private;
...@@ -219,33 +196,31 @@ static void zcrypt_pcixcc_card_remove(struct ap_device *ap_dev) ...@@ -219,33 +196,31 @@ static void zcrypt_pcixcc_card_remove(struct ap_device *ap_dev)
zcrypt_card_unregister(zc); zcrypt_card_unregister(zc);
} }
static struct ap_driver zcrypt_pcixcc_card_driver = { static struct ap_driver zcrypt_cex2c_card_driver = {
.probe = zcrypt_pcixcc_card_probe, .probe = zcrypt_cex2c_card_probe,
.remove = zcrypt_pcixcc_card_remove, .remove = zcrypt_cex2c_card_remove,
.ids = zcrypt_pcixcc_card_ids, .ids = zcrypt_cex2c_card_ids,
.flags = AP_DRIVER_FLAG_DEFAULT, .flags = AP_DRIVER_FLAG_DEFAULT,
}; };
/** /**
* Probe function for PCIXCC/CEX2C queue devices. It always accepts the * Probe function for CEX2C/CEX3C queue devices. It always accepts the
* AP device since the bus_match already checked the hardware type. The * AP device since the bus_match already checked the hardware type.
* PCIXCC cards come in two flavours: micro code level 2 and micro code
* level 3. This is checked by sending a test message to the device.
* @ap_dev: pointer to the AP card device. * @ap_dev: pointer to the AP card device.
*/ */
static int zcrypt_pcixcc_queue_probe(struct ap_device *ap_dev) static int zcrypt_cex2c_queue_probe(struct ap_device *ap_dev)
{ {
struct ap_queue *aq = to_ap_queue(&ap_dev->device); struct ap_queue *aq = to_ap_queue(&ap_dev->device);
struct zcrypt_queue *zq; struct zcrypt_queue *zq;
int rc; int rc;
zq = zcrypt_queue_alloc(PCIXCC_MAX_XCRB_MESSAGE_SIZE); zq = zcrypt_queue_alloc(CEX2C_MAX_XCRB_MESSAGE_SIZE);
if (!zq) if (!zq)
return -ENOMEM; return -ENOMEM;
zq->queue = aq; zq->queue = aq;
zq->online = 1; zq->online = 1;
atomic_set(&zq->load, 0); atomic_set(&zq->load, 0);
rc = zcrypt_pcixcc_rng_supported(aq); rc = zcrypt_cex2c_rng_supported(aq);
if (rc < 0) { if (rc < 0) {
zcrypt_queue_free(zq); zcrypt_queue_free(zq);
return rc; return rc;
...@@ -257,7 +232,7 @@ static int zcrypt_pcixcc_queue_probe(struct ap_device *ap_dev) ...@@ -257,7 +232,7 @@ static int zcrypt_pcixcc_queue_probe(struct ap_device *ap_dev)
zq->ops = zcrypt_msgtype(MSGTYPE06_NAME, zq->ops = zcrypt_msgtype(MSGTYPE06_NAME,
MSGTYPE06_VARIANT_NORNG); MSGTYPE06_VARIANT_NORNG);
ap_queue_init_reply(aq, &zq->reply); ap_queue_init_reply(aq, &zq->reply);
aq->request_timeout = PCIXCC_CLEANUP_TIME, aq->request_timeout = CEX2C_CLEANUP_TIME;
aq->private = zq; aq->private = zq;
rc = zcrypt_queue_register(zq); rc = zcrypt_queue_register(zq);
if (rc) { if (rc) {
...@@ -268,10 +243,10 @@ static int zcrypt_pcixcc_queue_probe(struct ap_device *ap_dev) ...@@ -268,10 +243,10 @@ static int zcrypt_pcixcc_queue_probe(struct ap_device *ap_dev)
} }
/** /**
* This is called to remove the PCIXCC/CEX2C queue driver information * This is called to remove the CEX2C/CEX3C queue driver information
* if an AP queue device is removed. * if an AP queue device is removed.
*/ */
static void zcrypt_pcixcc_queue_remove(struct ap_device *ap_dev) static void zcrypt_cex2c_queue_remove(struct ap_device *ap_dev)
{ {
struct ap_queue *aq = to_ap_queue(&ap_dev->device); struct ap_queue *aq = to_ap_queue(&ap_dev->device);
struct zcrypt_queue *zq = aq->private; struct zcrypt_queue *zq = aq->private;
...@@ -281,37 +256,37 @@ static void zcrypt_pcixcc_queue_remove(struct ap_device *ap_dev) ...@@ -281,37 +256,37 @@ static void zcrypt_pcixcc_queue_remove(struct ap_device *ap_dev)
zcrypt_queue_unregister(zq); zcrypt_queue_unregister(zq);
} }
static struct ap_driver zcrypt_pcixcc_queue_driver = { static struct ap_driver zcrypt_cex2c_queue_driver = {
.probe = zcrypt_pcixcc_queue_probe, .probe = zcrypt_cex2c_queue_probe,
.remove = zcrypt_pcixcc_queue_remove, .remove = zcrypt_cex2c_queue_remove,
.suspend = ap_queue_suspend, .suspend = ap_queue_suspend,
.resume = ap_queue_resume, .resume = ap_queue_resume,
.ids = zcrypt_pcixcc_queue_ids, .ids = zcrypt_cex2c_queue_ids,
.flags = AP_DRIVER_FLAG_DEFAULT, .flags = AP_DRIVER_FLAG_DEFAULT,
}; };
int __init zcrypt_pcixcc_init(void) int __init zcrypt_cex2c_init(void)
{ {
int rc; int rc;
rc = ap_driver_register(&zcrypt_pcixcc_card_driver, rc = ap_driver_register(&zcrypt_cex2c_card_driver,
THIS_MODULE, "pcixcccard"); THIS_MODULE, "cex2card");
if (rc) if (rc)
return rc; return rc;
rc = ap_driver_register(&zcrypt_pcixcc_queue_driver, rc = ap_driver_register(&zcrypt_cex2c_queue_driver,
THIS_MODULE, "pcixccqueue"); THIS_MODULE, "cex2cqueue");
if (rc) if (rc)
ap_driver_unregister(&zcrypt_pcixcc_card_driver); ap_driver_unregister(&zcrypt_cex2c_card_driver);
return rc; return rc;
} }
void zcrypt_pcixcc_exit(void) void zcrypt_cex2c_exit(void)
{ {
ap_driver_unregister(&zcrypt_pcixcc_queue_driver); ap_driver_unregister(&zcrypt_cex2c_queue_driver);
ap_driver_unregister(&zcrypt_pcixcc_card_driver); ap_driver_unregister(&zcrypt_cex2c_card_driver);
} }
module_init(zcrypt_pcixcc_init); module_init(zcrypt_cex2c_init);
module_exit(zcrypt_pcixcc_exit); module_exit(zcrypt_cex2c_exit);
/* SPDX-License-Identifier: GPL-2.0+ */ /* SPDX-License-Identifier: GPL-2.0+ */
/* /*
* zcrypt 2.1.0 * Copyright IBM Corp. 2001, 2018
*
* Copyright IBM Corp. 2001, 2012
* Author(s): Robert Burroughs * Author(s): Robert Burroughs
* Eric Rossman (edrossma@us.ibm.com) * Eric Rossman (edrossma@us.ibm.com)
* *
...@@ -11,10 +9,10 @@ ...@@ -11,10 +9,10 @@
* MSGTYPE restruct: Holger Dengler <hd@linux.vnet.ibm.com> * MSGTYPE restruct: Holger Dengler <hd@linux.vnet.ibm.com>
*/ */
#ifndef _ZCRYPT_PCIXCC_H_ #ifndef _ZCRYPT_CEX2C_H_
#define _ZCRYPT_PCIXCC_H_ #define _ZCRYPT_CEX2C_H_
int zcrypt_pcixcc_init(void); int zcrypt_cex2c_init(void);
void zcrypt_pcixcc_exit(void); void zcrypt_cex2c_exit(void);
#endif /* _ZCRYPT_PCIXCC_H_ */ #endif /* _ZCRYPT_CEX2C_H_ */
...@@ -37,8 +37,8 @@ ...@@ -37,8 +37,8 @@
#define CEX4_CLEANUP_TIME (900*HZ) #define CEX4_CLEANUP_TIME (900*HZ)
MODULE_AUTHOR("IBM Corporation"); MODULE_AUTHOR("IBM Corporation");
MODULE_DESCRIPTION("CEX4 Cryptographic Card device driver, " \ MODULE_DESCRIPTION("CEX4/CEX5/CEX6 Cryptographic Card device driver, " \
"Copyright IBM Corp. 2012"); "Copyright IBM Corp. 2018");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
static struct ap_device_id zcrypt_cex4_card_ids[] = { static struct ap_device_id zcrypt_cex4_card_ids[] = {
...@@ -66,8 +66,9 @@ static struct ap_device_id zcrypt_cex4_queue_ids[] = { ...@@ -66,8 +66,9 @@ static struct ap_device_id zcrypt_cex4_queue_ids[] = {
MODULE_DEVICE_TABLE(ap, zcrypt_cex4_queue_ids); MODULE_DEVICE_TABLE(ap, zcrypt_cex4_queue_ids);
/** /**
* Probe function for CEX4 card device. It always accepts the AP device * Probe function for CEX4/CEX5/CEX6 card device. It always
* since the bus_match already checked the hardware type. * accepts the AP device since the bus_match already checked
* the hardware type.
* @ap_dev: pointer to the AP device. * @ap_dev: pointer to the AP device.
*/ */
static int zcrypt_cex4_card_probe(struct ap_device *ap_dev) static int zcrypt_cex4_card_probe(struct ap_device *ap_dev)
...@@ -199,7 +200,7 @@ static int zcrypt_cex4_card_probe(struct ap_device *ap_dev) ...@@ -199,7 +200,7 @@ static int zcrypt_cex4_card_probe(struct ap_device *ap_dev)
} }
/** /**
* This is called to remove the CEX4 card driver information * This is called to remove the CEX4/CEX5/CEX6 card driver information
* if an AP card device is removed. * if an AP card device is removed.
*/ */
static void zcrypt_cex4_card_remove(struct ap_device *ap_dev) static void zcrypt_cex4_card_remove(struct ap_device *ap_dev)
...@@ -218,8 +219,9 @@ static struct ap_driver zcrypt_cex4_card_driver = { ...@@ -218,8 +219,9 @@ static struct ap_driver zcrypt_cex4_card_driver = {
}; };
/** /**
* Probe function for CEX4 queue device. It always accepts the AP device * Probe function for CEX4/CEX5/CEX6 queue device. It always
* since the bus_match already checked the hardware type. * accepts the AP device since the bus_match already checked
* the hardware type.
* @ap_dev: pointer to the AP device. * @ap_dev: pointer to the AP device.
*/ */
static int zcrypt_cex4_queue_probe(struct ap_device *ap_dev) static int zcrypt_cex4_queue_probe(struct ap_device *ap_dev)
...@@ -265,8 +267,8 @@ static int zcrypt_cex4_queue_probe(struct ap_device *ap_dev) ...@@ -265,8 +267,8 @@ static int zcrypt_cex4_queue_probe(struct ap_device *ap_dev)
} }
/** /**
* This is called to remove the CEX4 queue driver information * This is called to remove the CEX4/CEX5/CEX6 queue driver
* if an AP queue device is removed. * information if an AP queue device is removed.
*/ */
static void zcrypt_cex4_queue_remove(struct ap_device *ap_dev) static void zcrypt_cex4_queue_remove(struct ap_device *ap_dev)
{ {
......
/* SPDX-License-Identifier: GPL-2.0+ */ /* SPDX-License-Identifier: GPL-2.0+ */
/* /*
* zcrypt 2.1.0
*
* Copyright IBM Corp. 2001, 2006 * Copyright IBM Corp. 2001, 2006
* Author(s): Robert Burroughs * Author(s): Robert Burroughs
* Eric Rossman (edrossma@us.ibm.com) * Eric Rossman (edrossma@us.ibm.com)
......
// SPDX-License-Identifier: GPL-2.0+ // SPDX-License-Identifier: GPL-2.0+
/* /*
* zcrypt 2.1.0
*
* Copyright IBM Corp. 2001, 2012 * Copyright IBM Corp. 2001, 2012
* Author(s): Robert Burroughs * Author(s): Robert Burroughs
* Eric Rossman (edrossma@us.ibm.com) * Eric Rossman (edrossma@us.ibm.com)
...@@ -27,13 +25,13 @@ ...@@ -27,13 +25,13 @@
#include "zcrypt_error.h" #include "zcrypt_error.h"
#include "zcrypt_msgtype50.h" #include "zcrypt_msgtype50.h"
/* 4096 bits */ /* >= CEX3A: 4096 bits */
#define CEX3A_MAX_MOD_SIZE 512 #define CEX3A_MAX_MOD_SIZE 512
/* max outputdatalength + type80_hdr */ /* CEX2A: max outputdatalength + type80_hdr */
#define CEX2A_MAX_RESPONSE_SIZE 0x110 #define CEX2A_MAX_RESPONSE_SIZE 0x110
/* 512 bit modulus, (max outputdatalength) + type80_hdr */ /* >= CEX3A: 512 bit modulus, (max outputdatalength) + type80_hdr */
#define CEX3A_MAX_RESPONSE_SIZE 0x210 #define CEX3A_MAX_RESPONSE_SIZE 0x210
MODULE_AUTHOR("IBM Corporation"); MODULE_AUTHOR("IBM Corporation");
...@@ -42,7 +40,7 @@ MODULE_DESCRIPTION("Cryptographic Accelerator (message type 50), " \ ...@@ -42,7 +40,7 @@ MODULE_DESCRIPTION("Cryptographic Accelerator (message type 50), " \
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
/** /**
* The type 50 message family is associated with a CEX2A card. * The type 50 message family is associated with a CEXxA cards.
* *
* The four members of the family are described below. * The four members of the family are described below.
* *
...@@ -139,7 +137,7 @@ struct type50_crb3_msg { ...@@ -139,7 +137,7 @@ struct type50_crb3_msg {
} __packed; } __packed;
/** /**
* The type 80 response family is associated with a CEX2A card. * The type 80 response family is associated with a CEXxA cards.
* *
* Note that all unsigned char arrays are right-justified and left-padded * Note that all unsigned char arrays are right-justified and left-padded
* with zeroes. * with zeroes.
...@@ -273,7 +271,7 @@ static int ICACRT_msg_to_type50CRT_msg(struct zcrypt_queue *zq, ...@@ -273,7 +271,7 @@ static int ICACRT_msg_to_type50CRT_msg(struct zcrypt_queue *zq,
/* /*
* CEX2A and CEX3A w/o FW update can handle requests up to * CEX2A and CEX3A w/o FW update can handle requests up to
* 256 byte modulus (2k keys). * 256 byte modulus (2k keys).
* CEX3A with FW update and CEX4A cards are able to handle * CEX3A with FW update and newer CEXxA cards are able to handle
* 512 byte modulus (4k keys). * 512 byte modulus (4k keys).
*/ */
if (mod_len <= 128) { /* up to 1024 bit key size */ if (mod_len <= 128) { /* up to 1024 bit key size */
...@@ -356,7 +354,7 @@ static int convert_type80(struct zcrypt_queue *zq, ...@@ -356,7 +354,7 @@ static int convert_type80(struct zcrypt_queue *zq,
unsigned char *data; unsigned char *data;
if (t80h->len < sizeof(*t80h) + outputdatalength) { if (t80h->len < sizeof(*t80h) + outputdatalength) {
/* The result is too short, the CEX2A card may not do that.. */ /* The result is too short, the CEXxA card may not do that.. */
zq->online = 0; zq->online = 0;
pr_err("Cryptographic device %02x.%04x failed and was set offline\n", pr_err("Cryptographic device %02x.%04x failed and was set offline\n",
AP_QID_CARD(zq->queue->qid), AP_QID_CARD(zq->queue->qid),
...@@ -447,10 +445,10 @@ static void zcrypt_cex2a_receive(struct ap_queue *aq, ...@@ -447,10 +445,10 @@ static void zcrypt_cex2a_receive(struct ap_queue *aq,
static atomic_t zcrypt_step = ATOMIC_INIT(0); static atomic_t zcrypt_step = ATOMIC_INIT(0);
/** /**
* The request distributor calls this function if it picked the CEX2A * The request distributor calls this function if it picked the CEXxA
* device to handle a modexpo request. * device to handle a modexpo request.
* @zq: pointer to zcrypt_queue structure that identifies the * @zq: pointer to zcrypt_queue structure that identifies the
* CEX2A device to the request distributor * CEXxA device to the request distributor
* @mex: pointer to the modexpo request buffer * @mex: pointer to the modexpo request buffer
*/ */
static long zcrypt_cex2a_modexpo(struct zcrypt_queue *zq, static long zcrypt_cex2a_modexpo(struct zcrypt_queue *zq,
...@@ -493,10 +491,10 @@ static long zcrypt_cex2a_modexpo(struct zcrypt_queue *zq, ...@@ -493,10 +491,10 @@ static long zcrypt_cex2a_modexpo(struct zcrypt_queue *zq,
} }
/** /**
* The request distributor calls this function if it picked the CEX2A * The request distributor calls this function if it picked the CEXxA
* device to handle a modexpo_crt request. * device to handle a modexpo_crt request.
* @zq: pointer to zcrypt_queue structure that identifies the * @zq: pointer to zcrypt_queue structure that identifies the
* CEX2A device to the request distributor * CEXxA device to the request distributor
* @crt: pointer to the modexpoc_crt request buffer * @crt: pointer to the modexpoc_crt request buffer
*/ */
static long zcrypt_cex2a_modexpo_crt(struct zcrypt_queue *zq, static long zcrypt_cex2a_modexpo_crt(struct zcrypt_queue *zq,
......
/* SPDX-License-Identifier: GPL-2.0+ */ /* SPDX-License-Identifier: GPL-2.0+ */
/* /*
* zcrypt 2.1.0
*
* Copyright IBM Corp. 2001, 2012 * Copyright IBM Corp. 2001, 2012
* Author(s): Robert Burroughs * Author(s): Robert Burroughs
* Eric Rossman (edrossma@us.ibm.com) * Eric Rossman (edrossma@us.ibm.com)
......
// SPDX-License-Identifier: GPL-2.0+ // SPDX-License-Identifier: GPL-2.0+
/* /*
* zcrypt 2.1.0
*
* Copyright IBM Corp. 2001, 2012 * Copyright IBM Corp. 2001, 2012
* Author(s): Robert Burroughs * Author(s): Robert Burroughs
* Eric Rossman (edrossma@us.ibm.com) * Eric Rossman (edrossma@us.ibm.com)
...@@ -29,8 +27,7 @@ ...@@ -29,8 +27,7 @@
#include "zcrypt_msgtype6.h" #include "zcrypt_msgtype6.h"
#include "zcrypt_cca_key.h" #include "zcrypt_cca_key.h"
#define PCIXCC_MIN_MOD_SIZE_OLD 64 /* 512 bits */ #define CEXXC_MAX_ICA_RESPONSE_SIZE 0x77c /* max size type86 v2 reply */
#define PCIXCC_MAX_ICA_RESPONSE_SIZE 0x77c /* max size type86 v2 reply */
#define CEIL4(x) ((((x)+3)/4)*4) #define CEIL4(x) ((((x)+3)/4)*4)
...@@ -38,9 +35,9 @@ struct response_type { ...@@ -38,9 +35,9 @@ struct response_type {
struct completion work; struct completion work;
int type; int type;
}; };
#define PCIXCC_RESPONSE_TYPE_ICA 0 #define CEXXC_RESPONSE_TYPE_ICA 0
#define PCIXCC_RESPONSE_TYPE_XCRB 1 #define CEXXC_RESPONSE_TYPE_XCRB 1
#define PCIXCC_RESPONSE_TYPE_EP11 2 #define CEXXC_RESPONSE_TYPE_EP11 2
MODULE_AUTHOR("IBM Corporation"); MODULE_AUTHOR("IBM Corporation");
MODULE_DESCRIPTION("Cryptographic Coprocessor (message type 6), " \ MODULE_DESCRIPTION("Cryptographic Coprocessor (message type 6), " \
...@@ -111,7 +108,7 @@ struct function_and_rules_block { ...@@ -111,7 +108,7 @@ struct function_and_rules_block {
} __packed; } __packed;
/** /**
* The following is used to initialize the CPRBX passed to the PCIXCC/CEX2C * The following is used to initialize the CPRBX passed to the CEXxC/CEXxP
* card in a type6 message. The 3 fields that must be filled in at execution * card in a type6 message. The 3 fields that must be filled in at execution
* time are req_parml, rpl_parml and usage_domain. * time are req_parml, rpl_parml and usage_domain.
* Everything about this interface is ascii/big-endian, since the * Everything about this interface is ascii/big-endian, since the
...@@ -294,7 +291,7 @@ static int ICAMEX_msg_to_type6MEX_msgX(struct zcrypt_queue *zq, ...@@ -294,7 +291,7 @@ static int ICAMEX_msg_to_type6MEX_msgX(struct zcrypt_queue *zq,
/* message header, cprbx and f&r */ /* message header, cprbx and f&r */
msg->hdr = static_type6_hdrX; msg->hdr = static_type6_hdrX;
msg->hdr.ToCardLen1 = size - sizeof(msg->hdr); msg->hdr.ToCardLen1 = size - sizeof(msg->hdr);
msg->hdr.FromCardLen1 = PCIXCC_MAX_ICA_RESPONSE_SIZE - sizeof(msg->hdr); msg->hdr.FromCardLen1 = CEXXC_MAX_ICA_RESPONSE_SIZE - sizeof(msg->hdr);
msg->cprbx = static_cprbx; msg->cprbx = static_cprbx;
msg->cprbx.domain = AP_QID_QUEUE(zq->queue->qid); msg->cprbx.domain = AP_QID_QUEUE(zq->queue->qid);
...@@ -364,7 +361,7 @@ static int ICACRT_msg_to_type6CRT_msgX(struct zcrypt_queue *zq, ...@@ -364,7 +361,7 @@ static int ICACRT_msg_to_type6CRT_msgX(struct zcrypt_queue *zq,
/* message header, cprbx and f&r */ /* message header, cprbx and f&r */
msg->hdr = static_type6_hdrX; msg->hdr = static_type6_hdrX;
msg->hdr.ToCardLen1 = size - sizeof(msg->hdr); msg->hdr.ToCardLen1 = size - sizeof(msg->hdr);
msg->hdr.FromCardLen1 = PCIXCC_MAX_ICA_RESPONSE_SIZE - sizeof(msg->hdr); msg->hdr.FromCardLen1 = CEXXC_MAX_ICA_RESPONSE_SIZE - sizeof(msg->hdr);
msg->cprbx = static_cprbx; msg->cprbx = static_cprbx;
msg->cprbx.domain = AP_QID_QUEUE(zq->queue->qid); msg->cprbx.domain = AP_QID_QUEUE(zq->queue->qid);
...@@ -658,16 +655,6 @@ static int convert_type86_ica(struct zcrypt_queue *zq, ...@@ -658,16 +655,6 @@ static int convert_type86_ica(struct zcrypt_queue *zq,
(int) service_rc, (int) service_rs); (int) service_rc, (int) service_rs);
return -EINVAL; return -EINVAL;
} }
if (service_rc == 8 && service_rs == 783) {
zq->zcard->min_mod_size =
PCIXCC_MIN_MOD_SIZE_OLD;
ZCRYPT_DBF(DBF_DEBUG,
"device=%02x.%04x rc/rs=%d/%d => rc=EAGAIN\n",
AP_QID_CARD(zq->queue->qid),
AP_QID_QUEUE(zq->queue->qid),
(int) service_rc, (int) service_rs);
return -EAGAIN;
}
zq->online = 0; zq->online = 0;
pr_err("Cryptographic device %02x.%04x failed and was set offline\n", pr_err("Cryptographic device %02x.%04x failed and was set offline\n",
AP_QID_CARD(zq->queue->qid), AP_QID_CARD(zq->queue->qid),
...@@ -697,7 +684,7 @@ static int convert_type86_ica(struct zcrypt_queue *zq, ...@@ -697,7 +684,7 @@ static int convert_type86_ica(struct zcrypt_queue *zq,
if (pad_len > 0) { if (pad_len > 0) {
if (pad_len < 10) if (pad_len < 10)
return -EINVAL; return -EINVAL;
/* 'restore' padding left in the PCICC/PCIXCC card. */ /* 'restore' padding left in the CEXXC card. */
if (copy_to_user(outputdata, static_pad, pad_len - 1)) if (copy_to_user(outputdata, static_pad, pad_len - 1))
return -EFAULT; return -EFAULT;
if (put_user(0, outputdata + pad_len - 1)) if (put_user(0, outputdata + pad_len - 1))
...@@ -955,13 +942,13 @@ static void zcrypt_msgtype6_receive(struct ap_queue *aq, ...@@ -955,13 +942,13 @@ static void zcrypt_msgtype6_receive(struct ap_queue *aq,
if (t86r->hdr.type == TYPE86_RSP_CODE && if (t86r->hdr.type == TYPE86_RSP_CODE &&
t86r->cprbx.cprb_ver_id == 0x02) { t86r->cprbx.cprb_ver_id == 0x02) {
switch (resp_type->type) { switch (resp_type->type) {
case PCIXCC_RESPONSE_TYPE_ICA: case CEXXC_RESPONSE_TYPE_ICA:
length = sizeof(struct type86x_reply) length = sizeof(struct type86x_reply)
+ t86r->length - 2; + t86r->length - 2;
length = min(PCIXCC_MAX_ICA_RESPONSE_SIZE, length); length = min(CEXXC_MAX_ICA_RESPONSE_SIZE, length);
memcpy(msg->message, reply->message, length); memcpy(msg->message, reply->message, length);
break; break;
case PCIXCC_RESPONSE_TYPE_XCRB: case CEXXC_RESPONSE_TYPE_XCRB:
length = t86r->fmt2.offset2 + t86r->fmt2.count2; length = t86r->fmt2.offset2 + t86r->fmt2.count2;
length = min(MSGTYPE06_MAX_MSG_SIZE, length); length = min(MSGTYPE06_MAX_MSG_SIZE, length);
memcpy(msg->message, reply->message, length); memcpy(msg->message, reply->message, length);
...@@ -1004,7 +991,7 @@ static void zcrypt_msgtype6_receive_ep11(struct ap_queue *aq, ...@@ -1004,7 +991,7 @@ static void zcrypt_msgtype6_receive_ep11(struct ap_queue *aq,
if (t86r->hdr.type == TYPE86_RSP_CODE && if (t86r->hdr.type == TYPE86_RSP_CODE &&
t86r->cprbx.cprb_ver_id == 0x04) { t86r->cprbx.cprb_ver_id == 0x04) {
switch (resp_type->type) { switch (resp_type->type) {
case PCIXCC_RESPONSE_TYPE_EP11: case CEXXC_RESPONSE_TYPE_EP11:
length = t86r->fmt2.offset1 + t86r->fmt2.count1; length = t86r->fmt2.offset1 + t86r->fmt2.count1;
length = min(MSGTYPE06_MAX_MSG_SIZE, length); length = min(MSGTYPE06_MAX_MSG_SIZE, length);
memcpy(msg->message, reply->message, length); memcpy(msg->message, reply->message, length);
...@@ -1022,10 +1009,10 @@ static void zcrypt_msgtype6_receive_ep11(struct ap_queue *aq, ...@@ -1022,10 +1009,10 @@ static void zcrypt_msgtype6_receive_ep11(struct ap_queue *aq,
static atomic_t zcrypt_step = ATOMIC_INIT(0); static atomic_t zcrypt_step = ATOMIC_INIT(0);
/** /**
* The request distributor calls this function if it picked the PCIXCC/CEX2C * The request distributor calls this function if it picked the CEXxC
* device to handle a modexpo request. * device to handle a modexpo request.
* @zq: pointer to zcrypt_queue structure that identifies the * @zq: pointer to zcrypt_queue structure that identifies the
* PCIXCC/CEX2C device to the request distributor * CEXxC device to the request distributor
* @mex: pointer to the modexpo request buffer * @mex: pointer to the modexpo request buffer
*/ */
static long zcrypt_msgtype6_modexpo(struct zcrypt_queue *zq, static long zcrypt_msgtype6_modexpo(struct zcrypt_queue *zq,
...@@ -1033,7 +1020,7 @@ static long zcrypt_msgtype6_modexpo(struct zcrypt_queue *zq, ...@@ -1033,7 +1020,7 @@ static long zcrypt_msgtype6_modexpo(struct zcrypt_queue *zq,
{ {
struct ap_message ap_msg; struct ap_message ap_msg;
struct response_type resp_type = { struct response_type resp_type = {
.type = PCIXCC_RESPONSE_TYPE_ICA, .type = CEXXC_RESPONSE_TYPE_ICA,
}; };
int rc; int rc;
...@@ -1066,10 +1053,10 @@ static long zcrypt_msgtype6_modexpo(struct zcrypt_queue *zq, ...@@ -1066,10 +1053,10 @@ static long zcrypt_msgtype6_modexpo(struct zcrypt_queue *zq,
} }
/** /**
* The request distributor calls this function if it picked the PCIXCC/CEX2C * The request distributor calls this function if it picked the CEXxC
* device to handle a modexpo_crt request. * device to handle a modexpo_crt request.
* @zq: pointer to zcrypt_queue structure that identifies the * @zq: pointer to zcrypt_queue structure that identifies the
* PCIXCC/CEX2C device to the request distributor * CEXxC device to the request distributor
* @crt: pointer to the modexpoc_crt request buffer * @crt: pointer to the modexpoc_crt request buffer
*/ */
static long zcrypt_msgtype6_modexpo_crt(struct zcrypt_queue *zq, static long zcrypt_msgtype6_modexpo_crt(struct zcrypt_queue *zq,
...@@ -1077,7 +1064,7 @@ static long zcrypt_msgtype6_modexpo_crt(struct zcrypt_queue *zq, ...@@ -1077,7 +1064,7 @@ static long zcrypt_msgtype6_modexpo_crt(struct zcrypt_queue *zq,
{ {
struct ap_message ap_msg; struct ap_message ap_msg;
struct response_type resp_type = { struct response_type resp_type = {
.type = PCIXCC_RESPONSE_TYPE_ICA, .type = CEXXC_RESPONSE_TYPE_ICA,
}; };
int rc; int rc;
...@@ -1122,7 +1109,7 @@ unsigned int get_cprb_fc(struct ica_xcRB *xcRB, ...@@ -1122,7 +1109,7 @@ unsigned int get_cprb_fc(struct ica_xcRB *xcRB,
unsigned int *func_code, unsigned short **dom) unsigned int *func_code, unsigned short **dom)
{ {
struct response_type resp_type = { struct response_type resp_type = {
.type = PCIXCC_RESPONSE_TYPE_XCRB, .type = CEXXC_RESPONSE_TYPE_XCRB,
}; };
ap_msg->message = kmalloc(MSGTYPE06_MAX_MSG_SIZE, GFP_KERNEL); ap_msg->message = kmalloc(MSGTYPE06_MAX_MSG_SIZE, GFP_KERNEL);
...@@ -1138,10 +1125,10 @@ unsigned int get_cprb_fc(struct ica_xcRB *xcRB, ...@@ -1138,10 +1125,10 @@ unsigned int get_cprb_fc(struct ica_xcRB *xcRB,
} }
/** /**
* The request distributor calls this function if it picked the PCIXCC/CEX2C * The request distributor calls this function if it picked the CEXxC
* device to handle a send_cprb request. * device to handle a send_cprb request.
* @zq: pointer to zcrypt_queue structure that identifies the * @zq: pointer to zcrypt_queue structure that identifies the
* PCIXCC/CEX2C device to the request distributor * CEXxC device to the request distributor
* @xcRB: pointer to the send_cprb request buffer * @xcRB: pointer to the send_cprb request buffer
*/ */
static long zcrypt_msgtype6_send_cprb(struct zcrypt_queue *zq, static long zcrypt_msgtype6_send_cprb(struct zcrypt_queue *zq,
...@@ -1177,7 +1164,7 @@ unsigned int get_ep11cprb_fc(struct ep11_urb *xcrb, ...@@ -1177,7 +1164,7 @@ unsigned int get_ep11cprb_fc(struct ep11_urb *xcrb,
unsigned int *func_code) unsigned int *func_code)
{ {
struct response_type resp_type = { struct response_type resp_type = {
.type = PCIXCC_RESPONSE_TYPE_EP11, .type = CEXXC_RESPONSE_TYPE_EP11,
}; };
ap_msg->message = kmalloc(MSGTYPE06_MAX_MSG_SIZE, GFP_KERNEL); ap_msg->message = kmalloc(MSGTYPE06_MAX_MSG_SIZE, GFP_KERNEL);
...@@ -1271,7 +1258,7 @@ unsigned int get_rng_fc(struct ap_message *ap_msg, int *func_code, ...@@ -1271,7 +1258,7 @@ unsigned int get_rng_fc(struct ap_message *ap_msg, int *func_code,
unsigned int *domain) unsigned int *domain)
{ {
struct response_type resp_type = { struct response_type resp_type = {
.type = PCIXCC_RESPONSE_TYPE_XCRB, .type = CEXXC_RESPONSE_TYPE_XCRB,
}; };
ap_msg->message = kmalloc(MSGTYPE06_MAX_MSG_SIZE, GFP_KERNEL); ap_msg->message = kmalloc(MSGTYPE06_MAX_MSG_SIZE, GFP_KERNEL);
...@@ -1291,10 +1278,10 @@ unsigned int get_rng_fc(struct ap_message *ap_msg, int *func_code, ...@@ -1291,10 +1278,10 @@ unsigned int get_rng_fc(struct ap_message *ap_msg, int *func_code,
} }
/** /**
* The request distributor calls this function if it picked the PCIXCC/CEX2C * The request distributor calls this function if it picked the CEXxC
* device to generate random data. * device to generate random data.
* @zq: pointer to zcrypt_queue structure that identifies the * @zq: pointer to zcrypt_queue structure that identifies the
* PCIXCC/CEX2C device to the request distributor * CEXxC device to the request distributor
* @buffer: pointer to a memory page to return random data * @buffer: pointer to a memory page to return random data
*/ */
static long zcrypt_msgtype6_rng(struct zcrypt_queue *zq, static long zcrypt_msgtype6_rng(struct zcrypt_queue *zq,
...@@ -1329,7 +1316,7 @@ static long zcrypt_msgtype6_rng(struct zcrypt_queue *zq, ...@@ -1329,7 +1316,7 @@ static long zcrypt_msgtype6_rng(struct zcrypt_queue *zq,
} }
/** /**
* The crypto operations for a PCIXCC/CEX2C card. * The crypto operations for a CEXxC card.
*/ */
static struct zcrypt_ops zcrypt_msgtype6_norng_ops = { static struct zcrypt_ops zcrypt_msgtype6_norng_ops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
......
/* SPDX-License-Identifier: GPL-2.0+ */ /* SPDX-License-Identifier: GPL-2.0+ */
/* /*
* zcrypt 2.1.0
*
* Copyright IBM Corp. 2001, 2012 * Copyright IBM Corp. 2001, 2012
* Author(s): Robert Burroughs * Author(s): Robert Burroughs
* Eric Rossman (edrossma@us.ibm.com) * Eric Rossman (edrossma@us.ibm.com)
...@@ -24,7 +22,7 @@ ...@@ -24,7 +22,7 @@
#define MSGTYPE06_MAX_MSG_SIZE (12*1024) #define MSGTYPE06_MAX_MSG_SIZE (12*1024)
/** /**
* The type 6 message family is associated with PCICC or PCIXCC cards. * The type 6 message family is associated with CEXxC/CEXxP cards.
* *
* It contains a message header followed by a CPRB, both of which * It contains a message header followed by a CPRB, both of which
* are described below. * are described below.
...@@ -43,12 +41,7 @@ struct type6_hdr { ...@@ -43,12 +41,7 @@ struct type6_hdr {
unsigned int offset2; /* 0x00000000 */ unsigned int offset2; /* 0x00000000 */
unsigned int offset3; /* 0x00000000 */ unsigned int offset3; /* 0x00000000 */
unsigned int offset4; /* 0x00000000 */ unsigned int offset4; /* 0x00000000 */
unsigned char agent_id[16]; /* PCICC: */ unsigned char agent_id[16]; /* 0x4341000000000000 */
/* 0x0100 */
/* 0x4343412d4150504c202020 */
/* 0x010101 */
/* PCIXCC: */
/* 0x4341000000000000 */
/* 0x0000000000000000 */ /* 0x0000000000000000 */
unsigned char rqid[2]; /* rqid. internal to 603 */ unsigned char rqid[2]; /* rqid. internal to 603 */
unsigned char reserved5[2]; /* 0x0000 */ unsigned char reserved5[2]; /* 0x0000 */
...@@ -65,7 +58,7 @@ struct type6_hdr { ...@@ -65,7 +58,7 @@ struct type6_hdr {
} __packed; } __packed;
/** /**
* The type 86 message family is associated with PCICC and PCIXCC cards. * The type 86 message family is associated with CEXxC/CEXxP cards.
* *
* It contains a message header followed by a CPRB. The CPRB is * It contains a message header followed by a CPRB. The CPRB is
* the same as the request CPRB, which is described above. * the same as the request CPRB, which is described above.
......
// SPDX-License-Identifier: GPL-2.0+ // SPDX-License-Identifier: GPL-2.0+
/* /*
* zcrypt 2.1.0
*
* Copyright IBM Corp. 2001, 2012 * Copyright IBM Corp. 2001, 2012
* Author(s): Robert Burroughs * Author(s): Robert Burroughs
* Eric Rossman (edrossma@us.ibm.com) * Eric Rossman (edrossma@us.ibm.com)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment