From: Tejun Heo <tj@kernel.org>
To: Brian Norris <computersforpeace@gmail.com>
Cc: linux-ide@vger.kernel.org, Valdis.Kletnieks@vt.edu,
"Rafael J. Wysocki" <rjw@sisk.pl>,
Jeff Garzik <jgarzik@pobox.com>,
Michael Leun <lkml20100708@newton.leun.net>,
linux-kernel@vger.kernel.org, Jian Peng <jipeng2005@gmail.com>,
Kevin Cernekee <cernekee@gmail.com>
Subject: Re: ahci_start_engine compliance with AHCI spec
Date: Fri, 22 Jul 2011 11:03:17 +0200 [thread overview]
Message-ID: <20110722090317.GH2622@htj.dyndns.org> (raw)
In-Reply-To: <CAN8TOE_dCg6Wi_trE97hXjBPnZi4jpLyoeUEVrbMpgDH-BwKWA@mail.gmail.com>
Hello, Brian.
On Thu, Jul 21, 2011 at 10:13:16AM -0700, Brian Norris wrote:
> On Thu, Jul 21, 2011 at 1:49 AM, Tejun Heo <tj@kernel.org> wrote:
> > On Mon, Jul 18, 2011 at 11:40:17AM -0700, Brian Norris wrote:
> >> On Wed, Jul 13, 2011 at 6:14 AM, Tejun Heo <tj@kernel.org> wrote:
> >> > Hmmm... what happens if you don't comment out ahci_start_engine() call
> >> > from ahci_start_port()?
> >>
> >> I wasn't commenting out the ahci_start_engine() from
> >> ahci_start_port(). Can you clarify what you mean?
> >
> > Oh, I meant "what if you comment out..." I wrote that sentence in
> > negative and then switched but forgot removing "don't".
>
> OK, well I tried simply commenting out that ahci_start_engine() on
> both my special controller and on the Dell E6410 laptop and it worked
> just fine (solved my issues and didn't cause any issues on the Dell).
> Is this safe? It seems like we end up calling ahci_start_engine() at
> the end of the error handling process anyway, so maybe this call is
> not really necessary in the first place?
Yes, I believe so.
> Anyway, I also tried my own fix for this: adding a small delay to wait
> for some link recognition at the end of ahci_power_up(). I'm not sure
> if this is the greatest, but it also works for both systems I'm
> testing. I included the test patch here (based on linux-2.6). BTW, I'm
> not sure my mail will be formatted perfectly here. I can resend with
> my other mailer if needed.
The problem is that both my and your approach aren't ultimately safe
on this particular IP block. I don't think it's possible make things
completely safe for it. There's no mutual exclusion against PHY
events - be it flaky signal, power surge or actual hotplug - and
driver operation. No matter how careful the driver behaves, if PHY
events happen after the last check before starting DMA engine, DRQ may
be set by the time driver gets to it.
The IP block you're dealing with is inherently buggy. What the spec
means, I think, is the DMA engine might not start or behave properly
if enabled while DRQ is set, which is fine. Driver will notice that,
reset stuff and retry. It is *completely* different from "the
controller becomes brick until power cycled if that happens". So, we
can work around all we want but that is one buggy controller. If
possible, please tell the manufacturer or licensor to fix it.
For now, let's first try removing ahci_start_engine() call from
port_start and see how that goes.
Thanks.
--
tejun
next prev parent reply other threads:[~2011-07-22 9:03 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-08 23:01 Brian Norris
2011-07-13 13:14 ` Tejun Heo
2011-07-18 18:40 ` Brian Norris
2011-07-21 8:49 ` Tejun Heo
2011-07-21 17:13 ` Brian Norris
2011-07-22 9:03 ` Tejun Heo [this message]
2011-07-22 9:41 ` [PATCH #upstream] ahci: start engine only during soft/hard resets Tejun Heo
2011-07-22 20:41 ` Brian Norris
2011-07-23 22:12 ` Jeff Garzik
2011-08-03 0:06 ` ahci_start_engine compliance with AHCI spec Brian Norris
2011-08-04 9:44 ` 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=20110722090317.GH2622@htj.dyndns.org \
--to=tj@kernel.org \
--cc=Valdis.Kletnieks@vt.edu \
--cc=cernekee@gmail.com \
--cc=computersforpeace@gmail.com \
--cc=jgarzik@pobox.com \
--cc=jipeng2005@gmail.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lkml20100708@newton.leun.net \
--cc=rjw@sisk.pl \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®