Você está confundindo a metade superior da interrupção com a metade inferior. É perfeitamente normal que a metade superior da interrupção corra em um núcleo diferente da metade inferior. Quando ocorre uma interrupção de hardware, você está em qualquer contexto que esteja em execução. É fundamental que você libere esse contexto o mais rápido possível para que você não esteja seqüestrando um trabalho aleatório, possivelmente importante.
"Linux (along with many other systems) resolves this problem by splitting the interrupt handler into two halves. The so-called top half is the routine that actually responds to the interrupt—the one you register with request_irq. The bottom half is a routine that is scheduled by the top half to be executed later, at a safer time. The big difference between the top-half handler and the bottom half is that all interrupts are enabled during execution of the bottom half—that's why it runs at a safer time. In the typical scenario, the top half saves device data to a device-specific buffer, schedules its bottom half, and exits: this operation is very fast. The bottom half then performs whatever other work is required, such as awakening processes, starting up another I/O operation, and so on. This setup permits the top half to service a new interrupt while the bottom half is still working." -- Top and Bottom halves
As interrupções não são agendadas - uma interrupção chega quando chega. O encadeamento do kernel [irq/28-pci7230]
está agendado para fazer o "trabalho real".