This series has 3 different type of patches: The first two: s390x/vfio: ap: Finding the AP bridge s390x/vfio: ap: Use the APdevice as a child of the APBus
Are dealing with the QEMU Object Model and how we retrieve the AP devices from instruction interception. A lifting of the AP bridge, bus and device was necessary to ease the process and allow future extensions. The third one is a place holder to ease reviewing: s390x/vfio: ap: Linux uapi VFIO place holder The last three are really dealing with PQAP/AQIC instruction interception and associate IOCTL calls to the VFIO AP device driver. s390x/cpumodel: Set up CPU model for AQIC interception s390x/vfio: ap: Definition for AP Adapter type s390x/vfio: ap: Implementing AP Queue Interrupt Control The S390 APQP/AQIC instruction is intercepted by the host to configure the AP queues interruption redirection. It retrieves the ISC used by the host and the one used by the guest and setup the indicator address. This patch series - define the AQIC feature in the cpumodel, - extend the APDevice type for per card and queue interrupt handling, - intercept the APQP/AQIC instruction, uses the S390 adapter interface to setup the adapter - and use a VFIO ioctl to let the VFIO-AP driver handle the host instruction associated with the intercepted guest instruction. This patch serie can be tested with the Linux/KVM patch series for the VFIO-AP driver: "s390: vfio: ap: Using GISA for AP Interrupt" Pierre Morel (6): s390x/vfio: ap: Finding the AP bridge s390x/vfio: ap: Use the APdevice as a child of the APBus s390x/vfio: ap: Linux uapi VFIO place holder s390x/cpumodel: Set up CPU model for AQIC interception s390x/vfio: ap: Definition for AP Adapter type s390x/vfio: ap: Implementing AP Queue Interrupt Control hw/s390x/ap-bridge.c | 12 ++++ hw/s390x/ap-device.c | 22 +++++++ hw/vfio/ap.c | 131 +++++++++++++++++++++++++++++++++++++--- include/hw/s390x/ap-bridge.h | 1 + include/hw/s390x/ap-device.h | 65 ++++++++++++++++++++ include/hw/s390x/css.h | 1 + linux-headers/linux/vfio.h | 25 ++++++++ target/s390x/cpu_features.c | 1 + target/s390x/cpu_features_def.h | 1 + target/s390x/cpu_models.c | 1 + target/s390x/gen-features.c | 1 + target/s390x/kvm.c | 31 ++++++++++ 12 files changed, 282 insertions(+), 10 deletions(-) -- 2.7.4 Changelog from v1: - legitimate "Huh" from Conny on global lead me to reconsider the QOM for AP Device, BUS and Bridge and remove globals - squash patches for kvm.c and hw/vfio/ap.c (Conny) so related changes are easier to see - modified the UAPI (Also comes from Linux) - suppressed complicated structures to integer conversions and use masks to avoid endianess considerations, I did not change anything for endianess since we get all from the registers, AFAIU we do not need to. Tell me if I am wrong (I know you will :) ) - simplified the implementation of the ioctl Tested with according Linux patch. Take care that the UAPI changed betwen V1 and V2! and do NOT use with the older version.