I have found a solution for the DMA access, The disc controllers should be integrated on kernel, does not work as modules.
I will explain more now, PROBLEM: I have a motherboard with the IDE controllers: # lspci | grep IDE 0000:00:1f.1 IDE interface: Intel Corp. 82801EB/ER (ICH5/ICH5R) Ultra ATA 100 Storage Controller (rev 02) 0000:00:1f.2 IDE interface: Intel Corp. 82801EB (ICH5) Serial ATA 150 Storage Controller (rev 02) With the “lsmod” utility we can find the corresponding modules: Ultra ATA with module “piix” and Serial ATA with scsi module “ata_piix”. With the standard kernel we cannot activate DMA: # hdparm -d1 /dev/hdc /dev/hdc: setting using_dma to 1 (on) HDIO_SET_DMA failed: Operation not permitted using_dma = 0 (off) SOLUTION: It is necessary to build the kernel with the following configuration: # diff /boot/config-2.6.12-6-686-smp /usr/src/linux/.config < CONFIG_IDE=m > CONFIG_IDE=y < CONFIG_BLK_DEV_IDE=m > CONFIG_BLK_DEV_IDE=y < CONFIG_SCSI=m > CONFIG_SCSI=y observe that for the specific disc controllers we can mantain their config values: CONFIG_BLK_DEV_PIIX=m CONFIG_SCSI_ATA_PIIX=m When the new kernel starts, DMA is activated automatically, but is better install the hdparm service to set the best configuration in the devices. In my case, there are two cdrom devices, (hda is a DVD-RW and hdc is a CD-RW), append to the bottom of “/etc/hdparm.conf”: /dev/hda { mult_sect_io = 16 dma = on io32_support = 1 interrupt_unmask = on } /dev/hdc { mult_sect_io = 16 dma = on io32_support = 1 interrupt_unmask = on } now the cdrom devices are working at full speed. I hope that will be useful, Jordi Pujol