DMA related problems (freeze) with Intel 430FX chipset, solved

Frank de Lange (frank@animalhouse.ml.org)
Thu, 25 Mar 1999 23:52:21 +0100


Hi'all,

I have been experiencing sudden freezes of my system ever since I got past the
2.1.1xx kernel version (I don ot remember which version it was exactly). These
freezes were very reproducible, but they only occur in specific situations.
Examples of these are:

- run esd (enlightened sound daemon), which does nasty things to the sound
interrupt by generating app. 700 interrupts per second AND THEN access the
SCSI-bus for a lengthy file transfer -> freeze after app. 2 seconds
- at 04:00 AM, have a SCSI-CDROM mounted. It will get caught by the various
cron jobs which are fired off at that time. After some time the system
freezes.

All freezes are just that, sudden rigor mortis without any warning whatsoever
in log files or otherwise. This is a clear indicator for a hardware-related
problem, so I started looking.

I found out several other people had problems with the 2.2.x series on hardware
containing Intel 430FX and other chipsets. The problems look remarkably similar
to problems encountered on systems using the VIA VP2/VP3/MVP3 chipsets, for
which a fix is already in place in drivers/pci/quirks.c
(quirk_isa_dma_hangs()).

Adding the Intel 82437 chip (PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82437) to
the quirk_list[] array solved my problems, as it does for those VIA users.
Therefore, it seems that the 430FX (and possibly other Intel chipsets) also
have problems with rapid DMA en- and disabling activities.

ATTENTION: I am not totally sure that I the chip I blame for these problems is
actually the correct one. On my box (Inten Endeavour MB, 430FX chipset) there
are three 430FX chips:

pci bus 0x0 cardnum 0x00 function 0x0000: vendor 0x8086 device 0x122d
Intel 82437 Triton

pci bus 0x0 cardnum 0x07 function 0x0000: vendor 0x8086 device 0x122e
Intel 82471 Triton

pci bus 0x0 cardnum 0x07 function 0x0001: vendor 0x8086 device 0x1230
Intel 82371 bus-master IDE controller

The 82437 is the system controller. I chose this one because I think it is the
culprit, but it might be that the actual problems are caused by the 82471. The
chip to look for would be the one which implements the ISA_DMA functions. It
works for me, but it needs more testing on other systems.

A patch which implements this fix is attached (ASCII, just a couple of lines)

Cheers//Frank

-- 
  WWWWW      ________________________
 ## o o\    /     Frank de Lange      \
 }#   \|   /    +31-70-3712708 day     \
  ##---# _/    +31-320-252965 night     \
   ####   \ frank.de.lange@inet.kpn.com /
           \ frank@animalhouse.dhs.org /
            --------------------------

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/