<div dir="ltr"><div dir="ltr"><div>From: Harald Freudenberger <<a href="mailto:freude@de.ibm.com">freude@de.ibm.com</a>></div><div><br></div><div>BugLink: <a href="http://bugs.launchpad.net/bugs/1799184">http://bugs.launchpad.net/bugs/1799184</a></div><div><br></div><div>Show the current load value of cards and queues in sysfs.</div><div>The load value for each card and queue is maintained by</div><div>the zcrypt device driver for dispatching and load</div><div>balancing requests over the available devices.</div><div>    </div><div>This patch provides the load value to userspace via a</div><div>new read only sysfs attribute 'load' per card and queue.</div><div>    </div><div>Signed-off-by: Harald Freudenberger <<a href="mailto:freude@de.ibm.com">freude@de.ibm.com</a>></div><div>Signed-off-by: Martin Schwidefsky <<a href="mailto:schwidefsky@de.ibm.com">schwidefsky@de.ibm.com</a>></div><div>(cherry-picked from commit 4a07750ba8f3f45f0be730f7370c2c21a7491cd7)</div><div>Signed-off-by: Frank Heimes <<a href="mailto:frank.heimes@canonical.com">frank.heimes@canonical.com</a>></div><div>---</div><div><br></div><div>diff --git a/drivers/s390/crypto/zcrypt_card.c b/drivers/s390/crypto/zcrypt_card.c</div><div>index 233e1e6..da2c8df 100644</div><div>--- a/drivers/s390/crypto/zcrypt_card.c</div><div>+++ b/drivers/s390/crypto/zcrypt_card.c</div><div>@@ -83,9 +83,21 @@ static ssize_t zcrypt_card_online_store(struct device *dev,</div><div> static DEVICE_ATTR(online, 0644, zcrypt_card_online_show,</div><div>                   zcrypt_card_online_store);</div><div> </div><div>+static ssize_t zcrypt_card_load_show(struct device *dev,</div><div>+                                    struct device_attribute *attr,</div><div>+                                    char *buf)</div><div>+{</div><div>+       struct zcrypt_card *zc = to_ap_card(dev)->private;</div><div>+</div><div>+       return snprintf(buf, PAGE_SIZE, "%d\n", atomic_read(&zc->load));</div><div>+}</div><div>+</div><div>+static DEVICE_ATTR(load, 0444, zcrypt_card_load_show, NULL);</div><div>+</div><div> static struct attribute *zcrypt_card_attrs[] = {</div><div>        &dev_attr_type.attr,</div><div>        &dev_attr_online.attr,</div><div>+       &dev_attr_load.attr,</div><div>        NULL,</div><div> };</div><div> </div><div>diff --git a/drivers/s390/crypto/zcrypt_queue.c b/drivers/s390/crypto/zcrypt_queue.c</div><div>index 720434e..91a52f2 100644</div><div>--- a/drivers/s390/crypto/zcrypt_queue.c</div><div>+++ b/drivers/s390/crypto/zcrypt_queue.c</div><div>@@ -75,8 +75,20 @@ static ssize_t zcrypt_queue_online_store(struct device *dev,</div><div> static DEVICE_ATTR(online, 0644, zcrypt_queue_online_show,</div><div>                   zcrypt_queue_online_store);</div><div> </div><div>+static ssize_t zcrypt_queue_load_show(struct device *dev,</div><div>+                                     struct device_attribute *attr,</div><div>+                                     char *buf)</div><div>+{</div><div>+       struct zcrypt_queue *zq = to_ap_queue(dev)->private;</div><div>+</div><div>+       return snprintf(buf, PAGE_SIZE, "%d\n", atomic_read(&zq->load));</div><div>+}</div><div>+</div><div>+static DEVICE_ATTR(load, 0444, zcrypt_queue_load_show, NULL);</div><div>+</div><div> static struct attribute *zcrypt_queue_attrs[] = {</div><div>        &dev_attr_online.attr,</div><div>+       &dev_attr_load.attr,</div><div>        NULL,</div><div> };</div><div><br></div></div></div>