From: Barto <mister.freeman@laposte.net>
To: "Liu, Chuansheng" <chuansheng.liu@intel.com>,
"Lu, Aaron" <aaron.lu@intel.com>,
Bjorn Helgaas <bhelgaas@google.com>
Cc: "Tejun Heo (tj@kernel.org)" <tj@kernel.org>,
Rafael Wysocki <rjw@rjwysocki.net>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] PCI: Do not enable async suspend for JMicron chips
Date: Thu, 06 Nov 2014 09:25:21 +0100 [thread overview]
Message-ID: <545B3071.6040904@laposte.net> (raw)
In-Reply-To: <27240C0AC20F114CBF8149A2696CBE4A01EB7CC3@SHSMSX101.ccr.corp.intel.com>
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.
>
>
next prev parent reply other threads:[~2014-11-06 8:25 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
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 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:29 ` Liu, Chuansheng
2014-11-06 5:36 ` Aaron Lu
2014-11-06 6:39 ` Liu, Chuansheng
2014-11-06 6:39 ` Liu, Chuansheng
2014-11-06 8:25 ` Barto [this message]
2014-11-06 17:39 ` Bjorn Helgaas
2014-11-06 21:02 ` Barto
2014-11-07 1:09 ` Liu, Chuansheng
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=545B3071.6040904@laposte.net \
--to=mister.freeman@laposte.net \
--cc=aaron.lu@intel.com \
--cc=bhelgaas@google.com \
--cc=chuansheng.liu@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=rjw@rjwysocki.net \
--cc=tj@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.