Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 25 Dec 2009 22:02:28 -0500
From:      Nathan Lay <nslay@comcast.net>
To:        Alexander Motin <mav@FreeBSD.org>
Cc:        freebsd-current@freebsd.org, freebsd-stable@freebsd.org
Subject:   Re: 8-STABLE ahci fails to attach, does not fallback on ataahci
Message-ID:  <4B357CC4.9020909@comcast.net>
In-Reply-To: <4B346BE0.2010909@FreeBSD.org>
References:  <1261707782.00199010.1261696205@10.7.7.3> <4B346BE0.2010909@FreeBSD.org>

index | next in thread | previous in thread | raw e-mail

Alexander Motin wrote:
> Nathan Lay wrote:
>   
>> I gave ATA_CAM a try last night and believe I have a similar setup
>> (crippled hardware) in my laptop as Doug Barton's, although my
>> controller is ICH6M.  Nonetheless, ahci detects my controller and tries
>> to attach and fails (returns 6).  No ada nodes are created and the boot
>> process halts trying to find a root mount.  Verbose booting reveals
>> nothing special.  Anything else I can do to try to reveal the problem?
>>
>> I tried modular ATA with the following:
>>
>> device atacore
>> device atapci
>> device ataahci
>> device ataintel
>>
>> device ahci
>>
>> From reading the lists more thoroughly, I now have the impression that
>> either ahci or ataahci are necessary and not both. 
>>     
>
> They duplicate each other, but should not conflict.
>
>   
>> If I remove 'device
>> ahci' then 8-STABLE boots normally.  However, I would think that if ahci
>> failed to attach then the kernel should fallback on ataahci.  If GENERIC
>> included both ahci and ataahci, then I would never be able to boot
>> FreeBSD let alone install it.
>>     
>
> There is no fallback mechanism on attach failure in newbus. ataahci will
> only be used is ahci fail probe, not an attach.
>
>   
>> `uname -a`
>> FreeBSD LIGHTBULB.LOCAL 8.0-STABLE FreeBSD 8.0-STABLE #4: Thu Dec 24
>> 02:40:23 EST 2009
>> nslay@LIGHTBULB.LOCAL:/usr/obj/usr/src/sys/LIGHTBULB  i386
>>
>> Here's what appears in my dmesg:
>> atapci0: <Intel ICH6M SATA150 controller> port
>> 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0x18c0-0x18cf at device 31.2 on pci0
>>
>> and the result of `pciconf -lv`
>> atapci0@pci0:0:31:2:    class=0x010180 card=0x056a1014 chip=0x26538086
>> rev=0x03 hdr=0x00
>>    vendor     = 'Intel Corporation'
>>    device     = '82801FBM (ICH6M) SATA Controller'
>>    class      = mass storage
>>    subclass   = ATA
>>     
>
> There is the answer. ICH6 chipsets are using chip ID convention
> different from other ICHs. Same ID used for AHCI and legacy modes. It
> was false positive probe. This chip now runs in legacy mode.
>
> This patch should fix the issue:
>
> --- ahci.c.prev 2009-12-08 13:27:31.000000000 +0200
> +++ ahci.c      2009-12-25 09:28:32.000000000 +0200
> @@ -115,8 +115,8 @@ static struct {
>         {0x43931002, "ATI IXP700",      0},
>         {0x43941002, "ATI IXP800",      0},
>         {0x43951002, "ATI IXP800",      0},
> -       {0x26528086, "Intel ICH6",      0},
> -       {0x26538086, "Intel ICH6M",     0},
> +       {0x26528086, "Intel ICH6",      AHCI_Q_NOFORCE},
> +       {0x26538086, "Intel ICH6M",     AHCI_Q_NOFORCE},
>         {0x26818086, "Intel ESB2",      0},
>         {0x26828086, "Intel ESB2",      0},
>         {0x26838086, "Intel ESB2",      0},
>
>   
Hi Alexander,
I also noticed in dmesg that ataahci never actually attaches (There's no 
AHCI messages).  I examined ahci.c and ata-ahci.c and noticed that 
ata-ahci.c lacks the quirk table and code in ata_ahci_probe that would 
normally match this chip in ahci_probe.  I think that it's subclass 
isn't PCIS_STORAGE_SATA.  I tried to hardcode it to see if it would work 
but I never successfully persuaded ataahci to attach.  I'm not familiar 
with kernel debugging or development and grew weary of constantly 
recompiling the kernel to try things.

Best Regards,
Nathan Lay


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4B357CC4.9020909>