[PATCH] IOMMU overflow handling fix for MPT fusion
commit3ee6b38f502a946b679b0ec7c2f32d3efa62a185
authorAndi Kleen <ak@muc.de>
Mon, 25 Aug 2003 06:50:05 +0000 (25 01:50 -0500)
committerAnton Blanchard <anton@samba.org>
Mon, 25 Aug 2003 06:50:05 +0000 (25 01:50 -0500)
treea31a9a302508289c7091182dc86a0a9a9745bc4d
parent6cf7367489c7b055b6e02519de29d48c9ef238bb
[PATCH] IOMMU overflow handling fix for MPT fusion

Currently mpt fusion does not handle IOMMU overflow (pci_map_sg returning 0)
very gracefully. It gets not reported to the upper layers. This patch fixes this.

As a related note the fusion driver tends to trigger the NMI watchdog as soon
as it goes into any error recovery, because it busy waits for seconds with
interrupts disabled (seems to be still true with the new error handling in 2.6).
This is a big inconvenient because it leads to a forced oops.

I tried to work around it by exporting touch_nmi_watchdog and using it in
the delays, but Linus was opposed to this approach. It would be nice
if someone could fix this. Afaik in 2.6 the error recovery should mostly
run in process context, so it should be possible to use schedule_timeout()
with interrupts on for the delays.

At least on x86-64 the NMI watchdog runs by default and even on i386 it is a
very useful debugging tool.
drivers/message/fusion/mptscsih.c