[Comm] Слетел DMA. Почему ? И как восстановить ?

Olexander Chernetskyy =?iso-8859-1?q?sp=5Farcher_=CE=C1_meta=2Eua?=
Пт Окт 19 15:19:27 MSD 2007


Имею проблему. Слетел DMA.
Этому предшествовала замена батарейки на матери.
Рассказываю подробно:
Заменил батарейку на матери. Естественно, сразу в БИОСе восстановил всё
как было. Собственно восстанавливать то было нечего, поскольку все стояло
в AUTO, за исключением On-Chip Serial ATA. Он был в режиме Enhanced.
Набор девайсов такой. На IDE шлейфе висят: мастером - DVD-RW (BENQ 1640),
слейвом - SeaGate Barracuda (60GB). (Правило - "один шлейф - одно
устройство" я знаю. Ну нету у меня второго IDE-контроллера на матери,
нету). Основной хард (с Линуксом) - SerialATA SeaGate Barracuda (250GB).

При Enhanced Mode On-Chip Serial ATA считается, что
IDE Channel 0 Master = BENQ (/dev/hda)
IDE Channel 0 Slave = Barracuda-60 (/dev/hdb)
IDE Channel 1 Master = none
IDE Channel 1 Slave = none
IDE Channel 2 Master = Barracuda-250 (/dev/sda)
IDE Channel 2 Slave = none

Работало это всё успешно с незапямятных времен, т.е. с момента последнего
апгрейда железа (еще при ALT3). ALT4 ставил на эту конфигурацию с нуля. И
до вчерашнего дня всё работало.

Так вот. Поменял батарейку, воостановил параметры БИОС. Загружаюся - L 99
99 99...
Пересмотрел ещё раз БИОС - L 99 99 99...
Ладно. Беру букварь с алгоритмом востановления LILO. LILO мне и говорит
"Так /dev/sda не первый девайс" - и  L 99 99 99...

Ладно. Меняю режим On-Chip Serial ATA на AUTO.
При этом расклад становится:
IDE Channel 0 Master = Barracuda-250 (/dev/sda)
IDE Channel 0 Slave = none
IDE Channel 1 Master = BENQ (/dev/hdc)
IDE Channel 1 Slave = Barracuda-60 (/dev/hdd)
IDE Channel 2 Master = none
IDE Channel 2 Slave = none

L 99 99 99... ->  востановление LILO -> нормальная загрузка.

Радуюсь. Радуюсь недолго, до записи DVD. k3b мне и говорит "Так у тебя DMA
отключен. Включи, а то диск 3 часа записывать буду". Смотрю, и
действительно:

[root на archer ~]# hdparm /dev/cdrom
/dev/cdrom:
 IO_support   =  0 (default 16-bit)
 unmaskirq    =  0 (off)
 using_dma    =  0 (off)
 keepsettings =  0 (off)
 readonly     =  0 (off)
 readahead    = 256 (on)
 HDIO_GETGEO failed: Inappropriate ioctl for device

[root на archer ~]# hdparm /dev/hdd
/dev/hdd:
 multcount    = 16 (on)
 IO_support   =  0 (default 16-bit)
 unmaskirq    =  0 (off)
 using_dma    =  0 (off)
 keepsettings =  0 (off)
 readonly     =  0 (off)
 readahead    = 256 (on)
 geometry     = 65535/16/63, sectors = 117231408, start = 0

Пытаюсь включить:

[root на archer ~]# hdparm -d1 /dev/cdrom
/dev/cdrom:
 setting using_dma to 1 (on)
 HDIO_SET_DMA failed: Operation not permitted
 using_dma    =  0 (off)

[root на archer ~]# hdparm -d1 /dev/hdd
/dev/hdd:
 setting using_dma to 1 (on)
 HDIO_SET_DMA failed: Operation not permitted
 using_dma    =  0 (off)

Долго копаюсь в БИОСЕ. Результат=0.

Загружаю ALT4 LiveCD и наблюдаю: using_dma    =  1 (on) на обоих IDE
устройствах.
Контрольный выстрел:
[root на localhost ~]# hdparm -t /dev/hdd
/dev/hdd:
 Timing buffered disk reads:   60 MB in  3.03 seconds =  19.81 MB/sec

(На установленой версии 2.5 MB/sec)

Вот теперь и ответьте, что я делаю не так?
И почему это "Operation not permitted"? И как её разрешить?
А то страсть как не хочется Линукс переустанавливать с нуля...

-- 
Best regards,
ArCher





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