linux-mips
[Top] [All Lists]

Preempted interrupt handler

To: "'linux-mips@linux-mips.org'" <linux-mips@linux-mips.org>
Subject: Preempted interrupt handler
From: Yoann Allain <yallain@avilinks.com>
Date: Mon, 19 Dec 2005 18:43:49 +0100
Organization: Avilinks
Original-recipient: rfc822;linux-mips@linux-mips.org
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mozilla Thunderbird 1.0 (X11/20041206)
Hi,

I'm actually working on a driver for a Marvell chip on a MIPS-based board running a 2.4 kernel. I have one problem: In my module, my interrupt handler is never executed. I have traced the code until action->handler(irq, action->dev_id, regs) in handle_IRQ_event() but when the handler should be executed, it is not and the kernel reenters in the low-level interrupt dispatch routine (because we're using level sensitive interrupts and it is still up). I've checked that the function pointer called is the one of my handler but my routine is never entered.

But when my handler is included in the kernel (ie not compiled as a module), it works! My function gets executed and acks the interrupt. In this case all goes fine.

Moreover, I've noticed that the kernel symbols are mapped at adresses like 0x80258040 (start_kernel) but my module (and so is my handler) is loaded at something like 0xc000275c . I was thinking the module would be loaded in the same memory area as the kernel, so I think this is weird... Perhaps, the module handler can't be executed because of its location but I don't know how to fix this.

Some suggestions?

Thanks in advance.

Yoann


<Prev in Thread] Current Thread [Next in Thread>