Hello Liu Chuansheng, I have good news, your patch based on /drivers/pci/quirks.c works very well, I have no problems after a standby mode, my JMB363/368 SATA/IDE JMicron Pcie works without problems Le 06/11/2014 15:33, Liu, Chuansheng a écrit : > Thanks Barto. > > Could you try below patch? I made the change in file quirks.c. > > > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c > > index 90acb32..b40485f 100644 > > --- a/drivers/pci/quirks.c > > +++ b/drivers/pci/quirks.c > > @@ -29,6 +29,21 @@ > > #include "pci.h" > > /* > > + * For JMicron chips, we need to disable the async_suspend method, > otherwise > > + * they will hit the power-on issue when doing device resume, add one quick > > + * solution to disable the async_suspend method. > > + */ > > +static void pci_async_suspend_fixup(struct pci_dev *pdev) > > +{ > > + /* > > + * disabling the async_suspend method for JMicron chips to > > + * avoid device resuming issue. > > + */ > > + device_disable_async_suspend(&pdev->dev); > > +} > > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, > pci_async_suspend_fixup); > > + > > +/* > > * Decoding should be disabled for a PCI device during BAR sizing to avoid > > * conflict. But doing so may cause problems on host bridge and perhaps > other > > * key system devices. For devices that need to have mmio decoding > always-on, > > > > >
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 90acb32..b40485f 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -29,6 +29,21 @@ #include "pci.h" /* + * For JMicron chips, we need to disable the async_suspend method, otherwise + * they will hit the power-on issue when doing device resume, add one quick + * solution to disable the async_suspend method. + */ +static void pci_async_suspend_fixup(struct pci_dev *pdev) +{ + /* + * disabling the async_suspend method for JMicron chips to + * avoid device resuming issue. + */ + device_disable_async_suspend(&pdev->dev); +} +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, pci_async_suspend_fixup); + +/* * Decoding should be disabled for a PCI device during BAR sizing to avoid * conflict. But doing so may cause problems on host bridge and perhaps other * key system devices. For devices that need to have mmio decoding always-on,