Re: IDE still misbehaving in pre-2.1.89-4 [WAS: Can't set UltraDMA mode 2 on Quantum Fireball SE]

Gerhard Koerting (gerhard@techem.ruhr-uni-bochum.de)
Tue, 3 Mar 1998 20:49:52 +0100


I'm getting the same errors as Adam, using a Gigabyte 586DX too.

> yes, it could well be the IO-APIC changes. It must be related to your
> hardware configuration as i have a BM-DMA setup as well, but no problems.
> A few suggestions to find out what the differece is:
>
> - could you try testing with a _single_ disk?

I have only one IDE-disk, the other disks are SCSI.

> - turn off DMA with hdparm -d0 /dev/hd[ac]

I'm getting the error message Adam describes (status=0xd0 {Busy}) only
if the disk is not using DMA. If I start the tests in DMA-mode, the
messages are as this:

hda: dma_intr: status=0x58 { DriveReady SeekComplete DataRequest }
hda: DMA disabled
ide0: reset: success
hda: write_intr: status=0xd0 { Busy }
ide0: reset: success
hda: write_intr: status=0xd0 { Busy }
...
end_request: I/O error, dev 03:01, sector 8741733

Instead of status=0xd0 there are messages with 0xd2 and 0xd8 too, and
instead of write_intr there are read_intr and recal_intr too.

If I reenable DMA after it was autmatically disabled, the disks run ok
for some minutes again.
For example while running badblocks on a 16MB-partition on hda,
I'm getting about 5 write_intr/read_intr/recal_intr-messages every second,
but it takes several minutes until the dma_intr message appears.

As my systems runs from the SCSI-disks and the IDE-disk is (now) empty,
those errors are logged via syslogd.

> - turn off IO-APIC irqs for the IDE driver, just add this to
> io_apic.c, right after setup_IO_APIC_irqs():

This helps, I can't get this error if irq 14 is not an io_apic interrupt.
I used another patch to disable io_apic on irq 14:

--- linux/arch/i386/kernel/io_apic.c.old Sat Feb 28 00:23:53 1998
+++ linux/arch/i386/kernel/io_apic.c Sat Feb 28 00:24:06 1998
@@ -615,7 +615,7 @@
pirqs_enabled)
{
printk("ENABLING IO-APIC IRQs\n");
- io_apic_irqs = ~((1<<2)|(1<<13));
+ io_apic_irqs = ~((1<<2)|(1<<13)|(1<<14));
} else {
if (ioapic_blacklisted())
printk(" blacklisted board, DISABLING IO-APIC IRQs\n");

Gerhard

-- 
Gerhard Koerting		FAX:   +49 2324 947418
Technical Chemistry		Email: G.Koerting@techem.ruhr-uni-bochum.de
Ruhr-University Bochum
D-44780 Bochum, Germany

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu