Well, the code:
        DEBUG_PRINT(KERN_DEBUG "RTDM IMU %d - enable IRQ\n", info->gpio_pin_n);
        err = rtdm_irq_enable(&info->gpio_irq);
only exists one place in the driver and is only executed in the kernel-context 
of  rt_dev_open() from user-space.
The irq-device is opened only once before entering the read-loop.

The repeated read calls from the user space (rt_dev_read()) only blocs on the 
irq semaphore and copies the irq-time back to the user.
I don't see how the irq-line can be re-enabled by this code.
If the device have been repeatedly opened, the dmesg would have been flooded 
with log-messages.

Terje

-----Original Message-----
From: Gilles Chanteperdrix [mailto:[email protected]] 
Sent: 2. desember 2014 10:34
To: Terje Frøysa
Cc: [email protected]
Subject: Re: [Xenomai] IRQ155 not handled. Disabling IRQ line

On Tue, Dec 02, 2014 at 09:28:37AM +0000, Terje Frøysa wrote:
> Dear forum,
> 
> Question:
> If a driver is deemed buggy and the IRQ disabled, why is it still serving the 
> interrupts?
> 
> Running Debian 3.8.13-bone67 and Xenomai 2.6.4
> 
> At opening call, my GPIO RTDM IRQ driver enables a GPIO line w/irq.
> My user-space program issues read-requests to receive a time-stamp for each 
> irq.
> The irq handler is very compact. It only reads the system time, rises a 
> semaphore if not already up and returns RT_INTR_HANDLED.
> 
> When starting (open + loop w/reads),  the dmesg log-message appears:  "IRQ155 
> not handled. Disabling IRQ line".
> It appears only once in the start.
> Never-the-less, the interrupts are still handled and keep coming.

Well, probably because the code re-enables the irq line ?

-- 
                                            Gilles.
_______________________________________________
Xenomai mailing list
[email protected]
http://www.xenomai.org/mailman/listinfo/xenomai

Reply via email to