Re: [PATCH] PCI: Add ACS errata for Pericom PI7C9X2G404 switch

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

 



On Fri, 3 Sept 2021 at 16:18, Lukas Wunner <lukas@xxxxxxxxx> wrote:
>
> On Fri, Sep 03, 2021 at 03:40:29AM +0000, Nathan Rossi wrote:
> > The Pericom PI7C9X2G404 PCIe switch has an errata for ACS P2P Request
> > Redirect behaviour when used in the cut-through forwarding mode. The
> > recommended work around for this issue is to use the switch in store and
> > forward mode.
> >
> > This change adds a fixup specific to this switch that when enabling the
> > downstream port it checks if it has enabled ACS P2P Request Redirect,
> > and if so changes the device (via the upstream port) to use the store
> > and forward operating mode.
>
> From a quick look at the datasheet, this switch seems to support
> hot-plug on its Downstream Ports:
>
> https://www.diodes.com/assets/Datasheets/PI7C9X2G404SL.pdf
>
> I think your quirk isn't executed if a device is hotplugged to an
> initially-empty Downstream Port.

The device I am testing against has the ports wired directly to
devices (though can be disconnected) without hotplug so I will see if
I can find a development board with this switch to test the hotplug
behaviour. However it should be noted that the downstream ports are
probed with the switch, and are enabled with the ACS P2P Request
Redirect configured regardless of the presence of a device connected
to the downstream port.

>
> Also, if a device which triggered the quirk is hot-removed and none
> of its siblings uses ACS P2P Request Redirect, cut-through forwarding
> isn't reinstated.

The quirk is enabled on the downstream port of the switch, using the
state of the downstream port and not the device attached to it. My
understanding is that the only path that enables/disables the ACS P2P
Request Redirect on the downstream port is the initial pci_enable_acs.
This means that devices attached to the downstream port either
initially or with hotplugging should not change the ACS configuration
of the switches downstream port.

Which means nothing can cause the switch to need to be reinstated with
cut-through forwarding except the switch itself being hotplugged,
which would cause reset of the switch and the enable fixup to be
called again.

Thanks,
Nathan

>
> Perhaps we need additional pci_fixup ELF sections which are used on
> hot-add and hot-remove?
>
> Thanks,
>
> Lukas



[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