All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jian Peng <jipeng2005@gmail.com>
To: Tejun Heo <tj@kernel.org>
Cc: Valdis.Kletnieks@vt.edu, "Rafael J. Wysocki" <rjw@sisk.pl>,
	Jeff Garzik <jgarzik@pobox.com>,
	Michael Leun <lkml20100708@newton.leun.net>,
	linux-ide@vger.kernel.org,
	Linux PM mailing list <linux-pm@lists.linux-foundation.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2.6.38-rc7] Revert "libata: ahci_start_engine compliant to AHCI spec"
Date: Fri, 20 May 2011 11:21:31 -0700	[thread overview]
Message-ID: <BANLkTik0WV4+p+YWEKC0XataCh0Po_cEPg@mail.gmail.com> (raw)
In-Reply-To: <20110520154341.GL31426@htj.dyndns.org>

Sorry that I need fix my gmail setting to make it show up in LKML.

Hi, Tejun/Valdis,

Since this is an interoperability issue of SATA host controller, the
first step I want to try it to make sure the tweak that MAKE my
controller WORK does not break other controllers.
You are both right that adding this majic 5ms delay at this place
should not be the final solution.

If this magic 5ms delay works on other affected systems, I plan to
post a new patch that inside ahci_start_engine(), still perform same
check, and show warning message if failed, but will set a flag, then
still set START bit, and if there is such failure flag, add 5ms delay.

Valdis, could you apply the following patch and retest it?

Tejun, please review it.

--- a/drivers/ata/libahci.c 2011-05-18 14:23:36.564665643 -0700

+++ c/drivers/ata/libahci.c 2011-05-20 09:48:06.194663506 -0700
@@ -540,6 +540,7 @@

  void __iomem *port_mmio = ahci_port_base(ap);
  u32 tmp;
  u8 status;

+ int err = 0;


  status = readl(port_mmio + PORT_TFDATA) & 0xFF;


@@ -553,12 +554,12 @@

   * specific controller will fail under this condition
   */
  if (status & (ATA_BUSY | ATA_DRQ))
-  return;

+  err = 1;

  else {
   ahci_scr_read(&ap->link, SCR_STATUS, &tmp);

   if ((tmp & 0xf) != 0x3)
-   return;

+   err = 1;
  }

  /* start DMA */
@@ -566,6 +567,13 @@
  tmp |= PORT_CMD_START;
  writel(tmp, port_mmio + PORT_CMD);
  readl(port_mmio + PORT_CMD); /* flush */
+
+ /* Some controllers need longer time to be ready */
+ if(err) {
+  printk(KERN_WARNING
+   "Controller in wrong state when setting START bit\n");
+  msleep(5);
+ }
 }
 EXPORT_SYMBOL_GPL(ahci_start_engine);

On Fri, May 20, 2011 at 8:43 AM, Tejun Heo <tj@kernel.org> wrote:
>
> On Fri, May 20, 2011 at 11:40:20AM -0400, Valdis.Kletnieks@vt.edu wrote:
> > On Wed, 18 May 2011 17:14:56 PDT, Jian Peng said:
> >
> > > > @@ -1353,6 +1332,8 @@
> > > >
> > > >
> > > >   ahci_start_engine(ap);
> > > >
> > > > + msleep(5);
> > > > +
> > > >   if (online)
> > > >
> > > >    *class = ahci_dev_classify(ap);
> > > >
> >
> > It may very well be that adding a magic msleep(5) here just Makes It Work, but
> > I have a gut feeling that it's in the wrong place (for starters, 'online' can't change
> > during the msleep() unless somebody *else* sets it - in which case the locking
> > is screwed up as we're not forcing a re-read of the value).  The msleep() probably
> > needs to be before something else further down in the code (but I have no idea
> > exactly what).
>
> At this point, I think it would be better to simply add a flag and
> enable the check for the affected controller.
>
> Thanks.
>
> --
> tejun

  parent reply	other threads:[~2011-05-20 18:21 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-11 22:25 AHCI driver problem on SB700/SB800 w/ Acer Ferrari One Rafael J. Wysocki
2011-05-13 12:37 ` AHCI driver problem on ICH (Re: AHCI driver problem on SB700/SB800 w/ Acer Ferrari One) Michael Leun
2011-05-13 12:37 ` Michael Leun
2011-05-13 16:56   ` Rafael J. Wysocki
2011-05-13 16:56   ` Rafael J. Wysocki
2011-05-13 17:39     ` Tejun Heo
2011-05-13 19:54       ` Michael Leun
2011-05-13 19:54       ` Michael Leun
2011-05-13 20:20         ` Rafael J. Wysocki
2011-05-13 20:20         ` Rafael J. Wysocki
2011-05-13 20:22       ` Rafael J. Wysocki
2011-05-13 20:44         ` Rafael J. Wysocki
2011-05-14  2:08           ` Robert Hancock
2011-05-14  2:08           ` Robert Hancock
2011-05-14 10:18           ` Tejun Heo
2011-05-14 10:18           ` Tejun Heo
2011-05-14 10:28             ` [PATCH v2.6.38-rc7] Revert "libata: ahci_start_engine compliant to AHCI spec" Tejun Heo
2011-05-14 10:28               ` Tejun Heo
2011-05-14 17:47               ` Linus Torvalds
2011-05-14 17:47               ` Linus Torvalds
2011-05-14 18:49                 ` Jeff Garzik
2011-05-14 18:49                 ` Jeff Garzik
2011-05-15  6:19               ` Jian Peng
2011-05-15  9:25                 ` Rafael J. Wysocki
2011-05-15  9:25                 ` Rafael J. Wysocki
2011-05-15 12:20                   ` Michael Leun
2011-05-15 12:20                   ` Michael Leun
2011-05-16 17:02               ` Valdis.Kletnieks
2011-05-18 19:23                 ` Jian Peng
2011-05-18 19:44                   ` Rafael J. Wysocki
2011-05-18 19:44                   ` Rafael J. Wysocki
2011-05-18 21:25                     ` Jian Peng
2011-05-19  0:14                       ` Jian Peng
2011-05-19 10:19                         ` Rafael J. Wysocki
2011-05-19 10:19                         ` Rafael J. Wysocki
2011-05-19 16:42                           ` Jian Peng
2011-05-19 21:32                             ` Rafael J. Wysocki
2011-05-19 21:32                             ` Rafael J. Wysocki
2011-05-19 21:57                               ` Jian Peng
2011-05-19 22:03                                 ` Rafael J. Wysocki
2011-05-19 22:03                                 ` Rafael J. Wysocki
2011-05-20 15:40                         ` Valdis.Kletnieks
2011-05-20 15:43                           ` Tejun Heo
2011-05-20 17:02                             ` Jian Peng
2011-05-20 18:25                               ` Valdis.Kletnieks
2011-05-20 18:25                               ` Valdis.Kletnieks
2011-05-22  2:00                                 ` Jian Peng
2011-05-22  2:00                                 ` Jian Peng
2011-05-23 12:13                               ` Tejun Heo
2011-05-23 12:13                               ` Tejun Heo
2011-05-24  1:04                                 ` Jian Peng
2011-05-24  1:04                                 ` Jian Peng
2011-05-20 18:21                             ` Jian Peng
2011-05-20 18:21                             ` Jian Peng [this message]
2011-05-20 15:43                           ` Tejun Heo
2011-05-20 15:40                         ` Valdis.Kletnieks
2011-05-16 17:02               ` Valdis.Kletnieks
2011-05-14 10:28             ` Tejun Heo
2011-05-13 20:44         ` AHCI driver problem on ICH (Re: AHCI driver problem on SB700/SB800 w/ Acer Ferrari One) Rafael J. Wysocki
2011-05-13 20:22       ` Rafael J. Wysocki
2011-05-13 17:39     ` 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=BANLkTik0WV4+p+YWEKC0XataCh0Po_cEPg@mail.gmail.com \
    --to=jipeng2005@gmail.com \
    --cc=Valdis.Kletnieks@vt.edu \
    --cc=jgarzik@pobox.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=lkml20100708@newton.leun.net \
    --cc=rjw@sisk.pl \
    --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.