From: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
To: kvm@vger.kernel.org, linux-s390@vger.kernel.org, qemu-devel@nongnu.org
Cc: bjsdjshi@linux.vnet.ibm.com, cornelia.huck@de.ibm.com,
borntraeger@de.ibm.com, agraf@suse.com,
alex.williamson@redhat.com, eric.auger@redhat.com
Subject: [Qemu-devel] [PATCH v8 00/13] basic channel IO passthrough infrastructure based on vfio
Date: Wed, 17 May 2017 02:48:00 +0200 [thread overview]
Message-ID: <20170517004813.58227-1-bjsdjshi@linux.vnet.ibm.com> (raw)
The patch series introduce a basic channel I/O passthrough
infrastructure based on vfio.
- Focus on supporting dasd-eckd(cu_type/dev_type = 0x3990/0x3390) as
the target device.
- Support new qemu parameters in the style of:
-machine s390-ccw-virtio(,s390-squash-mcss=on|off) \
-device vfio-ccw,sysfsdev=$MDEV_PATH
We want to support real (i.e. not virtual) channel devices even for
guests that do not support MCSS-E (where guests may see devices from
any channel subsystem image at once). As all virtio-ccw devices are in
css 0xfe (and show up in the default css 0 for guests not activating
MCSS-E), we need an option to squash e.g. passed-through channel devices
from their real css (0-3, or 0 for hosts not activating MCSS-E) into
the default css, that is what the new machine option s390-squash-css is
added.
Build and install:
1. kernel configuration
CONFIG_S390_CCW_IOMMU=m
CONFIG_VFIO=m
CONFIG_VFIO_MDEV=m
CONFIG_VFIO_MDEV_DEVICE=m
CONFIG_VFIO_CCW=m
2. modules required
modprobe vfio.ko
modprobe mdev.ko
modprobe vfio_mdev.ko
modprobe vfio_iommu_type1.ko
modprobe vfio_ccw.ko
3. find a subchannel(0.0."%schid") of a DASD-ECKD device and bind it to
vfio_ccw driver
#find the dasd you can use with lsdasd on your host. e.g.:
devno="7e52"
schid="16ca"
#unbind the ccw device from the subchannel
echo 0.0."$devno" > /sys/bus/ccw/devices/0.0."$devno"/driver/unbind
#unbind the subchannel from io_subchannel driver
echo 0.0."$schid" > /sys/bus/css/devices/0.0."$schid"/driver/unbind
#bind the subchannel with vfio_ccw driver
echo 0.0."$schid" > /sys/bus/css/drivers/vfio_ccw/bind
4. create a mediated device
#generate a uuid with uuidgen. e.g.:
uuid="6dfd3ec5-e8b3-4e18-a6fe-57bc9eceb920"
echo "$uuid" > \
/sys/bus/css/devices/0.0."$schid"/mdev_supported_types/vfio_ccw-io/create
5. pass-through this device to a vm
-M s390-ccw-virtio,s390-squash-css=on \
-device vfio-ccw,sysfsdev=/sys/bus/mdev/devices/$uuid \
... ...
Change log:
v7 -> v8:
1. Rebased against master (commit: dd1559b), which contents the 3270
changes.
2. Patch #4:
Cosmetic changes for commit message and comments.
3. Patch #5:
Cosmetic changes for commit message and comments.
Removed an extra blank.
For CSS 0xFE use cases, renamed virtio and non virtio to virtual
and non virtual for the coressponding parameter, message, and
comments.
Used the new css_create_sch interface in hw/s390x/3270-ccw.c.
4. Patch #6:
Moved hw/s390x/s390-ccw.h to include/hw/s390x/s390-ccw.h.
Added a check for sscanf return.
5. Patch #9:
Removed the set_error label, and rename get_error to out_free_info.
6. Patch #13:
Added hw/s390x/s390-ccw.c and include/hw/s390x-s390-ccw.h.
7. For those patches which got a A-B and(or) a R-B, added it(them).
v6 -> v7:
1. Patch #6:
Use error_setg_errno as possible.
Use local Error variable as possible.
Free @sch when error out.
2. Patch #7:
Use local Error variable as possible.
Remove vfio_ccw_put_group.
3. Patch #8:
Use local Error variable as possible.
Free @info when error out.
4. Patch #9:
Use error_setg_errno as possible.
Use local Error variable as possible.
5. Patch #10:
Move handle_request from device to class.
Generate channel-check for information transfer error.
Improve pread logic.
v5 -> v6:
1. Rebase against git://github.com/cohuck/qemu s390-next.
2. Patch #6: correct error message: -vfio-ccw --> -device vfio-ccw
3. Patch #7:
Rewrite vfio_ccw_get_group by:
- removing unnecessary checking of path existance;
- removing useless 'path' variable;
Fix a typo: s/operationis/operations/
In vfio_ccw_unrealize, move cdc->unrealize to the end.
v4 -> v5:
1. Rebase to git://github.com/cohuck/qemu s390-next.
2. New patch #1: update-linux-headers.
3. Patch #6: update s390_ccw_realize according to the new code base.
4. New patch #13: add maintainer for vfio-ccw.
v3 -> v4:
1. Adjustments of the s-o-b chains for some patches.
v2 -> v3:
1. Move vfio_ccw.h to uapi.
2. Adopt the vfio-ccw cmdline interface as vfio-pci with mdev devices.
3. Rename s390-map-css to s390-squash-mcss (patch 2), and update devno
generation method (patch 5).
4. Patch 7: correct the validation of num_regions.
5. Patch 8: correct the validation of num_irqs.
v1 -> v2:
1. Rebase the implementation to the mdev framework approach.
2. Use pread and pwrite on an I/O region to issue I/O requests and
receive results.
Dong Jia Shi (8):
update-linux-headers: update for vfio-ccw
vfio: linux-headers update for vfio-ccw
s390x/css: realize css_create_sch
s390x/css: device support for s390-ccw passthrough
vfio/ccw: get io region info
vfio/ccw: get irqs info and set the eventfd fd
vfio/ccw: update sense data if a unit check is pending
MAINTAINERS: Add vfio-ccw maintainer
Xiao Feng Ren (5):
s390x/css: add s390-squash-mcss machine option
s390x/css: realize css_sch_build_schib
vfio/ccw: vfio based subchannel passthrough driver
s390x/css: introduce and realize ccw-request callback
s390x/css: ccw translation infrastructure
MAINTAINERS | 7 +
default-configs/s390x-softmmu.mak | 1 +
hw/s390x/3270-ccw.c | 6 +-
hw/s390x/Makefile.objs | 1 +
hw/s390x/css-bridge.c | 2 +
hw/s390x/css.c | 290 +++++++++++++++++++++++--
hw/s390x/s390-ccw.c | 153 +++++++++++++
hw/s390x/s390-virtio-ccw.c | 32 ++-
hw/s390x/virtio-ccw.c | 7 +-
hw/vfio/Makefile.objs | 1 +
hw/vfio/ccw.c | 434 +++++++++++++++++++++++++++++++++++++
include/hw/s390x/css-bridge.h | 1 +
include/hw/s390x/css.h | 67 +++---
include/hw/s390x/s390-ccw.h | 39 ++++
include/hw/s390x/s390-virtio-ccw.h | 1 +
include/hw/vfio/vfio-common.h | 1 +
linux-headers/linux/vfio.h | 17 ++
linux-headers/linux/vfio_ccw.h | 28 +++
qemu-options.hx | 6 +-
scripts/update-linux-headers.sh | 2 +-
target/s390x/cpu.h | 10 +
target/s390x/ioinst.c | 9 +
22 files changed, 1065 insertions(+), 50 deletions(-)
create mode 100644 hw/s390x/s390-ccw.c
create mode 100644 hw/vfio/ccw.c
create mode 100644 include/hw/s390x/s390-ccw.h
create mode 100644 linux-headers/linux/vfio_ccw.h
--
2.11.2
next reply other threads:[~2017-05-17 0:48 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-17 0:48 Dong Jia Shi [this message]
2017-05-17 0:48 ` [Qemu-devel] [PATCH v8 01/13] update-linux-headers: update for vfio-ccw Dong Jia Shi
2017-05-18 13:08 ` Cornelia Huck
2017-05-17 0:48 ` [Qemu-devel] [PATCH v8 02/13] vfio: linux-headers " Dong Jia Shi
2017-05-17 0:48 ` [Qemu-devel] [PATCH v8 03/13] s390x/css: add s390-squash-mcss machine option Dong Jia Shi
2017-05-17 0:48 ` [Qemu-devel] [PATCH v8 04/13] s390x/css: realize css_sch_build_schib Dong Jia Shi
2017-05-17 0:48 ` [Qemu-devel] [PATCH v8 05/13] s390x/css: realize css_create_sch Dong Jia Shi
2017-05-17 0:48 ` [Qemu-devel] [PATCH v8 06/13] s390x/css: device support for s390-ccw passthrough Dong Jia Shi
2017-05-17 0:48 ` [Qemu-devel] [PATCH v8 07/13] vfio/ccw: vfio based subchannel passthrough driver Dong Jia Shi
2017-05-17 0:48 ` [Qemu-devel] [PATCH v8 08/13] vfio/ccw: get io region info Dong Jia Shi
2017-05-17 0:48 ` [Qemu-devel] [PATCH v8 09/13] vfio/ccw: get irqs info and set the eventfd fd Dong Jia Shi
2017-05-17 0:48 ` [Qemu-devel] [PATCH v8 10/13] s390x/css: introduce and realize ccw-request callback Dong Jia Shi
2017-05-17 0:48 ` [Qemu-devel] [PATCH v8 11/13] s390x/css: ccw translation infrastructure Dong Jia Shi
2017-05-17 0:48 ` [Qemu-devel] [PATCH v8 12/13] vfio/ccw: update sense data if a unit check is pending Dong Jia Shi
2017-05-17 0:48 ` [Qemu-devel] [PATCH v8 13/13] MAINTAINERS: Add vfio-ccw maintainer Dong Jia Shi
2017-05-18 13:09 ` Cornelia Huck
2017-05-18 13:13 ` [Qemu-devel] [PATCH v8 00/13] basic channel IO passthrough infrastructure based on vfio Cornelia Huck
2017-05-19 0:49 ` Dong Jia Shi
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=20170517004813.58227-1-bjsdjshi@linux.vnet.ibm.com \
--to=bjsdjshi@linux.vnet.ibm.com \
--cc=agraf@suse.com \
--cc=alex.williamson@redhat.com \
--cc=borntraeger@de.ibm.com \
--cc=cornelia.huck@de.ibm.com \
--cc=eric.auger@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=qemu-devel@nongnu.org \
/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).