Re: pci_error_handlers for pci_host_bridge ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Bjorn,

On Wed, Jun 6, 2018 at 6:20 PM, Bjorn Helgaas <helgaas@xxxxxxxxxx> wrote:
> Hi Subrahmanya,
>
> On Wed, Jun 06, 2018 at 05:57:17PM +0530, Subrahmanya Lingappa wrote:
>> Hi,
>> according to https://github.com/torvalds/linux/blob/master/Documentation/PCI/pci-error-recovery.txt
>>
>> as part of AER handling, struct pci_error_handlers{} is implemented by
>> endpoint drivers to handle device specific recovery steps for "struct
>> pci_driver".
>>
>> But we have a platform_driver which implements "struct
>> pci_host_bridge" which also supports AER capability how can we support
>> pci_error_handlers() for the host bridge drivers ?
>
> I assume you're referring to Mobiveil.  Can you explain more of the
> topology here?  Can you also include "sudo lspci -vv" output?
>
Yes, it is for Mobiveil's Host bridge driver :
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/drivers/pci/host/pcie-mobiveil.c
lspci output is now is not available, I'll try to get it sooner.

we have an endpoint connected directly to Rootport as follows
RC Rootport ----->BUS------> EP

> The AER capability is an optional capability of PCIe device functions.
> A host bridge is not itself a PCIe function; it's a bridge between a
> platform-specific host bus and the PCIe bus.
>
> Sometimes there is a PCI function that corresponds to the host bridge,
> but that's not required by the PCI specs and there is no generic
> programming model for it.
>
> If you have an PCIe function corresponding to the Mobiveil host
> bridge, and it has an AER capability, what would you want the error
> handlers to do?  This function would not normally be a Root Port or
> other type 1 PCI-to-PCI bridge device, so it's not clear how its AER
> would integrate with the PCIe hierarchy.
>
Yes we do have a PCI function with AER capability, after an AER reported by EP,
AER driver initiates an hot_reset on subordinate bus, which happens to
be downstream port
for RC. So we get a downstream port link down happens in this case RC
driver needs to follow
a specific register restore sequence, which is most of the HW specific
initialization done in probe function of the driver  to recover
properly.
I was wondering if this can be handled by using AER error handlers, or
would suggest a better way to handle this ?

As of now plan is to handle this situation is by calling a minimal
probe recovery sequence after link down interrupt within the
driver interrupt service routine.

> Bjorn

Thanks,



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux