Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Sep 2008 14:24:16 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        lists@peter.de.com
Cc:        freebsd-acpi@freebsd.org
Subject:   Re: kernel: interrupt storm detected on "irq22:"; throttling interrupt source [7.0-RELEASE]
Message-ID:  <200809091424.16302.jhb@freebsd.org>
In-Reply-To: <20080909000805.5dc4407c@delorean.geonosis.homeunix.org>
References:  <20080901141216.72601dfb@dilbert.office.centralnic.com> <200809081108.50135.jhb@freebsd.org> <20080909000805.5dc4407c@delorean.geonosis.homeunix.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Monday 08 September 2008 07:08:05 pm Oliver Peter wrote:
> Hi John,
> 
> Thanks for your reply.
> 
> On Mon, 8 Sep 2008 11:08:49 -0400
> John Baldwin <jhb@freebsd.org> wrote:
> 
> > On Monday 01 September 2008 09:12:16 am Oliver Peter wrote:
> > > Hi,
> > >
> > > For about 6 weeks I'm suffering an interrupt storm on my production
> > > machine which is running 7.0-RELEASE-p3/amd64.
> > >
> > > The kernel is flooding my syslog with the following messages[1].
> > > A full dmesg can be found here[2].
> > >
> > > As discribed in "Using and Debugging FreeBSD ACPI" I already tried
> > > to disable apic during boot time but that's a bad idea because it
> > > seems that the SATA2 onboard controller has to have apic loaded -
> > > please correct me if I'm wrong.
> > >
> > > /boot/loader.conf:
> > > 	hint.apic.0.disabled="1"
> > >
> > > Doesn't work for me.
> > >
> > > Btw. I think it's worth it to have a little note in that part of
> > > the documentation which says something about possible failures
> > > during the boot time.
> > >
> > > Thanks for any suggestions.  
> > 
> > There are two possible causes of an interrupt storm:  1) some device
> > is actually using IRQ 22 but FreeBSD thinks it is using something
> > else.  This doesn't happen very often as it is generally a bug in the
> > BIOS and one of the tables it generates.  This used to happen more
> > often in older versions of FreeBSD that had bugs or limitations in
> > the code that figured out which IRQ PCI devices used.
> 
> How can I find out exactly which device is using IRQ 22?
> Maybe I can disable it - i.e. USB is not needed at all.
> 
> > 2) There is a
> > bug in the driver for one of the devices on IRQ 22.  In this case the
> > only device you have on IRQ is atapci0, so it may be a bug in the
> > ata(4) driver, possibly.  You could check to see if the interrupt
> > handler for the Linux driver for your chipset has extra logic
> > (currently ata(4) doesn't have any chipset-specific logic for
> > interrupt handlers AFAIK).  Also, you could try examining the
> > interrupt status register of your controller when you are getting
> > storms to see if there is a condition set that isn't being cleared by
> > ata's interrupt handler.
> 
> ... of course I could do that - but could you please be so kind and
> explain how to do that?  :-)

Well, you could start by adding a printf to ata's interrupt handler, but that 
would result in a flood on your screen.  You could maybe use a KTR instead, 
but only do it if the interrupt handler doesn't find any work to do (e.g. no 
pending request) perhaps.  I think the ATA interrrupt handler already reads a 
status register of some sort, but I could be wrong.

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200809091424.16302.jhb>