[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: DMA is turned off on my HDD



Florian Kulzer wrote:
On Mon, Jul 28, 2008 at 17:48:42 +0300, Anton Liaukevich wrote:
Florian Kulzer wrote:
On Sun, Jul 27, 2008 at 23:05:15 +0300, Anton Liaukevich wrote:
Florian Kulzer wrote:
On Sun, Jul 27, 2008 at 16:57:19 +0300, Anton Liaukevich wrote:
Florian Kulzer wrote:
On Wed, Jul 23, 2008 at 20:59:09 +0300, Anton Liaukevich wrote:
Anton Liaukevich wrote:
In several days I discovered that DMA is turned off on my HDD (fsck sayed it while Debian booting). Please, help me turn on DMA mode.

My hardware:
    motherboard: Epox 8RDA3I rev 3.3 (nForce 2 Ultra)
    hdd: WD1200JB (ide, 120gb)
    cpu: Sempron 2200 (k7)
[...]

Today I upgraded my linux kernel to 2.6.25-2-686, but problem hasn't been solved yet.
[...]

I installed hdparm long ago and it says that dma if off, moreover hdparm can't turn it on:

leva:/home/anthony/admin# hdparm -d1 /dev/hda

/dev/hda:
 setting using_dma to 1 (on)
 HDIO_SET_DMA failed: Operation not permitted
 using_dma     =  0 (off)
[...]

Hopefully there will be an error message somewhere that clears this up a
little. Try to reboot and then run:

dmesg | grep grep -Ei 'ata|ide|amd74xx'

Furthermore, there could be relevant messages very early in the boot
process; you might have to use ScrollLock plus pen and paper to catch
them (or set up logging to a serial console).

I have tried command "dmesg | grep -Ei 'ata|ide|amd74xx'", suggested by you (after rebooting and logging in console (nor kdm that I use usually)).
Please read output in the attachment. Thank you for help.

[...]

[    1.642452] Uniform Multi-Platform E-IDE driver

OK, that seems to come from ide_core.

[    1.642530] ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
[    1.643173] Probing IDE interface ide0...
[    2.058474] hda: WDC WD1200JB-00EVA0, ATA DISK drive
[    2.730008] Probing IDE interface ide1...
[    3.592777] hdc: SONY CD-RW CRX320E, ATAPI CD/DVD-ROM drive
[    4.264276] ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
[    4.264276] ide1 at 0x170-0x177,0x376 on irq 15
[   13.612015] hdc: ATAPI 52X DVD-ROM CD-R/RW drive, 2048kB Cache

Some driver (ide_generic?) takes control of the devices before libata is
loaded. Check the output of "cat /proc/interrupts" to see which module
has IRQs 14 and 15.

[   14.218581] libata version 3.00 loaded.
[   14.740018] NFORCE2: IDE controller (0x10de:0x0065 rev 0xa2) at  PCI slot 0000:00:09.0
[   14.740306] NFORCE2: port 0x01f0 already claimed by ide0
[   14.740378] NFORCE2: port 0x0170 already claimed by ide1

The nforce2 driver cannot take ove rthe devices => no DMA.

I can think of a few more things to try, but I don't know how "safe"
they are:

- put amd74xx as the first non-comment line into /etc/modules

- boot with "blacklist=ide_generic" appended to the kernel command line

- likewise, try "libata.dma=3" at boot (may be dangerous)

- check the kernel documentation for "libata.force=..." (can be really
  dangerous)

- check if the amd74xx module is included in your initrd:
  zcat /boot/initrd.img-$(uname -r) | cpio --quiet -t | grep -E '(ide|ata|amd)[^/]*\.ko'

- build your own kernel with amd74xx compiled in

I have already tried first three things you had given me higher (/etc/modules; "blacklist=ide_generic" or "libata.dma=3" in the kernel command line). But none of them have solved me problem.

Now, my /etc/modules file looks:

anthony@leva:~$ cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

amd74xx
loop

My main boot record (that I usually use) in /boot/grub/menu.lst looks:

title           Debian GNU/Linux, kernel 2.6.25-2-686
root            (hd0,2)
kernel /boot/vmlinuz-2.6.25-2-686 root=UUID=683f90cf-5af5-4946-b90d-c69541f15966 libata.dma=3 ro
initrd          /boot/initrd.img-2.6.25-2-686
savedefault

Please, correct me if I have done something wrong.

amd74xx module seems to be included in my initrd:

anthony@leva:~$ zcat /boot/initrd.img-$(uname -r) | cpio --quiet -t | grep -E '(ide|ata|amd)[^/]*\.ko'
lib/modules/2.6.25-2-686/kernel/drivers/ata/sata_sil.ko
lib/modules/2.6.25-2-686/kernel/drivers/ata/sata_sis.ko
lib/modules/2.6.25-2-686/kernel/drivers/ata/sata_sx4.ko
lib/modules/2.6.25-2-686/kernel/drivers/ata/sata_svw.ko
lib/modules/2.6.25-2-686/kernel/drivers/ata/sata_uli.ko
lib/modules/2.6.25-2-686/kernel/drivers/ata/sata_via.ko
lib/modules/2.6.25-2-686/kernel/drivers/ata/sata_vsc.ko
lib/modules/2.6.25-2-686/kernel/drivers/ata/pata_artop.ko
lib/modules/2.6.25-2-686/kernel/drivers/ata/sata_mv.ko
lib/modules/2.6.25-2-686/kernel/drivers/ata/sata_nv.ko
lib/modules/2.6.25-2-686/kernel/drivers/ata/sata_sil24.ko
lib/modules/2.6.25-2-686/kernel/drivers/ata/ata_generic.ko
lib/modules/2.6.25-2-686/kernel/drivers/ata/sata_promise.ko
lib/modules/2.6.25-2-686/kernel/drivers/ata/pata_sis.ko
lib/modules/2.6.25-2-686/kernel/drivers/ata/sata_qstor.ko
lib/modules/2.6.25-2-686/kernel/drivers/ata/pata_marvell.ko
lib/modules/2.6.25-2-686/kernel/drivers/ata/ata_piix.ko
lib/modules/2.6.25-2-686/kernel/drivers/ata/sata_inic162x.ko
lib/modules/2.6.25-2-686/kernel/drivers/ata/libata.ko
lib/modules/2.6.25-2-686/kernel/drivers/ide/pci/amd74xx.ko
lib/modules/2.6.25-2-686/kernel/drivers/ide/pci/ide-pci-generic.ko
lib/modules/2.6.25-2-686/kernel/drivers/ide/ide-core.ko
lib/modules/2.6.25-2-686/kernel/drivers/ide/ide-pnp.ko
lib/modules/2.6.25-2-686/kernel/drivers/ide/ide-disk.ko
lib/modules/2.6.25-2-686/kernel/drivers/ide/ide-cd_mod.ko
lib/modules/2.6.25-2-686/kernel/drivers/ide/ide-tape.ko
lib/modules/2.6.25-2-686/kernel/drivers/ide/legacy/ide-cs.ko
lib/modules/2.6.25-2-686/kernel/drivers/ide/ide-generic.ko
lib/modules/2.6.25-2-686/kernel/drivers/ide/ide-floppy.ko
lib/modules/2.6.25-2-686/kernel/drivers/scsi/eata.ko
lib/modules/2.6.25-2-686/kernel/drivers/block/paride/paride.ko


Reply to: