linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Wei Yang <weiyang@linux.vnet.ibm.com>
To: gwshan@linux.vnet.ibm.com, bhelgaas@google.com
Cc: linux-pci@vger.kernel.org, Wei Yang <weiyang@linux.vnet.ibm.com>,
	linuxppc-dev@lists.ozlabs.org
Subject: [PATCH V3 0/9] VF EEH on Power8
Date: Mon,  4 May 2015 15:07:29 +0800	[thread overview]
Message-ID: <1430723258-21299-1-git-send-email-weiyang@linux.vnet.ibm.com> (raw)

This patchset enables EEH on SRIOV VFs. The general idea is to create proper
VF edev and VF PE and handle them properly.

Different from the Bus PE, VF PE just contain one VF. This introduces the
difference of EEH error handling on a VF PE. Generally, it has several
differences.

First, the VF's removal and re-enumerate rely on its PF. VF has a tight
relationship between its PF. This is not proper to enumerate a VF by usual
scan procedure. That's why virtfn_add/virtfn_remove are exported in this patch
set.

Second, the reset/restore of a VF is done in kernel space. FW is not aware of
the VF, this means the usual reset function done in FW will not work. One of
the patch will imitate the reset/restore function in kernel space.

Third, the VF may be removed during the PF's error_detected function. In this
case, the original error_detected->slot_reset->resume sequence is not proper
to those removed VFs, since they are re-created by PF in a fresh state. A flag
in eeh_dev is introduce to mark the eeh_dev is in error state. By doing so, we
track whether this device needs to be reset or not.

This has been tested both on host and in guest on Power8 with latest kernel
version.

v3:
   * add back vf_index in pci_dn to track the VF's index
   * rename ppdev in eeh_dev to physfn for consistency
   * move edev->physfn assignment before dev->dev.archdata.edev is set
   * move pnv_pci_fixup_vf_eeh() and pnv_pci_fixup_vf_caps() to eeh-powernv.c
   * more clear and detail in commit log and comment in code
   * merge eeh_rmv_virt_device() with eeh_rmv_device()
   * move the cfg_blocked check logic from pnv_eeh_read/write_config() to
     pnv_eeh_cfg_blocked()
   * move the vf reset/restore logic into its own patch, two patches are
     created.
     powerpc/powernv: Support PCI config restore for VFs
     powerpc/powernv: Support EEH reset for VFs
   * simplify the vf reset logic
v2:
   * add prefix pci_iov_ to virtfn_add/virtfn_remove
   * use EEH_DEV_VF as a flag for a VF's eeh_dev
   * use eeh_dev instead of edev in change log
   * remove vf_index in eeh_dev, calculate it from pdn->busno and devfn
   * do eeh_add_device_late() and eeh_sysfs_add_device() both after pci_dev is
     well initialized
   * do FLR to reset a VF PE
   * imitate the restore function in FW for VF
   * remove the reverse order patch, since it is still under discussion

Wei Yang (9):
  pci/iov: rename and export virtfn_add/virtfn_remove
  powerpc/pci_dn: cache vf_index in pci_dn
  powerpc/pci: remove PCI devices in reverse order
  powerpc/eeh: cache address range just for normal device
  powerpc/eeh: create EEH_PE_VF for VF PE
  powerpc/powernv: create/release eeh_dev for VF
  powerpc/powernv: Support EEH reset for VFs
  powerpc/powernv: Support PCI config restore for VFs
  powerpc/eeh: handle VF PE properly

 arch/powerpc/include/asm/eeh.h               |   10 ++
 arch/powerpc/include/asm/pci-bridge.h        |    2 +
 arch/powerpc/kernel/eeh.c                    |    5 +
 arch/powerpc/kernel/eeh_cache.c              |    2 +-
 arch/powerpc/kernel/eeh_dev.c                |   20 +++
 arch/powerpc/kernel/eeh_driver.c             |  108 +++++++++++---
 arch/powerpc/kernel/eeh_pe.c                 |   15 +-
 arch/powerpc/kernel/pci-hotplug.c            |    2 +-
 arch/powerpc/kernel/pci_dn.c                 |   12 +-
 arch/powerpc/platforms/powernv/eeh-powernv.c |  200 +++++++++++++++++++++++++-
 drivers/pci/iov.c                            |   10 +-
 include/linux/pci.h                          |    2 +
 12 files changed, 352 insertions(+), 36 deletions(-)

-- 
1.7.9.5

             reply	other threads:[~2015-05-04  7:08 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-04  7:07 Wei Yang [this message]
2015-05-04  7:07 ` [PATCH V3 1/9] pci/iov: rename and export virtfn_add/virtfn_remove Wei Yang
2015-05-11  2:13   ` Gavin Shan
2015-05-04  7:07 ` [PATCH V3 2/9] powerpc/pci_dn: cache vf_index in pci_dn Wei Yang
2015-05-11  2:21   ` Gavin Shan
2015-05-11  5:54     ` Wei Yang
2015-05-12  6:15       ` Gavin Shan
2015-05-12  7:29         ` Wei Yang
2015-05-04  7:07 ` [PATCH V3 3/9] powerpc/pci: remove PCI devices in reverse order Wei Yang
2015-05-04  7:07 ` [PATCH V3 4/9] powerpc/eeh: cache address range just for normal device Wei Yang
2015-05-04  7:07 ` [PATCH V3 5/9] powerpc/eeh: create EEH_PE_VF for VF PE Wei Yang
2015-05-11  2:37   ` Gavin Shan
2015-05-11  6:25     ` Wei Yang
2015-05-12  6:28       ` Gavin Shan
2015-05-12  7:52         ` Wei Yang
2015-05-04  7:07 ` [PATCH V3 6/9] powerpc/powernv: create/release eeh_dev for VF Wei Yang
2015-05-11  2:48   ` Gavin Shan
2015-05-12  8:06     ` Wei Yang
2015-05-12 23:09       ` Gavin Shan
2015-05-04  7:07 ` [PATCH V3 7/9] powerpc/powernv: Support EEH reset for VFs Wei Yang
2015-05-11  3:03   ` Gavin Shan
2015-05-04  7:07 ` [PATCH V3 8/9] powerpc/powernv: Support PCI config restore " Wei Yang
2015-05-11  4:22   ` Gavin Shan
2015-05-12  1:31     ` Wei Yang
2015-05-12  6:34       ` Gavin Shan
2015-05-12  8:16         ` Wei Yang
2015-05-12 23:16           ` Gavin Shan
2015-05-04  7:07 ` [PATCH V3 9/9] powerpc/eeh: handle VF PE properly Wei Yang
2015-05-13  1:16   ` Gavin Shan
2015-05-14  9:35     ` Wei Yang
2015-05-14 12:15       ` Gavin Shan
2015-05-14 10:02     ` Wei Yang
2015-05-14 12:30       ` 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=1430723258-21299-1-git-send-email-weiyang@linux.vnet.ibm.com \
    --to=weiyang@linux.vnet.ibm.com \
    --cc=bhelgaas@google.com \
    --cc=gwshan@linux.vnet.ibm.com \
    --cc=linux-pci@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    /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).