# Problem with Promise Ultra66

## jpc82

I was wondering if there is some sort of known problem with Linux and the Promise Ultra66 PCI IDE card.

I have been running 2 80GB drives on this card with no problem for over a year, however when I added a 120GB drive to it I'm getting DMA errors, especially when I try to right file larger then a couple of gigs.

hdg: dma_intr: status=0x51 { DriveReady SeekComplete Error } 

hdg: dma_intr: error=0x84 { DriveStatusError BadCRC } 

However, when I just it in the built in controller I don't have any problems, or when I put it on an other computer.

Could this be a problem with the drivers for this card?

NOTE* The card is on its own chain, and the only drive doing any access at the times of the errors.

----------

## grepcomputers

Try updating the BIOS on the Promise IDE card.

Also, it wouldn't hurt to run drive diagnostic software from whoever manufactured the 120GB drive - there could be a hardware error.

cheers...

----------

## jpc82

I ran the diagnotics and and even a low level format from the tools seagate provides and they both finished with no ptoblem.

I also did a destructive badblocks, with multiple passes, and I wrote one HUGE (120GB) file from urandom.  Everythign while running at ATA100 (Other computer is ATA100 capable) with no error messages.  

One my other computer ATA33 I wrote one huge 20GB file from urandom with no errors.

I will give the bios idea a try when I get a chance.

----------

## jpc82

I tried updating the Bios for my mobo and the ultra66 card, however I'm still getting the errors.

----------

## grepcomputers

Hmmm.

You're using the drivers that came with the kernel? What kernel revision do you use?

What does lspci and dmesg tell you about the drives and the controller card?

Dmesg might also have more error messages that might be worth seeing.

Also, did you try a new IDE cable? A new power cable (if you have a spare one)?

cheers!

----------

## jpc82

I have tried 3 different cables, and I'am currently using the one that was used to test in my other machine.

I'm currently using gentoo-dev-source-2.6.5

My lspci

```
0000:00:00.0 Host bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 02)

0000:00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 02)

0000:00:04.0 ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 02)

0000:00:04.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)

0000:00:04.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB (rev 01)

0000:00:04.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 02)

0000:00:09.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)

0000:00:0b.0 Unknown mass storage controller: Promise Technology, Inc. PDC20262 (FastTrak66/Ultra66) (rev 01)

0000:01:00.0 VGA compatible controller: nVidia Corporation NV4 [RIVA TNT] (rev 04)

```

My Dmesg

```

Linux version 2.6.5-gentoo-r1 (root@GentooP400) (gcc version 3.3.2 20031218 (Gentoo Linux 3.3.2-r5, propolice-3.3-7)) #1 Mon Jun 7 14:22:11 EDT 2004

BIOS-provided physical RAM map:

 BIOS-e820: 0000000000000000 - 000000000009e800 (usable)

 BIOS-e820: 000000000009e800 - 00000000000a0000 (reserved)

 BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)

 BIOS-e820: 0000000000100000 - 000000000bffd000 (usable)

 BIOS-e820: 000000000bffd000 - 000000000bfff000 (ACPI data)

 BIOS-e820: 000000000bfff000 - 000000000c000000 (ACPI NVS)

 BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)

191MB LOWMEM available.

On node 0 totalpages: 49149

  DMA zone: 4096 pages, LIFO batch:1

  Normal zone: 45053 pages, LIFO batch:10

  HighMem zone: 0 pages, LIFO batch:1

DMI 2.0 present.

ACPI: RSDP (v000 ASUS                                      ) @ 0x000f7f90

ACPI: RSDT (v001 ASUS   P2B      0x42302e31 MSFT 0x31313031) @ 0x0bffd000

ACPI: FADT (v001 ASUS   P2B      0x42302e31 MSFT 0x31313031) @ 0x0bffd080

ACPI: BOOT (v001 ASUS   P2B      0x42302e31 MSFT 0x31313031) @ 0x0bffd040

ACPI: DSDT (v001   ASUS P2B      0x00001000 MSFT 0x01000001) @ 0x00000000

Built 1 zonelists

Kernel command line: auto BOOT_IMAGE=gentoo ro root=304

Local APIC disabled by BIOS -- reenabling.

Found and enabled local APIC!

Initializing CPU#0

PID hash table entries: 1024 (order 10: 8192 bytes)

Detected 401.111 MHz processor.

Using tsc for high-res timesource

Console: colour VGA+ 80x25

Memory: 190072k/196596k available (2725k kernel code, 5868k reserved, 836k data, 160k init, 0k highmem)

Checking if this processor honours the WP bit even in supervisor mode... Ok.

Calibrating delay loop... 790.52 BogoMIPS

Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)

Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)

Mount-cache hash table entries: 512 (order: 0, 4096 bytes)

CPU:     After generic identify, caps: 0183fbff 00000000 00000000 00000000

CPU:     After vendor identify, caps: 0183fbff 00000000 00000000 00000000

CPU: L1 I cache: 16K, L1 D cache: 16K

CPU: L2 cache: 512K

CPU:     After all inits, caps: 0183fbff 00000000 00000000 00000040

Intel machine check architecture supported.

Intel machine check reporting enabled on CPU#0.

CPU: Intel Pentium II (Deschutes) stepping 01

Enabling fast FPU save and restore... done.

Checking 'hlt' instruction... OK.

POSIX conformance testing by UNIFIX

enabled ExtINT on CPU#0

ESR value before enabling vector: 00000000

ESR value after enabling vector: 00000000

Using local APIC timer interrupts.

calibrating APIC timer ...

..... CPU clock speed is 400.0853 MHz.

..... host bus clock speed is 100.0213 MHz.

NET: Registered protocol family 16

PCI: PCI BIOS revision 2.10 entry at 0xf0720, last bus=1

PCI: Using configuration type 1

mtrr: v2.0 (20020519)

ACPI: Subsystem revision 20040326

ACPI: IRQ9 SCI: Edge set to Level Trigger.

ACPI: Interpreter enabled

ACPI: Using PIC for interrupt routing

ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 10 *11 12 14 15)

ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 *10 11 12 14 15)

ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 9 10 11 12 14 15)

ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 9 10 11 *12 14 15)

ACPI: PCI Root Bridge [PCI0] (00:00)

PCI: Probing PCI hardware (bus 00)

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]

Linux Plug and Play Support v0.97 (c) Adam Belay

SCSI subsystem initialized

drivers/usb/core/usb.c: registered new driver usbfs

drivers/usb/core/usb.c: registered new driver hub

ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 12

ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10

ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 11

PCI: Using ACPI for IRQ routing

PCI: if you experience problems, try using option 'pci=noacpi' or even 'acpi=off'

Simple Boot Flag at 0x46 set to 0x80

devfs: 2004-01-31 Richard Gooch (rgooch@atnf.csiro.au)

devfs: boot_options: 0x1

udf: registering filesystem

SGI XFS with large block numbers, no debug enabled

Limiting direct PCI/PCI transfers.

ACPI: Power Button (FF) [PWRF]

ACPI: Processor [CPU0] (supports C1 C2)

mice: PS/2 mouse device common for all mice

serio: i8042 AUX port at 0x60,0x64 irq 12

serio: i8042 KBD port at 0x60,0x64 irq 1

input: AT Translated Set 2 keyboard on isa0060/serio0

lp: driver loaded but no devices found

Real Time Clock Driver v1.12

Linux agpgart interface v0.100 (c) Dave Jones

agpgart: Detected an Intel 440BX Chipset.

agpgart: Maximum main memory to use for agp memory: 149M

agpgart: AGP aperture is 64M @ 0xe4000000

Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing disabled

ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A

parport0: PC-style at 0x378 [PCSPP(,...)]

lp0: using parport0 (polling).

Using anticipatory io scheduler

Floppy drive(s): fd0 is 1.44M

FDC 0 is a post-1991 82077

loop: loaded (max 8 devices)

8139too Fast Ethernet driver 0.9.27

PCI: Setting latency timer of device 0000:00:09.0 to 64

eth0: RealTek RTL8139 at 0xd000, 00:48:54:63:5c:04, IRQ 12

eth0:  Identified 8139 chip type 'RTL-8139B'

Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2

ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx

PIIX4: IDE controller at PCI slot 0000:00:04.1

PIIX4: chipset revision 1

PIIX4: not 100% native mode: will probe irqs later

    ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:DMA, hdb:pio

    ide1: BM-DMA at 0xd808-0xd80f, BIOS settings: hdc:pio, hdd:pio

hda: ST320413A, ATA DISK drive

ide0 at 0x1f0-0x1f7,0x3f6 on irq 14

PDC20262: IDE controller at PCI slot 0000:00:0b.0

PDC20262: chipset revision 1

PDC20262: 100% native mode on irq 10

PDC20262: (U)DMA Burst Bit ENABLED Primary PCI Mode Secondary PCI Mode.

    ide2: BM-DMA at 0xa400-0xa407, BIOS settings: hde:DMA, hdf:DMA

    ide3: BM-DMA at 0xa408-0xa40f, BIOS settings: hdg:DMA, hdh:DMA

hde: Maxtor 6Y080L0, ATA DISK drive

hdf: MAXTOR 6L080J4, ATA DISK drive

ide2 at 0xb800-0xb807,0xb402 on irq 10

hdg: ST3120026A, ATA DISK drive

ide3 at 0xb000-0xb007,0xa802 on irq 10

hda: max request size: 128KiB

hda: 39102336 sectors (20020 MB) w/1024KiB Cache, CHS=38792/16/63, UDMA(33)

 /dev/ide/host0/bus0/target0/lun0: p1 p2 p3 p4

hde: max request size: 128KiB

hde: 160086528 sectors (81964 MB) w/2048KiB Cache, CHS=65535/16/63, UDMA(66)

 /dev/ide/host2/bus0/target0/lun0: p1

hdf: max request size: 128KiB

hdf: 156355584 sectors (80054 MB) w/1819KiB Cache, CHS=65535/16/63, UDMA(66)

 /dev/ide/host2/bus0/target1/lun0: p1

hdg: max request size: 1024KiB

hdg: 234441648 sectors (120034 MB) w/8192KiB Cache, CHS=16383/255/63, UDMA(66)

 /dev/ide/host2/bus1/target0/lun0: p1

libata version 1.02 loaded.

USB Universal Host Controller Interface driver v2.2

uhci_hcd 0000:00:04.2: Intel Corp. 82371AB/EB/MB PIIX4 USB

PCI: Setting latency timer of device 0000:00:04.2 to 64

uhci_hcd 0000:00:04.2: irq 12, io base 0000d400

uhci_hcd 0000:00:04.2: new USB bus registered, assigned bus number 1

hub 1-0:1.0: USB hub found

hub 1-0:1.0: 2 ports detected

drivers/usb/core/usb.c: registered new driver usblp

drivers/usb/class/usblp.c: v0.13: USB Printer Device Class driver

Initializing USB Mass Storage driver...

drivers/usb/core/usb.c: registered new driver usb-storage

USB Mass Storage support registered.

drivers/usb/core/usb.c: registered new driver hid

drivers/usb/input/hid-core.c: v2.0:USB HID core driver

oprofile: using NMI interrupt.

NET: Registered protocol family 2

IP: routing cache hash table of 1024 buckets, 8Kbytes

TCP: Hash tables configured (established 16384 bind 32768)

ip_conntrack version 2.1 (1535 buckets, 12280 max) - 296 bytes per conntrack

ip_tables: (C) 2000-2002 Netfilter core team

ipt_recent v0.3.1: Stephen Frost <sfrost@snowman.net>.  http://snowman.net/projects/ipt_recent/

arp_tables: (C) 2002 David S. Miller

NET: Registered protocol family 1

NET: Registered protocol family 17

found reiserfs format "3.6" with standard journal

Reiserfs journal params: device hda4, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30

reiserfs: checking transaction log (hda4) for (hda4)

Using r5 hash to sort names

VFS: Mounted root (reiserfs filesystem) readonly.

Mounted devfs on /dev

Freeing unused kernel memory: 160k freed

Adding 506036k swap on /dev/hda2.  Priority:-1 extents:1

found reiserfs format "3.6" with standard journal

Reiserfs journal params: device hda3, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30

reiserfs: checking transaction log (hda3) for (hda3)

Using r5 hash to sort names

found reiserfs format "3.6" with standard journal

Reiserfs journal params: device hde1, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30

reiserfs: checking transaction log (hde1) for (hde1)

Using r5 hash to sort names

found reiserfs format "3.6" with standard journal

Reiserfs journal params: device hdf1, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30

reiserfs: checking transaction log (hdf1) for (hdf1)

Using r5 hash to sort names

XFS mounting filesystem hdg1

Ending clean XFS mount for filesystem: hdg1

eth0: link up, 100Mbps, full-duplex, lpa 0x45E1

```

----------

## jpc82

I also noticed that when another drive on the controler is in use there is alot of errors

----------

## jpc82

Well it seems the linux drivers for promise card don't like running with more then 2 cards attached to the controller.

When I put in another card, and keeped the two 80GB drives on the Ultra66, and put the 120GB on a Ultra100, I don't get any errors, even when all drives are under heavy load.

----------

## grepcomputers

I'm glad you figured it out. Sorry I have not been more helpful recently, but I've been madly trying to recover data from a dead drive.

good luck!

----------

## labrador

I just went through a similar experience.  In my case a 20 GB

drive died in my software RAID array, and my 40 GB drive hot

spare kicked in.  I bought a replacement drive to act as the next

hot spare which is 120 GB.  Before comitting any data to it, I

ran badblocks.  The badblocks write test didn't find any faults,

but it did trigger many of these dma_intr errors with error 0x84

BadCRC.  I tried switching cables and it didn't help (as suggested

by many forum items on these dma_intr errors).  I moved

the 120 GB drive over to the Ultra 133 card instead of using

the Ultra 66 card, and then tested again with badblocks.  Now

no errors.  There are 2 40 GB drives now on the Ultra 66 and

they are not causing any errors.

I have the latest BIOS for the Ultra 66 card - 2.0 build 18, and

that doesn't resolve the problem.  The Ultra 66 has a problem

with either large drives or with drives having a large cache

(8K in my case).

----------

## labrador

I now have 2 40 GB drives on my Ultra66.  The 120 GB seagate

was put on the Ultra 66 and generated dma_intr errors, and then

it was moved off to the Ultra133.  So now I have a 40 GB Seagate

(fairly new) on the Ultra 66 and it also generates errors.  There is

also a Quantum 40 GB drive on the Ultra 66 that has no problem.

The old Quantum 20 and 40 GB drives never had a problem on the Ultra 66.

So I have to conclude it isn't the size, but something related

to the firmware on seagate drives, or their faster data speed

(outperforms the older 20 and 40 GB Quantum 7200 RPM fireball)

according to hdparm -t

I have no choice but to buy a new Ultra 100, which will hopefully

avoid the problem as the Ultra 133 does.

----------

