[Comm] Режим винчестера UDMA2. Непонятно почему.

Sergey Vlasov vsu на altlinux.ru
Ср Авг 19 22:26:27 MSD 2009


On Wed, Aug 19, 2009 at 05:33:22PM +0300, Olexander Chernetskyy wrote:
> > On Sun, Aug 16, 2009 at 05:47:23PM +0300, Olexander Chernetskyy wrote:
[...]
> >> # grep -i cable /var/log/dmesg
> >> [ 2.487614] ata2.01: limited to UDMA/33 due to 40-wire cable
[...]
> Мать = EliteGroup PF4 Extrime Edition, чипсет i915.
> К этому кабелю не подключено больше ничего.
> Из дисковых устройств еще имеются SATA HDD Seagate Baracuda 250GB
> (/dev/sda) и SATA DVD-RW Sony-NEC-Optiarc. (/dev/sr0 кажись)
> 
> >Если там один этот диск как slave, это неправильно.
> Да, так и есть (т.е. было)- устройство одно на шлейфе и slave. Раньше там
> был мастер, который я отключил за ненедобностью.
> Поставил джампер в положение "Master or single drive" - ничего не
> изменилось. Ну кроме того, что имя стало /dev/hda.

Значит, поменялось что-то ещё - первое сообщение было явно от libata
(драйвер ata_piix), а теперь стал использоваться драйвер IDE.  Либо
пересобирался initrd, либо не все опции BIOS были возвращены в
первоначальное значение.

С другой стороны, одинаковое поведение разных драйверов (а также
существенно более свежего ядра из openSUSE 11.2 M5) даёт ещё больше
оснований считать, что проблема связана именно с этим железом, а не с
ошибками в драйверах.

Кроме того, при использовании драйверов IDE (если проблемный диск -
/dev/hda), module-init-tools >= 3.4 и ядра 2.6.25 можно попробовать
загрузку с добавлением параметра:

  ide.options=ide0=ata66

(будет ругань "OBSOLETE OPTION", но другого варианта в той версии ядра
на самом деле нет).  Для ядра 2.6.27 (и более свежих версий) нужен уже
другой параметр:

  ide.ignore_cable=0

В случае использования драйверов libata параметр следующий:

  libata.force=2:80c

("2" соответствует номеру в сообщении вида "ata2.01: limited to
UDMA/33 due to 40-wire cable").

> > Ещё покажите полностью вывод hdparm -I для этого диска.
> # hdparm  -I /dev/hda
> /dev/hda:
> ATA device, with non-removable media
>         Model Number:       ST360021A
>         Serial Number:      3HR0Y8SV
>         Firmware Revision:  3.19
> Standards:
>         Supported: 5 4 3
>         Likely used: 6
> Configuration:
>         Logical         max     current
>         cylinders       16383   16383
>         heads           16      16
>         sectors/track   63      63
>         --
>         CHS current addressable sectors:   16514064
>         LBA    user addressable sectors:  117231408
>         device size with M = 1024*1024:       57241 MBytes
>         device size with M = 1000*1000:       60022 MBytes (60 GB)
> Capabilities:
>         LBA, IORDY(can be disabled)
>         bytes avail on r/w long: 4
>         Standby timer values: spec'd by Standard
>         R/W multiple sector transfer: Max = 16  Current = 16
>         Recommended acoustic management value: 128, current value: 254
>         DMA: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma3 udma4 udma5
>              Cycle time: min=120ns recommended=120ns
>         PIO: pio0 pio1 pio2 pio3 pio4
>              Cycle time: no flow control=240ns  IORDY flow control=120ns
> Commands/features:
>         Enabled Supported:
>            *    SMART feature set
>                 Security Mode feature set
>            *    Power Management feature set
>            *    Write cache
>            *    Look-ahead
>            *    Host Protected Area feature set
>            *    WRITE_BUFFER command
>            *    READ_BUFFER command
>            *    DOWNLOAD_MICROCODE
>                 SET_MAX security extension
>            *    Automatic Acoustic Management feature set
>                 Device Configuration Overlay feature set
> Security:
>         Master password revision code = 65534
>                 supported
>         not     enabled
>         not     locked
>         not     frozen
>         not     expired: security count
>         not     supported: enhanced erase
> HW reset results:
>         CBLID- above Vih

С точки зрения устройства тут всё правильно - распознаётся 80-жильный
кабель.

Тогда возможны следующие варианты:

 1) Плохой кабель (сигнал CBLID- в разъёме, подключенном к материнской
    плате, не заземлён, как это должно быть для правильного
    распознавания типа кабеля).  Либо перепутаны разъёмы кабеля (хотя
    тогда в выводе hdparm -I состояние CBLID- должно было быть
    другим).

 2) Не работает цепь распознавания типа кабеля на материнке (а BIOS не
    выполняет распознавание) - либо что-то погорело, либо вообще не
    реализовано с целью копеечной экономии.

 3) BIOS портит регистр IOCFG контроллера (например, что-то типа
    описанного в http://bugzilla.kernel.org/show_bug.cgi?id=11879 -
    хотя в проверявшемся ядре из openSUSE 11.2 M5 именно эта ошибка
    должна быть исправлена, возможно, что-то подобное возникает в
    других ситуациях)

>         Device num = 1
> Checksum: correct
> [root на archer ~]#
> ---8<---
> 
> Решил поиграться с параметрами БИОС. Увлекательнейшее занятие, должен я
> вам сказать. А уж какие непредсказуемые результаты получаются... Ну просто
> "вместо хвоста нога, а на ноге рога" :-)
> 
> Смотрю есть параметр "On-Chip Serial ATA"=Enhanced. А ну-ка поставлю =AUTO.
> На кабель не жалуется. Все диски с точки зрения системы стали /dev/hdX.
> hdparm -i говорит: UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
> Вроде-бы всё нормально. НО!
> # hdparm  -t /dev/hdc
> /dev/hdc:
>  Timing buffered disk reads:    8 MB in  3.45 seconds =   2.32 MB/sec
> Во как!

Очевидно, режим контроллера поменялся на эмуляцию IDE, а модуля piix в
initrd не оказалось, в результате был загружен драйвер ide-generic без
поддержки DMA.

> От следующего открытия я вообще офонарел. Перестали монтироваться флешки с
> файловой системой NTFS. Говорит "только рут может это сделать". Вернул
> "On-Chip Serial ATA"=Enhanced флешки снова начали монтироваться. Чудеса да
> и только!

Действительно странное явление...
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: Digital signature
Url     : <http://lists.altlinux.org/pipermail/community/attachments/20090819/746d2377/attachment-0001.bin>


Подробная информация о списке рассылки community