From owner-p4-projects@FreeBSD.ORG Sun Jun 14 09:38:55 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3D3791065672; Sun, 14 Jun 2009 09:38:55 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EF612106564A for ; Sun, 14 Jun 2009 09:38:54 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id DDC028FC26 for ; Sun, 14 Jun 2009 09:38:54 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n5E9cs38086889 for ; Sun, 14 Jun 2009 09:38:54 GMT (envelope-from mav@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n5E9csID086887 for perforce@freebsd.org; Sun, 14 Jun 2009 09:38:54 GMT (envelope-from mav@freebsd.org) Date: Sun, 14 Jun 2009 09:38:54 GMT Message-Id: <200906140938.n5E9csID086887@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mav@freebsd.org using -f From: Alexander Motin To: Perforce Change Reviews Cc: Subject: PERFORCE change 164325 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Jun 2009 09:38:56 -0000 http://perforce.freebsd.org/chv.cgi?CH=164325 Change 164325 by mav@mav_mavbook on 2009/06/14 09:38:08 Look on error status while polling for reset. It allows to reduce waiting in some cases. Affected files ... .. //depot/projects/scottl-camlock/src/sys/dev/ahci/ahci.c#27 edit Differences ... ==== //depot/projects/scottl-camlock/src/sys/dev/ahci/ahci.c#27 (text+ko) ==== @@ -1085,10 +1085,20 @@ DELAY(1000); if (!(ATA_INL(ch->r_mem, AHCI_P_CI) & (1 << slot->slot))) break; + if (ATA_INL(ch->r_mem, AHCI_P_TFD) & ATA_S_ERROR) { + device_printf(ch->dev, + "Poll error on slot %d, TFD: %04x\n", + slot->slot, ATA_INL(ch->r_mem, AHCI_P_TFD)); + et = AHCI_ERR_REAL; + break; + } } if (timeout && (count >= timeout)) { -device_printf(ch->dev, "Poll timeout on slot %d\n", slot->slot); + device_printf(ch->dev, + "Poll timeout on slot %d\n", slot->slot); et = CAM_CMD_TIMEOUT; + } + if (et != AHCI_ERR_NONE) { /* Kick controller into sane state */ ahci_stop(ch->dev); ahci_clo(ch->dev);