18

I'm trying to understand the meaning of the following message:

irq N:nobody cared (try booting with the "irqpoll" option)

Does this mean the IRQ handler not processing the response even it has gotten the interrupt? Or that the scheduler failed to call an irq handler?

In what condition is this happening?

Chris Stratton
  • 39,853
  • 6
  • 84
  • 117
AbhijitG
  • 300
  • 1
  • 2
  • 9

5 Answers5

12

it means that either no handler is registered for that irq or the one that is returned status indicating that the irq was not for him (from hardware he is supporting) in case of shared interrupts probably a faulty HW/FW or buggy driver

Raber
  • 2,040
  • 16
  • 13
9

Ideally, the above message should be followed by a stack trace, which should help you determine which subsystem is causing the issue. This message means the interrupt handler got stuck due to a overhead, and did not return thus causing the system to disable IRQ#X. This is seen in cases of a buggy firmware.

The irqpoll option needs to be added to grub.conf, which means, when an interrupt is not handled, search all known interrupt handlers for the appropriate handlers and also check all handlers on each timer interrupt. This is sometimes useful to get systems with broken firmware running. The kernel command line in grub.conf should look like the following:

kernel /vmlinuz-version ro root=/dev/sda1 quiet irqpoll

askb
  • 6,501
  • 30
  • 43
  • Negative: The hardware that caused the interrupt, did NOT get its handler called, so that driver is the one thing that is NOT running..... – rew Jul 26 '18 at 14:22
8

Minimal runnable QEMU example

QEMU has an educational device called edu that generates interrupts, and is perfect to explore this.

First, I have created a minimal Linux PCI device driver for it, which handles the interrupt correctly.

Now we can easily generate the error by commenting out request_irq and free_irq from the code.

Then, if we run the userland program that generates IRQs, we get:

irq 11: nobody cared (try booting with the "irqpoll" option)

followed by a stack trace.

So as others mentioned: unhandled IRQs.

Ciro Santilli OurBigBook.com
  • 347,512
  • 102
  • 1,199
  • 985
1

In my case after reloading the driver because the network card had billions of errors in a short period of time.

modprobe -r ixgbe && modprobe ixgbe 

lspci showed an unknown device where the 'card' used to be

after a reboot the card disappeared never to be seen again.

So the error might also show failing hardware.

tshepang
  • 12,111
  • 21
  • 91
  • 136
Riccardo B.
  • 354
  • 2
  • 10
-8

see here:

static inline int bad_action_ret(irqreturn_t action_ret)
{
    if (likely(action_ret <= (IRQ_HANDLED | IRQ_WAKE_THREAD)))
        return 0;
    return 1;
}
leesagacious
  • 182
  • 1
  • 8