Bug #784

SATA no-go on ATI SB600 (K9AGM-FID)

Added by floid over 7 years ago. Updated about 7 years ago.

Status:ClosedStart date:
Priority:NormalDue date:
Assignee:TGEN% Done:

0%

Category:-
Target version:-

Description

I mentioned this on IRC a few days ago, and got as far as confirming it remains
a problem with 1.10 (well, "1.11") as well as 1.8.

I now have a few SATA devices at my disposal, including the aforementioned PATA
bridges and a native SATA Lite-On DVD burner. All SATA devices are detected
properly by the BIOS, none by the kernel.

When I had a bridge installed on the HD, the system could boot up until it tried
to mount root without a root device.

Out of BIOS options of "Native IDE," "Legacy IDE," AHCI and RAID, I've tried the
first three and believe I've left it on Native IDE for now.

IIRC, the "Legacy IDE" option would tend to both freeze the system during or
immediately after the BIOS's device detection and thus prevent entry into the
setup utility until the SATA device(s) were disconnected. I think it might have
a specific dislike for the DVD drive -- 'it' again being this lovely MSI
K9AGM-FID, which MSI doesn't even host BIOSes for on their US site.

DragonFly mustelid 1.11.0-DEVELOPMENT DragonFly 1.11.0-DEVELOPMENT #0: Sat Aug
18 01:42:44 EDT 2007 floid@mustelid:/usr/obj/usr/src/sys/MUSTELID2007 i386

dmesg snippet, the optical should appear on the fourth SATA port (ata3 'slave'):

atapci0: <ATI SB600 SATA300 controller> port
0xd800-0xd80f,0xdc00-0xdc03,0xe000-0xe007,0xe400-0xe403,0xe800-0xe807 mem
0xff6ffc00-0xff6fffff irq 2 at device 18.0 on pci0
ata2: <ATA channel 0> on atapci0
ata3: <ATA channel 1> on atapci0
atapci1: <ATI SB600 UDMA133 controller> port
0xff00-0xff0f,0x376,0x170-0x177,0x3f6,0x1f0-0x1f7 irq 3 at device 20.1 on pci0
ata0: <ATA channel 0> on atapci1
ad0: 152627MB <WDC WD1600JB-98GVA0 08.02D08> at ata0-master UDMA100
ata1: <ATA channel 1> on atapci1

Suggestions for collecting useful debugging info always appreciated. I don't
think a verbose boot had anything to say other than the normal response for no
devices detected.

unhappy_df.dmesg (7.08 KB) floid, 09/05/2007 08:58 AM

happy_freesbie.dmesg (6.71 KB) floid, 09/08/2007 06:13 AM

History

#1 Updated by floid over 7 years ago

I should also mention that the DVD is confirmed to work - CDs boot, though I
don't have anything on CD recent enough to be expected to work with the
controller. Ubuntu 5.04 complained, for instance.

(Probably did have it left on AHCI for the CD tests, which wouldn't help.)

#2 Updated by floid over 7 years ago

I see everyone's busy with much more important stuff, but can I request a smack
with a clue-stick in passing re: what might be useful here?

I'll try to check against FreeBSD's NATA by the weekend -- and with DF on a
different manufacturer's board with a SB600, for that matter -- but I'm
otherwise stumped since the system's convinced nothing's there.

#3 Updated by floid about 7 years ago

Uploading "happy_freesbie.dmesg" to issue 784 in the bugtracker, showing FreeBSD
6.2/FreeSBIE 2.0.1's ATA (NATA, I assume?) code picking up the SATA DVD device
with the "Native IDE" option enabled in the BIOS.

FreeBSD wasn't happy with the "AHCI" option either; I've been too distracted to
find out where FreeBSD is re: AHCI support in general.

I'll toss up a DragonFly dmesg with the "Native IDE" option on as well.

This experiment turned up an unrelated glitch in DragonFly where mounting the
(FAT-formatted) USB stick worked, ls worked, but copying off it has hung (the
device and shell, not the system) with:
[diagnostic] cache lock: blocked on 0xded18468 "happy_freesbie.dmesg"

Whatever's behind that might be fixed already.

It also turns up FreeBSD 6.2 misdetecting the UDMA100 HD (on the PATA
controller) as UDMA33.

-Joe "Floid" Kanowitz
http://bugs.dragonflybsd.org/issue784

#4 Updated by dillon about 7 years ago

:This experiment turned up an unrelated glitch in DragonFly where mounting t=
:he
:(FAT-formatted) USB stick worked, ls worked, but copying off it has hung (t=
:he
:device and shell, not the system) with:
:[diagnostic] cache lock: blocked on 0xded18468 "happy_freesbie.dmesg"
:
:Whatever's behind that might be fixed already.

There have been fixes to the FAT filesystem support made since the
build date on the unhappy dmesg you posted, so there's a fairly
good chance that this particular issue has been fixed.

The ATA detection code is a different story. I will note that FreeBSD
is detecting the DVD drive on ata3-slave, with no master present on
ata3, and that could be part of the problem. The drivers are nearly
identical so I am somewhat at a loss as to why DragonFly doesn't detect
the DVD.

-Matt

#5 Updated by floid about 7 years ago

Haven't had a chance to test a newer kernel, but I believe it re: FAT. On topic:

> The ATA detection code is a different story. I will note that FreeBSD
> is detecting the DVD drive on ata3-slave, with no master present on
> ata3, and that could be part of the problem. The drivers are nearly
> identical so I am somewhat at a loss as to why DragonFly doesn't detect
> the DVD.

Now that I've found the one "working" BIOS-set controller mode to stick with, I
can confirm it's not going to be that easy. The bridged HD was equally
undetected on the first port when this was first noticed (so it's been back on
the PATA controller since), and moving the optical over one to what would be
'ata3-master' didn't help. So that's two devices the BIOS saw but the kernel
didn't.

This isn't killing me by any stretch -- I barely need the optical, the UDMA100
drive isn't going to get any faster if I bridge it to SATA -- but it's certainly
a quirk.

I still need to test a livecd on the other SB600-blessed machine here for the
extra data point.

#6 Updated by floid about 7 years ago

Hmm, didn't notice that the FreeBSD dmesg is *tripled* up until now. Please
assume the first two thirds to be junk and the last to be the good one -- I
guess repeated "dmesg > /mnt/file" was writing something (incomplete) with
FreeSBIE despite it giving me read-only errors (/ being RO, I guess) until I
remounted the USB stick somewhere under /var (a writeable memory disk).

I'll clean that up and reupload; in the meantime, do the differences in port
addresses mean anything here, or can those be volatile due to PnP? I've broken
the lines up for easier visual diff.

FreeBSD:

atapci0: <GENERIC ATA controller>
port 0xe800-0xe807,0xe400-0xe403,0xe000-0xe007,0xdc00-0xdc03,0xd800-0xd80f
mem 0xff6ffc00-0xff6fffff irq 22 at device 18.0 on pci0

DragonFly:

atapci0: <ATI SB600 SATA300 controller>
port 0xd800-0xd80f,0xdc00-0xdc03,0xe000-0xe007,0xe400-0xe403,0xe800-0xe807
mem 0xff6ffc00-0xff6fffff irq 2 at device 18.0 on pci0

#7 Updated by TGEN about 7 years ago

See, FreeBSD doesn't have the PCI ids for the SB600, and thus only
accesses it as a generic ATA controller, using BIOSDMA etc. I added
those PCI ids, and apparently, the SB600 doesn't work like the SB450 etc
did. Hmm.

Cheers,
--
Thomas E. Spanjaard

#8 Updated by TGEN about 7 years ago

Fix committed for the SB600 part, works in AHCI mode now.

Also available in: Atom PDF