Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 03 Mar 2009 01:15:48 +0200
From:      Alexander Motin <mav@FreeBSD.org>
To:        Joe Marcus Clarke <marcus@FreeBSD.org>
Cc:        FreeBSD-Current <freebsd-current@FreeBSD.org>
Subject:   Re: Continuing saga: FreeBSD -CURRENT hangs with ATA code after April
Message-ID:  <49AC68A4.6060201@FreeBSD.org>
In-Reply-To: <1236034349.37252.147.camel@shumai.marcuscom.com>
References:  <gohee3$2lla$1@FreeBSD.cs.nctu.edu.tw>	 <49AC4DB3.9020007@FreeBSD.org>	 <1236029236.37252.113.camel@shumai.marcuscom.com>	 <49AC5E39.7090305@FreeBSD.org> <1236034349.37252.147.camel@shumai.marcuscom.com>

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

Joe Marcus Clarke wrote:
> On Tue, 2009-03-03 at 00:31 +0200, Alexander Motin wrote:
>> Joe Marcus Clarke wrote:
>>> On Mon, 2009-03-02 at 23:20 +0200, Alexander Motin wrote:
>>>> Joe Marcus Clarke wrote:
>>>>> I started this thread on May 31 of last year:
>>>>>
>>>>> http://lists.freebsd.org/pipermail/freebsd-current/2008-May/085923.html
>>>>>
>>>>> The problem remains as of:
>>>>>
>>>>> FreeBSD fugu.marcuscom.com 8.0-CURRENT FreeBSD 8.0-CURRENT #12: Sun Mar
>>>>> 1 16:10:52 EST 2009
>>>>> gnome@fugu.marcuscom.com:/space/obj/usr/src/sys/FUGU  i386
>>>>>
>>>>> The only way I can boot this system is to hack in the ATA code from
>>>>> April 9, 2008.  I would love just to be able to boot this guy on a
>>>>> default -CURRENT.
>>>> 1) If I understand right, you had working system on April 9, 2008 and 
>>>> not working on May 31, 2008 and now. Have you tried to narrow down that 
>>>> interval between working and not working system to find exact point of 
>>>> breakage? I see no documented changes in Promise support there in CVS 
>>>> log, but for example, on Apr 10 2008 I see some related changes 
>>>> unmentioned in commit message.
>>> The April 9 date is the documented date of last working.  It was the
>>> commit on April 10 13:05:05 that broken things:
>>>
>>> "Add experimental support for SATA Port Multipliers
>>>
>>> Support is working on the Silicon Image SiI3124/3132.
>>> Support is working on some AHCI chips but far from all.
>>>
>>> Remember this is WIP, so test reports and (constructive) suggestions are welcome!"
>> You can try to comment out
>> 	/* set portmultiplier port */
>> 	ATA_OUTB(ctlr->r_res2, 0x4e8 + (ch->unit << 8), port & 0x0f);
>> inside ata_promise_mio_command(). Don't know if there is some problem 
>> with it, but it was added at that time and looks like it is at least not 
>> applicable for this type of controller.
> 
> That did it!  Thanks!  I can now easily post the full verbose dmesg on
> HEAD code if you'd like.

Apply this patch first. It should be good as far as I can tell without 
having that chips datasheets.

-- 
Alexander Motin

--------------070008030706000109060005
Content-Type: text/plain;
 name="ata-promise.c.nopm.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="ata-promise.c.nopm.patch"

--- ata-promise.c.prev	2009-03-02 00:30:41.000000000 +0200
+++ ata-promise.c	2009-03-03 01:12:18.000000000 +0200
@@ -690,8 +690,11 @@ ata_promise_mio_command(struct ata_reque
 
     ATA_OUTL(ctlr->r_res2, (ch->unit + 1) << 2, 0x00000001);
 
-    /* set portmultiplier port */
-    ATA_OUTB(ctlr->r_res2, 0x4e8 + (ch->unit << 8), atadev->unit & 0x0f);
+    if ((ctlr->chip->cfg2 == PR_SATA2) ||
+        ((ctlr->chip->cfg2 == PR_CMBO2) && (ch->unit < 2))) {
+	/* set portmultiplier port */
+	ATA_OUTB(ctlr->r_res2, 0x4e8 + (ch->unit << 8), atadev->unit & 0x0f);
+    }
 
     /* XXX SOS add ATAPI commands support later */
     switch (request->u.ata.command) {

--------------070008030706000109060005--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?49AC68A4.6060201>