]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
s390/zcrypt: Add ZAPQ inline function.
authorHarald Freudenberger <freude@de.ibm.com>
Thu, 7 Jun 2018 05:19:48 +0000 (07:19 +0200)
committerJoseph Salisbury <joseph.salisbury@canonical.com>
Thu, 15 Nov 2018 17:38:13 +0000 (12:38 -0500)
BugLink: https://bugs.launchpad.net/bugs/1787405
Added new inline function ap_pqap_zapq()
which is a C inline function wrapper for
the AP PQAP(ZAPQ) instruction.

Signed-off-by: Harald Freudenberger <freude@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
(cherry picked from commit ea3c4185efb34e3157caf0529be8f1a68acc0550)
Signed-off-by: Joseph Salisbury <joseph.salisbury@canonical.com>
Acked-by: Brad Figg <brad.figg@canonical.com>
Acked-by: Kamal Mostafa <kamal@canonical.com>
Acked-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
drivers/s390/crypto/ap_asm.h

index 16b59ce5e01d9f439f2050613cc6d6cfc6155776..b22d30aaf810fdf522f769ab385f825bd33742fa 100644 (file)
@@ -69,6 +69,25 @@ static inline struct ap_queue_status ap_rapq(ap_qid_t qid)
        return reg1;
 }
 
+/**
+ * ap_pqap_zapq(): Reset and zeroize adjunct processor queue.
+ * @qid: The AP queue number
+ *
+ * Returns AP queue status structure.
+ */
+static inline struct ap_queue_status ap_zapq(ap_qid_t qid)
+{
+       register unsigned long reg0 asm ("0") = qid | (2UL << 24);
+       register struct ap_queue_status reg1 asm ("1");
+
+       asm volatile(
+               ".long 0xb2af0000"              /* PQAP(ZAPQ) */
+               : "=d" (reg1)
+               : "d" (reg0)
+               : "cc");
+       return reg1;
+}
+
 /**
  * ap_aqic(): Control interruption for a specific AP.
  * @qid: The AP queue number