-
Andi Kleen authored
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.
3ee6b38f