All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/15] s390: vfio-ap: guest dedicated crypto adapters
@ 2018-04-15 21:22 Tony Krowiak
  2018-04-15 21:22 ` [PATCH v4 01/15] s390: zcrypt: externalize AP instructions available function Tony Krowiak
                   ` (14 more replies)
  0 siblings, 15 replies; 86+ messages in thread
From: Tony Krowiak @ 2018-04-15 21:22 UTC (permalink / raw)
  To: linux-s390, linux-kernel, kvm
  Cc: freude, schwidefsky, heiko.carstens, borntraeger, cohuck,
	kwankhede, bjsdjshi, pbonzini, alex.williamson, pmorel, alifm,
	mjrosato, jjherne, thuth, pasic, berrange, fiuczy, buendgen,
	akrowiak

On s390, we have cryptographic coprocessor cards, which are modeled on
Linux as devices on the AP bus. Each card can be partitioned into domains
which can be thought of as a set of hardware registers for processing 
crypto commands. Crypto commands are sent to a specific domain within a
card is via a queue which is identified as a (card,domain) tuple. We model 
this something like the following (assuming we have access to cards 3 and 
4 and domains 1 and 2):

AP -> card3 -> queue (3,1)
            -> queue (3,2)
   -> card4 -> queue (4,1)
            -> queue (4,2)

If we want to virtualize this, we can use a feature provided by the
hardware. We basically attach a satellite control block to our main
hardware virtualization control block and the hardware takes care of
most of the rest.

For this control block, we don't specify explicit tuples, but a list of
cards and a list of domains. The guest will get access to the cross
product.

Because of this, we need to take care that the lists provided to
different guests don't overlap; i.e., we need to enforce sane
configurations. Otherwise, one guest may get access to things like
secret keys for another guest.

The idea of this patch set is to introduce a new device, the matrix
device. This matrix device hangs off a different root and acts as the
parent node for mdev devices.

If you now want to give the tuples (4,1) and (4,2), you need to do the
following:

- Unbind the (4,1) and (4,2) tuples from their ap bus driver.
- Bind the (4,1) and (4,2) tuples to the vfio_ap driver.
- Create the mediated device.
- Assign card 4 and domains 1 and 2 to the mediated device

QEMU will now simply consume the mediated device and things should work.

For a complete description of the architecture and concepts underlying the 
design, see the Documentation/s390/vfio-ap.txt file included with this
patch set.

Change log v3 -> v4
===================
* Resolved issue with enabling ZCRYPT when KVM is enabled by using
  #ifdef ZCRYPT in relevant functions
* Added patch with a new function for resetting the crypto attributes
  for all vcpus to resolve the issue raised with running vcpus getting out 
  of sync.
* Removed KVM_S390_VM_CRYPTO_INTERPRET_AP: Setting interpretive exec mode
  from vfio_ap driver when mdev device is opened.


Tony Krowiak (15):
  s390: zcrypt: externalize AP instructions available function
  KVM: s390: reset crypto attributes for all vcpus
  KVM: s390: refactor crypto initialization
  KVM: s390: CPU model support for AP virtualization
  KVM: s390: enable/disable AP interpretive execution
  s390: vfio-ap: base implementation of VFIO AP device driver
  s390: vfio-ap: register matrix device with VFIO mdev framework
  KVM: s390: interfaces to (de)configure guest's AP matrix
  s390: vfio-ap: sysfs interfaces to configure adapters
  s390: vfio-ap: sysfs interfaces to configure domains
  s390: vfio-ap: sysfs interfaces to configure control domains
  s390: vfio-ap: sysfs interface to view matrix mdev matrix
  KVM: s390: configure the guest's AP devices
  s390: vfio-ap: implement VFIO_DEVICE_GET_INFO ioctl
  s390: doc: detailed specifications for AP virtualization

 Documentation/s390/vfio-ap.txt        |  567 +++++++++++++++++++++
 MAINTAINERS                           |   12 +
 arch/s390/Kconfig                     |   11 +
 arch/s390/include/asm/ap.h            |    7 +
 arch/s390/include/asm/kvm-ap.h        |  136 +++++
 arch/s390/include/asm/kvm_host.h      |    3 +
 arch/s390/include/uapi/asm/kvm.h      |    1 +
 arch/s390/kvm/Makefile                |    2 +-
 arch/s390/kvm/kvm-ap.c                |  339 +++++++++++++
 arch/s390/kvm/kvm-s390.c              |   93 ++---
 arch/s390/kvm/kvm-s390.h              |   14 +
 arch/s390/tools/gen_facilities.c      |    2 +
 drivers/s390/crypto/Makefile          |    4 +
 drivers/s390/crypto/ap_bus.c          |    6 +
 drivers/s390/crypto/vfio_ap_drv.c     |  143 ++++++
 drivers/s390/crypto/vfio_ap_ops.c     |  873 +++++++++++++++++++++++++++++++++
 drivers/s390/crypto/vfio_ap_private.h |   46 ++
 include/uapi/linux/vfio.h             |    2 +
 18 files changed, 2200 insertions(+), 61 deletions(-)
 create mode 100644 Documentation/s390/vfio-ap.txt
 create mode 100644 arch/s390/include/asm/kvm-ap.h
 create mode 100644 arch/s390/kvm/kvm-ap.c
 create mode 100644 drivers/s390/crypto/vfio_ap_drv.c
 create mode 100644 drivers/s390/crypto/vfio_ap_ops.c
 create mode 100644 drivers/s390/crypto/vfio_ap_private.h

^ permalink raw reply	[flat|nested] 86+ messages in thread

end of thread, other threads:[~2018-05-07 14:55 UTC | newest]

Thread overview: 86+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-15 21:22 [PATCH v4 00/15] s390: vfio-ap: guest dedicated crypto adapters Tony Krowiak
2018-04-15 21:22 ` [PATCH v4 01/15] s390: zcrypt: externalize AP instructions available function Tony Krowiak
2018-04-16  8:44   ` Pierre Morel
2018-04-16 12:11     ` Cornelia Huck
2018-04-17 13:31       ` Tony Krowiak
2018-04-17 16:56         ` Cornelia Huck
2018-04-17 18:14           ` Tony Krowiak
     [not found]           ` <db4245ec-0191-2c32-5c1c-12af50b944c6@linux.vnet.ibm.com>
2018-04-23  7:04             ` Cornelia Huck
2018-04-16 15:59   ` Pierre Morel
     [not found]     ` <OFF71B62BB.95581C62-ON00258272.00264957-C1258272.0026A1CA@notes.na.collabserv.com>
2018-04-17 12:44       ` Pierre Morel
2018-05-04  7:19   ` David Hildenbrand
2018-05-07 14:02     ` Tony Krowiak
2018-05-07 14:55       ` David Hildenbrand
2018-04-15 21:22 ` [PATCH v4 02/15] KVM: s390: reset crypto attributes for all vcpus Tony Krowiak
2018-04-17 11:34   ` Cornelia Huck
2018-04-17 13:47     ` Tony Krowiak
2018-04-17 14:09       ` Cornelia Huck
2018-04-17 14:29   ` Halil Pasic
2018-04-17 14:55     ` Tony Krowiak
2018-04-17 15:10       ` Cornelia Huck
2018-04-17 17:54         ` Tony Krowiak
2018-04-15 21:22 ` [PATCH v4 03/15] KVM: s390: refactor crypto initialization Tony Krowiak
2018-04-16  8:56   ` Pierre Morel
     [not found]     ` <OFE3FE11B1.8E1BDDEF-ON00258272.002AEDB1-C1258272.002B06EF@notes.na.collabserv.com>
2018-04-17 10:10       ` Cornelia Huck
2018-04-17 10:10         ` Cornelia Huck
2018-04-17 14:26         ` Tony Krowiak
2018-04-17 15:21           ` Cornelia Huck
2018-04-17 18:08             ` Tony Krowiak
2018-04-18  7:49               ` Cornelia Huck
2018-04-22 14:52                 ` Tony Krowiak
2018-04-23  7:03                   ` Cornelia Huck
2018-04-24 13:01                     ` Tony Krowiak
2018-04-24 13:13                       ` Cornelia Huck
2018-04-17 14:15     ` Tony Krowiak
2018-04-17 15:52       ` Pierre Morel
2018-04-22 21:11         ` Tony Krowiak
2018-04-17 14:30   ` Tony Krowiak
2018-04-15 21:22 ` [PATCH v4 04/15] KVM: s390: CPU model support for AP virtualization Tony Krowiak
2018-04-15 21:22 ` [PATCH v4 05/15] KVM: s390: enable/disable AP interpretive execution Tony Krowiak
2018-04-16 10:51   ` Pierre Morel
2018-04-16 11:13     ` Pierre Morel
2018-04-16 11:52       ` Halil Pasic
2018-04-17 15:12         ` Tony Krowiak
2018-04-17 15:09       ` Tony Krowiak
2018-04-17 15:02     ` Tony Krowiak
2018-04-17 16:13       ` Pierre Morel
2018-04-17 16:22         ` Tony Krowiak
2018-04-17 16:55           ` Pierre Morel
2018-04-17 18:11             ` Tony Krowiak
2018-04-18  8:31               ` Pierre Morel
2018-04-19 14:28                 ` Tony Krowiak
2018-04-17 16:34         ` Tony Krowiak
2018-04-16 11:12   ` Halil Pasic
2018-04-17 15:11     ` Tony Krowiak
2018-04-15 21:22 ` [PATCH v4 06/15] s390: vfio-ap: base implementation of VFIO AP device driver Tony Krowiak
2018-04-15 21:22 ` [PATCH v4 07/15] s390: vfio-ap: register matrix device with VFIO mdev framework Tony Krowiak
2018-04-15 21:22 ` [PATCH v4 08/15] KVM: s390: interfaces to (de)configure guest's AP matrix Tony Krowiak
2018-04-16  5:04   ` kbuild test robot
2018-04-16  5:04     ` kbuild test robot
2018-04-23 13:46   ` Pierre Morel
2018-04-25 16:21     ` Tony Krowiak
2018-05-02 14:57       ` Pierre Morel
2018-05-03 14:41         ` Tony Krowiak
2018-05-03 16:01           ` Pierre Morel
2018-05-07 14:14             ` Tony Krowiak
2018-04-15 21:22 ` [PATCH v4 09/15] s390: vfio-ap: sysfs interfaces to configure adapters Tony Krowiak
2018-04-15 21:22 ` [PATCH v4 10/15] s390: vfio-ap: sysfs interfaces to configure domains Tony Krowiak
2018-04-15 21:22 ` [PATCH v4 11/15] s390: vfio-ap: sysfs interfaces to configure control domains Tony Krowiak
2018-04-15 21:22 ` [PATCH v4 12/15] s390: vfio-ap: sysfs interface to view matrix mdev matrix Tony Krowiak
2018-04-15 21:22 ` [PATCH v4 13/15] KVM: s390: configure the guest's AP devices Tony Krowiak
2018-04-16 13:05   ` Pierre Morel
2018-04-16 14:51     ` Halil Pasic
2018-04-17 16:12       ` Tony Krowiak
2018-04-17 16:08     ` Tony Krowiak
2018-04-17 16:18       ` Pierre Morel
2018-04-17 16:36         ` Tony Krowiak
2018-04-18 11:56   ` Pierre Morel
2018-04-22 14:54     ` Tony Krowiak
2018-04-15 21:22 ` [PATCH v4 14/15] s390: vfio-ap: implement VFIO_DEVICE_GET_INFO ioctl Tony Krowiak
2018-04-15 21:22 ` [PATCH v4 15/15] s390: doc: detailed specifications for AP virtualization Tony Krowiak
2018-04-16 13:13   ` Pierre Morel
2018-04-16 13:53     ` Cornelia Huck
2018-04-17 16:16       ` Tony Krowiak
2018-04-17 16:14     ` Tony Krowiak
2018-04-17 16:25       ` Pierre Morel
2018-04-17 16:37         ` Tony Krowiak

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.