On Tue, Nov 02, 2021 at 05:13:58PM +0100, Aleksander Morgado wrote: > Hey Mani, > > > > [ 7.189547] mhi mhi0: Transitioning from PM state: Linkdown or > > > Error Fatal Detect to: SYS ERROR Process > > > > Hmm, I think the use of sync_power_up might be causing the issue here as it > > forces the MHI state to fatal error. > > > > Ignore the previous diff and try the below one: > > > > diff --git a/drivers/bus/mhi/pci_generic.c b/drivers/bus/mhi/pci_generic.c > > index 59a4896a8030..b1e8c7de4e54 100644 > > --- a/drivers/bus/mhi/pci_generic.c > > +++ b/drivers/bus/mhi/pci_generic.c > > @@ -637,7 +637,7 @@ static void mhi_pci_recovery_work(struct work_struct *work) > > if (err) > > goto err_try_reset; > > > > - err = mhi_sync_power_up(mhi_cntrl); > > + err = mhi_async_power_up(mhi_cntrl); Doh! Sorry, I modified the wrong function. Here is the correct one: diff --git a/drivers/bus/mhi/pci_generic.c b/drivers/bus/mhi/pci_generic.c index 59a4896a8030..1e3c74bfbe34 100644 --- a/drivers/bus/mhi/pci_generic.c +++ b/drivers/bus/mhi/pci_generic.c @@ -743,7 +743,7 @@ static int mhi_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) goto err_unregister; } - err = mhi_sync_power_up(mhi_cntrl); + err = mhi_async_power_up(mhi_cntrl); if (err) { dev_err(&pdev->dev, "failed to power up MHI controller\n"); goto err_unprepare; Let's see how it goes :) Thanks, Mani