* [PATCH] PCI: Do not enable async suspend for JMicron chips @ 2014-11-05 1:31 Chuansheng Liu 2014-11-05 18:01 ` Bjorn Helgaas 0 siblings, 1 reply; 21+ messages in thread From: Chuansheng Liu @ 2014-11-05 1:31 UTC (permalink / raw) To: bhelgaas, aaron.lu, tj, rjw, mister.freeman Cc: linux-pci, linux-kernel, chuansheng.liu The JMicron chip 361/363/368 contains one SATA controller and one PATA controller, they are brother-relation ship in PCI tree, but for powering on these both controller, we must follow the sequence one by one, otherwise one of them can not be powered on successfully. So here we disable the async suspend method for Jmicron chip. Bug link: https://bugzilla.kernel.org/show_bug.cgi?id=81551 https://bugzilla.kernel.org/show_bug.cgi?id=84861 And we can revert the below commit after this patch is applied: e6b7e41(ata: Disabling the async PM for JMicron chip 363/361) Cc: stable@vger.kernel.org # 3.15+ Acked-by: Aaron Lu <aaron.lu@intel.com> Signed-off-by: Chuansheng Liu <chuansheng.liu@intel.com> --- drivers/pci/pci.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 625a4ac..53128f0 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -2046,7 +2046,17 @@ void pci_pm_init(struct pci_dev *dev) pm_runtime_forbid(&dev->dev); pm_runtime_set_active(&dev->dev); pm_runtime_enable(&dev->dev); - device_enable_async_suspend(&dev->dev); + + /* + * The JMicron chip 361/363/368 contains one SATA controller and + * one PATA controller, they are brother-relation ship in PCI tree, + * but for powering on these both controller, we must follow the + * sequence one by one, otherwise one of them can not be powered on + * successfully, so here we disable the async suspend method for + * Jmicron chip. + */ + if (dev->vendor != PCI_VENDOR_ID_JMICRON) + device_enable_async_suspend(&dev->dev); dev->wakeup_prepared = false; dev->pm_cap = 0; -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH] PCI: Do not enable async suspend for JMicron chips 2014-11-05 1:31 [PATCH] PCI: Do not enable async suspend for JMicron chips Chuansheng Liu @ 2014-11-05 18:01 ` Bjorn Helgaas 2014-11-05 18:46 ` Barto 0 siblings, 1 reply; 21+ messages in thread From: Bjorn Helgaas @ 2014-11-05 18:01 UTC (permalink / raw) To: Chuansheng Liu Cc: Aaron Lu, Tejun Heo, Rafael Wysocki, mister.freeman, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org On Tue, Nov 4, 2014 at 6:31 PM, Chuansheng Liu <chuansheng.liu@intel.com> wrote: > The JMicron chip 361/363/368 contains one SATA controller and > one PATA controller, they are brother-relation ship in PCI tree, > but for powering on these both controller, we must follow the > sequence one by one, otherwise one of them can not be powered on > successfully. This should mention what's broken and what problem a user would see. This changelog sounds a lot like the one for e6b7e41cdd8c, so I don't know if this is for a new, related problem, or what. > So here we disable the async suspend method for Jmicron chip. > > Bug link: > https://bugzilla.kernel.org/show_bug.cgi?id=81551 > https://bugzilla.kernel.org/show_bug.cgi?id=84861 > > And we can revert the below commit after this patch is applied: > e6b7e41(ata: Disabling the async PM for JMicron chip 363/361) > > Cc: stable@vger.kernel.org # 3.15+ > Acked-by: Aaron Lu <aaron.lu@intel.com> > Signed-off-by: Chuansheng Liu <chuansheng.liu@intel.com> > --- > drivers/pci/pci.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > index 625a4ac..53128f0 100644 > --- a/drivers/pci/pci.c > +++ b/drivers/pci/pci.c > @@ -2046,7 +2046,17 @@ void pci_pm_init(struct pci_dev *dev) > pm_runtime_forbid(&dev->dev); > pm_runtime_set_active(&dev->dev); > pm_runtime_enable(&dev->dev); > - device_enable_async_suspend(&dev->dev); > + > + /* > + * The JMicron chip 361/363/368 contains one SATA controller and > + * one PATA controller, they are brother-relation ship in PCI tree, > + * but for powering on these both controller, we must follow the > + * sequence one by one, otherwise one of them can not be powered on > + * successfully, so here we disable the async suspend method for > + * Jmicron chip. > + */ > + if (dev->vendor != PCI_VENDOR_ID_JMICRON) > + device_enable_async_suspend(&dev->dev); I don't like littering the core PCI code with vendor tests like this. This would be the only one, except for an ancient DECchip 21050 bridge erratum. And why would we want a test for *all* JMicron devices here, when you claim the problem only affects a few specific ones? And what's the story with the e6b7e41cdd8c ("ata: Disabling the async PM for JMicron chip 363/361") connection? Is something broken even with e6b7e41cdd8c, and this is a better fix? Or is this simply a different way of fixing the same problem? > dev->wakeup_prepared = false; > > dev->pm_cap = 0; > -- > 1.7.9.5 > ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] PCI: Do not enable async suspend for JMicron chips 2014-11-05 18:01 ` Bjorn Helgaas @ 2014-11-05 18:46 ` Barto 2014-11-05 19:03 ` Bjorn Helgaas 0 siblings, 1 reply; 21+ messages in thread From: Barto @ 2014-11-05 18:46 UTC (permalink / raw) To: Bjorn Helgaas, Chuansheng Liu Cc: Aaron Lu, Tejun Heo, Rafael Wysocki, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org this patch solves these 2 bug reports : https://bugzilla.kernel.org/show_bug.cgi?id=84861 https://bugzilla.kernel.org/show_bug.cgi?id=81551 in simple words : JMicron IDE/Sata controlers family ( JMBxxx ) are not fully compatible with async_suspend feature, when a user tries to put his PC on standby mode then at wake-up JMicron IDE/Sata controlers will not work, because of a brother-relation between the SATA and IDE part on this JMicron PCI card Le 05/11/2014 19:01, Bjorn Helgaas a écrit : > On Tue, Nov 4, 2014 at 6:31 PM, Chuansheng Liu <chuansheng.liu@intel.com> wrote: >> The JMicron chip 361/363/368 contains one SATA controller and >> one PATA controller, they are brother-relation ship in PCI tree, >> but for powering on these both controller, we must follow the >> sequence one by one, otherwise one of them can not be powered on >> successfully. > > This should mention what's broken and what problem a user would see. > This changelog sounds a lot like the one for e6b7e41cdd8c, so I don't > know if this is for a new, related problem, or what. > >> So here we disable the async suspend method for Jmicron chip. >> >> Bug link: >> https://bugzilla.kernel.org/show_bug.cgi?id=81551 >> https://bugzilla.kernel.org/show_bug.cgi?id=84861 >> >> And we can revert the below commit after this patch is applied: >> e6b7e41(ata: Disabling the async PM for JMicron chip 363/361) >> >> Cc: stable@vger.kernel.org # 3.15+ >> Acked-by: Aaron Lu <aaron.lu@intel.com> >> Signed-off-by: Chuansheng Liu <chuansheng.liu@intel.com> >> --- >> drivers/pci/pci.c | 12 +++++++++++- >> 1 file changed, 11 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c >> index 625a4ac..53128f0 100644 >> --- a/drivers/pci/pci.c >> +++ b/drivers/pci/pci.c >> @@ -2046,7 +2046,17 @@ void pci_pm_init(struct pci_dev *dev) >> pm_runtime_forbid(&dev->dev); >> pm_runtime_set_active(&dev->dev); >> pm_runtime_enable(&dev->dev); >> - device_enable_async_suspend(&dev->dev); >> + >> + /* >> + * The JMicron chip 361/363/368 contains one SATA controller and >> + * one PATA controller, they are brother-relation ship in PCI tree, >> + * but for powering on these both controller, we must follow the >> + * sequence one by one, otherwise one of them can not be powered on >> + * successfully, so here we disable the async suspend method for >> + * Jmicron chip. >> + */ >> + if (dev->vendor != PCI_VENDOR_ID_JMICRON) >> + device_enable_async_suspend(&dev->dev); > > I don't like littering the core PCI code with vendor tests like this. > This would be the only one, except for an ancient DECchip 21050 bridge > erratum. > > And why would we want a test for *all* JMicron devices here, when you > claim the problem only affects a few specific ones? > > And what's the story with the e6b7e41cdd8c ("ata: Disabling the async > PM for JMicron chip 363/361") connection? Is something broken even > with e6b7e41cdd8c, and this is a better fix? Or is this simply a > different way of fixing the same problem? > >> dev->wakeup_prepared = false; >> >> dev->pm_cap = 0; >> -- >> 1.7.9.5 >> > ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] PCI: Do not enable async suspend for JMicron chips 2014-11-05 18:46 ` Barto @ 2014-11-05 19:03 ` Bjorn Helgaas 2014-11-06 1:36 ` Barto 2014-11-06 1:48 ` Liu, Chuansheng 0 siblings, 2 replies; 21+ messages in thread From: Bjorn Helgaas @ 2014-11-05 19:03 UTC (permalink / raw) To: Barto Cc: Chuansheng Liu, Aaron Lu, Tejun Heo, Rafael Wysocki, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org On Wed, Nov 5, 2014 at 11:46 AM, Barto <mister.freeman@laposte.net> wrote: > this patch solves these 2 bug reports : > > https://bugzilla.kernel.org/show_bug.cgi?id=84861 > > https://bugzilla.kernel.org/show_bug.cgi?id=81551 Those bugs were already mentioned. But e6b7e41cdd8c claims to solve https://bugzilla.kernel.org/show_bug.cgi?id=81551, and 84861 is a duplicate of 81551, so it should also be fixed by e6b7e41cdd8c. So the question is, why was e6b7e41cdd8c insufficient? Presumably it was tested and somebody thought it did fix the problem. > in simple words : JMicron IDE/Sata controlers family ( JMBxxx ) are not > fully compatible with async_suspend feature, when a user tries to put > his PC on standby mode then at wake-up JMicron IDE/Sata controlers will > not work, because of a brother-relation between the SATA and IDE part on > this JMicron PCI card > > > > > Le 05/11/2014 19:01, Bjorn Helgaas a écrit : >> On Tue, Nov 4, 2014 at 6:31 PM, Chuansheng Liu <chuansheng.liu@intel.com> wrote: >>> The JMicron chip 361/363/368 contains one SATA controller and >>> one PATA controller, they are brother-relation ship in PCI tree, >>> but for powering on these both controller, we must follow the >>> sequence one by one, otherwise one of them can not be powered on >>> successfully. >> >> This should mention what's broken and what problem a user would see. >> This changelog sounds a lot like the one for e6b7e41cdd8c, so I don't >> know if this is for a new, related problem, or what. >> >>> So here we disable the async suspend method for Jmicron chip. >>> >>> Bug link: >>> https://bugzilla.kernel.org/show_bug.cgi?id=81551 >>> https://bugzilla.kernel.org/show_bug.cgi?id=84861 >>> >>> And we can revert the below commit after this patch is applied: >>> e6b7e41(ata: Disabling the async PM for JMicron chip 363/361) >>> >>> Cc: stable@vger.kernel.org # 3.15+ >>> Acked-by: Aaron Lu <aaron.lu@intel.com> >>> Signed-off-by: Chuansheng Liu <chuansheng.liu@intel.com> >>> --- >>> drivers/pci/pci.c | 12 +++++++++++- >>> 1 file changed, 11 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c >>> index 625a4ac..53128f0 100644 >>> --- a/drivers/pci/pci.c >>> +++ b/drivers/pci/pci.c >>> @@ -2046,7 +2046,17 @@ void pci_pm_init(struct pci_dev *dev) >>> pm_runtime_forbid(&dev->dev); >>> pm_runtime_set_active(&dev->dev); >>> pm_runtime_enable(&dev->dev); >>> - device_enable_async_suspend(&dev->dev); >>> + >>> + /* >>> + * The JMicron chip 361/363/368 contains one SATA controller and >>> + * one PATA controller, they are brother-relation ship in PCI tree, >>> + * but for powering on these both controller, we must follow the >>> + * sequence one by one, otherwise one of them can not be powered on >>> + * successfully, so here we disable the async suspend method for >>> + * Jmicron chip. >>> + */ >>> + if (dev->vendor != PCI_VENDOR_ID_JMICRON) >>> + device_enable_async_suspend(&dev->dev); >> >> I don't like littering the core PCI code with vendor tests like this. >> This would be the only one, except for an ancient DECchip 21050 bridge >> erratum. >> >> And why would we want a test for *all* JMicron devices here, when you >> claim the problem only affects a few specific ones? >> >> And what's the story with the e6b7e41cdd8c ("ata: Disabling the async >> PM for JMicron chip 363/361") connection? Is something broken even >> with e6b7e41cdd8c, and this is a better fix? Or is this simply a >> different way of fixing the same problem? >> >>> dev->wakeup_prepared = false; >>> >>> dev->pm_cap = 0; >>> -- >>> 1.7.9.5 >>> >> ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] PCI: Do not enable async suspend for JMicron chips 2014-11-05 19:03 ` Bjorn Helgaas @ 2014-11-06 1:36 ` Barto 2014-11-06 1:48 ` Liu, Chuansheng 1 sibling, 0 replies; 21+ messages in thread From: Barto @ 2014-11-06 1:36 UTC (permalink / raw) To: Bjorn Helgaas Cc: Chuansheng Liu, Aaron Lu, Tejun Heo, Rafael Wysocki, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Bjorn : the patch initialy created for bug 81551 ( ATAPI-CD-ROM-drive dead after resume from suspend/s2disk ) was not enough for the bug 84861 ( JMicron Technology Corp. JMB368 IDE controller dead after resume when async suspend is enabled ), the reason : there are too much models inside the family of JMBxxx JMicron SATA/IDE controlers PCI cards, and the first patch targets ONLY the JMB363/361 model, which is not enough : if (pdev->vendor == PCI_VENDOR_ID_JMICRON && + (pdev->device == PCI_DEVICE_ID_JMICRON_JMB363 || + pdev->device == PCI_DEVICE_ID_JMICRON_JMB361)) + device_disable_async_suspend(&pdev->dev); for example I have a JMB363/368 JMicron SATA/IDE PCI card, and the first patch created for the bug 81551 is not enough, that's why Chuansheng Liu created a new patch who targets ALL models of JMicron JMBxxx SATA/IDE cards, in order to be sure that these models of JMicron will have "async_suspend feature disabled, the good patch who works for all models of JMicron JMBxx SATA/IDE controlers : + if (dev->vendor != PCI_VENDOR_ID_JMICRON) + device_enable_async_suspend(&dev->dev); dev->wakeup_prepared = false; Le 05/11/2014 20:03, Bjorn Helgaas a écrit : > On Wed, Nov 5, 2014 at 11:46 AM, Barto <mister.freeman@laposte.net> wrote: >> this patch solves these 2 bug reports : >> >> https://bugzilla.kernel.org/show_bug.cgi?id= >> >> https://bugzilla.kernel.org/show_bug.cgi?id=81551 > > Those bugs were already mentioned. But e6b7e41cdd8c claims to solve > https://bugzilla.kernel.org/show_bug.cgi?id=81551, and 84861 is a > duplicate of 81551, so it should also be fixed by e6b7e41cdd8c. > > So the question is, why was e6b7e41cdd8c insufficient? Presumably it > was tested and somebody thought it did fix the problem. > >> in simple words : JMicron IDE/Sata controlers family ( JMBxxx ) are not >> fully compatible with async_suspend feature, when a user tries to put >> his PC on standby mode then at wake-up JMicron IDE/Sata controlers will >> not work, because of a brother-relation between the SATA and IDE part on >> this JMicron PCI card >> >> >> >> >> Le 05/11/2014 19:01, Bjorn Helgaas a écrit : >>> On Tue, Nov 4, 2014 at 6:31 PM, Chuansheng Liu <chuansheng.liu@intel.com> wrote: >>>> The JMicron chip 361/363/368 contains one SATA controller and >>>> one PATA controller, they are brother-relation ship in PCI tree, >>>> but for powering on these both controller, we must follow the >>>> sequence one by one, otherwise one of them can not be powered on >>>> successfully. >>> >>> This should mention what's broken and what problem a user would see. >>> This changelog sounds a lot like the one for e6b7e41cdd8c, so I don't >>> know if this is for a new, related problem, or what. >>> >>>> So here we disable the async suspend method for Jmicron chip. >>>> >>>> Bug link: >>>> https://bugzilla.kernel.org/show_bug.cgi?id=81551 >>>> https://bugzilla.kernel.org/show_bug.cgi?id=84861 >>>> >>>> And we can revert the below commit after this patch is applied: >>>> e6b7e41(ata: Disabling the async PM for JMicron chip 363/361) >>>> >>>> Cc: stable@vger.kernel.org # 3.15+ >>>> Acked-by: Aaron Lu <aaron.lu@intel.com> >>>> Signed-off-by: Chuansheng Liu <chuansheng.liu@intel.com> >>>> --- >>>> drivers/pci/pci.c | 12 +++++++++++- >>>> 1 file changed, 11 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c >>>> index 625a4ac..53128f0 100644 >>>> --- a/drivers/pci/pci.c >>>> +++ b/drivers/pci/pci.c >>>> @@ -2046,7 +2046,17 @@ void pci_pm_init(struct pci_dev *dev) >>>> pm_runtime_forbid(&dev->dev); >>>> pm_runtime_set_active(&dev->dev); >>>> pm_runtime_enable(&dev->dev); >>>> - device_enable_async_suspend(&dev->dev); >>>> + >>>> + /* >>>> + * The JMicron chip 361/363/368 contains one SATA controller and >>>> + * one PATA controller, they are brother-relation ship in PCI tree, >>>> + * but for powering on these both controller, we must follow the >>>> + * sequence one by one, otherwise one of them can not be powered on >>>> + * successfully, so here we disable the async suspend method for >>>> + * Jmicron chip. >>>> + */ >>>> + if (dev->vendor != PCI_VENDOR_ID_JMICRON) >>>> + device_enable_async_suspend(&dev->dev); >>> >>> I don't like littering the core PCI code with vendor tests like this. >>> This would be the only one, except for an ancient DECchip 21050 bridge >>> erratum. >>> >>> And why would we want a test for *all* JMicron devices here, when you >>> claim the problem only affects a few specific ones? >>> >>> And what's the story with the e6b7e41cdd8c ("ata: Disabling the async >>> PM for JMicron chip 363/361") connection? Is something broken even >>> with e6b7e41cdd8c, and this is a better fix? Or is this simply a >>> different way of fixing the same problem? >>> >>>> dev->wakeup_prepared = false; >>>> >>>> dev->pm_cap = 0; >>>> -- >>>> 1.7.9.5 >>>> >>> > ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: [PATCH] PCI: Do not enable async suspend for JMicron chips 2014-11-05 19:03 ` Bjorn Helgaas 2014-11-06 1:36 ` Barto @ 2014-11-06 1:48 ` Liu, Chuansheng 2014-11-06 4:08 ` Bjorn Helgaas 1 sibling, 1 reply; 21+ messages in thread From: Liu, Chuansheng @ 2014-11-06 1:48 UTC (permalink / raw) To: Bjorn Helgaas, Barto, Tejun Heo (tj@kernel.org) Cc: Lu, Aaron, Tejun Heo, Rafael Wysocki, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org SGVsbG8gQmpvcm4sDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQmpv cm4gSGVsZ2FhcyBbbWFpbHRvOmJoZWxnYWFzQGdvb2dsZS5jb21dDQo+IFNlbnQ6IFRodXJzZGF5 LCBOb3ZlbWJlciAwNiwgMjAxNCAzOjA0IEFNDQo+IFRvOiBCYXJ0bw0KPiBDYzogTGl1LCBDaHVh bnNoZW5nOyBMdSwgQWFyb247IFRlanVuIEhlbzsgUmFmYWVsIFd5c29ja2k7DQo+IGxpbnV4LXBj aUB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcNCj4gU3ViamVj dDogUmU6IFtQQVRDSF0gUENJOiBEbyBub3QgZW5hYmxlIGFzeW5jIHN1c3BlbmQgZm9yIEpNaWNy b24gY2hpcHMNCj4gDQo+IE9uIFdlZCwgTm92IDUsIDIwMTQgYXQgMTE6NDYgQU0sIEJhcnRvIDxt aXN0ZXIuZnJlZW1hbkBsYXBvc3RlLm5ldD4NCj4gd3JvdGU6DQo+ID4gdGhpcyBwYXRjaCBzb2x2 ZXMgdGhlc2UgMiBidWcgcmVwb3J0cyA6DQo+ID4NCj4gPiBodHRwczovL2J1Z3ppbGxhLmtlcm5l bC5vcmcvc2hvd19idWcuY2dpP2lkPTg0ODYxDQo+ID4NCj4gPiBodHRwczovL2J1Z3ppbGxhLmtl cm5lbC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTUxDQo+IA0KPiBUaG9zZSBidWdzIHdlcmUgYWxy ZWFkeSBtZW50aW9uZWQuICBCdXQgZTZiN2U0MWNkZDhjIGNsYWltcyB0byBzb2x2ZQ0KPiBodHRw czovL2J1Z3ppbGxhLmtlcm5lbC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTUxLCBhbmQgODQ4NjEg aXMgYQ0KPiBkdXBsaWNhdGUgb2YgODE1NTEsIHNvIGl0IHNob3VsZCBhbHNvIGJlIGZpeGVkIGJ5 IGU2YjdlNDFjZGQ4Yy4NCj4gDQo+IFNvIHRoZSBxdWVzdGlvbiBpcywgd2h5IHdhcyBlNmI3ZTQx Y2RkOGMgaW5zdWZmaWNpZW50PyAgUHJlc3VtYWJseSBpdA0KPiB3YXMgdGVzdGVkIGFuZCBzb21l Ym9keSB0aG91Z2h0IGl0IGRpZCBmaXggdGhlIHByb2JsZW0uDQoNClRoZSBmaXJzdCBwYXRjaCBl NmI3ZTQxY2RkOGMgd2hpY2ggaXMganVzdCBleGNsdWRlIHNvbWUgb2YgSk1pY3JvbiBjaGlwcygz NjMvMzYxKSBvdXQgb2YgYXN5bmNfc3VzcGVuZCwNCnRoZW4gQmFydG8gZm91bmQgdGhlIHNhbWUg aXNzdWUgb24gSk1pY3JvbiAzNjgsIHNvIHdlIG5lZWQgb25lIG1vcmUgZ2VuZXJhbCBwYXRjaCB0 byBsZXQgSk1pY3JvbiBjaGlwcw0Kb3V0IG9mIGFzeW5jX3N1c3BlbmQsIHNvIHdlIG1ha2UgdGhp cyBwYXRjaC4NCg0KQmpvcm4sIHRqLA0KQ291bGQgeW91IGtpbmRseSB0YWtlIHRoaXMgcGF0Y2g/ IEFzIEJhcnRvIHNhaWQsIGl0IGVmZmVjdGVkIHRoZSB1c2VyIGV4cGVyaWVuY2UgaW5kZWVkLCB0 aGFua3MuDQoNCg== ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] PCI: Do not enable async suspend for JMicron chips 2014-11-06 1:48 ` Liu, Chuansheng @ 2014-11-06 4:08 ` Bjorn Helgaas 2014-11-06 5:29 ` Barto 2014-11-06 5:29 ` Liu, Chuansheng 0 siblings, 2 replies; 21+ messages in thread From: Bjorn Helgaas @ 2014-11-06 4:08 UTC (permalink / raw) To: Liu, Chuansheng Cc: Barto, Tejun Heo (tj@kernel.org), Lu, Aaron, Rafael Wysocki, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org On Wed, Nov 5, 2014 at 6:48 PM, Liu, Chuansheng <chuansheng.liu@intel.com> wrote: > Hello Bjorn, > >> -----Original Message----- >> From: Bjorn Helgaas [mailto:bhelgaas@google.com] >> Sent: Thursday, November 06, 2014 3:04 AM >> To: Barto >> Cc: Liu, Chuansheng; Lu, Aaron; Tejun Heo; Rafael Wysocki; >> linux-pci@vger.kernel.org; linux-kernel@vger.kernel.org >> Subject: Re: [PATCH] PCI: Do not enable async suspend for JMicron chips >> >> On Wed, Nov 5, 2014 at 11:46 AM, Barto <mister.freeman@laposte.net> >> wrote: >> > this patch solves these 2 bug reports : >> > >> > https://bugzilla.kernel.org/show_bug.cgi?id=84861 >> > >> > https://bugzilla.kernel.org/show_bug.cgi?id=81551 >> >> Those bugs were already mentioned. But e6b7e41cdd8c claims to solve >> https://bugzilla.kernel.org/show_bug.cgi?id=81551, and 84861 is a >> duplicate of 81551, so it should also be fixed by e6b7e41cdd8c. >> >> So the question is, why was e6b7e41cdd8c insufficient? Presumably it >> was tested and somebody thought it did fix the problem. > > The first patch e6b7e41cdd8c which is just exclude some of JMicron chips(363/361) out of async_suspend, > then Barto found the same issue on JMicron 368, so we need one more general patch to let JMicron chips > out of async_suspend, so we make this patch. > > Bjorn, tj, > Could you kindly take this patch? As Barto said, it effected the user experience indeed, thanks. Thanks for clarifying the changelog as far as the different chips and the different bugzillas. But you haven't addressed my concerns about (1) putting a PCI vendor ID check in the generic PCI core code, and (2) applying this to *all* JMicron devices. You might want to explore a quirk-type solution or maybe just add the JMicron 368 to the checks added by e6b7e41cdd8c. Bjorn ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] PCI: Do not enable async suspend for JMicron chips 2014-11-06 4:08 ` Bjorn Helgaas @ 2014-11-06 5:29 ` Barto 2014-11-06 5:29 ` Liu, Chuansheng 1 sibling, 0 replies; 21+ messages in thread From: Barto @ 2014-11-06 5:29 UTC (permalink / raw) To: Bjorn Helgaas, Liu, Chuansheng Cc: Tejun Heo (tj@kernel.org), Lu, Aaron, Rafael Wysocki, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Hello Bjorn, in my bugreport I have already tried to add the JMicron 368 in the "if statement" and it didn't work, check my message here : https://bugzilla.kernel.org/show_bug.cgi?id=84861#c11 if Chuansheng has choosen a more generic way ( applying the patch to all JMicron devices ) it's because also because we don't know how many JMBxxx models could be affected by this bug, tomorrow maybe one user would create a bug report about a "JMB369" pci card who have again this bug, and maybe on month later another user with a "JMB382", it could be a nightmare for Chuanseng if he had to create every time a new patch for each model of JMicron, so for the moment the better approach for me is to disable async_suspend for all JMBxxx JMicron, Chuanseng's patch seems reasonnable, as long as we don't know the exact list of JMBxxx models we can assume that all JMicron SATA/IDE are affected by this problem Le 06/11/2014 05:08, Bjorn Helgaas a écrit : > > But you haven't addressed my concerns about (1) putting a PCI vendor > ID check in the generic PCI core code, and (2) applying this to *all* > JMicron devices. You might want to explore a quirk-type solution or > maybe just add the JMicron 368 to the checks added by e6b7e41cdd8c. > > Bjorn > ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: [PATCH] PCI: Do not enable async suspend for JMicron chips 2014-11-06 4:08 ` Bjorn Helgaas 2014-11-06 5:29 ` Barto @ 2014-11-06 5:29 ` Liu, Chuansheng 2014-11-06 5:36 ` Aaron Lu 1 sibling, 1 reply; 21+ messages in thread From: Liu, Chuansheng @ 2014-11-06 5:29 UTC (permalink / raw) To: Bjorn Helgaas Cc: Barto, Tejun Heo (tj@kernel.org), Lu, Aaron, Rafael Wysocki, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org SGVsbG8gQmpvcm4sDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQmpv cm4gSGVsZ2FhcyBbbWFpbHRvOmJoZWxnYWFzQGdvb2dsZS5jb21dDQo+IFNlbnQ6IFRodXJzZGF5 LCBOb3ZlbWJlciAwNiwgMjAxNCAxMjowOSBQTQ0KPiBUbzogTGl1LCBDaHVhbnNoZW5nDQo+IENj OiBCYXJ0bzsgVGVqdW4gSGVvICh0akBrZXJuZWwub3JnKTsgTHUsIEFhcm9uOyBSYWZhZWwgV3lz b2NraTsNCj4gbGludXgtcGNpQHZnZXIua2VybmVsLm9yZzsgbGludXgta2VybmVsQHZnZXIua2Vy bmVsLm9yZw0KPiBTdWJqZWN0OiBSZTogW1BBVENIXSBQQ0k6IERvIG5vdCBlbmFibGUgYXN5bmMg c3VzcGVuZCBmb3IgSk1pY3JvbiBjaGlwcw0KPiANCj4gT24gV2VkLCBOb3YgNSwgMjAxNCBhdCA2 OjQ4IFBNLCBMaXUsIENodWFuc2hlbmcNCj4gPGNodWFuc2hlbmcubGl1QGludGVsLmNvbT4gd3Jv dGU6DQo+ID4gSGVsbG8gQmpvcm4sDQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPj4gRnJvbTogQmpvcm4gSGVsZ2FhcyBbbWFpbHRvOmJoZWxnYWFzQGdvb2dsZS5jb21d DQo+ID4+IFNlbnQ6IFRodXJzZGF5LCBOb3ZlbWJlciAwNiwgMjAxNCAzOjA0IEFNDQo+ID4+IFRv OiBCYXJ0bw0KPiA+PiBDYzogTGl1LCBDaHVhbnNoZW5nOyBMdSwgQWFyb247IFRlanVuIEhlbzsg UmFmYWVsIFd5c29ja2k7DQo+ID4+IGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtl cm5lbEB2Z2VyLmtlcm5lbC5vcmcNCj4gPj4gU3ViamVjdDogUmU6IFtQQVRDSF0gUENJOiBEbyBu b3QgZW5hYmxlIGFzeW5jIHN1c3BlbmQgZm9yIEpNaWNyb24gY2hpcHMNCj4gPj4NCj4gPj4gT24g V2VkLCBOb3YgNSwgMjAxNCBhdCAxMTo0NiBBTSwgQmFydG8gPG1pc3Rlci5mcmVlbWFuQGxhcG9z dGUubmV0Pg0KPiA+PiB3cm90ZToNCj4gPj4gPiB0aGlzIHBhdGNoIHNvbHZlcyB0aGVzZSAyIGJ1 ZyByZXBvcnRzIDoNCj4gPj4gPg0KPiA+PiA+IGh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZy9z aG93X2J1Zy5jZ2k/aWQ9ODQ4NjENCj4gPj4gPg0KPiA+PiA+IGh0dHBzOi8vYnVnemlsbGEua2Vy bmVsLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE1NTENCj4gPj4NCj4gPj4gVGhvc2UgYnVncyB3ZXJl IGFscmVhZHkgbWVudGlvbmVkLiAgQnV0IGU2YjdlNDFjZGQ4YyBjbGFpbXMgdG8gc29sdmUNCj4g Pj4gaHR0cHM6Ly9idWd6aWxsYS5rZXJuZWwub3JnL3Nob3dfYnVnLmNnaT9pZD04MTU1MSwgYW5k IDg0ODYxIGlzIGENCj4gPj4gZHVwbGljYXRlIG9mIDgxNTUxLCBzbyBpdCBzaG91bGQgYWxzbyBi ZSBmaXhlZCBieSBlNmI3ZTQxY2RkOGMuDQo+ID4+DQo+ID4+IFNvIHRoZSBxdWVzdGlvbiBpcywg d2h5IHdhcyBlNmI3ZTQxY2RkOGMgaW5zdWZmaWNpZW50PyAgUHJlc3VtYWJseSBpdA0KPiA+PiB3 YXMgdGVzdGVkIGFuZCBzb21lYm9keSB0aG91Z2h0IGl0IGRpZCBmaXggdGhlIHByb2JsZW0uDQo+ ID4NCj4gPiBUaGUgZmlyc3QgcGF0Y2ggZTZiN2U0MWNkZDhjIHdoaWNoIGlzIGp1c3QgZXhjbHVk ZSBzb21lIG9mIEpNaWNyb24NCj4gY2hpcHMoMzYzLzM2MSkgb3V0IG9mIGFzeW5jX3N1c3BlbmQs DQo+ID4gdGhlbiBCYXJ0byBmb3VuZCB0aGUgc2FtZSBpc3N1ZSBvbiBKTWljcm9uIDM2OCwgc28g d2UgbmVlZCBvbmUgbW9yZQ0KPiBnZW5lcmFsIHBhdGNoIHRvIGxldCBKTWljcm9uIGNoaXBzDQo+ ID4gb3V0IG9mIGFzeW5jX3N1c3BlbmQsIHNvIHdlIG1ha2UgdGhpcyBwYXRjaC4NCj4gPg0KPiA+ IEJqb3JuLCB0aiwNCj4gPiBDb3VsZCB5b3Uga2luZGx5IHRha2UgdGhpcyBwYXRjaD8gQXMgQmFy dG8gc2FpZCwgaXQgZWZmZWN0ZWQgdGhlIHVzZXINCj4gZXhwZXJpZW5jZSBpbmRlZWQsIHRoYW5r cy4NCj4gDQo+IFRoYW5rcyBmb3IgY2xhcmlmeWluZyB0aGUgY2hhbmdlbG9nIGFzIGZhciBhcyB0 aGUgZGlmZmVyZW50IGNoaXBzIGFuZA0KPiB0aGUgZGlmZmVyZW50IGJ1Z3ppbGxhcy4NCj4gDQo+ IEJ1dCB5b3UgaGF2ZW4ndCBhZGRyZXNzZWQgbXkgY29uY2VybnMgYWJvdXQgKDEpIHB1dHRpbmcg YSBQQ0kgdmVuZG9yDQo+IElEIGNoZWNrIGluIHRoZSBnZW5lcmljIFBDSSBjb3JlIGNvZGUsIGFu ZCAoMikgYXBwbHlpbmcgdGhpcyB0byAqYWxsKg0KPiBKTWljcm9uIGRldmljZXMuICBZb3UgbWln aHQgd2FudCB0byBleHBsb3JlIGEgcXVpcmstdHlwZSBzb2x1dGlvbiBvcg0KPiBtYXliZSBqdXN0 IGFkZCB0aGUgSk1pY3JvbiAzNjggdG8gdGhlIGNoZWNrcyBhZGRlZCBieSBlNmI3ZTQxY2RkOGMu DQpVbmRlcnN0YW5kIHlvdXIgcG9pbnQsIGluIGZhY3QsIGJlZm9yZSB0aGlzIHBhdGNoIHN1Ym1p dHRlZCwgSSBoYWQgd3JpdHRlbiBhbm90aGVyIHBhdGNoIGh0dHBzOi8vbGttbC5vcmcvbGttbC8y MDE0LzkvMjQvNjgNCndoaWNoIGFkZHJlc3NlZCB0byBhZGQgdGhlIHF1aXJrLXR5cGUgc29sdXRp b24gaW4gQVRBIGNvZGUsIGFuZCBBYXJvbiBnaXZlbiBiZXR0ZXIgc3VnZ2VzdGlvbiB0aGF0IGlt cGxlbWVudGVkIGF0IHBjaV9wbV9pbml0KCkuDQpIb3cgZG8geW91IHRoaW5rIG9mIGl0PyBUaGFu a3MuDQoNCg0K ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] PCI: Do not enable async suspend for JMicron chips 2014-11-06 5:29 ` Liu, Chuansheng @ 2014-11-06 5:36 ` Aaron Lu 2014-11-06 6:39 ` Liu, Chuansheng 0 siblings, 1 reply; 21+ messages in thread From: Aaron Lu @ 2014-11-06 5:36 UTC (permalink / raw) To: Liu, Chuansheng, Bjorn Helgaas Cc: Barto, Tejun Heo (tj@kernel.org), Rafael Wysocki, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org On 11/06/2014 01:29 PM, Liu, Chuansheng wrote: > Hello Bjorn, > >> -----Original Message----- >> From: Bjorn Helgaas [mailto:bhelgaas@google.com] >> Sent: Thursday, November 06, 2014 12:09 PM >> To: Liu, Chuansheng >> Cc: Barto; Tejun Heo (tj@kernel.org); Lu, Aaron; Rafael Wysocki; >> linux-pci@vger.kernel.org; linux-kernel@vger.kernel.org >> Subject: Re: [PATCH] PCI: Do not enable async suspend for JMicron chips >> >> On Wed, Nov 5, 2014 at 6:48 PM, Liu, Chuansheng >> <chuansheng.liu@intel.com> wrote: >>> Hello Bjorn, >>> >>>> -----Original Message----- >>>> From: Bjorn Helgaas [mailto:bhelgaas@google.com] >>>> Sent: Thursday, November 06, 2014 3:04 AM >>>> To: Barto >>>> Cc: Liu, Chuansheng; Lu, Aaron; Tejun Heo; Rafael Wysocki; >>>> linux-pci@vger.kernel.org; linux-kernel@vger.kernel.org >>>> Subject: Re: [PATCH] PCI: Do not enable async suspend for JMicron chips >>>> >>>> On Wed, Nov 5, 2014 at 11:46 AM, Barto <mister.freeman@laposte.net> >>>> wrote: >>>>> this patch solves these 2 bug reports : >>>>> >>>>> https://bugzilla.kernel.org/show_bug.cgi?id=84861 >>>>> >>>>> https://bugzilla.kernel.org/show_bug.cgi?id=81551 >>>> >>>> Those bugs were already mentioned. But e6b7e41cdd8c claims to solve >>>> https://bugzilla.kernel.org/show_bug.cgi?id=81551, and 84861 is a >>>> duplicate of 81551, so it should also be fixed by e6b7e41cdd8c. >>>> >>>> So the question is, why was e6b7e41cdd8c insufficient? Presumably it >>>> was tested and somebody thought it did fix the problem. >>> >>> The first patch e6b7e41cdd8c which is just exclude some of JMicron >> chips(363/361) out of async_suspend, >>> then Barto found the same issue on JMicron 368, so we need one more >> general patch to let JMicron chips >>> out of async_suspend, so we make this patch. >>> >>> Bjorn, tj, >>> Could you kindly take this patch? As Barto said, it effected the user >> experience indeed, thanks. >> >> Thanks for clarifying the changelog as far as the different chips and >> the different bugzillas. >> >> But you haven't addressed my concerns about (1) putting a PCI vendor >> ID check in the generic PCI core code, and (2) applying this to *all* >> JMicron devices. You might want to explore a quirk-type solution or >> maybe just add the JMicron 368 to the checks added by e6b7e41cdd8c. > Understand your point, in fact, before this patch submitted, I had written another patch https://lkml.org/lkml/2014/9/24/68 > which addressed to add the quirk-type solution in ATA code, and Aaron given better suggestion that implemented at pci_pm_init(). > How do you think of it? Thanks. I think Bjorn means that we should place the code as a fixup somewhere in the quirks.c. I didn't take a closer look but DECLARE_PCI_FIXUP_FINAL for those JMicron PCI devices seems to be a proper phase. Thanks, Aaron ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: [PATCH] PCI: Do not enable async suspend for JMicron chips 2014-11-06 5:36 ` Aaron Lu @ 2014-11-06 6:39 ` Liu, Chuansheng 2014-11-06 8:25 ` Barto 2014-11-06 17:39 ` Bjorn Helgaas 0 siblings, 2 replies; 21+ messages in thread From: Liu, Chuansheng @ 2014-11-06 6:39 UTC (permalink / raw) To: Lu, Aaron, Bjorn Helgaas Cc: Barto, Tejun Heo (tj@kernel.org), Rafael Wysocki, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTHUsIEFhcm9uDQo+IFNl bnQ6IFRodXJzZGF5LCBOb3ZlbWJlciAwNiwgMjAxNCAxOjM3IFBNDQo+IFRvOiBMaXUsIENodWFu c2hlbmc7IEJqb3JuIEhlbGdhYXMNCj4gQ2M6IEJhcnRvOyBUZWp1biBIZW8gKHRqQGtlcm5lbC5v cmcpOyBSYWZhZWwgV3lzb2NraTsNCj4gbGludXgtcGNpQHZnZXIua2VybmVsLm9yZzsgbGludXgt a2VybmVsQHZnZXIua2VybmVsLm9yZw0KPiBTdWJqZWN0OiBSZTogW1BBVENIXSBQQ0k6IERvIG5v dCBlbmFibGUgYXN5bmMgc3VzcGVuZCBmb3IgSk1pY3JvbiBjaGlwcw0KPiANCj4gT24gMTEvMDYv MjAxNCAwMToyOSBQTSwgTGl1LCBDaHVhbnNoZW5nIHdyb3RlOg0KPiA+IEhlbGxvIEJqb3JuLA0K PiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IEJqb3JuIEhl bGdhYXMgW21haWx0bzpiaGVsZ2Fhc0Bnb29nbGUuY29tXQ0KPiA+PiBTZW50OiBUaHVyc2RheSwg Tm92ZW1iZXIgMDYsIDIwMTQgMTI6MDkgUE0NCj4gPj4gVG86IExpdSwgQ2h1YW5zaGVuZw0KPiA+ PiBDYzogQmFydG87IFRlanVuIEhlbyAodGpAa2VybmVsLm9yZyk7IEx1LCBBYXJvbjsgUmFmYWVs IFd5c29ja2k7DQo+ID4+IGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2 Z2VyLmtlcm5lbC5vcmcNCj4gPj4gU3ViamVjdDogUmU6IFtQQVRDSF0gUENJOiBEbyBub3QgZW5h YmxlIGFzeW5jIHN1c3BlbmQgZm9yIEpNaWNyb24gY2hpcHMNCj4gPj4NCj4gPj4gT24gV2VkLCBO b3YgNSwgMjAxNCBhdCA2OjQ4IFBNLCBMaXUsIENodWFuc2hlbmcNCj4gPj4gPGNodWFuc2hlbmcu bGl1QGludGVsLmNvbT4gd3JvdGU6DQo+ID4+PiBIZWxsbyBCam9ybiwNCj4gPj4+DQo+ID4+Pj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+PiBGcm9tOiBCam9ybiBIZWxnYWFzIFtt YWlsdG86YmhlbGdhYXNAZ29vZ2xlLmNvbV0NCj4gPj4+PiBTZW50OiBUaHVyc2RheSwgTm92ZW1i ZXIgMDYsIDIwMTQgMzowNCBBTQ0KPiA+Pj4+IFRvOiBCYXJ0bw0KPiA+Pj4+IENjOiBMaXUsIENo dWFuc2hlbmc7IEx1LCBBYXJvbjsgVGVqdW4gSGVvOyBSYWZhZWwgV3lzb2NraTsNCj4gPj4+PiBs aW51eC1wY2lAdmdlci5rZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnDQo+ ID4+Pj4gU3ViamVjdDogUmU6IFtQQVRDSF0gUENJOiBEbyBub3QgZW5hYmxlIGFzeW5jIHN1c3Bl bmQgZm9yIEpNaWNyb24gY2hpcHMNCj4gPj4+Pg0KPiA+Pj4+IE9uIFdlZCwgTm92IDUsIDIwMTQg YXQgMTE6NDYgQU0sIEJhcnRvIDxtaXN0ZXIuZnJlZW1hbkBsYXBvc3RlLm5ldD4NCj4gPj4+PiB3 cm90ZToNCj4gPj4+Pj4gdGhpcyBwYXRjaCBzb2x2ZXMgdGhlc2UgMiBidWcgcmVwb3J0cyA6DQo+ ID4+Pj4+DQo+ID4+Pj4+IGh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZy9zaG93X2J1Zy5jZ2k/ aWQ9ODQ4NjENCj4gPj4+Pj4NCj4gPj4+Pj4gaHR0cHM6Ly9idWd6aWxsYS5rZXJuZWwub3JnL3No b3dfYnVnLmNnaT9pZD04MTU1MQ0KPiA+Pj4+DQo+ID4+Pj4gVGhvc2UgYnVncyB3ZXJlIGFscmVh ZHkgbWVudGlvbmVkLiAgQnV0IGU2YjdlNDFjZGQ4YyBjbGFpbXMgdG8gc29sdmUNCj4gPj4+PiBo dHRwczovL2J1Z3ppbGxhLmtlcm5lbC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTUxLCBhbmQgODQ4 NjEgaXMgYQ0KPiA+Pj4+IGR1cGxpY2F0ZSBvZiA4MTU1MSwgc28gaXQgc2hvdWxkIGFsc28gYmUg Zml4ZWQgYnkgZTZiN2U0MWNkZDhjLg0KPiA+Pj4+DQo+ID4+Pj4gU28gdGhlIHF1ZXN0aW9uIGlz LCB3aHkgd2FzIGU2YjdlNDFjZGQ4YyBpbnN1ZmZpY2llbnQ/ICBQcmVzdW1hYmx5IGl0DQo+ID4+ Pj4gd2FzIHRlc3RlZCBhbmQgc29tZWJvZHkgdGhvdWdodCBpdCBkaWQgZml4IHRoZSBwcm9ibGVt Lg0KPiA+Pj4NCj4gPj4+IFRoZSBmaXJzdCBwYXRjaCBlNmI3ZTQxY2RkOGMgd2hpY2ggaXMganVz dCBleGNsdWRlIHNvbWUgb2YgSk1pY3Jvbg0KPiA+PiBjaGlwcygzNjMvMzYxKSBvdXQgb2YgYXN5 bmNfc3VzcGVuZCwNCj4gPj4+IHRoZW4gQmFydG8gZm91bmQgdGhlIHNhbWUgaXNzdWUgb24gSk1p Y3JvbiAzNjgsIHNvIHdlIG5lZWQgb25lIG1vcmUNCj4gPj4gZ2VuZXJhbCBwYXRjaCB0byBsZXQg Sk1pY3JvbiBjaGlwcw0KPiA+Pj4gb3V0IG9mIGFzeW5jX3N1c3BlbmQsIHNvIHdlIG1ha2UgdGhp cyBwYXRjaC4NCj4gPj4+DQo+ID4+PiBCam9ybiwgdGosDQo+ID4+PiBDb3VsZCB5b3Uga2luZGx5 IHRha2UgdGhpcyBwYXRjaD8gQXMgQmFydG8gc2FpZCwgaXQgZWZmZWN0ZWQgdGhlIHVzZXINCj4g Pj4gZXhwZXJpZW5jZSBpbmRlZWQsIHRoYW5rcy4NCj4gPj4NCj4gPj4gVGhhbmtzIGZvciBjbGFy aWZ5aW5nIHRoZSBjaGFuZ2Vsb2cgYXMgZmFyIGFzIHRoZSBkaWZmZXJlbnQgY2hpcHMgYW5kDQo+ ID4+IHRoZSBkaWZmZXJlbnQgYnVnemlsbGFzLg0KPiA+Pg0KPiA+PiBCdXQgeW91IGhhdmVuJ3Qg YWRkcmVzc2VkIG15IGNvbmNlcm5zIGFib3V0ICgxKSBwdXR0aW5nIGEgUENJIHZlbmRvcg0KPiA+ PiBJRCBjaGVjayBpbiB0aGUgZ2VuZXJpYyBQQ0kgY29yZSBjb2RlLCBhbmQgKDIpIGFwcGx5aW5n IHRoaXMgdG8gKmFsbCoNCj4gPj4gSk1pY3JvbiBkZXZpY2VzLiAgWW91IG1pZ2h0IHdhbnQgdG8g ZXhwbG9yZSBhIHF1aXJrLXR5cGUgc29sdXRpb24gb3INCj4gPj4gbWF5YmUganVzdCBhZGQgdGhl IEpNaWNyb24gMzY4IHRvIHRoZSBjaGVja3MgYWRkZWQgYnkgZTZiN2U0MWNkZDhjLg0KPiA+IFVu ZGVyc3RhbmQgeW91ciBwb2ludCwgaW4gZmFjdCwgYmVmb3JlIHRoaXMgcGF0Y2ggc3VibWl0dGVk LCBJIGhhZCB3cml0dGVuDQo+IGFub3RoZXIgcGF0Y2ggaHR0cHM6Ly9sa21sLm9yZy9sa21sLzIw MTQvOS8yNC82OA0KPiA+IHdoaWNoIGFkZHJlc3NlZCB0byBhZGQgdGhlIHF1aXJrLXR5cGUgc29s dXRpb24gaW4gQVRBIGNvZGUsIGFuZCBBYXJvbiBnaXZlbg0KPiBiZXR0ZXIgc3VnZ2VzdGlvbiB0 aGF0IGltcGxlbWVudGVkIGF0IHBjaV9wbV9pbml0KCkuDQo+ID4gSG93IGRvIHlvdSB0aGluayBv ZiBpdD8gVGhhbmtzLg0KPiANCj4gSSB0aGluayBCam9ybiBtZWFucyB0aGF0IHdlIHNob3VsZCBw bGFjZSB0aGUgY29kZSBhcyBhIGZpeHVwIHNvbWV3aGVyZQ0KPiBpbiB0aGUgcXVpcmtzLmMuIEkg ZGlkbid0IHRha2UgYSBjbG9zZXIgbG9vayBidXQgREVDTEFSRV9QQ0lfRklYVVBfRklOQUwNCj4g Zm9yIHRob3NlIEpNaWNyb24gUENJIGRldmljZXMgc2VlbXMgdG8gYmUgYSBwcm9wZXIgcGhhc2Uu DQoNClRoYW5rcyBBYXJvbiwgdGhlbiBob3cgYWJvdXQgYmVsb3cgcGF0Y2g/DQoNCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2F0YS9wYXRhX2ptaWNyb24uYyBiL2RyaXZlcnMvYXRhL3BhdGFfam1pY3Jv bi5jDQppbmRleCA0N2U0MThiLi45ZTg1Zjg2IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9hdGEvcGF0 YV9qbWljcm9uLmMNCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfam1pY3Jvbi5jDQpAQCAtMTU4LDYg KzE1OCwyMSBAQCBzdGF0aWMgaW50IGptaWNyb25faW5pdF9vbmUgKHN0cnVjdCBwY2lfZGV2ICpw ZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaQ0KICAgICAgICByZXR1cm4gYXRhX3Bj aV9ibWRtYV9pbml0X29uZShwZGV2LCBwcGksICZqbWljcm9uX3NodCwgTlVMTCwgMCk7DQogfQ0K IA0KKy8qDQorICogRm9yIEpNaWNyb24gY2hpcHMsIHdlIG5lZWQgdG8gZGlzYWJsZSB0aGUgYXN5 bmNfc3VzcGVuZCBtZXRob2QsIG90aGVyd2lzZQ0KKyAqIHRoZXkgd2lsbCBoaXQgdGhlIHBvd2Vy LW9uIGlzc3VlIHdoZW4gZG9pbmcgZGV2aWNlIHJlc3VtZSwgYWRkIG9uZSBxdWljaw0KKyAqIHNv bHV0aW9uIHRvIGRpc2FibGUgdGhlIGFzeW5jX3N1c3BlbmQgbWV0aG9kLg0KKyAqLw0KK3N0YXRp YyB2b2lkIHBjaV9hc3luY19zdXNwZW5kX2ZpeHVwKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQ0KK3sN CisgICAgICAgLyoNCisgICAgICAgICogZGlzYWJsaW5nIHRoZSBhc3luY19zdXNwZW5kIG1ldGhv ZCBmb3IgSk1pY3JvbiBjaGlwcyB0bw0KKyAgICAgICAgKiBhdm9pZCBkZXZpY2UgcmVzdW1pbmcg aXNzdWUuDQorICAgICAgICAqLw0KKyAgICAgICBkZXZpY2VfZGlzYWJsZV9hc3luY19zdXNwZW5k KCZwZGV2LT5kZXYpOw0KK30NCitERUNMQVJFX1BDSV9GSVhVUF9GSU5BTChQQ0lfVkVORE9SX0lE X0pNSUNST04sIFBDSV9BTllfSUQsIHBjaV9hc3luY19zdXNwZW5kX2ZpeHVwKTsNCisNCiBzdGF0 aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgam1pY3Jvbl9wY2lfdGJsW10gPSB7DQogICAg ICAgIHsgUENJX1ZFTkRPUl9JRF9KTUlDUk9OLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCBQQ0lf QU5ZX0lELA0KICAgICAgICAgIFBDSV9DTEFTU19TVE9SQUdFX0lERSA8PCA4LCAweGZmZmYwMCwg MCB9LA0KDQpCYXJ0bywNCkNvdWxkIHlvdSBoYXZlIGEgdHJ5IG9uIHlvdXIgc2lkZT8gVGhhbmtz Lg0KDQoNCg== ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] PCI: Do not enable async suspend for JMicron chips 2014-11-06 6:39 ` Liu, Chuansheng @ 2014-11-06 8:25 ` Barto 2014-11-06 17:39 ` Bjorn Helgaas 1 sibling, 0 replies; 21+ messages in thread From: Barto @ 2014-11-06 8:25 UTC (permalink / raw) To: Liu, Chuansheng, Lu, Aaron, Bjorn Helgaas Cc: Tejun Heo (tj@kernel.org), Rafael Wysocki, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org I tried your patch and it doesn't work, I think you have forgotten something, maybe you need also to modify the file /drivers/ata/ahci.c and not only /drivers/ata/pata_jmicron.c don't forget that I have a JMB363/368 SATA/IDE controller PCIe, which is both a SATA and IDE controller in one PCie card, and a IDE hardisk is connected on this JMB363/368 SATA/IDE controller PCIe, for now the patch who works is this : diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -2046,7 +2046,17 @@ void pci_pm_init(struct pci_dev *dev) pm_runtime_forbid(&dev->dev); pm_runtime_set_active(&dev->dev); pm_runtime_enable(&dev->dev); - device_enable_async_suspend(&dev->dev); + + /* + * The JMicron chip 361/363/368 contains one SATA controller and + * one PATA controller, they are brother-relation ship in PCI tree, + * but for powering on these both controller, we must follow the + * sequence one by one, otherwise one of them can not be powered on + * successfully, so here we disable the async suspend method for + * Jmicron chip. + */ + if (dev->vendor != PCI_VENDOR_ID_JMICRON) + device_enable_async_suspend(&dev->dev); dev->wakeup_prepared = false; dev->pm_cap = 0; Le 06/11/2014 07:39, Liu, Chuansheng a écrit : > > diff --git a/drivers/ata/pata_jmicron.c b/drivers/ata/pata_jmicron.c > index 47e418b..9e85f86 100644 > --- a/drivers/ata/pata_jmicron.c > +++ b/drivers/ata/pata_jmicron.c > @@ -158,6 +158,21 @@ static int jmicron_init_one (struct pci_dev *pdev, const struct pci_device_id *i > return ata_pci_bmdma_init_one(pdev, ppi, &jmicron_sht, NULL, 0); > } > > +/* > + * 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); > + > static const struct pci_device_id jmicron_pci_tbl[] = { > { PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, > PCI_CLASS_STORAGE_IDE << 8, 0xffff00, 0 }, > > Barto, > Could you have a try on your side? Thanks. > > ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] PCI: Do not enable async suspend for JMicron chips 2014-11-06 6:39 ` Liu, Chuansheng 2014-11-06 8:25 ` Barto @ 2014-11-06 17:39 ` Bjorn Helgaas 2014-11-06 21:02 ` Barto 2014-11-07 1:09 ` Liu, Chuansheng 1 sibling, 2 replies; 21+ messages in thread From: Bjorn Helgaas @ 2014-11-06 17:39 UTC (permalink / raw) To: Liu, Chuansheng Cc: Lu, Aaron, Barto, Tejun Heo (tj@kernel.org), Rafael Wysocki, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org On Wed, Nov 5, 2014 at 11:39 PM, Liu, Chuansheng <chuansheng.liu@intel.com> wrote: > > >> -----Original Message----- >> From: Lu, Aaron >> Sent: Thursday, November 06, 2014 1:37 PM >> To: Liu, Chuansheng; Bjorn Helgaas >> Cc: Barto; Tejun Heo (tj@kernel.org); Rafael Wysocki; >> linux-pci@vger.kernel.org; linux-kernel@vger.kernel.org >> Subject: Re: [PATCH] PCI: Do not enable async suspend for JMicron chips >> >> On 11/06/2014 01:29 PM, Liu, Chuansheng wrote: >> > Hello Bjorn, >> > >> >> -----Original Message----- >> >> From: Bjorn Helgaas [mailto:bhelgaas@google.com] >> >> Sent: Thursday, November 06, 2014 12:09 PM >> >> To: Liu, Chuansheng >> >> Cc: Barto; Tejun Heo (tj@kernel.org); Lu, Aaron; Rafael Wysocki; >> >> linux-pci@vger.kernel.org; linux-kernel@vger.kernel.org >> >> Subject: Re: [PATCH] PCI: Do not enable async suspend for JMicron chips >> >> >> >> On Wed, Nov 5, 2014 at 6:48 PM, Liu, Chuansheng >> >> <chuansheng.liu@intel.com> wrote: >> >>> Hello Bjorn, >> >>> >> >>>> -----Original Message----- >> >>>> From: Bjorn Helgaas [mailto:bhelgaas@google.com] >> >>>> Sent: Thursday, November 06, 2014 3:04 AM >> >>>> To: Barto >> >>>> Cc: Liu, Chuansheng; Lu, Aaron; Tejun Heo; Rafael Wysocki; >> >>>> linux-pci@vger.kernel.org; linux-kernel@vger.kernel.org >> >>>> Subject: Re: [PATCH] PCI: Do not enable async suspend for JMicron chips >> >>>> >> >>>> On Wed, Nov 5, 2014 at 11:46 AM, Barto <mister.freeman@laposte.net> >> >>>> wrote: >> >>>>> this patch solves these 2 bug reports : >> >>>>> >> >>>>> https://bugzilla.kernel.org/show_bug.cgi?id=84861 >> >>>>> >> >>>>> https://bugzilla.kernel.org/show_bug.cgi?id=81551 >> >>>> >> >>>> Those bugs were already mentioned. But e6b7e41cdd8c claims to solve >> >>>> https://bugzilla.kernel.org/show_bug.cgi?id=81551, and 84861 is a >> >>>> duplicate of 81551, so it should also be fixed by e6b7e41cdd8c. >> >>>> >> >>>> So the question is, why was e6b7e41cdd8c insufficient? Presumably it >> >>>> was tested and somebody thought it did fix the problem. >> >>> >> >>> The first patch e6b7e41cdd8c which is just exclude some of JMicron >> >> chips(363/361) out of async_suspend, >> >>> then Barto found the same issue on JMicron 368, so we need one more >> >> general patch to let JMicron chips >> >>> out of async_suspend, so we make this patch. >> >>> >> >>> Bjorn, tj, >> >>> Could you kindly take this patch? As Barto said, it effected the user >> >> experience indeed, thanks. >> >> >> >> Thanks for clarifying the changelog as far as the different chips and >> >> the different bugzillas. >> >> >> >> But you haven't addressed my concerns about (1) putting a PCI vendor >> >> ID check in the generic PCI core code, and (2) applying this to *all* >> >> JMicron devices. You might want to explore a quirk-type solution or >> >> maybe just add the JMicron 368 to the checks added by e6b7e41cdd8c. >> > Understand your point, in fact, before this patch submitted, I had written >> another patch https://lkml.org/lkml/2014/9/24/68 >> > which addressed to add the quirk-type solution in ATA code, and Aaron given >> better suggestion that implemented at pci_pm_init(). >> > How do you think of it? Thanks. >> >> I think Bjorn means that we should place the code as a fixup somewhere >> in the quirks.c. I didn't take a closer look but DECLARE_PCI_FIXUP_FINAL >> for those JMicron PCI devices seems to be a proper phase. > > Thanks Aaron, then how about below patch? > > diff --git a/drivers/ata/pata_jmicron.c b/drivers/ata/pata_jmicron.c > index 47e418b..9e85f86 100644 > --- a/drivers/ata/pata_jmicron.c > +++ b/drivers/ata/pata_jmicron.c > @@ -158,6 +158,21 @@ static int jmicron_init_one (struct pci_dev *pdev, const struct pci_device_id *i > return ata_pci_bmdma_init_one(pdev, ppi, &jmicron_sht, NULL, 0); > } > > +/* > + * 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. A "quick solution" is a red flag for me, because it's a hint that you just want the problem to go away without fully understanding it. That's probably not the case; it's probably just that *I* don't understand it all yet. > +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); I know Barto tested this and it didn't work, but this *strategy* is far better than adding the JMicron test in pci_pm_init(). It's ideal if a quirk like this could be in the pata_jmicron.c file, so it's only included when that driver is loaded. But it would still be OK if it had to be in drivers/pci/quirks.c, e.g., if something has to be done even before the driver is loaded. The idea of a quirk is to work around a defect in a device. What is the defect in this case? It seems there are two devices involved, e.g. (from https://bugzilla.kernel.org/show_bug.cgi?id=81551): 02:00.0 JMicron Technology Corp. JMB363 SATA/IDE Controller 02:00.1 JMicron Technology Corp. JMB363 SATA/IDE Controller The PCI power management code is designed to work correctly with all devices that conform to the spec. So either one of these devices doesn't conform to the spec, or the PM code is assuming some behavior that the spec doesn't actually require. If the latter, we need to fix the PM code, because it won't work with other non-JMicron devices either. I haven't seen reports of other devices, so my guess is that it really *is* a defect in these JMicron devices, but I still need a better understanding of exactly what's broken. Maybe it's something like: - 02:00.0 and 02:00.1 are both in D3 - if we try to put 02:00.1 in D0 first, it fails ("Refused to change power state, currently in D3") and the resolution is to change 02:00.0 from D3 to D0 first, then change 02:00.1 from D3 to D0. Or maybe it's just that there needs to be a delay between changing 02:00.0 and changing 02:00.1 (since I suspect we *start* those changes in that order anyway)? In either case it sounds like a device defect, because I don't see anything in the PCI Power Management spec about ordering requirements for multifunction devices. Speaking of ordering, what is it that guarantees 02:00.0 will be powered up before 02:00.1 when async suspend is disabled? Is it the dpm_noirq_list order in dpm_resume_noirq()? I don't know how much we gain by allowing async resume of multifunction devices. Is it possible that Windows always powers up multifunction devices in order? I doubt that Windows would have a quirk similar to what you're proposing here, so I wonder how they deal with this issue. It sounds like this issue only affects multifunction JMicron devices, so possibly the quirk could be made smarter by only disabling async suspend when it finds those. Per https://bugzilla.kernel.org/show_bug.cgi?id=81551#c8, this is a regression introduced by 76569faa62c4 ("PM / sleep: Asynchronous threads for resume_noirq"), which appeared in v3.15. That information needs to be in the changelog. Rafael, do you want to jump in here? I know almost nothing about the PCI power management code, so if you want to take over this whole thing, that would be fine by me. Bjorn ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] PCI: Do not enable async suspend for JMicron chips 2014-11-06 17:39 ` Bjorn Helgaas @ 2014-11-06 21:02 ` Barto 2014-11-07 1:09 ` Liu, Chuansheng 1 sibling, 0 replies; 21+ messages in thread From: Barto @ 2014-11-06 21:02 UTC (permalink / raw) To: Bjorn Helgaas, Liu, Chuansheng Cc: Lu, Aaron, Tejun Heo (tj@kernel.org), Rafael Wysocki, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org > The idea of a quirk is to work around a defect in a device. What is > the defect in this case? It seems there are two devices involved, > e.g. (from https://bugzilla.kernel.org/show_bug.cgi?id=81551): > > 02:00.0 JMicron Technology Corp. JMB363 SATA/IDE Controller > 02:00.1 JMicron Technology Corp. JMB363 SATA/IDE Controller > in my case I don't have exactly the same lines in dmesg, my JMicron JMB363/368 seems to have a different design, it's not exactly identical to JMB363 SATA/IDE Controller, in dmesg I can read this : dmesg | grep micron [ 0.860659] pata_jmicron 0000:03:00.1: enabling device (0000 -> 0001) [ 0.866760] scsi0 : pata_jmicron [ 0.870045] scsi1 : pata_jmicron lspci : lspci | grep JMicron 03:00.0 SATA controller: JMicron Technology Corp. JMB363 SATA/IDE Controller (rev 10) 03:00.1 IDE interface: JMicron Technology Corp. JMB368 IDE controller (rev 10) ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: [PATCH] PCI: Do not enable async suspend for JMicron chips 2014-11-06 17:39 ` Bjorn Helgaas 2014-11-06 21:02 ` Barto @ 2014-11-07 1:09 ` Liu, Chuansheng 1 sibling, 0 replies; 21+ messages in thread From: Liu, Chuansheng @ 2014-11-07 1:09 UTC (permalink / raw) To: Bjorn Helgaas Cc: Lu, Aaron, Barto, Tejun Heo (tj@kernel.org), Rafael Wysocki, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org SGVsbG8gQmpvcm4sDQoNCldpbGwgc2VuZCBvdXQgb25lIG5ldyBxdWlyay1zb2x1dGlvbiwgYW5k IHNvbWUgcmVhY3Rpb24gYmVsb3c6KQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ IEZyb206IEJqb3JuIEhlbGdhYXMgW21haWx0bzpiaGVsZ2Fhc0Bnb29nbGUuY29tXQ0KPiBTZW50 OiBGcmlkYXksIE5vdmVtYmVyIDA3LCAyMDE0IDE6MzkgQU0NCj4gVG86IExpdSwgQ2h1YW5zaGVu Zw0KPiBDYzogTHUsIEFhcm9uOyBCYXJ0bzsgVGVqdW4gSGVvICh0akBrZXJuZWwub3JnKTsgUmFm YWVsIFd5c29ja2k7DQo+IGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2 Z2VyLmtlcm5lbC5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSF0gUENJOiBEbyBub3QgZW5hYmxl IGFzeW5jIHN1c3BlbmQgZm9yIEpNaWNyb24gY2hpcHMNCj4gDQo+IE9uIFdlZCwgTm92IDUsIDIw MTQgYXQgMTE6MzkgUE0sIExpdSwgQ2h1YW5zaGVuZw0KPiA8Y2h1YW5zaGVuZy5saXVAaW50ZWwu Y29tPiB3cm90ZToNCj4gPg0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ ID4+IEZyb206IEx1LCBBYXJvbg0KPiA+PiBTZW50OiBUaHVyc2RheSwgTm92ZW1iZXIgMDYsIDIw MTQgMTozNyBQTQ0KPiA+PiBUbzogTGl1LCBDaHVhbnNoZW5nOyBCam9ybiBIZWxnYWFzDQo+ID4+ IENjOiBCYXJ0bzsgVGVqdW4gSGVvICh0akBrZXJuZWwub3JnKTsgUmFmYWVsIFd5c29ja2k7DQo+ ID4+IGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5v cmcNCj4gPj4gU3ViamVjdDogUmU6IFtQQVRDSF0gUENJOiBEbyBub3QgZW5hYmxlIGFzeW5jIHN1 c3BlbmQgZm9yIEpNaWNyb24gY2hpcHMNCj4gPj4NCj4gPj4gT24gMTEvMDYvMjAxNCAwMToyOSBQ TSwgTGl1LCBDaHVhbnNoZW5nIHdyb3RlOg0KPiA+PiA+IEhlbGxvIEJqb3JuLA0KPiA+PiA+DQo+ ID4+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+ID4+IEZyb206IEJqb3JuIEhl bGdhYXMgW21haWx0bzpiaGVsZ2Fhc0Bnb29nbGUuY29tXQ0KPiA+PiA+PiBTZW50OiBUaHVyc2Rh eSwgTm92ZW1iZXIgMDYsIDIwMTQgMTI6MDkgUE0NCj4gPj4gPj4gVG86IExpdSwgQ2h1YW5zaGVu Zw0KPiA+PiA+PiBDYzogQmFydG87IFRlanVuIEhlbyAodGpAa2VybmVsLm9yZyk7IEx1LCBBYXJv bjsgUmFmYWVsIFd5c29ja2k7DQo+ID4+ID4+IGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7IGxp bnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcNCj4gPj4gPj4gU3ViamVjdDogUmU6IFtQQVRDSF0g UENJOiBEbyBub3QgZW5hYmxlIGFzeW5jIHN1c3BlbmQgZm9yIEpNaWNyb24gY2hpcHMNCj4gPj4g Pj4NCj4gPj4gPj4gT24gV2VkLCBOb3YgNSwgMjAxNCBhdCA2OjQ4IFBNLCBMaXUsIENodWFuc2hl bmcNCj4gPj4gPj4gPGNodWFuc2hlbmcubGl1QGludGVsLmNvbT4gd3JvdGU6DQo+ID4+ID4+PiBI ZWxsbyBCam9ybiwNCj4gPj4gPj4+DQo+ID4+ID4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPj4gPj4+PiBGcm9tOiBCam9ybiBIZWxnYWFzIFttYWlsdG86YmhlbGdhYXNAZ29vZ2xl LmNvbV0NCj4gPj4gPj4+PiBTZW50OiBUaHVyc2RheSwgTm92ZW1iZXIgMDYsIDIwMTQgMzowNCBB TQ0KPiA+PiA+Pj4+IFRvOiBCYXJ0bw0KPiA+PiA+Pj4+IENjOiBMaXUsIENodWFuc2hlbmc7IEx1 LCBBYXJvbjsgVGVqdW4gSGVvOyBSYWZhZWwgV3lzb2NraTsNCj4gPj4gPj4+PiBsaW51eC1wY2lA dmdlci5rZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnDQo+ID4+ID4+Pj4g U3ViamVjdDogUmU6IFtQQVRDSF0gUENJOiBEbyBub3QgZW5hYmxlIGFzeW5jIHN1c3BlbmQgZm9y IEpNaWNyb24NCj4gY2hpcHMNCj4gPj4gPj4+Pg0KPiA+PiA+Pj4+IE9uIFdlZCwgTm92IDUsIDIw MTQgYXQgMTE6NDYgQU0sIEJhcnRvDQo+IDxtaXN0ZXIuZnJlZW1hbkBsYXBvc3RlLm5ldD4NCj4g Pj4gPj4+PiB3cm90ZToNCj4gPj4gPj4+Pj4gdGhpcyBwYXRjaCBzb2x2ZXMgdGhlc2UgMiBidWcg cmVwb3J0cyA6DQo+ID4+ID4+Pj4+DQo+ID4+ID4+Pj4+IGh0dHBzOi8vYnVnemlsbGEua2VybmVs Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ4NjENCj4gPj4gPj4+Pj4NCj4gPj4gPj4+Pj4gaHR0cHM6 Ly9idWd6aWxsYS5rZXJuZWwub3JnL3Nob3dfYnVnLmNnaT9pZD04MTU1MQ0KPiA+PiA+Pj4+DQo+ ID4+ID4+Pj4gVGhvc2UgYnVncyB3ZXJlIGFscmVhZHkgbWVudGlvbmVkLiAgQnV0IGU2YjdlNDFj ZGQ4YyBjbGFpbXMgdG8NCj4gc29sdmUNCj4gPj4gPj4+PiBodHRwczovL2J1Z3ppbGxhLmtlcm5l bC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTUxLCBhbmQgODQ4NjEgaXMgYQ0KPiA+PiA+Pj4+IGR1 cGxpY2F0ZSBvZiA4MTU1MSwgc28gaXQgc2hvdWxkIGFsc28gYmUgZml4ZWQgYnkgZTZiN2U0MWNk ZDhjLg0KPiA+PiA+Pj4+DQo+ID4+ID4+Pj4gU28gdGhlIHF1ZXN0aW9uIGlzLCB3aHkgd2FzIGU2 YjdlNDFjZGQ4YyBpbnN1ZmZpY2llbnQ/ICBQcmVzdW1hYmx5DQo+IGl0DQo+ID4+ID4+Pj4gd2Fz IHRlc3RlZCBhbmQgc29tZWJvZHkgdGhvdWdodCBpdCBkaWQgZml4IHRoZSBwcm9ibGVtLg0KPiA+ PiA+Pj4NCj4gPj4gPj4+IFRoZSBmaXJzdCBwYXRjaCBlNmI3ZTQxY2RkOGMgd2hpY2ggaXMganVz dCBleGNsdWRlIHNvbWUgb2YgSk1pY3Jvbg0KPiA+PiA+PiBjaGlwcygzNjMvMzYxKSBvdXQgb2Yg YXN5bmNfc3VzcGVuZCwNCj4gPj4gPj4+IHRoZW4gQmFydG8gZm91bmQgdGhlIHNhbWUgaXNzdWUg b24gSk1pY3JvbiAzNjgsIHNvIHdlIG5lZWQgb25lIG1vcmUNCj4gPj4gPj4gZ2VuZXJhbCBwYXRj aCB0byBsZXQgSk1pY3JvbiBjaGlwcw0KPiA+PiA+Pj4gb3V0IG9mIGFzeW5jX3N1c3BlbmQsIHNv IHdlIG1ha2UgdGhpcyBwYXRjaC4NCj4gPj4gPj4+DQo+ID4+ID4+PiBCam9ybiwgdGosDQo+ID4+ ID4+PiBDb3VsZCB5b3Uga2luZGx5IHRha2UgdGhpcyBwYXRjaD8gQXMgQmFydG8gc2FpZCwgaXQg ZWZmZWN0ZWQgdGhlIHVzZXINCj4gPj4gPj4gZXhwZXJpZW5jZSBpbmRlZWQsIHRoYW5rcy4NCj4g Pj4gPj4NCj4gPj4gPj4gVGhhbmtzIGZvciBjbGFyaWZ5aW5nIHRoZSBjaGFuZ2Vsb2cgYXMgZmFy IGFzIHRoZSBkaWZmZXJlbnQgY2hpcHMgYW5kDQo+ID4+ID4+IHRoZSBkaWZmZXJlbnQgYnVnemls bGFzLg0KPiA+PiA+Pg0KPiA+PiA+PiBCdXQgeW91IGhhdmVuJ3QgYWRkcmVzc2VkIG15IGNvbmNl cm5zIGFib3V0ICgxKSBwdXR0aW5nIGEgUENJIHZlbmRvcg0KPiA+PiA+PiBJRCBjaGVjayBpbiB0 aGUgZ2VuZXJpYyBQQ0kgY29yZSBjb2RlLCBhbmQgKDIpIGFwcGx5aW5nIHRoaXMgdG8gKmFsbCoN Cj4gPj4gPj4gSk1pY3JvbiBkZXZpY2VzLiAgWW91IG1pZ2h0IHdhbnQgdG8gZXhwbG9yZSBhIHF1 aXJrLXR5cGUgc29sdXRpb24gb3INCj4gPj4gPj4gbWF5YmUganVzdCBhZGQgdGhlIEpNaWNyb24g MzY4IHRvIHRoZSBjaGVja3MgYWRkZWQgYnkgZTZiN2U0MWNkZDhjLg0KPiA+PiA+IFVuZGVyc3Rh bmQgeW91ciBwb2ludCwgaW4gZmFjdCwgYmVmb3JlIHRoaXMgcGF0Y2ggc3VibWl0dGVkLCBJIGhh ZCB3cml0dGVuDQo+ID4+IGFub3RoZXIgcGF0Y2ggaHR0cHM6Ly9sa21sLm9yZy9sa21sLzIwMTQv OS8yNC82OA0KPiA+PiA+IHdoaWNoIGFkZHJlc3NlZCB0byBhZGQgdGhlIHF1aXJrLXR5cGUgc29s dXRpb24gaW4gQVRBIGNvZGUsIGFuZCBBYXJvbg0KPiBnaXZlbg0KPiA+PiBiZXR0ZXIgc3VnZ2Vz dGlvbiB0aGF0IGltcGxlbWVudGVkIGF0IHBjaV9wbV9pbml0KCkuDQo+ID4+ID4gSG93IGRvIHlv dSB0aGluayBvZiBpdD8gVGhhbmtzLg0KPiA+Pg0KPiA+PiBJIHRoaW5rIEJqb3JuIG1lYW5zIHRo YXQgd2Ugc2hvdWxkIHBsYWNlIHRoZSBjb2RlIGFzIGEgZml4dXAgc29tZXdoZXJlDQo+ID4+IGlu IHRoZSBxdWlya3MuYy4gSSBkaWRuJ3QgdGFrZSBhIGNsb3NlciBsb29rIGJ1dCBERUNMQVJFX1BD SV9GSVhVUF9GSU5BTA0KPiA+PiBmb3IgdGhvc2UgSk1pY3JvbiBQQ0kgZGV2aWNlcyBzZWVtcyB0 byBiZSBhIHByb3BlciBwaGFzZS4NCj4gPg0KPiA+IFRoYW5rcyBBYXJvbiwgdGhlbiBob3cgYWJv dXQgYmVsb3cgcGF0Y2g/DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvcGF0YV9q bWljcm9uLmMgYi9kcml2ZXJzL2F0YS9wYXRhX2ptaWNyb24uYw0KPiA+IGluZGV4IDQ3ZTQxOGIu LjllODVmODYgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9qbWljcm9uLmMNCj4g PiArKysgYi9kcml2ZXJzL2F0YS9wYXRhX2ptaWNyb24uYw0KPiA+IEBAIC0xNTgsNiArMTU4LDIx IEBAIHN0YXRpYyBpbnQgam1pY3Jvbl9pbml0X29uZSAoc3RydWN0IHBjaV9kZXYgKnBkZXYsDQo+ IGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppDQo+ID4gICAgICAgICByZXR1cm4gYXRhX3Bj aV9ibWRtYV9pbml0X29uZShwZGV2LCBwcGksICZqbWljcm9uX3NodCwgTlVMTCwNCj4gMCk7DQo+ ID4gIH0NCj4gPg0KPiA+ICsvKg0KPiA+ICsgKiBGb3IgSk1pY3JvbiBjaGlwcywgd2UgbmVlZCB0 byBkaXNhYmxlIHRoZSBhc3luY19zdXNwZW5kIG1ldGhvZCwNCj4gb3RoZXJ3aXNlDQo+ID4gKyAq IHRoZXkgd2lsbCBoaXQgdGhlIHBvd2VyLW9uIGlzc3VlIHdoZW4gZG9pbmcgZGV2aWNlIHJlc3Vt ZSwgYWRkIG9uZSBxdWljaw0KPiA+ICsgKiBzb2x1dGlvbiB0byBkaXNhYmxlIHRoZSBhc3luY19z dXNwZW5kIG1ldGhvZC4NCj4gDQo+IEEgInF1aWNrIHNvbHV0aW9uIiBpcyBhIHJlZCBmbGFnIGZv ciBtZSwgYmVjYXVzZSBpdCdzIGEgaGludCB0aGF0IHlvdQ0KPiBqdXN0IHdhbnQgdGhlIHByb2Js ZW0gdG8gZ28gYXdheSB3aXRob3V0IGZ1bGx5IHVuZGVyc3RhbmRpbmcgaXQuDQo+IFRoYXQncyBw cm9iYWJseSBub3QgdGhlIGNhc2U7IGl0J3MgcHJvYmFibHkganVzdCB0aGF0ICpJKiBkb24ndA0K PiB1bmRlcnN0YW5kIGl0IGFsbCB5ZXQuDQo+IA0KPiA+ICtzdGF0aWMgdm9pZCBwY2lfYXN5bmNf c3VzcGVuZF9maXh1cChzdHJ1Y3QgcGNpX2RldiAqcGRldikNCj4gPiArew0KPiA+ICsgICAgICAg LyoNCj4gPiArICAgICAgICAqIGRpc2FibGluZyB0aGUgYXN5bmNfc3VzcGVuZCBtZXRob2QgZm9y IEpNaWNyb24gY2hpcHMgdG8NCj4gPiArICAgICAgICAqIGF2b2lkIGRldmljZSByZXN1bWluZyBp c3N1ZS4NCj4gPiArICAgICAgICAqLw0KPiA+ICsgICAgICAgZGV2aWNlX2Rpc2FibGVfYXN5bmNf c3VzcGVuZCgmcGRldi0+ZGV2KTsNCj4gPiArfQ0KPiA+ICtERUNMQVJFX1BDSV9GSVhVUF9GSU5B TChQQ0lfVkVORE9SX0lEX0pNSUNST04sIFBDSV9BTllfSUQsDQo+IHBjaV9hc3luY19zdXNwZW5k X2ZpeHVwKTsNCj4gDQo+IEkga25vdyBCYXJ0byB0ZXN0ZWQgdGhpcyBhbmQgaXQgZGlkbid0IHdv cmssIGJ1dCB0aGlzICpzdHJhdGVneSogaXMNCj4gZmFyIGJldHRlciB0aGFuIGFkZGluZyB0aGUg Sk1pY3JvbiB0ZXN0IGluIHBjaV9wbV9pbml0KCkuICBJdCdzIGlkZWFsDQo+IGlmIGEgcXVpcmsg bGlrZSB0aGlzIGNvdWxkIGJlIGluIHRoZSBwYXRhX2ptaWNyb24uYyBmaWxlLCBzbyBpdCdzIG9u bHkNCj4gaW5jbHVkZWQgd2hlbiB0aGF0IGRyaXZlciBpcyBsb2FkZWQuICBCdXQgaXQgd291bGQg c3RpbGwgYmUgT0sgaWYgaXQNCj4gaGFkIHRvIGJlIGluIGRyaXZlcnMvcGNpL3F1aXJrcy5jLCBl LmcuLCBpZiBzb21ldGhpbmcgaGFzIHRvIGJlIGRvbmUNCj4gZXZlbiBiZWZvcmUgdGhlIGRyaXZl ciBpcyBsb2FkZWQuDQo+IA0KPiBUaGUgaWRlYSBvZiBhIHF1aXJrIGlzIHRvIHdvcmsgYXJvdW5k IGEgZGVmZWN0IGluIGEgZGV2aWNlLiAgV2hhdCBpcw0KPiB0aGUgZGVmZWN0IGluIHRoaXMgY2Fz ZT8gIEl0IHNlZW1zIHRoZXJlIGFyZSB0d28gZGV2aWNlcyBpbnZvbHZlZCwNCj4gZS5nLiAoZnJv bSBodHRwczovL2J1Z3ppbGxhLmtlcm5lbC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTUxKToNCj4g DQo+ICAgMDI6MDAuMCBKTWljcm9uIFRlY2hub2xvZ3kgQ29ycC4gSk1CMzYzIFNBVEEvSURFIENv bnRyb2xsZXINCj4gICAwMjowMC4xIEpNaWNyb24gVGVjaG5vbG9neSBDb3JwLiBKTUIzNjMgU0FU QS9JREUgQ29udHJvbGxlcg0KPiANCj4gVGhlIFBDSSBwb3dlciBtYW5hZ2VtZW50IGNvZGUgaXMg ZGVzaWduZWQgdG8gd29yayBjb3JyZWN0bHkgd2l0aCBhbGwNCj4gZGV2aWNlcyB0aGF0IGNvbmZv cm0gdG8gdGhlIHNwZWMuICBTbyBlaXRoZXIgb25lIG9mIHRoZXNlIGRldmljZXMNCj4gZG9lc24n dCBjb25mb3JtIHRvIHRoZSBzcGVjLCBvciB0aGUgUE0gY29kZSBpcyBhc3N1bWluZyBzb21lIGJl aGF2aW9yDQo+IHRoYXQgdGhlIHNwZWMgZG9lc24ndCBhY3R1YWxseSByZXF1aXJlLiAgSWYgdGhl IGxhdHRlciwgd2UgbmVlZCB0byBmaXgNCj4gdGhlIFBNIGNvZGUsIGJlY2F1c2UgaXQgd29uJ3Qg d29yayB3aXRoIG90aGVyIG5vbi1KTWljcm9uIGRldmljZXMNCj4gZWl0aGVyLg0KPiANCj4gSSBo YXZlbid0IHNlZW4gcmVwb3J0cyBvZiBvdGhlciBkZXZpY2VzLCBzbyBteSBndWVzcyBpcyB0aGF0 IGl0IHJlYWxseQ0KPiAqaXMqIGEgZGVmZWN0IGluIHRoZXNlIEpNaWNyb24gZGV2aWNlcywgYnV0 IEkgc3RpbGwgbmVlZCBhIGJldHRlcg0KPiB1bmRlcnN0YW5kaW5nIG9mIGV4YWN0bHkgd2hhdCdz IGJyb2tlbi4gIE1heWJlIGl0J3Mgc29tZXRoaW5nIGxpa2U6DQo+IA0KPiAgIC0gMDI6MDAuMCBh bmQgMDI6MDAuMSBhcmUgYm90aCBpbiBEMw0KPiAgIC0gaWYgd2UgdHJ5IHRvIHB1dCAwMjowMC4x IGluIEQwIGZpcnN0LCBpdCBmYWlscyAoIlJlZnVzZWQgdG8gY2hhbmdlDQo+IHBvd2VyIHN0YXRl LCBjdXJyZW50bHkgaW4gRDMiKQ0KWWVzLCBpdCBpcyB0aGUgY2FzZSwgMDI6MDAuMCBhbmQgMDI6 MDAuMSBhcmUgYnJvdGhlciByZWxhdGlvbnNoaXAsIGJ1dCBoYXMgcG93ZXItb24NCnNlcXVlbmNl IGRlcGVuZGVuY3kuDQoNCj4gDQo+IGFuZCB0aGUgcmVzb2x1dGlvbiBpcyB0byBjaGFuZ2UgMDI6 MDAuMCBmcm9tIEQzIHRvIEQwIGZpcnN0LCB0aGVuDQo+IGNoYW5nZSAwMjowMC4xIGZyb20gRDMg dG8gRDAuICBPciBtYXliZSBpdCdzIGp1c3QgdGhhdCB0aGVyZSBuZWVkcyB0bw0KPiBiZSBhIGRl bGF5IGJldHdlZW4gY2hhbmdpbmcgMDI6MDAuMCBhbmQgY2hhbmdpbmcgMDI6MDAuMSAoc2luY2Ug SQ0KPiBzdXNwZWN0IHdlICpzdGFydCogdGhvc2UgY2hhbmdlcyBpbiB0aGF0IG9yZGVyIGFueXdh eSk/DQpEZWxheSBoYXMgbm8gaGVscCBmb3IgdGhpcyBpc3N1ZSwgd2UgbXVzdCBmb2xsb3cgdGhl IG9yZGVyIHRvIHBvd2VyIG9uIG9uZSBieSBvbmUuDQoNCj4gDQo+IEluIGVpdGhlciBjYXNlIGl0 IHNvdW5kcyBsaWtlIGEgZGV2aWNlIGRlZmVjdCwgYmVjYXVzZSBJIGRvbid0IHNlZQ0KPiBhbnl0 aGluZyBpbiB0aGUgUENJIFBvd2VyIE1hbmFnZW1lbnQgc3BlYyBhYm91dCBvcmRlcmluZyByZXF1 aXJlbWVudHMNCj4gZm9yIG11bHRpZnVuY3Rpb24gZGV2aWNlcy4NCj4gDQo+IFNwZWFraW5nIG9m IG9yZGVyaW5nLCB3aGF0IGlzIGl0IHRoYXQgZ3VhcmFudGVlcyAwMjowMC4wIHdpbGwgYmUNCj4g cG93ZXJlZCB1cCBiZWZvcmUgMDI6MDAuMSB3aGVuIGFzeW5jIHN1c3BlbmQgaXMgZGlzYWJsZWQ/ ICBJcyBpdCB0aGUNCj4gZHBtX25vaXJxX2xpc3Qgb3JkZXIgaW4gZHBtX3Jlc3VtZV9ub2lycSgp Pw0KWWVzLCBpdCBkZXBlbmRzIG9uIHRoYXQgbGlzdCB0byBwb3dlciBvbiBpbiBvcmRlci4NCg0K PiANCj4gSSBkb24ndCBrbm93IGhvdyBtdWNoIHdlIGdhaW4gYnkgYWxsb3dpbmcgYXN5bmMgcmVz dW1lIG9mDQo+IG11bHRpZnVuY3Rpb24gZGV2aWNlcy4gIElzIGl0IHBvc3NpYmxlIHRoYXQgV2lu ZG93cyBhbHdheXMgcG93ZXJzIHVwDQo+IG11bHRpZnVuY3Rpb24gZGV2aWNlcyBpbiBvcmRlcj8g IEkgZG91YnQgdGhhdCBXaW5kb3dzIHdvdWxkIGhhdmUgYQ0KPiBxdWlyayBzaW1pbGFyIHRvIHdo YXQgeW91J3JlIHByb3Bvc2luZyBoZXJlLCBzbyBJIHdvbmRlciBob3cgdGhleSBkZWFsDQo+IHdp dGggdGhpcyBpc3N1ZS4NCj4gDQo+IEl0IHNvdW5kcyBsaWtlIHRoaXMgaXNzdWUgb25seSBhZmZl Y3RzIG11bHRpZnVuY3Rpb24gSk1pY3JvbiBkZXZpY2VzLA0KPiBzbyBwb3NzaWJseSB0aGUgcXVp cmsgY291bGQgYmUgbWFkZSBzbWFydGVyIGJ5IG9ubHkgZGlzYWJsaW5nIGFzeW5jDQo+IHN1c3Bl bmQgd2hlbiBpdCBmaW5kcyB0aG9zZS4NClllcywgdGhlIG5ldyBxdWlyay1zb2x1dGlvbiB3aWxs IGJlIHNlbnQgb3V0IHNvb24uDQoNCj4gDQo+IFBlciBodHRwczovL2J1Z3ppbGxhLmtlcm5lbC5v cmcvc2hvd19idWcuY2dpP2lkPTgxNTUxI2M4LCB0aGlzIGlzIGENCj4gcmVncmVzc2lvbiBpbnRy b2R1Y2VkIGJ5IDc2NTY5ZmFhNjJjNCAoIlBNIC8gc2xlZXA6IEFzeW5jaHJvbm91cw0KPiB0aHJl YWRzIGZvciByZXN1bWVfbm9pcnEiKSwgd2hpY2ggYXBwZWFyZWQgaW4gdjMuMTUuICBUaGF0IGlu Zm9ybWF0aW9uDQo+IG5lZWRzIHRvIGJlIGluIHRoZSBjaGFuZ2Vsb2cuDQo+IA0KRmFpcmx5IGVu b3VnaC4gVGhlIG5ldyBxdWlyay1zb2x1dGlvbiBwYXRjaCBoYXMgYmVlbiB0ZXN0ZWQgYnkgQmFy dG8gc3VjY2Vzc2Z1bGx5LA0Kd2lsbCB1cGRhdGUgdGhlIGNoYW5nZWxvZyB3aXRoIG1vcmUgZGV0 YWlsLg0KSXQgaXMgcmVncmVzc2lvbiwgYnV0IG5vdCBmdWxseSByZWFsIHNpbmNlIHdlIGFjdHVh bGx5IGZvdW5kIHRoZSBjaGFyYWN0ZXIgZm9yIEpNaWNyb24gZGV2aWNlcy4NCg0KDQo= ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH] PCI: Do not enable async suspend for JMicron chips @ 2014-11-05 1:07 Chuansheng Liu 2014-11-05 1:33 ` Aaron Lu 2014-11-05 16:31 ` Tejun Heo 0 siblings, 2 replies; 21+ messages in thread From: Chuansheng Liu @ 2014-11-05 1:07 UTC (permalink / raw) To: bhelgaas, aaron.lu, tj, rjw, mister.freeman Cc: linux-pci, linux-kernel, chuansheng.liu The JMicron chip 361/363/368 contains one SATA controller and one PATA controller, they are brother-relation ship in PCI tree, but for powering on these both controller, we must follow the sequence one by one, otherwise one of them can not be powered on successfully. So here we disable the async suspend method for Jmicron chip. Cc: stable@vger.kernel.org # 3.15+ Signed-off-by: Chuansheng Liu <chuansheng.liu@intel.com> --- drivers/pci/pci.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 625a4ac..53128f0 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -2046,7 +2046,17 @@ void pci_pm_init(struct pci_dev *dev) pm_runtime_forbid(&dev->dev); pm_runtime_set_active(&dev->dev); pm_runtime_enable(&dev->dev); - device_enable_async_suspend(&dev->dev); + + /* + * The JMicron chip 361/363/368 contains one SATA controller and + * one PATA controller, they are brother-relation ship in PCI tree, + * but for powering on these both controller, we must follow the + * sequence one by one, otherwise one of them can not be powered on + * successfully, so here we disable the async suspend method for + * Jmicron chip. + */ + if (dev->vendor != PCI_VENDOR_ID_JMICRON) + device_enable_async_suspend(&dev->dev); dev->wakeup_prepared = false; dev->pm_cap = 0; -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH] PCI: Do not enable async suspend for JMicron chips 2014-11-05 1:07 Chuansheng Liu @ 2014-11-05 1:33 ` Aaron Lu 2014-11-05 1:35 ` Aaron Lu 2014-11-05 16:31 ` Tejun Heo 1 sibling, 1 reply; 21+ messages in thread From: Aaron Lu @ 2014-11-05 1:33 UTC (permalink / raw) To: Chuansheng Liu, bhelgaas, tj, rjw, mister.freeman; +Cc: linux-pci, linux-kernel On 11/05/2014 09:07 AM, Chuansheng Liu wrote: > The JMicron chip 361/363/368 contains one SATA controller and > one PATA controller, they are brother-relation ship in PCI tree, > but for powering on these both controller, we must follow the > sequence one by one, otherwise one of them can not be powered on > successfully. > > So here we disable the async suspend method for Jmicron chip. > Place the buglink here? Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=84861 Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=81551 > Cc: stable@vger.kernel.org # 3.15+ > Signed-off-by: Chuansheng Liu <chuansheng.liu@intel.com> Patch looks good to me, thanks for fixing this! -Aaron > --- > drivers/pci/pci.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > index 625a4ac..53128f0 100644 > --- a/drivers/pci/pci.c > +++ b/drivers/pci/pci.c > @@ -2046,7 +2046,17 @@ void pci_pm_init(struct pci_dev *dev) > pm_runtime_forbid(&dev->dev); > pm_runtime_set_active(&dev->dev); > pm_runtime_enable(&dev->dev); > - device_enable_async_suspend(&dev->dev); > + > + /* > + * The JMicron chip 361/363/368 contains one SATA controller and > + * one PATA controller, they are brother-relation ship in PCI tree, > + * but for powering on these both controller, we must follow the > + * sequence one by one, otherwise one of them can not be powered on > + * successfully, so here we disable the async suspend method for > + * Jmicron chip. > + */ > + if (dev->vendor != PCI_VENDOR_ID_JMICRON) > + device_enable_async_suspend(&dev->dev); > dev->wakeup_prepared = false; > > dev->pm_cap = 0; > ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] PCI: Do not enable async suspend for JMicron chips 2014-11-05 1:33 ` Aaron Lu @ 2014-11-05 1:35 ` Aaron Lu 0 siblings, 0 replies; 21+ messages in thread From: Aaron Lu @ 2014-11-05 1:35 UTC (permalink / raw) To: Chuansheng Liu, bhelgaas, tj, rjw, mister.freeman; +Cc: linux-pci, linux-kernel On 11/05/2014 09:33 AM, Aaron Lu wrote: > On 11/05/2014 09:07 AM, Chuansheng Liu wrote: >> The JMicron chip 361/363/368 contains one SATA controller and >> one PATA controller, they are brother-relation ship in PCI tree, >> but for powering on these both controller, we must follow the >> sequence one by one, otherwise one of them can not be powered on >> successfully. >> >> So here we disable the async suspend method for Jmicron chip. >> > > Place the buglink here? > > Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=84861 > Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=81551 >> Cc: stable@vger.kernel.org # 3.15+ >> Signed-off-by: Chuansheng Liu <chuansheng.liu@intel.com> > > Patch looks good to me, thanks for fixing this! BTW, the previous change to the ATA code can be deleted now. So maybe also put them into this patch. Regards, Aaron >> --- >> drivers/pci/pci.c | 12 +++++++++++- >> 1 file changed, 11 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c >> index 625a4ac..53128f0 100644 >> --- a/drivers/pci/pci.c >> +++ b/drivers/pci/pci.c >> @@ -2046,7 +2046,17 @@ void pci_pm_init(struct pci_dev *dev) >> pm_runtime_forbid(&dev->dev); >> pm_runtime_set_active(&dev->dev); >> pm_runtime_enable(&dev->dev); >> - device_enable_async_suspend(&dev->dev); >> + >> + /* >> + * The JMicron chip 361/363/368 contains one SATA controller and >> + * one PATA controller, they are brother-relation ship in PCI tree, >> + * but for powering on these both controller, we must follow the >> + * sequence one by one, otherwise one of them can not be powered on >> + * successfully, so here we disable the async suspend method for >> + * Jmicron chip. >> + */ >> + if (dev->vendor != PCI_VENDOR_ID_JMICRON) >> + device_enable_async_suspend(&dev->dev); >> dev->wakeup_prepared = false; >> >> dev->pm_cap = 0; >> > ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] PCI: Do not enable async suspend for JMicron chips 2014-11-05 1:07 Chuansheng Liu 2014-11-05 1:33 ` Aaron Lu @ 2014-11-05 16:31 ` Tejun Heo 2014-11-05 17:58 ` Barto 2014-11-05 18:04 ` Tejun Heo 1 sibling, 2 replies; 21+ messages in thread From: Tejun Heo @ 2014-11-05 16:31 UTC (permalink / raw) To: Chuansheng Liu Cc: bhelgaas, aaron.lu, rjw, mister.freeman, linux-pci, linux-kernel On Wed, Nov 05, 2014 at 09:07:45AM +0800, Chuansheng Liu wrote: > The JMicron chip 361/363/368 contains one SATA controller and > one PATA controller, they are brother-relation ship in PCI tree, > but for powering on these both controller, we must follow the > sequence one by one, otherwise one of them can not be powered on > successfully. > > So here we disable the async suspend method for Jmicron chip. > > Cc: stable@vger.kernel.org # 3.15+ > Signed-off-by: Chuansheng Liu <chuansheng.liu@intel.com> Applied to libata/for-3.18-fixes. Thanks. -- tejun ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] PCI: Do not enable async suspend for JMicron chips 2014-11-05 16:31 ` Tejun Heo @ 2014-11-05 17:58 ` Barto 2014-11-05 18:04 ` Tejun Heo 1 sibling, 0 replies; 21+ messages in thread From: Barto @ 2014-11-05 17:58 UTC (permalink / raw) To: Tejun Heo Cc: bhelgaas, aaron.lu, rjw, linux-pci, linux-kernel, chuansheng.liu I tried the patch, it solves the problem, but I had to change the patch in order to be compatible with 3.18rc3 source code : patching file drivers/pci/pci.c Hunk #1 FAILED at 2046. 1 out of 1 hunk FAILED -- saving rejects to file drivers/pci/pci.c.rej here is the correct patch for kernel 3.18rc3 source code : diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -2046,7 +2046,17 @@ void pci_pm_init(struct pci_dev *dev) pm_runtime_forbid(&dev->dev); pm_runtime_set_active(&dev->dev); pm_runtime_enable(&dev->dev); - device_enable_async_suspend(&dev->dev); + + /* + * The JMicron chip 361/363/368 contains one SATA controller and + * one PATA controller, they are brother-relation ship in PCI tree, + * but for powering on these both controller, we must follow the + * sequence one by one, otherwise one of them can not be powered on + * successfully, so here we disable the async suspend method for + * Jmicron chip. + */ + if (dev->vendor != PCI_VENDOR_ID_JMICRON) + device_enable_async_suspend(&dev->dev); dev->wakeup_prepared = false; dev->pm_cap = 0; Le 05/11/2014 17:31, Tejun Heo a écrit : > On Wed, Nov 05, 2014 at 09:07:45AM +0800, Chuansheng Liu wrote: >> The JMicron chip 361/363/368 contains one SATA controller and >> one PATA controller, they are brother-relation ship in PCI tree, >> but for powering on these both controller, we must follow the >> sequence one by one, otherwise one of them can not be powered on >> successfully. >> >> So here we disable the async suspend method for Jmicron chip. >> >> Cc: stable@vger.kernel.org # 3.15+ >> Signed-off-by: Chuansheng Liu <chuansheng.liu@intel.com> > > Applied to libata/for-3.18-fixes. > > Thanks. > ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] PCI: Do not enable async suspend for JMicron chips 2014-11-05 16:31 ` Tejun Heo 2014-11-05 17:58 ` Barto @ 2014-11-05 18:04 ` Tejun Heo 1 sibling, 0 replies; 21+ messages in thread From: Tejun Heo @ 2014-11-05 18:04 UTC (permalink / raw) To: Chuansheng Liu Cc: bhelgaas, aaron.lu, rjw, mister.freeman, linux-pci, linux-kernel On Wed, Nov 05, 2014 at 11:31:59AM -0500, Tejun Heo wrote: > On Wed, Nov 05, 2014 at 09:07:45AM +0800, Chuansheng Liu wrote: > > The JMicron chip 361/363/368 contains one SATA controller and > > one PATA controller, they are brother-relation ship in PCI tree, > > but for powering on these both controller, we must follow the > > sequence one by one, otherwise one of them can not be powered on > > successfully. > > > > So here we disable the async suspend method for Jmicron chip. > > > > Cc: stable@vger.kernel.org # 3.15+ > > Signed-off-by: Chuansheng Liu <chuansheng.liu@intel.com> > > Applied to libata/for-3.18-fixes. Ah, this is a PCI patch. Popping from libata tree. Thanks. -- tejun ^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2014-11-07 1:11 UTC | newest] Thread overview: 21+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-11-05 1:31 [PATCH] PCI: Do not enable async suspend for JMicron chips Chuansheng Liu 2014-11-05 18:01 ` Bjorn Helgaas 2014-11-05 18:46 ` Barto 2014-11-05 19:03 ` Bjorn Helgaas 2014-11-06 1:36 ` Barto 2014-11-06 1:48 ` Liu, Chuansheng 2014-11-06 4:08 ` Bjorn Helgaas 2014-11-06 5:29 ` Barto 2014-11-06 5:29 ` Liu, Chuansheng 2014-11-06 5:36 ` Aaron Lu 2014-11-06 6:39 ` Liu, Chuansheng 2014-11-06 8:25 ` Barto 2014-11-06 17:39 ` Bjorn Helgaas 2014-11-06 21:02 ` Barto 2014-11-07 1:09 ` Liu, Chuansheng -- strict thread matches above, loose matches on Subject: below -- 2014-11-05 1:07 Chuansheng Liu 2014-11-05 1:33 ` Aaron Lu 2014-11-05 1:35 ` Aaron Lu 2014-11-05 16:31 ` Tejun Heo 2014-11-05 17:58 ` Barto 2014-11-05 18:04 ` Tejun Heo
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).