how to fix "interrupt storm"

perryh at pluto.rain.com perryh at pluto.rain.com
Fri May 8 17:49:13 UTC 2009


What, exactly, is an "interrupt storm", and how do I fix it?

I have added a 64GB Patriot flash drive to a 7.0 system, but it does
not seem to be working properly.  Pertinent parts of dmesg.boot:

  FreeBSD 7.0-RELEASE #0: Sun Feb 24 19:59:52 UTC 2008
      root at logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC
  Timecounter "i8254" frequency 1193182 Hz quality 0
  CPU: Pentium II/Pentium II Xeon/Celeron (449.85-MHz 686-class CPU)
    Origin = "GenuineIntel"  Id = 0x652  Stepping = 2
    Features=0x183f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR>
  real memory  = 67100672 (63 MB)
  avail memory = 51662848 (49 MB)
  ...
  atapci1: <VIA 6421 SATA150 controller> port 0x1800-0x180f,0x14f0-0x14ff,0x14e0-0x14ef,0x14d0-0x14df,0x14a0-0x14bf,0x1000-0x10ff irq 9 at device 16.0 on pci0
  atapci1: [ITHREAD]
  ata2: <ATA channel 0> on atapci1
  ata2: [ITHREAD]
  ata3: <ATA channel 1> on atapci1
  ata3: [ITHREAD]
  ata4: <ATA channel 2> on atapci1
  ata4: [ITHREAD]
  ...
  ad6: FAILURE - SET_MULTI status=51<READY,DSC,ERROR> error=4<ABORTED>
  ad6: 61136MB <PATRIOT MEMORY 64GB SSD 02.10104> at ata3-master SATA150

At first things look OK, despite the "FAILURE" message:

  $ ls -l /dev/ad6*
  crw-r-----  1 root  operator    0,  88 May  3 20:30 /dev/ad6
  $ file -s /dev/ad6
  /dev/ad6: x86 boot sector, Microsoft Windows XP MBR, Serial 0x9e5523de
  $ grep -w ad6 /usr/local/etc/mtools.conf
  drive f: file="/dev/ad6"
  $ mdir f:
  init F: non DOS media
  Cannot initialize 'F:'

Now this seems a bit odd:  file(1) says it's a Windows disk, but
mdir(1) says it isn't.  (Note that there are no slices, else the
initial ls(1) should have shown them, so I suppose the drive has
a single FAT filesystem as one would expect on a floppy disk.)
Then, when I tried to investigate further by examining the contents
of the drive with "od -c /dev/ad6 | more", I got one screenful of
output followed by (on console and in dmesg):

  interrupt storm detected on "irq9:"; throttling interrupt source
  interrupt storm detected on "irq9:"; throttling interrupt source
  interrupt storm detected on "irq9:"; throttling interrupt source
  interrupt storm detected on "irq9:"; throttling interrupt source
  interrupt storm detected on "irq9:"; throttling interrupt source
  ad6: FAILURE - SET_MULTI status=51<READY,DSC,ERROR> error=4<ABORTED>
  ad6: TIMEOUT - READ_DMA retrying (1 retry left) LBA=10712
  interrupt storm detected on "irq9:"; throttling interrupt source
  interrupt storm detected on "irq9:"; throttling interrupt source
  interrupt storm detected on "irq9:"; throttling interrupt source
  interrupt storm detected on "irq9:"; throttling interrupt source
  interrupt storm detected on "irq9:"; throttling interrupt source
  ad6: FAILURE - SET_MULTI status=51<READY,DSC,ERROR> error=4<ABORTED>
  ad6: TIMEOUT - READ_DMA retrying (1 retry left) LBA=136936

etc. etc. until I killed it with ^C.  (Just entering "q", to cause
more(1) to exit and presumably stop od(1) with a SIGPIPE, did not
stop the spew of messages.)

What does this indicate?  Hardware problems?  Bad configuration?
Something else?


More information about the freebsd-questions mailing list