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>