On Wed, May 14, 2014 at 02:11:54PM +1000, Gavin Shan wrote: Ping, Alex.G and Alex.W. Could you please take a look on this when you have available bandwidth? Thanks in advance for your time :-) >The series of patches intends to support EEH for PCI devices, which are >passed through to PowerKVM based guest via VFIO. The implementation is >straightforward based on the issues or problems we have to resolve to >support EEH for PowerKVM based guest. > >- Emulation for EEH RTAS requests. All EEH RTAS requests goes to QEMU firstly. > If QEMU can't handle it, the request will be sent to host via newly introduced > VFIO container IOCTL command (VFIO_EEH_INFO) and gets handled in host kernel. > >- The error injection infrastructure need support request from the userland > utility "errinjct" and PowerKVM based guest. The userland utility "errinjct" > works on pSeries platform well with dedicated syscall, which helps invoking > RTAS service to fulfil error injection in kernel. From the perspective, it's > reasonable to extend the syscall to support PowerNV platform so that OPAL call > can be invoked in host kernel for injecting errors. The data transported > between userland and kerenl is still following "struct rtas_args" for both > cases of PowerNV (OPAL) and pSeries (RTAS). > >The series of patches requires corresponding firmware changes from Mike Qiu to >support error injection and QEMU changes to support EEH for guest. QEMU patchset >will be sent separately. > >Change log >========== >v1 -> v2: > * EEH RTAS requests are routed to QEMU, and then possiblly to host kerenl. > The mechanism KVM in-kernel handling is dropped. > * Error injection is reimplemented based syscall, instead of KVM in-kerenl > handling. The logic for error injection token management is moved to > QEMU. The error injection request is routed to QEMU and then possiblly > to host kernel. >v2 -> v3: > * Make the fields in struct eeh_vfio_pci_addr, struct vfio_eeh_info based > on the comments from Alexey. > * Define macros for EEH VFIO operations (Alexey). > * Clear frozen state after successful PE reset. > * Merge original [PATCH 1/2/3] to one. > >Testing on P7 >============= > >- Emulex adapter > >Testing on P8 >============= > >- Need more testing after design is finalized. > >----- > >Gavin Shan (8): > drivers/vfio: Introduce CONFIG_VFIO_EEH > powerpc/eeh: Info to trace passed devices > drivers/vfio: New IOCTL command VFIO_EEH_INFO > powerpc/eeh: Avoid event on passed PE > powerpc/powernv: Sync OPAL header file with firmware > powerpc: Extend syscall ppc_rtas() > powerpc/powernv: Implement ppc_call_opal() > powerpc/powernv: Error injection infrastructure > > arch/powerpc/include/asm/eeh.h | 52 +++ > arch/powerpc/include/asm/opal.h | 74 ++- > arch/powerpc/include/asm/rtas.h | 10 +- > arch/powerpc/include/asm/syscalls.h | 2 +- > arch/powerpc/include/asm/systbl.h | 2 +- > arch/powerpc/include/uapi/asm/unistd.h | 2 +- > arch/powerpc/kernel/eeh.c | 8 + > arch/powerpc/kernel/eeh_pe.c | 80 ++++ > arch/powerpc/kernel/rtas.c | 57 +-- > arch/powerpc/kernel/syscalls.c | 50 +++ > arch/powerpc/platforms/powernv/Makefile | 3 +- > arch/powerpc/platforms/powernv/eeh-ioda.c | 3 +- > arch/powerpc/platforms/powernv/eeh-vfio.c | 593 +++++++++++++++++++++++++ > arch/powerpc/platforms/powernv/errinject.c | 224 ++++++++++ > arch/powerpc/platforms/powernv/opal-wrappers.S | 1 + > arch/powerpc/platforms/powernv/opal.c | 93 ++++ > drivers/vfio/Kconfig | 6 + > drivers/vfio/vfio_iommu_spapr_tce.c | 12 + > include/uapi/linux/vfio.h | 57 +++ > kernel/sys_ni.c | 2 +- > 20 files changed, 1278 insertions(+), 53 deletions(-) > create mode 100644 arch/powerpc/platforms/powernv/eeh-vfio.c > create mode 100644 arch/powerpc/platforms/powernv/errinject.c > Thanks, Gavin -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html