Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Sep 2007 13:39:56 +0400
From:      "Andrey V. Elsukov" <bu7cher@yandex.ru>
To:        Dave Grochowski <malus.x@gmail.com>
Cc:        freebsd-bugs@FreeBSD.org
Subject:   Re: kern/111699: [sata] SATA drives on an Asus A8V-MX are no longer detected on 7.0-CURRENT (regression)
Message-ID:  <46E6626C.4090908@yandex.ru>
In-Reply-To: <46E5E69E.80708@gmail.com>
References:  <200709100410.l8A4AAWt090232@freefall.freebsd.org> <46E4D768.7080303@yandex.ru> <46E5E69E.80708@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------040000040506080405090502
Content-Type: text/plain; charset=KOI8-R; format=flowed
Content-Transfer-Encoding: 7bit

Dave Grochowski wrote:
>> Can you show verbose dmesg from RELENG_6 (without this patch)?
>>
> I've attached a verbose dmesg from a Freesbie CD.

Hi, Dave.

If you have some time, can you test this patch on CURRENT (without
your patch). I guess it may help.

-- 
WBR, Andrey V. Elsukov

--------------040000040506080405090502
Content-Type: text/plain;
 name="ata-chipset.c.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="ata-chipset.c.diff"

--- src/sys/dev/ata/ata-chipset.c.orig	2007-09-11 13:11:19.475037453 +0400
+++ src/sys/dev/ata/ata-chipset.c	2007-09-11 13:28:47.876389301 +0400
@@ -721,7 +721,15 @@ ata_ahci_reset(device_t dev)
 
     /* enable interface */
     if (ata_sata_phy_reset(dev)) {
-	switch (ATA_INL(ctlr->r_res2, ATA_AHCI_P_SIG + offset)) {
+	for (timeout = 0; timeout < 300; timeout++) {
+	    if (!(ATA_INL(ctlr->r_res2, ATA_AHCI_P_TFD + offset) & ATA_S_BUSY))
+		    break;
+	    DELAY(10000);
+	}
+	cmd = ATA_INL(ctlr->r_res2, ATA_AHCI_P_SIG + offset);
+	if (bootverbose)
+	    device_printf(ch->dev, "Port Signature: %08x\n", cmd);
+	switch (cmd) {
 	case 0xeb140101:
 	    ch->devices = ATA_ATAPI_MASTER;
 	    device_printf(ch->dev, "SATA ATAPI devices not supported yet\n");
@@ -732,6 +740,7 @@ ata_ahci_reset(device_t dev)
 	    device_printf(ch->dev, "Portmultipliers not supported yet\n");
 	    ch->devices = 0;
 	    break;
+	case 0xc33c0101:
 	case 0x00000101:
 	    ch->devices = ATA_ATA_MASTER;
 	    break;

--------------040000040506080405090502--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?46E6626C.4090908>