LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Hardware (http://www.linuxquestions.org/questions/linux-hardware-18/)
-   -   ide dma not working (http://www.linuxquestions.org/questions/linux-hardware-18/ide-dma-not-working-276283/)

n6rob 01-10-2005 06:15 PM

ide dma not working
 
I am having trouble getting my kernel+hdd to operate in DMA. This has been happening ever since FC1, my first linux install. I am on 2.6.9-1.667 (FC3) at the moment; though I was up to 2.6.10 at one point (the kernel logs says there has been a lot of updating done on the IDE system for 2.6.10) All versions have rendered the same problem.

When attempting to set the system in dma mode using hdparm -d1 /dev/hda, the system pauses (no response, HDD light stays on) for about 15 or 20 seconds. When I hdparm again the report says dma is disabled.

dmesg reports
<clip-begin>
SIS5513: IDE controller at PCI slot 0000:00:00.1
SIS5513: chipset revision 208
SIS5513: not 100% native mode: will probe irqs later
SIS5513: SiS530 ATA 66 controller
ide0: BM-DMA at 0x4000-0x4007, BIOS settings: hda:DMA, hdb:DMA
ide1: BM-DMA at 0x4008-0x400f, BIOS settings: hdc:DMA, hdd:DMA
Probing IDE interface ide0...
hda: MAXTOR 6L060J3, ATA DISK drive
Using cfq io scheduler
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
hdc: LG CD-RW CED-8042B, ATAPI CD/DVD-ROM drive
hdd: SONY CD-RW CRX195E1, ATAPI CD/DVD-ROM drive
ide1 at 0x170-0x177,0x376 on irq 15
Probing IDE interface ide2...
ide2: Wait for ready failed before probe !
Probing IDE interface ide3...
ide3: Wait for ready failed before probe !
Probing IDE interface ide4...
ide4: Wait for ready failed before probe !
Probing IDE interface ide5...
ide5: Wait for ready failed before probe !
hda: max request size: 128KiB
hda: 117266688 sectors (60040 MB) w/1819KiB Cache, CHS=65535/16/63, UDMA(66)
hda: cache flushes supported
hda:<4>hda: dma_timer_expiry: dma status == 0x61
hda: DMA timeout error
hda: dma timeout error: status=0x58 { DriveReady SeekComplete DataRequest }

ide: failed opcode was: unknown
hda: dma_timer_expiry: dma status == 0x61
hda: DMA timeout error
hda: dma timeout error: status=0x58 { DriveReady SeekComplete DataRequest }
<clip-end>

The system works fine, but naturally the hard disk is slower than it should be. Its an AMD K6 (think it's a PII equivalent), 500MHz, maxtor D740X 60 GB HDD. The chipset is SiS530/5513. My research says that this chipset is well supported in linux. I've checked the .config file in the linux source and this chipset is selected (among others). The mobo specs say it'll do ata 33/66. The HDD spec says it'll do up to ata/133.

The system is a retired Win98 system, simple home work station, nothing fancy. One hard disk, one floppy, a CD ROM, and a newer CDRW burner. 384 MB of RAM. Loading mozilla can take up to a minute. I've gone with XFCE to reduce the load and I stay in command line most of the time. None-the-less it is still much slower than the Win98 system was. I believe (hope) repairing this dma issue may bring back some juice. My goal is to set up a simple home-use file server (music, photos, etc.) in a private lan. Obviously without dma, the disk is sloooooow:

hdparm -tT /dev/hda

/dev/hda:
Timing cached reads: 124 MB in 2.03 seconds = 61.06 MB/sec
Timing buffered disk reads: 16 MB in 3.16 seconds = 5.07 MB/sec

I have checked the ide cables and upgraded it to 80 conductor cable for the drive. Now it runs in udma mode 4, before the cable change it was running in mode 2. But the kernel refuses to accepted a dma mode. I've checked and double checked the jumpers on the HDD with the manufacturer specs and it's set to master.

hdparm -i /dev/hda

/dev/hda:

Model=MAXTOR 6L060J3, FwRev=A93.0500, SerialNo=663204614961
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
RawCHS=16383/16/63, TrkSize=32256, SectSize=21298, ECCbytes=4
BuffType=DualPortCache, BuffSize=1819kB, MaxMultSect=16, MultSect=16
CurCHS=4047/16/255, CurSects=16511760, LBA=yes, LBAsects=117266688
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 *udma4 udma5 udma6
AdvancedPM=no WriteCache=enabled
Drive conforms to: ATA/ATAPI-5 T13 1321D revision 1:

* signifies the current active mode

I 've check the BIOS and it is set to auto - detect the drive. I have the latest BIOS the mobo manufacturer offers (about year 2000).

On a hunch I set ide0=dma in the grub.conf file. No joy.

hdparm /dev/hda

/dev/hda:
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 = 60040544256, start = 0

I repartitioned the harddrive with new partitions - removing a previous installation of Win98. I was grasping, I suppose, but I thought maybe there was a problem with the booting set up. Nothing changed. This is how the new disk set up looks.

/sbin/fdisk -l

Disk /dev/hda: 60.0 GB, 60040544256 bytes
255 heads, 63 sectors/track, 7299 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 7299 58524795 8e Linux LVM

BTW: I opted for "autoparition" during install in anaconda. Is LVM what I want? Or should I fdisk the whole thing back to type 83, ext2fs ? My goal was to keep it simple. This is a single user, home network system. I didn't want to get complicated with multiple partitions just yet.

I have been at this for months and I have reached the end of my rope. I have learned a great deal about linux, but I am still a newbie and I could have easily overlooked the obvious. Can anyone help? Thanks in advance.

Rob

BradW 01-10-2005 08:50 PM

hdparm
 
Hi Rob,

I got hdparm to work. Here's the output:

/dev/hda:

Model=WDC WD1200JB-00FUA0, FwRev=15.05R15, SerialNo=WD-WMAET1507087
Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
RawCHS=16383/16/63, TrkSize=57600, SectSize=600, ECCbytes=74
BuffType=DualPortCache, BuffSize=8192kB, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=234441648
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
AdvancedPM=no WriteCache=enabled
Drive conforms to: device does not report version:

* signifies the current active mode

Looks similar to yours. I tried to look at dmesg, but it looks like I corrupted it when fooling with grep. :( Need to reboot and look again. :)

Brad


All times are GMT -5. The time now is 03:08 AM.