[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4E2B4757.7040204@pobox.com>
Date: Sat, 23 Jul 2011 18:12:39 -0400
From: Jeff Garzik <jgarzik@...ox.com>
To: Tejun Heo <tj@...nel.org>
CC: Brian Norris <computersforpeace@...il.com>,
linux-ide@...r.kernel.org, Valdis.Kletnieks@...edu,
"Rafael J. Wysocki" <rjw@...k.pl>,
Michael Leun <lkml20100708@...ton.leun.net>,
linux-kernel@...r.kernel.org, Jian Peng <jipeng2005@...il.com>,
Kevin Cernekee <cernekee@...il.com>
Subject: Re: [PATCH #upstream] ahci: start engine only during soft/hard resets
On 07/22/2011 05:41 AM, Tejun Heo wrote:
> This is another attempt at fixing the same problem that 270dac35c2
> (libata: ahci_start_engine compliant to AHCI spec) tried to solve.
> Unfortunately, 270dac35c2 created regressions for a lot more common
> controllers and got reverted.
>
> This specific AHCI IP block becomes a brick if the DMA engine is
> started while DRQ is set. It is not possible to avoid the condition
> completely but the most common occurrence is caused by spurious use of
> ahci_start_engine() from ahci_start_port() during init sequence.
>
> DMA engine is started after both soft and hard resets and
> ahci_start_port() is always followed by resets, so there is no reason
> to start DMA engine from ahci_start_port().
>
> This patch removes ahci_start_engine() invocation from
> ahci_start_port(). This change makes failure path of
> ahci_port_suspend() leave engine stopped without following resets.
> This is resolved by replacing ahci_start_port() call with
> ata_port_freeze() which forces resets afterwards, which is the better
> behavior anyway.
>
> Signed-off-by: Tejun Heo<tj@...nel.org>
> Reported-by: Brian Norris<computersforpeace@...il.com>
> Reported-by: Jian Peng<jipeng2005@...il.com>
> ---
> Jeff, this needs to be tested for a while in linux-next before sending
> it mainline. Please apply it for 3.1 merge window and let's see
> whether anything explodes.
Stuffed this into branch #upstream-next, which appears periodically for
situations like this. #upstream-next will become #upstream after the
merge window closes.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists