From: Gavin Shan <gwshan@linux.vnet.ibm.com>
To: linuxppc-dev@lists.ozlabs.org, kvm-ppc@vger.kernel.org
Cc: aik@ozlabs.ru, alex.williamson@redhat.com,
qiudayu@linux.vnet.ibm.com,
Gavin Shan <gwshan@linux.vnet.ibm.com>
Subject: [PATCH RFC v2 00/10] EEH Support for VFIO PCI devices on PowerKVM guest
Date: Fri, 9 May 2014 17:49:32 +1000 [thread overview]
Message-ID: <1399621782-23281-1-git-send-email-gwshan@linux.vnet.ibm.com> (raw)
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.
Testing on P7
=============
- Emulex adapter
Testing on P8
=============
- Need more testing after design is finalized.
-----
Gavin Shan (10):
drivers/vfio: Introduce CONFIG_VFIO_EEH
powerpc/eeh: Info to trace passed devices
powerpc/eeh: Search EEH device by guest address
powerpc/eeh: Search EEH PE by guest address
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 | 584 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
arch/powerpc/platforms/powernv/errinject.c | 222 ++++++++++++++++++++++++++++++++++++++++++++++++++++
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 | 61 +++++++++++++++
kernel/sys_ni.c | 2 +-
20 files changed, 1271 insertions(+), 53 deletions(-)
create mode 100644 arch/powerpc/platforms/powernv/eeh-vfio.c
create mode 100644 arch/powerpc/platforms/powernv/errinject.c
Thanks,
Gavin
next reply other threads:[~2014-05-09 7:49 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-09 7:49 Gavin Shan [this message]
2014-05-09 7:49 ` [PATCH 01/10] drivers/vfio: Introduce CONFIG_VFIO_EEH Gavin Shan
2014-05-09 7:49 ` [PATCH 02/10] powerpc/eeh: Info to trace passed devices Gavin Shan
2014-05-09 7:49 ` [PATCH 03/10] powerpc/eeh: Search EEH device by guest address Gavin Shan
2014-05-09 7:49 ` [PATCH 04/10] powerpc/eeh: Search EEH PE " Gavin Shan
2014-05-09 7:49 ` [PATCH 05/10] drivers/vfio: New IOCTL command VFIO_EEH_INFO Gavin Shan
2014-05-09 7:49 ` [PATCH 06/10] powerpc/eeh: Avoid event on passed PE Gavin Shan
2014-05-09 7:49 ` [PATCH 07/10] powerpc/powernv: Sync OPAL header file with firmware Gavin Shan
2014-05-09 7:49 ` [PATCH 08/10] powerpc: Extend syscall ppc_rtas() Gavin Shan
2014-05-09 7:49 ` [PATCH 09/10] powerpc/powernv: Implement ppc_call_opal() Gavin Shan
2014-05-09 7:49 ` [PATCH 10/10] powerpc/powernv: Error injection infrastructure Gavin Shan
2014-05-09 7:54 ` [PATCH RFC v2 00/10] EEH Support for VFIO PCI devices on PowerKVM guest Gavin Shan
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=1399621782-23281-1-git-send-email-gwshan@linux.vnet.ibm.com \
--to=gwshan@linux.vnet.ibm.com \
--cc=aik@ozlabs.ru \
--cc=alex.williamson@redhat.com \
--cc=kvm-ppc@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=qiudayu@linux.vnet.ibm.com \
/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).