s390: ap: kvm: add PQAP interception for AQIC
authorPierre Morel <pmorel@linux.ibm.com>
Tue, 21 May 2019 15:34:34 +0000 (17:34 +0200)
committerVasily Gorbik <gor@linux.ibm.com>
Tue, 2 Jul 2019 14:00:27 +0000 (16:00 +0200)
commite5282de931057e2baa4bd73235a0773fde6e9649
tree50fbbc2081f17f78676d18b3b888e10f8af7aa97
parentda1776733617c4a92319eddb4e765ce60426b20a
s390: ap: kvm: add PQAP interception for AQIC

We prepare the interception of the PQAP/AQIC instruction for
the case the AQIC facility is enabled in the guest.

First of all we do not want to change existing behavior when
intercepting AP instructions without the SIE allowing the guest
to use AP instructions.

In this patch we only handle the AQIC interception allowed by
facility 65 which will be enabled when the complete interception
infrastructure will be present.

We add a callback inside the KVM arch structure for s390 for
a VFIO driver to handle a specific response to the PQAP
instruction with the AQIC command and only this command.

But we want to be able to return a correct answer to the guest
even there is no VFIO AP driver in the kernel.
Therefor, we inject the correct exceptions from inside KVM for the
case the callback is not initialized, which happens when the vfio_ap
driver is not loaded.

We do consider the responsibility of the driver to always initialize
the PQAP callback if it defines queues by initializing the CRYCB for
a guest.
If the callback has been setup we call it.
If not we setup an answer considering that no queue is available
for the guest when no callback has been setup.

Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
Reviewed-by: Tony Krowiak <akrowiak@linux.ibm.com>
Acked-by: Harald Freudenberger <freude@linux.ibm.com>
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Halil Pasic <pasic@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/include/asm/kvm_host.h
arch/s390/kvm/priv.c
drivers/s390/crypto/vfio_ap_private.h