Magellan Linux

Contents of /trunk/kernel-alx/patches-3.14/0112-3.14.13-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2506 - (show annotations) (download)
Fri Oct 17 07:55:45 2014 UTC (9 years, 6 months ago) by niro
File size: 70794 byte(s)
-patches for 3.14
1 diff --git a/Documentation/cpu-freq/intel-pstate.txt b/Documentation/cpu-freq/intel-pstate.txt
2 index e742d21dbd96..a69ffe1d54d5 100644
3 --- a/Documentation/cpu-freq/intel-pstate.txt
4 +++ b/Documentation/cpu-freq/intel-pstate.txt
5 @@ -15,10 +15,13 @@ New sysfs files for controlling P state selection have been added to
6 /sys/devices/system/cpu/intel_pstate/
7
8 max_perf_pct: limits the maximum P state that will be requested by
9 - the driver stated as a percentage of the available performance.
10 + the driver stated as a percentage of the available performance. The
11 + available (P states) performance may be reduced by the no_turbo
12 + setting described below.
13
14 min_perf_pct: limits the minimum P state that will be requested by
15 - the driver stated as a percentage of the available performance.
16 + the driver stated as a percentage of the max (non-turbo)
17 + performance level.
18
19 no_turbo: limits the driver to selecting P states below the turbo
20 frequency range.
21 diff --git a/Makefile b/Makefile
22 index 13d8f323ae43..7a2981c972ae 100644
23 --- a/Makefile
24 +++ b/Makefile
25 @@ -1,6 +1,6 @@
26 VERSION = 3
27 PATCHLEVEL = 14
28 -SUBLEVEL = 12
29 +SUBLEVEL = 13
30 EXTRAVERSION =
31 NAME = Remembering Coco
32
33 diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h
34 index 9dc5dc39fded..11ad59b856c6 100644
35 --- a/arch/arm64/include/asm/memory.h
36 +++ b/arch/arm64/include/asm/memory.h
37 @@ -56,6 +56,8 @@
38 #define TASK_SIZE_32 UL(0x100000000)
39 #define TASK_SIZE (test_thread_flag(TIF_32BIT) ? \
40 TASK_SIZE_32 : TASK_SIZE_64)
41 +#define TASK_SIZE_OF(tsk) (test_tsk_thread_flag(tsk, TIF_32BIT) ? \
42 + TASK_SIZE_32 : TASK_SIZE_64)
43 #else
44 #define TASK_SIZE TASK_SIZE_64
45 #endif /* CONFIG_COMPAT */
46 diff --git a/arch/metag/include/asm/processor.h b/arch/metag/include/asm/processor.h
47 index 3be8581af495..a8a37477c66e 100644
48 --- a/arch/metag/include/asm/processor.h
49 +++ b/arch/metag/include/asm/processor.h
50 @@ -23,7 +23,7 @@
51 #define STACK_TOP (TASK_SIZE - PAGE_SIZE)
52 #define STACK_TOP_MAX STACK_TOP
53 /* Maximum virtual space for stack */
54 -#define STACK_SIZE_MAX (1 << 28) /* 256 MB */
55 +#define STACK_SIZE_MAX (CONFIG_MAX_STACK_SIZE_MB*1024*1024)
56
57 /* This decides where the kernel will search for a free chunk of vm
58 * space during mmap's.
59 diff --git a/arch/parisc/include/asm/processor.h b/arch/parisc/include/asm/processor.h
60 index 86522ef09d52..d951c9681ab3 100644
61 --- a/arch/parisc/include/asm/processor.h
62 +++ b/arch/parisc/include/asm/processor.h
63 @@ -55,7 +55,10 @@
64 #define STACK_TOP TASK_SIZE
65 #define STACK_TOP_MAX DEFAULT_TASK_SIZE
66
67 -#define STACK_SIZE_MAX (1 << 30) /* 1 GB */
68 +/* Allow bigger stacks for 64-bit processes */
69 +#define STACK_SIZE_MAX (USER_WIDE_MODE \
70 + ? (1 << 30) /* 1 GB */ \
71 + : (CONFIG_MAX_STACK_SIZE_MB*1024*1024))
72
73 #endif
74
75 diff --git a/arch/parisc/kernel/hardware.c b/arch/parisc/kernel/hardware.c
76 index 608716f8496b..af3bc359dc70 100644
77 --- a/arch/parisc/kernel/hardware.c
78 +++ b/arch/parisc/kernel/hardware.c
79 @@ -1210,7 +1210,8 @@ static struct hp_hardware hp_hardware_list[] = {
80 {HPHW_FIO, 0x004, 0x00320, 0x0, "Metheus Frame Buffer"},
81 {HPHW_FIO, 0x004, 0x00340, 0x0, "BARCO CX4500 VME Grphx Cnsl"},
82 {HPHW_FIO, 0x004, 0x00360, 0x0, "Hughes TOG VME FDDI"},
83 - {HPHW_FIO, 0x076, 0x000AD, 0x00, "Crestone Peak RS-232"},
84 + {HPHW_FIO, 0x076, 0x000AD, 0x0, "Crestone Peak Core RS-232"},
85 + {HPHW_FIO, 0x077, 0x000AD, 0x0, "Crestone Peak Fast? Core RS-232"},
86 {HPHW_IOA, 0x185, 0x0000B, 0x00, "Java BC Summit Port"},
87 {HPHW_IOA, 0x1FF, 0x0000B, 0x00, "Hitachi Ghostview Summit Port"},
88 {HPHW_IOA, 0x580, 0x0000B, 0x10, "U2-IOA BC Runway Port"},
89 diff --git a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_parisc.c
90 index 31ffa9b55322..e1ffea2f9a0b 100644
91 --- a/arch/parisc/kernel/sys_parisc.c
92 +++ b/arch/parisc/kernel/sys_parisc.c
93 @@ -72,10 +72,10 @@ static unsigned long mmap_upper_limit(void)
94 {
95 unsigned long stack_base;
96
97 - /* Limit stack size to 1GB - see setup_arg_pages() in fs/exec.c */
98 + /* Limit stack size - see setup_arg_pages() in fs/exec.c */
99 stack_base = rlimit_max(RLIMIT_STACK);
100 - if (stack_base > (1 << 30))
101 - stack_base = 1 << 30;
102 + if (stack_base > STACK_SIZE_MAX)
103 + stack_base = STACK_SIZE_MAX;
104
105 return PAGE_ALIGN(STACK_TOP - stack_base);
106 }
107 diff --git a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c
108 index bb9f3b64de55..ec741fe02ab6 100644
109 --- a/arch/parisc/kernel/sys_parisc32.c
110 +++ b/arch/parisc/kernel/sys_parisc32.c
111 @@ -4,6 +4,7 @@
112 * Copyright (C) 2000-2001 Hewlett Packard Company
113 * Copyright (C) 2000 John Marvin
114 * Copyright (C) 2001 Matthew Wilcox
115 + * Copyright (C) 2014 Helge Deller <deller@gmx.de>
116 *
117 * These routines maintain argument size conversion between 32bit and 64bit
118 * environment. Based heavily on sys_ia32.c and sys_sparc32.c.
119 @@ -57,3 +58,12 @@ asmlinkage long sys32_unimplemented(int r26, int r25, int r24, int r23,
120 current->comm, current->pid, r20);
121 return -ENOSYS;
122 }
123 +
124 +asmlinkage long sys32_fanotify_mark(compat_int_t fanotify_fd, compat_uint_t flags,
125 + compat_uint_t mask0, compat_uint_t mask1, compat_int_t dfd,
126 + const char __user * pathname)
127 +{
128 + return sys_fanotify_mark(fanotify_fd, flags,
129 + ((__u64)mask1 << 32) | mask0,
130 + dfd, pathname);
131 +}
132 diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S
133 index 83ead0ea127d..7dd8a3b22147 100644
134 --- a/arch/parisc/kernel/syscall_table.S
135 +++ b/arch/parisc/kernel/syscall_table.S
136 @@ -418,7 +418,7 @@
137 ENTRY_SAME(accept4) /* 320 */
138 ENTRY_SAME(prlimit64)
139 ENTRY_SAME(fanotify_init)
140 - ENTRY_COMP(fanotify_mark)
141 + ENTRY_DIFF(fanotify_mark)
142 ENTRY_COMP(clock_adjtime)
143 ENTRY_SAME(name_to_handle_at) /* 325 */
144 ENTRY_COMP(open_by_handle_at)
145 diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
146 index 957bf344c0f5..2156fa2d25fe 100644
147 --- a/arch/powerpc/Kconfig
148 +++ b/arch/powerpc/Kconfig
149 @@ -410,7 +410,7 @@ config KEXEC
150 config CRASH_DUMP
151 bool "Build a kdump crash kernel"
152 depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP)
153 - select RELOCATABLE if PPC64 || 44x || FSL_BOOKE
154 + select RELOCATABLE if (PPC64 && !COMPILE_TEST) || 44x || FSL_BOOKE
155 help
156 Build a kernel suitable for use as a kdump capture kernel.
157 The same kernel binary can be used as production kernel and dump
158 @@ -1000,6 +1000,7 @@ endmenu
159 if PPC64
160 config RELOCATABLE
161 bool "Build a relocatable kernel"
162 + depends on !COMPILE_TEST
163 select NONSTATIC_KERNEL
164 help
165 This builds a kernel image that is capable of running anywhere
166 diff --git a/arch/powerpc/include/asm/perf_event_server.h b/arch/powerpc/include/asm/perf_event_server.h
167 index 3fd2f1b6f906..cefc7b4f4fb1 100644
168 --- a/arch/powerpc/include/asm/perf_event_server.h
169 +++ b/arch/powerpc/include/asm/perf_event_server.h
170 @@ -60,8 +60,7 @@ struct power_pmu {
171 #define PPMU_SIAR_VALID 0x00000010 /* Processor has SIAR Valid bit */
172 #define PPMU_HAS_SSLOT 0x00000020 /* Has sampled slot in MMCRA */
173 #define PPMU_HAS_SIER 0x00000040 /* Has SIER */
174 -#define PPMU_BHRB 0x00000080 /* has BHRB feature enabled */
175 -#define PPMU_EBB 0x00000100 /* supports event based branch */
176 +#define PPMU_ARCH_207S 0x00000080 /* PMC is architecture v2.07S */
177
178 /*
179 * Values for flags to get_alternatives()
180 diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c
181 index 67cf22083f4c..38265dc85318 100644
182 --- a/arch/powerpc/perf/core-book3s.c
183 +++ b/arch/powerpc/perf/core-book3s.c
184 @@ -483,7 +483,7 @@ static bool is_ebb_event(struct perf_event *event)
185 * check that the PMU supports EBB, meaning those that don't can still
186 * use bit 63 of the event code for something else if they wish.
187 */
188 - return (ppmu->flags & PPMU_EBB) &&
189 + return (ppmu->flags & PPMU_ARCH_207S) &&
190 ((event->attr.config >> PERF_EVENT_CONFIG_EBB_SHIFT) & 1);
191 }
192
193 @@ -851,7 +851,22 @@ static void power_pmu_read(struct perf_event *event)
194 } while (local64_cmpxchg(&event->hw.prev_count, prev, val) != prev);
195
196 local64_add(delta, &event->count);
197 - local64_sub(delta, &event->hw.period_left);
198 +
199 + /*
200 + * A number of places program the PMC with (0x80000000 - period_left).
201 + * We never want period_left to be less than 1 because we will program
202 + * the PMC with a value >= 0x800000000 and an edge detected PMC will
203 + * roll around to 0 before taking an exception. We have seen this
204 + * on POWER8.
205 + *
206 + * To fix this, clamp the minimum value of period_left to 1.
207 + */
208 + do {
209 + prev = local64_read(&event->hw.period_left);
210 + val = prev - delta;
211 + if (val < 1)
212 + val = 1;
213 + } while (local64_cmpxchg(&event->hw.period_left, prev, val) != prev);
214 }
215
216 /*
217 @@ -1152,6 +1167,9 @@ static void power_pmu_enable(struct pmu *pmu)
218
219 write_mmcr0(cpuhw, mmcr0);
220
221 + if (ppmu->flags & PPMU_ARCH_207S)
222 + mtspr(SPRN_MMCR2, 0);
223 +
224 /*
225 * Enable instruction sampling if necessary
226 */
227 @@ -1548,7 +1566,7 @@ static int power_pmu_event_init(struct perf_event *event)
228
229 if (has_branch_stack(event)) {
230 /* PMU has BHRB enabled */
231 - if (!(ppmu->flags & PPMU_BHRB))
232 + if (!(ppmu->flags & PPMU_ARCH_207S))
233 return -EOPNOTSUPP;
234 }
235
236 diff --git a/arch/powerpc/perf/power8-pmu.c b/arch/powerpc/perf/power8-pmu.c
237 index 96cee20dcd34..4a06530cbb71 100644
238 --- a/arch/powerpc/perf/power8-pmu.c
239 +++ b/arch/powerpc/perf/power8-pmu.c
240 @@ -751,7 +751,7 @@ static struct power_pmu power8_pmu = {
241 .get_constraint = power8_get_constraint,
242 .get_alternatives = power8_get_alternatives,
243 .disable_pmc = power8_disable_pmc,
244 - .flags = PPMU_HAS_SSLOT | PPMU_HAS_SIER | PPMU_BHRB | PPMU_EBB,
245 + .flags = PPMU_HAS_SSLOT | PPMU_HAS_SIER | PPMU_ARCH_207S,
246 .n_generic = ARRAY_SIZE(power8_generic_events),
247 .generic_events = power8_generic_events,
248 .cache_events = &power8_cache_events,
249 diff --git a/arch/x86/crypto/sha512_ssse3_glue.c b/arch/x86/crypto/sha512_ssse3_glue.c
250 index f30cd10293f0..8626b03e83b7 100644
251 --- a/arch/x86/crypto/sha512_ssse3_glue.c
252 +++ b/arch/x86/crypto/sha512_ssse3_glue.c
253 @@ -141,7 +141,7 @@ static int sha512_ssse3_final(struct shash_desc *desc, u8 *out)
254
255 /* save number of bits */
256 bits[1] = cpu_to_be64(sctx->count[0] << 3);
257 - bits[0] = cpu_to_be64(sctx->count[1] << 3) | sctx->count[0] >> 61;
258 + bits[0] = cpu_to_be64(sctx->count[1] << 3 | sctx->count[0] >> 61);
259
260 /* Pad out to 112 mod 128 and append length */
261 index = sctx->count[0] & 0x7f;
262 diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
263 index 799580cabc78..94bd24771812 100644
264 --- a/arch/x86/mm/ioremap.c
265 +++ b/arch/x86/mm/ioremap.c
266 @@ -50,6 +50,21 @@ int ioremap_change_attr(unsigned long vaddr, unsigned long size,
267 return err;
268 }
269
270 +static int __ioremap_check_ram(unsigned long start_pfn, unsigned long nr_pages,
271 + void *arg)
272 +{
273 + unsigned long i;
274 +
275 + for (i = 0; i < nr_pages; ++i)
276 + if (pfn_valid(start_pfn + i) &&
277 + !PageReserved(pfn_to_page(start_pfn + i)))
278 + return 1;
279 +
280 + WARN_ONCE(1, "ioremap on RAM pfn 0x%lx\n", start_pfn);
281 +
282 + return 0;
283 +}
284 +
285 /*
286 * Remap an arbitrary physical address space into the kernel virtual
287 * address space. Needed when the kernel wants to access high addresses
288 @@ -93,14 +108,11 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr,
289 /*
290 * Don't allow anybody to remap normal RAM that we're using..
291 */
292 + pfn = phys_addr >> PAGE_SHIFT;
293 last_pfn = last_addr >> PAGE_SHIFT;
294 - for (pfn = phys_addr >> PAGE_SHIFT; pfn <= last_pfn; pfn++) {
295 - int is_ram = page_is_ram(pfn);
296 -
297 - if (is_ram && pfn_valid(pfn) && !PageReserved(pfn_to_page(pfn)))
298 - return NULL;
299 - WARN_ON_ONCE(is_ram);
300 - }
301 + if (walk_system_ram_range(pfn, last_pfn - pfn + 1, NULL,
302 + __ioremap_check_ram) == 1)
303 + return NULL;
304
305 /*
306 * Mappings have to be page-aligned
307 diff --git a/drivers/acpi/ac.c b/drivers/acpi/ac.c
308 index 7c1f8452918a..0bebc6905383 100644
309 --- a/drivers/acpi/ac.c
310 +++ b/drivers/acpi/ac.c
311 @@ -30,6 +30,10 @@
312 #include <linux/types.h>
313 #include <linux/dmi.h>
314 #include <linux/delay.h>
315 +#ifdef CONFIG_ACPI_PROCFS_POWER
316 +#include <linux/proc_fs.h>
317 +#include <linux/seq_file.h>
318 +#endif
319 #include <linux/platform_device.h>
320 #include <linux/power_supply.h>
321 #include <linux/acpi.h>
322 @@ -51,6 +55,7 @@ MODULE_AUTHOR("Paul Diefenbaugh");
323 MODULE_DESCRIPTION("ACPI AC Adapter Driver");
324 MODULE_LICENSE("GPL");
325
326 +
327 static int acpi_ac_add(struct acpi_device *device);
328 static int acpi_ac_remove(struct acpi_device *device);
329 static void acpi_ac_notify(struct acpi_device *device, u32 event);
330 @@ -66,6 +71,13 @@ static int acpi_ac_resume(struct device *dev);
331 #endif
332 static SIMPLE_DEV_PM_OPS(acpi_ac_pm, NULL, acpi_ac_resume);
333
334 +#ifdef CONFIG_ACPI_PROCFS_POWER
335 +extern struct proc_dir_entry *acpi_lock_ac_dir(void);
336 +extern void *acpi_unlock_ac_dir(struct proc_dir_entry *acpi_ac_dir);
337 +static int acpi_ac_open_fs(struct inode *inode, struct file *file);
338 +#endif
339 +
340 +
341 static int ac_sleep_before_get_state_ms;
342
343 static struct acpi_driver acpi_ac_driver = {
344 @@ -89,6 +101,16 @@ struct acpi_ac {
345
346 #define to_acpi_ac(x) container_of(x, struct acpi_ac, charger)
347
348 +#ifdef CONFIG_ACPI_PROCFS_POWER
349 +static const struct file_operations acpi_ac_fops = {
350 + .owner = THIS_MODULE,
351 + .open = acpi_ac_open_fs,
352 + .read = seq_read,
353 + .llseek = seq_lseek,
354 + .release = single_release,
355 +};
356 +#endif
357 +
358 /* --------------------------------------------------------------------------
359 AC Adapter Management
360 -------------------------------------------------------------------------- */
361 @@ -141,6 +163,83 @@ static enum power_supply_property ac_props[] = {
362 POWER_SUPPLY_PROP_ONLINE,
363 };
364
365 +#ifdef CONFIG_ACPI_PROCFS_POWER
366 +/* --------------------------------------------------------------------------
367 + FS Interface (/proc)
368 + -------------------------------------------------------------------------- */
369 +
370 +static struct proc_dir_entry *acpi_ac_dir;
371 +
372 +static int acpi_ac_seq_show(struct seq_file *seq, void *offset)
373 +{
374 + struct acpi_ac *ac = seq->private;
375 +
376 +
377 + if (!ac)
378 + return 0;
379 +
380 + if (acpi_ac_get_state(ac)) {
381 + seq_puts(seq, "ERROR: Unable to read AC Adapter state\n");
382 + return 0;
383 + }
384 +
385 + seq_puts(seq, "state: ");
386 + switch (ac->state) {
387 + case ACPI_AC_STATUS_OFFLINE:
388 + seq_puts(seq, "off-line\n");
389 + break;
390 + case ACPI_AC_STATUS_ONLINE:
391 + seq_puts(seq, "on-line\n");
392 + break;
393 + default:
394 + seq_puts(seq, "unknown\n");
395 + break;
396 + }
397 +
398 + return 0;
399 +}
400 +
401 +static int acpi_ac_open_fs(struct inode *inode, struct file *file)
402 +{
403 + return single_open(file, acpi_ac_seq_show, PDE_DATA(inode));
404 +}
405 +
406 +static int acpi_ac_add_fs(struct acpi_ac *ac)
407 +{
408 + struct proc_dir_entry *entry = NULL;
409 +
410 + printk(KERN_WARNING PREFIX "Deprecated procfs I/F for AC is loaded,"
411 + " please retry with CONFIG_ACPI_PROCFS_POWER cleared\n");
412 + if (!acpi_device_dir(ac->device)) {
413 + acpi_device_dir(ac->device) =
414 + proc_mkdir(acpi_device_bid(ac->device), acpi_ac_dir);
415 + if (!acpi_device_dir(ac->device))
416 + return -ENODEV;
417 + }
418 +
419 + /* 'state' [R] */
420 + entry = proc_create_data(ACPI_AC_FILE_STATE,
421 + S_IRUGO, acpi_device_dir(ac->device),
422 + &acpi_ac_fops, ac);
423 + if (!entry)
424 + return -ENODEV;
425 + return 0;
426 +}
427 +
428 +static int acpi_ac_remove_fs(struct acpi_ac *ac)
429 +{
430 +
431 + if (acpi_device_dir(ac->device)) {
432 + remove_proc_entry(ACPI_AC_FILE_STATE,
433 + acpi_device_dir(ac->device));
434 + remove_proc_entry(acpi_device_bid(ac->device), acpi_ac_dir);
435 + acpi_device_dir(ac->device) = NULL;
436 + }
437 +
438 + return 0;
439 +}
440 +#endif
441 +
442 /* --------------------------------------------------------------------------
443 Driver Model
444 -------------------------------------------------------------------------- */
445 @@ -221,6 +320,11 @@ static int acpi_ac_add(struct acpi_device *device)
446 goto end;
447
448 ac->charger.name = acpi_device_bid(device);
449 +#ifdef CONFIG_ACPI_PROCFS_POWER
450 + result = acpi_ac_add_fs(ac);
451 + if (result)
452 + goto end;
453 +#endif
454 ac->charger.type = POWER_SUPPLY_TYPE_MAINS;
455 ac->charger.properties = ac_props;
456 ac->charger.num_properties = ARRAY_SIZE(ac_props);
457 @@ -234,8 +338,12 @@ static int acpi_ac_add(struct acpi_device *device)
458 ac->state ? "on-line" : "off-line");
459
460 end:
461 - if (result)
462 + if (result) {
463 +#ifdef CONFIG_ACPI_PROCFS_POWER
464 + acpi_ac_remove_fs(ac);
465 +#endif
466 kfree(ac);
467 + }
468
469 dmi_check_system(ac_dmi_table);
470 return result;
471 @@ -278,6 +386,10 @@ static int acpi_ac_remove(struct acpi_device *device)
472 if (ac->charger.dev)
473 power_supply_unregister(&ac->charger);
474
475 +#ifdef CONFIG_ACPI_PROCFS_POWER
476 + acpi_ac_remove_fs(ac);
477 +#endif
478 +
479 kfree(ac);
480
481 return 0;
482 @@ -290,9 +402,20 @@ static int __init acpi_ac_init(void)
483 if (acpi_disabled)
484 return -ENODEV;
485
486 +#ifdef CONFIG_ACPI_PROCFS_POWER
487 + acpi_ac_dir = acpi_lock_ac_dir();
488 + if (!acpi_ac_dir)
489 + return -ENODEV;
490 +#endif
491 +
492 +
493 result = acpi_bus_register_driver(&acpi_ac_driver);
494 - if (result < 0)
495 + if (result < 0) {
496 +#ifdef CONFIG_ACPI_PROCFS_POWER
497 + acpi_unlock_ac_dir(acpi_ac_dir);
498 +#endif
499 return -ENODEV;
500 + }
501
502 return 0;
503 }
504 @@ -300,6 +423,9 @@ static int __init acpi_ac_init(void)
505 static void __exit acpi_ac_exit(void)
506 {
507 acpi_bus_unregister_driver(&acpi_ac_driver);
508 +#ifdef CONFIG_ACPI_PROCFS_POWER
509 + acpi_unlock_ac_dir(acpi_ac_dir);
510 +#endif
511 }
512 module_init(acpi_ac_init);
513 module_exit(acpi_ac_exit);
514 diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
515 index efa71d66e8b0..0f004159a317 100644
516 --- a/drivers/acpi/battery.c
517 +++ b/drivers/acpi/battery.c
518 @@ -34,6 +34,7 @@
519 #include <linux/dmi.h>
520 #include <linux/slab.h>
521 #include <linux/suspend.h>
522 +#include <linux/delay.h>
523 #include <asm/unaligned.h>
524
525 #ifdef CONFIG_ACPI_PROCFS_POWER
526 @@ -1070,6 +1071,28 @@ static struct dmi_system_id bat_dmi_table[] = {
527 {},
528 };
529
530 +/*
531 + * Some machines'(E,G Lenovo Z480) ECs are not stable
532 + * during boot up and this causes battery driver fails to be
533 + * probed due to failure of getting battery information
534 + * from EC sometimes. After several retries, the operation
535 + * may work. So add retry code here and 20ms sleep between
536 + * every retries.
537 + */
538 +static int acpi_battery_update_retry(struct acpi_battery *battery)
539 +{
540 + int retry, ret;
541 +
542 + for (retry = 5; retry; retry--) {
543 + ret = acpi_battery_update(battery);
544 + if (!ret)
545 + break;
546 +
547 + msleep(20);
548 + }
549 + return ret;
550 +}
551 +
552 static int acpi_battery_add(struct acpi_device *device)
553 {
554 int result = 0;
555 @@ -1088,9 +1111,11 @@ static int acpi_battery_add(struct acpi_device *device)
556 mutex_init(&battery->sysfs_lock);
557 if (acpi_has_method(battery->device->handle, "_BIX"))
558 set_bit(ACPI_BATTERY_XINFO_PRESENT, &battery->flags);
559 - result = acpi_battery_update(battery);
560 +
561 + result = acpi_battery_update_retry(battery);
562 if (result)
563 goto fail;
564 +
565 #ifdef CONFIG_ACPI_PROCFS_POWER
566 result = acpi_battery_add_fs(device);
567 #endif
568 diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
569 index ad11ba4a412d..49d89909b4ed 100644
570 --- a/drivers/acpi/ec.c
571 +++ b/drivers/acpi/ec.c
572 @@ -78,6 +78,9 @@ enum {
573 EC_FLAGS_BLOCKED, /* Transactions are blocked */
574 };
575
576 +#define ACPI_EC_COMMAND_POLL 0x01 /* Available for command byte */
577 +#define ACPI_EC_COMMAND_COMPLETE 0x02 /* Completed last byte */
578 +
579 /* ec.c is compiled in acpi namespace so this shows up as acpi.ec_delay param */
580 static unsigned int ec_delay __read_mostly = ACPI_EC_DELAY;
581 module_param(ec_delay, uint, 0644);
582 @@ -109,7 +112,7 @@ struct transaction {
583 u8 ri;
584 u8 wlen;
585 u8 rlen;
586 - bool done;
587 + u8 flags;
588 };
589
590 struct acpi_ec *boot_ec, *first_ec;
591 @@ -150,60 +153,74 @@ static inline void acpi_ec_write_data(struct acpi_ec *ec, u8 data)
592 outb(data, ec->data_addr);
593 }
594
595 -static int ec_transaction_done(struct acpi_ec *ec)
596 +static int ec_transaction_completed(struct acpi_ec *ec)
597 {
598 unsigned long flags;
599 int ret = 0;
600 spin_lock_irqsave(&ec->lock, flags);
601 - if (!ec->curr || ec->curr->done)
602 + if (ec->curr && (ec->curr->flags & ACPI_EC_COMMAND_COMPLETE))
603 ret = 1;
604 spin_unlock_irqrestore(&ec->lock, flags);
605 return ret;
606 }
607
608 -static void start_transaction(struct acpi_ec *ec)
609 +static bool advance_transaction(struct acpi_ec *ec)
610 {
611 - ec->curr->irq_count = ec->curr->wi = ec->curr->ri = 0;
612 - ec->curr->done = false;
613 - acpi_ec_write_cmd(ec, ec->curr->command);
614 -}
615 -
616 -static void advance_transaction(struct acpi_ec *ec, u8 status)
617 -{
618 - unsigned long flags;
619 struct transaction *t;
620 + u8 status;
621 + bool wakeup = false;
622
623 - spin_lock_irqsave(&ec->lock, flags);
624 + pr_debug("===== %s =====\n", in_interrupt() ? "IRQ" : "TASK");
625 + status = acpi_ec_read_status(ec);
626 t = ec->curr;
627 if (!t)
628 - goto unlock;
629 - if (t->wlen > t->wi) {
630 - if ((status & ACPI_EC_FLAG_IBF) == 0)
631 - acpi_ec_write_data(ec,
632 - t->wdata[t->wi++]);
633 - else
634 - goto err;
635 - } else if (t->rlen > t->ri) {
636 - if ((status & ACPI_EC_FLAG_OBF) == 1) {
637 - t->rdata[t->ri++] = acpi_ec_read_data(ec);
638 - if (t->rlen == t->ri)
639 - t->done = true;
640 + goto err;
641 + if (t->flags & ACPI_EC_COMMAND_POLL) {
642 + if (t->wlen > t->wi) {
643 + if ((status & ACPI_EC_FLAG_IBF) == 0)
644 + acpi_ec_write_data(ec, t->wdata[t->wi++]);
645 + else
646 + goto err;
647 + } else if (t->rlen > t->ri) {
648 + if ((status & ACPI_EC_FLAG_OBF) == 1) {
649 + t->rdata[t->ri++] = acpi_ec_read_data(ec);
650 + if (t->rlen == t->ri) {
651 + t->flags |= ACPI_EC_COMMAND_COMPLETE;
652 + wakeup = true;
653 + }
654 + } else
655 + goto err;
656 + } else if (t->wlen == t->wi &&
657 + (status & ACPI_EC_FLAG_IBF) == 0) {
658 + t->flags |= ACPI_EC_COMMAND_COMPLETE;
659 + wakeup = true;
660 + }
661 + return wakeup;
662 + } else {
663 + if ((status & ACPI_EC_FLAG_IBF) == 0) {
664 + acpi_ec_write_cmd(ec, t->command);
665 + t->flags |= ACPI_EC_COMMAND_POLL;
666 } else
667 goto err;
668 - } else if (t->wlen == t->wi &&
669 - (status & ACPI_EC_FLAG_IBF) == 0)
670 - t->done = true;
671 - goto unlock;
672 + return wakeup;
673 + }
674 err:
675 /*
676 * If SCI bit is set, then don't think it's a false IRQ
677 * otherwise will take a not handled IRQ as a false one.
678 */
679 - if (in_interrupt() && !(status & ACPI_EC_FLAG_SCI))
680 - ++t->irq_count;
681 + if (!(status & ACPI_EC_FLAG_SCI)) {
682 + if (in_interrupt() && t)
683 + ++t->irq_count;
684 + }
685 + return wakeup;
686 +}
687
688 -unlock:
689 - spin_unlock_irqrestore(&ec->lock, flags);
690 +static void start_transaction(struct acpi_ec *ec)
691 +{
692 + ec->curr->irq_count = ec->curr->wi = ec->curr->ri = 0;
693 + ec->curr->flags = 0;
694 + (void)advance_transaction(ec);
695 }
696
697 static int acpi_ec_sync_query(struct acpi_ec *ec, u8 *data);
698 @@ -228,15 +245,17 @@ static int ec_poll(struct acpi_ec *ec)
699 /* don't sleep with disabled interrupts */
700 if (EC_FLAGS_MSI || irqs_disabled()) {
701 udelay(ACPI_EC_MSI_UDELAY);
702 - if (ec_transaction_done(ec))
703 + if (ec_transaction_completed(ec))
704 return 0;
705 } else {
706 if (wait_event_timeout(ec->wait,
707 - ec_transaction_done(ec),
708 + ec_transaction_completed(ec),
709 msecs_to_jiffies(1)))
710 return 0;
711 }
712 - advance_transaction(ec, acpi_ec_read_status(ec));
713 + spin_lock_irqsave(&ec->lock, flags);
714 + (void)advance_transaction(ec);
715 + spin_unlock_irqrestore(&ec->lock, flags);
716 } while (time_before(jiffies, delay));
717 pr_debug("controller reset, restart transaction\n");
718 spin_lock_irqsave(&ec->lock, flags);
719 @@ -268,23 +287,6 @@ static int acpi_ec_transaction_unlocked(struct acpi_ec *ec,
720 return ret;
721 }
722
723 -static int ec_check_ibf0(struct acpi_ec *ec)
724 -{
725 - u8 status = acpi_ec_read_status(ec);
726 - return (status & ACPI_EC_FLAG_IBF) == 0;
727 -}
728 -
729 -static int ec_wait_ibf0(struct acpi_ec *ec)
730 -{
731 - unsigned long delay = jiffies + msecs_to_jiffies(ec_delay);
732 - /* interrupt wait manually if GPE mode is not active */
733 - while (time_before(jiffies, delay))
734 - if (wait_event_timeout(ec->wait, ec_check_ibf0(ec),
735 - msecs_to_jiffies(1)))
736 - return 0;
737 - return -ETIME;
738 -}
739 -
740 static int acpi_ec_transaction(struct acpi_ec *ec, struct transaction *t)
741 {
742 int status;
743 @@ -305,12 +307,6 @@ static int acpi_ec_transaction(struct acpi_ec *ec, struct transaction *t)
744 goto unlock;
745 }
746 }
747 - if (ec_wait_ibf0(ec)) {
748 - pr_err("input buffer is not empty, "
749 - "aborting transaction\n");
750 - status = -ETIME;
751 - goto end;
752 - }
753 pr_debug("transaction start (cmd=0x%02x, addr=0x%02x)\n",
754 t->command, t->wdata ? t->wdata[0] : 0);
755 /* disable GPE during transaction if storm is detected */
756 @@ -334,7 +330,6 @@ static int acpi_ec_transaction(struct acpi_ec *ec, struct transaction *t)
757 set_bit(EC_FLAGS_GPE_STORM, &ec->flags);
758 }
759 pr_debug("transaction end\n");
760 -end:
761 if (ec->global_lock)
762 acpi_release_global_lock(glk);
763 unlock:
764 @@ -634,17 +629,14 @@ static int ec_check_sci(struct acpi_ec *ec, u8 state)
765 static u32 acpi_ec_gpe_handler(acpi_handle gpe_device,
766 u32 gpe_number, void *data)
767 {
768 + unsigned long flags;
769 struct acpi_ec *ec = data;
770 - u8 status = acpi_ec_read_status(ec);
771
772 - pr_debug("~~~> interrupt, status:0x%02x\n", status);
773 -
774 - advance_transaction(ec, status);
775 - if (ec_transaction_done(ec) &&
776 - (acpi_ec_read_status(ec) & ACPI_EC_FLAG_IBF) == 0) {
777 + spin_lock_irqsave(&ec->lock, flags);
778 + if (advance_transaction(ec))
779 wake_up(&ec->wait);
780 - ec_check_sci(ec, acpi_ec_read_status(ec));
781 - }
782 + spin_unlock_irqrestore(&ec->lock, flags);
783 + ec_check_sci(ec, acpi_ec_read_status(ec));
784 return ACPI_INTERRUPT_HANDLED | ACPI_REENABLE_GPE;
785 }
786
787 diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
788 index 0bdacc5e26a3..2ba8f02ced36 100644
789 --- a/drivers/acpi/resource.c
790 +++ b/drivers/acpi/resource.c
791 @@ -77,7 +77,7 @@ bool acpi_dev_resource_memory(struct acpi_resource *ares, struct resource *res)
792 switch (ares->type) {
793 case ACPI_RESOURCE_TYPE_MEMORY24:
794 memory24 = &ares->data.memory24;
795 - if (!memory24->address_length)
796 + if (!memory24->minimum && !memory24->address_length)
797 return false;
798 acpi_dev_get_memresource(res, memory24->minimum,
799 memory24->address_length,
800 @@ -85,7 +85,7 @@ bool acpi_dev_resource_memory(struct acpi_resource *ares, struct resource *res)
801 break;
802 case ACPI_RESOURCE_TYPE_MEMORY32:
803 memory32 = &ares->data.memory32;
804 - if (!memory32->address_length)
805 + if (!memory32->minimum && !memory32->address_length)
806 return false;
807 acpi_dev_get_memresource(res, memory32->minimum,
808 memory32->address_length,
809 @@ -93,7 +93,7 @@ bool acpi_dev_resource_memory(struct acpi_resource *ares, struct resource *res)
810 break;
811 case ACPI_RESOURCE_TYPE_FIXED_MEMORY32:
812 fixed_memory32 = &ares->data.fixed_memory32;
813 - if (!fixed_memory32->address_length)
814 + if (!fixed_memory32->address && !fixed_memory32->address_length)
815 return false;
816 acpi_dev_get_memresource(res, fixed_memory32->address,
817 fixed_memory32->address_length,
818 @@ -150,7 +150,7 @@ bool acpi_dev_resource_io(struct acpi_resource *ares, struct resource *res)
819 switch (ares->type) {
820 case ACPI_RESOURCE_TYPE_IO:
821 io = &ares->data.io;
822 - if (!io->address_length)
823 + if (!io->minimum && !io->address_length)
824 return false;
825 acpi_dev_get_ioresource(res, io->minimum,
826 io->address_length,
827 @@ -158,7 +158,7 @@ bool acpi_dev_resource_io(struct acpi_resource *ares, struct resource *res)
828 break;
829 case ACPI_RESOURCE_TYPE_FIXED_IO:
830 fixed_io = &ares->data.fixed_io;
831 - if (!fixed_io->address_length)
832 + if (!fixed_io->address && !fixed_io->address_length)
833 return false;
834 acpi_dev_get_ioresource(res, fixed_io->address,
835 fixed_io->address_length,
836 diff --git a/drivers/base/dma-contiguous.c b/drivers/base/dma-contiguous.c
837 index 165c2c299e57..d3bffa478eca 100644
838 --- a/drivers/base/dma-contiguous.c
839 +++ b/drivers/base/dma-contiguous.c
840 @@ -155,13 +155,23 @@ static int __init cma_activate_area(struct cma *cma)
841 base_pfn = pfn;
842 for (j = pageblock_nr_pages; j; --j, pfn++) {
843 WARN_ON_ONCE(!pfn_valid(pfn));
844 + /*
845 + * alloc_contig_range requires the pfn range
846 + * specified to be in the same zone. Make this
847 + * simple by forcing the entire CMA resv range
848 + * to be in the same zone.
849 + */
850 if (page_zone(pfn_to_page(pfn)) != zone)
851 - return -EINVAL;
852 + goto err;
853 }
854 init_cma_reserved_pageblock(pfn_to_page(base_pfn));
855 } while (--i);
856
857 return 0;
858 +
859 +err:
860 + kfree(cma->bitmap);
861 + return -EINVAL;
862 }
863
864 static struct cma cma_areas[MAX_CMA_AREAS];
865 diff --git a/drivers/char/i8k.c b/drivers/char/i8k.c
866 index d915707d2ba1..93dcad0c1cbe 100644
867 --- a/drivers/char/i8k.c
868 +++ b/drivers/char/i8k.c
869 @@ -138,7 +138,9 @@ static int i8k_smm(struct smm_regs *regs)
870 if (!alloc_cpumask_var(&old_mask, GFP_KERNEL))
871 return -ENOMEM;
872 cpumask_copy(old_mask, &current->cpus_allowed);
873 - set_cpus_allowed_ptr(current, cpumask_of(0));
874 + rc = set_cpus_allowed_ptr(current, cpumask_of(0));
875 + if (rc)
876 + goto out;
877 if (smp_processor_id() != 0) {
878 rc = -EBUSY;
879 goto out;
880 diff --git a/drivers/clk/clk-s2mps11.c b/drivers/clk/clk-s2mps11.c
881 index 27c83e45eaed..611b936ecffe 100644
882 --- a/drivers/clk/clk-s2mps11.c
883 +++ b/drivers/clk/clk-s2mps11.c
884 @@ -190,16 +190,13 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
885 goto err_reg;
886 }
887
888 - s2mps11_clk->lookup = devm_kzalloc(&pdev->dev,
889 - sizeof(struct clk_lookup), GFP_KERNEL);
890 + s2mps11_clk->lookup = clkdev_alloc(s2mps11_clk->clk,
891 + s2mps11_name(s2mps11_clk), NULL);
892 if (!s2mps11_clk->lookup) {
893 ret = -ENOMEM;
894 goto err_lup;
895 }
896
897 - s2mps11_clk->lookup->con_id = s2mps11_name(s2mps11_clk);
898 - s2mps11_clk->lookup->clk = s2mps11_clk->clk;
899 -
900 clkdev_add(s2mps11_clk->lookup);
901 }
902
903 diff --git a/drivers/clk/qcom/mmcc-msm8960.c b/drivers/clk/qcom/mmcc-msm8960.c
904 index f9b59c7e48e9..9be47a829144 100644
905 --- a/drivers/clk/qcom/mmcc-msm8960.c
906 +++ b/drivers/clk/qcom/mmcc-msm8960.c
907 @@ -1208,7 +1208,7 @@ static struct clk_branch rot_clk = {
908
909 static u8 mmcc_pxo_hdmi_map[] = {
910 [P_PXO] = 0,
911 - [P_HDMI_PLL] = 2,
912 + [P_HDMI_PLL] = 3,
913 };
914
915 static const char *mmcc_pxo_hdmi[] = {
916 diff --git a/drivers/clk/spear/spear3xx_clock.c b/drivers/clk/spear/spear3xx_clock.c
917 index c2d204315546..125eba86c844 100644
918 --- a/drivers/clk/spear/spear3xx_clock.c
919 +++ b/drivers/clk/spear/spear3xx_clock.c
920 @@ -211,7 +211,7 @@ static inline void spear310_clk_init(void) { }
921 /* array of all spear 320 clock lookups */
922 #ifdef CONFIG_MACH_SPEAR320
923
924 -#define SPEAR320_CONTROL_REG (soc_config_base + 0x0000)
925 +#define SPEAR320_CONTROL_REG (soc_config_base + 0x0010)
926 #define SPEAR320_EXT_CTRL_REG (soc_config_base + 0x0018)
927
928 #define SPEAR320_UARTX_PCLK_MASK 0x1
929 diff --git a/drivers/cpufreq/Makefile b/drivers/cpufreq/Makefile
930 index 74945652dd7a..dac58f67307a 100644
931 --- a/drivers/cpufreq/Makefile
932 +++ b/drivers/cpufreq/Makefile
933 @@ -47,7 +47,7 @@ obj-$(CONFIG_ARM_BIG_LITTLE_CPUFREQ) += arm_big_little.o
934 # LITTLE drivers, so that it is probed last.
935 obj-$(CONFIG_ARM_DT_BL_CPUFREQ) += arm_big_little_dt.o
936
937 -obj-$(CONFIG_ARCH_DAVINCI_DA850) += davinci-cpufreq.o
938 +obj-$(CONFIG_ARCH_DAVINCI) += davinci-cpufreq.o
939 obj-$(CONFIG_UX500_SOC_DB8500) += dbx500-cpufreq.o
940 obj-$(CONFIG_ARM_EXYNOS_CPUFREQ) += exynos-cpufreq.o
941 obj-$(CONFIG_ARM_EXYNOS4210_CPUFREQ) += exynos4210-cpufreq.o
942 diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
943 index 6d98c37c87ad..ae52c777339d 100644
944 --- a/drivers/cpufreq/intel_pstate.c
945 +++ b/drivers/cpufreq/intel_pstate.c
946 @@ -132,6 +132,7 @@ static struct pstate_funcs pstate_funcs;
947
948 struct perf_limits {
949 int no_turbo;
950 + int turbo_disabled;
951 int max_perf_pct;
952 int min_perf_pct;
953 int32_t max_perf;
954 @@ -291,7 +292,10 @@ static ssize_t store_no_turbo(struct kobject *a, struct attribute *b,
955 if (ret != 1)
956 return -EINVAL;
957 limits.no_turbo = clamp_t(int, input, 0 , 1);
958 -
959 + if (limits.turbo_disabled) {
960 + pr_warn("Turbo disabled by BIOS or unavailable on processor\n");
961 + limits.no_turbo = limits.turbo_disabled;
962 + }
963 return count;
964 }
965
966 @@ -361,21 +365,21 @@ static int byt_get_min_pstate(void)
967 {
968 u64 value;
969 rdmsrl(BYT_RATIOS, value);
970 - return (value >> 8) & 0x3F;
971 + return (value >> 8) & 0x7F;
972 }
973
974 static int byt_get_max_pstate(void)
975 {
976 u64 value;
977 rdmsrl(BYT_RATIOS, value);
978 - return (value >> 16) & 0x3F;
979 + return (value >> 16) & 0x7F;
980 }
981
982 static int byt_get_turbo_pstate(void)
983 {
984 u64 value;
985 rdmsrl(BYT_TURBO_RATIOS, value);
986 - return value & 0x3F;
987 + return value & 0x7F;
988 }
989
990 static void byt_set_pstate(struct cpudata *cpudata, int pstate)
991 @@ -385,7 +389,7 @@ static void byt_set_pstate(struct cpudata *cpudata, int pstate)
992 u32 vid;
993
994 val = pstate << 8;
995 - if (limits.no_turbo)
996 + if (limits.no_turbo && !limits.turbo_disabled)
997 val |= (u64)1 << 32;
998
999 vid_fp = cpudata->vid.min + mul_fp(
1000 @@ -409,8 +413,8 @@ static void byt_get_vid(struct cpudata *cpudata)
1001
1002
1003 rdmsrl(BYT_VIDS, value);
1004 - cpudata->vid.min = int_tofp((value >> 8) & 0x3f);
1005 - cpudata->vid.max = int_tofp((value >> 16) & 0x3f);
1006 + cpudata->vid.min = int_tofp((value >> 8) & 0x7f);
1007 + cpudata->vid.max = int_tofp((value >> 16) & 0x7f);
1008 cpudata->vid.ratio = div_fp(
1009 cpudata->vid.max - cpudata->vid.min,
1010 int_tofp(cpudata->pstate.max_pstate -
1011 @@ -452,7 +456,7 @@ static void core_set_pstate(struct cpudata *cpudata, int pstate)
1012 u64 val;
1013
1014 val = pstate << 8;
1015 - if (limits.no_turbo)
1016 + if (limits.no_turbo && !limits.turbo_disabled)
1017 val |= (u64)1 << 32;
1018
1019 wrmsrl(MSR_IA32_PERF_CTL, val);
1020 @@ -705,9 +709,8 @@ static int intel_pstate_init_cpu(unsigned int cpunum)
1021
1022 cpu = all_cpu_data[cpunum];
1023
1024 - intel_pstate_get_cpu_pstates(cpu);
1025 -
1026 cpu->cpu = cpunum;
1027 + intel_pstate_get_cpu_pstates(cpu);
1028
1029 init_timer_deferrable(&cpu->timer);
1030 cpu->timer.function = intel_pstate_timer_func;
1031 @@ -750,7 +753,7 @@ static int intel_pstate_set_policy(struct cpufreq_policy *policy)
1032 limits.min_perf = int_tofp(1);
1033 limits.max_perf_pct = 100;
1034 limits.max_perf = int_tofp(1);
1035 - limits.no_turbo = 0;
1036 + limits.no_turbo = limits.turbo_disabled;
1037 return 0;
1038 }
1039 limits.min_perf_pct = (policy->min * 100) / policy->cpuinfo.max_freq;
1040 @@ -790,6 +793,7 @@ static int intel_pstate_cpu_init(struct cpufreq_policy *policy)
1041 {
1042 struct cpudata *cpu;
1043 int rc;
1044 + u64 misc_en;
1045
1046 rc = intel_pstate_init_cpu(policy->cpu);
1047 if (rc)
1048 @@ -797,8 +801,13 @@ static int intel_pstate_cpu_init(struct cpufreq_policy *policy)
1049
1050 cpu = all_cpu_data[policy->cpu];
1051
1052 - if (!limits.no_turbo &&
1053 - limits.min_perf_pct == 100 && limits.max_perf_pct == 100)
1054 + rdmsrl(MSR_IA32_MISC_ENABLE, misc_en);
1055 + if (misc_en & MSR_IA32_MISC_ENABLE_TURBO_DISABLE ||
1056 + cpu->pstate.max_pstate == cpu->pstate.turbo_pstate) {
1057 + limits.turbo_disabled = 1;
1058 + limits.no_turbo = 1;
1059 + }
1060 + if (limits.min_perf_pct == 100 && limits.max_perf_pct == 100)
1061 policy->policy = CPUFREQ_POLICY_PERFORMANCE;
1062 else
1063 policy->policy = CPUFREQ_POLICY_POWERSAVE;
1064 diff --git a/drivers/crypto/caam/jr.c b/drivers/crypto/caam/jr.c
1065 index 1d80bd3636c5..b512a4ba7569 100644
1066 --- a/drivers/crypto/caam/jr.c
1067 +++ b/drivers/crypto/caam/jr.c
1068 @@ -453,8 +453,8 @@ static int caam_jr_probe(struct platform_device *pdev)
1069 int error;
1070
1071 jrdev = &pdev->dev;
1072 - jrpriv = kmalloc(sizeof(struct caam_drv_private_jr),
1073 - GFP_KERNEL);
1074 + jrpriv = devm_kmalloc(jrdev, sizeof(struct caam_drv_private_jr),
1075 + GFP_KERNEL);
1076 if (!jrpriv)
1077 return -ENOMEM;
1078
1079 @@ -487,10 +487,8 @@ static int caam_jr_probe(struct platform_device *pdev)
1080
1081 /* Now do the platform independent part */
1082 error = caam_jr_init(jrdev); /* now turn on hardware */
1083 - if (error) {
1084 - kfree(jrpriv);
1085 + if (error)
1086 return error;
1087 - }
1088
1089 jrpriv->dev = jrdev;
1090 spin_lock(&driver_data.jr_alloc_lock);
1091 diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c
1092 index 28d24caa49f3..3c78b2268209 100644
1093 --- a/drivers/gpu/drm/i915/i915_gem_stolen.c
1094 +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c
1095 @@ -74,6 +74,50 @@ static unsigned long i915_stolen_to_physical(struct drm_device *dev)
1096 if (base == 0)
1097 return 0;
1098
1099 + /* make sure we don't clobber the GTT if it's within stolen memory */
1100 + if (INTEL_INFO(dev)->gen <= 4 && !IS_G33(dev) && !IS_G4X(dev)) {
1101 + struct {
1102 + u32 start, end;
1103 + } stolen[2] = {
1104 + { .start = base, .end = base + dev_priv->gtt.stolen_size, },
1105 + { .start = base, .end = base + dev_priv->gtt.stolen_size, },
1106 + };
1107 + u64 gtt_start, gtt_end;
1108 +
1109 + gtt_start = I915_READ(PGTBL_CTL);
1110 + if (IS_GEN4(dev))
1111 + gtt_start = (gtt_start & PGTBL_ADDRESS_LO_MASK) |
1112 + (gtt_start & PGTBL_ADDRESS_HI_MASK) << 28;
1113 + else
1114 + gtt_start &= PGTBL_ADDRESS_LO_MASK;
1115 + gtt_end = gtt_start + gtt_total_entries(dev_priv->gtt) * 4;
1116 +
1117 + if (gtt_start >= stolen[0].start && gtt_start < stolen[0].end)
1118 + stolen[0].end = gtt_start;
1119 + if (gtt_end > stolen[1].start && gtt_end <= stolen[1].end)
1120 + stolen[1].start = gtt_end;
1121 +
1122 + /* pick the larger of the two chunks */
1123 + if (stolen[0].end - stolen[0].start >
1124 + stolen[1].end - stolen[1].start) {
1125 + base = stolen[0].start;
1126 + dev_priv->gtt.stolen_size = stolen[0].end - stolen[0].start;
1127 + } else {
1128 + base = stolen[1].start;
1129 + dev_priv->gtt.stolen_size = stolen[1].end - stolen[1].start;
1130 + }
1131 +
1132 + if (stolen[0].start != stolen[1].start ||
1133 + stolen[0].end != stolen[1].end) {
1134 + DRM_DEBUG_KMS("GTT within stolen memory at 0x%llx-0x%llx\n",
1135 + (unsigned long long) gtt_start,
1136 + (unsigned long long) gtt_end - 1);
1137 + DRM_DEBUG_KMS("Stolen memory adjusted to 0x%x-0x%x\n",
1138 + base, base + (u32) dev_priv->gtt.stolen_size - 1);
1139 + }
1140 + }
1141 +
1142 +
1143 /* Verify that nothing else uses this physical address. Stolen
1144 * memory should be reserved by the BIOS and hidden from the
1145 * kernel. So if the region is already marked as busy, something
1146 diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
1147 index a48b7cad6f11..0a3b9386eb43 100644
1148 --- a/drivers/gpu/drm/i915/i915_reg.h
1149 +++ b/drivers/gpu/drm/i915/i915_reg.h
1150 @@ -631,6 +631,9 @@
1151 /*
1152 * Instruction and interrupt control regs
1153 */
1154 +#define PGTBL_CTL 0x02020
1155 +#define PGTBL_ADDRESS_LO_MASK 0xfffff000 /* bits [31:12] */
1156 +#define PGTBL_ADDRESS_HI_MASK 0x000000f0 /* bits [35:32] (gen4) */
1157 #define PGTBL_ER 0x02024
1158 #define RENDER_RING_BASE 0x02000
1159 #define BSD_RING_BASE 0x04000
1160 diff --git a/drivers/gpu/drm/radeon/ci_dpm.c b/drivers/gpu/drm/radeon/ci_dpm.c
1161 index 9241e96f8502..5fa854c84d62 100644
1162 --- a/drivers/gpu/drm/radeon/ci_dpm.c
1163 +++ b/drivers/gpu/drm/radeon/ci_dpm.c
1164 @@ -1161,7 +1161,7 @@ static int ci_stop_dpm(struct radeon_device *rdev)
1165 tmp &= ~GLOBAL_PWRMGT_EN;
1166 WREG32_SMC(GENERAL_PWRMGT, tmp);
1167
1168 - tmp = RREG32(SCLK_PWRMGT_CNTL);
1169 + tmp = RREG32_SMC(SCLK_PWRMGT_CNTL);
1170 tmp &= ~DYNAMIC_PM_EN;
1171 WREG32_SMC(SCLK_PWRMGT_CNTL, tmp);
1172
1173 diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
1174 index 971d9339ce80..64108dbc7d45 100644
1175 --- a/drivers/gpu/drm/radeon/evergreen.c
1176 +++ b/drivers/gpu/drm/radeon/evergreen.c
1177 @@ -189,7 +189,7 @@ static const u32 evergreen_golden_registers[] =
1178 0x8c1c, 0xffffffff, 0x00001010,
1179 0x28350, 0xffffffff, 0x00000000,
1180 0xa008, 0xffffffff, 0x00010000,
1181 - 0x5cc, 0xffffffff, 0x00000001,
1182 + 0x5c4, 0xffffffff, 0x00000001,
1183 0x9508, 0xffffffff, 0x00000002,
1184 0x913c, 0x0000000f, 0x0000000a
1185 };
1186 @@ -476,7 +476,7 @@ static const u32 cedar_golden_registers[] =
1187 0x8c1c, 0xffffffff, 0x00001010,
1188 0x28350, 0xffffffff, 0x00000000,
1189 0xa008, 0xffffffff, 0x00010000,
1190 - 0x5cc, 0xffffffff, 0x00000001,
1191 + 0x5c4, 0xffffffff, 0x00000001,
1192 0x9508, 0xffffffff, 0x00000002
1193 };
1194
1195 @@ -635,7 +635,7 @@ static const u32 juniper_mgcg_init[] =
1196 static const u32 supersumo_golden_registers[] =
1197 {
1198 0x5eb4, 0xffffffff, 0x00000002,
1199 - 0x5cc, 0xffffffff, 0x00000001,
1200 + 0x5c4, 0xffffffff, 0x00000001,
1201 0x7030, 0xffffffff, 0x00000011,
1202 0x7c30, 0xffffffff, 0x00000011,
1203 0x6104, 0x01000300, 0x00000000,
1204 @@ -719,7 +719,7 @@ static const u32 sumo_golden_registers[] =
1205 static const u32 wrestler_golden_registers[] =
1206 {
1207 0x5eb4, 0xffffffff, 0x00000002,
1208 - 0x5cc, 0xffffffff, 0x00000001,
1209 + 0x5c4, 0xffffffff, 0x00000001,
1210 0x7030, 0xffffffff, 0x00000011,
1211 0x7c30, 0xffffffff, 0x00000011,
1212 0x6104, 0x01000300, 0x00000000,
1213 diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c
1214 index 72d3616de08e..95b693c11640 100644
1215 --- a/drivers/gpu/drm/radeon/rs600.c
1216 +++ b/drivers/gpu/drm/radeon/rs600.c
1217 @@ -646,8 +646,10 @@ int rs600_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr)
1218 return -EINVAL;
1219 }
1220 addr = addr & 0xFFFFFFFFFFFFF000ULL;
1221 - addr |= R600_PTE_VALID | R600_PTE_SYSTEM | R600_PTE_SNOOPED;
1222 - addr |= R600_PTE_READABLE | R600_PTE_WRITEABLE;
1223 + if (addr != rdev->dummy_page.addr)
1224 + addr |= R600_PTE_VALID | R600_PTE_READABLE |
1225 + R600_PTE_WRITEABLE;
1226 + addr |= R600_PTE_SYSTEM | R600_PTE_SNOOPED;
1227 writeq(addr, ptr + (i * 8));
1228 return 0;
1229 }
1230 diff --git a/drivers/gpu/drm/radeon/rv770_dpm.c b/drivers/gpu/drm/radeon/rv770_dpm.c
1231 index b5f63f5e22a3..8fcb932a3a55 100644
1232 --- a/drivers/gpu/drm/radeon/rv770_dpm.c
1233 +++ b/drivers/gpu/drm/radeon/rv770_dpm.c
1234 @@ -2332,12 +2332,6 @@ void rv770_get_engine_memory_ss(struct radeon_device *rdev)
1235 pi->mclk_ss = radeon_atombios_get_asic_ss_info(rdev, &ss,
1236 ASIC_INTERNAL_MEMORY_SS, 0);
1237
1238 - /* disable ss, causes hangs on some cayman boards */
1239 - if (rdev->family == CHIP_CAYMAN) {
1240 - pi->sclk_ss = false;
1241 - pi->mclk_ss = false;
1242 - }
1243 -
1244 if (pi->sclk_ss || pi->mclk_ss)
1245 pi->dynamic_ss = true;
1246 else
1247 diff --git a/drivers/hv/connection.c b/drivers/hv/connection.c
1248 index 05827eccc53a..ce5a9f2584f3 100644
1249 --- a/drivers/hv/connection.c
1250 +++ b/drivers/hv/connection.c
1251 @@ -319,9 +319,13 @@ static void process_chn_event(u32 relid)
1252 */
1253
1254 do {
1255 - hv_begin_read(&channel->inbound);
1256 + if (read_state)
1257 + hv_begin_read(&channel->inbound);
1258 channel->onchannel_callback(arg);
1259 - bytes_to_read = hv_end_read(&channel->inbound);
1260 + if (read_state)
1261 + bytes_to_read = hv_end_read(&channel->inbound);
1262 + else
1263 + bytes_to_read = 0;
1264 } while (read_state && (bytes_to_read != 0));
1265 } else {
1266 pr_err("no channel callback for relid - %u\n", relid);
1267 diff --git a/drivers/hwmon/adm1021.c b/drivers/hwmon/adm1021.c
1268 index 29dd9f746dfa..233b374334ed 100644
1269 --- a/drivers/hwmon/adm1021.c
1270 +++ b/drivers/hwmon/adm1021.c
1271 @@ -185,7 +185,7 @@ static ssize_t set_temp_max(struct device *dev,
1272 struct i2c_client *client = to_i2c_client(dev);
1273 struct adm1021_data *data = i2c_get_clientdata(client);
1274 long temp;
1275 - int err;
1276 + int reg_val, err;
1277
1278 err = kstrtol(buf, 10, &temp);
1279 if (err)
1280 @@ -193,10 +193,11 @@ static ssize_t set_temp_max(struct device *dev,
1281 temp /= 1000;
1282
1283 mutex_lock(&data->update_lock);
1284 - data->temp_max[index] = clamp_val(temp, -128, 127);
1285 + reg_val = clamp_val(temp, -128, 127);
1286 + data->temp_max[index] = reg_val * 1000;
1287 if (!read_only)
1288 i2c_smbus_write_byte_data(client, ADM1021_REG_TOS_W(index),
1289 - data->temp_max[index]);
1290 + reg_val);
1291 mutex_unlock(&data->update_lock);
1292
1293 return count;
1294 @@ -210,7 +211,7 @@ static ssize_t set_temp_min(struct device *dev,
1295 struct i2c_client *client = to_i2c_client(dev);
1296 struct adm1021_data *data = i2c_get_clientdata(client);
1297 long temp;
1298 - int err;
1299 + int reg_val, err;
1300
1301 err = kstrtol(buf, 10, &temp);
1302 if (err)
1303 @@ -218,10 +219,11 @@ static ssize_t set_temp_min(struct device *dev,
1304 temp /= 1000;
1305
1306 mutex_lock(&data->update_lock);
1307 - data->temp_min[index] = clamp_val(temp, -128, 127);
1308 + reg_val = clamp_val(temp, -128, 127);
1309 + data->temp_min[index] = reg_val * 1000;
1310 if (!read_only)
1311 i2c_smbus_write_byte_data(client, ADM1021_REG_THYST_W(index),
1312 - data->temp_min[index]);
1313 + reg_val);
1314 mutex_unlock(&data->update_lock);
1315
1316 return count;
1317 diff --git a/drivers/hwmon/adm1029.c b/drivers/hwmon/adm1029.c
1318 index d19c790e410a..e38115ce0350 100644
1319 --- a/drivers/hwmon/adm1029.c
1320 +++ b/drivers/hwmon/adm1029.c
1321 @@ -232,6 +232,9 @@ static ssize_t set_fan_div(struct device *dev,
1322 /* Update the value */
1323 reg = (reg & 0x3F) | (val << 6);
1324
1325 + /* Update the cache */
1326 + data->fan_div[attr->index] = reg;
1327 +
1328 /* Write value */
1329 i2c_smbus_write_byte_data(client,
1330 ADM1029_REG_FAN_DIV[attr->index], reg);
1331 diff --git a/drivers/hwmon/adm1031.c b/drivers/hwmon/adm1031.c
1332 index a8a540ca8c34..51c1a5a165ab 100644
1333 --- a/drivers/hwmon/adm1031.c
1334 +++ b/drivers/hwmon/adm1031.c
1335 @@ -365,6 +365,7 @@ set_auto_temp_min(struct device *dev, struct device_attribute *attr,
1336 if (ret)
1337 return ret;
1338
1339 + val = clamp_val(val, 0, 127000);
1340 mutex_lock(&data->update_lock);
1341 data->auto_temp[nr] = AUTO_TEMP_MIN_TO_REG(val, data->auto_temp[nr]);
1342 adm1031_write_value(client, ADM1031_REG_AUTO_TEMP(nr),
1343 @@ -394,6 +395,7 @@ set_auto_temp_max(struct device *dev, struct device_attribute *attr,
1344 if (ret)
1345 return ret;
1346
1347 + val = clamp_val(val, 0, 127000);
1348 mutex_lock(&data->update_lock);
1349 data->temp_max[nr] = AUTO_TEMP_MAX_TO_REG(val, data->auto_temp[nr],
1350 data->pwm[nr]);
1351 @@ -696,7 +698,7 @@ static ssize_t set_temp_min(struct device *dev, struct device_attribute *attr,
1352 if (ret)
1353 return ret;
1354
1355 - val = clamp_val(val, -55000, nr == 0 ? 127750 : 127875);
1356 + val = clamp_val(val, -55000, 127000);
1357 mutex_lock(&data->update_lock);
1358 data->temp_min[nr] = TEMP_TO_REG(val);
1359 adm1031_write_value(client, ADM1031_REG_TEMP_MIN(nr),
1360 @@ -717,7 +719,7 @@ static ssize_t set_temp_max(struct device *dev, struct device_attribute *attr,
1361 if (ret)
1362 return ret;
1363
1364 - val = clamp_val(val, -55000, nr == 0 ? 127750 : 127875);
1365 + val = clamp_val(val, -55000, 127000);
1366 mutex_lock(&data->update_lock);
1367 data->temp_max[nr] = TEMP_TO_REG(val);
1368 adm1031_write_value(client, ADM1031_REG_TEMP_MAX(nr),
1369 @@ -738,7 +740,7 @@ static ssize_t set_temp_crit(struct device *dev, struct device_attribute *attr,
1370 if (ret)
1371 return ret;
1372
1373 - val = clamp_val(val, -55000, nr == 0 ? 127750 : 127875);
1374 + val = clamp_val(val, -55000, 127000);
1375 mutex_lock(&data->update_lock);
1376 data->temp_crit[nr] = TEMP_TO_REG(val);
1377 adm1031_write_value(client, ADM1031_REG_TEMP_CRIT(nr),
1378 diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c
1379 index eea817296513..9f2be3dd28f3 100644
1380 --- a/drivers/hwmon/amc6821.c
1381 +++ b/drivers/hwmon/amc6821.c
1382 @@ -704,7 +704,7 @@ static SENSOR_DEVICE_ATTR(temp1_max_alarm, S_IRUGO,
1383 get_temp_alarm, NULL, IDX_TEMP1_MAX);
1384 static SENSOR_DEVICE_ATTR(temp1_crit_alarm, S_IRUGO,
1385 get_temp_alarm, NULL, IDX_TEMP1_CRIT);
1386 -static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO | S_IWUSR,
1387 +static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO,
1388 get_temp, NULL, IDX_TEMP2_INPUT);
1389 static SENSOR_DEVICE_ATTR(temp2_min, S_IRUGO | S_IWUSR, get_temp,
1390 set_temp, IDX_TEMP2_MIN);
1391 diff --git a/drivers/hwmon/emc2103.c b/drivers/hwmon/emc2103.c
1392 index 2c137b26acb4..5790246a7e1d 100644
1393 --- a/drivers/hwmon/emc2103.c
1394 +++ b/drivers/hwmon/emc2103.c
1395 @@ -250,9 +250,7 @@ static ssize_t set_temp_min(struct device *dev, struct device_attribute *da,
1396 if (result < 0)
1397 return result;
1398
1399 - val = DIV_ROUND_CLOSEST(val, 1000);
1400 - if ((val < -63) || (val > 127))
1401 - return -EINVAL;
1402 + val = clamp_val(DIV_ROUND_CLOSEST(val, 1000), -63, 127);
1403
1404 mutex_lock(&data->update_lock);
1405 data->temp_min[nr] = val;
1406 @@ -274,9 +272,7 @@ static ssize_t set_temp_max(struct device *dev, struct device_attribute *da,
1407 if (result < 0)
1408 return result;
1409
1410 - val = DIV_ROUND_CLOSEST(val, 1000);
1411 - if ((val < -63) || (val > 127))
1412 - return -EINVAL;
1413 + val = clamp_val(DIV_ROUND_CLOSEST(val, 1000), -63, 127);
1414
1415 mutex_lock(&data->update_lock);
1416 data->temp_max[nr] = val;
1417 @@ -390,15 +386,14 @@ static ssize_t set_fan_target(struct device *dev, struct device_attribute *da,
1418 {
1419 struct emc2103_data *data = emc2103_update_device(dev);
1420 struct i2c_client *client = to_i2c_client(dev);
1421 - long rpm_target;
1422 + unsigned long rpm_target;
1423
1424 - int result = kstrtol(buf, 10, &rpm_target);
1425 + int result = kstrtoul(buf, 10, &rpm_target);
1426 if (result < 0)
1427 return result;
1428
1429 /* Datasheet states 16384 as maximum RPM target (table 3.2) */
1430 - if ((rpm_target < 0) || (rpm_target > 16384))
1431 - return -EINVAL;
1432 + rpm_target = clamp_val(rpm_target, 0, 16384);
1433
1434 mutex_lock(&data->update_lock);
1435
1436 diff --git a/drivers/iio/adc/ti_am335x_adc.c b/drivers/iio/adc/ti_am335x_adc.c
1437 index 31e786e3999b..63b2bb6bdbbc 100644
1438 --- a/drivers/iio/adc/ti_am335x_adc.c
1439 +++ b/drivers/iio/adc/ti_am335x_adc.c
1440 @@ -375,7 +375,7 @@ static int tiadc_read_raw(struct iio_dev *indio_dev,
1441 return -EAGAIN;
1442 }
1443 }
1444 - map_val = chan->channel + TOTAL_CHANNELS;
1445 + map_val = adc_dev->channel_step[chan->scan_index];
1446
1447 /*
1448 * We check the complete FIFO. We programmed just one entry but in case
1449 diff --git a/drivers/md/dm-io.c b/drivers/md/dm-io.c
1450 index 3842ac738f98..db404a0f7e2c 100644
1451 --- a/drivers/md/dm-io.c
1452 +++ b/drivers/md/dm-io.c
1453 @@ -10,6 +10,7 @@
1454 #include <linux/device-mapper.h>
1455
1456 #include <linux/bio.h>
1457 +#include <linux/completion.h>
1458 #include <linux/mempool.h>
1459 #include <linux/module.h>
1460 #include <linux/sched.h>
1461 @@ -32,7 +33,7 @@ struct dm_io_client {
1462 struct io {
1463 unsigned long error_bits;
1464 atomic_t count;
1465 - struct task_struct *sleeper;
1466 + struct completion *wait;
1467 struct dm_io_client *client;
1468 io_notify_fn callback;
1469 void *context;
1470 @@ -121,8 +122,8 @@ static void dec_count(struct io *io, unsigned int region, int error)
1471 invalidate_kernel_vmap_range(io->vma_invalidate_address,
1472 io->vma_invalidate_size);
1473
1474 - if (io->sleeper)
1475 - wake_up_process(io->sleeper);
1476 + if (io->wait)
1477 + complete(io->wait);
1478
1479 else {
1480 unsigned long r = io->error_bits;
1481 @@ -387,6 +388,7 @@ static int sync_io(struct dm_io_client *client, unsigned int num_regions,
1482 */
1483 volatile char io_[sizeof(struct io) + __alignof__(struct io) - 1];
1484 struct io *io = (struct io *)PTR_ALIGN(&io_, __alignof__(struct io));
1485 + DECLARE_COMPLETION_ONSTACK(wait);
1486
1487 if (num_regions > 1 && (rw & RW_MASK) != WRITE) {
1488 WARN_ON(1);
1489 @@ -395,7 +397,7 @@ static int sync_io(struct dm_io_client *client, unsigned int num_regions,
1490
1491 io->error_bits = 0;
1492 atomic_set(&io->count, 1); /* see dispatch_io() */
1493 - io->sleeper = current;
1494 + io->wait = &wait;
1495 io->client = client;
1496
1497 io->vma_invalidate_address = dp->vma_invalidate_address;
1498 @@ -403,15 +405,7 @@ static int sync_io(struct dm_io_client *client, unsigned int num_regions,
1499
1500 dispatch_io(rw, num_regions, where, dp, io, 1);
1501
1502 - while (1) {
1503 - set_current_state(TASK_UNINTERRUPTIBLE);
1504 -
1505 - if (!atomic_read(&io->count))
1506 - break;
1507 -
1508 - io_schedule();
1509 - }
1510 - set_current_state(TASK_RUNNING);
1511 + wait_for_completion_io(&wait);
1512
1513 if (error_bits)
1514 *error_bits = io->error_bits;
1515 @@ -434,7 +428,7 @@ static int async_io(struct dm_io_client *client, unsigned int num_regions,
1516 io = mempool_alloc(client->pool, GFP_NOIO);
1517 io->error_bits = 0;
1518 atomic_set(&io->count, 1); /* see dispatch_io() */
1519 - io->sleeper = NULL;
1520 + io->wait = NULL;
1521 io->client = client;
1522 io->callback = fn;
1523 io->context = context;
1524 diff --git a/drivers/md/dm.c b/drivers/md/dm.c
1525 index 8c53b09b9a2c..65ee3a0d4683 100644
1526 --- a/drivers/md/dm.c
1527 +++ b/drivers/md/dm.c
1528 @@ -54,6 +54,8 @@ static void do_deferred_remove(struct work_struct *w);
1529
1530 static DECLARE_WORK(deferred_remove_work, do_deferred_remove);
1531
1532 +static struct workqueue_struct *deferred_remove_workqueue;
1533 +
1534 /*
1535 * For bio-based dm.
1536 * One of these is allocated per bio.
1537 @@ -283,16 +285,24 @@ static int __init local_init(void)
1538 if (r)
1539 goto out_free_rq_tio_cache;
1540
1541 + deferred_remove_workqueue = alloc_workqueue("kdmremove", WQ_UNBOUND, 1);
1542 + if (!deferred_remove_workqueue) {
1543 + r = -ENOMEM;
1544 + goto out_uevent_exit;
1545 + }
1546 +
1547 _major = major;
1548 r = register_blkdev(_major, _name);
1549 if (r < 0)
1550 - goto out_uevent_exit;
1551 + goto out_free_workqueue;
1552
1553 if (!_major)
1554 _major = r;
1555
1556 return 0;
1557
1558 +out_free_workqueue:
1559 + destroy_workqueue(deferred_remove_workqueue);
1560 out_uevent_exit:
1561 dm_uevent_exit();
1562 out_free_rq_tio_cache:
1563 @@ -306,6 +316,7 @@ out_free_io_cache:
1564 static void local_exit(void)
1565 {
1566 flush_scheduled_work();
1567 + destroy_workqueue(deferred_remove_workqueue);
1568
1569 kmem_cache_destroy(_rq_tio_cache);
1570 kmem_cache_destroy(_io_cache);
1571 @@ -414,7 +425,7 @@ static void dm_blk_close(struct gendisk *disk, fmode_t mode)
1572
1573 if (atomic_dec_and_test(&md->open_count) &&
1574 (test_bit(DMF_DEFERRED_REMOVE, &md->flags)))
1575 - schedule_work(&deferred_remove_work);
1576 + queue_work(deferred_remove_workqueue, &deferred_remove_work);
1577
1578 dm_put(md);
1579
1580 diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
1581 index ed1b6db25b03..be36adf33ab0 100644
1582 --- a/drivers/pci/pci.c
1583 +++ b/drivers/pci/pci.c
1584 @@ -3085,8 +3085,13 @@ static int pci_af_flr(struct pci_dev *dev, int probe)
1585 if (probe)
1586 return 0;
1587
1588 - /* Wait for Transaction Pending bit clean */
1589 - if (pci_wait_for_pending(dev, pos + PCI_AF_STATUS, PCI_AF_STATUS_TP))
1590 + /*
1591 + * Wait for Transaction Pending bit to clear. A word-aligned test
1592 + * is used, so we use the conrol offset rather than status and shift
1593 + * the test bit to match.
1594 + */
1595 + if (pci_wait_for_pending(dev, pos + PCI_AF_CTRL,
1596 + PCI_AF_STATUS_TP << 8))
1597 goto clear;
1598
1599 dev_err(&dev->dev, "transaction is not cleared; "
1600 diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
1601 index 6c738376daff..34d56f7864d6 100644
1602 --- a/drivers/phy/phy-core.c
1603 +++ b/drivers/phy/phy-core.c
1604 @@ -553,8 +553,9 @@ struct phy *phy_create(struct device *dev, const struct phy_ops *ops,
1605 return phy;
1606
1607 put_dev:
1608 - put_device(&phy->dev);
1609 - ida_remove(&phy_ida, phy->id);
1610 + put_device(&phy->dev); /* calls phy_release() which frees resources */
1611 + return ERR_PTR(ret);
1612 +
1613 free_phy:
1614 kfree(phy);
1615 return ERR_PTR(ret);
1616 @@ -738,7 +739,7 @@ static void phy_release(struct device *dev)
1617
1618 phy = to_phy(dev);
1619 dev_vdbg(dev, "releasing '%s'\n", dev_name(dev));
1620 - ida_remove(&phy_ida, phy->id);
1621 + ida_simple_remove(&phy_ida, phy->id);
1622 kfree(phy);
1623 }
1624
1625 diff --git a/drivers/rtc/rtc-puv3.c b/drivers/rtc/rtc-puv3.c
1626 index 1ecfe3bd92ac..1cff2a21db67 100644
1627 --- a/drivers/rtc/rtc-puv3.c
1628 +++ b/drivers/rtc/rtc-puv3.c
1629 @@ -71,7 +71,7 @@ static int puv3_rtc_setpie(struct device *dev, int enabled)
1630 {
1631 unsigned int tmp;
1632
1633 - dev_debug(dev, "%s: pie=%d\n", __func__, enabled);
1634 + dev_dbg(dev, "%s: pie=%d\n", __func__, enabled);
1635
1636 spin_lock_irq(&puv3_rtc_pie_lock);
1637 tmp = readl(RTC_RTSR) & ~RTC_RTSR_HZE;
1638 @@ -140,7 +140,7 @@ static int puv3_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm)
1639 rtc_tm_to_time(tm, &rtcalarm_count);
1640 writel(rtcalarm_count, RTC_RTAR);
1641
1642 - puv3_rtc_setaie(&dev->dev, alrm->enabled);
1643 + puv3_rtc_setaie(dev, alrm->enabled);
1644
1645 if (alrm->enabled)
1646 enable_irq_wake(puv3_rtc_alarmno);
1647 diff --git a/drivers/thermal/thermal_hwmon.c b/drivers/thermal/thermal_hwmon.c
1648 index fdb07199d9c2..1967bee4f076 100644
1649 --- a/drivers/thermal/thermal_hwmon.c
1650 +++ b/drivers/thermal/thermal_hwmon.c
1651 @@ -140,6 +140,12 @@ thermal_hwmon_lookup_temp(const struct thermal_hwmon_device *hwmon,
1652 return NULL;
1653 }
1654
1655 +static bool thermal_zone_crit_temp_valid(struct thermal_zone_device *tz)
1656 +{
1657 + unsigned long temp;
1658 + return tz->ops->get_crit_temp && !tz->ops->get_crit_temp(tz, &temp);
1659 +}
1660 +
1661 int thermal_add_hwmon_sysfs(struct thermal_zone_device *tz)
1662 {
1663 struct thermal_hwmon_device *hwmon;
1664 @@ -189,21 +195,18 @@ int thermal_add_hwmon_sysfs(struct thermal_zone_device *tz)
1665 if (result)
1666 goto free_temp_mem;
1667
1668 - if (tz->ops->get_crit_temp) {
1669 - unsigned long temperature;
1670 - if (!tz->ops->get_crit_temp(tz, &temperature)) {
1671 - snprintf(temp->temp_crit.name,
1672 - sizeof(temp->temp_crit.name),
1673 + if (thermal_zone_crit_temp_valid(tz)) {
1674 + snprintf(temp->temp_crit.name,
1675 + sizeof(temp->temp_crit.name),
1676 "temp%d_crit", hwmon->count);
1677 - temp->temp_crit.attr.attr.name = temp->temp_crit.name;
1678 - temp->temp_crit.attr.attr.mode = 0444;
1679 - temp->temp_crit.attr.show = temp_crit_show;
1680 - sysfs_attr_init(&temp->temp_crit.attr.attr);
1681 - result = device_create_file(hwmon->device,
1682 - &temp->temp_crit.attr);
1683 - if (result)
1684 - goto unregister_input;
1685 - }
1686 + temp->temp_crit.attr.attr.name = temp->temp_crit.name;
1687 + temp->temp_crit.attr.attr.mode = 0444;
1688 + temp->temp_crit.attr.show = temp_crit_show;
1689 + sysfs_attr_init(&temp->temp_crit.attr.attr);
1690 + result = device_create_file(hwmon->device,
1691 + &temp->temp_crit.attr);
1692 + if (result)
1693 + goto unregister_input;
1694 }
1695
1696 mutex_lock(&thermal_hwmon_list_lock);
1697 @@ -250,7 +253,7 @@ void thermal_remove_hwmon_sysfs(struct thermal_zone_device *tz)
1698 }
1699
1700 device_remove_file(hwmon->device, &temp->temp_input.attr);
1701 - if (tz->ops->get_crit_temp)
1702 + if (thermal_zone_crit_temp_valid(tz))
1703 device_remove_file(hwmon->device, &temp->temp_crit.attr);
1704
1705 mutex_lock(&thermal_hwmon_list_lock);
1706 diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
1707 index 762e4a5f5ae9..330df5ce435b 100644
1708 --- a/drivers/usb/serial/cp210x.c
1709 +++ b/drivers/usb/serial/cp210x.c
1710 @@ -153,6 +153,7 @@ static const struct usb_device_id id_table[] = {
1711 { USB_DEVICE(0x1843, 0x0200) }, /* Vaisala USB Instrument Cable */
1712 { USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */
1713 { USB_DEVICE(0x1ADB, 0x0001) }, /* Schweitzer Engineering C662 Cable */
1714 + { USB_DEVICE(0x1B1C, 0x1C00) }, /* Corsair USB Dongle */
1715 { USB_DEVICE(0x1BE3, 0x07A6) }, /* WAGO 750-923 USB Service Cable */
1716 { USB_DEVICE(0x1E29, 0x0102) }, /* Festo CPX-USB */
1717 { USB_DEVICE(0x1E29, 0x0501) }, /* Festo CMSP */
1718 diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
1719 index 115662c16dcc..8a3813be1b28 100644
1720 --- a/drivers/usb/serial/ftdi_sio.c
1721 +++ b/drivers/usb/serial/ftdi_sio.c
1722 @@ -720,7 +720,8 @@ static const struct usb_device_id id_table_combined[] = {
1723 { USB_DEVICE(FTDI_VID, FTDI_ACG_HFDUAL_PID) },
1724 { USB_DEVICE(FTDI_VID, FTDI_YEI_SERVOCENTER31_PID) },
1725 { USB_DEVICE(FTDI_VID, FTDI_THORLABS_PID) },
1726 - { USB_DEVICE(TESTO_VID, TESTO_USB_INTERFACE_PID) },
1727 + { USB_DEVICE(TESTO_VID, TESTO_1_PID) },
1728 + { USB_DEVICE(TESTO_VID, TESTO_3_PID) },
1729 { USB_DEVICE(FTDI_VID, FTDI_GAMMA_SCOUT_PID) },
1730 { USB_DEVICE(FTDI_VID, FTDI_TACTRIX_OPENPORT_13M_PID) },
1731 { USB_DEVICE(FTDI_VID, FTDI_TACTRIX_OPENPORT_13S_PID) },
1732 @@ -944,6 +945,8 @@ static const struct usb_device_id id_table_combined[] = {
1733 { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_2_PID) },
1734 { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_3_PID) },
1735 { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_4_PID) },
1736 + /* Infineon Devices */
1737 + { USB_DEVICE_INTERFACE_NUMBER(INFINEON_VID, INFINEON_TRIBOARD_PID, 1) },
1738 { } /* Terminating entry */
1739 };
1740
1741 diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
1742 index 500474c48f4b..c4777bc6aee0 100644
1743 --- a/drivers/usb/serial/ftdi_sio_ids.h
1744 +++ b/drivers/usb/serial/ftdi_sio_ids.h
1745 @@ -584,6 +584,12 @@
1746 #define RATOC_PRODUCT_ID_USB60F 0xb020
1747
1748 /*
1749 + * Infineon Technologies
1750 + */
1751 +#define INFINEON_VID 0x058b
1752 +#define INFINEON_TRIBOARD_PID 0x0028 /* DAS JTAG TriBoard TC1798 V1.0 */
1753 +
1754 +/*
1755 * Acton Research Corp.
1756 */
1757 #define ACTON_VID 0x0647 /* Vendor ID */
1758 @@ -798,7 +804,8 @@
1759 * Submitted by Colin Leroy
1760 */
1761 #define TESTO_VID 0x128D
1762 -#define TESTO_USB_INTERFACE_PID 0x0001
1763 +#define TESTO_1_PID 0x0001
1764 +#define TESTO_3_PID 0x0003
1765
1766 /*
1767 * Mobility Electronics products.
1768 diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
1769 index e25e8ca09fe2..9da566a3f5c8 100644
1770 --- a/drivers/usb/serial/option.c
1771 +++ b/drivers/usb/serial/option.c
1772 @@ -1487,6 +1487,8 @@ static const struct usb_device_id option_ids[] = {
1773 .driver_info = (kernel_ulong_t)&net_intf2_blacklist },
1774 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1426, 0xff, 0xff, 0xff), /* ZTE MF91 */
1775 .driver_info = (kernel_ulong_t)&net_intf2_blacklist },
1776 + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1428, 0xff, 0xff, 0xff), /* Telewell TW-LTE 4G v2 */
1777 + .driver_info = (kernel_ulong_t)&net_intf2_blacklist },
1778 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1533, 0xff, 0xff, 0xff) },
1779 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1534, 0xff, 0xff, 0xff) },
1780 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1535, 0xff, 0xff, 0xff) },
1781 diff --git a/fs/ext4/extents_status.c b/fs/ext4/extents_status.c
1782 index 3981ff783950..171b9fa0f27a 100644
1783 --- a/fs/ext4/extents_status.c
1784 +++ b/fs/ext4/extents_status.c
1785 @@ -962,10 +962,10 @@ retry:
1786 continue;
1787 }
1788
1789 - if (ei->i_es_lru_nr == 0 || ei == locked_ei)
1790 + if (ei->i_es_lru_nr == 0 || ei == locked_ei ||
1791 + !write_trylock(&ei->i_es_lock))
1792 continue;
1793
1794 - write_lock(&ei->i_es_lock);
1795 shrunk = __es_try_to_reclaim_extents(ei, nr_to_scan);
1796 if (ei->i_es_lru_nr == 0)
1797 list_del_init(&ei->i_es_lru);
1798 diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
1799 index 0ee59a6644e2..64bb32f17903 100644
1800 --- a/fs/ext4/ialloc.c
1801 +++ b/fs/ext4/ialloc.c
1802 @@ -851,6 +851,13 @@ got:
1803 goto out;
1804 }
1805
1806 + BUFFER_TRACE(group_desc_bh, "get_write_access");
1807 + err = ext4_journal_get_write_access(handle, group_desc_bh);
1808 + if (err) {
1809 + ext4_std_error(sb, err);
1810 + goto out;
1811 + }
1812 +
1813 /* We may have to initialize the block bitmap if it isn't already */
1814 if (ext4_has_group_desc_csum(sb) &&
1815 gdp->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT)) {
1816 @@ -887,13 +894,6 @@ got:
1817 }
1818 }
1819
1820 - BUFFER_TRACE(group_desc_bh, "get_write_access");
1821 - err = ext4_journal_get_write_access(handle, group_desc_bh);
1822 - if (err) {
1823 - ext4_std_error(sb, err);
1824 - goto out;
1825 - }
1826 -
1827 /* Update the relevant bg descriptor fields */
1828 if (ext4_has_group_desc_csum(sb)) {
1829 int free;
1830 diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
1831 index 08ddfdac955c..502f0fd71470 100644
1832 --- a/fs/ext4/mballoc.c
1833 +++ b/fs/ext4/mballoc.c
1834 @@ -751,8 +751,8 @@ void ext4_mb_generate_buddy(struct super_block *sb,
1835
1836 if (free != grp->bb_free) {
1837 ext4_grp_locked_error(sb, group, 0, 0,
1838 - "%u clusters in bitmap, %u in gd; "
1839 - "block bitmap corrupt.",
1840 + "block bitmap and bg descriptor "
1841 + "inconsistent: %u vs %u free clusters",
1842 free, grp->bb_free);
1843 /*
1844 * If we intend to continue, we consider group descriptor
1845 diff --git a/fs/ext4/super.c b/fs/ext4/super.c
1846 index 710fed2377d4..25b327e87318 100644
1847 --- a/fs/ext4/super.c
1848 +++ b/fs/ext4/super.c
1849 @@ -1519,8 +1519,6 @@ static int handle_mount_opt(struct super_block *sb, char *opt, int token,
1850 arg = JBD2_DEFAULT_MAX_COMMIT_AGE;
1851 sbi->s_commit_interval = HZ * arg;
1852 } else if (token == Opt_max_batch_time) {
1853 - if (arg == 0)
1854 - arg = EXT4_DEF_MAX_BATCH_TIME;
1855 sbi->s_max_batch_time = arg;
1856 } else if (token == Opt_min_batch_time) {
1857 sbi->s_min_batch_time = arg;
1858 @@ -2793,10 +2791,11 @@ static void print_daily_error_info(unsigned long arg)
1859 es = sbi->s_es;
1860
1861 if (es->s_error_count)
1862 - ext4_msg(sb, KERN_NOTICE, "error count: %u",
1863 + /* fsck newer than v1.41.13 is needed to clean this condition. */
1864 + ext4_msg(sb, KERN_NOTICE, "error count since last fsck: %u",
1865 le32_to_cpu(es->s_error_count));
1866 if (es->s_first_error_time) {
1867 - printk(KERN_NOTICE "EXT4-fs (%s): initial error at %u: %.*s:%d",
1868 + printk(KERN_NOTICE "EXT4-fs (%s): initial error at time %u: %.*s:%d",
1869 sb->s_id, le32_to_cpu(es->s_first_error_time),
1870 (int) sizeof(es->s_first_error_func),
1871 es->s_first_error_func,
1872 @@ -2810,7 +2809,7 @@ static void print_daily_error_info(unsigned long arg)
1873 printk("\n");
1874 }
1875 if (es->s_last_error_time) {
1876 - printk(KERN_NOTICE "EXT4-fs (%s): last error at %u: %.*s:%d",
1877 + printk(KERN_NOTICE "EXT4-fs (%s): last error at time %u: %.*s:%d",
1878 sb->s_id, le32_to_cpu(es->s_last_error_time),
1879 (int) sizeof(es->s_last_error_func),
1880 es->s_last_error_func,
1881 diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c
1882 index 60bb365f54a5..f8a5d6a166fb 100644
1883 --- a/fs/jbd2/transaction.c
1884 +++ b/fs/jbd2/transaction.c
1885 @@ -1590,9 +1590,12 @@ int jbd2_journal_stop(handle_t *handle)
1886 * to perform a synchronous write. We do this to detect the
1887 * case where a single process is doing a stream of sync
1888 * writes. No point in waiting for joiners in that case.
1889 + *
1890 + * Setting max_batch_time to 0 disables this completely.
1891 */
1892 pid = current->pid;
1893 - if (handle->h_sync && journal->j_last_sync_writer != pid) {
1894 + if (handle->h_sync && journal->j_last_sync_writer != pid &&
1895 + journal->j_max_batch_time) {
1896 u64 commit_time, trans_time;
1897
1898 journal->j_last_sync_writer = pid;
1899 diff --git a/include/linux/ring_buffer.h b/include/linux/ring_buffer.h
1900 index d69cf637a15a..49a4d6f59108 100644
1901 --- a/include/linux/ring_buffer.h
1902 +++ b/include/linux/ring_buffer.h
1903 @@ -97,7 +97,7 @@ __ring_buffer_alloc(unsigned long size, unsigned flags, struct lock_class_key *k
1904 __ring_buffer_alloc((size), (flags), &__key); \
1905 })
1906
1907 -void ring_buffer_wait(struct ring_buffer *buffer, int cpu);
1908 +int ring_buffer_wait(struct ring_buffer *buffer, int cpu);
1909 int ring_buffer_poll_wait(struct ring_buffer *buffer, int cpu,
1910 struct file *filp, poll_table *poll_table);
1911
1912 diff --git a/kernel/cpuset.c b/kernel/cpuset.c
1913 index e6b1b66afe52..6b27e5c0cd86 100644
1914 --- a/kernel/cpuset.c
1915 +++ b/kernel/cpuset.c
1916 @@ -1236,7 +1236,13 @@ done:
1917
1918 int current_cpuset_is_being_rebound(void)
1919 {
1920 - return task_cs(current) == cpuset_being_rebound;
1921 + int ret;
1922 +
1923 + rcu_read_lock();
1924 + ret = task_cs(current) == cpuset_being_rebound;
1925 + rcu_read_unlock();
1926 +
1927 + return ret;
1928 }
1929
1930 static int update_relax_domain_level(struct cpuset *cs, s64 val)
1931 diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
1932 index fc4da2d97f9b..04202d9aa514 100644
1933 --- a/kernel/trace/ring_buffer.c
1934 +++ b/kernel/trace/ring_buffer.c
1935 @@ -543,7 +543,7 @@ static void rb_wake_up_waiters(struct irq_work *work)
1936 * as data is added to any of the @buffer's cpu buffers. Otherwise
1937 * it will wait for data to be added to a specific cpu buffer.
1938 */
1939 -void ring_buffer_wait(struct ring_buffer *buffer, int cpu)
1940 +int ring_buffer_wait(struct ring_buffer *buffer, int cpu)
1941 {
1942 struct ring_buffer_per_cpu *cpu_buffer;
1943 DEFINE_WAIT(wait);
1944 @@ -557,6 +557,8 @@ void ring_buffer_wait(struct ring_buffer *buffer, int cpu)
1945 if (cpu == RING_BUFFER_ALL_CPUS)
1946 work = &buffer->irq_work;
1947 else {
1948 + if (!cpumask_test_cpu(cpu, buffer->cpumask))
1949 + return -ENODEV;
1950 cpu_buffer = buffer->buffers[cpu];
1951 work = &cpu_buffer->irq_work;
1952 }
1953 @@ -591,6 +593,7 @@ void ring_buffer_wait(struct ring_buffer *buffer, int cpu)
1954 schedule();
1955
1956 finish_wait(&work->waiters, &wait);
1957 + return 0;
1958 }
1959
1960 /**
1961 diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
1962 index fd21e601a891..922657f30723 100644
1963 --- a/kernel/trace/trace.c
1964 +++ b/kernel/trace/trace.c
1965 @@ -1091,13 +1091,13 @@ update_max_tr_single(struct trace_array *tr, struct task_struct *tsk, int cpu)
1966 }
1967 #endif /* CONFIG_TRACER_MAX_TRACE */
1968
1969 -static void default_wait_pipe(struct trace_iterator *iter)
1970 +static int default_wait_pipe(struct trace_iterator *iter)
1971 {
1972 /* Iterators are static, they should be filled or empty */
1973 if (trace_buffer_iter(iter, iter->cpu_file))
1974 - return;
1975 + return 0;
1976
1977 - ring_buffer_wait(iter->trace_buffer->buffer, iter->cpu_file);
1978 + return ring_buffer_wait(iter->trace_buffer->buffer, iter->cpu_file);
1979 }
1980
1981 #ifdef CONFIG_FTRACE_STARTUP_TEST
1982 @@ -4160,17 +4160,19 @@ tracing_poll_pipe(struct file *filp, poll_table *poll_table)
1983 *
1984 * Anyway, this is really very primitive wakeup.
1985 */
1986 -void poll_wait_pipe(struct trace_iterator *iter)
1987 +int poll_wait_pipe(struct trace_iterator *iter)
1988 {
1989 set_current_state(TASK_INTERRUPTIBLE);
1990 /* sleep for 100 msecs, and try again. */
1991 schedule_timeout(HZ / 10);
1992 + return 0;
1993 }
1994
1995 /* Must be called with trace_types_lock mutex held. */
1996 static int tracing_wait_pipe(struct file *filp)
1997 {
1998 struct trace_iterator *iter = filp->private_data;
1999 + int ret;
2000
2001 while (trace_empty(iter)) {
2002
2003 @@ -4180,10 +4182,13 @@ static int tracing_wait_pipe(struct file *filp)
2004
2005 mutex_unlock(&iter->mutex);
2006
2007 - iter->trace->wait_pipe(iter);
2008 + ret = iter->trace->wait_pipe(iter);
2009
2010 mutex_lock(&iter->mutex);
2011
2012 + if (ret)
2013 + return ret;
2014 +
2015 if (signal_pending(current))
2016 return -EINTR;
2017
2018 @@ -5111,8 +5116,12 @@ tracing_buffers_read(struct file *filp, char __user *ubuf,
2019 goto out_unlock;
2020 }
2021 mutex_unlock(&trace_types_lock);
2022 - iter->trace->wait_pipe(iter);
2023 + ret = iter->trace->wait_pipe(iter);
2024 mutex_lock(&trace_types_lock);
2025 + if (ret) {
2026 + size = ret;
2027 + goto out_unlock;
2028 + }
2029 if (signal_pending(current)) {
2030 size = -EINTR;
2031 goto out_unlock;
2032 @@ -5324,8 +5333,10 @@ tracing_buffers_splice_read(struct file *file, loff_t *ppos,
2033 goto out;
2034 }
2035 mutex_unlock(&trace_types_lock);
2036 - iter->trace->wait_pipe(iter);
2037 + ret = iter->trace->wait_pipe(iter);
2038 mutex_lock(&trace_types_lock);
2039 + if (ret)
2040 + goto out;
2041 if (signal_pending(current)) {
2042 ret = -EINTR;
2043 goto out;
2044 diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
2045 index 02b592f2d4b7..c8bd809cbd1c 100644
2046 --- a/kernel/trace/trace.h
2047 +++ b/kernel/trace/trace.h
2048 @@ -336,7 +336,7 @@ struct tracer {
2049 void (*stop)(struct trace_array *tr);
2050 void (*open)(struct trace_iterator *iter);
2051 void (*pipe_open)(struct trace_iterator *iter);
2052 - void (*wait_pipe)(struct trace_iterator *iter);
2053 + int (*wait_pipe)(struct trace_iterator *iter);
2054 void (*close)(struct trace_iterator *iter);
2055 void (*pipe_close)(struct trace_iterator *iter);
2056 ssize_t (*read)(struct trace_iterator *iter,
2057 @@ -552,7 +552,7 @@ void trace_init_global_iter(struct trace_iterator *iter);
2058
2059 void tracing_iter_reset(struct trace_iterator *iter, int cpu);
2060
2061 -void poll_wait_pipe(struct trace_iterator *iter);
2062 +int poll_wait_pipe(struct trace_iterator *iter);
2063
2064 void tracing_sched_switch_trace(struct trace_array *tr,
2065 struct task_struct *prev,
2066 diff --git a/kernel/workqueue.c b/kernel/workqueue.c
2067 index b6a394108e3b..b4defdecec8a 100644
2068 --- a/kernel/workqueue.c
2069 +++ b/kernel/workqueue.c
2070 @@ -3415,6 +3415,7 @@ int workqueue_sysfs_register(struct workqueue_struct *wq)
2071 }
2072 }
2073
2074 + dev_set_uevent_suppress(&wq_dev->dev, false);
2075 kobject_uevent(&wq_dev->dev.kobj, KOBJ_ADD);
2076 return 0;
2077 }
2078 @@ -5026,7 +5027,7 @@ static void __init wq_numa_init(void)
2079 BUG_ON(!tbl);
2080
2081 for_each_node(node)
2082 - BUG_ON(!alloc_cpumask_var_node(&tbl[node], GFP_KERNEL,
2083 + BUG_ON(!zalloc_cpumask_var_node(&tbl[node], GFP_KERNEL,
2084 node_online(node) ? node : NUMA_NO_NODE));
2085
2086 for_each_possible_cpu(cpu) {
2087 diff --git a/mm/Kconfig b/mm/Kconfig
2088 index 9b63c1584a42..0862816bb455 100644
2089 --- a/mm/Kconfig
2090 +++ b/mm/Kconfig
2091 @@ -580,3 +580,18 @@ config PGTABLE_MAPPING
2092
2093 You can check speed with zsmalloc benchmark:
2094 https://github.com/spartacus06/zsmapbench
2095 +
2096 +config MAX_STACK_SIZE_MB
2097 + int "Maximum user stack size for 32-bit processes (MB)"
2098 + default 80
2099 + range 8 256 if METAG
2100 + range 8 2048
2101 + depends on STACK_GROWSUP && (!64BIT || COMPAT)
2102 + help
2103 + This is the maximum stack size in Megabytes in the VM layout of 32-bit
2104 + user processes when the stack grows upwards (currently only on parisc
2105 + and metag arch). The stack will be located at the highest memory
2106 + address minus the given value, unless the RLIMIT_STACK hard limit is
2107 + changed to a smaller value in which case that is used.
2108 +
2109 + A sane initial value is 80 MB.
2110 diff --git a/mm/mempolicy.c b/mm/mempolicy.c
2111 index 9c6288aea4f9..15a8ea031526 100644
2112 --- a/mm/mempolicy.c
2113 +++ b/mm/mempolicy.c
2114 @@ -2170,7 +2170,6 @@ struct mempolicy *__mpol_dup(struct mempolicy *old)
2115 } else
2116 *new = *old;
2117
2118 - rcu_read_lock();
2119 if (current_cpuset_is_being_rebound()) {
2120 nodemask_t mems = cpuset_mems_allowed(current);
2121 if (new->flags & MPOL_F_REBINDING)
2122 @@ -2178,7 +2177,6 @@ struct mempolicy *__mpol_dup(struct mempolicy *old)
2123 else
2124 mpol_rebind_policy(new, &mems, MPOL_REBIND_ONCE);
2125 }
2126 - rcu_read_unlock();
2127 atomic_set(&new->refcnt, 1);
2128 return new;
2129 }