I have an on-going problem with DigiBoard Xem boards causing interrupt storms (since 4.x days). The FreeBSD driver polls the board and doesn't have a functional interrupt handler (and Linux behaves in the same way). It seems that under some conditions, the board will assert its interrupt line and, since there's no interrupt handler to clear whatever triggered the interrupt, the IRQ is never unasserted. In the past, I have managed to avoid the problem by putting the Digi card on a dedicated interrupt. For reasons I don't understand, this appears to mask the problem. Unfortunately, I now have a system where, courtesy of Compaq's incompetence, I have no way to avoid having two Digi boards sharing an interrupt. In 7.x, as soon as I load digi.ko, I get "interrupt storm" messages. In 6.x, I could see the interrupt storm but it didn't flood my console with messages. Does anyone have a patch that will generate an appropriate EOI to a DigiBoard? Alternatively, can anyone suggest how I can disable or mask a specified PCI interrupt? -- Peter Jeremy Please excuse any delays as the result of my ISP's inability to implement an MTA that is either RFC2821-compliant or matches their claimed behaviour. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 195 bytes Desc: not available Url : http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20080603/cfd07fd9/attachment.pgp
On Tuesday 03 June 2008 03:08:40 am Peter Jeremy wrote:> I have an on-going problem with DigiBoard Xem boards causing interrupt > storms (since 4.x days). The FreeBSD driver polls the board and > doesn't have a functional interrupt handler (and Linux behaves in the > same way). It seems that under some conditions, the board will assert > its interrupt line and, since there's no interrupt handler to clear > whatever triggered the interrupt, the IRQ is never unasserted. > > In the past, I have managed to avoid the problem by putting the Digi > card on a dedicated interrupt. For reasons I don't understand, this > appears to mask the problem.That is because we leave interrupts masked until it gets an interrupt handler. Since digi(4) doesn't register a handler, we leave the interrupt masked unless some other device is sharing the same interrupt and registers a handler.> Unfortunately, I now have a system where, courtesy of Compaq's > incompetence, I have no way to avoid having two Digi boards sharing an > interrupt. In 7.x, as soon as I load digi.ko, I get "interrupt storm" > messages. In 6.x, I could see the interrupt storm but it didn't > flood my console with messages. > > Does anyone have a patch that will generate an appropriate EOI to > a DigiBoard?No. Even better would be if there was a way to disable interrupt generation in the digi(4) driver via some register.> Alternatively, can anyone suggest how I can disable or mask a specified > PCI interrupt?The problem is that in this case you have another driver that is using that interrupt, so if you completely mask the interrupt the other driver will stop getting interrupts and likely stop working. -- John Baldwin
On 2008-Jun-03 10:21:35 -0400, John Baldwin <jhb@freebsd.org> wrote:>> In the past, I have managed to avoid the problem by putting the Digi >> card on a dedicated interrupt. For reasons I don't understand, this >> appears to mask the problem. > >That is because we leave interrupts masked until it gets an interrupt handler. >Since digi(4) doesn't register a handler, we leave the interrupt masked >unless some other device is sharing the same interrupt and registers a >handler.This is what I assumed but doesn't explain how having two digi boards that share an interrupt with each other but nothing else winds up with an interrupt storm. I will have to investigate further...>No. Even better would be if there was a way to disable interrupt generation >in the digi(4) driver via some register.Agreed. Unfortunately, the only documentation is the Linux driver and it doesn't appear to initialise the digi board any differently to FreeBSD.>> Alternatively, can anyone suggest how I can disable or mask a specified >> PCI interrupt? > >The problem is that in this case you have another driver that is using that >interrupt, so if you completely mask the interrupt the other driver will stop >getting interrupts and likely stop working.I agree that this approach is a hack - but it will let me work around the problem on the problematic system. BTW, your MUA's list-reply configuration don't recognize that freebsd-stable@ and stable@ are aliases. -- Peter Jeremy Please excuse any delays as the result of my ISP's inability to implement an MTA that is either RFC2821-compliant or matches their claimed behaviour. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 195 bytes Desc: not available Url : http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20080603/fca35a0c/attachment.pgp