Lost interrupts with IDE DMA on 2.5.x
Hello,
I've recently added a second drive to my workstation and since then I'm
getting the following error from time to time:
Apr 25 20:42:06 beowulf kernel: hda: dma_timer_expiry: dma status == 0x64
Apr 25 20:42:06 beowulf kernel: hda: lost interrupt
Apr 25 20:42:06 beowulf kernel: hda: dma_intr: bad DMA status (dma_stat=70)
Apr 25 20:42:06 beowulf kernel: hda: dma_intr: status=0x50 { DriveReady
SeekComplete }Both drives are new Maxtors (60 and 40GB) on the VIA KT266 chipset (the mobo is MSI K7T266 Pro2-A mobo):
----------VIA BusMastering IDE Configuration----------------
Driver Version: 3.36 South Bridge: VIA vt8233a Revision: ISA 0x0 IDE 0x6 Highest DMA rate: UDMA133 BM-DMA base: 0xfc00 PCI clock: 33.3MHz Master Read Cycle IRDY: 0ws Master Write Cycle IRDY: 0ws BM IDE Status Register Read Retry: yes Max DRDY Pulse Width: No limit -----------------------Primary IDE-------Secondary IDE------ Read DMA FIFO flush: yes yes End Sector FIFO flush: no no Prefetch Buffer: yes yes Post Write Buffer: yes yes Enabled: yes yes Simplex only: no no Cable Type: 80w 40w -------------------drive0----drive1----drive2----drive3----- Transfer Mode: UDMA UDMA PIO DMA Address Setup: 120ns 120ns 120ns 120ns Cmd Active: 90ns 90ns 90ns 90ns Cmd Recovery: 30ns 30ns 30ns 30ns Data Active: 90ns 90ns 330ns 90ns Data Recovery: 30ns 30ns 270ns 30ns Cycle Time: 15ns 15ns 600ns 120ns Transfer Rate: 133.3MB/s 133.3MB/s 3.3MB/s 16.6MB/s
Of course, when the above happens, all disk I/O freezes. The above happens
only when there's simultaneous activity on both devices. It doesn't happen when the devices are on different IDE interfaces. The transfer is always retried and completed successfully, so it's not a bad hdd and I can only guess the problem is somewhere in the DMA/IRQ handling by the IDE driver. If there's not enough information to diagnose/solve the problem, I can do more tests (run with 2.4 for a while, run with the generic IDE drive etc.).
TIA,
marek
Attached patch should help, please try.
--
Bartlomiej
Quoted 51 lines · Marek Habersack
Hello,
I've recently added a second drive to my workstation and since then I'm
getting the following error from time to time:Apr 25 20:42:06 beowulf kernel: hda: dma_timer_expiry: dma status == 0x64 Apr 25 20:42:06 beowulf kernel: hda: lost interrupt Apr 25 20:42:06 beowulf kernel: hda: dma_intr: bad DMA status (dma_stat=70) Apr 25 20:42:06 beowulf kernel: hda: dma_intr: status=0x50 { DriveReady SeekComplete }Both drives are new Maxtors (60 and 40GB) on the VIA KT266 chipset (the mobo is MSI K7T266 Pro2-A mobo):
----------VIA BusMastering IDE Configuration----------------
Driver Version: 3.36 South Bridge: VIA vt8233a Revision: ISA 0x0 IDE 0x6 Highest DMA rate: UDMA133 BM-DMA base: 0xfc00 PCI clock: 33.3MHz Master Read Cycle IRDY: 0ws Master Write Cycle IRDY: 0ws BM IDE Status Register Read Retry: yes Max DRDY Pulse Width: No limit -----------------------Primary IDE-------Secondary IDE------ Read DMA FIFO flush: yes yes End Sector FIFO flush: no no Prefetch Buffer: yes yes Post Write Buffer: yes yes Enabled: yes yes Simplex only: no no Cable Type: 80w 40w -------------------drive0----drive1----drive2----drive3----- Transfer Mode: UDMA UDMA PIO DMA Address Setup: 120ns 120ns 120ns 120ns Cmd Active: 90ns 90ns 90ns 90ns Cmd Recovery: 30ns 30ns 30ns 30ns Data Active: 90ns 90ns 330ns 90ns Data Recovery: 30ns 30ns 270ns 30ns Cycle Time: 15ns 15ns 600ns 120ns Transfer Rate: 133.3MB/s 133.3MB/s 3.3MB/s 16.6MB/sOf course, when the above happens, all disk I/O freezes. The above happens
only when there's simultaneous activity on both devices. It doesn't happen when the devices are on different IDE interfaces. The transfer is always retried and completed successfully, so it's not a bad hdd and I can only guess the problem is somewhere in the DMA/IRQ handling by the IDE driver. If there's not enough information to diagnose/solve the problem, I can do more tests (run with 2.4 for a while, run with the generic IDE drive etc.).
Quoted 3 lines
TIA,
marek
# Fix masked_irq arg handling for ide_do_request(). # Solves "hdx: lost interrupt" bug.
#
# Bartlomiej Zolnierkiewicz <[email protected]>
drivers/ide/ide-io.c +2 -2
@@ -850,14 +850,14 @@* happens anyway when any interrupt comes in, IDE or otherwise * -- the kernel masks the IRQ while it is being handled. */ -if (hwif->irq != masked_irq) +if (masked_irq !=IDE_NO_IRQ && hwif->irq != masked_irq)disable_irq_nosync (hwif->irq);spin_unlock (&ide_lock);local_irq_enable ();/* allow other IRQs while we start this request */ startstop =start_request (drive, rq);spin_lock_irq (&ide_lock); -if (hwif->irq != masked_irq) +if (masked_irq !=IDE_NO_IRQ && hwif->irq != masked_irq)enable_irq (hwif->irq);if (startstop == ide_released) goto queue_next;
Hi Bartlomiej,
It seems the patch is missing :-(
Regards,
Paul
Quoted 72 lines
Attached patch should help, please try.
--
BartlomiejQuoted 3 lines · Marek Habersack
Hello,
I've recently added a second drive to my workstation and
since then
Quoted 3 lines
I'm getting the following error from time to time:
Apr 25 20:42:06 beowulf kernel: hda: dma_timer_expiry:dma status ==
0x64Quoted 2 lines
Apr 25 20:42:06 beowulf kernel: hda: lost interrupt Apr 25 20:42:06 beowulf kernel: hda: dma_intr: bad DMAstatus (dma_stat=70)
Quoted 1 line
Apr 25 20:42:06 beowulf kernel: hda: dma_intr:status=0x50 { DriveReady
Quoted 34 lines
SeekComplete }Both drives are new Maxtors (60 and 40GB) on the VIA KT266 chipset (the mobo is MSI K7T266 Pro2-A mobo):
----------VIA BusMastering IDE Configuration----------------
Driver Version: 3.36 South Bridge: VIA vt8233a Revision: ISA 0x0 IDE 0x6 Highest DMA rate: UDMA133 BM-DMA base: 0xfc00 PCI clock: 33.3MHz Master Read Cycle IRDY: 0ws Master Write Cycle IRDY: 0ws BM IDE Status Register Read Retry: yes Max DRDY Pulse Width: No limit -----------------------Primary IDE-------Secondary IDE------ Read DMA FIFO flush: yes yes End Sector FIFO flush: no no Prefetch Buffer: yes yes Post Write Buffer: yes yes Enabled: yes yes Simplex only: no no Cable Type: 80w 40w -------------------drive0----drive1----drive2----drive3----- Transfer Mode: UDMA UDMA PIO DMA Address Setup: 120ns 120ns 120ns 120ns Cmd Active: 90ns 90ns 90ns 90ns Cmd Recovery: 30ns 30ns 30ns 30ns Data Active: 90ns 90ns 330ns 90ns Data Recovery: 30ns 30ns 270ns 30ns Cycle Time: 15ns 15ns 600ns 120ns Transfer Rate: 133.3MB/s 133.3MB/s 3.3MB/s 16.6MB/sQuoted 1 line
Of course, when the above happens, all disk I/O freezes.
The above
Quoted 2 lines
happens only when there's simultaneous activity on both devices. It doesn't happen when the devices are on different IDE
interfaces. The
Quoted 1 line
transfer is always retried and completed successfully, so
it's not a
Quoted 1 line
bad hdd and I can only guess the problem is somewhere in
the DMA/IRQ
Quoted 7 lines
handling by the IDE driver. If there's not enough information to diagnose/solve the problem, I can do more tests (run with 2.4 for a while, run with the generic IDE drive etc.).
TIA,
marek