s390/zcrypt: support special flagged EP11 cprbs
authorHarald Freudenberger <freude@linux.ibm.com>
Wed, 5 Jun 2019 05:19:54 +0000 (07:19 +0200)
committerHeiko Carstens <heiko.carstens@de.ibm.com>
Fri, 7 Jun 2019 08:09:55 +0000 (10:09 +0200)
Within an EP11 cprb there exists a byte field flags. Bit 0x20
of this field indicates a special cprb. A special cprb triggers
special handling in the firmware below the OS layer.

However, a special cprb also needs to have the S bit in GPR0
set when NQAP is called. This was not the case for EP11 cprbs
and this patch now introduces the code to support this.

Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
drivers/s390/crypto/zcrypt_msgtype6.c

index 0cbcc238ef983aa80e2baaa0c38828458d523822..12fe9deb265ea7fb97485805eab192ee232a3b56 100644 (file)
@@ -567,6 +567,10 @@ static int xcrb_msg_to_type6_ep11cprb_msgx(struct ap_message *ap_msg,
        payload_hdr = (struct pld_hdr *)((&(msg->pld_lenfmt))+lfmt);
        *fcode = payload_hdr->func_val & 0xFFFF;
 
+       /* enable special processing based on the cprbs flags special bit */
+       if (msg->cprbx.flags & 0x20)
+               ap_msg->special = 1;
+
        return 0;
 }