• A
    PCI: pciehp: Disable in-band presence detect when possible · 7144257e
    Alexandru Gagniuc 提交于
    task #29600094
    
    commit 202853595e53f981c86656c49fc1cc1e3620f558 upstream.
    Backport summary: for 4.19 kernel ICX PCIe Gen4 support.
    
    The presence detect state (PDS) is normally a logical OR of in-band and
    out-of-band (OOB) presence detect.  As of PCIe 4.0, there is the option to
    disable in-band presence so that the PDS bit always reflects the state of
    the out-of-band presence.
    
    The recommendation of the PCIe spec is to disable in-band presence whenever
    supported (PCIe r5.0, appendix I implementation note):
    
      Due to architectural issues, the in-band (Physical-Layer-based) portion
      of the PD mechanism is deprecated for use with async hot-plug. One issue
      is that in-band PD as architected does not detect adapter removal during
      certain LTSSM states, notably the L1 and Disabled States.  Another issue
      is that when both in-band and OOB PD are being used together, the
      Presence Detect State bit and its associated interrupt mechanism always
      reflect the logical OR of the inband and OOB PD states, and with some
      hot-plug hardware configurations, it is important for software to detect
      and respond to in-band and OOB PD events independently.  If OOB PD is
      being used and the associated DSP supports In-Band PD Disable, it is
      recommended that the In-Band PD Disable bit be Set, and the Presence
      Detect State bit and its associated interrupt mechanism be used
      exclusively for OOB PD.  As a substitute for in-band PD with async
      hot-plug, the reference model uses either the DPC or the DLL Link Active
      mechanism.
    
    Link: https://lore.kernel.org/r/20191025190047.38130-2-stuart.w.hayes@gmail.com
    [bhelgaas: move PCI_EXP_SLTCAP2 read earlier & print PCI_EXP_SLTCAP2_IBPD
    value (suggested by Lukas)]
    Signed-off-by: NAlexandru Gagniuc <mr.nuke.me@gmail.com>
    Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: NAndy Shevchenko <andy.shevchenko@gmail.com>
    Reviewed-by: NLukas Wunner <lukas@wunner.de>
    
    (cherry picked from commit 202853595e53f981c86656c49fc1cc1e3620f558)
    Signed-off-by: NEthan Zhao <haifeng.zhao@intel.com>
    
    Conflicts:
    	drivers/pci/hotplug/pciehp.h
    	drivers/pci/hotplug/pciehp_hpc.c
    Signed-off-by: NArtie Ding <artie.ding@linux.alibaba.com>
    Acked-by: NCaspar Zhang <caspar@linux.alibaba.com>
    7144257e
pciehp_hpc.c 24.8 KB