s390/zcrypt: Toleration of new crypto hardware
authorIngo Tuchscherer <ingo.tuchscherer@de.ibm.com>
Thu, 2 Oct 2014 12:48:46 +0000 (14:48 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 9 Oct 2014 07:14:05 +0000 (09:14 +0200)
The zcrypt device driver will accept the new crypto adapter
in toleration mode. A new sysfs attribute 'raw_hwtype' will
expose the raw hardware type.

Signed-off-by: Ingo Tuchscherer <ingo.tuchscherer@de.ibm.com>
Signed-off-by: Harald Freudenberger <freude@linux.vnet.ibm.com>
drivers/s390/crypto/ap_bus.c
drivers/s390/crypto/ap_bus.h

index 51e6aa0e2e5823308c6730987257d33efb446954..99485415dcc2502f540490df5d443d3f92183563 100644 (file)
@@ -664,6 +664,17 @@ static ssize_t ap_hwtype_show(struct device *dev,
 }
 
 static DEVICE_ATTR(hwtype, 0444, ap_hwtype_show, NULL);
+
+static ssize_t ap_raw_hwtype_show(struct device *dev,
+                             struct device_attribute *attr, char *buf)
+{
+       struct ap_device *ap_dev = to_ap_dev(dev);
+
+       return snprintf(buf, PAGE_SIZE, "%d\n", ap_dev->raw_hwtype);
+}
+
+static DEVICE_ATTR(raw_hwtype, 0444, ap_raw_hwtype_show, NULL);
+
 static ssize_t ap_depth_show(struct device *dev, struct device_attribute *attr,
                             char *buf)
 {
@@ -734,6 +745,7 @@ static DEVICE_ATTR(ap_functions, 0444, ap_functions_show, NULL);
 
 static struct attribute *ap_dev_attrs[] = {
        &dev_attr_hwtype.attr,
+       &dev_attr_raw_hwtype.attr,
        &dev_attr_depth.attr,
        &dev_attr_request_count.attr,
        &dev_attr_requestq_count.attr,
@@ -1417,9 +1429,13 @@ static void ap_scan_bus(struct work_struct *unused)
                                continue;
                        }
                        break;
+               case 11:
+                       ap_dev->device_type = 10;
+                       break;
                default:
                        ap_dev->device_type = device_type;
                }
+               ap_dev->raw_hwtype = device_type;
 
                rc = ap_query_functions(qid, &device_functions);
                if (!rc)
index db92e9fa5c079d398e1e3043479329898545a555..055a0f956d171865c2e2c01b121c7ccd4e5198aa 100644 (file)
@@ -161,6 +161,7 @@ struct ap_device {
        ap_qid_t qid;                   /* AP queue id. */
        int queue_depth;                /* AP queue depth.*/
        int device_type;                /* AP device type. */
+       int raw_hwtype;                 /* AP raw hardware type. */
        unsigned int functions;         /* AP device function bitfield. */
        int unregistered;               /* marks AP device as unregistered */
        struct timer_list timeout;      /* Timer for request timeouts. */