Thread (10 messages) 10 messages, 5 authors, 2013-02-11

Re: [PATCH next v2] OF: convert devtree lock from rw_lock to raw spinlock

From: Stephen Warren <hidden>
Date: 2013-02-11 19:29:16
Also in: linux-devicetree, linux-next, lkml, sparclinux

On 02/08/2013 04:09 PM, Rob Herring wrote:
On 02/06/2013 02:30 PM, Paul Gortmaker wrote:
quoted
From: Thomas Gleixner <redacted>

With the locking cleanup in place (from "OF: Fixup resursive
locking code paths"), we can now do the conversion from the
rw_lock to a raw spinlock as required for preempt-rt.

The previous cleanup and this conversion were originally
separate since they predated when mainline got raw spinlock (in
commit c2f21ce2e31286a "locking: Implement new raw_spinlock").

So, at that point in time, the cleanup was considered plausible
for mainline, but not this conversion.  In any case, we've kept
them separate as it makes for easier review and better bisection.

Signed-off-by: Thomas Gleixner <redacted>
[PG: taken from preempt-rt, update subject & add a commit log]
Signed-off-by: Paul Gortmaker <redacted>
---

[v2: recent commit e81b329 ("powerpc+of: Add /proc device tree
 updating to of node add/remove") added two more instances of
 write_unlock that also needed converting to raw_spin_unlock.
 Retested (boot) on sbc8548, defconfig builds on arm/sparc; no
 new warnings observed.]

 arch/sparc/kernel/prom_common.c |   4 +-
 drivers/of/base.c               | 100 ++++++++++++++++++++++------------------
 include/linux/of.h              |   2 +-
 3 files changed, 59 insertions(+), 47 deletions(-)
Applied.
This commit is present in next-20130211, and causes a boot failure
(hang) early while booting on Tegra. Reverting just this one commit
solves the issue.

I'll see if I can track down where the issue is. Given the commit
description, I assume there's some new recursive lock issue that snuck
in between the previous fix for them and this commit? Any hints welcome.

One thing I wonder looking at the patch: Most paths use
raw_spin_lock_irqsave() but a few use just raw_spin_lock(). I wonder how
that decision was made?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help