local_irq_save not masking interrupts
Alex Zeffertt
ajz at cambridgebroadband.com
Tue Sep 26 20:00:01 EST 2006
Hi list,
I'm having a strange problem with interrupts. My platform is the
MPC832xEMDS and the BSP I'm using (from Freescale) uses Linux-2.6.11.
In the code below I enter a critical section with local_irq_save(),
call request_irq() (from mpc832xemds_phy_interrupt_enable) 4 times,
then exit the critical section using local_irq_restore.
/* Enable interrupts from PHYs */
local_irq_save(flags);
for (i = 0; i < driver_data->num_phys; i++) {
struct atm_dev *dev = driver_data->dev_data[i]->dev;
printk("%s/%d\n",__FUNCTION__,__LINE__);
RETURN_ON_ERROR(mpc832xemds_phy_interrupt_enable(dev));
}
local_irq_restore(flags);
The problem is that I get an interrupt *before* exiting the critical
section. This causes a problem for me, because the interrupts are
shared and the correct handler has not yet been registered, so the
interrupt never gets deasserted.
My question is: why is local_irq_save()/local_irq_restore() not
working?
TIA,
Alex
More information about the Linuxppc-embedded
mailing list