LINUX.ORG.RU

UDMA для HDD на 865 чипсете


0

0

Не работает DMA режим для IDE винчестера на 865 чипсете. Линукс (на самосборном ядре 2.6.15) грузится с SATA винчестера, на котором DMA работает. Чипсет Intel i865PE, мать MSI Neo2 P-series. Больше ATA/SATA устройств нет.

> lspci -v | grep -i IDE
0000:00:1f.2 IDE interface: Intel Corp. 82801EB (ICH5) SATA Controller (rev 02) (prog-if 8a [Master SecP PriP])

(то есть, контроллер только один)

> hdparm -d /dev/hda
/dev/hda:
using_dma = 0 (off)

> hdparm -d1 /dev/hda
/dev/hda:
setting using_dma to 1 (on)
HDIO_SET_DMA failed: Operation not permitted
using_dma = 0 (off)

(естественно, от рута)

В BIOS для IDE/ATAPI устройств включен "Legacy" режим, "SATA+PATA"

Выдержка из dmesg:
hda: FUJITSU MPF3153AT, ATA DISK drive
ide1: I/O resource 0x170-0x177 not free.
ide1: ports already in use, skipping probe
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: max request size: 128KiB
hda: 30023280 sectors (15371 MB) w/512KiB Cache, CHS=29785/16/63
hda: cache flushes not supported
hda: hda1 hda2 < hda5 >
libata version 1.20 loaded.
ata_piix 0000:00:1f.2: version 1.05
ata_piix 0000:00:1f.2: combined mode detected (p=0, s=1)
ACPI: PCI Interrupt 0000:00:1f.2[A] -> GSI 18 (level, low) -> IRQ 16
ata: 0x1f0 IDE port busy
PCI: Setting latency timer of device 0000:00:1f.2 to 64
ata1: SATA max UDMA/133 cmd 0x170 ctl 0x376 bmdma 0xFC08 irq 15
ata1: dev 0 cfg 49:2f00 82:346b 83:7f01 84:4003 85:3c69 86:3c01 87:4003 88:20ff
ata1: dev 0 ATA-7, max UDMA7, 234493056 sectors: LBA48
ata1: dev 0 configured for UDMA/133
scsi0 : ata_piix
Vendor: ATA Model: SAMSUNG SP1213C Rev: SV10
Type: Direct-Access ANSI SCSI revision: 05
SCSI device sda: 234493056 512-byte hdwr sectors (120060 MB)
SCSI device sda: drive cache: write back
SCSI device sda: 234493056 512-byte hdwr sectors (120060 MB)
SCSI device sda: drive cache: write back
sda: sda1 sda2 sda3
sd 0:0:0:0: Attached scsi disk sda
sd 0:0:0:0: Attached scsi generic sg0 type 0


Опции в ядре:
> cat .config | grep -i ATA
CONFIG_X86_MCE_NONFATAL=y
# CONFIG_ATALK is not set
# CONFIG_ATA_OVER_ETH is not set
# ATA/ATAPI/MFM/RLL support
# CONFIG_BLK_DEV_IDE_SATA is not set
CONFIG_SCSI_SATA=y
# CONFIG_SCSI_SATA_AHCI is not set
# CONFIG_SCSI_SATA_SVW is not set
CONFIG_SCSI_ATA_PIIX=y
# CONFIG_SCSI_SATA_MV is not set
# CONFIG_SCSI_SATA_NV is not set
# CONFIG_SCSI_SATA_QSTOR is not set
# CONFIG_SCSI_SATA_PROMISE is not set
# CONFIG_SCSI_SATA_SX4 is not set
# CONFIG_SCSI_SATA_SIL is not set
# CONFIG_SCSI_SATA_SIL24 is not set
# CONFIG_SCSI_SATA_SIS is not set
# CONFIG_SCSI_SATA_ULI is not set
# CONFIG_SCSI_SATA_VIA is not set
# CONFIG_SCSI_SATA_VITESSE is not set
CONFIG_SCSI_SATA_INTEL_COMBINED=y
# CONFIG_SCSI_EATA is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_SERIAL_ANYDATA is not set

cat .config | grep -i DMA
CONFIG_GENERIC_ISA_DMA=y
CONFIG_ISA_DMA_API=y
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
CONFIG_IDEDMA_PCI_AUTO=y
# CONFIG_IDEDMA_ONLYDISK is not set
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_IVB is not set
CONFIG_IDEDMA_AUTO=y
# CONFIG_SCSI_PDC_ADMA is not set
# CONFIG_SOUND_DMAP is not set

cat .config | grep -i IDE
# CONFIG_PARIDE is not set
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y
# Please see Documentation/ide.txt for help/info on IDE drives
# CONFIG_BLK_DEV_IDE_SATA is not set
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_IDEDISK_MULTI_MODE=y
CONFIG_BLK_DEV_IDECD=y
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDESCSI is not set
# CONFIG_IDE_TASK_IOCTL is not set
# IDE chipset support/bugfixes
CONFIG_IDE_GENERIC=y
# CONFIG_BLK_DEV_IDEPNP is not set
CONFIG_BLK_DEV_IDEPCI=y
CONFIG_IDEPCI_SHARE_IRQ=y
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
CONFIG_IDEDMA_PCI_AUTO=y
# CONFIG_IDEDMA_ONLYDISK is not set
# CONFIG_IDE_ARM is not set
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_IVB is not set
CONFIG_IDEDMA_AUTO=y
# CONFIG_IEEE1394_VIDEO1394 is not set
# CONFIG_VIDEO_DEV is not set
# Digital Video Broadcasting Devices
CONFIG_VIDEO_SELECT=y
# CONFIG_FB_TRIDENT is not set
# CONFIG_SOUND_TRIDENT is not set
# Video4Linux support is needed for USB Multimedia device support

На предыдущих ядрах тоже не работало (2.6.8, 2.6.12, 2.6.14.3)
Гугл проверял, фак тоже.

В чем может быть проблема?

Ответ на: комментарий от Deleted

CONFIG_BLK_DEV_PIIX=y
CONFIG_SCSI_ATA_PIIX=y

Кроме PATA+SATA есть еще PATA only, и SATA only.

Кроме Legacy есть еще Native mode. В него можно переключится, если установлено SATA only. К сожалению, в моем режиме PATA+SATA доступен только Legacy.



arnold_shade
() автор топика

У меня год назад сдох на 865 мост. проявлялось именно в том, что не врубалось ДМА. Менял мать.

UserUnknown ★★★★★
()
Ответ на: комментарий от UserUnknown

Да, но на SATA винчестере DMA включено и занятость процессора при копировании c/на винчестер примерно равна нулю.

arnold_shade
() автор топика
Ответ на: комментарий от arnold_shade

Прошивка последнего БИОСа также проблему не решила.

arnold_shade
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.