For QEMU, the majority of the work in enabling instruction interpretation is handled via a new KVM ioctls to enable interpretation, interrupt forwarding and registration of the guest IOAT tables. In order to make use of the KVM-managed IOMMU domain operations on the host, we also add some code to vfio to indicate that a given device wishes to register the alternate domain type for its group. 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 interrupt delivery (default when interpretation is in use) or whether the host will be responsible for delivering all interrupts (forwarding_assist=off). The ZPCI_INTERP CPU feature is added beginning with the z14 model to enable this support. As a consequence of implementing zPCI interpretation, ISM devices now become eligible for passthrough (but only when zPCI interpretation is available).