[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)
[...]


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'm giving you contents of '/proc/interrupts' file:

anthony@leva:~$ cat /proc/interrupts
           CPU0
  0:         66   IO-APIC-edge      timer
  1:       2570   IO-APIC-edge      i8042
  3:          2   IO-APIC-edge
  4:          2   IO-APIC-edge
  6:          5   IO-APIC-edge      floppy
  7:          0   IO-APIC-edge      parport0
  8:          2   IO-APIC-edge      rtc0
  9:          0   IO-APIC-fasteoi   acpi
 10:          0   IO-APIC-edge      MPU401 UART
 12:     100951   IO-APIC-edge      i8042
 14:     604231   IO-APIC-edge      ide0
 15:      20161   IO-APIC-edge      ide1
 17:        742   IO-APIC-fasteoi   eth1
 20:          0   IO-APIC-fasteoi   ohci_hcd:usb2
 21:       4317   IO-APIC-fasteoi   ehci_hcd:usb1, NVidia nForce2
 22:          0   IO-APIC-fasteoi   ohci_hcd:usb3
NMI:          0   Non-maskable interrupts
LOC:     117665   Local timer interrupts
RES:          0   Rescheduling interrupts
CAL:          0   function call interrupts
TLB:          0   TLB shootdowns
TRM:          0   Thermal event interrupts
SPU:          0   Spurious interrupts
ERR:          0
MIS:          0

I'm novice in Linux and I don't know how to see which module
has IRQs 14 and 15. Commands "lsmod | grep '604231|20161'" & "ps -A | grep '604231|20161'" output nothing. Moreover I have noticed that numbers in the second column of 'cat /proc/interrupts' output sometimes changes (I have been running it several times). Unfortunately, I haven't found in man any documentation about '/proc/interrupts' file format.


Reply to: