qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Matthew Rosato <mjrosato@linux.ibm.com>
To: cohuck@redhat.com, thuth@redhat.com
Cc: pmorel@linux.ibm.com, david@redhat.com, schnelle@linux.ibm.com,
	richard.henderson@linaro.org, qemu-s390x@nongnu.org,
	qemu-devel@nongnu.org, pasic@linux.ibm.com,
	borntraeger@de.ibm.com, alex.williamson@redhat.com,
	mst@redhat.com, pbonzini@redhat.com
Subject: [RFC 0/8] s390x/pci: Fixing s390 vfio-pci ISM support
Date: Wed,  9 Dec 2020 15:34:18 -0500	[thread overview]
Message-ID: <1607546066-2240-1-git-send-email-mjrosato@linux.ibm.com> (raw)

Today, ISM devices are completely disallowed for vfio-pci passthrough as
QEMU rejects the device due to an (inappropriate) MSI-X check.  Removing
this fence, however, reveals additional deficiencies in the s390x PCI
interception layer that prevent ISM devices from working correctly.
Namely, ISM block write operations have particular requirements in regards
to the alignment, size and order of writes performed that cannot be
guaranteed when breaking up write operations through the typical
vfio_pci_bar_rw paths. Furthermore, ISM requires that legacy/non-MIO
s390 PCI instructions are used, which is also not guaranteed when the I/O
is passed through the typical userspace channels.

This patchset provides a set of fixes related to enabling ISM device
passthrough and includes patches to enable use of a new vfio region that
will allow s390x PCI pass-through devices to perform s390 PCI instructions
in such a way that the same instruction issued on the guest is re-issued
on the host.

The region is intended for use with ISM devices specifically, as they do
not implement MSI-X and thus transferring I/O in this manner will not
interfere with vfio-pci MSI-X masking.  If someone can think of a good way
to also make this MSI-X compatible (and thus usable by other device types
besides ISM), I'm open to suggestions...

Associated kernel patchset:
https://lkml.org/lkml/2020/12/9/1059

Matthew Rosato (8):
  linux-headers: update against 5.10-rc7
  s390x/pci: MSI-X isn't strictly required for passthrough
  s390x/pci: fix pcistb length
  s390x/pci: Introduce the ZpciOps structure
  s390x/pci: Fix memory_region_access_valid call
  s390x/pci: Handle devices that support relaxed alignment
  s390x/pci: PCISTB via the vfio zPCI I/O region
  s390x/pci: PCILG via the vfio zPCI I/O region

 hw/s390x/s390-pci-bus.c                            |  32 ++-
 hw/s390x/s390-pci-inst.c                           | 289 ++++++++++++++-------
 hw/s390x/s390-pci-vfio.c                           | 164 ++++++++++++
 include/hw/s390x/s390-pci-bus.h                    |  24 ++
 include/hw/s390x/s390-pci-clp.h                    |   1 +
 include/hw/s390x/s390-pci-inst.h                   |   3 +
 include/hw/s390x/s390-pci-vfio.h                   |  23 ++
 include/standard-headers/asm-x86/kvm_para.h        |   1 +
 .../infiniband/hw/vmw_pvrdma/pvrdma_verbs.h        |   2 +-
 include/standard-headers/linux/vhost_types.h       |   9 +
 linux-headers/linux/vfio.h                         |   4 +
 linux-headers/linux/vfio_zdev.h                    |  33 +++
 linux-headers/linux/vhost.h                        |   4 +
 13 files changed, 486 insertions(+), 103 deletions(-)

-- 
1.8.3.1



             reply	other threads:[~2020-12-09 20:51 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-09 20:34 Matthew Rosato [this message]
2020-12-09 20:34 ` [RFC 1/8] linux-headers: update against 5.10-rc7 Matthew Rosato
2020-12-09 20:34 ` [RFC 2/8] s390x/pci: MSI-X isn't strictly required for passthrough Matthew Rosato
2020-12-10 10:28   ` Cornelia Huck
2020-12-10 15:13     ` Matthew Rosato
2020-12-17 13:08       ` Cornelia Huck
2020-12-17 15:12         ` Matthew Rosato
2020-12-09 20:34 ` [RFC 3/8] s390x/pci: fix pcistb length Matthew Rosato
2020-12-10 10:30   ` Cornelia Huck
2020-12-10 15:15     ` Matthew Rosato
2020-12-17 13:09       ` Cornelia Huck
2020-12-09 20:34 ` [RFC 4/8] s390x/pci: Introduce the ZpciOps structure Matthew Rosato
2020-12-09 20:34 ` [RFC 5/8] s390x/pci: Fix memory_region_access_valid call Matthew Rosato
2020-12-10 12:15   ` Cornelia Huck
2020-12-09 20:34 ` [RFC 6/8] s390x/pci: Handle devices that support relaxed alignment Matthew Rosato
2020-12-09 20:34 ` [RFC 7/8] s390x/pci: PCISTB via the vfio zPCI I/O region Matthew Rosato
2020-12-09 20:34 ` [RFC 8/8] s390x/pci: PCILG " 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=1607546066-2240-1-git-send-email-mjrosato@linux.ibm.com \
    --to=mjrosato@linux.ibm.com \
    --cc=alex.williamson@redhat.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=david@redhat.com \
    --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).