On Sun, 2008-03-09 at 21:29 +0900, FUJITA Tomonori wrote:On Sun, 09 Mar 2008 14:23:13 +0300
Michael Tokarev <mjt@xxxxxxxxxx> wrote:
Just got quite.. bad situation on a production serverSeems that you was out of swiommu space (and aic79xx can't handle it
here. The machine locked up hard several times in a
row (required hard reboot). So I finally enabled watchdog
subsystem which helped.
Now I see the following (over netconsole):
DMA: Out of SW-IOMMU space for 65536 bytes at device 0000:08:07.0
------------[ cut here ]------------
kernel BUG at drivers/scsi/aic7xxx/aic79xx_osm.c:1490!
though it should). This happened because:
a) you produced more I/Os than swiommu can handle.
b) swiommu space leaks due to bugs.
If you hit this problem due to a), the following boot option might
help:
swiotlb=65536
Actually, it's worse than this. The aic79xx is a fully 64 bit capable[]
PCI card, it shouldn't be using the iommu at all. However, it has three
DMA modes: 64 bit, 39 bit and 32 bit; with a corresponding resource
cost increasing with the number of bits. It employs special APIs to
size the masks according to the memory, in aic79xx_osm_pci.c:
Could you firstly tell me how much memory you have, and secondly
instrument this code with the patch below to see if we can work out what
it's doing?