Skip to content

Commit

Permalink
Merge tag 'devicetree-for-linus' of git://git.secretlab.ca/git/linux
Browse files Browse the repository at this point in the history
Pull device tree bug fixes from Grant Likely:
 "This branch contains the following bug fixes:
   - Fix locking vs. interrupts. Bug caught by lockdep checks
   - Fix parsing of cpp #line directive output by dtc
   - Fix 'make clean' for dtc temporary files.

  There is also a commit that regenerates the dtc lexer and parser files
  with Bison 2.5.  The only purpose of this commit is to separate the
  functional change in the dtc bug fix from the code generation change
  caused by a different Bison version"

* tag 'devicetree-for-linus' of git://git.secretlab.ca/git/linux:
  dtc: ensure #line directives don't consume data from the next line
  dtc: Update generated files to output from Bison 2.5
  of: Fix locking vs. interrupts
  kbuild: make sure we clean up DTB temporary files
  • Loading branch information
Linus Torvalds committed Jun 13, 2013
2 parents 25e33ed + 706b78f commit 33c929c
Show file tree
Hide file tree
Showing 7 changed files with 521 additions and 470 deletions.
5 changes: 3 additions & 2 deletions arch/sparc/kernel/prom_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ EXPORT_SYMBOL(of_set_property_mutex);
int of_set_property(struct device_node *dp, const char *name, void *val, int len)
{
struct property **prevp;
unsigned long flags;
void *new_val;
int err;

Expand All @@ -64,7 +65,7 @@ int of_set_property(struct device_node *dp, const char *name, void *val, int len
err = -ENODEV;

mutex_lock(&of_set_property_mutex);
raw_spin_lock(&devtree_lock);
raw_spin_lock_irqsave(&devtree_lock, flags);
prevp = &dp->properties;
while (*prevp) {
struct property *prop = *prevp;
Expand All @@ -91,7 +92,7 @@ int of_set_property(struct device_node *dp, const char *name, void *val, int len
}
prevp = &(*prevp)->next;
}
raw_spin_unlock(&devtree_lock);
raw_spin_unlock_irqrestore(&devtree_lock, flags);
mutex_unlock(&of_set_property_mutex);

/* XXX Upate procfs if necessary... */
Expand Down
15 changes: 9 additions & 6 deletions drivers/of/base.c
Original file line number Diff line number Diff line change
Expand Up @@ -192,14 +192,15 @@ EXPORT_SYMBOL(of_find_property);
struct device_node *of_find_all_nodes(struct device_node *prev)
{
struct device_node *np;
unsigned long flags;

raw_spin_lock(&devtree_lock);
raw_spin_lock_irqsave(&devtree_lock, flags);
np = prev ? prev->allnext : of_allnodes;
for (; np != NULL; np = np->allnext)
if (of_node_get(np))
break;
of_node_put(prev);
raw_spin_unlock(&devtree_lock);
raw_spin_unlock_irqrestore(&devtree_lock, flags);
return np;
}
EXPORT_SYMBOL(of_find_all_nodes);
Expand Down Expand Up @@ -421,8 +422,9 @@ struct device_node *of_get_next_available_child(const struct device_node *node,
struct device_node *prev)
{
struct device_node *next;
unsigned long flags;

raw_spin_lock(&devtree_lock);
raw_spin_lock_irqsave(&devtree_lock, flags);
next = prev ? prev->sibling : node->child;
for (; next; next = next->sibling) {
if (!__of_device_is_available(next))
Expand All @@ -431,7 +433,7 @@ struct device_node *of_get_next_available_child(const struct device_node *node,
break;
}
of_node_put(prev);
raw_spin_unlock(&devtree_lock);
raw_spin_unlock_irqrestore(&devtree_lock, flags);
return next;
}
EXPORT_SYMBOL(of_get_next_available_child);
Expand Down Expand Up @@ -735,13 +737,14 @@ EXPORT_SYMBOL_GPL(of_modalias_node);
struct device_node *of_find_node_by_phandle(phandle handle)
{
struct device_node *np;
unsigned long flags;

raw_spin_lock(&devtree_lock);
raw_spin_lock_irqsave(&devtree_lock, flags);
for (np = of_allnodes; np; np = np->allnext)
if (np->phandle == handle)
break;
of_node_get(np);
raw_spin_unlock(&devtree_lock);
raw_spin_unlock_irqrestore(&devtree_lock, flags);
return np;
}
EXPORT_SYMBOL(of_find_node_by_phandle);
Expand Down
8 changes: 4 additions & 4 deletions scripts/Makefile.lib
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ cpp_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(LINUXINCLUDE) \

ld_flags = $(LDFLAGS) $(ldflags-y)

dtc_cpp_flags = -Wp,-MD,$(depfile).pre -nostdinc \
dtc_cpp_flags = -Wp,-MD,$(depfile).pre.tmp -nostdinc \
-I$(srctree)/arch/$(SRCARCH)/boot/dts \
-I$(srctree)/arch/$(SRCARCH)/boot/dts/include \
-undef -D__DTS__
Expand Down Expand Up @@ -265,13 +265,13 @@ quiet_cmd_dtc = DTC $@
cmd_dtc = $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
$(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 \
-i $(dir $<) $(DTC_FLAGS) \
-d $(depfile).dtc $(dtc-tmp) ; \
cat $(depfile).pre $(depfile).dtc > $(depfile)
-d $(depfile).dtc.tmp $(dtc-tmp) ; \
cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile)

$(obj)/%.dtb: $(src)/%.dts FORCE
$(call if_changed_dep,dtc)

dtc-tmp = $(subst $(comma),_,$(dot-target).dts)
dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp)

# Bzip2
# ---------------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion scripts/dtc/dtc-lexer.l
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ static int pop_input_file(void);
push_input_file(name);
}

<*>^"#"(line)?{WS}+[0-9]+{WS}+{STRING}({WS}+[0-9]+)? {
<*>^"#"(line)?[ \t]+[0-9]+[ \t]+{STRING}([ \t]+[0-9]+)? {
char *line, *tmp, *fn;
/* skip text before line # */
line = yytext;
Expand Down
232 changes: 116 additions & 116 deletions scripts/dtc/dtc-lexer.lex.c_shipped
Original file line number Diff line number Diff line change
Expand Up @@ -405,19 +405,19 @@ static yyconst flex_int16_t yy_accept[161] =
static yyconst flex_int32_t yy_ec[256] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
4, 4, 4, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 2, 4, 5, 6, 1, 1, 7, 8, 1,
1, 9, 10, 10, 11, 10, 12, 13, 14, 15,
15, 15, 15, 15, 15, 15, 15, 16, 1, 17,
18, 19, 10, 10, 20, 20, 20, 20, 20, 20,
21, 21, 21, 21, 21, 22, 21, 21, 21, 21,
21, 21, 21, 21, 23, 21, 21, 24, 21, 21,
1, 25, 26, 1, 21, 1, 20, 27, 28, 29,

30, 20, 21, 21, 31, 21, 21, 32, 33, 34,
35, 36, 21, 37, 38, 39, 40, 41, 21, 24,
42, 21, 43, 44, 45, 1, 1, 1, 1, 1,
1, 2, 5, 6, 7, 1, 1, 8, 9, 1,
1, 10, 11, 11, 12, 11, 13, 14, 15, 16,
16, 16, 16, 16, 16, 16, 16, 17, 1, 18,
19, 20, 11, 11, 21, 21, 21, 21, 21, 21,
22, 22, 22, 22, 22, 23, 22, 22, 22, 22,
22, 22, 22, 22, 24, 22, 22, 25, 22, 22,
1, 26, 27, 1, 22, 1, 21, 28, 29, 30,

31, 21, 22, 22, 32, 22, 22, 33, 34, 35,
36, 37, 22, 38, 39, 40, 41, 42, 22, 25,
43, 22, 44, 45, 46, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
Expand All @@ -434,36 +434,36 @@ static yyconst flex_int32_t yy_ec[256] =
1, 1, 1, 1, 1
} ;

static yyconst flex_int32_t yy_meta[46] =
static yyconst flex_int32_t yy_meta[47] =
{ 0,
1, 1, 1, 1, 1, 2, 3, 1, 2, 2,
2, 4, 5, 5, 5, 6, 1, 1, 1, 7,
8, 8, 8, 8, 1, 1, 7, 7, 7, 7,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 3, 1, 1
1, 1, 1, 1, 1, 1, 2, 3, 1, 2,
2, 2, 4, 5, 5, 5, 6, 1, 1, 1,
7, 8, 8, 8, 8, 1, 1, 7, 7, 7,
7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 3, 1, 1
} ;

static yyconst flex_int16_t yy_base[175] =
{ 0,
0, 388, 381, 40, 41, 386, 71, 385, 34, 44,
390, 395, 60, 62, 371, 112, 111, 111, 111, 104,
370, 106, 371, 342, 124, 119, 0, 144, 395, 0,
123, 0, 159, 153, 165, 167, 395, 130, 395, 382,
395, 0, 372, 122, 395, 157, 374, 379, 350, 21,
346, 349, 395, 395, 395, 395, 395, 362, 395, 395,
181, 346, 342, 395, 359, 0, 191, 343, 190, 351,
350, 0, 0, 0, 173, 362, 177, 367, 357, 329,
335, 328, 337, 331, 206, 329, 334, 327, 395, 338,
170, 314, 346, 345, 318, 325, 343, 158, 316, 212,

322, 319, 320, 395, 340, 336, 308, 305, 314, 304,
295, 138, 208, 220, 395, 292, 305, 265, 264, 254,
201, 222, 285, 275, 273, 270, 236, 235, 225, 115,
395, 395, 252, 216, 216, 217, 214, 230, 209, 220,
213, 239, 211, 217, 216, 209, 229, 395, 240, 225,
206, 169, 395, 395, 116, 106, 99, 54, 395, 395,
254, 260, 268, 272, 276, 282, 289, 293, 301, 309,
313, 319, 327, 335
0, 385, 378, 40, 41, 383, 72, 382, 34, 44,
388, 393, 61, 117, 368, 116, 115, 115, 115, 48,
367, 107, 368, 339, 127, 120, 0, 147, 393, 0,
127, 0, 133, 156, 168, 153, 393, 125, 393, 380,
393, 0, 369, 127, 393, 160, 371, 377, 347, 21,
343, 346, 393, 393, 393, 393, 393, 359, 393, 393,
183, 343, 339, 393, 356, 0, 183, 340, 187, 348,
347, 0, 0, 0, 178, 359, 195, 365, 354, 326,
332, 325, 334, 328, 204, 326, 331, 324, 393, 335,
150, 311, 343, 342, 315, 322, 340, 179, 313, 207,

319, 316, 317, 393, 337, 333, 305, 302, 311, 301,
310, 190, 338, 337, 393, 307, 322, 301, 305, 277,
208, 311, 307, 278, 271, 270, 248, 246, 213, 130,
393, 393, 263, 235, 207, 221, 218, 229, 213, 213,
206, 234, 218, 210, 208, 193, 219, 393, 223, 204,
176, 157, 393, 393, 120, 106, 97, 119, 393, 393,
245, 251, 259, 263, 267, 273, 280, 284, 292, 300,
304, 310, 318, 326
} ;

static yyconst flex_int16_t yy_def[175] =
Expand All @@ -489,108 +489,108 @@ static yyconst flex_int16_t yy_def[175] =
160, 160, 160, 160
} ;

static yyconst flex_int16_t yy_nxt[441] =
static yyconst flex_int16_t yy_nxt[440] =
{ 0,
12, 13, 14, 15, 16, 12, 17, 18, 12, 12,
12, 19, 12, 12, 12, 12, 20, 21, 22, 23,
23, 23, 23, 23, 12, 12, 23, 23, 23, 23,
12, 13, 14, 13, 15, 16, 12, 17, 18, 12,
12, 12, 19, 12, 12, 12, 12, 20, 21, 22,
23, 23, 23, 23, 23, 12, 12, 23, 23, 23,
23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
23, 23, 12, 24, 12, 25, 34, 35, 35, 25,
81, 26, 26, 27, 27, 27, 34, 35, 35, 82,
28, 36, 36, 36, 36, 159, 29, 28, 28, 28,
28, 12, 13, 14, 15, 16, 30, 17, 18, 30,
30, 30, 26, 30, 30, 30, 12, 20, 21, 22,
31, 31, 31, 31, 31, 32, 12, 31, 31, 31,
23, 23, 23, 12, 24, 12, 25, 34, 35, 35,
25, 81, 26, 26, 27, 27, 27, 34, 35, 35,
82, 28, 36, 36, 36, 53, 54, 29, 28, 28,
28, 28, 12, 13, 14, 13, 15, 16, 30, 17,
18, 30, 30, 30, 26, 30, 30, 30, 12, 20,
21, 22, 31, 31, 31, 31, 31, 32, 12, 31,

31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
31, 31, 31, 12, 24, 12, 39, 41, 45, 47,
53, 54, 48, 56, 57, 61, 61, 47, 66, 45,
48, 66, 66, 66, 39, 46, 40, 49, 59, 50,
158, 51, 122, 52, 157, 49, 46, 50, 136, 63,
137, 52, 156, 43, 40, 62, 65, 65, 65, 59,
61, 61, 123, 65, 75, 69, 69, 69, 36, 36,
65, 65, 65, 65, 70, 71, 72, 69, 69, 69,
45, 46, 61, 61, 109, 77, 70, 71, 93, 110,
68, 70, 71, 85, 85, 85, 66, 46, 155, 66,

66, 66, 69, 69, 69, 122, 59, 100, 100, 61,
61, 70, 71, 100, 100, 148, 112, 154, 85, 85,
85, 61, 61, 129, 129, 123, 129, 129, 135, 135,
135, 142, 142, 148, 143, 149, 153, 135, 135, 135,
142, 142, 160, 143, 152, 151, 150, 146, 145, 144,
141, 140, 139, 149, 38, 38, 38, 38, 38, 38,
38, 38, 42, 138, 134, 133, 42, 42, 44, 44,
44, 44, 44, 44, 44, 44, 58, 58, 58, 58,
64, 132, 64, 66, 131, 130, 66, 160, 66, 66,
67, 128, 127, 67, 67, 67, 67, 73, 126, 73,

73, 76, 76, 76, 76, 76, 76, 76, 76, 78,
78, 78, 78, 78, 78, 78, 78, 91, 125, 91,
92, 124, 92, 92, 120, 92, 92, 121, 121, 121,
121, 121, 121, 121, 121, 147, 147, 147, 147, 147,
147, 147, 147, 119, 118, 117, 116, 115, 47, 114,
110, 113, 111, 108, 107, 106, 48, 105, 104, 89,
103, 102, 101, 99, 98, 97, 96, 95, 94, 79,
77, 90, 89, 88, 59, 87, 86, 59, 84, 83,
80, 79, 77, 74, 160, 60, 59, 55, 37, 160,
33, 25, 26, 25, 11, 160, 160, 160, 160, 160,
31, 31, 31, 31, 31, 12, 24, 12, 36, 36,
36, 39, 41, 45, 47, 56, 57, 48, 61, 47,
39, 159, 48, 66, 61, 45, 66, 66, 66, 158,
46, 40, 49, 59, 50, 157, 51, 49, 52, 50,
40, 63, 46, 52, 36, 36, 36, 156, 43, 62,
65, 65, 65, 59, 136, 68, 137, 65, 75, 69,
69, 69, 70, 71, 65, 65, 65, 65, 70, 71,
72, 69, 69, 69, 61, 46, 45, 155, 154, 66,
70, 71, 66, 66, 66, 122, 85, 85, 85, 59,

69, 69, 69, 46, 77, 100, 109, 93, 100, 70,
71, 110, 112, 122, 129, 123, 153, 85, 85, 85,
135, 135, 135, 148, 148, 160, 135, 135, 135, 152,
142, 142, 142, 123, 143, 142, 142, 142, 151, 143,
150, 146, 145, 149, 149, 38, 38, 38, 38, 38,
38, 38, 38, 42, 144, 141, 140, 42, 42, 44,
44, 44, 44, 44, 44, 44, 44, 58, 58, 58,
58, 64, 139, 64, 66, 138, 134, 66, 133, 66,
66, 67, 132, 131, 67, 67, 67, 67, 73, 130,
73, 73, 76, 76, 76, 76, 76, 76, 76, 76,

78, 78, 78, 78, 78, 78, 78, 78, 91, 160,
91, 92, 129, 92, 92, 128, 92, 92, 121, 121,
121, 121, 121, 121, 121, 121, 147, 147, 147, 147,
147, 147, 147, 147, 127, 126, 125, 124, 61, 61,
120, 119, 118, 117, 116, 115, 47, 114, 110, 113,
111, 108, 107, 106, 48, 105, 104, 89, 103, 102,
101, 99, 98, 97, 96, 95, 94, 79, 77, 90,
89, 88, 59, 87, 86, 59, 84, 83, 80, 79,
77, 74, 160, 60, 59, 55, 37, 160, 33, 25,
26, 25, 11, 160, 160, 160, 160, 160, 160, 160,

160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
160, 160, 160, 160, 160, 160, 160, 160, 160, 160
160, 160, 160, 160, 160, 160, 160, 160, 160
} ;

static yyconst flex_int16_t yy_chk[441] =
static yyconst flex_int16_t yy_chk[440] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 4, 9, 9, 9, 10,
50, 4, 5, 5, 5, 5, 10, 10, 10, 50,
5, 13, 13, 14, 14, 158, 5, 5, 5, 5,
5, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1, 1, 1, 1, 1, 1, 4, 9, 9, 9,
10, 50, 4, 5, 5, 5, 5, 10, 10, 10,
50, 5, 13, 13, 13, 20, 20, 5, 5, 5,
5, 5, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,

7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 16, 17, 18, 19,
20, 20, 19, 22, 22, 25, 25, 26, 31, 44,
26, 31, 31, 31, 38, 18, 16, 19, 31, 19,
157, 19, 112, 19, 156, 26, 44, 26, 130, 26,
130, 26, 155, 17, 38, 25, 28, 28, 28, 28,
33, 33, 112, 28, 46, 34, 34, 34, 36, 36,
28, 28, 28, 28, 34, 34, 34, 35, 35, 35,
75, 46, 61, 61, 98, 77, 35, 35, 77, 98,
33, 91, 91, 61, 61, 61, 67, 75, 152, 67,

67, 67, 69, 69, 69, 121, 67, 85, 85, 113,
113, 69, 69, 100, 100, 143, 100, 151, 85, 85,
85, 114, 114, 122, 122, 121, 129, 129, 135, 135,
135, 138, 138, 147, 138, 143, 150, 129, 129, 129,
142, 142, 149, 142, 146, 145, 144, 141, 140, 139,
137, 136, 134, 147, 161, 161, 161, 161, 161, 161,
161, 161, 162, 133, 128, 127, 162, 162, 163, 163,
163, 163, 163, 163, 163, 163, 164, 164, 164, 164,
165, 126, 165, 166, 125, 124, 166, 123, 166, 166,
167, 120, 119, 167, 167, 167, 167, 168, 118, 168,

168, 169, 169, 169, 169, 169, 169, 169, 169, 170,
170, 170, 170, 170, 170, 170, 170, 171, 117, 171,
172, 116, 172, 172, 111, 172, 172, 173, 173, 173,
173, 173, 173, 173, 173, 174, 174, 174, 174, 174,
174, 174, 174, 110, 109, 108, 107, 106, 105, 103,
102, 101, 99, 97, 96, 95, 94, 93, 92, 90,
88, 87, 86, 84, 83, 82, 81, 80, 79, 78,
76, 71, 70, 68, 65, 63, 62, 58, 52, 51,
49, 48, 47, 43, 40, 24, 23, 21, 15, 11,
8, 6, 3, 2, 160, 160, 160, 160, 160, 160,
7, 7, 7, 7, 7, 7, 7, 7, 14, 14,
14, 16, 17, 18, 19, 22, 22, 19, 25, 26,
38, 158, 26, 31, 33, 44, 31, 31, 31, 157,
18, 16, 19, 31, 19, 156, 19, 26, 19, 26,
38, 26, 44, 26, 36, 36, 36, 155, 17, 25,
28, 28, 28, 28, 130, 33, 130, 28, 46, 34,
34, 34, 91, 91, 28, 28, 28, 28, 34, 34,
34, 35, 35, 35, 61, 46, 75, 152, 151, 67,
35, 35, 67, 67, 67, 112, 61, 61, 61, 67,

69, 69, 69, 75, 77, 85, 98, 77, 100, 69,
69, 98, 100, 121, 129, 112, 150, 85, 85, 85,
135, 135, 135, 143, 147, 149, 129, 129, 129, 146,
138, 138, 138, 121, 138, 142, 142, 142, 145, 142,
144, 141, 140, 143, 147, 161, 161, 161, 161, 161,
161, 161, 161, 162, 139, 137, 136, 162, 162, 163,
163, 163, 163, 163, 163, 163, 163, 164, 164, 164,
164, 165, 134, 165, 166, 133, 128, 166, 127, 166,
166, 167, 126, 125, 167, 167, 167, 167, 168, 124,
168, 168, 169, 169, 169, 169, 169, 169, 169, 169,

170, 170, 170, 170, 170, 170, 170, 170, 171, 123,
171, 172, 122, 172, 172, 120, 172, 172, 173, 173,
173, 173, 173, 173, 173, 173, 174, 174, 174, 174,
174, 174, 174, 174, 119, 118, 117, 116, 114, 113,
111, 110, 109, 108, 107, 106, 105, 103, 102, 101,
99, 97, 96, 95, 94, 93, 92, 90, 88, 87,
86, 84, 83, 82, 81, 80, 79, 78, 76, 71,
70, 68, 65, 63, 62, 58, 52, 51, 49, 48,
47, 43, 40, 24, 23, 21, 15, 11, 8, 6,
3, 2, 160, 160, 160, 160, 160, 160, 160, 160,

160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
160, 160, 160, 160, 160, 160, 160, 160, 160, 160
160, 160, 160, 160, 160, 160, 160, 160, 160
} ;

static yy_state_type yy_last_accepting_state;
Expand Down
Loading

0 comments on commit 33c929c

Please sign in to comment.