> -----Original Message----- > From: Mark Brown <broonie@xxxxxxxxxx> > Sent: Monday, October 25, 2021 7:24 PM > To: Francesco Dolcini <francesco.dolcini@xxxxxxxxxxx> > Cc: Richard Zhu <hongxing.zhu@xxxxxxx>; l.stach@xxxxxxxxxxxxxx; > bhelgaas@xxxxxxxxxx; lorenzo.pieralisi@xxxxxxx; jingoohan1@xxxxxxxxx; > linux-pci@xxxxxxxxxxxxxxx; dl-linux-imx <linux-imx@xxxxxxx>; > linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; > kernel@xxxxxxxxxxxxxx > Subject: Re: [PATCH v3 3/7] PCI: imx6: Fix the regulator dump when link never > came up > > On Mon, Oct 25, 2021 at 01:13:12PM +0200, Francesco Dolcini wrote: > > > Hello Richard, > > please see this comment from Mark, > https://lore.kernel.org/all/YXaGve1ZJq0DGZ9l@xxxxxxxxxxxxx/. > > > > + if (imx6_pcie->vpcie > > > + && regulator_is_enabled(imx6_pcie->vpcie) > 0) > > > + regulator_disable(imx6_pcie->vpcie); > > > return ret; > > I should probably also say that the check for the regulator looks buggy as well, > regulators should only be optional if they can be physically absent which does > not seem likely for PCI devices. If the driver is not doing something to > reconfigure the hardware to account for a missing supply this is generally a big > warning sign. > > I really don't understand why regulator support is so frequently problematic > for PCI controllers. :( [Richard Zhu] Hi Mark: The _enabled check is used because that this regulator is optional in the HW design. To make the codes clean and aligned on different HW boards, the _enabled check is added. The root cause is that the error return is not handled properly by the controller driver. I.MX PCIe controller doesn't support the Hot-Plug, and it would return -110 error when PCIe link never came up. Thus, the _probe would be failed in the end. The clocks/regulator usage balance should be considered by i.MX PCIe controller, that's all. It's not a general case, and the problem is not caused by the regulator support. Best Regards Richard Zhu