lkml.org 
[lkml]   [2020]   [Sep]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH v6 02/10] PCI/RCEC: Bind RCEC devices to the Root Port driver
    Date
    On 25 Sep 2020, at 12:59, Bjorn Helgaas wrote:

    > On Tue, Sep 22, 2020 at 02:38:51PM -0700, Sean V Kelley wrote:
    >> From: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
    >>
    >> If a Root Complex Integrated Endpoint (RCiEP) is implemented, errors
    >> may
    >> optionally be sent to a corresponding Root Complex Event Collector
    >> (RCEC).
    >> Each RCiEP must be associated with no more than one RCEC. Interface
    >> errors
    >> are reported to the OS by RCECs.
    >>
    >> For an RCEC (technically not a Bridge), error messages "received"
    >> from
    >> associated RCiEPs must be enabled for "transmission" in order to
    >> cause a
    >> System Error via the Root Control register or (when the Advanced
    >> Error
    >> Reporting Capability is present) reporting via the Root Error Command
    >> register and logging in the Root Error Status register and Error
    >> Source
    >> Identification register.
    >>
    >> Given the commonality with Root Ports and the need to also support
    >> AER
    >> and PME services for RCECs, extend the Root Port driver to support
    >> RCEC
    >> devices through the addition of the RCEC Class ID to the driver
    >> structure.
    >>
    >> Co-developed-by: Sean V Kelley <sean.v.kelley@intel.com>
    >> Signed-off-by: Sean V Kelley <sean.v.kelley@intel.com>
    >> Signed-off-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
    >> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    >> ---
    >> drivers/pci/pcie/portdrv_core.c | 8 ++++----
    >> drivers/pci/pcie/portdrv_pci.c | 5 ++++-
    >> 2 files changed, 8 insertions(+), 5 deletions(-)
    >>
    >> diff --git a/drivers/pci/pcie/portdrv_core.c
    >> b/drivers/pci/pcie/portdrv_core.c
    >> index 50a9522ab07d..99769c636775 100644
    >> --- a/drivers/pci/pcie/portdrv_core.c
    >> +++ b/drivers/pci/pcie/portdrv_core.c
    >> @@ -234,11 +234,11 @@ static int get_port_device_capability(struct
    >> pci_dev *dev)
    >> #endif
    >>
    >> /*
    >> - * Root ports are capable of generating PME too. Root Complex
    >> - * Event Collectors can also generate PMEs, but we don't handle
    >> - * those yet.
    >> + * Root ports and Root Complex Event Collectors are capable
    >> + * of generating PME.
    >> */
    >> - if (pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT &&
    >> + if ((pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT ||
    >> + pci_pcie_type(dev) == PCI_EXP_TYPE_RC_EC) &&
    >
    > It seems like this change belongs in patch 09/10, where we change
    > pme.c so it claims both Root Ports and RCECs. Does this hunk
    > accomplish anything before 09/10?

    You are right. It’s not needed until 09/10. Will move.

    Thanks,

    Sean

    >
    >> (pcie_ports_native || host->native_pme)) {
    >> services |= PCIE_PORT_SERVICE_PME;
    >>
    >> diff --git a/drivers/pci/pcie/portdrv_pci.c
    >> b/drivers/pci/pcie/portdrv_pci.c
    >> index 3a3ce40ae1ab..4d880679b9b1 100644
    >> --- a/drivers/pci/pcie/portdrv_pci.c
    >> +++ b/drivers/pci/pcie/portdrv_pci.c
    >> @@ -106,7 +106,8 @@ static int pcie_portdrv_probe(struct pci_dev
    >> *dev,
    >> if (!pci_is_pcie(dev) ||
    >> ((pci_pcie_type(dev) != PCI_EXP_TYPE_ROOT_PORT) &&
    >> (pci_pcie_type(dev) != PCI_EXP_TYPE_UPSTREAM) &&
    >> - (pci_pcie_type(dev) != PCI_EXP_TYPE_DOWNSTREAM)))
    >> + (pci_pcie_type(dev) != PCI_EXP_TYPE_DOWNSTREAM) &&
    >> + (pci_pcie_type(dev) != PCI_EXP_TYPE_RC_EC)))
    >> return -ENODEV;
    >>
    >> status = pcie_port_device_register(dev);
    >> @@ -195,6 +196,8 @@ static const struct pci_device_id port_pci_ids[]
    >> = {
    >> { PCI_DEVICE_CLASS(((PCI_CLASS_BRIDGE_PCI << 8) | 0x00), ~0) },
    >> /* subtractive decode PCI-to-PCI bridge, class type is 060401h */
    >> { PCI_DEVICE_CLASS(((PCI_CLASS_BRIDGE_PCI << 8) | 0x01), ~0) },
    >> + /* handle any Root Complex Event Collector */
    >> + { PCI_DEVICE_CLASS(((PCI_CLASS_SYSTEM_RCEC << 8) | 0x00), ~0) },
    >> { },
    >> };
    >>
    >> --
    >> 2.28.0
    >>

    \
     
     \ /
      Last update: 2020-09-25 23:41    [W:5.260 / U:0.856 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site