Re: [PATCH] kernel/timer.c: using spin_lock_irqsave instead of spin_lock+ local_irq_save, especially when CONFIG_LOCKDEP not defined

From: Chen Gang
Date: Wed Jun 19 2013 - 06:08:37 EST


On 06/19/2013 05:59 PM, Thomas Gleixner wrote:
> Lockdep tracks lock ordering and the context in which a lock is
> taken. The timer base lock can be taken in interrupt context, so it
> always needs to be taken with interrupts disabled. That's what lockdep
> cares about.
>
> And
> spin_lock_irqsave(&l1, flags);
> spin_unlock(&l1);
> spin_lock(&l2);
> spin_unlock_irqrestore(&l2, flags);
>
> fulfils that for both l1 and l2.
>
> It does not matter whether the code pathes are different, what matters
> is that they are semantically the same. And that's the case.

But I feel, they are not semantically the same.

if CONFIG_LOCKDEP is not defined, spin_lock_irqsave() should call
do_raw_spin_lock_flags(), not call LOCK_CONTENDED().



Thanks.
--
Chen Gang

Asianux Corporation
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/