kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Matthew Rosato <mjrosato@linux.ibm.com>
To: qemu-s390x@nongnu.org
Cc: alex.williamson@redhat.com, schnelle@linux.ibm.com,
	cohuck@redhat.com, thuth@redhat.com, farman@linux.ibm.com,
	pmorel@linux.ibm.com, richard.henderson@linaro.org,
	david@redhat.com, pasic@linux.ibm.com, borntraeger@linux.ibm.com,
	mst@redhat.com, pbonzini@redhat.com, qemu-devel@nongnu.org,
	kvm@vger.kernel.org
Subject: [PATCH v7 0/8] s390x/pci: zPCI interpretation support
Date: Mon,  6 Jun 2022 16:36:06 -0400	[thread overview]
Message-ID: <20220606203614.110928-1-mjrosato@linux.ibm.com> (raw)

For QEMU, the majority of the work in enabling instruction interpretation
is handled via SHM bit settings (to indicate to firmware whether or not
interpretive execution facilities are to be used) + a new KVM ioctl is
used to setup firmware-interpreted forwarding of Adapter Event
Notifications.

This series also adds a new, optional 'interpret' parameter to zpci which
can be used to disable interpretation support (interpret=off) as well as
an 'forwarding_assist' parameter to determine whether or not the firmware
assist will be used for adapter event delivery (default when
interpretation is in use) or whether the host will be responsible for
delivering all adapter event notifications (forwarding_assist=off).

The zpcii-disable machine property is added to allow disabling use of
zPCI interpretation facilities for a guest. This property is set to on
for older (pre-7.1 compat machines), but defaults to off for 7.1 and
newer. This allows newer machines to use interpretation by default if
the necessary kernel interfaces and hardware facilities are available,
but also provides a mechanism for disabling interpretation completely
for debug purposes.

As a consequence of implementing zPCI interpretation, ISM devices now
become eligible for passthrough (but only when zPCI interpretation is
available).

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.

Associated kernel series:
https://lore.kernel.org/kvm/20220606203325.110625-1-mjrosato@linux.ibm.com/

Changelog v6->v7:
- update linux header sync to 5.19-rc1 + latest kernel series
- Drop 'target/s390x: add zpci-interp to cpu models' (David)
- Add a new patch that adds the zpcii-disable machine property.
  zpcii-disable=on can be used to force interpretation facilities off
  for the guest.  With this series, 7.1 machine and newer will default
  this to off, meaning interpretation will be allowed if available by
  default.  7.0 and older machines will default to zpcii-disable=on.
  zPCI interpretation will only be used when the underlying kernel
  supports it, hardware facilties are available and zpcii-disable=off.

Matthew Rosato (8):
  Update linux headers
  s390x/pci: add routine to get host function handle from CLP info
  s390x/pci: enable for load/store intepretation
  s390x/pci: don't fence interpreted devices without MSI-X
  s390x/pci: enable adapter event notification for interpreted devices
  s390x/pci: let intercept devices have separate PCI groups
  s390x/pci: reflect proper maxstbl for groups of interpreted devices
  s390x/s390-virtio-ccw: add zpcii-disable machine property

 hw/s390x/meson.build                         |   1 +
 hw/s390x/s390-pci-bus.c                      | 111 +++++++++++++++-
 hw/s390x/s390-pci-inst.c                     |  56 +++++++-
 hw/s390x/s390-pci-kvm.c                      |  54 ++++++++
 hw/s390x/s390-pci-vfio.c                     | 129 ++++++++++++++++---
 hw/s390x/s390-virtio-ccw.c                   |  24 ++++
 include/hw/s390x/s390-pci-bus.h              |   8 +-
 include/hw/s390x/s390-pci-kvm.h              |  38 ++++++
 include/hw/s390x/s390-pci-vfio.h             |   5 +
 include/hw/s390x/s390-virtio-ccw.h           |   1 +
 include/standard-headers/asm-x86/bootparam.h |   1 +
 include/standard-headers/drm/drm_fourcc.h    |  69 ++++++++++
 include/standard-headers/linux/ethtool.h     |   1 +
 include/standard-headers/linux/input.h       |   1 +
 include/standard-headers/linux/pci_regs.h    |   1 +
 include/standard-headers/linux/vhost_types.h |  11 +-
 include/standard-headers/linux/virtio_ids.h  |  14 +-
 linux-headers/asm-arm64/kvm.h                |  27 ++++
 linux-headers/asm-generic/unistd.h           |   4 +-
 linux-headers/asm-riscv/kvm.h                |  20 +++
 linux-headers/asm-riscv/unistd.h             |   3 +-
 linux-headers/asm-x86/kvm.h                  |  11 +-
 linux-headers/asm-x86/mman.h                 |  14 --
 linux-headers/linux/kvm.h                    |  85 +++++++++++-
 linux-headers/linux/userfaultfd.h            |  10 +-
 linux-headers/linux/vfio.h                   |   4 +-
 linux-headers/linux/vfio_zdev.h              |   7 +
 linux-headers/linux/vhost.h                  |  26 +++-
 qemu-options.hx                              |   8 +-
 target/s390x/kvm/kvm.c                       |   7 +
 target/s390x/kvm/kvm_s390x.h                 |   1 +
 util/qemu-config.c                           |   4 +
 32 files changed, 683 insertions(+), 73 deletions(-)
 create mode 100644 hw/s390x/s390-pci-kvm.c
 create mode 100644 include/hw/s390x/s390-pci-kvm.h

-- 
2.27.0


             reply	other threads:[~2022-06-06 20:40 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-06 20:36 Matthew Rosato [this message]
2022-06-06 20:36 ` [PATCH v7 1/8] Update linux headers Matthew Rosato
2022-06-06 20:36 ` [PATCH v7 2/8] s390x/pci: add routine to get host function handle from CLP info Matthew Rosato
2022-06-06 20:36 ` [PATCH v7 3/8] s390x/pci: enable for load/store intepretation Matthew Rosato
2022-06-22  8:35   ` Pierre Morel
2022-06-22 15:20     ` Matthew Rosato
2022-06-06 20:36 ` [PATCH v7 4/8] s390x/pci: don't fence interpreted devices without MSI-X Matthew Rosato
2022-06-06 20:36 ` [PATCH v7 5/8] s390x/pci: enable adapter event notification for interpreted devices Matthew Rosato
2022-06-06 20:36 ` [PATCH v7 6/8] s390x/pci: let intercept devices have separate PCI groups Matthew Rosato
2022-06-06 20:36 ` [PATCH v7 7/8] s390x/pci: reflect proper maxstbl for groups of interpreted devices Matthew Rosato
2022-06-06 20:36 ` [PATCH v7 8/8] s390x/s390-virtio-ccw: add zpcii-disable machine property Matthew Rosato
2022-06-22  8:50   ` Pierre Morel
2022-06-22 15:20     ` Matthew Rosato
2022-06-23 13:50       ` Pierre Morel
2022-06-23 14:26         ` Matthew Rosato

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220606203614.110928-1-mjrosato@linux.ibm.com \
    --to=mjrosato@linux.ibm.com \
    --cc=alex.williamson@redhat.com \
    --cc=borntraeger@linux.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=david@redhat.com \
    --cc=farman@linux.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=pasic@linux.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=pmorel@linux.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=schnelle@linux.ibm.com \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).