Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 06 Jun 2011 17:28:55 +0000
From:      "Dieter BSD" <dieterbsd@engineer.com>
To:        mav@freebsd.org
Cc:        freebsd-drivers@freebsd.org
Subject:   Re: ahci(4) doesn't work with Hitachi 3TB drive
Message-ID:  <20110606172857.298480@gmx.com>

next in thread | raw e-mail | index | archive | help
> Is the 2TB disk is also SATA3?
I think it is just 300MB/s, so that is a difference. (Which I
managed to not notice until you pointed it out, thanks.)

ada10 at ahcich0 bus 0 scbus4 target 0 lun 0
ada10: <Hitachi HDS722020ALA330 JKAOA28A> ATA-8 SATA 2.x device
ada10: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
ada10: Command Queueing enabled
ada10: 1907729MB (3907029168 512 byte sectors: 16H 63S/T 16383C)

ada11 at ahcich1 bus 0 scbus5 target 0 lun 0
ada11: <Hitachi HDS5C3030ALA630 MEAOA580> ATA-8 SATA 3.x device
ada11: 150.000MB/s transfers (SATA 1.x, UDMA6, PIO 8192bytes)
ada11: Command Queueing enabled
ada11: 2861588MB (5860533168 512 byte sectors: 16H 63S/T 16383C)

I turned on the bootverbose debugging in ahci.c and added a few
of my own.

hint.ahcich.1.sata_rev="1"

dd if=/dev/ada11 bs=1500k count=1 > /dev/null
1+0 records in
1+0 records out
1536000 bytes transferred in 60.285139 secs (25479 bytes/sec)

dmesg | grep -i ahci

<JMicron JMB363 AHCI SATA controller> on atapci3
ahci0: [ITHREAD]
ahci0: AHCI v1.00 with 2 3Gbps ports, Port Multiplier supported
ahci0: Caps: 64bit NCQ ALP AL CLO 3Gbps PM PMD SSC PSC 32cmd 2ports
<AHCI channel> at channel 0 on ahci0
ahci_ch_attach() i=0 sata_rev = 0
ahci_ch_attach() i=1 sata_rev = 0
ahci_ch_attach() i=2 sata_rev = 0
ahci_ch_attach() i=3 sata_rev = 0
ahci_ch_attach() i=4 sata_rev = 0
ahci_ch_attach() i=5 sata_rev = 0
ahci_ch_attach() i=6 sata_rev = 0
ahci_ch_attach() i=7 sata_rev = 0
ahci_ch_attach() i=8 sata_rev = 0
ahci_ch_attach() i=9 sata_rev = 0
ahci_ch_attach() i=10 sata_rev = 0
ahci_ch_attach() i=11 sata_rev = 0
ahci_ch_attach() i=12 sata_rev = 0
ahci_ch_attach() i=13 sata_rev = 0
ahci_ch_attach() i=14 sata_rev = 0
ahci_ch_attach() i=15 sata_rev = 0
ahcich0: [ITHREAD]
ahcich0: Caps: HPCP
<AHCI channel> at channel 1 on ahci0
ahci_ch_attach() i=0 sata_rev = 1
ahci_ch_attach() i=1 sata_rev = 1
ahci_ch_attach() i=2 sata_rev = 1
ahci_ch_attach() i=3 sata_rev = 1
ahci_ch_attach() i=4 sata_rev = 1
ahci_ch_attach() i=5 sata_rev = 1
ahci_ch_attach() i=6 sata_rev = 1
ahci_ch_attach() i=7 sata_rev = 1
ahci_ch_attach() i=8 sata_rev = 1
ahci_ch_attach() i=9 sata_rev = 1
ahci_ch_attach() i=10 sata_rev = 1
ahci_ch_attach() i=11 sata_rev = 1
ahci_ch_attach() i=12 sata_rev = 1
ahci_ch_attach() i=13 sata_rev = 1
ahci_ch_attach() i=14 sata_rev = 1
ahci_ch_attach() i=15 sata_rev = 1
ahcich1: [ITHREAD]
ahcich1: Caps: HPCP
ahcich0: AHCI reset...
ahci_sata_phy_reset() sata_r
ahcich0: SATA connect time=100us status=00000123
ahcich0: AHCI reset: device found
ahcich0: AHCI reset: device ready after 0ms
ahciaction() d->revision = 0
ahciaction() d->revision = 0
ahciaction() d->revision = 0
ahcich1: AHCI reset...
ahciaction() d->revision = 0
ahciaction() d->revision = 0
ahciaction() d->revision=0
ahciaction() d->revision = 0
ahciaction() status = 32 revision=2
ahci_sata_phy_reset() sata_rev = 1ahciaction() status = 32 revision=2
ahciaction() d->revision=0
ahciaction() d->revision = 0
ahciaction() d->revision=0
ahciaction() d->revision = 0
ahciaction() status = 32 revision=2
ahcich1: SATA connect time=200us status=00000113
ahcich1: AHCI reset: device found
ahcich1: AHCI reset: device ready after 0ms
ahciaction() d->revision = 1
ahciaction() d->revision = 1
ahciaction() d->revision = 1
ahciaction() d->revision = 1
ahciaction() d->revision = 1
ahciaction() d->revision=1
ahciaction() d->revision = 1
ahciaction() status = 16 revision=1
ahciaction() status = 16 revision=1
ahciaction() d->revision=1
ahciaction() d->revision = 1
ahciaction() d->revision=1
ahciaction() d->revision = 1
ahciaction() status = 16 revision=1
ada10 at ahcich0 bus 0 scbus4 target 0 lun 0
ahciaction() status = 32 revision=2
ada11 at ahcich1 bus 0 scbus5 target 0 lun 0
ahciaction() status = 16 revision=1
ahciaction() status = 32 revision=2
ahciaction() status = 32 revision=2
ahciaction() status = 32 revision=2
ahciaction() status = 32 revision=2
ahciaction() status = 32 revision=2
ahciaction() status = 32 revision=2
ahciaction() status = 16 revision=1
ahciaction() status = 16 revision=1
ahcich1: Timeout on slot 0
ahcich1: is 00000000 cs 00000000 ss 00000001 rs 00000001 tfd 50 serr 00000000
ahcich1: AHCI reset...
ahci_sata_phy_reset() sata_rev = 1
ahcich1: SATA connect time=200us status=00000113
ahcich1: AHCI reset: device found
ahcich1: AHCI reset: device ready after 100ms
ahciaction() d->revision = 1
ahciaction() d->revision = 1
ahciaction() d->revision=1
ahciaction() d->revision = 1
ahciaction() status = 16 revision=1
ahciaction() status = 16 revision=1
ahciaction() d->revision=1
ahciaction() d->revision = 1
ahciaction() d->revision=1
ahciaction() d->revision = 1
ahciaction() status = 16 revision=1
ahcich1: Timeout on slot 0
ahcich1: is 00000000 cs 00000000 ss 00000001 rs 00000001 tfd 50 serr 00000000
ahcich1: AHCI reset...
ahci_sata_phy_reset() sata_rev = 1
ahcich1: SATA connect time=200us status=00000113
ahcich1: AHCI reset: device found
ahcich1: AHCI reset: device ready after 100ms
ahciaction() d->revision = 1
ahciaction() d->revision = 1
ahciaction() d->revision=1
ahciaction() d->revision = 1
ahciaction() status = 16 revision=1
ahciaction() status = 16 revision=1
ahciaction() d->revision=1
ahciaction() d->revision = 1
ahciaction() d->revision=1
ahciaction() d->revision = 1
ahciaction() status = 16 revision=1


Next, I limited the speed for the 2TB drive on port 0:

hint.ahcich.0.sata_rev="1"
hint.ahcich.1.sata_rev="1"

<JMicron JMB363 AHCI SATA controller> on atapci3
ahci0: [ITHREAD]
ahci0: AHCI v1.00 with 2 3Gbps ports, Port Multiplier supported
ahci0: Caps: 64bit NCQ ALP AL CLO 3Gbps PM PMD SSC PSC 32cmd 2ports
<AHCI channel> at channel 0 on ahci0
ahci_ch_attach() i=0 sata_rev = 1
ahci_ch_attach() i=1 sata_rev = 1
ahci_ch_attach() i=2 sata_rev = 1
ahci_ch_attach() i=3 sata_rev = 1
ahci_ch_attach() i=4 sata_rev = 1
ahci_ch_attach() i=5 sata_rev = 1
ahci_ch_attach() i=6 sata_rev = 1
ahci_ch_attach() i=7 sata_rev = 1
ahci_ch_attach() i=8 sata_rev = 1
ahci_ch_attach() i=9 sata_rev = 1
ahci_ch_attach() i=10 sata_rev = 1
ahci_ch_attach() i=11 sata_rev = 1
ahci_ch_attach() i=12 sata_rev = 1
ahci_ch_attach() i=13 sata_rev = 1
ahci_ch_attach() i=14 sata_rev = 1
ahci_ch_attach() i=15 sata_rev = 1
ahcich0: [ITHREAD]
ahcich0: Caps: HPCP
<AHCI channel> at channel 1 on ahci0
ahci_ch_attach() i=0 sata_rev = 1
ahci_ch_attach() i=1 sata_rev = 1
ahci_ch_attach() i=2 sata_rev = 1
ahci_ch_attach() i=3 sata_rev = 1
ahci_ch_attach() i=4 sata_rev = 1
ahci_ch_attach() i=5 sata_rev = 1
ahci_ch_attach() i=6 sata_rev = 1
ahci_ch_attach() i=7 sata_rev = 1
ahci_ch_attach() i=8 sata_rev = 1
ahci_ch_attach() i=9 sata_rev = 1
ahci_ch_attach() i=10 sata_rev = 1
ahci_ch_attach() i=11 sata_rev = 1
ahci_ch_attach() i=12 sata_rev = 1
ahci_ch_attach() i=13 sata_rev = 1
ahci_ch_attach() i=14 sata_rev = 1
ahci_ch_attach() i=15 sata_rev = 1
ahcich1: [ITHREAD]
ahcich1: Caps: HPCP
ahcich0: AHCI reset...
ahci_sata_phy_reset() sata_rev
ahcich0: SATA connect time=100us status=00000113
ahcich0: AHCI reset: device found
ahcich0: AHCI reset: device ready after 0ms
ahciaction() d->revision = 1
ahciaction() d->revision = 1
ahciaction() d->revision = 1
ahcich1: AHCI reset...
ahciaction() d->revision = 1
ahciaction() d->revision = 1
ahciaction() d->revision=1
ahciaction() d->revision = 1
ahciaction() status = 16 revision=1
ahci_sata_phy_reset() sata_rev = 1ahciaction() status = 16 revision=1
ahciaction() d->revision=1
ahciaction() d->revision = 1
ahciaction() d->revision=1
ahciaction() d->revision = 1
ahciaction() status = 16 revision=1
ahcich1: SATA connect time=200us status=00000113
ahcich1: AHCI reset: device found
ahcich1: AHCI reset: device ready after 0ms
ahciaction() d->revision = 1
ahciaction() d->revision = 1
ahciaction() d->revision = 1
ahciaction() d->revision = 1
ahciaction() d->revision = 1
ahciaction() d->revision=1
ahciaction() d->revision = 1
ahciaction() status = 16 revision=1
ahciaction() status = 16 revision=1
ahciaction() d->revision=1
ahciaction() d->revision = 1
ahciaction() d->revision=1
ahciaction() d->revision = 1
ahciaction() status = 16 revision=1
ada10 at ahcich0 bus 0 scbus4 target 0 lun 0
ahciaction() status = 16 revision=1
ada11 at ahcich1 bus 0 scbus5 target 0 lun 0
ahciaction() status = 16 revision=1
ahcich0: Timeout on slot 0
ahcich0: is 00000000 cs 00000000 ss 00000001 rs 00000001 tfd 50 serr 00000000
ahcich0: AHCI reset...
ahci_sata_phy_reset() sata_rev = 1
ahcich0: SATA connect time=100us status=00000113
ahcich0: AHCI reset: device found
ahcich0: AHCI reset: device ready after 0ms
ahciaction() d->revision = 1
ahciaction() d->revision = 1
ahciaction() d->revision=1
ahciaction() d->revision = 1
ahciaction() status = 16 revision=1
ahciaction() status = 16 revision=1
ahciaction() d->revision=1
ahciaction() d->revision = 1
ahciaction() d->revision=1
ahciaction() d->revision = 1
ahciaction() status = 16 revision=1

Now I get timeouts on the 2TB drive!

Next I turned off loading ahci.  The ata(4) driver also gets
timeouts on the 3TB drive.

ad12: 1907729MB <Hitachi HDS722020ALA330 JKAOA28A> at ata6-master UDMA100 SATA 3Gb/s
ad14: 2861588MB <Hitachi HDS5C3030ALA630 MEAOA580> at ata7-master UDMA100 SATA 1.5Gb/s

ad14: TIMEOUT - READ_DMA retrying (1 retry left) LBA=768
ad14: TIMEOUT - READ_DMA retrying (1 retry left) LBA=1024
ad14: TIMEOUT - READ_DMA retrying (1 retry left) LBA=1536

Summary of clues:

600MB/s Hitachi disk + JMB363 talk at 150MB/s rather than 300, with both ahci(4) and ata(4).

Hitachi disk + JMB363 + not running at disk's fastest speed = timeouts
or maybe it is
Hitachi disk + JMB363 + running at 150MB/s = timeouts

Hitachi disk + SiI3132 + 3726 PM + siis(4) = works as expected



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