Re: Continuing saga: FreeBSD -CURRENT hangs with ATA code after April

From: Alexander Motin <mav_at_FreeBSD.org>
Date: Tue, 03 Mar 2009 01:15:48 +0200
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_at_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

--- ata-promise.c.prev	2009-03-02 00:30:41.000000000 +0200
+++ ata-promise.c	2009-03-03 01:12:18.000000000 +0200
_at__at_ -690,8 +690,11 _at__at_ 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) {
Received on Mon Mar 02 2009 - 22:15:51 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:43 UTC