On Wed, Jun 12, 2019 at 04:09:11PM +0200, Paolo Pisati wrote: > On Wed, Jun 12, 2019 at 03:17:35PM +0200, Niklas Cassel wrote: > > > diff --git a/drivers/phy/qualcomm/phy-qcom-qmp.c b/drivers/phy/qualcomm/phy-qcom-qmp.c > > > index cd91b4179b10..22352e3b0ec5 100644 > > > --- a/drivers/phy/qualcomm/phy-qcom-qmp.c > > > +++ b/drivers/phy/qualcomm/phy-qcom-qmp.c > > > @@ -1490,7 +1490,7 @@ static int qcom_qmp_phy_enable(struct phy *phy) > > > > > > ret = qcom_qmp_phy_com_init(qphy); > > > if (ret) > > > - return ret; > > > + goto err_lane_rst; > > > > > > if (cfg->has_lane_rst) { > > > ret = reset_control_deassert(qphy->lane_rst); > > Hi Niklas, > unfortunately, it didn't help - i added a printk, to highlight when it failed: > > --- a/drivers/phy/qualcomm/phy-qcom-qmp.c > +++ b/drivers/phy/qualcomm/phy-qcom-qmp.c > @@ -1489,8 +1489,10 @@ static int qcom_qmp_phy_enable(struct phy *phy) > } > > ret = qcom_qmp_phy_com_init(qphy); > - if (ret) > - return ret; > + if (ret) { > + dev_err(qmp->dev, "qphy initialization failed\n"); > + goto err_lane_rst; > + } > > if (cfg->has_lane_rst) { > ret = reset_control_deassert(qphy->lane_rst); > > After several reboots i was able to trigger the phy init failure again: > > ... > [ 2.223999] qcom-qmp-phy 34000.phy: Registered Qcom-QMP phy > [ 2.224956] qcom-qmp-phy 7410000.phy: Registered Qcom-QMP phy > [ 2.228798] ufs_qcom_phy_qmp_14nm 627000.phy: invalid resource > [ 2.237271] qcom-qmp-phy 34000.phy: phy common block init timed-out > [ 2.240315] qcom-qmp-phy 34000.phy: qphy initialization failed > ... I still think that the above patch is correct, even though it didn't fix your problem. If you try to disable the two other PCIe controllers: diff --git a/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi b/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi index 943f69912074..95900fe99f89 100644 --- a/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi +++ b/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi @@ -455,12 +455,12 @@ }; pcie@608000 { - status = "okay"; + status = "disabled"; perst-gpio = <&msmgpio 130 GPIO_ACTIVE_LOW>; }; pcie@610000 { - status = "okay"; + status = "disabled"; perst-gpio = <&msmgpio 114 GPIO_ACTIVE_LOW>; }; }; Can you still reproduce the reboot? Kind regards, Niklas > > these are the last lines printed, before rebooting in fastboot and > locking up there (as before[*]). > > So, as far as i understand there are two distinct problems: > > 1) sometimes, qcom-qmp-phy fails to initialize > > 2) and when that happens, the failure is fatal and it led to a reboot & lockup > in fastboot > > 1: https://pastebin.ubuntu.com/p/rtjVrD3yzk/ > -- > bye, > p.