Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1031086Ab1EXBE1 (ORCPT ); Mon, 23 May 2011 21:04:27 -0400 Received: from mail-vx0-f174.google.com ([209.85.220.174]:45459 "EHLO mail-vx0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1030717Ab1EXBEY convert rfc822-to-8bit (ORCPT ); Mon, 23 May 2011 21:04:24 -0400 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=a71RHm+xWRpWgHagOJEIQ7ipv6YNjUq+qV3GKA0h20U+hMTq9gbqORJeTkc8XYXWsu 8E0/XH9DvXoTk5uSBEhA9yVr1Dbc7VKdOTgpMJ+0ahAvEtRBQJxmEW28WnYtfX/UfW/d VDmOzSQWivIkwi4yX9Be7sntIlCrcgb5b4SYY= MIME-Version: 1.0 In-Reply-To: <20110523121310.GA24439@htj.dyndns.org> References: <201105120025.34531.rjw@sisk.pl> <20633.1305565337@localhost> <201105182144.37713.rjw@sisk.pl> <10124.1305906020@localhost> <20110520154341.GL31426@htj.dyndns.org> <20110523121310.GA24439@htj.dyndns.org> Date: Mon, 23 May 2011 18:04:23 -0700 Message-ID: Subject: Re: [PATCH v2.6.38-rc7] Revert "libata: ahci_start_engine compliant to AHCI spec" From: Jian Peng To: Tejun Heo Cc: Valdis.Kletnieks@vt.edu, "Rafael J. Wysocki" , Jeff Garzik , Michael Leun , linux-ide@vger.kernel.org, Linux PM mailing list , LKML Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2618 Lines: 86 Hi, Tejun, Defintely. I will clarify it as much as possible and meanwhile, wait for it to be tested by reporters. Thanks, Jian On Mon, May 23, 2011 at 5:13 AM, Tejun Heo wrote: > Hello, > > On Fri, May 20, 2011 at 10:02:56AM -0700, Jian Peng wrote: >> 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. > > Yeah, sounds like a plan but please add ample comment explaining > what's going on for which controller including link to the mailing > list threads. ?As we're basically adding a black magic, I would still > like to enable it only for the affected controllers so that we don't > have to worry whether there are controllers which are affected by this > problem but we don't know about. > >> --- 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; > > I think > > ?bool stat_failed = false; > > would be more in line with recent coding style. > >> ? 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); > > ?ata_port_printk()? > > Thanks. > > -- > tejun > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/