Re: [PATCH 1/8] sta2x11-mfd : add apb-soc regs driver and factorout common code

From: Alan Cox
Date: Thu Sep 27 2012 - 10:08:21 EST


> as far as I know, nested locks are fine provided that you always take them in
> the same order and release them in the opposite order (lock A, lock B,
> unlock B, unlock A). So my conclusion is that nested spinlocks require
> potential regmap users of sta2x11 registers to take the sta2x11-mfd spinlock
> first. The pattern would be (sctl registers for instance):

The release order does not matter. Taking AB and releasing AB or BA is
fine. Taking AB and dropping B and retaking B is fine. Taking AB and
somewhere else taking BA is not. There are performance reasons in some
cases why taking AB releasing A is best with locks, but thats generally
with sleepable locks.

It's a bit more subtle because you often have other interactions. In
particular people often come unstuck on del_timer_sync or waiting for
workqueues and IRQs to finish (even in free_irq) while holding a lock
that the handler needs to take.

Alan
--
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/