>> One question, as I review this code myself -- I put a spinlock to >> protect the enable/disable of the clocks, but I'm not sure that has >> turned out to be necessary. The register in question is never touched >> inside the IRQ handler, so I think it is unnecessary. If someone can >> confirm that it's safe to remove that spinlock, I'll clean that bit out. >> > > I agree, the ISR doesn't touch the register... but it schedules > pio_tasklet, which does. Can pio_tasklet be scheduled ahead of the > interrupted task in this case?
According to Rusty's Locking Guide, you should use spin_lock_bh() to protect against being run over by a tasklet. I think this applies in your case. /Jonas
