Re: [PATCH v9 04/22] s390/zcrypt: Integrate ap_asm.h into include/asm/ap.h.
From: Cornelia Huck
Date: Tue Aug 14 2018 - 09:27:34 EST
On Mon, 13 Aug 2018 17:48:01 -0400
Tony Krowiak <akrowiak@xxxxxxxxxxxxxxxxxx> wrote:
> From: Harald Freudenberger <freude@xxxxxxxxxx>
>
> Move all the inline functions from the ap bus header
> file ap_asm.h into the in-kernel api header file
> arch/s390/include/asm/ap.h so that KVM can make use
> of all the low level AP functions.
>
> Signed-off-by: Harald Freudenberger <freude@xxxxxxxxxx>
> Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx>
> Signed-off-by: Tony Krowiak <akrowiak@xxxxxxxxxxxxx>
> ---
> arch/s390/include/asm/ap.h | 284 ++++++++++++++++++++++++++++++++++++----
> drivers/s390/crypto/ap_bus.c | 23 +---
> drivers/s390/crypto/ap_bus.h | 1 +
> drivers/s390/crypto/ap_card.c | 1 -
> drivers/s390/crypto/ap_queue.c | 1 -
> 5 files changed, 260 insertions(+), 50 deletions(-)
>
> diff --git a/arch/s390/include/asm/ap.h b/arch/s390/include/asm/ap.h
> index c1bedb4..887494a 100644
> --- a/arch/s390/include/asm/ap.h
> +++ b/arch/s390/include/asm/ap.h
> @@ -47,6 +47,50 @@ struct ap_queue_status {
> };
>
> /**
> + * ap_intructions_available() - Test if AP instructions are available.
> + *
> + * Returns 1 if the AP instructions are installed, otherwise 0.
> + */
> +static inline int ap_instructions_available(void)
> +{
> + register unsigned long reg0 asm ("0") = AP_MKQID(0, 0);
> + register unsigned long reg1 asm ("1") = 0;
> + register unsigned long reg2 asm ("2") = 0;
> +
> + asm volatile(
> + " .long 0xb2af0000\n" /* PQAP(TAPQ) */
> + "0: la %0,1\n"
> + "1:\n"
> + EX_TABLE(0b, 1b)
> + : "+d" (reg1), "+d" (reg2)
> + : "d" (reg0)
> + : "cc");
> + return reg1;
> +}
I think upstream this change (have this function return !0 when the
instructions are installed) will be an addon patch to the one which has
already made its way into master. Not really relevant for the remainder
of this patch series, though.