diff options
68 files changed, 950 insertions, 293 deletions
diff --git a/Documentation/ABI/testing/sysfs-kernel-slab b/Documentation/ABI/testing/sysfs-kernel-slab new file mode 100644 index 00000000000..6dcf75e594f --- /dev/null +++ b/Documentation/ABI/testing/sysfs-kernel-slab | |||
@@ -0,0 +1,479 @@ | |||
1 | What: /sys/kernel/slab | ||
2 | Date: May 2007 | ||
3 | KernelVersion: 2.6.22 | ||
4 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
5 | Christoph Lameter <cl@linux-foundation.org> | ||
6 | Description: | ||
7 | The /sys/kernel/slab directory contains a snapshot of the | ||
8 | internal state of the SLUB allocator for each cache. Certain | ||
9 | files may be modified to change the behavior of the cache (and | ||
10 | any cache it aliases, if any). | ||
11 | Users: kernel memory tuning tools | ||
12 | |||
13 | What: /sys/kernel/slab/cache/aliases | ||
14 | Date: May 2007 | ||
15 | KernelVersion: 2.6.22 | ||
16 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
17 | Christoph Lameter <cl@linux-foundation.org> | ||
18 | Description: | ||
19 | The aliases file is read-only and specifies how many caches | ||
20 | have merged into this cache. | ||
21 | |||
22 | What: /sys/kernel/slab/cache/align | ||
23 | Date: May 2007 | ||
24 | KernelVersion: 2.6.22 | ||
25 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
26 | Christoph Lameter <cl@linux-foundation.org> | ||
27 | Description: | ||
28 | The align file is read-only and specifies the cache's object | ||
29 | alignment in bytes. | ||
30 | |||
31 | What: /sys/kernel/slab/cache/alloc_calls | ||
32 | Date: May 2007 | ||
33 | KernelVersion: 2.6.22 | ||
34 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
35 | Christoph Lameter <cl@linux-foundation.org> | ||
36 | Description: | ||
37 | The alloc_calls file is read-only and lists the kernel code | ||
38 | locations from which allocations for this cache were performed. | ||
39 | The alloc_calls file only contains information if debugging is | ||
40 | enabled for that cache (see Documentation/vm/slub.txt). | ||
41 | |||
42 | What: /sys/kernel/slab/cache/alloc_fastpath | ||
43 | Date: February 2008 | ||
44 | KernelVersion: 2.6.25 | ||
45 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
46 | Christoph Lameter <cl@linux-foundation.org> | ||
47 | Description: | ||
48 | The alloc_fastpath file is read-only and specifies how many | ||
49 | objects have been allocated using the fast path. | ||
50 | Available when CONFIG_SLUB_STATS is enabled. | ||
51 | |||
52 | What: /sys/kernel/slab/cache/alloc_from_partial | ||
53 | Date: February 2008 | ||
54 | KernelVersion: 2.6.25 | ||
55 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
56 | Christoph Lameter <cl@linux-foundation.org> | ||
57 | Description: | ||
58 | The alloc_from_partial file is read-only and specifies how | ||
59 | many times a cpu slab has been full and it has been refilled | ||
60 | by using a slab from the list of partially used slabs. | ||
61 | Available when CONFIG_SLUB_STATS is enabled. | ||
62 | |||
63 | What: /sys/kernel/slab/cache/alloc_refill | ||
64 | Date: February 2008 | ||
65 | KernelVersion: 2.6.25 | ||
66 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
67 | Christoph Lameter <cl@linux-foundation.org> | ||
68 | Description: | ||
69 | The alloc_refill file is read-only and specifies how many | ||
70 | times the per-cpu freelist was empty but there were objects | ||
71 | available as the result of remote cpu frees. | ||
72 | Available when CONFIG_SLUB_STATS is enabled. | ||
73 | |||
74 | What: /sys/kernel/slab/cache/alloc_slab | ||
75 | Date: February 2008 | ||
76 | KernelVersion: 2.6.25 | ||
77 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
78 | Christoph Lameter <cl@linux-foundation.org> | ||
79 | Description: | ||
80 | The alloc_slab file is read-only and specifies how many times | ||
81 | a new slab had to be allocated from the page allocator. | ||
82 | Available when CONFIG_SLUB_STATS is enabled. | ||
83 | |||
84 | What: /sys/kernel/slab/cache/alloc_slowpath | ||
85 | Date: February 2008 | ||
86 | KernelVersion: 2.6.25 | ||
87 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
88 | Christoph Lameter <cl@linux-foundation.org> | ||
89 | Description: | ||
90 | The alloc_slowpath file is read-only and specifies how many | ||
91 | objects have been allocated using the slow path because of a | ||
92 | refill or allocation from a partial or new slab. | ||
93 | Available when CONFIG_SLUB_STATS is enabled. | ||
94 | |||
95 | What: /sys/kernel/slab/cache/cache_dma | ||
96 | Date: May 2007 | ||
97 | KernelVersion: 2.6.22 | ||
98 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
99 | Christoph Lameter <cl@linux-foundation.org> | ||
100 | Description: | ||
101 | The cache_dma file is read-only and specifies whether objects | ||
102 | are from ZONE_DMA. | ||
103 | Available when CONFIG_ZONE_DMA is enabled. | ||
104 | |||
105 | What: /sys/kernel/slab/cache/cpu_slabs | ||
106 | Date: May 2007 | ||
107 | KernelVersion: 2.6.22 | ||
108 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
109 | Christoph Lameter <cl@linux-foundation.org> | ||
110 | Description: | ||
111 | The cpu_slabs file is read-only and displays how many cpu slabs | ||
112 | are active and their NUMA locality. | ||
113 | |||
114 | What: /sys/kernel/slab/cache/cpuslab_flush | ||
115 | Date: April 2009 | ||
116 | KernelVersion: 2.6.31 | ||
117 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
118 | Christoph Lameter <cl@linux-foundation.org> | ||
119 | Description: | ||
120 | The file cpuslab_flush is read-only and specifies how many | ||
121 | times a cache's cpu slabs have been flushed as the result of | ||
122 | destroying or shrinking a cache, a cpu going offline, or as | ||
123 | the result of forcing an allocation from a certain node. | ||
124 | Available when CONFIG_SLUB_STATS is enabled. | ||
125 | |||
126 | What: /sys/kernel/slab/cache/ctor | ||
127 | Date: May 2007 | ||
128 | KernelVersion: 2.6.22 | ||
129 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
130 | Christoph Lameter <cl@linux-foundation.org> | ||
131 | Description: | ||
132 | The ctor file is read-only and specifies the cache's object | ||
133 | constructor function, which is invoked for each object when a | ||
134 | new slab is allocated. | ||
135 | |||
136 | What: /sys/kernel/slab/cache/deactivate_empty | ||
137 | Date: February 2008 | ||
138 | KernelVersion: 2.6.25 | ||
139 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
140 | Christoph Lameter <cl@linux-foundation.org> | ||
141 | Description: | ||
142 | The file deactivate_empty is read-only and specifies how many | ||
143 | times an empty cpu slab was deactivated. | ||
144 | Available when CONFIG_SLUB_STATS is enabled. | ||
145 | |||
146 | What: /sys/kernel/slab/cache/deactivate_full | ||
147 | Date: February 2008 | ||
148 | KernelVersion: 2.6.25 | ||
149 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
150 | Christoph Lameter <cl@linux-foundation.org> | ||
151 | Description: | ||
152 | The file deactivate_full is read-only and specifies how many | ||
153 | times a full cpu slab was deactivated. | ||
154 | Available when CONFIG_SLUB_STATS is enabled. | ||
155 | |||
156 | What: /sys/kernel/slab/cache/deactivate_remote_frees | ||
157 | Date: February 2008 | ||
158 | KernelVersion: 2.6.25 | ||
159 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
160 | Christoph Lameter <cl@linux-foundation.org> | ||
161 | Description: | ||
162 | The file deactivate_remote_frees is read-only and specifies how | ||
163 | many times a cpu slab has been deactivated and contained free | ||
164 | objects that were freed remotely. | ||
165 | Available when CONFIG_SLUB_STATS is enabled. | ||
166 | |||
167 | What: /sys/kernel/slab/cache/deactivate_to_head | ||
168 | Date: February 2008 | ||
169 | KernelVersion: 2.6.25 | ||
170 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
171 | Christoph Lameter <cl@linux-foundation.org> | ||
172 | Description: | ||
173 | The file deactivate_to_head is read-only and specifies how | ||
174 | many times a partial cpu slab was deactivated and added to the | ||
175 | head of its node's partial list. | ||
176 | Available when CONFIG_SLUB_STATS is enabled. | ||
177 | |||
178 | What: /sys/kernel/slab/cache/deactivate_to_tail | ||
179 | Date: February 2008 | ||
180 | KernelVersion: 2.6.25 | ||
181 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
182 | Christoph Lameter <cl@linux-foundation.org> | ||
183 | Description: | ||
184 | The file deactivate_to_tail is read-only and specifies how | ||
185 | many times a partial cpu slab was deactivated and added to the | ||
186 | tail of its node's partial list. | ||
187 | Available when CONFIG_SLUB_STATS is enabled. | ||
188 | |||
189 | What: /sys/kernel/slab/cache/destroy_by_rcu | ||
190 | Date: May 2007 | ||
191 | KernelVersion: 2.6.22 | ||
192 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
193 | Christoph Lameter <cl@linux-foundation.org> | ||
194 | Description: | ||
195 | The destroy_by_rcu file is read-only and specifies whether | ||
196 | slabs (not objects) are freed by rcu. | ||
197 | |||
198 | What: /sys/kernel/slab/cache/free_add_partial | ||
199 | Date: February 2008 | ||
200 | KernelVersion: 2.6.25 | ||
201 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
202 | Christoph Lameter <cl@linux-foundation.org> | ||
203 | Description: | ||
204 | The file free_add_partial is read-only and specifies how many | ||
205 | times an object has been freed in a full slab so that it had to | ||
206 | added to its node's partial list. | ||
207 | Available when CONFIG_SLUB_STATS is enabled. | ||
208 | |||
209 | What: /sys/kernel/slab/cache/free_calls | ||
210 | Date: May 2007 | ||
211 | KernelVersion: 2.6.22 | ||
212 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
213 | Christoph Lameter <cl@linux-foundation.org> | ||
214 | Description: | ||
215 | The free_calls file is read-only and lists the locations of | ||
216 | object frees if slab debugging is enabled (see | ||
217 | Documentation/vm/slub.txt). | ||
218 | |||
219 | What: /sys/kernel/slab/cache/free_fastpath | ||
220 | Date: February 2008 | ||
221 | KernelVersion: 2.6.25 | ||
222 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
223 | Christoph Lameter <cl@linux-foundation.org> | ||
224 | Description: | ||
225 | The free_fastpath file is read-only and specifies how many | ||
226 | objects have been freed using the fast path because it was an | ||
227 | object from the cpu slab. | ||
228 | Available when CONFIG_SLUB_STATS is enabled. | ||
229 | |||
230 | What: /sys/kernel/slab/cache/free_frozen | ||
231 | Date: February 2008 | ||
232 | KernelVersion: 2.6.25 | ||
233 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
234 | Christoph Lameter <cl@linux-foundation.org> | ||
235 | Description: | ||
236 | The free_frozen file is read-only and specifies how many | ||
237 | objects have been freed to a frozen slab (i.e. a remote cpu | ||
238 | slab). | ||
239 | Available when CONFIG_SLUB_STATS is enabled. | ||
240 | |||
241 | What: /sys/kernel/slab/cache/free_remove_partial | ||
242 | Date: February 2008 | ||
243 | KernelVersion: 2.6.25 | ||
244 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
245 | Christoph Lameter <cl@linux-foundation.org> | ||
246 | Description: | ||
247 | The file free_remove_partial is read-only and specifies how | ||
248 | many times an object has been freed to a now-empty slab so | ||
249 | that it had to be removed from its node's partial list. | ||
250 | Available when CONFIG_SLUB_STATS is enabled. | ||
251 | |||
252 | What: /sys/kernel/slab/cache/free_slab | ||
253 | Date: February 2008 | ||
254 | KernelVersion: 2.6.25 | ||
255 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
256 | Christoph Lameter <cl@linux-foundation.org> | ||
257 | Description: | ||
258 | The free_slab file is read-only and specifies how many times an | ||
259 | empty slab has been freed back to the page allocator. | ||
260 | Available when CONFIG_SLUB_STATS is enabled. | ||
261 | |||
262 | What: /sys/kernel/slab/cache/free_slowpath | ||
263 | Date: February 2008 | ||
264 | KernelVersion: 2.6.25 | ||
265 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
266 | Christoph Lameter <cl@linux-foundation.org> | ||
267 | Description: | ||
268 | The free_slowpath file is read-only and specifies how many | ||
269 | objects have been freed using the slow path (i.e. to a full or | ||
270 | partial slab). | ||
271 | Available when CONFIG_SLUB_STATS is enabled. | ||
272 | |||
273 | What: /sys/kernel/slab/cache/hwcache_align | ||
274 | Date: May 2007 | ||
275 | KernelVersion: 2.6.22 | ||
276 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
277 | Christoph Lameter <cl@linux-foundation.org> | ||
278 | Description: | ||
279 | The hwcache_align file is read-only and specifies whether | ||
280 | objects are aligned on cachelines. | ||
281 | |||
282 | What: /sys/kernel/slab/cache/min_partial | ||
283 | Date: February 2009 | ||
284 | KernelVersion: 2.6.30 | ||
285 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
286 | David Rientjes <rientjes@google.com> | ||
287 | Description: | ||
288 | The min_partial file specifies how many empty slabs shall | ||
289 | remain on a node's partial list to avoid the overhead of | ||
290 | allocating new slabs. Such slabs may be reclaimed by utilizing | ||
291 | the shrink file. | ||
292 | |||
293 | What: /sys/kernel/slab/cache/object_size | ||
294 | Date: May 2007 | ||
295 | KernelVersion: 2.6.22 | ||
296 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
297 | Christoph Lameter <cl@linux-foundation.org> | ||
298 | Description: | ||
299 | The object_size file is read-only and specifies the cache's | ||
300 | object size. | ||
301 | |||
302 | What: /sys/kernel/slab/cache/objects | ||
303 | Date: May 2007 | ||
304 | KernelVersion: 2.6.22 | ||
305 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
306 | Christoph Lameter <cl@linux-foundation.org> | ||
307 | Description: | ||
308 | The objects file is read-only and displays how many objects are | ||
309 | active and from which nodes they are from. | ||
310 | |||
311 | What: /sys/kernel/slab/cache/objects_partial | ||
312 | Date: April 2008 | ||
313 | KernelVersion: 2.6.26 | ||
314 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
315 | Christoph Lameter <cl@linux-foundation.org> | ||
316 | Description: | ||
317 | The objects_partial file is read-only and displays how many | ||
318 | objects are on partial slabs and from which nodes they are | ||
319 | from. | ||
320 | |||
321 | What: /sys/kernel/slab/cache/objs_per_slab | ||
322 | Date: May 2007 | ||
323 | KernelVersion: 2.6.22 | ||
324 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
325 | Christoph Lameter <cl@linux-foundation.org> | ||
326 | Description: | ||
327 | The file objs_per_slab is read-only and specifies how many | ||
328 | objects may be allocated from a single slab of the order | ||
329 | specified in /sys/kernel/slab/cache/order. | ||
330 | |||
331 | What: /sys/kernel/slab/cache/order | ||
332 | Date: May 2007 | ||
333 | KernelVersion: 2.6.22 | ||
334 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
335 | Christoph Lameter <cl@linux-foundation.org> | ||
336 | Description: | ||
337 | The order file specifies the page order at which new slabs are | ||
338 | allocated. It is writable and can be changed to increase the | ||
339 | number of objects per slab. If a slab cannot be allocated | ||
340 | because of fragmentation, SLUB will retry with the minimum order | ||
341 | possible depending on its characteristics. | ||
342 | |||
343 | What: /sys/kernel/slab/cache/order_fallback | ||
344 | Date: April 2008 | ||
345 | KernelVersion: 2.6.26 | ||
346 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
347 | Christoph Lameter <cl@linux-foundation.org> | ||
348 | Description: | ||
349 | The file order_fallback is read-only and specifies how many | ||
350 | times an allocation of a new slab has not been possible at the | ||
351 | cache's order and instead fallen back to its minimum possible | ||
352 | order. | ||
353 | Available when CONFIG_SLUB_STATS is enabled. | ||
354 | |||
355 | What: /sys/kernel/slab/cache/partial | ||
356 | Date: May 2007 | ||
357 | KernelVersion: 2.6.22 | ||
358 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
359 | Christoph Lameter <cl@linux-foundation.org> | ||
360 | Description: | ||
361 | The partial file is read-only and displays how long many | ||
362 | partial slabs there are and how long each node's list is. | ||
363 | |||
364 | What: /sys/kernel/slab/cache/poison | ||
365 | Date: May 2007 | ||
366 | KernelVersion: 2.6.22 | ||
367 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
368 | Christoph Lameter <cl@linux-foundation.org> | ||
369 | Description: | ||
370 | The poison file specifies whether objects should be poisoned | ||
371 | when a new slab is allocated. | ||
372 | |||
373 | What: /sys/kernel/slab/cache/reclaim_account | ||
374 | Date: May 2007 | ||
375 | KernelVersion: 2.6.22 | ||
376 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
377 | Christoph Lameter <cl@linux-foundation.org> | ||
378 | Description: | ||
379 | The reclaim_account file specifies whether the cache's objects | ||
380 | are reclaimable (and grouped by their mobility). | ||
381 | |||
382 | What: /sys/kernel/slab/cache/red_zone | ||
383 | Date: May 2007 | ||
384 | KernelVersion: 2.6.22 | ||
385 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
386 | Christoph Lameter <cl@linux-foundation.org> | ||
387 | Description: | ||
388 | The red_zone file specifies whether the cache's objects are red | ||
389 | zoned. | ||
390 | |||
391 | What: /sys/kernel/slab/cache/remote_node_defrag_ratio | ||
392 | Date: January 2008 | ||
393 | KernelVersion: 2.6.25 | ||
394 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
395 | Christoph Lameter <cl@linux-foundation.org> | ||
396 | Description: | ||
397 | The file remote_node_defrag_ratio specifies the percentage of | ||
398 | times SLUB will attempt to refill the cpu slab with a partial | ||
399 | slab from a remote node as opposed to allocating a new slab on | ||
400 | the local node. This reduces the amount of wasted memory over | ||
401 | the entire system but can be expensive. | ||
402 | Available when CONFIG_NUMA is enabled. | ||
403 | |||
404 | What: /sys/kernel/slab/cache/sanity_checks | ||
405 | Date: May 2007 | ||
406 | KernelVersion: 2.6.22 | ||
407 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
408 | Christoph Lameter <cl@linux-foundation.org> | ||
409 | Description: | ||
410 | The sanity_checks file specifies whether expensive checks | ||
411 | should be performed on free and, at minimum, enables double free | ||
412 | checks. Caches that enable sanity_checks cannot be merged with | ||
413 | caches that do not. | ||
414 | |||
415 | What: /sys/kernel/slab/cache/shrink | ||
416 | Date: May 2007 | ||
417 | KernelVersion: 2.6.22 | ||
418 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
419 | Christoph Lameter <cl@linux-foundation.org> | ||
420 | Description: | ||
421 | The shrink file is written when memory should be reclaimed from | ||
422 | a cache. Empty partial slabs are freed and the partial list is | ||
423 | sorted so the slabs with the fewest available objects are used | ||
424 | first. | ||
425 | |||
426 | What: /sys/kernel/slab/cache/slab_size | ||
427 | Date: May 2007 | ||
428 | KernelVersion: 2.6.22 | ||
429 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
430 | Christoph Lameter <cl@linux-foundation.org> | ||
431 | Description: | ||
432 | The slab_size file is read-only and specifies the object size | ||
433 | with metadata (debugging information and alignment) in bytes. | ||
434 | |||
435 | What: /sys/kernel/slab/cache/slabs | ||
436 | Date: May 2007 | ||
437 | KernelVersion: 2.6.22 | ||
438 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
439 | Christoph Lameter <cl@linux-foundation.org> | ||
440 | Description: | ||
441 | The slabs file is read-only and displays how long many slabs | ||
442 | there are (both cpu and partial) and from which nodes they are | ||
443 | from. | ||
444 | |||
445 | What: /sys/kernel/slab/cache/store_user | ||
446 | Date: May 2007 | ||
447 | KernelVersion: 2.6.22 | ||
448 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
449 | Christoph Lameter <cl@linux-foundation.org> | ||
450 | Description: | ||
451 | The store_user file specifies whether the location of | ||
452 | allocation or free should be tracked for a cache. | ||
453 | |||
454 | What: /sys/kernel/slab/cache/total_objects | ||
455 | Date: April 2008 | ||
456 | KernelVersion: 2.6.26 | ||
457 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
458 | Christoph Lameter <cl@linux-foundation.org> | ||
459 | Description: | ||
460 | The total_objects file is read-only and displays how many total | ||
461 | objects a cache has and from which nodes they are from. | ||
462 | |||
463 | What: /sys/kernel/slab/cache/trace | ||
464 | Date: May 2007 | ||
465 | KernelVersion: 2.6.22 | ||
466 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
467 | Christoph Lameter <cl@linux-foundation.org> | ||
468 | Description: | ||
469 | The trace file specifies whether object allocations and frees | ||
470 | should be traced. | ||
471 | |||
472 | What: /sys/kernel/slab/cache/validate | ||
473 | Date: May 2007 | ||
474 | KernelVersion: 2.6.22 | ||
475 | Contact: Pekka Enberg <penberg@cs.helsinki.fi>, | ||
476 | Christoph Lameter <cl@linux-foundation.org> | ||
477 | Description: | ||
478 | Writing to the validate file causes SLUB to traverse all of its | ||
479 | cache's objects and check the validity of metadata. | ||
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt index ec5de02f543..b121c5db707 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt | |||
@@ -1266,13 +1266,22 @@ sctp_rmem - vector of 3 INTEGERs: min, default, max | |||
1266 | sctp_wmem - vector of 3 INTEGERs: min, default, max | 1266 | sctp_wmem - vector of 3 INTEGERs: min, default, max |
1267 | See tcp_wmem for a description. | 1267 | See tcp_wmem for a description. |
1268 | 1268 | ||
1269 | UNDOCUMENTED: | ||
1270 | 1269 | ||
1271 | /proc/sys/net/core/* | 1270 | /proc/sys/net/core/* |
1272 | dev_weight FIXME | 1271 | dev_weight - INTEGER |
1272 | The maximum number of packets that kernel can handle on a NAPI | ||
1273 | interrupt, it's a Per-CPU variable. | ||
1274 | |||
1275 | Default: 64 | ||
1273 | 1276 | ||
1274 | /proc/sys/net/unix/* | 1277 | /proc/sys/net/unix/* |
1275 | max_dgram_qlen FIXME | 1278 | max_dgram_qlen - INTEGER |
1279 | The maximum length of dgram socket receive queue | ||
1280 | |||
1281 | Default: 10 | ||
1282 | |||
1283 | |||
1284 | UNDOCUMENTED: | ||
1276 | 1285 | ||
1277 | /proc/sys/net/irda/* | 1286 | /proc/sys/net/irda/* |
1278 | fast_poll_increase FIXME | 1287 | fast_poll_increase FIXME |
diff --git a/arch/microblaze/configs/nommu_defconfig b/arch/microblaze/configs/nommu_defconfig index beb7ecd7279..4ef6af0a8f3 100644 --- a/arch/microblaze/configs/nommu_defconfig +++ b/arch/microblaze/configs/nommu_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.29 | 3 | # Linux kernel version: 2.6.30-rc5 |
4 | # Tue Mar 24 10:23:20 2009 | 4 | # Mon May 11 09:01:02 2009 |
5 | # | 5 | # |
6 | CONFIG_MICROBLAZE=y | 6 | CONFIG_MICROBLAZE=y |
7 | # CONFIG_SWAP is not set | 7 | # CONFIG_SWAP is not set |
@@ -32,6 +32,7 @@ CONFIG_LOCALVERSION_AUTO=y | |||
32 | CONFIG_SYSVIPC=y | 32 | CONFIG_SYSVIPC=y |
33 | CONFIG_SYSVIPC_SYSCTL=y | 33 | CONFIG_SYSVIPC_SYSCTL=y |
34 | CONFIG_POSIX_MQUEUE=y | 34 | CONFIG_POSIX_MQUEUE=y |
35 | CONFIG_POSIX_MQUEUE_SYSCTL=y | ||
35 | CONFIG_BSD_PROCESS_ACCT=y | 36 | CONFIG_BSD_PROCESS_ACCT=y |
36 | CONFIG_BSD_PROCESS_ACCT_V3=y | 37 | CONFIG_BSD_PROCESS_ACCT_V3=y |
37 | # CONFIG_TASKSTATS is not set | 38 | # CONFIG_TASKSTATS is not set |
@@ -63,6 +64,7 @@ CONFIG_SYSCTL_SYSCALL=y | |||
63 | CONFIG_KALLSYMS=y | 64 | CONFIG_KALLSYMS=y |
64 | CONFIG_KALLSYMS_ALL=y | 65 | CONFIG_KALLSYMS_ALL=y |
65 | CONFIG_KALLSYMS_EXTRA_PASS=y | 66 | CONFIG_KALLSYMS_EXTRA_PASS=y |
67 | # CONFIG_STRIP_ASM_SYMS is not set | ||
66 | # CONFIG_HOTPLUG is not set | 68 | # CONFIG_HOTPLUG is not set |
67 | CONFIG_PRINTK=y | 69 | CONFIG_PRINTK=y |
68 | CONFIG_BUG=y | 70 | CONFIG_BUG=y |
@@ -80,6 +82,8 @@ CONFIG_SLAB=y | |||
80 | # CONFIG_SLUB is not set | 82 | # CONFIG_SLUB is not set |
81 | # CONFIG_SLOB is not set | 83 | # CONFIG_SLOB is not set |
82 | # CONFIG_PROFILING is not set | 84 | # CONFIG_PROFILING is not set |
85 | # CONFIG_MARKERS is not set | ||
86 | # CONFIG_SLOW_WORK is not set | ||
83 | # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set | 87 | # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set |
84 | CONFIG_SLABINFO=y | 88 | CONFIG_SLABINFO=y |
85 | CONFIG_RT_MUTEXES=y | 89 | CONFIG_RT_MUTEXES=y |
@@ -92,7 +96,6 @@ CONFIG_MODULE_UNLOAD=y | |||
92 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 96 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
93 | CONFIG_BLOCK=y | 97 | CONFIG_BLOCK=y |
94 | # CONFIG_LBD is not set | 98 | # CONFIG_LBD is not set |
95 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
96 | # CONFIG_BLK_DEV_BSG is not set | 99 | # CONFIG_BLK_DEV_BSG is not set |
97 | # CONFIG_BLK_DEV_INTEGRITY is not set | 100 | # CONFIG_BLK_DEV_INTEGRITY is not set |
98 | 101 | ||
@@ -166,6 +169,8 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 | |||
166 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 169 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
167 | CONFIG_ZONE_DMA_FLAG=0 | 170 | CONFIG_ZONE_DMA_FLAG=0 |
168 | CONFIG_VIRT_TO_BUS=y | 171 | CONFIG_VIRT_TO_BUS=y |
172 | CONFIG_UNEVICTABLE_LRU=y | ||
173 | CONFIG_NOMMU_INITIAL_TRIM_EXCESS=1 | ||
169 | 174 | ||
170 | # | 175 | # |
171 | # Exectuable file formats | 176 | # Exectuable file formats |
@@ -180,7 +185,6 @@ CONFIG_NET=y | |||
180 | # | 185 | # |
181 | # Networking options | 186 | # Networking options |
182 | # | 187 | # |
183 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
184 | CONFIG_PACKET=y | 188 | CONFIG_PACKET=y |
185 | # CONFIG_PACKET_MMAP is not set | 189 | # CONFIG_PACKET_MMAP is not set |
186 | CONFIG_UNIX=y | 190 | CONFIG_UNIX=y |
@@ -232,6 +236,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
232 | # CONFIG_LAPB is not set | 236 | # CONFIG_LAPB is not set |
233 | # CONFIG_ECONET is not set | 237 | # CONFIG_ECONET is not set |
234 | # CONFIG_WAN_ROUTER is not set | 238 | # CONFIG_WAN_ROUTER is not set |
239 | # CONFIG_PHONET is not set | ||
235 | # CONFIG_NET_SCHED is not set | 240 | # CONFIG_NET_SCHED is not set |
236 | # CONFIG_DCB is not set | 241 | # CONFIG_DCB is not set |
237 | 242 | ||
@@ -244,7 +249,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
244 | # CONFIG_IRDA is not set | 249 | # CONFIG_IRDA is not set |
245 | # CONFIG_BT is not set | 250 | # CONFIG_BT is not set |
246 | # CONFIG_AF_RXRPC is not set | 251 | # CONFIG_AF_RXRPC is not set |
247 | # CONFIG_PHONET is not set | ||
248 | CONFIG_WIRELESS=y | 252 | CONFIG_WIRELESS=y |
249 | # CONFIG_CFG80211 is not set | 253 | # CONFIG_CFG80211 is not set |
250 | CONFIG_WIRELESS_OLD_REGULATORY=y | 254 | CONFIG_WIRELESS_OLD_REGULATORY=y |
@@ -379,6 +383,7 @@ CONFIG_MISC_DEVICES=y | |||
379 | # CONFIG_ATA is not set | 383 | # CONFIG_ATA is not set |
380 | # CONFIG_MD is not set | 384 | # CONFIG_MD is not set |
381 | CONFIG_NETDEVICES=y | 385 | CONFIG_NETDEVICES=y |
386 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
382 | # CONFIG_DUMMY is not set | 387 | # CONFIG_DUMMY is not set |
383 | # CONFIG_BONDING is not set | 388 | # CONFIG_BONDING is not set |
384 | # CONFIG_MACVLAN is not set | 389 | # CONFIG_MACVLAN is not set |
@@ -388,6 +393,7 @@ CONFIG_NETDEVICES=y | |||
388 | # CONFIG_PHYLIB is not set | 393 | # CONFIG_PHYLIB is not set |
389 | CONFIG_NET_ETHERNET=y | 394 | CONFIG_NET_ETHERNET=y |
390 | # CONFIG_MII is not set | 395 | # CONFIG_MII is not set |
396 | # CONFIG_ETHOC is not set | ||
391 | # CONFIG_DNET is not set | 397 | # CONFIG_DNET is not set |
392 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 398 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
393 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 399 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
@@ -405,7 +411,6 @@ CONFIG_NETDEV_10000=y | |||
405 | # | 411 | # |
406 | # CONFIG_WLAN_PRE80211 is not set | 412 | # CONFIG_WLAN_PRE80211 is not set |
407 | # CONFIG_WLAN_80211 is not set | 413 | # CONFIG_WLAN_80211 is not set |
408 | # CONFIG_IWLWIFI_LEDS is not set | ||
409 | 414 | ||
410 | # | 415 | # |
411 | # Enable WiMAX (Networking options) to see the WiMAX drivers | 416 | # Enable WiMAX (Networking options) to see the WiMAX drivers |
@@ -455,6 +460,7 @@ CONFIG_LEGACY_PTYS=y | |||
455 | CONFIG_LEGACY_PTY_COUNT=256 | 460 | CONFIG_LEGACY_PTY_COUNT=256 |
456 | # CONFIG_IPMI_HANDLER is not set | 461 | # CONFIG_IPMI_HANDLER is not set |
457 | CONFIG_HW_RANDOM=y | 462 | CONFIG_HW_RANDOM=y |
463 | # CONFIG_HW_RANDOM_TIMERIOMEM is not set | ||
458 | # CONFIG_RTC is not set | 464 | # CONFIG_RTC is not set |
459 | # CONFIG_GEN_RTC is not set | 465 | # CONFIG_GEN_RTC is not set |
460 | # CONFIG_R3964 is not set | 466 | # CONFIG_R3964 is not set |
@@ -525,7 +531,7 @@ CONFIG_USB_SUPPORT=y | |||
525 | # | 531 | # |
526 | 532 | ||
527 | # | 533 | # |
528 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; | 534 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may |
529 | # | 535 | # |
530 | # CONFIG_USB_GADGET is not set | 536 | # CONFIG_USB_GADGET is not set |
531 | 537 | ||
@@ -538,6 +544,7 @@ CONFIG_USB_SUPPORT=y | |||
538 | # CONFIG_ACCESSIBILITY is not set | 544 | # CONFIG_ACCESSIBILITY is not set |
539 | # CONFIG_RTC_CLASS is not set | 545 | # CONFIG_RTC_CLASS is not set |
540 | # CONFIG_DMADEVICES is not set | 546 | # CONFIG_DMADEVICES is not set |
547 | # CONFIG_AUXDISPLAY is not set | ||
541 | # CONFIG_UIO is not set | 548 | # CONFIG_UIO is not set |
542 | # CONFIG_STAGING is not set | 549 | # CONFIG_STAGING is not set |
543 | 550 | ||
@@ -563,6 +570,11 @@ CONFIG_FILE_LOCKING=y | |||
563 | # CONFIG_FUSE_FS is not set | 570 | # CONFIG_FUSE_FS is not set |
564 | 571 | ||
565 | # | 572 | # |
573 | # Caches | ||
574 | # | ||
575 | # CONFIG_FSCACHE is not set | ||
576 | |||
577 | # | ||
566 | # CD-ROM/DVD Filesystems | 578 | # CD-ROM/DVD Filesystems |
567 | # | 579 | # |
568 | # CONFIG_ISO9660_FS is not set | 580 | # CONFIG_ISO9660_FS is not set |
@@ -601,8 +613,13 @@ CONFIG_CRAMFS=y | |||
601 | # CONFIG_HPFS_FS is not set | 613 | # CONFIG_HPFS_FS is not set |
602 | # CONFIG_QNX4FS_FS is not set | 614 | # CONFIG_QNX4FS_FS is not set |
603 | CONFIG_ROMFS_FS=y | 615 | CONFIG_ROMFS_FS=y |
616 | CONFIG_ROMFS_BACKED_BY_BLOCK=y | ||
617 | # CONFIG_ROMFS_BACKED_BY_MTD is not set | ||
618 | # CONFIG_ROMFS_BACKED_BY_BOTH is not set | ||
619 | CONFIG_ROMFS_ON_BLOCK=y | ||
604 | # CONFIG_SYSV_FS is not set | 620 | # CONFIG_SYSV_FS is not set |
605 | # CONFIG_UFS_FS is not set | 621 | # CONFIG_UFS_FS is not set |
622 | # CONFIG_NILFS2_FS is not set | ||
606 | CONFIG_NETWORK_FILESYSTEMS=y | 623 | CONFIG_NETWORK_FILESYSTEMS=y |
607 | CONFIG_NFS_FS=y | 624 | CONFIG_NFS_FS=y |
608 | CONFIG_NFS_V3=y | 625 | CONFIG_NFS_V3=y |
@@ -614,7 +631,6 @@ CONFIG_LOCKD_V4=y | |||
614 | CONFIG_NFS_ACL_SUPPORT=y | 631 | CONFIG_NFS_ACL_SUPPORT=y |
615 | CONFIG_NFS_COMMON=y | 632 | CONFIG_NFS_COMMON=y |
616 | CONFIG_SUNRPC=y | 633 | CONFIG_SUNRPC=y |
617 | # CONFIG_SUNRPC_REGISTER_V4 is not set | ||
618 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 634 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
619 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 635 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
620 | # CONFIG_SMB_FS is not set | 636 | # CONFIG_SMB_FS is not set |
@@ -647,6 +663,9 @@ CONFIG_DEBUG_SHIRQ=y | |||
647 | CONFIG_DETECT_SOFTLOCKUP=y | 663 | CONFIG_DETECT_SOFTLOCKUP=y |
648 | CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y | 664 | CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y |
649 | CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=1 | 665 | CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=1 |
666 | CONFIG_DETECT_HUNG_TASK=y | ||
667 | # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set | ||
668 | CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 | ||
650 | CONFIG_SCHED_DEBUG=y | 669 | CONFIG_SCHED_DEBUG=y |
651 | CONFIG_SCHEDSTATS=y | 670 | CONFIG_SCHEDSTATS=y |
652 | CONFIG_TIMER_STATS=y | 671 | CONFIG_TIMER_STATS=y |
@@ -678,15 +697,8 @@ CONFIG_DEBUG_SG=y | |||
678 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | 697 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set |
679 | # CONFIG_FAULT_INJECTION is not set | 698 | # CONFIG_FAULT_INJECTION is not set |
680 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 699 | CONFIG_SYSCTL_SYSCALL_CHECK=y |
681 | 700 | # CONFIG_PAGE_POISONING is not set | |
682 | # | 701 | # CONFIG_DYNAMIC_DEBUG is not set |
683 | # Tracers | ||
684 | # | ||
685 | # CONFIG_SCHED_TRACER is not set | ||
686 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | ||
687 | # CONFIG_BOOT_TRACER is not set | ||
688 | # CONFIG_TRACE_BRANCH_PROFILING is not set | ||
689 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | ||
690 | # CONFIG_SAMPLES is not set | 702 | # CONFIG_SAMPLES is not set |
691 | CONFIG_EARLY_PRINTK=y | 703 | CONFIG_EARLY_PRINTK=y |
692 | CONFIG_HEART_BEAT=y | 704 | CONFIG_HEART_BEAT=y |
@@ -777,6 +789,7 @@ CONFIG_CRYPTO=y | |||
777 | # Compression | 789 | # Compression |
778 | # | 790 | # |
779 | # CONFIG_CRYPTO_DEFLATE is not set | 791 | # CONFIG_CRYPTO_DEFLATE is not set |
792 | # CONFIG_CRYPTO_ZLIB is not set | ||
780 | # CONFIG_CRYPTO_LZO is not set | 793 | # CONFIG_CRYPTO_LZO is not set |
781 | 794 | ||
782 | # | 795 | # |
@@ -784,6 +797,7 @@ CONFIG_CRYPTO=y | |||
784 | # | 797 | # |
785 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 798 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
786 | CONFIG_CRYPTO_HW=y | 799 | CONFIG_CRYPTO_HW=y |
800 | # CONFIG_BINARY_PRINTF is not set | ||
787 | 801 | ||
788 | # | 802 | # |
789 | # Library routines | 803 | # Library routines |
@@ -797,8 +811,8 @@ CONFIG_GENERIC_FIND_LAST_BIT=y | |||
797 | # CONFIG_CRC7 is not set | 811 | # CONFIG_CRC7 is not set |
798 | # CONFIG_LIBCRC32C is not set | 812 | # CONFIG_LIBCRC32C is not set |
799 | CONFIG_ZLIB_INFLATE=y | 813 | CONFIG_ZLIB_INFLATE=y |
800 | CONFIG_PLIST=y | ||
801 | CONFIG_HAS_IOMEM=y | 814 | CONFIG_HAS_IOMEM=y |
802 | CONFIG_HAS_IOPORT=y | 815 | CONFIG_HAS_IOPORT=y |
803 | CONFIG_HAS_DMA=y | 816 | CONFIG_HAS_DMA=y |
804 | CONFIG_HAVE_LMB=y | 817 | CONFIG_HAVE_LMB=y |
818 | CONFIG_NLATTR=y | ||
diff --git a/arch/microblaze/kernel/intc.c b/arch/microblaze/kernel/intc.c index a69d3e3c2fd..b15605299a5 100644 --- a/arch/microblaze/kernel/intc.c +++ b/arch/microblaze/kernel/intc.c | |||
@@ -137,8 +137,8 @@ void __init init_IRQ(void) | |||
137 | 137 | ||
138 | intr_type = | 138 | intr_type = |
139 | *(int *) of_get_property(intc, "xlnx,kind-of-intr", NULL); | 139 | *(int *) of_get_property(intc, "xlnx,kind-of-intr", NULL); |
140 | if (intr_type >= (1 << nr_irq)) | 140 | if (intr_type >= (1 << (nr_irq + 1))) |
141 | printk(KERN_INFO " ERROR: Mishmash in king-of-intr param\n"); | 141 | printk(KERN_INFO " ERROR: Mismatch in kind-of-intr param\n"); |
142 | 142 | ||
143 | #ifdef CONFIG_SELFMOD_INTC | 143 | #ifdef CONFIG_SELFMOD_INTC |
144 | selfmod_function((int *) arr_func, intc_baseaddr); | 144 | selfmod_function((int *) arr_func, intc_baseaddr); |
diff --git a/arch/powerpc/configs/ps3_defconfig b/arch/powerpc/configs/ps3_defconfig index ac14f5245d2..e28e65e7a0e 100644 --- a/arch/powerpc/configs/ps3_defconfig +++ b/arch/powerpc/configs/ps3_defconfig | |||
@@ -1,13 +1,14 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.29-rc8 | 3 | # Linux kernel version: 2.6.30-rc5 |
4 | # Fri Mar 13 09:28:45 2009 | 4 | # Fri May 15 10:37:00 2009 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
8 | # | 8 | # |
9 | # Processor support | 9 | # Processor support |
10 | # | 10 | # |
11 | CONFIG_PPC_BOOK3S=y | ||
11 | # CONFIG_POWER4_ONLY is not set | 12 | # CONFIG_POWER4_ONLY is not set |
12 | CONFIG_POWER3=y | 13 | CONFIG_POWER3=y |
13 | CONFIG_POWER4=y | 14 | CONFIG_POWER4=y |
@@ -55,9 +56,11 @@ CONFIG_OF=y | |||
55 | # CONFIG_GENERIC_TBSYNC is not set | 56 | # CONFIG_GENERIC_TBSYNC is not set |
56 | CONFIG_AUDIT_ARCH=y | 57 | CONFIG_AUDIT_ARCH=y |
57 | CONFIG_GENERIC_BUG=y | 58 | CONFIG_GENERIC_BUG=y |
59 | CONFIG_DTC=y | ||
58 | # CONFIG_DEFAULT_UIMAGE is not set | 60 | # CONFIG_DEFAULT_UIMAGE is not set |
59 | # CONFIG_PPC_DCR_NATIVE is not set | 61 | # CONFIG_PPC_DCR_NATIVE is not set |
60 | # CONFIG_PPC_DCR_MMIO is not set | 62 | # CONFIG_PPC_DCR_MMIO is not set |
63 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | ||
61 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 64 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
62 | 65 | ||
63 | # | 66 | # |
@@ -72,6 +75,7 @@ CONFIG_SWAP=y | |||
72 | CONFIG_SYSVIPC=y | 75 | CONFIG_SYSVIPC=y |
73 | CONFIG_SYSVIPC_SYSCTL=y | 76 | CONFIG_SYSVIPC_SYSCTL=y |
74 | CONFIG_POSIX_MQUEUE=y | 77 | CONFIG_POSIX_MQUEUE=y |
78 | CONFIG_POSIX_MQUEUE_SYSCTL=y | ||
75 | # CONFIG_BSD_PROCESS_ACCT is not set | 79 | # CONFIG_BSD_PROCESS_ACCT is not set |
76 | # CONFIG_TASKSTATS is not set | 80 | # CONFIG_TASKSTATS is not set |
77 | # CONFIG_AUDIT is not set | 81 | # CONFIG_AUDIT is not set |
@@ -88,8 +92,7 @@ CONFIG_CLASSIC_RCU=y | |||
88 | CONFIG_LOG_BUF_SHIFT=17 | 92 | CONFIG_LOG_BUF_SHIFT=17 |
89 | # CONFIG_GROUP_SCHED is not set | 93 | # CONFIG_GROUP_SCHED is not set |
90 | # CONFIG_CGROUPS is not set | 94 | # CONFIG_CGROUPS is not set |
91 | CONFIG_SYSFS_DEPRECATED=y | 95 | # CONFIG_SYSFS_DEPRECATED_V2 is not set |
92 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
93 | # CONFIG_RELAY is not set | 96 | # CONFIG_RELAY is not set |
94 | CONFIG_NAMESPACES=y | 97 | CONFIG_NAMESPACES=y |
95 | # CONFIG_UTS_NS is not set | 98 | # CONFIG_UTS_NS is not set |
@@ -99,6 +102,9 @@ CONFIG_NAMESPACES=y | |||
99 | # CONFIG_NET_NS is not set | 102 | # CONFIG_NET_NS is not set |
100 | CONFIG_BLK_DEV_INITRD=y | 103 | CONFIG_BLK_DEV_INITRD=y |
101 | CONFIG_INITRAMFS_SOURCE="" | 104 | CONFIG_INITRAMFS_SOURCE="" |
105 | CONFIG_RD_GZIP=y | ||
106 | # CONFIG_RD_BZIP2 is not set | ||
107 | # CONFIG_RD_LZMA is not set | ||
102 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 108 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
103 | CONFIG_SYSCTL=y | 109 | CONFIG_SYSCTL=y |
104 | CONFIG_ANON_INODES=y | 110 | CONFIG_ANON_INODES=y |
@@ -107,6 +113,7 @@ CONFIG_SYSCTL_SYSCALL=y | |||
107 | CONFIG_KALLSYMS=y | 113 | CONFIG_KALLSYMS=y |
108 | CONFIG_KALLSYMS_ALL=y | 114 | CONFIG_KALLSYMS_ALL=y |
109 | CONFIG_KALLSYMS_EXTRA_PASS=y | 115 | CONFIG_KALLSYMS_EXTRA_PASS=y |
116 | # CONFIG_STRIP_ASM_SYMS is not set | ||
110 | CONFIG_HOTPLUG=y | 117 | CONFIG_HOTPLUG=y |
111 | CONFIG_PRINTK=y | 118 | CONFIG_PRINTK=y |
112 | CONFIG_BUG=y | 119 | CONFIG_BUG=y |
@@ -138,6 +145,7 @@ CONFIG_HAVE_KRETPROBES=y | |||
138 | CONFIG_HAVE_ARCH_TRACEHOOK=y | 145 | CONFIG_HAVE_ARCH_TRACEHOOK=y |
139 | CONFIG_HAVE_DMA_ATTRS=y | 146 | CONFIG_HAVE_DMA_ATTRS=y |
140 | CONFIG_USE_GENERIC_SMP_HELPERS=y | 147 | CONFIG_USE_GENERIC_SMP_HELPERS=y |
148 | # CONFIG_SLOW_WORK is not set | ||
141 | # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set | 149 | # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set |
142 | CONFIG_SLABINFO=y | 150 | CONFIG_SLABINFO=y |
143 | CONFIG_RT_MUTEXES=y | 151 | CONFIG_RT_MUTEXES=y |
@@ -150,7 +158,6 @@ CONFIG_MODULE_UNLOAD=y | |||
150 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 158 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
151 | CONFIG_STOP_MACHINE=y | 159 | CONFIG_STOP_MACHINE=y |
152 | CONFIG_BLOCK=y | 160 | CONFIG_BLOCK=y |
153 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
154 | CONFIG_BLK_DEV_BSG=y | 161 | CONFIG_BLK_DEV_BSG=y |
155 | # CONFIG_BLK_DEV_INTEGRITY is not set | 162 | # CONFIG_BLK_DEV_INTEGRITY is not set |
156 | CONFIG_BLOCK_COMPAT=y | 163 | CONFIG_BLOCK_COMPAT=y |
@@ -172,7 +179,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
172 | # | 179 | # |
173 | # Platform support | 180 | # Platform support |
174 | # | 181 | # |
175 | CONFIG_PPC_MULTIPLATFORM=y | ||
176 | # CONFIG_PPC_PSERIES is not set | 182 | # CONFIG_PPC_PSERIES is not set |
177 | # CONFIG_PPC_ISERIES is not set | 183 | # CONFIG_PPC_ISERIES is not set |
178 | # CONFIG_PPC_PMAC is not set | 184 | # CONFIG_PPC_PMAC is not set |
@@ -209,6 +215,7 @@ CONFIG_SPU_FS_64K_LS=y | |||
209 | # CONFIG_SPU_TRACE is not set | 215 | # CONFIG_SPU_TRACE is not set |
210 | CONFIG_SPU_BASE=y | 216 | CONFIG_SPU_BASE=y |
211 | # CONFIG_PQ2ADS is not set | 217 | # CONFIG_PQ2ADS is not set |
218 | # CONFIG_PPC_OF_BOOT_TRAMPOLINE is not set | ||
212 | # CONFIG_IPIC is not set | 219 | # CONFIG_IPIC is not set |
213 | # CONFIG_MPIC is not set | 220 | # CONFIG_MPIC is not set |
214 | # CONFIG_MPIC_WEIRD is not set | 221 | # CONFIG_MPIC_WEIRD is not set |
@@ -279,11 +286,14 @@ CONFIG_PHYS_ADDR_T_64BIT=y | |||
279 | CONFIG_ZONE_DMA_FLAG=1 | 286 | CONFIG_ZONE_DMA_FLAG=1 |
280 | CONFIG_BOUNCE=y | 287 | CONFIG_BOUNCE=y |
281 | CONFIG_UNEVICTABLE_LRU=y | 288 | CONFIG_UNEVICTABLE_LRU=y |
289 | CONFIG_HAVE_MLOCK=y | ||
290 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
282 | CONFIG_ARCH_MEMORY_PROBE=y | 291 | CONFIG_ARCH_MEMORY_PROBE=y |
283 | CONFIG_PPC_HAS_HASH_64K=y | 292 | CONFIG_PPC_HAS_HASH_64K=y |
284 | CONFIG_PPC_4K_PAGES=y | 293 | CONFIG_PPC_4K_PAGES=y |
285 | # CONFIG_PPC_16K_PAGES is not set | 294 | # CONFIG_PPC_16K_PAGES is not set |
286 | # CONFIG_PPC_64K_PAGES is not set | 295 | # CONFIG_PPC_64K_PAGES is not set |
296 | # CONFIG_PPC_256K_PAGES is not set | ||
287 | CONFIG_FORCE_MAX_ZONEORDER=13 | 297 | CONFIG_FORCE_MAX_ZONEORDER=13 |
288 | CONFIG_SCHED_SMT=y | 298 | CONFIG_SCHED_SMT=y |
289 | CONFIG_PROC_DEVICETREE=y | 299 | CONFIG_PROC_DEVICETREE=y |
@@ -316,7 +326,6 @@ CONFIG_NET=y | |||
316 | # | 326 | # |
317 | # Networking options | 327 | # Networking options |
318 | # | 328 | # |
319 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
320 | CONFIG_PACKET=y | 329 | CONFIG_PACKET=y |
321 | CONFIG_PACKET_MMAP=y | 330 | CONFIG_PACKET_MMAP=y |
322 | CONFIG_UNIX=y | 331 | CONFIG_UNIX=y |
@@ -389,6 +398,7 @@ CONFIG_IPV6_NDISC_NODETYPE=y | |||
389 | # CONFIG_LAPB is not set | 398 | # CONFIG_LAPB is not set |
390 | # CONFIG_ECONET is not set | 399 | # CONFIG_ECONET is not set |
391 | # CONFIG_WAN_ROUTER is not set | 400 | # CONFIG_WAN_ROUTER is not set |
401 | # CONFIG_PHONET is not set | ||
392 | # CONFIG_NET_SCHED is not set | 402 | # CONFIG_NET_SCHED is not set |
393 | # CONFIG_DCB is not set | 403 | # CONFIG_DCB is not set |
394 | 404 | ||
@@ -396,6 +406,7 @@ CONFIG_IPV6_NDISC_NODETYPE=y | |||
396 | # Network testing | 406 | # Network testing |
397 | # | 407 | # |
398 | # CONFIG_NET_PKTGEN is not set | 408 | # CONFIG_NET_PKTGEN is not set |
409 | # CONFIG_NET_DROP_MONITOR is not set | ||
399 | # CONFIG_HAMRADIO is not set | 410 | # CONFIG_HAMRADIO is not set |
400 | # CONFIG_CAN is not set | 411 | # CONFIG_CAN is not set |
401 | # CONFIG_IRDA is not set | 412 | # CONFIG_IRDA is not set |
@@ -419,11 +430,9 @@ CONFIG_BT_HCIBTUSB=m | |||
419 | # CONFIG_BT_HCIBFUSB is not set | 430 | # CONFIG_BT_HCIBFUSB is not set |
420 | # CONFIG_BT_HCIVHCI is not set | 431 | # CONFIG_BT_HCIVHCI is not set |
421 | # CONFIG_AF_RXRPC is not set | 432 | # CONFIG_AF_RXRPC is not set |
422 | # CONFIG_PHONET is not set | ||
423 | CONFIG_WIRELESS=y | 433 | CONFIG_WIRELESS=y |
424 | CONFIG_CFG80211=m | 434 | CONFIG_CFG80211=m |
425 | # CONFIG_CFG80211_REG_DEBUG is not set | 435 | # CONFIG_CFG80211_REG_DEBUG is not set |
426 | CONFIG_NL80211=y | ||
427 | # CONFIG_WIRELESS_OLD_REGULATORY is not set | 436 | # CONFIG_WIRELESS_OLD_REGULATORY is not set |
428 | CONFIG_WIRELESS_EXT=y | 437 | CONFIG_WIRELESS_EXT=y |
429 | # CONFIG_WIRELESS_EXT_SYSFS is not set | 438 | # CONFIG_WIRELESS_EXT_SYSFS is not set |
@@ -602,6 +611,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
602 | # CONFIG_SCSI_SRP_ATTRS is not set | 611 | # CONFIG_SCSI_SRP_ATTRS is not set |
603 | # CONFIG_SCSI_LOWLEVEL is not set | 612 | # CONFIG_SCSI_LOWLEVEL is not set |
604 | # CONFIG_SCSI_DH is not set | 613 | # CONFIG_SCSI_DH is not set |
614 | # CONFIG_SCSI_OSD_INITIATOR is not set | ||
605 | # CONFIG_ATA is not set | 615 | # CONFIG_ATA is not set |
606 | CONFIG_MD=y | 616 | CONFIG_MD=y |
607 | # CONFIG_BLK_DEV_MD is not set | 617 | # CONFIG_BLK_DEV_MD is not set |
@@ -616,6 +626,7 @@ CONFIG_BLK_DEV_DM=m | |||
616 | # CONFIG_DM_UEVENT is not set | 626 | # CONFIG_DM_UEVENT is not set |
617 | # CONFIG_MACINTOSH_DRIVERS is not set | 627 | # CONFIG_MACINTOSH_DRIVERS is not set |
618 | CONFIG_NETDEVICES=y | 628 | CONFIG_NETDEVICES=y |
629 | CONFIG_COMPAT_NET_DEV_OPS=y | ||
619 | # CONFIG_DUMMY is not set | 630 | # CONFIG_DUMMY is not set |
620 | # CONFIG_BONDING is not set | 631 | # CONFIG_BONDING is not set |
621 | # CONFIG_MACVLAN is not set | 632 | # CONFIG_MACVLAN is not set |
@@ -625,6 +636,8 @@ CONFIG_NETDEVICES=y | |||
625 | # CONFIG_PHYLIB is not set | 636 | # CONFIG_PHYLIB is not set |
626 | CONFIG_NET_ETHERNET=y | 637 | CONFIG_NET_ETHERNET=y |
627 | CONFIG_MII=m | 638 | CONFIG_MII=m |
639 | # CONFIG_ETHOC is not set | ||
640 | # CONFIG_DNET is not set | ||
628 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 641 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
629 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 642 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
630 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 643 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -646,12 +659,13 @@ CONFIG_GELIC_WIRELESS_OLD_PSK_INTERFACE=y | |||
646 | CONFIG_WLAN_80211=y | 659 | CONFIG_WLAN_80211=y |
647 | # CONFIG_LIBERTAS is not set | 660 | # CONFIG_LIBERTAS is not set |
648 | # CONFIG_LIBERTAS_THINFIRM is not set | 661 | # CONFIG_LIBERTAS_THINFIRM is not set |
662 | # CONFIG_AT76C50X_USB is not set | ||
649 | # CONFIG_USB_ZD1201 is not set | 663 | # CONFIG_USB_ZD1201 is not set |
650 | # CONFIG_USB_NET_RNDIS_WLAN is not set | 664 | # CONFIG_USB_NET_RNDIS_WLAN is not set |
651 | # CONFIG_RTL8187 is not set | 665 | # CONFIG_RTL8187 is not set |
652 | # CONFIG_MAC80211_HWSIM is not set | 666 | # CONFIG_MAC80211_HWSIM is not set |
653 | # CONFIG_P54_COMMON is not set | 667 | # CONFIG_P54_COMMON is not set |
654 | # CONFIG_IWLWIFI_LEDS is not set | 668 | # CONFIG_AR9170_USB is not set |
655 | # CONFIG_HOSTAP is not set | 669 | # CONFIG_HOSTAP is not set |
656 | # CONFIG_B43 is not set | 670 | # CONFIG_B43 is not set |
657 | # CONFIG_B43LEGACY is not set | 671 | # CONFIG_B43LEGACY is not set |
@@ -673,6 +687,7 @@ CONFIG_USB_PEGASUS=m | |||
673 | CONFIG_USB_USBNET=m | 687 | CONFIG_USB_USBNET=m |
674 | CONFIG_USB_NET_AX8817X=m | 688 | CONFIG_USB_NET_AX8817X=m |
675 | # CONFIG_USB_NET_CDCETHER is not set | 689 | # CONFIG_USB_NET_CDCETHER is not set |
690 | # CONFIG_USB_NET_CDC_EEM is not set | ||
676 | # CONFIG_USB_NET_DM9601 is not set | 691 | # CONFIG_USB_NET_DM9601 is not set |
677 | # CONFIG_USB_NET_SMSC95XX is not set | 692 | # CONFIG_USB_NET_SMSC95XX is not set |
678 | # CONFIG_USB_NET_GL620A is not set | 693 | # CONFIG_USB_NET_GL620A is not set |
@@ -724,28 +739,7 @@ CONFIG_INPUT_EVDEV=m | |||
724 | # | 739 | # |
725 | # CONFIG_INPUT_KEYBOARD is not set | 740 | # CONFIG_INPUT_KEYBOARD is not set |
726 | # CONFIG_INPUT_MOUSE is not set | 741 | # CONFIG_INPUT_MOUSE is not set |
727 | CONFIG_INPUT_JOYSTICK=y | 742 | # CONFIG_INPUT_JOYSTICK is not set |
728 | # CONFIG_JOYSTICK_ANALOG is not set | ||
729 | # CONFIG_JOYSTICK_A3D is not set | ||
730 | # CONFIG_JOYSTICK_ADI is not set | ||
731 | # CONFIG_JOYSTICK_COBRA is not set | ||
732 | # CONFIG_JOYSTICK_GF2K is not set | ||
733 | # CONFIG_JOYSTICK_GRIP is not set | ||
734 | # CONFIG_JOYSTICK_GRIP_MP is not set | ||
735 | # CONFIG_JOYSTICK_GUILLEMOT is not set | ||
736 | # CONFIG_JOYSTICK_INTERACT is not set | ||
737 | # CONFIG_JOYSTICK_SIDEWINDER is not set | ||
738 | # CONFIG_JOYSTICK_TMDC is not set | ||
739 | # CONFIG_JOYSTICK_IFORCE is not set | ||
740 | # CONFIG_JOYSTICK_WARRIOR is not set | ||
741 | # CONFIG_JOYSTICK_MAGELLAN is not set | ||
742 | # CONFIG_JOYSTICK_SPACEORB is not set | ||
743 | # CONFIG_JOYSTICK_SPACEBALL is not set | ||
744 | # CONFIG_JOYSTICK_STINGER is not set | ||
745 | # CONFIG_JOYSTICK_TWIDJOY is not set | ||
746 | # CONFIG_JOYSTICK_ZHENHUA is not set | ||
747 | # CONFIG_JOYSTICK_JOYDUMP is not set | ||
748 | # CONFIG_JOYSTICK_XPAD is not set | ||
749 | # CONFIG_INPUT_TABLET is not set | 743 | # CONFIG_INPUT_TABLET is not set |
750 | # CONFIG_INPUT_TOUCHSCREEN is not set | 744 | # CONFIG_INPUT_TOUCHSCREEN is not set |
751 | # CONFIG_INPUT_MISC is not set | 745 | # CONFIG_INPUT_MISC is not set |
@@ -864,6 +858,7 @@ CONFIG_FB_PS3_DEFAULT_SIZE_M=9 | |||
864 | # CONFIG_FB_VIRTUAL is not set | 858 | # CONFIG_FB_VIRTUAL is not set |
865 | # CONFIG_FB_METRONOME is not set | 859 | # CONFIG_FB_METRONOME is not set |
866 | # CONFIG_FB_MB862XX is not set | 860 | # CONFIG_FB_MB862XX is not set |
861 | # CONFIG_FB_BROADSHEET is not set | ||
867 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 862 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
868 | 863 | ||
869 | # | 864 | # |
@@ -934,15 +929,17 @@ CONFIG_USB_HIDDEV=y | |||
934 | # | 929 | # |
935 | # Special HID drivers | 930 | # Special HID drivers |
936 | # | 931 | # |
937 | # CONFIG_HID_COMPAT is not set | ||
938 | # CONFIG_HID_A4TECH is not set | 932 | # CONFIG_HID_A4TECH is not set |
939 | # CONFIG_HID_APPLE is not set | 933 | # CONFIG_HID_APPLE is not set |
940 | # CONFIG_HID_BELKIN is not set | 934 | # CONFIG_HID_BELKIN is not set |
941 | # CONFIG_HID_CHERRY is not set | 935 | # CONFIG_HID_CHERRY is not set |
942 | # CONFIG_HID_CHICONY is not set | 936 | # CONFIG_HID_CHICONY is not set |
943 | # CONFIG_HID_CYPRESS is not set | 937 | # CONFIG_HID_CYPRESS is not set |
938 | # CONFIG_DRAGONRISE_FF is not set | ||
944 | # CONFIG_HID_EZKEY is not set | 939 | # CONFIG_HID_EZKEY is not set |
940 | # CONFIG_HID_KYE is not set | ||
945 | # CONFIG_HID_GYRATION is not set | 941 | # CONFIG_HID_GYRATION is not set |
942 | # CONFIG_HID_KENSINGTON is not set | ||
946 | # CONFIG_HID_LOGITECH is not set | 943 | # CONFIG_HID_LOGITECH is not set |
947 | # CONFIG_HID_MICROSOFT is not set | 944 | # CONFIG_HID_MICROSOFT is not set |
948 | # CONFIG_HID_MONTEREY is not set | 945 | # CONFIG_HID_MONTEREY is not set |
@@ -950,7 +947,7 @@ CONFIG_USB_HIDDEV=y | |||
950 | # CONFIG_HID_PANTHERLORD is not set | 947 | # CONFIG_HID_PANTHERLORD is not set |
951 | # CONFIG_HID_PETALYNX is not set | 948 | # CONFIG_HID_PETALYNX is not set |
952 | # CONFIG_HID_SAMSUNG is not set | 949 | # CONFIG_HID_SAMSUNG is not set |
953 | # CONFIG_HID_SONY is not set | 950 | CONFIG_HID_SONY=m |
954 | # CONFIG_HID_SUNPLUS is not set | 951 | # CONFIG_HID_SUNPLUS is not set |
955 | # CONFIG_GREENASIA_FF is not set | 952 | # CONFIG_GREENASIA_FF is not set |
956 | # CONFIG_HID_TOPSEED is not set | 953 | # CONFIG_HID_TOPSEED is not set |
@@ -1012,11 +1009,11 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
1012 | # CONFIG_USB_TMC is not set | 1009 | # CONFIG_USB_TMC is not set |
1013 | 1010 | ||
1014 | # | 1011 | # |
1015 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; | 1012 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may |
1016 | # | 1013 | # |
1017 | 1014 | ||
1018 | # | 1015 | # |
1019 | # see USB_STORAGE Help for more information | 1016 | # also be needed; see USB_STORAGE Help for more info |
1020 | # | 1017 | # |
1021 | CONFIG_USB_STORAGE=m | 1018 | CONFIG_USB_STORAGE=m |
1022 | # CONFIG_USB_STORAGE_DEBUG is not set | 1019 | # CONFIG_USB_STORAGE_DEBUG is not set |
@@ -1058,7 +1055,6 @@ CONFIG_USB_STORAGE=m | |||
1058 | # CONFIG_USB_LED is not set | 1055 | # CONFIG_USB_LED is not set |
1059 | # CONFIG_USB_CYPRESS_CY7C63 is not set | 1056 | # CONFIG_USB_CYPRESS_CY7C63 is not set |
1060 | # CONFIG_USB_CYTHERM is not set | 1057 | # CONFIG_USB_CYTHERM is not set |
1061 | # CONFIG_USB_PHIDGET is not set | ||
1062 | # CONFIG_USB_IDMOUSE is not set | 1058 | # CONFIG_USB_IDMOUSE is not set |
1063 | # CONFIG_USB_FTDI_ELAN is not set | 1059 | # CONFIG_USB_FTDI_ELAN is not set |
1064 | # CONFIG_USB_APPLEDISPLAY is not set | 1060 | # CONFIG_USB_APPLEDISPLAY is not set |
@@ -1074,6 +1070,7 @@ CONFIG_USB_STORAGE=m | |||
1074 | # | 1070 | # |
1075 | # OTG and related infrastructure | 1071 | # OTG and related infrastructure |
1076 | # | 1072 | # |
1073 | # CONFIG_NOP_USB_XCEIV is not set | ||
1077 | # CONFIG_MMC is not set | 1074 | # CONFIG_MMC is not set |
1078 | # CONFIG_MEMSTICK is not set | 1075 | # CONFIG_MEMSTICK is not set |
1079 | # CONFIG_NEW_LEDS is not set | 1076 | # CONFIG_NEW_LEDS is not set |
@@ -1113,8 +1110,10 @@ CONFIG_RTC_INTF_DEV=y | |||
1113 | # | 1110 | # |
1114 | # on-CPU RTC drivers | 1111 | # on-CPU RTC drivers |
1115 | # | 1112 | # |
1116 | CONFIG_RTC_DRV_PPC=m | 1113 | # CONFIG_RTC_DRV_GENERIC is not set |
1114 | CONFIG_RTC_DRV_PS3=m | ||
1117 | # CONFIG_DMADEVICES is not set | 1115 | # CONFIG_DMADEVICES is not set |
1116 | # CONFIG_AUXDISPLAY is not set | ||
1118 | # CONFIG_UIO is not set | 1117 | # CONFIG_UIO is not set |
1119 | # CONFIG_STAGING is not set | 1118 | # CONFIG_STAGING is not set |
1120 | 1119 | ||
@@ -1125,6 +1124,7 @@ CONFIG_EXT2_FS=m | |||
1125 | # CONFIG_EXT2_FS_XATTR is not set | 1124 | # CONFIG_EXT2_FS_XATTR is not set |
1126 | # CONFIG_EXT2_FS_XIP is not set | 1125 | # CONFIG_EXT2_FS_XIP is not set |
1127 | CONFIG_EXT3_FS=m | 1126 | CONFIG_EXT3_FS=m |
1127 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | ||
1128 | CONFIG_EXT3_FS_XATTR=y | 1128 | CONFIG_EXT3_FS_XATTR=y |
1129 | # CONFIG_EXT3_FS_POSIX_ACL is not set | 1129 | # CONFIG_EXT3_FS_POSIX_ACL is not set |
1130 | # CONFIG_EXT3_FS_SECURITY is not set | 1130 | # CONFIG_EXT3_FS_SECURITY is not set |
@@ -1161,6 +1161,11 @@ CONFIG_AUTOFS4_FS=m | |||
1161 | # CONFIG_FUSE_FS is not set | 1161 | # CONFIG_FUSE_FS is not set |
1162 | 1162 | ||
1163 | # | 1163 | # |
1164 | # Caches | ||
1165 | # | ||
1166 | # CONFIG_FSCACHE is not set | ||
1167 | |||
1168 | # | ||
1164 | # CD-ROM/DVD Filesystems | 1169 | # CD-ROM/DVD Filesystems |
1165 | # | 1170 | # |
1166 | CONFIG_ISO9660_FS=m | 1171 | CONFIG_ISO9660_FS=m |
@@ -1211,6 +1216,7 @@ CONFIG_MISC_FILESYSTEMS=y | |||
1211 | # CONFIG_ROMFS_FS is not set | 1216 | # CONFIG_ROMFS_FS is not set |
1212 | # CONFIG_SYSV_FS is not set | 1217 | # CONFIG_SYSV_FS is not set |
1213 | # CONFIG_UFS_FS is not set | 1218 | # CONFIG_UFS_FS is not set |
1219 | # CONFIG_NILFS2_FS is not set | ||
1214 | CONFIG_NETWORK_FILESYSTEMS=y | 1220 | CONFIG_NETWORK_FILESYSTEMS=y |
1215 | CONFIG_NFS_FS=y | 1221 | CONFIG_NFS_FS=y |
1216 | CONFIG_NFS_V3=y | 1222 | CONFIG_NFS_V3=y |
@@ -1223,7 +1229,6 @@ CONFIG_LOCKD_V4=y | |||
1223 | CONFIG_NFS_COMMON=y | 1229 | CONFIG_NFS_COMMON=y |
1224 | CONFIG_SUNRPC=y | 1230 | CONFIG_SUNRPC=y |
1225 | CONFIG_SUNRPC_GSS=y | 1231 | CONFIG_SUNRPC_GSS=y |
1226 | # CONFIG_SUNRPC_REGISTER_V4 is not set | ||
1227 | CONFIG_RPCSEC_GSS_KRB5=y | 1232 | CONFIG_RPCSEC_GSS_KRB5=y |
1228 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 1233 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
1229 | # CONFIG_SMB_FS is not set | 1234 | # CONFIG_SMB_FS is not set |
@@ -1283,6 +1288,7 @@ CONFIG_NLS_ISO8859_1=y | |||
1283 | # CONFIG_NLS_KOI8_U is not set | 1288 | # CONFIG_NLS_KOI8_U is not set |
1284 | # CONFIG_NLS_UTF8 is not set | 1289 | # CONFIG_NLS_UTF8 is not set |
1285 | # CONFIG_DLM is not set | 1290 | # CONFIG_DLM is not set |
1291 | CONFIG_BINARY_PRINTF=y | ||
1286 | 1292 | ||
1287 | # | 1293 | # |
1288 | # Library routines | 1294 | # Library routines |
@@ -1296,15 +1302,16 @@ CONFIG_CRC_ITU_T=m | |||
1296 | CONFIG_CRC32=y | 1302 | CONFIG_CRC32=y |
1297 | # CONFIG_CRC7 is not set | 1303 | # CONFIG_CRC7 is not set |
1298 | # CONFIG_LIBCRC32C is not set | 1304 | # CONFIG_LIBCRC32C is not set |
1299 | CONFIG_ZLIB_INFLATE=m | 1305 | CONFIG_ZLIB_INFLATE=y |
1300 | CONFIG_ZLIB_DEFLATE=m | 1306 | CONFIG_ZLIB_DEFLATE=m |
1301 | CONFIG_LZO_COMPRESS=m | 1307 | CONFIG_LZO_COMPRESS=m |
1302 | CONFIG_LZO_DECOMPRESS=m | 1308 | CONFIG_LZO_DECOMPRESS=m |
1303 | CONFIG_PLIST=y | 1309 | CONFIG_DECOMPRESS_GZIP=y |
1304 | CONFIG_HAS_IOMEM=y | 1310 | CONFIG_HAS_IOMEM=y |
1305 | CONFIG_HAS_IOPORT=y | 1311 | CONFIG_HAS_IOPORT=y |
1306 | CONFIG_HAS_DMA=y | 1312 | CONFIG_HAS_DMA=y |
1307 | CONFIG_HAVE_LMB=y | 1313 | CONFIG_HAVE_LMB=y |
1314 | CONFIG_NLATTR=y | ||
1308 | 1315 | ||
1309 | # | 1316 | # |
1310 | # Kernel hacking | 1317 | # Kernel hacking |
@@ -1322,6 +1329,9 @@ CONFIG_DEBUG_KERNEL=y | |||
1322 | CONFIG_DETECT_SOFTLOCKUP=y | 1329 | CONFIG_DETECT_SOFTLOCKUP=y |
1323 | # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set | 1330 | # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set |
1324 | CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 | 1331 | CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 |
1332 | CONFIG_DETECT_HUNG_TASK=y | ||
1333 | # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set | ||
1334 | CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 | ||
1325 | CONFIG_SCHED_DEBUG=y | 1335 | CONFIG_SCHED_DEBUG=y |
1326 | # CONFIG_SCHEDSTATS is not set | 1336 | # CONFIG_SCHEDSTATS is not set |
1327 | # CONFIG_TIMER_STATS is not set | 1337 | # CONFIG_TIMER_STATS is not set |
@@ -1357,12 +1367,15 @@ CONFIG_DEBUG_LIST=y | |||
1357 | # CONFIG_FAULT_INJECTION is not set | 1367 | # CONFIG_FAULT_INJECTION is not set |
1358 | # CONFIG_LATENCYTOP is not set | 1368 | # CONFIG_LATENCYTOP is not set |
1359 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 1369 | CONFIG_SYSCTL_SYSCALL_CHECK=y |
1370 | # CONFIG_DEBUG_PAGEALLOC is not set | ||
1360 | CONFIG_NOP_TRACER=y | 1371 | CONFIG_NOP_TRACER=y |
1361 | CONFIG_HAVE_FUNCTION_TRACER=y | 1372 | CONFIG_HAVE_FUNCTION_TRACER=y |
1373 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | ||
1362 | CONFIG_HAVE_DYNAMIC_FTRACE=y | 1374 | CONFIG_HAVE_DYNAMIC_FTRACE=y |
1363 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | 1375 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y |
1364 | CONFIG_RING_BUFFER=y | 1376 | CONFIG_RING_BUFFER=y |
1365 | CONFIG_TRACING=y | 1377 | CONFIG_TRACING=y |
1378 | CONFIG_TRACING_SUPPORT=y | ||
1366 | 1379 | ||
1367 | # | 1380 | # |
1368 | # Tracers | 1381 | # Tracers |
@@ -1371,18 +1384,21 @@ CONFIG_TRACING=y | |||
1371 | # CONFIG_IRQSOFF_TRACER is not set | 1384 | # CONFIG_IRQSOFF_TRACER is not set |
1372 | # CONFIG_SCHED_TRACER is not set | 1385 | # CONFIG_SCHED_TRACER is not set |
1373 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | 1386 | # CONFIG_CONTEXT_SWITCH_TRACER is not set |
1387 | # CONFIG_EVENT_TRACER is not set | ||
1374 | # CONFIG_BOOT_TRACER is not set | 1388 | # CONFIG_BOOT_TRACER is not set |
1375 | # CONFIG_TRACE_BRANCH_PROFILING is not set | 1389 | # CONFIG_TRACE_BRANCH_PROFILING is not set |
1376 | # CONFIG_STACK_TRACER is not set | 1390 | # CONFIG_STACK_TRACER is not set |
1391 | # CONFIG_KMEMTRACE is not set | ||
1392 | # CONFIG_WORKQUEUE_TRACER is not set | ||
1393 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
1377 | # CONFIG_FTRACE_STARTUP_TEST is not set | 1394 | # CONFIG_FTRACE_STARTUP_TEST is not set |
1378 | # CONFIG_DYNAMIC_PRINTK_DEBUG is not set | 1395 | # CONFIG_DYNAMIC_DEBUG is not set |
1379 | # CONFIG_SAMPLES is not set | 1396 | # CONFIG_SAMPLES is not set |
1380 | CONFIG_HAVE_ARCH_KGDB=y | 1397 | CONFIG_HAVE_ARCH_KGDB=y |
1381 | # CONFIG_KGDB is not set | 1398 | # CONFIG_KGDB is not set |
1382 | CONFIG_PRINT_STACK_DEPTH=64 | 1399 | CONFIG_PRINT_STACK_DEPTH=64 |
1383 | CONFIG_DEBUG_STACKOVERFLOW=y | 1400 | CONFIG_DEBUG_STACKOVERFLOW=y |
1384 | # CONFIG_DEBUG_STACK_USAGE is not set | 1401 | # CONFIG_DEBUG_STACK_USAGE is not set |
1385 | # CONFIG_DEBUG_PAGEALLOC is not set | ||
1386 | # CONFIG_CODE_PATCHING_SELFTEST is not set | 1402 | # CONFIG_CODE_PATCHING_SELFTEST is not set |
1387 | # CONFIG_FTR_FIXUP_SELFTEST is not set | 1403 | # CONFIG_FTR_FIXUP_SELFTEST is not set |
1388 | # CONFIG_MSI_BITMAP_SELFTEST is not set | 1404 | # CONFIG_MSI_BITMAP_SELFTEST is not set |
@@ -1415,10 +1431,12 @@ CONFIG_CRYPTO_HASH=y | |||
1415 | CONFIG_CRYPTO_HASH2=y | 1431 | CONFIG_CRYPTO_HASH2=y |
1416 | CONFIG_CRYPTO_RNG=m | 1432 | CONFIG_CRYPTO_RNG=m |
1417 | CONFIG_CRYPTO_RNG2=y | 1433 | CONFIG_CRYPTO_RNG2=y |
1434 | CONFIG_CRYPTO_PCOMP=y | ||
1418 | CONFIG_CRYPTO_MANAGER=y | 1435 | CONFIG_CRYPTO_MANAGER=y |
1419 | CONFIG_CRYPTO_MANAGER2=y | 1436 | CONFIG_CRYPTO_MANAGER2=y |
1420 | CONFIG_CRYPTO_GF128MUL=m | 1437 | CONFIG_CRYPTO_GF128MUL=m |
1421 | # CONFIG_CRYPTO_NULL is not set | 1438 | # CONFIG_CRYPTO_NULL is not set |
1439 | CONFIG_CRYPTO_WORKQUEUE=y | ||
1422 | # CONFIG_CRYPTO_CRYPTD is not set | 1440 | # CONFIG_CRYPTO_CRYPTD is not set |
1423 | # CONFIG_CRYPTO_AUTHENC is not set | 1441 | # CONFIG_CRYPTO_AUTHENC is not set |
1424 | # CONFIG_CRYPTO_TEST is not set | 1442 | # CONFIG_CRYPTO_TEST is not set |
@@ -1487,6 +1505,7 @@ CONFIG_CRYPTO_SALSA20=m | |||
1487 | # Compression | 1505 | # Compression |
1488 | # | 1506 | # |
1489 | # CONFIG_CRYPTO_DEFLATE is not set | 1507 | # CONFIG_CRYPTO_DEFLATE is not set |
1508 | # CONFIG_CRYPTO_ZLIB is not set | ||
1490 | CONFIG_CRYPTO_LZO=m | 1509 | CONFIG_CRYPTO_LZO=m |
1491 | 1510 | ||
1492 | # | 1511 | # |
diff --git a/arch/powerpc/kernel/ftrace.c b/arch/powerpc/kernel/ftrace.c index 70e2a736be1..2d182f119d1 100644 --- a/arch/powerpc/kernel/ftrace.c +++ b/arch/powerpc/kernel/ftrace.c | |||
@@ -157,7 +157,7 @@ __ftrace_make_nop(struct module *mod, | |||
157 | * 0xe8, 0x4c, 0x00, 0x28, ld r2,40(r12) | 157 | * 0xe8, 0x4c, 0x00, 0x28, ld r2,40(r12) |
158 | */ | 158 | */ |
159 | 159 | ||
160 | pr_debug("ip:%lx jumps to %lx r2: %lx", ip, tramp, mod->arch.toc); | 160 | pr_devel("ip:%lx jumps to %lx r2: %lx", ip, tramp, mod->arch.toc); |
161 | 161 | ||
162 | /* Find where the trampoline jumps to */ | 162 | /* Find where the trampoline jumps to */ |
163 | if (probe_kernel_read(jmp, (void *)tramp, sizeof(jmp))) { | 163 | if (probe_kernel_read(jmp, (void *)tramp, sizeof(jmp))) { |
@@ -165,7 +165,7 @@ __ftrace_make_nop(struct module *mod, | |||
165 | return -EFAULT; | 165 | return -EFAULT; |
166 | } | 166 | } |
167 | 167 | ||
168 | pr_debug(" %08x %08x", jmp[0], jmp[1]); | 168 | pr_devel(" %08x %08x", jmp[0], jmp[1]); |
169 | 169 | ||
170 | /* verify that this is what we expect it to be */ | 170 | /* verify that this is what we expect it to be */ |
171 | if (((jmp[0] & 0xffff0000) != 0x3d820000) || | 171 | if (((jmp[0] & 0xffff0000) != 0x3d820000) || |
@@ -181,18 +181,18 @@ __ftrace_make_nop(struct module *mod, | |||
181 | offset = ((unsigned)((unsigned short)jmp[0]) << 16) + | 181 | offset = ((unsigned)((unsigned short)jmp[0]) << 16) + |
182 | (int)((short)jmp[1]); | 182 | (int)((short)jmp[1]); |
183 | 183 | ||
184 | pr_debug(" %x ", offset); | 184 | pr_devel(" %x ", offset); |
185 | 185 | ||
186 | /* get the address this jumps too */ | 186 | /* get the address this jumps too */ |
187 | tramp = mod->arch.toc + offset + 32; | 187 | tramp = mod->arch.toc + offset + 32; |
188 | pr_debug("toc: %lx", tramp); | 188 | pr_devel("toc: %lx", tramp); |
189 | 189 | ||
190 | if (probe_kernel_read(jmp, (void *)tramp, 8)) { | 190 | if (probe_kernel_read(jmp, (void *)tramp, 8)) { |
191 | printk(KERN_ERR "Failed to read %lx\n", tramp); | 191 | printk(KERN_ERR "Failed to read %lx\n", tramp); |
192 | return -EFAULT; | 192 | return -EFAULT; |
193 | } | 193 | } |
194 | 194 | ||
195 | pr_debug(" %08x %08x\n", jmp[0], jmp[1]); | 195 | pr_devel(" %08x %08x\n", jmp[0], jmp[1]); |
196 | 196 | ||
197 | ptr = ((unsigned long)jmp[0] << 32) + jmp[1]; | 197 | ptr = ((unsigned long)jmp[0] << 32) + jmp[1]; |
198 | 198 | ||
@@ -269,7 +269,7 @@ __ftrace_make_nop(struct module *mod, | |||
269 | * 0x4e, 0x80, 0x04, 0x20 bctr | 269 | * 0x4e, 0x80, 0x04, 0x20 bctr |
270 | */ | 270 | */ |
271 | 271 | ||
272 | pr_debug("ip:%lx jumps to %lx", ip, tramp); | 272 | pr_devel("ip:%lx jumps to %lx", ip, tramp); |
273 | 273 | ||
274 | /* Find where the trampoline jumps to */ | 274 | /* Find where the trampoline jumps to */ |
275 | if (probe_kernel_read(jmp, (void *)tramp, sizeof(jmp))) { | 275 | if (probe_kernel_read(jmp, (void *)tramp, sizeof(jmp))) { |
@@ -277,7 +277,7 @@ __ftrace_make_nop(struct module *mod, | |||
277 | return -EFAULT; | 277 | return -EFAULT; |
278 | } | 278 | } |
279 | 279 | ||
280 | pr_debug(" %08x %08x ", jmp[0], jmp[1]); | 280 | pr_devel(" %08x %08x ", jmp[0], jmp[1]); |
281 | 281 | ||
282 | /* verify that this is what we expect it to be */ | 282 | /* verify that this is what we expect it to be */ |
283 | if (((jmp[0] & 0xffff0000) != 0x3d600000) || | 283 | if (((jmp[0] & 0xffff0000) != 0x3d600000) || |
@@ -293,7 +293,7 @@ __ftrace_make_nop(struct module *mod, | |||
293 | if (tramp & 0x8000) | 293 | if (tramp & 0x8000) |
294 | tramp -= 0x10000; | 294 | tramp -= 0x10000; |
295 | 295 | ||
296 | pr_debug(" %lx ", tramp); | 296 | pr_devel(" %lx ", tramp); |
297 | 297 | ||
298 | if (tramp != addr) { | 298 | if (tramp != addr) { |
299 | printk(KERN_ERR | 299 | printk(KERN_ERR |
@@ -402,7 +402,7 @@ __ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr) | |||
402 | /* ld r2,40(r1) */ | 402 | /* ld r2,40(r1) */ |
403 | op[1] = 0xe8410028; | 403 | op[1] = 0xe8410028; |
404 | 404 | ||
405 | pr_debug("write to %lx\n", rec->ip); | 405 | pr_devel("write to %lx\n", rec->ip); |
406 | 406 | ||
407 | if (probe_kernel_write((void *)ip, op, MCOUNT_INSN_SIZE * 2)) | 407 | if (probe_kernel_write((void *)ip, op, MCOUNT_INSN_SIZE * 2)) |
408 | return -EPERM; | 408 | return -EPERM; |
@@ -442,7 +442,7 @@ __ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr) | |||
442 | return -EINVAL; | 442 | return -EINVAL; |
443 | } | 443 | } |
444 | 444 | ||
445 | pr_debug("write to %lx\n", rec->ip); | 445 | pr_devel("write to %lx\n", rec->ip); |
446 | 446 | ||
447 | if (probe_kernel_write((void *)ip, &op, MCOUNT_INSN_SIZE)) | 447 | if (probe_kernel_write((void *)ip, &op, MCOUNT_INSN_SIZE)) |
448 | return -EPERM; | 448 | return -EPERM; |
@@ -594,7 +594,7 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) | |||
594 | PPC_LONG "2b,4b\n" | 594 | PPC_LONG "2b,4b\n" |
595 | ".previous" | 595 | ".previous" |
596 | 596 | ||
597 | : [old] "=r" (old), [faulted] "=r" (faulted) | 597 | : [old] "=&r" (old), [faulted] "=r" (faulted) |
598 | : [parent] "r" (parent), [return_hooker] "r" (return_hooker) | 598 | : [parent] "r" (parent), [return_hooker] "r" (return_hooker) |
599 | : "memory" | 599 | : "memory" |
600 | ); | 600 | ); |
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S index a047a6cfca4..8ef8a14abc9 100644 --- a/arch/powerpc/kernel/vmlinux.lds.S +++ b/arch/powerpc/kernel/vmlinux.lds.S | |||
@@ -264,6 +264,7 @@ SECTIONS | |||
264 | *(.data.page_aligned) | 264 | *(.data.page_aligned) |
265 | } | 265 | } |
266 | 266 | ||
267 | . = ALIGN(L1_CACHE_BYTES); | ||
267 | .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) { | 268 | .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) { |
268 | *(.data.cacheline_aligned) | 269 | *(.data.cacheline_aligned) |
269 | } | 270 | } |
diff --git a/arch/powerpc/mm/pgtable.c b/arch/powerpc/mm/pgtable.c index f5c6fd42265..ae1d67cc090 100644 --- a/arch/powerpc/mm/pgtable.c +++ b/arch/powerpc/mm/pgtable.c | |||
@@ -219,7 +219,8 @@ int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long address, | |||
219 | entry = do_dcache_icache_coherency(entry); | 219 | entry = do_dcache_icache_coherency(entry); |
220 | changed = !pte_same(*(ptep), entry); | 220 | changed = !pte_same(*(ptep), entry); |
221 | if (changed) { | 221 | if (changed) { |
222 | assert_pte_locked(vma->vm_mm, address); | 222 | if (!(vma->vm_flags & VM_HUGETLB)) |
223 | assert_pte_locked(vma->vm_mm, address); | ||
223 | __ptep_set_access_flags(ptep, entry); | 224 | __ptep_set_access_flags(ptep, entry); |
224 | flush_tlb_page_nohash(vma, address); | 225 | flush_tlb_page_nohash(vma, address); |
225 | } | 226 | } |
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index df9e885eee1..a6efe0a2e9a 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -498,6 +498,19 @@ config PARAVIRT | |||
498 | over full virtualization. However, when run without a hypervisor | 498 | over full virtualization. However, when run without a hypervisor |
499 | the kernel is theoretically slower and slightly larger. | 499 | the kernel is theoretically slower and slightly larger. |
500 | 500 | ||
501 | config PARAVIRT_SPINLOCKS | ||
502 | bool "Paravirtualization layer for spinlocks" | ||
503 | depends on PARAVIRT && SMP && EXPERIMENTAL | ||
504 | ---help--- | ||
505 | Paravirtualized spinlocks allow a pvops backend to replace the | ||
506 | spinlock implementation with something virtualization-friendly | ||
507 | (for example, block the virtual CPU rather than spinning). | ||
508 | |||
509 | Unfortunately the downside is an up to 5% performance hit on | ||
510 | native kernels, with various workloads. | ||
511 | |||
512 | If you are unsure how to answer this question, answer N. | ||
513 | |||
501 | config PARAVIRT_CLOCK | 514 | config PARAVIRT_CLOCK |
502 | bool | 515 | bool |
503 | default n | 516 | default n |
diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h index 378e3691c08..a53da004e08 100644 --- a/arch/x86/include/asm/paravirt.h +++ b/arch/x86/include/asm/paravirt.h | |||
@@ -1443,7 +1443,7 @@ u64 _paravirt_ident_64(u64); | |||
1443 | 1443 | ||
1444 | #define paravirt_nop ((void *)_paravirt_nop) | 1444 | #define paravirt_nop ((void *)_paravirt_nop) |
1445 | 1445 | ||
1446 | #ifdef CONFIG_SMP | 1446 | #if defined(CONFIG_SMP) && defined(CONFIG_PARAVIRT_SPINLOCKS) |
1447 | 1447 | ||
1448 | static inline int __raw_spin_is_locked(struct raw_spinlock *lock) | 1448 | static inline int __raw_spin_is_locked(struct raw_spinlock *lock) |
1449 | { | 1449 | { |
diff --git a/arch/x86/include/asm/percpu.h b/arch/x86/include/asm/percpu.h index aee103b26d0..02ecb30982a 100644 --- a/arch/x86/include/asm/percpu.h +++ b/arch/x86/include/asm/percpu.h | |||
@@ -82,22 +82,22 @@ do { \ | |||
82 | case 1: \ | 82 | case 1: \ |
83 | asm(op "b %1,"__percpu_arg(0) \ | 83 | asm(op "b %1,"__percpu_arg(0) \ |
84 | : "+m" (var) \ | 84 | : "+m" (var) \ |
85 | : "ri" ((T__)val)); \ | 85 | : "qi" ((T__)(val))); \ |
86 | break; \ | 86 | break; \ |
87 | case 2: \ | 87 | case 2: \ |
88 | asm(op "w %1,"__percpu_arg(0) \ | 88 | asm(op "w %1,"__percpu_arg(0) \ |
89 | : "+m" (var) \ | 89 | : "+m" (var) \ |
90 | : "ri" ((T__)val)); \ | 90 | : "ri" ((T__)(val))); \ |
91 | break; \ | 91 | break; \ |
92 | case 4: \ | 92 | case 4: \ |
93 | asm(op "l %1,"__percpu_arg(0) \ | 93 | asm(op "l %1,"__percpu_arg(0) \ |
94 | : "+m" (var) \ | 94 | : "+m" (var) \ |
95 | : "ri" ((T__)val)); \ | 95 | : "ri" ((T__)(val))); \ |
96 | break; \ | 96 | break; \ |
97 | case 8: \ | 97 | case 8: \ |
98 | asm(op "q %1,"__percpu_arg(0) \ | 98 | asm(op "q %1,"__percpu_arg(0) \ |
99 | : "+m" (var) \ | 99 | : "+m" (var) \ |
100 | : "re" ((T__)val)); \ | 100 | : "re" ((T__)(val))); \ |
101 | break; \ | 101 | break; \ |
102 | default: __bad_percpu_size(); \ | 102 | default: __bad_percpu_size(); \ |
103 | } \ | 103 | } \ |
@@ -109,7 +109,7 @@ do { \ | |||
109 | switch (sizeof(var)) { \ | 109 | switch (sizeof(var)) { \ |
110 | case 1: \ | 110 | case 1: \ |
111 | asm(op "b "__percpu_arg(1)",%0" \ | 111 | asm(op "b "__percpu_arg(1)",%0" \ |
112 | : "=r" (ret__) \ | 112 | : "=q" (ret__) \ |
113 | : "m" (var)); \ | 113 | : "m" (var)); \ |
114 | break; \ | 114 | break; \ |
115 | case 2: \ | 115 | case 2: \ |
diff --git a/arch/x86/include/asm/ptrace.h b/arch/x86/include/asm/ptrace.h index e304b66abee..624f133943e 100644 --- a/arch/x86/include/asm/ptrace.h +++ b/arch/x86/include/asm/ptrace.h | |||
@@ -187,14 +187,15 @@ static inline int v8086_mode(struct pt_regs *regs) | |||
187 | 187 | ||
188 | /* | 188 | /* |
189 | * X86_32 CPUs don't save ss and esp if the CPU is already in kernel mode | 189 | * X86_32 CPUs don't save ss and esp if the CPU is already in kernel mode |
190 | * when it traps. So regs will be the current sp. | 190 | * when it traps. The previous stack will be directly underneath the saved |
191 | * registers, and 'sp/ss' won't even have been saved. Thus the '®s->sp'. | ||
191 | * | 192 | * |
192 | * This is valid only for kernel mode traps. | 193 | * This is valid only for kernel mode traps. |
193 | */ | 194 | */ |
194 | static inline unsigned long kernel_trap_sp(struct pt_regs *regs) | 195 | static inline unsigned long kernel_stack_pointer(struct pt_regs *regs) |
195 | { | 196 | { |
196 | #ifdef CONFIG_X86_32 | 197 | #ifdef CONFIG_X86_32 |
197 | return (unsigned long)regs; | 198 | return (unsigned long)(®s->sp); |
198 | #else | 199 | #else |
199 | return regs->sp; | 200 | return regs->sp; |
200 | #endif | 201 | #endif |
diff --git a/arch/x86/include/asm/spinlock.h b/arch/x86/include/asm/spinlock.h index e5e6caffec8..b7e5db87639 100644 --- a/arch/x86/include/asm/spinlock.h +++ b/arch/x86/include/asm/spinlock.h | |||
@@ -172,7 +172,7 @@ static inline int __ticket_spin_is_contended(raw_spinlock_t *lock) | |||
172 | return (((tmp >> TICKET_SHIFT) - tmp) & ((1 << TICKET_SHIFT) - 1)) > 1; | 172 | return (((tmp >> TICKET_SHIFT) - tmp) & ((1 << TICKET_SHIFT) - 1)) > 1; |
173 | } | 173 | } |
174 | 174 | ||
175 | #ifndef CONFIG_PARAVIRT | 175 | #ifndef CONFIG_PARAVIRT_SPINLOCKS |
176 | 176 | ||
177 | static inline int __raw_spin_is_locked(raw_spinlock_t *lock) | 177 | static inline int __raw_spin_is_locked(raw_spinlock_t *lock) |
178 | { | 178 | { |
@@ -206,7 +206,7 @@ static __always_inline void __raw_spin_lock_flags(raw_spinlock_t *lock, | |||
206 | __raw_spin_lock(lock); | 206 | __raw_spin_lock(lock); |
207 | } | 207 | } |
208 | 208 | ||
209 | #endif | 209 | #endif /* CONFIG_PARAVIRT_SPINLOCKS */ |
210 | 210 | ||
211 | static inline void __raw_spin_unlock_wait(raw_spinlock_t *lock) | 211 | static inline void __raw_spin_unlock_wait(raw_spinlock_t *lock) |
212 | { | 212 | { |
diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile index 145cce75cda..88d1bfc847d 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile | |||
@@ -89,7 +89,8 @@ obj-$(CONFIG_DEBUG_NX_TEST) += test_nx.o | |||
89 | obj-$(CONFIG_VMI) += vmi_32.o vmiclock_32.o | 89 | obj-$(CONFIG_VMI) += vmi_32.o vmiclock_32.o |
90 | obj-$(CONFIG_KVM_GUEST) += kvm.o | 90 | obj-$(CONFIG_KVM_GUEST) += kvm.o |
91 | obj-$(CONFIG_KVM_CLOCK) += kvmclock.o | 91 | obj-$(CONFIG_KVM_CLOCK) += kvmclock.o |
92 | obj-$(CONFIG_PARAVIRT) += paravirt.o paravirt_patch_$(BITS).o paravirt-spinlocks.o | 92 | obj-$(CONFIG_PARAVIRT) += paravirt.o paravirt_patch_$(BITS).o |
93 | obj-$(CONFIG_PARAVIRT_SPINLOCKS)+= paravirt-spinlocks.o | ||
93 | obj-$(CONFIG_PARAVIRT_CLOCK) += pvclock.o | 94 | obj-$(CONFIG_PARAVIRT_CLOCK) += pvclock.o |
94 | 95 | ||
95 | obj-$(CONFIG_PCSPKR_PLATFORM) += pcspeaker.o | 96 | obj-$(CONFIG_PCSPKR_PLATFORM) += pcspeaker.o |
diff --git a/arch/x86/kernel/apic/es7000_32.c b/arch/x86/kernel/apic/es7000_32.c index 1c11b819f24..30294777557 100644 --- a/arch/x86/kernel/apic/es7000_32.c +++ b/arch/x86/kernel/apic/es7000_32.c | |||
@@ -254,7 +254,7 @@ static int parse_unisys_oem(char *oemptr) | |||
254 | } | 254 | } |
255 | 255 | ||
256 | #ifdef CONFIG_ACPI | 256 | #ifdef CONFIG_ACPI |
257 | static int find_unisys_acpi_oem_table(unsigned long *oem_addr) | 257 | static int __init find_unisys_acpi_oem_table(unsigned long *oem_addr) |
258 | { | 258 | { |
259 | struct acpi_table_header *header = NULL; | 259 | struct acpi_table_header *header = NULL; |
260 | struct es7000_oem_table *table; | 260 | struct es7000_oem_table *table; |
@@ -285,7 +285,7 @@ static int find_unisys_acpi_oem_table(unsigned long *oem_addr) | |||
285 | return 0; | 285 | return 0; |
286 | } | 286 | } |
287 | 287 | ||
288 | static void unmap_unisys_acpi_oem_table(unsigned long oem_addr) | 288 | static void __init unmap_unisys_acpi_oem_table(unsigned long oem_addr) |
289 | { | 289 | { |
290 | if (!oem_addr) | 290 | if (!oem_addr) |
291 | return; | 291 | return; |
@@ -306,7 +306,7 @@ static int es7000_check_dsdt(void) | |||
306 | static int es7000_acpi_ret; | 306 | static int es7000_acpi_ret; |
307 | 307 | ||
308 | /* Hook from generic ACPI tables.c */ | 308 | /* Hook from generic ACPI tables.c */ |
309 | static int es7000_acpi_madt_oem_check(char *oem_id, char *oem_table_id) | 309 | static int __init es7000_acpi_madt_oem_check(char *oem_id, char *oem_table_id) |
310 | { | 310 | { |
311 | unsigned long oem_addr = 0; | 311 | unsigned long oem_addr = 0; |
312 | int check_dsdt; | 312 | int check_dsdt; |
@@ -717,7 +717,7 @@ struct apic apic_es7000_cluster = { | |||
717 | .safe_wait_icr_idle = native_safe_apic_wait_icr_idle, | 717 | .safe_wait_icr_idle = native_safe_apic_wait_icr_idle, |
718 | }; | 718 | }; |
719 | 719 | ||
720 | struct apic apic_es7000 = { | 720 | struct apic __refdata apic_es7000 = { |
721 | 721 | ||
722 | .name = "es7000", | 722 | .name = "es7000", |
723 | .probe = probe_es7000, | 723 | .probe = probe_es7000, |
diff --git a/arch/x86/kernel/cpu/mtrr/generic.c b/arch/x86/kernel/cpu/mtrr/generic.c index 0b776c09aff..d21d4fb161f 100644 --- a/arch/x86/kernel/cpu/mtrr/generic.c +++ b/arch/x86/kernel/cpu/mtrr/generic.c | |||
@@ -275,7 +275,11 @@ static void __init print_mtrr_state(void) | |||
275 | } | 275 | } |
276 | printk(KERN_DEBUG "MTRR variable ranges %sabled:\n", | 276 | printk(KERN_DEBUG "MTRR variable ranges %sabled:\n", |
277 | mtrr_state.enabled & 2 ? "en" : "dis"); | 277 | mtrr_state.enabled & 2 ? "en" : "dis"); |
278 | high_width = ((size_or_mask ? ffs(size_or_mask) - 1 : 32) - (32 - PAGE_SHIFT) + 3) / 4; | 278 | if (size_or_mask & 0xffffffffUL) |
279 | high_width = ffs(size_or_mask & 0xffffffffUL) - 1; | ||
280 | else | ||
281 | high_width = ffs(size_or_mask>>32) + 32 - 1; | ||
282 | high_width = (high_width - (32 - PAGE_SHIFT) + 3) / 4; | ||
279 | for (i = 0; i < num_var_ranges; ++i) { | 283 | for (i = 0; i < num_var_ranges; ++i) { |
280 | if (mtrr_state.var_ranges[i].mask_lo & (1 << 11)) | 284 | if (mtrr_state.var_ranges[i].mask_lo & (1 << 11)) |
281 | printk(KERN_DEBUG " %u base %0*X%05X000 mask %0*X%05X000 %s\n", | 285 | printk(KERN_DEBUG " %u base %0*X%05X000 mask %0*X%05X000 %s\n", |
diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c index 18dfa30795c..b79c5533c42 100644 --- a/arch/x86/kernel/ftrace.c +++ b/arch/x86/kernel/ftrace.c | |||
@@ -442,7 +442,7 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) | |||
442 | _ASM_EXTABLE(1b, 4b) | 442 | _ASM_EXTABLE(1b, 4b) |
443 | _ASM_EXTABLE(2b, 4b) | 443 | _ASM_EXTABLE(2b, 4b) |
444 | 444 | ||
445 | : [old] "=r" (old), [faulted] "=r" (faulted) | 445 | : [old] "=&r" (old), [faulted] "=r" (faulted) |
446 | : [parent] "r" (parent), [return_hooker] "r" (return_hooker) | 446 | : [parent] "r" (parent), [return_hooker] "r" (return_hooker) |
447 | : "memory" | 447 | : "memory" |
448 | ); | 448 | ); |
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c index 8e45f446488..9faf43bea33 100644 --- a/arch/x86/kernel/paravirt.c +++ b/arch/x86/kernel/paravirt.c | |||
@@ -134,7 +134,9 @@ static void *get_call_destination(u8 type) | |||
134 | .pv_irq_ops = pv_irq_ops, | 134 | .pv_irq_ops = pv_irq_ops, |
135 | .pv_apic_ops = pv_apic_ops, | 135 | .pv_apic_ops = pv_apic_ops, |
136 | .pv_mmu_ops = pv_mmu_ops, | 136 | .pv_mmu_ops = pv_mmu_ops, |
137 | #ifdef CONFIG_PARAVIRT_SPINLOCKS | ||
137 | .pv_lock_ops = pv_lock_ops, | 138 | .pv_lock_ops = pv_lock_ops, |
139 | #endif | ||
138 | }; | 140 | }; |
139 | return *((void **)&tmpl + type); | 141 | return *((void **)&tmpl + type); |
140 | } | 142 | } |
diff --git a/arch/x86/oprofile/backtrace.c b/arch/x86/oprofile/backtrace.c index 04df67f8a7b..044897be021 100644 --- a/arch/x86/oprofile/backtrace.c +++ b/arch/x86/oprofile/backtrace.c | |||
@@ -76,9 +76,9 @@ void | |||
76 | x86_backtrace(struct pt_regs * const regs, unsigned int depth) | 76 | x86_backtrace(struct pt_regs * const regs, unsigned int depth) |
77 | { | 77 | { |
78 | struct frame_head *head = (struct frame_head *)frame_pointer(regs); | 78 | struct frame_head *head = (struct frame_head *)frame_pointer(regs); |
79 | unsigned long stack = kernel_trap_sp(regs); | ||
80 | 79 | ||
81 | if (!user_mode_vm(regs)) { | 80 | if (!user_mode_vm(regs)) { |
81 | unsigned long stack = kernel_stack_pointer(regs); | ||
82 | if (depth) | 82 | if (depth) |
83 | dump_trace(NULL, regs, (unsigned long *)stack, 0, | 83 | dump_trace(NULL, regs, (unsigned long *)stack, 0, |
84 | &backtrace_ops, &depth); | 84 | &backtrace_ops, &depth); |
diff --git a/arch/x86/xen/Makefile b/arch/x86/xen/Makefile index 3b767d03fd6..172438f86a0 100644 --- a/arch/x86/xen/Makefile +++ b/arch/x86/xen/Makefile | |||
@@ -9,5 +9,6 @@ obj-y := enlighten.o setup.o multicalls.o mmu.o irq.o \ | |||
9 | time.o xen-asm.o xen-asm_$(BITS).o \ | 9 | time.o xen-asm.o xen-asm_$(BITS).o \ |
10 | grant-table.o suspend.o | 10 | grant-table.o suspend.o |
11 | 11 | ||
12 | obj-$(CONFIG_SMP) += smp.o spinlock.o | 12 | obj-$(CONFIG_SMP) += smp.o |
13 | obj-$(CONFIG_XEN_DEBUG_FS) += debugfs.o \ No newline at end of file | 13 | obj-$(CONFIG_PARAVIRT_SPINLOCKS)+= spinlock.o |
14 | obj-$(CONFIG_XEN_DEBUG_FS) += debugfs.o | ||
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c index e25a78e1113..fba55b1a402 100644 --- a/arch/x86/xen/mmu.c +++ b/arch/x86/xen/mmu.c | |||
@@ -42,6 +42,7 @@ | |||
42 | #include <linux/highmem.h> | 42 | #include <linux/highmem.h> |
43 | #include <linux/debugfs.h> | 43 | #include <linux/debugfs.h> |
44 | #include <linux/bug.h> | 44 | #include <linux/bug.h> |
45 | #include <linux/module.h> | ||
45 | 46 | ||
46 | #include <asm/pgtable.h> | 47 | #include <asm/pgtable.h> |
47 | #include <asm/tlbflush.h> | 48 | #include <asm/tlbflush.h> |
diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h index 20139464943..ca6596b05d5 100644 --- a/arch/x86/xen/xen-ops.h +++ b/arch/x86/xen/xen-ops.h | |||
@@ -62,15 +62,26 @@ void xen_setup_vcpu_info_placement(void); | |||
62 | #ifdef CONFIG_SMP | 62 | #ifdef CONFIG_SMP |
63 | void xen_smp_init(void); | 63 | void xen_smp_init(void); |
64 | 64 | ||
65 | void __init xen_init_spinlocks(void); | ||
66 | __cpuinit void xen_init_lock_cpu(int cpu); | ||
67 | void xen_uninit_lock_cpu(int cpu); | ||
68 | |||
69 | extern cpumask_var_t xen_cpu_initialized_map; | 65 | extern cpumask_var_t xen_cpu_initialized_map; |
70 | #else | 66 | #else |
71 | static inline void xen_smp_init(void) {} | 67 | static inline void xen_smp_init(void) {} |
72 | #endif | 68 | #endif |
73 | 69 | ||
70 | #ifdef CONFIG_PARAVIRT_SPINLOCKS | ||
71 | void __init xen_init_spinlocks(void); | ||
72 | __cpuinit void xen_init_lock_cpu(int cpu); | ||
73 | void xen_uninit_lock_cpu(int cpu); | ||
74 | #else | ||
75 | static inline void xen_init_spinlocks(void) | ||
76 | { | ||
77 | } | ||
78 | static inline void xen_init_lock_cpu(int cpu) | ||
79 | { | ||
80 | } | ||
81 | static inline void xen_uninit_lock_cpu(int cpu) | ||
82 | { | ||
83 | } | ||
84 | #endif | ||
74 | 85 | ||
75 | /* Declare an asm function, along with symbols needed to make it | 86 | /* Declare an asm function, along with symbols needed to make it |
76 | inlineable */ | 87 | inlineable */ |
diff --git a/crypto/api.c b/crypto/api.c index 314dab96840..fd2545decb2 100644 --- a/crypto/api.c +++ b/crypto/api.c | |||
@@ -221,7 +221,8 @@ struct crypto_alg *crypto_larval_lookup(const char *name, u32 type, u32 mask) | |||
221 | 221 | ||
222 | request_module(name); | 222 | request_module(name); |
223 | 223 | ||
224 | if (!((type ^ CRYPTO_ALG_NEED_FALLBACK) & mask) && | 224 | if (!((type ^ CRYPTO_ALG_NEED_FALLBACK) & mask & |
225 | CRYPTO_ALG_NEED_FALLBACK) && | ||
225 | snprintf(tmp, sizeof(tmp), "%s-all", name) < sizeof(tmp)) | 226 | snprintf(tmp, sizeof(tmp), "%s-all", name) < sizeof(tmp)) |
226 | request_module(tmp); | 227 | request_module(tmp); |
227 | 228 | ||
diff --git a/crypto/eseqiv.c b/crypto/eseqiv.c index 2a342c8e52b..3ca3b669d5d 100644 --- a/crypto/eseqiv.c +++ b/crypto/eseqiv.c | |||
@@ -153,7 +153,8 @@ static int eseqiv_givencrypt(struct skcipher_givcrypt_request *req) | |||
153 | if (err) | 153 | if (err) |
154 | goto out; | 154 | goto out; |
155 | 155 | ||
156 | eseqiv_complete2(req); | 156 | if (giv != req->giv) |
157 | eseqiv_complete2(req); | ||
157 | 158 | ||
158 | out: | 159 | out: |
159 | return err; | 160 | return err; |
diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c index 8f905089b72..a6cbf7b808e 100644 --- a/drivers/block/xen-blkfront.c +++ b/drivers/block/xen-blkfront.c | |||
@@ -934,8 +934,6 @@ static void blkfront_closing(struct xenbus_device *dev) | |||
934 | 934 | ||
935 | spin_lock_irqsave(&blkif_io_lock, flags); | 935 | spin_lock_irqsave(&blkif_io_lock, flags); |
936 | 936 | ||
937 | del_gendisk(info->gd); | ||
938 | |||
939 | /* No more blkif_request(). */ | 937 | /* No more blkif_request(). */ |
940 | blk_stop_queue(info->rq); | 938 | blk_stop_queue(info->rq); |
941 | 939 | ||
@@ -949,6 +947,8 @@ static void blkfront_closing(struct xenbus_device *dev) | |||
949 | blk_cleanup_queue(info->rq); | 947 | blk_cleanup_queue(info->rq); |
950 | info->rq = NULL; | 948 | info->rq = NULL; |
951 | 949 | ||
950 | del_gendisk(info->gd); | ||
951 | |||
952 | out: | 952 | out: |
953 | xenbus_frontend_closed(dev); | 953 | xenbus_frontend_closed(dev); |
954 | } | 954 | } |
@@ -977,8 +977,10 @@ static void backend_changed(struct xenbus_device *dev, | |||
977 | break; | 977 | break; |
978 | 978 | ||
979 | case XenbusStateClosing: | 979 | case XenbusStateClosing: |
980 | if (info->gd == NULL) | 980 | if (info->gd == NULL) { |
981 | xenbus_dev_fatal(dev, -ENODEV, "gd is NULL"); | 981 | xenbus_frontend_closed(dev); |
982 | break; | ||
983 | } | ||
982 | bd = bdget_disk(info->gd, 0); | 984 | bd = bdget_disk(info->gd, 0); |
983 | if (bd == NULL) | 985 | if (bd == NULL) |
984 | xenbus_dev_fatal(dev, -ENODEV, "bdget failed"); | 986 | xenbus_dev_fatal(dev, -ENODEV, "bdget failed"); |
diff --git a/drivers/cdrom/viocd.c b/drivers/cdrom/viocd.c index 13929356135..9b1624e0dde 100644 --- a/drivers/cdrom/viocd.c +++ b/drivers/cdrom/viocd.c | |||
@@ -587,7 +587,7 @@ static int viocd_probe(struct vio_dev *vdev, const struct vio_device_id *id) | |||
587 | struct device_node *node = vdev->dev.archdata.of_node; | 587 | struct device_node *node = vdev->dev.archdata.of_node; |
588 | 588 | ||
589 | deviceno = vdev->unit_address; | 589 | deviceno = vdev->unit_address; |
590 | if (deviceno > VIOCD_MAX_CD) | 590 | if (deviceno >= VIOCD_MAX_CD) |
591 | return -ENODEV; | 591 | return -ENODEV; |
592 | if (!node) | 592 | if (!node) |
593 | return -ENODEV; | 593 | return -ENODEV; |
diff --git a/drivers/char/random.c b/drivers/char/random.c index b2ced39d76b..8c7444857a4 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c | |||
@@ -1673,7 +1673,7 @@ unsigned int get_random_int(void) | |||
1673 | int ret; | 1673 | int ret; |
1674 | 1674 | ||
1675 | keyptr = get_keyptr(); | 1675 | keyptr = get_keyptr(); |
1676 | hash[0] += current->pid + jiffies + get_cycles() + (int)(long)&ret; | 1676 | hash[0] += current->pid + jiffies + get_cycles(); |
1677 | 1677 | ||
1678 | ret = half_md4_transform(hash, keyptr->secret); | 1678 | ret = half_md4_transform(hash, keyptr->secret); |
1679 | put_cpu_var(get_random_int_hash); | 1679 | put_cpu_var(get_random_int_hash); |
diff --git a/drivers/char/tpm/tpm_bios.c b/drivers/char/tpm/tpm_bios.c index ed306eb1057..0c2f55a38b9 100644 --- a/drivers/char/tpm/tpm_bios.c +++ b/drivers/char/tpm/tpm_bios.c | |||
@@ -212,7 +212,8 @@ static int get_event_name(char *dest, struct tcpa_event *event, | |||
212 | unsigned char * event_entry) | 212 | unsigned char * event_entry) |
213 | { | 213 | { |
214 | const char *name = ""; | 214 | const char *name = ""; |
215 | char data[40] = ""; | 215 | /* 41 so there is room for 40 data and 1 nul */ |
216 | char data[41] = ""; | ||
216 | int i, n_len = 0, d_len = 0; | 217 | int i, n_len = 0, d_len = 0; |
217 | struct tcpa_pc_event *pc_event; | 218 | struct tcpa_pc_event *pc_event; |
218 | 219 | ||
diff --git a/drivers/crypto/ixp4xx_crypto.c b/drivers/crypto/ixp4xx_crypto.c index f9f05d7a707..6c6656d3b1e 100644 --- a/drivers/crypto/ixp4xx_crypto.c +++ b/drivers/crypto/ixp4xx_crypto.c | |||
@@ -415,6 +415,7 @@ static void crypto_done_action(unsigned long arg) | |||
415 | static int init_ixp_crypto(void) | 415 | static int init_ixp_crypto(void) |
416 | { | 416 | { |
417 | int ret = -ENODEV; | 417 | int ret = -ENODEV; |
418 | u32 msg[2] = { 0, 0 }; | ||
418 | 419 | ||
419 | if (! ( ~(*IXP4XX_EXP_CFG2) & (IXP4XX_FEATURE_HASH | | 420 | if (! ( ~(*IXP4XX_EXP_CFG2) & (IXP4XX_FEATURE_HASH | |
420 | IXP4XX_FEATURE_AES | IXP4XX_FEATURE_DES))) { | 421 | IXP4XX_FEATURE_AES | IXP4XX_FEATURE_DES))) { |
@@ -426,9 +427,35 @@ static int init_ixp_crypto(void) | |||
426 | return ret; | 427 | return ret; |
427 | 428 | ||
428 | if (!npe_running(npe_c)) { | 429 | if (!npe_running(npe_c)) { |
429 | npe_load_firmware(npe_c, npe_name(npe_c), dev); | 430 | ret = npe_load_firmware(npe_c, npe_name(npe_c), dev); |
431 | if (ret) { | ||
432 | return ret; | ||
433 | } | ||
434 | if (npe_recv_message(npe_c, msg, "STATUS_MSG")) | ||
435 | goto npe_error; | ||
436 | } else { | ||
437 | if (npe_send_message(npe_c, msg, "STATUS_MSG")) | ||
438 | goto npe_error; | ||
439 | |||
440 | if (npe_recv_message(npe_c, msg, "STATUS_MSG")) | ||
441 | goto npe_error; | ||
430 | } | 442 | } |
431 | 443 | ||
444 | switch ((msg[1]>>16) & 0xff) { | ||
445 | case 3: | ||
446 | printk(KERN_WARNING "Firmware of %s lacks AES support\n", | ||
447 | npe_name(npe_c)); | ||
448 | support_aes = 0; | ||
449 | break; | ||
450 | case 4: | ||
451 | case 5: | ||
452 | support_aes = 1; | ||
453 | break; | ||
454 | default: | ||
455 | printk(KERN_ERR "Firmware of %s lacks crypto support\n", | ||
456 | npe_name(npe_c)); | ||
457 | return -ENODEV; | ||
458 | } | ||
432 | /* buffer_pool will also be used to sometimes store the hmac, | 459 | /* buffer_pool will also be used to sometimes store the hmac, |
433 | * so assure it is large enough | 460 | * so assure it is large enough |
434 | */ | 461 | */ |
@@ -459,6 +486,10 @@ static int init_ixp_crypto(void) | |||
459 | 486 | ||
460 | qmgr_enable_irq(RECV_QID); | 487 | qmgr_enable_irq(RECV_QID); |
461 | return 0; | 488 | return 0; |
489 | |||
490 | npe_error: | ||
491 | printk(KERN_ERR "%s not responding\n", npe_name(npe_c)); | ||
492 | ret = -EIO; | ||
462 | err: | 493 | err: |
463 | if (ctx_pool) | 494 | if (ctx_pool) |
464 | dma_pool_destroy(ctx_pool); | 495 | dma_pool_destroy(ctx_pool); |
diff --git a/drivers/crypto/padlock-aes.c b/drivers/crypto/padlock-aes.c index 3f0fdd18255..856b3cc2558 100644 --- a/drivers/crypto/padlock-aes.c +++ b/drivers/crypto/padlock-aes.c | |||
@@ -489,4 +489,4 @@ MODULE_DESCRIPTION("VIA PadLock AES algorithm support"); | |||
489 | MODULE_LICENSE("GPL"); | 489 | MODULE_LICENSE("GPL"); |
490 | MODULE_AUTHOR("Michal Ludvig"); | 490 | MODULE_AUTHOR("Michal Ludvig"); |
491 | 491 | ||
492 | MODULE_ALIAS("aes-all"); | 492 | MODULE_ALIAS("aes"); |
diff --git a/drivers/mfd/pcf50633-core.c b/drivers/mfd/pcf50633-core.c index 7793932a513..11a6248cc1c 100644 --- a/drivers/mfd/pcf50633-core.c +++ b/drivers/mfd/pcf50633-core.c | |||
@@ -443,7 +443,7 @@ static irqreturn_t pcf50633_irq(int irq, void *data) | |||
443 | dev_dbg(pcf->dev, "pcf50633_irq\n"); | 443 | dev_dbg(pcf->dev, "pcf50633_irq\n"); |
444 | 444 | ||
445 | get_device(pcf->dev); | 445 | get_device(pcf->dev); |
446 | disable_irq(pcf->irq); | 446 | disable_irq_nosync(pcf->irq); |
447 | schedule_work(&pcf->irq_work); | 447 | schedule_work(&pcf->irq_work); |
448 | 448 | ||
449 | return IRQ_HANDLED; | 449 | return IRQ_HANDLED; |
diff --git a/drivers/mfd/wm8350-core.c b/drivers/mfd/wm8350-core.c index c2be3088e2e..fe24079387c 100644 --- a/drivers/mfd/wm8350-core.c +++ b/drivers/mfd/wm8350-core.c | |||
@@ -79,10 +79,6 @@ static int wm8350_phys_read(struct wm8350 *wm8350, u8 reg, int num_regs, | |||
79 | /* Cache is CPU endian */ | 79 | /* Cache is CPU endian */ |
80 | dest[i - reg] = be16_to_cpu(dest[i - reg]); | 80 | dest[i - reg] = be16_to_cpu(dest[i - reg]); |
81 | 81 | ||
82 | /* Satisfy non-volatile bits from cache */ | ||
83 | dest[i - reg] &= wm8350_reg_io_map[i].vol; | ||
84 | dest[i - reg] |= wm8350->reg_cache[i]; | ||
85 | |||
86 | /* Mask out non-readable bits */ | 82 | /* Mask out non-readable bits */ |
87 | dest[i - reg] &= wm8350_reg_io_map[i].readable; | 83 | dest[i - reg] &= wm8350_reg_io_map[i].readable; |
88 | } | 84 | } |
@@ -182,9 +178,6 @@ static int wm8350_write(struct wm8350 *wm8350, u8 reg, int num_regs, u16 *src) | |||
182 | (wm8350->reg_cache[i] & ~wm8350_reg_io_map[i].writable) | 178 | (wm8350->reg_cache[i] & ~wm8350_reg_io_map[i].writable) |
183 | | src[i - reg]; | 179 | | src[i - reg]; |
184 | 180 | ||
185 | /* Don't store volatile bits */ | ||
186 | wm8350->reg_cache[i] &= ~wm8350_reg_io_map[i].vol; | ||
187 | |||
188 | src[i - reg] = cpu_to_be16(src[i - reg]); | 181 | src[i - reg] = cpu_to_be16(src[i - reg]); |
189 | } | 182 | } |
190 | 183 | ||
@@ -1261,7 +1254,6 @@ static int wm8350_create_cache(struct wm8350 *wm8350, int type, int mode) | |||
1261 | (i < WM8350_CLOCK_CONTROL_1 || i > WM8350_AIF_TEST)) { | 1254 | (i < WM8350_CLOCK_CONTROL_1 || i > WM8350_AIF_TEST)) { |
1262 | value = be16_to_cpu(wm8350->reg_cache[i]); | 1255 | value = be16_to_cpu(wm8350->reg_cache[i]); |
1263 | value &= wm8350_reg_io_map[i].readable; | 1256 | value &= wm8350_reg_io_map[i].readable; |
1264 | value &= ~wm8350_reg_io_map[i].vol; | ||
1265 | wm8350->reg_cache[i] = value; | 1257 | wm8350->reg_cache[i] = value; |
1266 | } else | 1258 | } else |
1267 | wm8350->reg_cache[i] = reg_map[i]; | 1259 | wm8350->reg_cache[i] = reg_map[i]; |
diff --git a/drivers/mtd/devices/mtd_dataflash.c b/drivers/mtd/devices/mtd_dataflash.c index 62dee54af0a..43976aa4dbb 100644 --- a/drivers/mtd/devices/mtd_dataflash.c +++ b/drivers/mtd/devices/mtd_dataflash.c | |||
@@ -178,7 +178,7 @@ static int dataflash_erase(struct mtd_info *mtd, struct erase_info *instr) | |||
178 | /* Calculate flash page address; use block erase (for speed) if | 178 | /* Calculate flash page address; use block erase (for speed) if |
179 | * we're at a block boundary and need to erase the whole block. | 179 | * we're at a block boundary and need to erase the whole block. |
180 | */ | 180 | */ |
181 | pageaddr = div_u64(instr->len, priv->page_size); | 181 | pageaddr = div_u64(instr->addr, priv->page_size); |
182 | do_block = (pageaddr & 0x7) == 0 && instr->len >= blocksize; | 182 | do_block = (pageaddr & 0x7) == 0 && instr->len >= blocksize; |
183 | pageaddr = pageaddr << priv->page_offset; | 183 | pageaddr = pageaddr << priv->page_offset; |
184 | 184 | ||
diff --git a/drivers/net/benet/be.h b/drivers/net/benet/be.h index c49ddd08b2a..b4bb06fdf30 100644 --- a/drivers/net/benet/be.h +++ b/drivers/net/benet/be.h | |||
@@ -35,8 +35,22 @@ | |||
35 | #define DRV_VER "2.0.348" | 35 | #define DRV_VER "2.0.348" |
36 | #define DRV_NAME "be2net" | 36 | #define DRV_NAME "be2net" |
37 | #define BE_NAME "ServerEngines BladeEngine2 10Gbps NIC" | 37 | #define BE_NAME "ServerEngines BladeEngine2 10Gbps NIC" |
38 | #define OC_NAME "Emulex OneConnect 10Gbps NIC" | ||
38 | #define DRV_DESC BE_NAME "Driver" | 39 | #define DRV_DESC BE_NAME "Driver" |
39 | 40 | ||
41 | #define BE_VENDOR_ID 0x19a2 | ||
42 | #define BE_DEVICE_ID1 0x211 | ||
43 | #define OC_DEVICE_ID1 0x700 | ||
44 | #define OC_DEVICE_ID2 0x701 | ||
45 | |||
46 | static inline char *nic_name(struct pci_dev *pdev) | ||
47 | { | ||
48 | if (pdev->device == OC_DEVICE_ID1 || pdev->device == OC_DEVICE_ID2) | ||
49 | return OC_NAME; | ||
50 | else | ||
51 | return BE_NAME; | ||
52 | } | ||
53 | |||
40 | /* Number of bytes of an RX frame that are copied to skb->data */ | 54 | /* Number of bytes of an RX frame that are copied to skb->data */ |
41 | #define BE_HDR_LEN 64 | 55 | #define BE_HDR_LEN 64 |
42 | #define BE_MAX_JUMBO_FRAME_SIZE 9018 | 56 | #define BE_MAX_JUMBO_FRAME_SIZE 9018 |
diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c index 30d0c81c989..5c378b5e8e4 100644 --- a/drivers/net/benet/be_main.c +++ b/drivers/net/benet/be_main.c | |||
@@ -28,10 +28,10 @@ static unsigned int rx_frag_size = 2048; | |||
28 | module_param(rx_frag_size, uint, S_IRUGO); | 28 | module_param(rx_frag_size, uint, S_IRUGO); |
29 | MODULE_PARM_DESC(rx_frag_size, "Size of a fragment that holds rcvd data."); | 29 | MODULE_PARM_DESC(rx_frag_size, "Size of a fragment that holds rcvd data."); |
30 | 30 | ||
31 | #define BE_VENDOR_ID 0x19a2 | ||
32 | #define BE2_DEVICE_ID_1 0x0211 | ||
33 | static DEFINE_PCI_DEVICE_TABLE(be_dev_ids) = { | 31 | static DEFINE_PCI_DEVICE_TABLE(be_dev_ids) = { |
34 | { PCI_DEVICE(BE_VENDOR_ID, BE2_DEVICE_ID_1) }, | 32 | { PCI_DEVICE(BE_VENDOR_ID, BE_DEVICE_ID1) }, |
33 | { PCI_DEVICE(BE_VENDOR_ID, OC_DEVICE_ID1) }, | ||
34 | { PCI_DEVICE(BE_VENDOR_ID, OC_DEVICE_ID2) }, | ||
35 | { 0 } | 35 | { 0 } |
36 | }; | 36 | }; |
37 | MODULE_DEVICE_TABLE(pci, be_dev_ids); | 37 | MODULE_DEVICE_TABLE(pci, be_dev_ids); |
@@ -1859,7 +1859,7 @@ static int __devinit be_probe(struct pci_dev *pdev, | |||
1859 | if (status != 0) | 1859 | if (status != 0) |
1860 | goto stats_clean; | 1860 | goto stats_clean; |
1861 | 1861 | ||
1862 | dev_info(&pdev->dev, BE_NAME " port %d\n", adapter->port_num); | 1862 | dev_info(&pdev->dev, "%s port %d\n", nic_name(pdev), adapter->port_num); |
1863 | return 0; | 1863 | return 0; |
1864 | 1864 | ||
1865 | stats_clean: | 1865 | stats_clean: |
@@ -1873,7 +1873,7 @@ rel_reg: | |||
1873 | disable_dev: | 1873 | disable_dev: |
1874 | pci_disable_device(pdev); | 1874 | pci_disable_device(pdev); |
1875 | do_none: | 1875 | do_none: |
1876 | dev_warn(&pdev->dev, BE_NAME " initialization failed\n"); | 1876 | dev_err(&pdev->dev, "%s initialization failed\n", nic_name(pdev)); |
1877 | return status; | 1877 | return status; |
1878 | } | 1878 | } |
1879 | 1879 | ||
diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c index 8c2e5ab51f0..faf094abef7 100644 --- a/drivers/net/bonding/bond_3ad.c +++ b/drivers/net/bonding/bond_3ad.c | |||
@@ -1465,6 +1465,12 @@ static struct aggregator *ad_agg_selection_test(struct aggregator *best, | |||
1465 | return best; | 1465 | return best; |
1466 | } | 1466 | } |
1467 | 1467 | ||
1468 | static int agg_device_up(const struct aggregator *agg) | ||
1469 | { | ||
1470 | return (netif_running(agg->slave->dev) && | ||
1471 | netif_carrier_ok(agg->slave->dev)); | ||
1472 | } | ||
1473 | |||
1468 | /** | 1474 | /** |
1469 | * ad_agg_selection_logic - select an aggregation group for a team | 1475 | * ad_agg_selection_logic - select an aggregation group for a team |
1470 | * @aggregator: the aggregator we're looking at | 1476 | * @aggregator: the aggregator we're looking at |
@@ -1496,14 +1502,13 @@ static void ad_agg_selection_logic(struct aggregator *agg) | |||
1496 | struct port *port; | 1502 | struct port *port; |
1497 | 1503 | ||
1498 | origin = agg; | 1504 | origin = agg; |
1499 | |||
1500 | active = __get_active_agg(agg); | 1505 | active = __get_active_agg(agg); |
1501 | best = active; | 1506 | best = (active && agg_device_up(active)) ? active : NULL; |
1502 | 1507 | ||
1503 | do { | 1508 | do { |
1504 | agg->is_active = 0; | 1509 | agg->is_active = 0; |
1505 | 1510 | ||
1506 | if (agg->num_of_ports) | 1511 | if (agg->num_of_ports && agg_device_up(agg)) |
1507 | best = ad_agg_selection_test(best, agg); | 1512 | best = ad_agg_selection_test(best, agg); |
1508 | 1513 | ||
1509 | } while ((agg = __get_next_agg(agg))); | 1514 | } while ((agg = __get_next_agg(agg))); |
diff --git a/drivers/net/meth.c b/drivers/net/meth.c index aa08987f6e8..dbd3436912b 100644 --- a/drivers/net/meth.c +++ b/drivers/net/meth.c | |||
@@ -127,11 +127,11 @@ static unsigned long mdio_read(struct meth_private *priv, unsigned long phyreg) | |||
127 | static int mdio_probe(struct meth_private *priv) | 127 | static int mdio_probe(struct meth_private *priv) |
128 | { | 128 | { |
129 | int i; | 129 | int i; |
130 | unsigned long p2, p3; | 130 | unsigned long p2, p3, flags; |
131 | /* check if phy is detected already */ | 131 | /* check if phy is detected already */ |
132 | if(priv->phy_addr>=0&&priv->phy_addr<32) | 132 | if(priv->phy_addr>=0&&priv->phy_addr<32) |
133 | return 0; | 133 | return 0; |
134 | spin_lock(&priv->meth_lock); | 134 | spin_lock_irqsave(&priv->meth_lock, flags); |
135 | for (i=0;i<32;++i){ | 135 | for (i=0;i<32;++i){ |
136 | priv->phy_addr=i; | 136 | priv->phy_addr=i; |
137 | p2=mdio_read(priv,2); | 137 | p2=mdio_read(priv,2); |
@@ -157,7 +157,7 @@ static int mdio_probe(struct meth_private *priv) | |||
157 | break; | 157 | break; |
158 | } | 158 | } |
159 | } | 159 | } |
160 | spin_unlock(&priv->meth_lock); | 160 | spin_unlock_irqrestore(&priv->meth_lock, flags); |
161 | if(priv->phy_addr<32) { | 161 | if(priv->phy_addr<32) { |
162 | return 0; | 162 | return 0; |
163 | } | 163 | } |
@@ -373,14 +373,14 @@ static int meth_release(struct net_device *dev) | |||
373 | static void meth_rx(struct net_device* dev, unsigned long int_status) | 373 | static void meth_rx(struct net_device* dev, unsigned long int_status) |
374 | { | 374 | { |
375 | struct sk_buff *skb; | 375 | struct sk_buff *skb; |
376 | unsigned long status; | 376 | unsigned long status, flags; |
377 | struct meth_private *priv = netdev_priv(dev); | 377 | struct meth_private *priv = netdev_priv(dev); |
378 | unsigned long fifo_rptr = (int_status & METH_INT_RX_RPTR_MASK) >> 8; | 378 | unsigned long fifo_rptr = (int_status & METH_INT_RX_RPTR_MASK) >> 8; |
379 | 379 | ||
380 | spin_lock(&priv->meth_lock); | 380 | spin_lock_irqsave(&priv->meth_lock, flags); |
381 | priv->dma_ctrl &= ~METH_DMA_RX_INT_EN; | 381 | priv->dma_ctrl &= ~METH_DMA_RX_INT_EN; |
382 | mace->eth.dma_ctrl = priv->dma_ctrl; | 382 | mace->eth.dma_ctrl = priv->dma_ctrl; |
383 | spin_unlock(&priv->meth_lock); | 383 | spin_unlock_irqrestore(&priv->meth_lock, flags); |
384 | 384 | ||
385 | if (int_status & METH_INT_RX_UNDERFLOW) { | 385 | if (int_status & METH_INT_RX_UNDERFLOW) { |
386 | fifo_rptr = (fifo_rptr - 1) & 0x0f; | 386 | fifo_rptr = (fifo_rptr - 1) & 0x0f; |
@@ -452,12 +452,12 @@ static void meth_rx(struct net_device* dev, unsigned long int_status) | |||
452 | mace->eth.rx_fifo = priv->rx_ring_dmas[priv->rx_write]; | 452 | mace->eth.rx_fifo = priv->rx_ring_dmas[priv->rx_write]; |
453 | ADVANCE_RX_PTR(priv->rx_write); | 453 | ADVANCE_RX_PTR(priv->rx_write); |
454 | } | 454 | } |
455 | spin_lock(&priv->meth_lock); | 455 | spin_lock_irqsave(&priv->meth_lock, flags); |
456 | /* In case there was underflow, and Rx DMA was disabled */ | 456 | /* In case there was underflow, and Rx DMA was disabled */ |
457 | priv->dma_ctrl |= METH_DMA_RX_INT_EN | METH_DMA_RX_EN; | 457 | priv->dma_ctrl |= METH_DMA_RX_INT_EN | METH_DMA_RX_EN; |
458 | mace->eth.dma_ctrl = priv->dma_ctrl; | 458 | mace->eth.dma_ctrl = priv->dma_ctrl; |
459 | mace->eth.int_stat = METH_INT_RX_THRESHOLD; | 459 | mace->eth.int_stat = METH_INT_RX_THRESHOLD; |
460 | spin_unlock(&priv->meth_lock); | 460 | spin_unlock_irqrestore(&priv->meth_lock, flags); |
461 | } | 461 | } |
462 | 462 | ||
463 | static int meth_tx_full(struct net_device *dev) | 463 | static int meth_tx_full(struct net_device *dev) |
@@ -470,11 +470,11 @@ static int meth_tx_full(struct net_device *dev) | |||
470 | static void meth_tx_cleanup(struct net_device* dev, unsigned long int_status) | 470 | static void meth_tx_cleanup(struct net_device* dev, unsigned long int_status) |
471 | { | 471 | { |
472 | struct meth_private *priv = netdev_priv(dev); | 472 | struct meth_private *priv = netdev_priv(dev); |
473 | unsigned long status; | 473 | unsigned long status, flags; |
474 | struct sk_buff *skb; | 474 | struct sk_buff *skb; |
475 | unsigned long rptr = (int_status&TX_INFO_RPTR) >> 16; | 475 | unsigned long rptr = (int_status&TX_INFO_RPTR) >> 16; |
476 | 476 | ||
477 | spin_lock(&priv->meth_lock); | 477 | spin_lock_irqsave(&priv->meth_lock, flags); |
478 | 478 | ||
479 | /* Stop DMA notification */ | 479 | /* Stop DMA notification */ |
480 | priv->dma_ctrl &= ~(METH_DMA_TX_INT_EN); | 480 | priv->dma_ctrl &= ~(METH_DMA_TX_INT_EN); |
@@ -527,12 +527,13 @@ static void meth_tx_cleanup(struct net_device* dev, unsigned long int_status) | |||
527 | } | 527 | } |
528 | 528 | ||
529 | mace->eth.int_stat = METH_INT_TX_EMPTY | METH_INT_TX_PKT; | 529 | mace->eth.int_stat = METH_INT_TX_EMPTY | METH_INT_TX_PKT; |
530 | spin_unlock(&priv->meth_lock); | 530 | spin_unlock_irqrestore(&priv->meth_lock, flags); |
531 | } | 531 | } |
532 | 532 | ||
533 | static void meth_error(struct net_device* dev, unsigned status) | 533 | static void meth_error(struct net_device* dev, unsigned status) |
534 | { | 534 | { |
535 | struct meth_private *priv = netdev_priv(dev); | 535 | struct meth_private *priv = netdev_priv(dev); |
536 | unsigned long flags; | ||
536 | 537 | ||
537 | printk(KERN_WARNING "meth: error status: 0x%08x\n",status); | 538 | printk(KERN_WARNING "meth: error status: 0x%08x\n",status); |
538 | /* check for errors too... */ | 539 | /* check for errors too... */ |
@@ -547,7 +548,7 @@ static void meth_error(struct net_device* dev, unsigned status) | |||
547 | printk(KERN_WARNING "meth: Rx overflow\n"); | 548 | printk(KERN_WARNING "meth: Rx overflow\n"); |
548 | if (status & (METH_INT_RX_UNDERFLOW)) { | 549 | if (status & (METH_INT_RX_UNDERFLOW)) { |
549 | printk(KERN_WARNING "meth: Rx underflow\n"); | 550 | printk(KERN_WARNING "meth: Rx underflow\n"); |
550 | spin_lock(&priv->meth_lock); | 551 | spin_lock_irqsave(&priv->meth_lock, flags); |
551 | mace->eth.int_stat = METH_INT_RX_UNDERFLOW; | 552 | mace->eth.int_stat = METH_INT_RX_UNDERFLOW; |
552 | /* more underflow interrupts will be delivered, | 553 | /* more underflow interrupts will be delivered, |
553 | * effectively throwing us into an infinite loop. | 554 | * effectively throwing us into an infinite loop. |
@@ -555,7 +556,7 @@ static void meth_error(struct net_device* dev, unsigned status) | |||
555 | priv->dma_ctrl &= ~METH_DMA_RX_EN; | 556 | priv->dma_ctrl &= ~METH_DMA_RX_EN; |
556 | mace->eth.dma_ctrl = priv->dma_ctrl; | 557 | mace->eth.dma_ctrl = priv->dma_ctrl; |
557 | DPRINTK("Disabled meth Rx DMA temporarily\n"); | 558 | DPRINTK("Disabled meth Rx DMA temporarily\n"); |
558 | spin_unlock(&priv->meth_lock); | 559 | spin_unlock_irqrestore(&priv->meth_lock, flags); |
559 | } | 560 | } |
560 | mace->eth.int_stat = METH_INT_ERROR; | 561 | mace->eth.int_stat = METH_INT_ERROR; |
561 | } | 562 | } |
diff --git a/drivers/net/mlx4/en_cq.c b/drivers/net/mlx4/en_cq.c index 91f50de84be..a276125b709 100644 --- a/drivers/net/mlx4/en_cq.c +++ b/drivers/net/mlx4/en_cq.c | |||
@@ -125,8 +125,10 @@ void mlx4_en_deactivate_cq(struct mlx4_en_priv *priv, struct mlx4_en_cq *cq) | |||
125 | 125 | ||
126 | if (cq->is_tx) | 126 | if (cq->is_tx) |
127 | del_timer(&cq->timer); | 127 | del_timer(&cq->timer); |
128 | else | 128 | else { |
129 | napi_disable(&cq->napi); | 129 | napi_disable(&cq->napi); |
130 | netif_napi_del(&cq->napi); | ||
131 | } | ||
130 | 132 | ||
131 | mlx4_cq_free(mdev->dev, &cq->mcq); | 133 | mlx4_cq_free(mdev->dev, &cq->mcq); |
132 | } | 134 | } |
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c index a400d7115f7..6bb5af35eda 100644 --- a/drivers/net/mv643xx_eth.c +++ b/drivers/net/mv643xx_eth.c | |||
@@ -569,7 +569,7 @@ static int rxq_process(struct rx_queue *rxq, int budget) | |||
569 | if (rxq->rx_curr_desc == rxq->rx_ring_size) | 569 | if (rxq->rx_curr_desc == rxq->rx_ring_size) |
570 | rxq->rx_curr_desc = 0; | 570 | rxq->rx_curr_desc = 0; |
571 | 571 | ||
572 | dma_unmap_single(NULL, rx_desc->buf_ptr, | 572 | dma_unmap_single(mp->dev->dev.parent, rx_desc->buf_ptr, |
573 | rx_desc->buf_size, DMA_FROM_DEVICE); | 573 | rx_desc->buf_size, DMA_FROM_DEVICE); |
574 | rxq->rx_desc_count--; | 574 | rxq->rx_desc_count--; |
575 | rx++; | 575 | rx++; |
@@ -678,8 +678,9 @@ static int rxq_refill(struct rx_queue *rxq, int budget) | |||
678 | 678 | ||
679 | rx_desc = rxq->rx_desc_area + rx; | 679 | rx_desc = rxq->rx_desc_area + rx; |
680 | 680 | ||
681 | rx_desc->buf_ptr = dma_map_single(NULL, skb->data, | 681 | rx_desc->buf_ptr = dma_map_single(mp->dev->dev.parent, |
682 | mp->skb_size, DMA_FROM_DEVICE); | 682 | skb->data, mp->skb_size, |
683 | DMA_FROM_DEVICE); | ||
683 | rx_desc->buf_size = mp->skb_size; | 684 | rx_desc->buf_size = mp->skb_size; |
684 | rxq->rx_skb[rx] = skb; | 685 | rxq->rx_skb[rx] = skb; |
685 | wmb(); | 686 | wmb(); |
@@ -718,6 +719,7 @@ static inline unsigned int has_tiny_unaligned_frags(struct sk_buff *skb) | |||
718 | 719 | ||
719 | static void txq_submit_frag_skb(struct tx_queue *txq, struct sk_buff *skb) | 720 | static void txq_submit_frag_skb(struct tx_queue *txq, struct sk_buff *skb) |
720 | { | 721 | { |
722 | struct mv643xx_eth_private *mp = txq_to_mp(txq); | ||
721 | int nr_frags = skb_shinfo(skb)->nr_frags; | 723 | int nr_frags = skb_shinfo(skb)->nr_frags; |
722 | int frag; | 724 | int frag; |
723 | 725 | ||
@@ -746,10 +748,10 @@ static void txq_submit_frag_skb(struct tx_queue *txq, struct sk_buff *skb) | |||
746 | 748 | ||
747 | desc->l4i_chk = 0; | 749 | desc->l4i_chk = 0; |
748 | desc->byte_cnt = this_frag->size; | 750 | desc->byte_cnt = this_frag->size; |
749 | desc->buf_ptr = dma_map_page(NULL, this_frag->page, | 751 | desc->buf_ptr = dma_map_page(mp->dev->dev.parent, |
750 | this_frag->page_offset, | 752 | this_frag->page, |
751 | this_frag->size, | 753 | this_frag->page_offset, |
752 | DMA_TO_DEVICE); | 754 | this_frag->size, DMA_TO_DEVICE); |
753 | } | 755 | } |
754 | } | 756 | } |
755 | 757 | ||
@@ -826,7 +828,8 @@ no_csum: | |||
826 | 828 | ||
827 | desc->l4i_chk = l4i_chk; | 829 | desc->l4i_chk = l4i_chk; |
828 | desc->byte_cnt = length; | 830 | desc->byte_cnt = length; |
829 | desc->buf_ptr = dma_map_single(NULL, skb->data, length, DMA_TO_DEVICE); | 831 | desc->buf_ptr = dma_map_single(mp->dev->dev.parent, skb->data, |
832 | length, DMA_TO_DEVICE); | ||
830 | 833 | ||
831 | __skb_queue_tail(&txq->tx_skb, skb); | 834 | __skb_queue_tail(&txq->tx_skb, skb); |
832 | 835 | ||
@@ -956,10 +959,10 @@ static int txq_reclaim(struct tx_queue *txq, int budget, int force) | |||
956 | } | 959 | } |
957 | 960 | ||
958 | if (cmd_sts & TX_FIRST_DESC) { | 961 | if (cmd_sts & TX_FIRST_DESC) { |
959 | dma_unmap_single(NULL, desc->buf_ptr, | 962 | dma_unmap_single(mp->dev->dev.parent, desc->buf_ptr, |
960 | desc->byte_cnt, DMA_TO_DEVICE); | 963 | desc->byte_cnt, DMA_TO_DEVICE); |
961 | } else { | 964 | } else { |
962 | dma_unmap_page(NULL, desc->buf_ptr, | 965 | dma_unmap_page(mp->dev->dev.parent, desc->buf_ptr, |
963 | desc->byte_cnt, DMA_TO_DEVICE); | 966 | desc->byte_cnt, DMA_TO_DEVICE); |
964 | } | 967 | } |
965 | 968 | ||
@@ -1894,9 +1897,9 @@ static int rxq_init(struct mv643xx_eth_private *mp, int index) | |||
1894 | mp->rx_desc_sram_size); | 1897 | mp->rx_desc_sram_size); |
1895 | rxq->rx_desc_dma = mp->rx_desc_sram_addr; | 1898 | rxq->rx_desc_dma = mp->rx_desc_sram_addr; |
1896 | } else { | 1899 | } else { |
1897 | rxq->rx_desc_area = dma_alloc_coherent(NULL, size, | 1900 | rxq->rx_desc_area = dma_alloc_coherent(mp->dev->dev.parent, |
1898 | &rxq->rx_desc_dma, | 1901 | size, &rxq->rx_desc_dma, |
1899 | GFP_KERNEL); | 1902 | GFP_KERNEL); |
1900 | } | 1903 | } |
1901 | 1904 | ||
1902 | if (rxq->rx_desc_area == NULL) { | 1905 | if (rxq->rx_desc_area == NULL) { |
@@ -1947,7 +1950,7 @@ out_free: | |||
1947 | if (index == 0 && size <= mp->rx_desc_sram_size) | 1950 | if (index == 0 && size <= mp->rx_desc_sram_size) |
1948 | iounmap(rxq->rx_desc_area); | 1951 | iounmap(rxq->rx_desc_area); |
1949 | else | 1952 | else |
1950 | dma_free_coherent(NULL, size, | 1953 | dma_free_coherent(mp->dev->dev.parent, size, |
1951 | rxq->rx_desc_area, | 1954 | rxq->rx_desc_area, |
1952 | rxq->rx_desc_dma); | 1955 | rxq->rx_desc_dma); |
1953 | 1956 | ||
@@ -1979,7 +1982,7 @@ static void rxq_deinit(struct rx_queue *rxq) | |||
1979 | rxq->rx_desc_area_size <= mp->rx_desc_sram_size) | 1982 | rxq->rx_desc_area_size <= mp->rx_desc_sram_size) |
1980 | iounmap(rxq->rx_desc_area); | 1983 | iounmap(rxq->rx_desc_area); |
1981 | else | 1984 | else |
1982 | dma_free_coherent(NULL, rxq->rx_desc_area_size, | 1985 | dma_free_coherent(mp->dev->dev.parent, rxq->rx_desc_area_size, |
1983 | rxq->rx_desc_area, rxq->rx_desc_dma); | 1986 | rxq->rx_desc_area, rxq->rx_desc_dma); |
1984 | 1987 | ||
1985 | kfree(rxq->rx_skb); | 1988 | kfree(rxq->rx_skb); |
@@ -2007,9 +2010,9 @@ static int txq_init(struct mv643xx_eth_private *mp, int index) | |||
2007 | mp->tx_desc_sram_size); | 2010 | mp->tx_desc_sram_size); |
2008 | txq->tx_desc_dma = mp->tx_desc_sram_addr; | 2011 | txq->tx_desc_dma = mp->tx_desc_sram_addr; |
2009 | } else { | 2012 | } else { |
2010 | txq->tx_desc_area = dma_alloc_coherent(NULL, size, | 2013 | txq->tx_desc_area = dma_alloc_coherent(mp->dev->dev.parent, |
2011 | &txq->tx_desc_dma, | 2014 | size, &txq->tx_desc_dma, |
2012 | GFP_KERNEL); | 2015 | GFP_KERNEL); |
2013 | } | 2016 | } |
2014 | 2017 | ||
2015 | if (txq->tx_desc_area == NULL) { | 2018 | if (txq->tx_desc_area == NULL) { |
@@ -2053,7 +2056,7 @@ static void txq_deinit(struct tx_queue *txq) | |||
2053 | txq->tx_desc_area_size <= mp->tx_desc_sram_size) | 2056 | txq->tx_desc_area_size <= mp->tx_desc_sram_size) |
2054 | iounmap(txq->tx_desc_area); | 2057 | iounmap(txq->tx_desc_area); |
2055 | else | 2058 | else |
2056 | dma_free_coherent(NULL, txq->tx_desc_area_size, | 2059 | dma_free_coherent(mp->dev->dev.parent, txq->tx_desc_area_size, |
2057 | txq->tx_desc_area, txq->tx_desc_dma); | 2060 | txq->tx_desc_area, txq->tx_desc_dma); |
2058 | } | 2061 | } |
2059 | 2062 | ||
diff --git a/drivers/net/vxge/vxge-traffic.c b/drivers/net/vxge/vxge-traffic.c index 7be0ae10d69..c2eeac4125f 100644 --- a/drivers/net/vxge/vxge-traffic.c +++ b/drivers/net/vxge/vxge-traffic.c | |||
@@ -115,7 +115,7 @@ enum vxge_hw_status vxge_hw_vpath_intr_enable(struct __vxge_hw_vpath_handle *vp) | |||
115 | VXGE_HW_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO1_POISON| | 115 | VXGE_HW_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO1_POISON| |
116 | VXGE_HW_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO2_POISON| | 116 | VXGE_HW_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO2_POISON| |
117 | VXGE_HW_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO1_DMA_ERR| | 117 | VXGE_HW_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO1_DMA_ERR| |
118 | VXGE_HW_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO1_DMA_ERR), 0, 32), | 118 | VXGE_HW_KDFCCTL_ERRORS_REG_KDFCCTL_FIFO2_DMA_ERR), 0, 32), |
119 | &vp_reg->kdfcctl_errors_mask); | 119 | &vp_reg->kdfcctl_errors_mask); |
120 | 120 | ||
121 | __vxge_hw_pio_mem_write32_upper(0, &vp_reg->vpath_ppif_int_mask); | 121 | __vxge_hw_pio_mem_write32_upper(0, &vp_reg->vpath_ppif_int_mask); |
diff --git a/drivers/net/wimax/i2400m/rx.c b/drivers/net/wimax/i2400m/rx.c index 02419bfd64b..f9fc3890232 100644 --- a/drivers/net/wimax/i2400m/rx.c +++ b/drivers/net/wimax/i2400m/rx.c | |||
@@ -819,10 +819,9 @@ void i2400m_roq_queue_update_ws(struct i2400m *i2400m, struct i2400m_roq *roq, | |||
819 | roq_data = (struct i2400m_roq_data *) &skb->cb; | 819 | roq_data = (struct i2400m_roq_data *) &skb->cb; |
820 | i2400m_net_erx(i2400m, skb, roq_data->cs); | 820 | i2400m_net_erx(i2400m, skb, roq_data->cs); |
821 | } | 821 | } |
822 | else { | 822 | else |
823 | __i2400m_roq_queue(i2400m, roq, skb, sn, nsn); | 823 | __i2400m_roq_queue(i2400m, roq, skb, sn, nsn); |
824 | __i2400m_roq_update_ws(i2400m, roq, sn + 1); | 824 | __i2400m_roq_update_ws(i2400m, roq, sn + 1); |
825 | } | ||
826 | i2400m_roq_log_add(i2400m, roq, I2400M_RO_TYPE_PACKET_WS, | 825 | i2400m_roq_log_add(i2400m, roq, I2400M_RO_TYPE_PACKET_WS, |
827 | old_ws, len, sn, nsn, roq->ws); | 826 | old_ws, len, sn, nsn, roq->ws); |
828 | } | 827 | } |
diff --git a/drivers/regulator/da903x.c b/drivers/regulator/da903x.c index 72b15495183..c6628f5a0af 100644 --- a/drivers/regulator/da903x.c +++ b/drivers/regulator/da903x.c | |||
@@ -497,7 +497,7 @@ static struct platform_driver da903x_regulator_driver = { | |||
497 | .owner = THIS_MODULE, | 497 | .owner = THIS_MODULE, |
498 | }, | 498 | }, |
499 | .probe = da903x_regulator_probe, | 499 | .probe = da903x_regulator_probe, |
500 | .remove = da903x_regulator_remove, | 500 | .remove = __devexit_p(da903x_regulator_remove), |
501 | }; | 501 | }; |
502 | 502 | ||
503 | static int __init da903x_regulator_init(void) | 503 | static int __init da903x_regulator_init(void) |
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 0ab8474b00c..d9fcdaedf38 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c | |||
@@ -1487,14 +1487,7 @@ static int ftdi_sio_port_remove(struct usb_serial_port *port) | |||
1487 | 1487 | ||
1488 | remove_sysfs_attrs(port); | 1488 | remove_sysfs_attrs(port); |
1489 | 1489 | ||
1490 | /* all open ports are closed at this point | 1490 | kref_put(&priv->kref, ftdi_sio_priv_release); |
1491 | * (by usbserial.c:__serial_close, which calls ftdi_close) | ||
1492 | */ | ||
1493 | |||
1494 | if (priv) { | ||
1495 | usb_set_serial_port_data(port, NULL); | ||
1496 | kref_put(&priv->kref, ftdi_sio_priv_release); | ||
1497 | } | ||
1498 | 1491 | ||
1499 | return 0; | 1492 | return 0; |
1500 | } | 1493 | } |
diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c index 5759ba53dc9..d06260251c3 100644 --- a/fs/cifs/cifssmb.c +++ b/fs/cifs/cifssmb.c | |||
@@ -2475,7 +2475,7 @@ querySymLinkRetry: | |||
2475 | /* BB FIXME investigate remapping reserved chars here */ | 2475 | /* BB FIXME investigate remapping reserved chars here */ |
2476 | *symlinkinfo = cifs_strndup_from_ucs(data_start, count, | 2476 | *symlinkinfo = cifs_strndup_from_ucs(data_start, count, |
2477 | is_unicode, nls_codepage); | 2477 | is_unicode, nls_codepage); |
2478 | if (!symlinkinfo) | 2478 | if (!*symlinkinfo) |
2479 | rc = -ENOMEM; | 2479 | rc = -ENOMEM; |
2480 | } | 2480 | } |
2481 | } | 2481 | } |
diff --git a/fs/cifs/link.c b/fs/cifs/link.c index ea9d11e3dcb..cd83c53fcbb 100644 --- a/fs/cifs/link.c +++ b/fs/cifs/link.c | |||
@@ -107,48 +107,48 @@ void * | |||
107 | cifs_follow_link(struct dentry *direntry, struct nameidata *nd) | 107 | cifs_follow_link(struct dentry *direntry, struct nameidata *nd) |
108 | { | 108 | { |
109 | struct inode *inode = direntry->d_inode; | 109 | struct inode *inode = direntry->d_inode; |
110 | int rc = -EACCES; | 110 | int rc = -ENOMEM; |
111 | int xid; | 111 | int xid; |
112 | char *full_path = NULL; | 112 | char *full_path = NULL; |
113 | char *target_path = ERR_PTR(-ENOMEM); | 113 | char *target_path = NULL; |
114 | struct cifs_sb_info *cifs_sb; | 114 | struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb); |
115 | struct cifsTconInfo *pTcon; | 115 | struct cifsTconInfo *tcon = cifs_sb->tcon; |
116 | 116 | ||
117 | xid = GetXid(); | 117 | xid = GetXid(); |
118 | 118 | ||
119 | full_path = build_path_from_dentry(direntry); | 119 | /* |
120 | * For now, we just handle symlinks with unix extensions enabled. | ||
121 | * Eventually we should handle NTFS reparse points, and MacOS | ||
122 | * symlink support. For instance... | ||
123 | * | ||
124 | * rc = CIFSSMBQueryReparseLinkInfo(...) | ||
125 | * | ||
126 | * For now, just return -EACCES when the server doesn't support posix | ||
127 | * extensions. Note that we still allow querying symlinks when posix | ||
128 | * extensions are manually disabled. We could disable these as well | ||
129 | * but there doesn't seem to be any harm in allowing the client to | ||
130 | * read them. | ||
131 | */ | ||
132 | if (!(tcon->ses->capabilities & CAP_UNIX)) { | ||
133 | rc = -EACCES; | ||
134 | goto out; | ||
135 | } | ||
120 | 136 | ||
137 | full_path = build_path_from_dentry(direntry); | ||
121 | if (!full_path) | 138 | if (!full_path) |
122 | goto out; | 139 | goto out; |
123 | 140 | ||
124 | cFYI(1, ("Full path: %s inode = 0x%p", full_path, inode)); | 141 | cFYI(1, ("Full path: %s inode = 0x%p", full_path, inode)); |
125 | cifs_sb = CIFS_SB(inode->i_sb); | ||
126 | pTcon = cifs_sb->tcon; | ||
127 | |||
128 | /* We could change this to: | ||
129 | if (pTcon->unix_ext) | ||
130 | but there does not seem any point in refusing to | ||
131 | get symlink info if we can, even if unix extensions | ||
132 | turned off for this mount */ | ||
133 | |||
134 | if (pTcon->ses->capabilities & CAP_UNIX) | ||
135 | rc = CIFSSMBUnixQuerySymLink(xid, pTcon, full_path, | ||
136 | &target_path, | ||
137 | cifs_sb->local_nls); | ||
138 | else { | ||
139 | /* BB add read reparse point symlink code here */ | ||
140 | /* rc = CIFSSMBQueryReparseLinkInfo */ | ||
141 | /* BB Add code to Query ReparsePoint info */ | ||
142 | /* BB Add MAC style xsymlink check here if enabled */ | ||
143 | } | ||
144 | 142 | ||
143 | rc = CIFSSMBUnixQuerySymLink(xid, tcon, full_path, &target_path, | ||
144 | cifs_sb->local_nls); | ||
145 | kfree(full_path); | ||
146 | out: | ||
145 | if (rc != 0) { | 147 | if (rc != 0) { |
146 | kfree(target_path); | 148 | kfree(target_path); |
147 | target_path = ERR_PTR(rc); | 149 | target_path = ERR_PTR(rc); |
148 | } | 150 | } |
149 | 151 | ||
150 | kfree(full_path); | ||
151 | out: | ||
152 | FreeXid(xid); | 152 | FreeXid(xid); |
153 | nd_set_link(nd, target_path); | 153 | nd_set_link(nd, target_path); |
154 | return NULL; | 154 | return NULL; |
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index 370b190a09d..89f98e9a024 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c | |||
@@ -1943,7 +1943,8 @@ int nfs_permission(struct inode *inode, int mask) | |||
1943 | case S_IFREG: | 1943 | case S_IFREG: |
1944 | /* NFSv4 has atomic_open... */ | 1944 | /* NFSv4 has atomic_open... */ |
1945 | if (nfs_server_capable(inode, NFS_CAP_ATOMIC_OPEN) | 1945 | if (nfs_server_capable(inode, NFS_CAP_ATOMIC_OPEN) |
1946 | && (mask & MAY_OPEN)) | 1946 | && (mask & MAY_OPEN) |
1947 | && !(mask & MAY_EXEC)) | ||
1947 | goto out; | 1948 | goto out; |
1948 | break; | 1949 | break; |
1949 | case S_IFDIR: | 1950 | case S_IFDIR: |
diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c index 1215a4f50cd..3567fb9e3fb 100644 --- a/fs/reiserfs/super.c +++ b/fs/reiserfs/super.c | |||
@@ -448,13 +448,11 @@ int remove_save_link(struct inode *inode, int truncate) | |||
448 | static void reiserfs_kill_sb(struct super_block *s) | 448 | static void reiserfs_kill_sb(struct super_block *s) |
449 | { | 449 | { |
450 | if (REISERFS_SB(s)) { | 450 | if (REISERFS_SB(s)) { |
451 | #ifdef CONFIG_REISERFS_FS_XATTR | ||
452 | if (REISERFS_SB(s)->xattr_root) { | 451 | if (REISERFS_SB(s)->xattr_root) { |
453 | d_invalidate(REISERFS_SB(s)->xattr_root); | 452 | d_invalidate(REISERFS_SB(s)->xattr_root); |
454 | dput(REISERFS_SB(s)->xattr_root); | 453 | dput(REISERFS_SB(s)->xattr_root); |
455 | REISERFS_SB(s)->xattr_root = NULL; | 454 | REISERFS_SB(s)->xattr_root = NULL; |
456 | } | 455 | } |
457 | #endif | ||
458 | if (REISERFS_SB(s)->priv_root) { | 456 | if (REISERFS_SB(s)->priv_root) { |
459 | d_invalidate(REISERFS_SB(s)->priv_root); | 457 | d_invalidate(REISERFS_SB(s)->priv_root); |
460 | dput(REISERFS_SB(s)->priv_root); | 458 | dput(REISERFS_SB(s)->priv_root); |
diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c index 2237e10c7c7..8e7deb0e696 100644 --- a/fs/reiserfs/xattr.c +++ b/fs/reiserfs/xattr.c | |||
@@ -123,7 +123,9 @@ static struct dentry *open_xa_root(struct super_block *sb, int flags) | |||
123 | mutex_lock_nested(&privroot->d_inode->i_mutex, I_MUTEX_XATTR); | 123 | mutex_lock_nested(&privroot->d_inode->i_mutex, I_MUTEX_XATTR); |
124 | 124 | ||
125 | xaroot = dget(REISERFS_SB(sb)->xattr_root); | 125 | xaroot = dget(REISERFS_SB(sb)->xattr_root); |
126 | if (!xaroot->d_inode) { | 126 | if (!xaroot) |
127 | xaroot = ERR_PTR(-ENODATA); | ||
128 | else if (!xaroot->d_inode) { | ||
127 | int err = -ENODATA; | 129 | int err = -ENODATA; |
128 | if (xattr_may_create(flags)) | 130 | if (xattr_may_create(flags)) |
129 | err = xattr_mkdir(privroot->d_inode, xaroot, 0700); | 131 | err = xattr_mkdir(privroot->d_inode, xaroot, 0700); |
@@ -685,20 +687,6 @@ out: | |||
685 | return err; | 687 | return err; |
686 | } | 688 | } |
687 | 689 | ||
688 | /* Actual operations that are exported to VFS-land */ | ||
689 | struct xattr_handler *reiserfs_xattr_handlers[] = { | ||
690 | &reiserfs_xattr_user_handler, | ||
691 | &reiserfs_xattr_trusted_handler, | ||
692 | #ifdef CONFIG_REISERFS_FS_SECURITY | ||
693 | &reiserfs_xattr_security_handler, | ||
694 | #endif | ||
695 | #ifdef CONFIG_REISERFS_FS_POSIX_ACL | ||
696 | &reiserfs_posix_acl_access_handler, | ||
697 | &reiserfs_posix_acl_default_handler, | ||
698 | #endif | ||
699 | NULL | ||
700 | }; | ||
701 | |||
702 | /* | 690 | /* |
703 | * In order to implement different sets of xattr operations for each xattr | 691 | * In order to implement different sets of xattr operations for each xattr |
704 | * prefix with the generic xattr API, a filesystem should create a | 692 | * prefix with the generic xattr API, a filesystem should create a |
@@ -883,23 +871,6 @@ static int reiserfs_check_acl(struct inode *inode, int mask) | |||
883 | return error; | 871 | return error; |
884 | } | 872 | } |
885 | 873 | ||
886 | int reiserfs_permission(struct inode *inode, int mask) | ||
887 | { | ||
888 | /* | ||
889 | * We don't do permission checks on the internal objects. | ||
890 | * Permissions are determined by the "owning" object. | ||
891 | */ | ||
892 | if (IS_PRIVATE(inode)) | ||
893 | return 0; | ||
894 | /* | ||
895 | * Stat data v1 doesn't support ACLs. | ||
896 | */ | ||
897 | if (get_inode_sd_version(inode) == STAT_DATA_V1) | ||
898 | return generic_permission(inode, mask, NULL); | ||
899 | else | ||
900 | return generic_permission(inode, mask, reiserfs_check_acl); | ||
901 | } | ||
902 | |||
903 | static int create_privroot(struct dentry *dentry) | 874 | static int create_privroot(struct dentry *dentry) |
904 | { | 875 | { |
905 | int err; | 876 | int err; |
@@ -922,6 +893,28 @@ static int create_privroot(struct dentry *dentry) | |||
922 | return 0; | 893 | return 0; |
923 | } | 894 | } |
924 | 895 | ||
896 | #else | ||
897 | int __init reiserfs_xattr_register_handlers(void) { return 0; } | ||
898 | void reiserfs_xattr_unregister_handlers(void) {} | ||
899 | static int create_privroot(struct dentry *dentry) { return 0; } | ||
900 | #endif | ||
901 | |||
902 | /* Actual operations that are exported to VFS-land */ | ||
903 | struct xattr_handler *reiserfs_xattr_handlers[] = { | ||
904 | #ifdef CONFIG_REISERFS_FS_XATTR | ||
905 | &reiserfs_xattr_user_handler, | ||
906 | &reiserfs_xattr_trusted_handler, | ||
907 | #endif | ||
908 | #ifdef CONFIG_REISERFS_FS_SECURITY | ||
909 | &reiserfs_xattr_security_handler, | ||
910 | #endif | ||
911 | #ifdef CONFIG_REISERFS_FS_POSIX_ACL | ||
912 | &reiserfs_posix_acl_access_handler, | ||
913 | &reiserfs_posix_acl_default_handler, | ||
914 | #endif | ||
915 | NULL | ||
916 | }; | ||
917 | |||
925 | static int xattr_mount_check(struct super_block *s) | 918 | static int xattr_mount_check(struct super_block *s) |
926 | { | 919 | { |
927 | /* We need generation numbers to ensure that the oid mapping is correct | 920 | /* We need generation numbers to ensure that the oid mapping is correct |
@@ -941,10 +934,24 @@ static int xattr_mount_check(struct super_block *s) | |||
941 | return 0; | 934 | return 0; |
942 | } | 935 | } |
943 | 936 | ||
944 | #else | 937 | int reiserfs_permission(struct inode *inode, int mask) |
945 | int __init reiserfs_xattr_register_handlers(void) { return 0; } | 938 | { |
946 | void reiserfs_xattr_unregister_handlers(void) {} | 939 | /* |
940 | * We don't do permission checks on the internal objects. | ||
941 | * Permissions are determined by the "owning" object. | ||
942 | */ | ||
943 | if (IS_PRIVATE(inode)) | ||
944 | return 0; | ||
945 | |||
946 | #ifdef CONFIG_REISERFS_FS_XATTR | ||
947 | /* | ||
948 | * Stat data v1 doesn't support ACLs. | ||
949 | */ | ||
950 | if (get_inode_sd_version(inode) != STAT_DATA_V1) | ||
951 | return generic_permission(inode, mask, reiserfs_check_acl); | ||
947 | #endif | 952 | #endif |
953 | return generic_permission(inode, mask, NULL); | ||
954 | } | ||
948 | 955 | ||
949 | /* This will catch lookups from the fs root to .reiserfs_priv */ | 956 | /* This will catch lookups from the fs root to .reiserfs_priv */ |
950 | static int | 957 | static int |
@@ -992,7 +999,6 @@ int reiserfs_xattr_init(struct super_block *s, int mount_flags) | |||
992 | int err = 0; | 999 | int err = 0; |
993 | struct dentry *privroot = REISERFS_SB(s)->priv_root; | 1000 | struct dentry *privroot = REISERFS_SB(s)->priv_root; |
994 | 1001 | ||
995 | #ifdef CONFIG_REISERFS_FS_XATTR | ||
996 | err = xattr_mount_check(s); | 1002 | err = xattr_mount_check(s); |
997 | if (err) | 1003 | if (err) |
998 | goto error; | 1004 | goto error; |
@@ -1023,14 +1029,11 @@ error: | |||
1023 | clear_bit(REISERFS_XATTRS_USER, &(REISERFS_SB(s)->s_mount_opt)); | 1029 | clear_bit(REISERFS_XATTRS_USER, &(REISERFS_SB(s)->s_mount_opt)); |
1024 | clear_bit(REISERFS_POSIXACL, &(REISERFS_SB(s)->s_mount_opt)); | 1030 | clear_bit(REISERFS_POSIXACL, &(REISERFS_SB(s)->s_mount_opt)); |
1025 | } | 1031 | } |
1026 | #endif | ||
1027 | 1032 | ||
1028 | /* The super_block MS_POSIXACL must mirror the (no)acl mount option. */ | 1033 | /* The super_block MS_POSIXACL must mirror the (no)acl mount option. */ |
1029 | #ifdef CONFIG_REISERFS_FS_POSIX_ACL | ||
1030 | if (reiserfs_posixacl(s)) | 1034 | if (reiserfs_posixacl(s)) |
1031 | s->s_flags |= MS_POSIXACL; | 1035 | s->s_flags |= MS_POSIXACL; |
1032 | else | 1036 | else |
1033 | #endif | ||
1034 | s->s_flags &= ~MS_POSIXACL; | 1037 | s->s_flags &= ~MS_POSIXACL; |
1035 | 1038 | ||
1036 | return err; | 1039 | return err; |
diff --git a/include/asm-generic/local.h b/include/asm-generic/local.h index dbd6150763e..fc218444e31 100644 --- a/include/asm-generic/local.h +++ b/include/asm-generic/local.h | |||
@@ -42,7 +42,7 @@ typedef struct | |||
42 | 42 | ||
43 | #define local_cmpxchg(l, o, n) atomic_long_cmpxchg((&(l)->a), (o), (n)) | 43 | #define local_cmpxchg(l, o, n) atomic_long_cmpxchg((&(l)->a), (o), (n)) |
44 | #define local_xchg(l, n) atomic_long_xchg((&(l)->a), (n)) | 44 | #define local_xchg(l, n) atomic_long_xchg((&(l)->a), (n)) |
45 | #define local_add_unless(l, a, u) atomic_long_add_unless((&(l)->a), (a), (u)) | 45 | #define local_add_unless(l, _a, u) atomic_long_add_unless((&(l)->a), (_a), (u)) |
46 | #define local_inc_not_zero(l) atomic_long_inc_not_zero(&(l)->a) | 46 | #define local_inc_not_zero(l) atomic_long_inc_not_zero(&(l)->a) |
47 | 47 | ||
48 | /* Non-atomic variants, ie. preemption disabled and won't be touched | 48 | /* Non-atomic variants, ie. preemption disabled and won't be touched |
diff --git a/include/linux/reiserfs_xattr.h b/include/linux/reiserfs_xattr.h index cdedc01036e..99928dce37e 100644 --- a/include/linux/reiserfs_xattr.h +++ b/include/linux/reiserfs_xattr.h | |||
@@ -41,6 +41,7 @@ int reiserfs_xattr_init(struct super_block *sb, int mount_flags); | |||
41 | int reiserfs_lookup_privroot(struct super_block *sb); | 41 | int reiserfs_lookup_privroot(struct super_block *sb); |
42 | int reiserfs_delete_xattrs(struct inode *inode); | 42 | int reiserfs_delete_xattrs(struct inode *inode); |
43 | int reiserfs_chown_xattrs(struct inode *inode, struct iattr *attrs); | 43 | int reiserfs_chown_xattrs(struct inode *inode, struct iattr *attrs); |
44 | int reiserfs_permission(struct inode *inode, int mask); | ||
44 | 45 | ||
45 | #ifdef CONFIG_REISERFS_FS_XATTR | 46 | #ifdef CONFIG_REISERFS_FS_XATTR |
46 | #define has_xattr_dir(inode) (REISERFS_I(inode)->i_flags & i_has_xattr_dir) | 47 | #define has_xattr_dir(inode) (REISERFS_I(inode)->i_flags & i_has_xattr_dir) |
@@ -50,7 +51,6 @@ int reiserfs_setxattr(struct dentry *dentry, const char *name, | |||
50 | const void *value, size_t size, int flags); | 51 | const void *value, size_t size, int flags); |
51 | ssize_t reiserfs_listxattr(struct dentry *dentry, char *buffer, size_t size); | 52 | ssize_t reiserfs_listxattr(struct dentry *dentry, char *buffer, size_t size); |
52 | int reiserfs_removexattr(struct dentry *dentry, const char *name); | 53 | int reiserfs_removexattr(struct dentry *dentry, const char *name); |
53 | int reiserfs_permission(struct inode *inode, int mask); | ||
54 | 54 | ||
55 | int reiserfs_xattr_get(struct inode *, const char *, void *, size_t); | 55 | int reiserfs_xattr_get(struct inode *, const char *, void *, size_t); |
56 | int reiserfs_xattr_set(struct inode *, const char *, const void *, size_t, int); | 56 | int reiserfs_xattr_set(struct inode *, const char *, const void *, size_t, int); |
@@ -117,8 +117,6 @@ static inline void reiserfs_init_xattr_rwsem(struct inode *inode) | |||
117 | #define reiserfs_listxattr NULL | 117 | #define reiserfs_listxattr NULL |
118 | #define reiserfs_removexattr NULL | 118 | #define reiserfs_removexattr NULL |
119 | 119 | ||
120 | #define reiserfs_permission NULL | ||
121 | |||
122 | static inline void reiserfs_init_xattr_rwsem(struct inode *inode) | 120 | static inline void reiserfs_init_xattr_rwsem(struct inode *inode) |
123 | { | 121 | { |
124 | } | 122 | } |
diff --git a/kernel/futex.c b/kernel/futex.c index eef8cd26b5e..d546b2d53a6 100644 --- a/kernel/futex.c +++ b/kernel/futex.c | |||
@@ -193,6 +193,7 @@ static void drop_futex_key_refs(union futex_key *key) | |||
193 | * @uaddr: virtual address of the futex | 193 | * @uaddr: virtual address of the futex |
194 | * @fshared: 0 for a PROCESS_PRIVATE futex, 1 for PROCESS_SHARED | 194 | * @fshared: 0 for a PROCESS_PRIVATE futex, 1 for PROCESS_SHARED |
195 | * @key: address where result is stored. | 195 | * @key: address where result is stored. |
196 | * @rw: mapping needs to be read/write (values: VERIFY_READ, VERIFY_WRITE) | ||
196 | * | 197 | * |
197 | * Returns a negative error code or 0 | 198 | * Returns a negative error code or 0 |
198 | * The key words are stored in *key on success. | 199 | * The key words are stored in *key on success. |
@@ -203,7 +204,8 @@ static void drop_futex_key_refs(union futex_key *key) | |||
203 | * | 204 | * |
204 | * lock_page() might sleep, the caller should not hold a spinlock. | 205 | * lock_page() might sleep, the caller should not hold a spinlock. |
205 | */ | 206 | */ |
206 | static int get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key) | 207 | static int |
208 | get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw) | ||
207 | { | 209 | { |
208 | unsigned long address = (unsigned long)uaddr; | 210 | unsigned long address = (unsigned long)uaddr; |
209 | struct mm_struct *mm = current->mm; | 211 | struct mm_struct *mm = current->mm; |
@@ -226,7 +228,7 @@ static int get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key) | |||
226 | * but access_ok() should be faster than find_vma() | 228 | * but access_ok() should be faster than find_vma() |
227 | */ | 229 | */ |
228 | if (!fshared) { | 230 | if (!fshared) { |
229 | if (unlikely(!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))) | 231 | if (unlikely(!access_ok(rw, uaddr, sizeof(u32)))) |
230 | return -EFAULT; | 232 | return -EFAULT; |
231 | key->private.mm = mm; | 233 | key->private.mm = mm; |
232 | key->private.address = address; | 234 | key->private.address = address; |
@@ -235,7 +237,7 @@ static int get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key) | |||
235 | } | 237 | } |
236 | 238 | ||
237 | again: | 239 | again: |
238 | err = get_user_pages_fast(address, 1, 0, &page); | 240 | err = get_user_pages_fast(address, 1, rw == VERIFY_WRITE, &page); |
239 | if (err < 0) | 241 | if (err < 0) |
240 | return err; | 242 | return err; |
241 | 243 | ||
@@ -677,7 +679,7 @@ static int futex_wake(u32 __user *uaddr, int fshared, int nr_wake, u32 bitset) | |||
677 | if (!bitset) | 679 | if (!bitset) |
678 | return -EINVAL; | 680 | return -EINVAL; |
679 | 681 | ||
680 | ret = get_futex_key(uaddr, fshared, &key); | 682 | ret = get_futex_key(uaddr, fshared, &key, VERIFY_READ); |
681 | if (unlikely(ret != 0)) | 683 | if (unlikely(ret != 0)) |
682 | goto out; | 684 | goto out; |
683 | 685 | ||
@@ -723,10 +725,10 @@ futex_wake_op(u32 __user *uaddr1, int fshared, u32 __user *uaddr2, | |||
723 | int ret, op_ret; | 725 | int ret, op_ret; |
724 | 726 | ||
725 | retry: | 727 | retry: |
726 | ret = get_futex_key(uaddr1, fshared, &key1); | 728 | ret = get_futex_key(uaddr1, fshared, &key1, VERIFY_READ); |
727 | if (unlikely(ret != 0)) | 729 | if (unlikely(ret != 0)) |
728 | goto out; | 730 | goto out; |
729 | ret = get_futex_key(uaddr2, fshared, &key2); | 731 | ret = get_futex_key(uaddr2, fshared, &key2, VERIFY_WRITE); |
730 | if (unlikely(ret != 0)) | 732 | if (unlikely(ret != 0)) |
731 | goto out_put_key1; | 733 | goto out_put_key1; |
732 | 734 | ||
@@ -814,10 +816,10 @@ static int futex_requeue(u32 __user *uaddr1, int fshared, u32 __user *uaddr2, | |||
814 | int ret, drop_count = 0; | 816 | int ret, drop_count = 0; |
815 | 817 | ||
816 | retry: | 818 | retry: |
817 | ret = get_futex_key(uaddr1, fshared, &key1); | 819 | ret = get_futex_key(uaddr1, fshared, &key1, VERIFY_READ); |
818 | if (unlikely(ret != 0)) | 820 | if (unlikely(ret != 0)) |
819 | goto out; | 821 | goto out; |
820 | ret = get_futex_key(uaddr2, fshared, &key2); | 822 | ret = get_futex_key(uaddr2, fshared, &key2, VERIFY_READ); |
821 | if (unlikely(ret != 0)) | 823 | if (unlikely(ret != 0)) |
822 | goto out_put_key1; | 824 | goto out_put_key1; |
823 | 825 | ||
@@ -1140,7 +1142,7 @@ static int futex_wait(u32 __user *uaddr, int fshared, | |||
1140 | q.bitset = bitset; | 1142 | q.bitset = bitset; |
1141 | retry: | 1143 | retry: |
1142 | q.key = FUTEX_KEY_INIT; | 1144 | q.key = FUTEX_KEY_INIT; |
1143 | ret = get_futex_key(uaddr, fshared, &q.key); | 1145 | ret = get_futex_key(uaddr, fshared, &q.key, VERIFY_READ); |
1144 | if (unlikely(ret != 0)) | 1146 | if (unlikely(ret != 0)) |
1145 | goto out; | 1147 | goto out; |
1146 | 1148 | ||
@@ -1330,7 +1332,7 @@ static int futex_lock_pi(u32 __user *uaddr, int fshared, | |||
1330 | q.pi_state = NULL; | 1332 | q.pi_state = NULL; |
1331 | retry: | 1333 | retry: |
1332 | q.key = FUTEX_KEY_INIT; | 1334 | q.key = FUTEX_KEY_INIT; |
1333 | ret = get_futex_key(uaddr, fshared, &q.key); | 1335 | ret = get_futex_key(uaddr, fshared, &q.key, VERIFY_WRITE); |
1334 | if (unlikely(ret != 0)) | 1336 | if (unlikely(ret != 0)) |
1335 | goto out; | 1337 | goto out; |
1336 | 1338 | ||
@@ -1594,7 +1596,7 @@ retry: | |||
1594 | if ((uval & FUTEX_TID_MASK) != task_pid_vnr(current)) | 1596 | if ((uval & FUTEX_TID_MASK) != task_pid_vnr(current)) |
1595 | return -EPERM; | 1597 | return -EPERM; |
1596 | 1598 | ||
1597 | ret = get_futex_key(uaddr, fshared, &key); | 1599 | ret = get_futex_key(uaddr, fshared, &key, VERIFY_WRITE); |
1598 | if (unlikely(ret != 0)) | 1600 | if (unlikely(ret != 0)) |
1599 | goto out; | 1601 | goto out; |
1600 | 1602 | ||
diff --git a/kernel/lockdep_internals.h b/kernel/lockdep_internals.h index a2cc7e9a6e8..699a2ac3a0d 100644 --- a/kernel/lockdep_internals.h +++ b/kernel/lockdep_internals.h | |||
@@ -54,9 +54,9 @@ enum { | |||
54 | * table (if it's not there yet), and we check it for lock order | 54 | * table (if it's not there yet), and we check it for lock order |
55 | * conflicts and deadlocks. | 55 | * conflicts and deadlocks. |
56 | */ | 56 | */ |
57 | #define MAX_LOCKDEP_ENTRIES 8192UL | 57 | #define MAX_LOCKDEP_ENTRIES 16384UL |
58 | 58 | ||
59 | #define MAX_LOCKDEP_CHAINS_BITS 14 | 59 | #define MAX_LOCKDEP_CHAINS_BITS 15 |
60 | #define MAX_LOCKDEP_CHAINS (1UL << MAX_LOCKDEP_CHAINS_BITS) | 60 | #define MAX_LOCKDEP_CHAINS (1UL << MAX_LOCKDEP_CHAINS_BITS) |
61 | 61 | ||
62 | #define MAX_LOCKDEP_CHAIN_HLOCKS (MAX_LOCKDEP_CHAINS*5) | 62 | #define MAX_LOCKDEP_CHAIN_HLOCKS (MAX_LOCKDEP_CHAINS*5) |
diff --git a/kernel/power/disk.c b/kernel/power/disk.c index e71ca9cd81b..b0dc9e7a0d1 100644 --- a/kernel/power/disk.c +++ b/kernel/power/disk.c | |||
@@ -241,9 +241,9 @@ static int create_image(int platform_mode) | |||
241 | 241 | ||
242 | local_irq_disable(); | 242 | local_irq_disable(); |
243 | 243 | ||
244 | sysdev_suspend(PMSG_FREEZE); | 244 | error = sysdev_suspend(PMSG_FREEZE); |
245 | if (error) { | 245 | if (error) { |
246 | printk(KERN_ERR "PM: Some devices failed to power down, " | 246 | printk(KERN_ERR "PM: Some system devices failed to power down, " |
247 | "aborting hibernation\n"); | 247 | "aborting hibernation\n"); |
248 | goto Enable_irqs; | 248 | goto Enable_irqs; |
249 | } | 249 | } |
diff --git a/kernel/sched_clock.c b/kernel/sched_clock.c index 819f17ac796..e1d16c9a768 100644 --- a/kernel/sched_clock.c +++ b/kernel/sched_clock.c | |||
@@ -38,7 +38,8 @@ | |||
38 | */ | 38 | */ |
39 | unsigned long long __attribute__((weak)) sched_clock(void) | 39 | unsigned long long __attribute__((weak)) sched_clock(void) |
40 | { | 40 | { |
41 | return (unsigned long long)jiffies * (NSEC_PER_SEC / HZ); | 41 | return (unsigned long long)(jiffies - INITIAL_JIFFIES) |
42 | * (NSEC_PER_SEC / HZ); | ||
42 | } | 43 | } |
43 | 44 | ||
44 | static __read_mostly int sched_clock_running; | 45 | static __read_mostly int sched_clock_running; |
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index a884c09006c..cda81ec58d9 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c | |||
@@ -2380,7 +2380,7 @@ static const char readme_msg[] = | |||
2380 | "# echo print-parent > /debug/tracing/trace_options\n" | 2380 | "# echo print-parent > /debug/tracing/trace_options\n" |
2381 | "# echo 1 > /debug/tracing/tracing_enabled\n" | 2381 | "# echo 1 > /debug/tracing/tracing_enabled\n" |
2382 | "# cat /debug/tracing/trace > /tmp/trace.txt\n" | 2382 | "# cat /debug/tracing/trace > /tmp/trace.txt\n" |
2383 | "echo 0 > /debug/tracing/tracing_enabled\n" | 2383 | "# echo 0 > /debug/tracing/tracing_enabled\n" |
2384 | ; | 2384 | ; |
2385 | 2385 | ||
2386 | static ssize_t | 2386 | static ssize_t |
diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 30351f0063a..bb553c3e955 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c | |||
@@ -94,12 +94,12 @@ unsigned long vm_dirty_bytes; | |||
94 | /* | 94 | /* |
95 | * The interval between `kupdate'-style writebacks | 95 | * The interval between `kupdate'-style writebacks |
96 | */ | 96 | */ |
97 | unsigned int dirty_writeback_interval = 5 * 100; /* sentiseconds */ | 97 | unsigned int dirty_writeback_interval = 5 * 100; /* centiseconds */ |
98 | 98 | ||
99 | /* | 99 | /* |
100 | * The longest time for which data is allowed to remain dirty | 100 | * The longest time for which data is allowed to remain dirty |
101 | */ | 101 | */ |
102 | unsigned int dirty_expire_interval = 30 * 100; /* sentiseconds */ | 102 | unsigned int dirty_expire_interval = 30 * 100; /* centiseconds */ |
103 | 103 | ||
104 | /* | 104 | /* |
105 | * Flag that makes the machine dump writes/reads and block dirtyings. | 105 | * Flag that makes the machine dump writes/reads and block dirtyings. |
@@ -770,7 +770,7 @@ static void wb_kupdate(unsigned long arg) | |||
770 | 770 | ||
771 | sync_supers(); | 771 | sync_supers(); |
772 | 772 | ||
773 | oldest_jif = jiffies - msecs_to_jiffies(dirty_expire_interval); | 773 | oldest_jif = jiffies - msecs_to_jiffies(dirty_expire_interval * 10); |
774 | start_jif = jiffies; | 774 | start_jif = jiffies; |
775 | next_jif = start_jif + msecs_to_jiffies(dirty_writeback_interval * 10); | 775 | next_jif = start_jif + msecs_to_jiffies(dirty_writeback_interval * 10); |
776 | nr_to_write = global_page_state(NR_FILE_DIRTY) + | 776 | nr_to_write = global_page_state(NR_FILE_DIRTY) + |
@@ -60,6 +60,7 @@ | |||
60 | #include <linux/kernel.h> | 60 | #include <linux/kernel.h> |
61 | #include <linux/slab.h> | 61 | #include <linux/slab.h> |
62 | #include <linux/mm.h> | 62 | #include <linux/mm.h> |
63 | #include <linux/swap.h> /* struct reclaim_state */ | ||
63 | #include <linux/cache.h> | 64 | #include <linux/cache.h> |
64 | #include <linux/init.h> | 65 | #include <linux/init.h> |
65 | #include <linux/module.h> | 66 | #include <linux/module.h> |
@@ -255,6 +256,8 @@ static void *slob_new_pages(gfp_t gfp, int order, int node) | |||
255 | 256 | ||
256 | static void slob_free_pages(void *b, int order) | 257 | static void slob_free_pages(void *b, int order) |
257 | { | 258 | { |
259 | if (current->reclaim_state) | ||
260 | current->reclaim_state->reclaimed_slab += 1 << order; | ||
258 | free_pages((unsigned long)b, order); | 261 | free_pages((unsigned long)b, order); |
259 | } | 262 | } |
260 | 263 | ||
@@ -407,7 +410,7 @@ static void slob_free(void *block, int size) | |||
407 | spin_unlock_irqrestore(&slob_lock, flags); | 410 | spin_unlock_irqrestore(&slob_lock, flags); |
408 | clear_slob_page(sp); | 411 | clear_slob_page(sp); |
409 | free_slob_page(sp); | 412 | free_slob_page(sp); |
410 | free_page((unsigned long)b); | 413 | slob_free_pages(b, 0); |
411 | return; | 414 | return; |
412 | } | 415 | } |
413 | 416 | ||
@@ -9,6 +9,7 @@ | |||
9 | */ | 9 | */ |
10 | 10 | ||
11 | #include <linux/mm.h> | 11 | #include <linux/mm.h> |
12 | #include <linux/swap.h> /* struct reclaim_state */ | ||
12 | #include <linux/module.h> | 13 | #include <linux/module.h> |
13 | #include <linux/bit_spinlock.h> | 14 | #include <linux/bit_spinlock.h> |
14 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
@@ -1170,6 +1171,8 @@ static void __free_slab(struct kmem_cache *s, struct page *page) | |||
1170 | 1171 | ||
1171 | __ClearPageSlab(page); | 1172 | __ClearPageSlab(page); |
1172 | reset_page_mapcount(page); | 1173 | reset_page_mapcount(page); |
1174 | if (current->reclaim_state) | ||
1175 | current->reclaim_state->reclaimed_slab += pages; | ||
1173 | __free_pages(page, order); | 1176 | __free_pages(page, order); |
1174 | } | 1177 | } |
1175 | 1178 | ||
@@ -1909,7 +1912,7 @@ static inline int calculate_order(int size) | |||
1909 | * Doh this slab cannot be placed using slub_max_order. | 1912 | * Doh this slab cannot be placed using slub_max_order. |
1910 | */ | 1913 | */ |
1911 | order = slab_order(size, 1, MAX_ORDER, 1); | 1914 | order = slab_order(size, 1, MAX_ORDER, 1); |
1912 | if (order <= MAX_ORDER) | 1915 | if (order < MAX_ORDER) |
1913 | return order; | 1916 | return order; |
1914 | return -ENOSYS; | 1917 | return -ENOSYS; |
1915 | } | 1918 | } |
@@ -2522,6 +2525,7 @@ __setup("slub_min_order=", setup_slub_min_order); | |||
2522 | static int __init setup_slub_max_order(char *str) | 2525 | static int __init setup_slub_max_order(char *str) |
2523 | { | 2526 | { |
2524 | get_option(&str, &slub_max_order); | 2527 | get_option(&str, &slub_max_order); |
2528 | slub_max_order = min(slub_max_order, MAX_ORDER - 1); | ||
2525 | 2529 | ||
2526 | return 1; | 2530 | return 1; |
2527 | } | 2531 | } |
diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c index 30b88777c3d..5ee1a3682bf 100644 --- a/net/bridge/br_input.c +++ b/net/bridge/br_input.c | |||
@@ -134,6 +134,10 @@ struct sk_buff *br_handle_frame(struct net_bridge_port *p, struct sk_buff *skb) | |||
134 | if (skb->protocol == htons(ETH_P_PAUSE)) | 134 | if (skb->protocol == htons(ETH_P_PAUSE)) |
135 | goto drop; | 135 | goto drop; |
136 | 136 | ||
137 | /* If STP is turned off, then forward */ | ||
138 | if (p->br->stp_enabled == BR_NO_STP && dest[5] == 0) | ||
139 | goto forward; | ||
140 | |||
137 | if (NF_HOOK(PF_BRIDGE, NF_BR_LOCAL_IN, skb, skb->dev, | 141 | if (NF_HOOK(PF_BRIDGE, NF_BR_LOCAL_IN, skb, skb->dev, |
138 | NULL, br_handle_local_finish)) | 142 | NULL, br_handle_local_finish)) |
139 | return NULL; /* frame consumed by filter */ | 143 | return NULL; /* frame consumed by filter */ |
@@ -141,6 +145,7 @@ struct sk_buff *br_handle_frame(struct net_bridge_port *p, struct sk_buff *skb) | |||
141 | return skb; /* continue processing */ | 145 | return skb; /* continue processing */ |
142 | } | 146 | } |
143 | 147 | ||
148 | forward: | ||
144 | switch (p->state) { | 149 | switch (p->state) { |
145 | case BR_STATE_FORWARDING: | 150 | case BR_STATE_FORWARDING: |
146 | rhook = rcu_dereference(br_should_route_hook); | 151 | rhook = rcu_dereference(br_should_route_hook); |
diff --git a/net/bridge/br_stp.c b/net/bridge/br_stp.c index 6e63ec3f1fc..0660515f399 100644 --- a/net/bridge/br_stp.c +++ b/net/bridge/br_stp.c | |||
@@ -297,6 +297,9 @@ void br_topology_change_detection(struct net_bridge *br) | |||
297 | { | 297 | { |
298 | int isroot = br_is_root_bridge(br); | 298 | int isroot = br_is_root_bridge(br); |
299 | 299 | ||
300 | if (br->stp_enabled != BR_KERNEL_STP) | ||
301 | return; | ||
302 | |||
300 | pr_info("%s: topology change detected, %s\n", br->dev->name, | 303 | pr_info("%s: topology change detected, %s\n", br->dev->name, |
301 | isroot ? "propagating" : "sending tcn bpdu"); | 304 | isroot ? "propagating" : "sending tcn bpdu"); |
302 | 305 | ||
diff --git a/net/core/gen_estimator.c b/net/core/gen_estimator.c index 9cc9f95b109..6d62d4618cf 100644 --- a/net/core/gen_estimator.c +++ b/net/core/gen_estimator.c | |||
@@ -66,9 +66,9 @@ | |||
66 | 66 | ||
67 | NOTES. | 67 | NOTES. |
68 | 68 | ||
69 | * The stored value for avbps is scaled by 2^5, so that maximal | 69 | * avbps is scaled by 2^5, avpps is scaled by 2^10. |
70 | rate is ~1Gbit, avpps is scaled by 2^10. | 70 | * both values are reported as 32 bit unsigned values. bps can |
71 | 71 | overflow for fast links : max speed being 34360Mbit/sec | |
72 | * Minimal interval is HZ/4=250msec (it is the greatest common divisor | 72 | * Minimal interval is HZ/4=250msec (it is the greatest common divisor |
73 | for HZ=100 and HZ=1024 8)), maximal interval | 73 | for HZ=100 and HZ=1024 8)), maximal interval |
74 | is (HZ*2^EST_MAX_INTERVAL)/4 = 8sec. Shorter intervals | 74 | is (HZ*2^EST_MAX_INTERVAL)/4 = 8sec. Shorter intervals |
@@ -86,9 +86,9 @@ struct gen_estimator | |||
86 | spinlock_t *stats_lock; | 86 | spinlock_t *stats_lock; |
87 | int ewma_log; | 87 | int ewma_log; |
88 | u64 last_bytes; | 88 | u64 last_bytes; |
89 | u64 avbps; | ||
89 | u32 last_packets; | 90 | u32 last_packets; |
90 | u32 avpps; | 91 | u32 avpps; |
91 | u32 avbps; | ||
92 | struct rcu_head e_rcu; | 92 | struct rcu_head e_rcu; |
93 | struct rb_node node; | 93 | struct rb_node node; |
94 | }; | 94 | }; |
@@ -115,6 +115,7 @@ static void est_timer(unsigned long arg) | |||
115 | rcu_read_lock(); | 115 | rcu_read_lock(); |
116 | list_for_each_entry_rcu(e, &elist[idx].list, list) { | 116 | list_for_each_entry_rcu(e, &elist[idx].list, list) { |
117 | u64 nbytes; | 117 | u64 nbytes; |
118 | u64 brate; | ||
118 | u32 npackets; | 119 | u32 npackets; |
119 | u32 rate; | 120 | u32 rate; |
120 | 121 | ||
@@ -125,9 +126,9 @@ static void est_timer(unsigned long arg) | |||
125 | 126 | ||
126 | nbytes = e->bstats->bytes; | 127 | nbytes = e->bstats->bytes; |
127 | npackets = e->bstats->packets; | 128 | npackets = e->bstats->packets; |
128 | rate = (nbytes - e->last_bytes)<<(7 - idx); | 129 | brate = (nbytes - e->last_bytes)<<(7 - idx); |
129 | e->last_bytes = nbytes; | 130 | e->last_bytes = nbytes; |
130 | e->avbps += ((long)rate - (long)e->avbps) >> e->ewma_log; | 131 | e->avbps += ((s64)(brate - e->avbps)) >> e->ewma_log; |
131 | e->rate_est->bps = (e->avbps+0xF)>>5; | 132 | e->rate_est->bps = (e->avbps+0xF)>>5; |
132 | 133 | ||
133 | rate = (npackets - e->last_packets)<<(12 - idx); | 134 | rate = (npackets - e->last_packets)<<(12 - idx); |
diff --git a/net/core/netpoll.c b/net/core/netpoll.c index b5873bdff61..64f51eec657 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c | |||
@@ -175,9 +175,13 @@ static void service_arp_queue(struct netpoll_info *npi) | |||
175 | void netpoll_poll(struct netpoll *np) | 175 | void netpoll_poll(struct netpoll *np) |
176 | { | 176 | { |
177 | struct net_device *dev = np->dev; | 177 | struct net_device *dev = np->dev; |
178 | const struct net_device_ops *ops = dev->netdev_ops; | 178 | const struct net_device_ops *ops; |
179 | |||
180 | if (!dev || !netif_running(dev)) | ||
181 | return; | ||
179 | 182 | ||
180 | if (!dev || !netif_running(dev) || !ops->ndo_poll_controller) | 183 | ops = dev->netdev_ops; |
184 | if (!ops->ndo_poll_controller) | ||
181 | return; | 185 | return; |
182 | 186 | ||
183 | /* Process pending work on NIC */ | 187 | /* Process pending work on NIC */ |
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index d152394b261..e505b5392e1 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
@@ -2288,7 +2288,7 @@ unsigned int skb_seq_read(unsigned int consumed, const u8 **data, | |||
2288 | next_skb: | 2288 | next_skb: |
2289 | block_limit = skb_headlen(st->cur_skb) + st->stepped_offset; | 2289 | block_limit = skb_headlen(st->cur_skb) + st->stepped_offset; |
2290 | 2290 | ||
2291 | if (abs_offset < block_limit) { | 2291 | if (abs_offset < block_limit && !st->frag_data) { |
2292 | *data = st->cur_skb->data + (abs_offset - st->stepped_offset); | 2292 | *data = st->cur_skb->data + (abs_offset - st->stepped_offset); |
2293 | return block_limit - abs_offset; | 2293 | return block_limit - abs_offset; |
2294 | } | 2294 | } |
diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig index 9d26a3da37e..5b919f7b45d 100644 --- a/net/ipv4/Kconfig +++ b/net/ipv4/Kconfig | |||
@@ -408,7 +408,7 @@ config INET_XFRM_MODE_BEET | |||
408 | 408 | ||
409 | config INET_LRO | 409 | config INET_LRO |
410 | bool "Large Receive Offload (ipv4/tcp)" | 410 | bool "Large Receive Offload (ipv4/tcp)" |
411 | 411 | default y | |
412 | ---help--- | 412 | ---help--- |
413 | Support for Large Receive Offload (ipv4/tcp). | 413 | Support for Large Receive Offload (ipv4/tcp). |
414 | 414 | ||
diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c index 90d22ae0a41..88bf051d0cb 100644 --- a/net/ipv4/ipconfig.c +++ b/net/ipv4/ipconfig.c | |||
@@ -139,6 +139,8 @@ __be32 ic_servaddr = NONE; /* Boot server IP address */ | |||
139 | __be32 root_server_addr = NONE; /* Address of NFS server */ | 139 | __be32 root_server_addr = NONE; /* Address of NFS server */ |
140 | u8 root_server_path[256] = { 0, }; /* Path to mount as root */ | 140 | u8 root_server_path[256] = { 0, }; /* Path to mount as root */ |
141 | 141 | ||
142 | u32 ic_dev_xid; /* Device under configuration */ | ||
143 | |||
142 | /* vendor class identifier */ | 144 | /* vendor class identifier */ |
143 | static char vendor_class_identifier[253] __initdata; | 145 | static char vendor_class_identifier[253] __initdata; |
144 | 146 | ||
@@ -932,6 +934,13 @@ static int __init ic_bootp_recv(struct sk_buff *skb, struct net_device *dev, str | |||
932 | goto drop_unlock; | 934 | goto drop_unlock; |
933 | } | 935 | } |
934 | 936 | ||
937 | /* Is it a reply for the device we are configuring? */ | ||
938 | if (b->xid != ic_dev_xid) { | ||
939 | if (net_ratelimit()) | ||
940 | printk(KERN_ERR "DHCP/BOOTP: Ignoring delayed packet \n"); | ||
941 | goto drop_unlock; | ||
942 | } | ||
943 | |||
935 | /* Parse extensions */ | 944 | /* Parse extensions */ |
936 | if (ext_len >= 4 && | 945 | if (ext_len >= 4 && |
937 | !memcmp(b->exten, ic_bootp_cookie, 4)) { /* Check magic cookie */ | 946 | !memcmp(b->exten, ic_bootp_cookie, 4)) { /* Check magic cookie */ |
@@ -1115,6 +1124,9 @@ static int __init ic_dynamic(void) | |||
1115 | get_random_bytes(&timeout, sizeof(timeout)); | 1124 | get_random_bytes(&timeout, sizeof(timeout)); |
1116 | timeout = CONF_BASE_TIMEOUT + (timeout % (unsigned) CONF_TIMEOUT_RANDOM); | 1125 | timeout = CONF_BASE_TIMEOUT + (timeout % (unsigned) CONF_TIMEOUT_RANDOM); |
1117 | for (;;) { | 1126 | for (;;) { |
1127 | /* Track the device we are configuring */ | ||
1128 | ic_dev_xid = d->xid; | ||
1129 | |||
1118 | #ifdef IPCONFIG_BOOTP | 1130 | #ifdef IPCONFIG_BOOTP |
1119 | if (do_bootp && (d->able & IC_BOOTP)) | 1131 | if (do_bootp && (d->able & IC_BOOTP)) |
1120 | ic_bootp_send_if(d, jiffies - start_jiffies); | 1132 | ic_bootp_send_if(d, jiffies - start_jiffies); |
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 1d7f49c6f0c..7a0f0b27bf1 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c | |||
@@ -1321,6 +1321,7 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, | |||
1321 | struct task_struct *user_recv = NULL; | 1321 | struct task_struct *user_recv = NULL; |
1322 | int copied_early = 0; | 1322 | int copied_early = 0; |
1323 | struct sk_buff *skb; | 1323 | struct sk_buff *skb; |
1324 | u32 urg_hole = 0; | ||
1324 | 1325 | ||
1325 | lock_sock(sk); | 1326 | lock_sock(sk); |
1326 | 1327 | ||
@@ -1532,7 +1533,8 @@ do_prequeue: | |||
1532 | } | 1533 | } |
1533 | } | 1534 | } |
1534 | } | 1535 | } |
1535 | if ((flags & MSG_PEEK) && peek_seq != tp->copied_seq) { | 1536 | if ((flags & MSG_PEEK) && |
1537 | (peek_seq - copied - urg_hole != tp->copied_seq)) { | ||
1536 | if (net_ratelimit()) | 1538 | if (net_ratelimit()) |
1537 | printk(KERN_DEBUG "TCP(%s:%d): Application bug, race in MSG_PEEK.\n", | 1539 | printk(KERN_DEBUG "TCP(%s:%d): Application bug, race in MSG_PEEK.\n", |
1538 | current->comm, task_pid_nr(current)); | 1540 | current->comm, task_pid_nr(current)); |
@@ -1553,6 +1555,7 @@ do_prequeue: | |||
1553 | if (!urg_offset) { | 1555 | if (!urg_offset) { |
1554 | if (!sock_flag(sk, SOCK_URGINLINE)) { | 1556 | if (!sock_flag(sk, SOCK_URGINLINE)) { |
1555 | ++*seq; | 1557 | ++*seq; |
1558 | urg_hole++; | ||
1556 | offset++; | 1559 | offset++; |
1557 | used--; | 1560 | used--; |
1558 | if (!used) | 1561 | if (!used) |
diff --git a/net/sched/sch_teql.c b/net/sched/sch_teql.c index ec697cebb63..3b641829723 100644 --- a/net/sched/sch_teql.c +++ b/net/sched/sch_teql.c | |||
@@ -303,6 +303,8 @@ restart: | |||
303 | switch (teql_resolve(skb, skb_res, slave)) { | 303 | switch (teql_resolve(skb, skb_res, slave)) { |
304 | case 0: | 304 | case 0: |
305 | if (__netif_tx_trylock(slave_txq)) { | 305 | if (__netif_tx_trylock(slave_txq)) { |
306 | unsigned int length = qdisc_pkt_len(skb); | ||
307 | |||
306 | if (!netif_tx_queue_stopped(slave_txq) && | 308 | if (!netif_tx_queue_stopped(slave_txq) && |
307 | !netif_tx_queue_frozen(slave_txq) && | 309 | !netif_tx_queue_frozen(slave_txq) && |
308 | slave_ops->ndo_start_xmit(skb, slave) == 0) { | 310 | slave_ops->ndo_start_xmit(skb, slave) == 0) { |
@@ -310,8 +312,7 @@ restart: | |||
310 | master->slaves = NEXT_SLAVE(q); | 312 | master->slaves = NEXT_SLAVE(q); |
311 | netif_wake_queue(dev); | 313 | netif_wake_queue(dev); |
312 | master->stats.tx_packets++; | 314 | master->stats.tx_packets++; |
313 | master->stats.tx_bytes += | 315 | master->stats.tx_bytes += length; |
314 | qdisc_pkt_len(skb); | ||
315 | return 0; | 316 | return 0; |
316 | } | 317 | } |
317 | __netif_tx_unlock(slave_txq); | 318 | __netif_tx_unlock(slave_txq); |
diff --git a/scripts/setlocalversion b/scripts/setlocalversion index 32c8554f394..00790472f64 100755 --- a/scripts/setlocalversion +++ b/scripts/setlocalversion | |||
@@ -1,5 +1,13 @@ | |||
1 | #!/bin/sh | 1 | #!/bin/sh |
2 | # Print additional version information for non-release trees. | 2 | # |
3 | # This scripts adds local version information from the version | ||
4 | # control systems git, mercurial (hg) and subversion (svn). | ||
5 | # | ||
6 | # If something goes wrong, send a mail the kernel build mailinglist | ||
7 | # (see MAINTAINERS) and CC Nico Schottelius | ||
8 | # <nico-linuxsetlocalversion -at- schottelius.org>. | ||
9 | # | ||
10 | # | ||
3 | 11 | ||
4 | usage() { | 12 | usage() { |
5 | echo "Usage: $0 [srctree]" >&2 | 13 | echo "Usage: $0 [srctree]" >&2 |
@@ -10,12 +18,20 @@ cd "${1:-.}" || usage | |||
10 | 18 | ||
11 | # Check for git and a git repo. | 19 | # Check for git and a git repo. |
12 | if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then | 20 | if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then |
13 | # Do we have an untagged tag? | 21 | |
14 | if atag=`git describe 2>/dev/null`; then | 22 | # If we are at a tagged commit (like "v2.6.30-rc6"), we ignore it, |
15 | echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}' | 23 | # because this version is defined in the top level Makefile. |
16 | # add -g${head}, if there is no usable tag | 24 | if [ -z "`git describe --exact-match 2>/dev/null`" ]; then |
17 | else | 25 | |
18 | printf '%s%s' -g $head | 26 | # If we are past a tagged commit (like "v2.6.30-rc5-302-g72357d5"), |
27 | # we pretty print it. | ||
28 | if atag="`git describe 2>/dev/null`"; then | ||
29 | echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}' | ||
30 | |||
31 | # If we don't have a tag at all we print -g{commitish}. | ||
32 | else | ||
33 | printf '%s%s' -g $head | ||
34 | fi | ||
19 | fi | 35 | fi |
20 | 36 | ||
21 | # Is this git on svn? | 37 | # Is this git on svn? |