All of lore.kernel.org
 help / color / mirror / Atom feed
* spin_lock_irqsave and ISP interrupts on OMAP 3530
@ 2011-02-03 16:31 Adam Wozniak
  2011-02-10 17:15 ` Adam Wozniak
  0 siblings, 1 reply; 2+ messages in thread
From: Adam Wozniak @ 2011-02-03 16:31 UTC (permalink / raw)
  To: linux-omap

I'm hoping I'm just not understanding something and this isn't as broke 
as I fear it is.

I'm using the ISP on an OMAP3530, linux 2.6.32.  I've got some kernel 
code I want to lock in both the process context and the ISP interrupt 
context, so I'm using a spinlock.  As I understand it, locking the 
spinlock should disable all interrupts.  However, I'm still seeing the 
ISP interrupt happen when I've got the spinlock locked in the process 
context.

i.e. somewhere I've got the code below, and my Warning is tripping.  Is 
this broken, or am I not understanding something?

int am_i_locked = 0;
spinlock_t my_spinlock = SPIN_LOCK_UNLOCKED;

void foo(void) {
     /* function could be called from process context, or could be 
called from omap34xx_isp_isr (interrupt context) */
     unsigned long flags;
     spin_lock_irqsave(&my_spinlock, flags);
     WARN_ON(am_i_locked);
     am_i_locked++;

     /* do some stuff */

     am_i_locked--;
     spin_unlock_irqrestore(&my_spinlock, flags);
}

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: spin_lock_irqsave and ISP interrupts on OMAP 3530
  2011-02-03 16:31 spin_lock_irqsave and ISP interrupts on OMAP 3530 Adam Wozniak
@ 2011-02-10 17:15 ` Adam Wozniak
  0 siblings, 0 replies; 2+ messages in thread
From: Adam Wozniak @ 2011-02-10 17:15 UTC (permalink / raw)
  To: linux-omap

No one can confirm this?

On 02/03/2011 08:31 AM, Adam Wozniak wrote:
> I'm hoping I'm just not understanding something and this isn't as 
> broke as I fear it is.
>
> I'm using the ISP on an OMAP3530, linux 2.6.32.  I've got some kernel 
> code I want to lock in both the process context and the ISP interrupt 
> context, so I'm using a spinlock.  As I understand it, locking the 
> spinlock should disable all interrupts.  However, I'm still seeing the 
> ISP interrupt happen when I've got the spinlock locked in the process 
> context.
>
> i.e. somewhere I've got the code below, and my Warning is tripping.  
> Is this broken, or am I not understanding something?
>
> int am_i_locked = 0;
> spinlock_t my_spinlock = SPIN_LOCK_UNLOCKED;
>
> void foo(void) {
>     /* function could be called from process context, or could be 
> called from omap34xx_isp_isr (interrupt context) */
>     unsigned long flags;
>     spin_lock_irqsave(&my_spinlock, flags);
>     WARN_ON(am_i_locked);
>     am_i_locked++;
>
>     /* do some stuff */
>
>     am_i_locked--;
>     spin_unlock_irqrestore(&my_spinlock, flags);
> }
> -- 
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-02-10 17:16 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-03 16:31 spin_lock_irqsave and ISP interrupts on OMAP 3530 Adam Wozniak
2011-02-10 17:15 ` Adam Wozniak

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.