[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