Here is a new pass at the channel-path handling code for vfio-ccw. This was initially developed by Farhan Ali this past summer, and picked up by me. For my own benefit/sanity, I made a small changelog in the commit message for each patch, describing the changes I've made to his original code beyond just rebasing to master, rather than a giant list appended here. I had been encountering a host crash which I think was triggered by this code rather than existing within it. I'd sent a potential fix for that separately, but need more diagnosis. So while that is outstanding, I think I've gotten most (but probably not all) comments from v1 addressed within. With this, and the corresponding QEMU series (to be posted momentarily), applied I am able to configure off/on a CHPID (for example, by issuing "chchp -c 0/1 xx" on the host), and the guest is able to see both the events and reflect the updated path masks in its structures. For reasons that are hopefully obvious, issuing chchp within the guest only works for the logical vary. Configuring it off/on does not work, which I think is fine. v1: https://lore.kernel.org/kvm/20191115025620.19593-1-farman@xxxxxxxxxxxxx/ Eric Farman (4): vfio-ccw: Refactor the unregister of the async regions vfio-ccw: Refactor IRQ handlers vfio-ccw: Add trace for CRW event vfio-ccw: Remove inline get_schid() routine Farhan Ali (5): vfio-ccw: Introduce new helper functions to free/destroy regions vfio-ccw: Register a chp_event callback for vfio-ccw vfio-ccw: Introduce a new schib region vfio-ccw: Introduce a new CRW region vfio-ccw: Wire up the CRW irq and CRW region Documentation/s390/vfio-ccw.rst | 31 ++++- drivers/s390/cio/Makefile | 2 +- drivers/s390/cio/vfio_ccw_chp.c | 136 ++++++++++++++++++++ drivers/s390/cio/vfio_ccw_drv.c | 186 ++++++++++++++++++++++++++-- drivers/s390/cio/vfio_ccw_fsm.c | 8 +- drivers/s390/cio/vfio_ccw_ops.c | 65 +++++++--- drivers/s390/cio/vfio_ccw_private.h | 16 +++ drivers/s390/cio/vfio_ccw_trace.c | 1 + drivers/s390/cio/vfio_ccw_trace.h | 30 +++++ include/uapi/linux/vfio.h | 3 + include/uapi/linux/vfio_ccw.h | 19 +++ 11 files changed, 463 insertions(+), 34 deletions(-) create mode 100644 drivers/s390/cio/vfio_ccw_chp.c -- 2.17.1