Revision 2 of the Device Feature List (DFL) Port feature has slightly different requirements than revision 1. Revision 2 does not need the port to reset at driver startup. In fact, performing a port reset during driver initialization can cause driver race conditions when the port is connected to a different PCIe Physical Function (PF) than the management PF performing the actual port reset. Signed-off-by: Matthew Gerlach <matthew.gerlach@xxxxxxxxxxxxxxx> --- drivers/fpga/dfl-afu-main.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/fpga/dfl-afu-main.c b/drivers/fpga/dfl-afu-main.c index c0a75ca360d6..7d7f80cd264f 100644 --- a/drivers/fpga/dfl-afu-main.c +++ b/drivers/fpga/dfl-afu-main.c @@ -417,7 +417,18 @@ static const struct attribute_group port_hdr_group = { static int port_hdr_init(struct platform_device *pdev, struct dfl_feature *feature) { - port_reset(pdev); + void __iomem *base; + u8 rev; + + base = dfl_get_feature_ioaddr_by_id(&pdev->dev, PORT_FEATURE_ID_HEADER); + + rev = dfl_feature_revision(base); + + if (rev < 2) + port_reset(pdev); + + if (rev > 2) + dev_info(&pdev->dev, "unexpected port feature revision, %u\n", rev); return 0; } -- 2.34.1