Message ID | 20211207205743.150299-1-mjrosato@linux.ibm.com (mailing list archive) |
---|---|
Headers | show |
Series | KVM: s390: enable zPCI for interpretive execution | expand |
On 12/7/21 3:57 PM, Matthew Rosato wrote: > Enable interpretive execution of zPCI instructions + adapter interruption > forwarding for s390x KVM vfio-pci. This is done by introducing a series > of new vfio-pci feature ioctls that are unique vfio-pci-zdev (s390x) and > are used to negotiate the various aspects of zPCI interpretation setup. > By allowing intepretation of zPCI instructions and firmware delivery of > interrupts to guests, we can significantly reduce the frequency of guest > SIE exits for zPCI. We then see additional gains by handling a hot-path > instruction that can still intercept to the hypervisor (RPCIT) directly > in kvm. > > From the perspective of guest configuration, you passthrough zPCI devices > in the same manner as before, with intepretation support being used by > default if available in kernel+qemu. > > Will reply with a link to the associated QEMU series. https://lists.gnu.org/archive/html/qemu-devel/2021-12/msg00873.html > > Matthew Rosato (32): > s390/sclp: detect the zPCI interpretation facility > s390/sclp: detect the AISII facility > s390/sclp: detect the AENI facility > s390/sclp: detect the AISI facility > s390/airq: pass more TPI info to airq handlers > s390/airq: allow for airq structure that uses an input vector > s390/pci: externalize the SIC operation controls and routine > s390/pci: stash associated GISA designation > s390/pci: export some routines related to RPCIT processing > s390/pci: stash dtsm and maxstbl > s390/pci: add helper function to find device by handle > s390/pci: get SHM information from list pci > KVM: s390: pci: add basic kvm_zdev structure > KVM: s390: pci: do initial setup for AEN interpretation > KVM: s390: pci: enable host forwarding of Adapter Event Notifications > KVM: s390: expose the guest zPCI interpretation facility > KVM: s390: expose the guest Adapter Interruption Source ID facility > KVM: s390: expose guest Adapter Event Notification Interpretation > facility > KVM: s390: mechanism to enable guest zPCI Interpretation > KVM: s390: pci: provide routines for enabling/disabling interpretation > KVM: s390: pci: provide routines for enabling/disabling interrupt > forwarding > KVM: s390: pci: provide routines for enabling/disabling IOAT assist > KVM: s390: pci: handle refresh of PCI translations > KVM: s390: intercept the rpcit instruction > vfio/pci: re-introduce CONFIG_VFIO_PCI_ZDEV > vfio-pci/zdev: wire up group notifier > vfio-pci/zdev: wire up zPCI interpretive execution support > vfio-pci/zdev: wire up zPCI adapter interrupt forwarding support > vfio-pci/zdev: wire up zPCI IOAT assist support > vfio-pci/zdev: add DTSM to clp group capability > KVM: s390: introduce CPU feature for zPCI Interpretation > MAINTAINERS: additional files related kvm s390 pci passthrough > > MAINTAINERS | 2 + > arch/s390/include/asm/airq.h | 7 +- > arch/s390/include/asm/kvm_host.h | 5 + > arch/s390/include/asm/kvm_pci.h | 62 +++ > arch/s390/include/asm/pci.h | 13 + > arch/s390/include/asm/pci_clp.h | 11 +- > arch/s390/include/asm/pci_dma.h | 3 + > arch/s390/include/asm/pci_insn.h | 29 +- > arch/s390/include/asm/sclp.h | 4 + > arch/s390/include/asm/tpi.h | 14 + > arch/s390/include/uapi/asm/kvm.h | 1 + > arch/s390/kvm/Makefile | 2 +- > arch/s390/kvm/interrupt.c | 97 +++- > arch/s390/kvm/kvm-s390.c | 65 ++- > arch/s390/kvm/kvm-s390.h | 10 + > arch/s390/kvm/pci.c | 784 +++++++++++++++++++++++++++++++ > arch/s390/kvm/pci.h | 59 +++ > arch/s390/kvm/priv.c | 41 ++ > arch/s390/pci/pci.c | 47 ++ > arch/s390/pci/pci_clp.c | 19 +- > arch/s390/pci/pci_dma.c | 1 + > arch/s390/pci/pci_insn.c | 5 +- > arch/s390/pci/pci_irq.c | 50 +- > drivers/s390/char/sclp_early.c | 4 + > drivers/s390/cio/airq.c | 12 +- > drivers/s390/cio/qdio_thinint.c | 6 +- > drivers/s390/crypto/ap_bus.c | 9 +- > drivers/s390/virtio/virtio_ccw.c | 6 +- > drivers/vfio/pci/Kconfig | 11 + > drivers/vfio/pci/Makefile | 2 +- > drivers/vfio/pci/vfio_pci_core.c | 8 + > drivers/vfio/pci/vfio_pci_zdev.c | 292 +++++++++++- > include/linux/vfio_pci_core.h | 44 +- > include/uapi/linux/vfio.h | 22 + > include/uapi/linux/vfio_zdev.h | 51 ++ > 35 files changed, 1738 insertions(+), 60 deletions(-) > create mode 100644 arch/s390/include/asm/kvm_pci.h > create mode 100644 arch/s390/kvm/pci.c > create mode 100644 arch/s390/kvm/pci.h >