Magellan Linux

Contents of /trunk/kernel-magellan/patches-3.15/0105-3.15.6-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2486 - (show annotations) (download)
Mon Jul 21 12:24:54 2014 UTC (9 years, 9 months ago) by niro
File size: 99860 byte(s)
-linux-3.15.6
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 e6b01ed8fd9f..fefa0237c2d1 100644
23 --- a/Makefile
24 +++ b/Makefile
25 @@ -1,6 +1,6 @@
26 VERSION = 3
27 PATCHLEVEL = 15
28 -SUBLEVEL = 5
29 +SUBLEVEL = 6
30 EXTRAVERSION =
31 NAME = Shuffling Zombie Juror
32
33 diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h
34 index 993bce527b85..902eb708804a 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/parisc/kernel/hardware.c b/arch/parisc/kernel/hardware.c
47 index 608716f8496b..af3bc359dc70 100644
48 --- a/arch/parisc/kernel/hardware.c
49 +++ b/arch/parisc/kernel/hardware.c
50 @@ -1210,7 +1210,8 @@ static struct hp_hardware hp_hardware_list[] = {
51 {HPHW_FIO, 0x004, 0x00320, 0x0, "Metheus Frame Buffer"},
52 {HPHW_FIO, 0x004, 0x00340, 0x0, "BARCO CX4500 VME Grphx Cnsl"},
53 {HPHW_FIO, 0x004, 0x00360, 0x0, "Hughes TOG VME FDDI"},
54 - {HPHW_FIO, 0x076, 0x000AD, 0x00, "Crestone Peak RS-232"},
55 + {HPHW_FIO, 0x076, 0x000AD, 0x0, "Crestone Peak Core RS-232"},
56 + {HPHW_FIO, 0x077, 0x000AD, 0x0, "Crestone Peak Fast? Core RS-232"},
57 {HPHW_IOA, 0x185, 0x0000B, 0x00, "Java BC Summit Port"},
58 {HPHW_IOA, 0x1FF, 0x0000B, 0x00, "Hitachi Ghostview Summit Port"},
59 {HPHW_IOA, 0x580, 0x0000B, 0x10, "U2-IOA BC Runway Port"},
60 diff --git a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c
61 index bb9f3b64de55..ec741fe02ab6 100644
62 --- a/arch/parisc/kernel/sys_parisc32.c
63 +++ b/arch/parisc/kernel/sys_parisc32.c
64 @@ -4,6 +4,7 @@
65 * Copyright (C) 2000-2001 Hewlett Packard Company
66 * Copyright (C) 2000 John Marvin
67 * Copyright (C) 2001 Matthew Wilcox
68 + * Copyright (C) 2014 Helge Deller <deller@gmx.de>
69 *
70 * These routines maintain argument size conversion between 32bit and 64bit
71 * environment. Based heavily on sys_ia32.c and sys_sparc32.c.
72 @@ -57,3 +58,12 @@ asmlinkage long sys32_unimplemented(int r26, int r25, int r24, int r23,
73 current->comm, current->pid, r20);
74 return -ENOSYS;
75 }
76 +
77 +asmlinkage long sys32_fanotify_mark(compat_int_t fanotify_fd, compat_uint_t flags,
78 + compat_uint_t mask0, compat_uint_t mask1, compat_int_t dfd,
79 + const char __user * pathname)
80 +{
81 + return sys_fanotify_mark(fanotify_fd, flags,
82 + ((__u64)mask1 << 32) | mask0,
83 + dfd, pathname);
84 +}
85 diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S
86 index c5fa7a697fba..84c5d3a58fa1 100644
87 --- a/arch/parisc/kernel/syscall_table.S
88 +++ b/arch/parisc/kernel/syscall_table.S
89 @@ -418,7 +418,7 @@
90 ENTRY_SAME(accept4) /* 320 */
91 ENTRY_SAME(prlimit64)
92 ENTRY_SAME(fanotify_init)
93 - ENTRY_COMP(fanotify_mark)
94 + ENTRY_DIFF(fanotify_mark)
95 ENTRY_COMP(clock_adjtime)
96 ENTRY_SAME(name_to_handle_at) /* 325 */
97 ENTRY_COMP(open_by_handle_at)
98 diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
99 index e0998997943b..c95c4b8c3e74 100644
100 --- a/arch/powerpc/Kconfig
101 +++ b/arch/powerpc/Kconfig
102 @@ -414,7 +414,7 @@ config KEXEC
103 config CRASH_DUMP
104 bool "Build a kdump crash kernel"
105 depends on PPC64 || 6xx || FSL_BOOKE || (44x && !SMP)
106 - select RELOCATABLE if PPC64 || 44x || FSL_BOOKE
107 + select RELOCATABLE if (PPC64 && !COMPILE_TEST) || 44x || FSL_BOOKE
108 help
109 Build a kernel suitable for use as a kdump capture kernel.
110 The same kernel binary can be used as production kernel and dump
111 @@ -1009,6 +1009,7 @@ endmenu
112 if PPC64
113 config RELOCATABLE
114 bool "Build a relocatable kernel"
115 + depends on !COMPILE_TEST
116 select NONSTATIC_KERNEL
117 help
118 This builds a kernel image that is capable of running anywhere
119 diff --git a/arch/powerpc/include/asm/perf_event_server.h b/arch/powerpc/include/asm/perf_event_server.h
120 index 9ed737146dbb..b3e936027b26 100644
121 --- a/arch/powerpc/include/asm/perf_event_server.h
122 +++ b/arch/powerpc/include/asm/perf_event_server.h
123 @@ -61,8 +61,7 @@ struct power_pmu {
124 #define PPMU_SIAR_VALID 0x00000010 /* Processor has SIAR Valid bit */
125 #define PPMU_HAS_SSLOT 0x00000020 /* Has sampled slot in MMCRA */
126 #define PPMU_HAS_SIER 0x00000040 /* Has SIER */
127 -#define PPMU_BHRB 0x00000080 /* has BHRB feature enabled */
128 -#define PPMU_EBB 0x00000100 /* supports event based branch */
129 +#define PPMU_ARCH_207S 0x00000080 /* PMC is architecture v2.07S */
130
131 /*
132 * Values for flags to get_alternatives()
133 diff --git a/arch/powerpc/kvm/book3s_hv_interrupts.S b/arch/powerpc/kvm/book3s_hv_interrupts.S
134 index e18e3cfc32de..92be3fad1075 100644
135 --- a/arch/powerpc/kvm/book3s_hv_interrupts.S
136 +++ b/arch/powerpc/kvm/book3s_hv_interrupts.S
137 @@ -127,11 +127,6 @@ BEGIN_FTR_SECTION
138 stw r10, HSTATE_PMC + 24(r13)
139 stw r11, HSTATE_PMC + 28(r13)
140 END_FTR_SECTION_IFSET(CPU_FTR_ARCH_201)
141 -BEGIN_FTR_SECTION
142 - mfspr r9, SPRN_SIER
143 - std r8, HSTATE_MMCR + 40(r13)
144 - std r9, HSTATE_MMCR + 48(r13)
145 -END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
146 31:
147
148 /*
149 diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c
150 index 4520c9356b54..6b0641c3f03f 100644
151 --- a/arch/powerpc/perf/core-book3s.c
152 +++ b/arch/powerpc/perf/core-book3s.c
153 @@ -485,7 +485,7 @@ static bool is_ebb_event(struct perf_event *event)
154 * check that the PMU supports EBB, meaning those that don't can still
155 * use bit 63 of the event code for something else if they wish.
156 */
157 - return (ppmu->flags & PPMU_EBB) &&
158 + return (ppmu->flags & PPMU_ARCH_207S) &&
159 ((event->attr.config >> PERF_EVENT_CONFIG_EBB_SHIFT) & 1);
160 }
161
162 @@ -777,7 +777,7 @@ void perf_event_print_debug(void)
163 if (ppmu->flags & PPMU_HAS_SIER)
164 sier = mfspr(SPRN_SIER);
165
166 - if (ppmu->flags & PPMU_EBB) {
167 + if (ppmu->flags & PPMU_ARCH_207S) {
168 pr_info("MMCR2: %016lx EBBHR: %016lx\n",
169 mfspr(SPRN_MMCR2), mfspr(SPRN_EBBHR));
170 pr_info("EBBRR: %016lx BESCR: %016lx\n",
171 @@ -996,7 +996,22 @@ static void power_pmu_read(struct perf_event *event)
172 } while (local64_cmpxchg(&event->hw.prev_count, prev, val) != prev);
173
174 local64_add(delta, &event->count);
175 - local64_sub(delta, &event->hw.period_left);
176 +
177 + /*
178 + * A number of places program the PMC with (0x80000000 - period_left).
179 + * We never want period_left to be less than 1 because we will program
180 + * the PMC with a value >= 0x800000000 and an edge detected PMC will
181 + * roll around to 0 before taking an exception. We have seen this
182 + * on POWER8.
183 + *
184 + * To fix this, clamp the minimum value of period_left to 1.
185 + */
186 + do {
187 + prev = local64_read(&event->hw.period_left);
188 + val = prev - delta;
189 + if (val < 1)
190 + val = 1;
191 + } while (local64_cmpxchg(&event->hw.period_left, prev, val) != prev);
192 }
193
194 /*
195 @@ -1300,6 +1315,9 @@ static void power_pmu_enable(struct pmu *pmu)
196
197 write_mmcr0(cpuhw, mmcr0);
198
199 + if (ppmu->flags & PPMU_ARCH_207S)
200 + mtspr(SPRN_MMCR2, 0);
201 +
202 /*
203 * Enable instruction sampling if necessary
204 */
205 @@ -1696,7 +1714,7 @@ static int power_pmu_event_init(struct perf_event *event)
206
207 if (has_branch_stack(event)) {
208 /* PMU has BHRB enabled */
209 - if (!(ppmu->flags & PPMU_BHRB))
210 + if (!(ppmu->flags & PPMU_ARCH_207S))
211 return -EOPNOTSUPP;
212 }
213
214 diff --git a/arch/powerpc/perf/power8-pmu.c b/arch/powerpc/perf/power8-pmu.c
215 index fe2763b6e039..639cd9156585 100644
216 --- a/arch/powerpc/perf/power8-pmu.c
217 +++ b/arch/powerpc/perf/power8-pmu.c
218 @@ -792,7 +792,7 @@ static struct power_pmu power8_pmu = {
219 .get_constraint = power8_get_constraint,
220 .get_alternatives = power8_get_alternatives,
221 .disable_pmc = power8_disable_pmc,
222 - .flags = PPMU_HAS_SSLOT | PPMU_HAS_SIER | PPMU_BHRB | PPMU_EBB,
223 + .flags = PPMU_HAS_SSLOT | PPMU_HAS_SIER | PPMU_ARCH_207S,
224 .n_generic = ARRAY_SIZE(power8_generic_events),
225 .generic_events = power8_generic_events,
226 .cache_events = &power8_cache_events,
227 diff --git a/arch/x86/crypto/sha512_ssse3_glue.c b/arch/x86/crypto/sha512_ssse3_glue.c
228 index f30cd10293f0..8626b03e83b7 100644
229 --- a/arch/x86/crypto/sha512_ssse3_glue.c
230 +++ b/arch/x86/crypto/sha512_ssse3_glue.c
231 @@ -141,7 +141,7 @@ static int sha512_ssse3_final(struct shash_desc *desc, u8 *out)
232
233 /* save number of bits */
234 bits[1] = cpu_to_be64(sctx->count[0] << 3);
235 - bits[0] = cpu_to_be64(sctx->count[1] << 3) | sctx->count[0] >> 61;
236 + bits[0] = cpu_to_be64(sctx->count[1] << 3 | sctx->count[0] >> 61);
237
238 /* Pad out to 112 mod 128 and append length */
239 index = sctx->count[0] & 0x7f;
240 diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
241 index 597ac155c91c..bc7527e109c8 100644
242 --- a/arch/x86/mm/ioremap.c
243 +++ b/arch/x86/mm/ioremap.c
244 @@ -50,6 +50,21 @@ int ioremap_change_attr(unsigned long vaddr, unsigned long size,
245 return err;
246 }
247
248 +static int __ioremap_check_ram(unsigned long start_pfn, unsigned long nr_pages,
249 + void *arg)
250 +{
251 + unsigned long i;
252 +
253 + for (i = 0; i < nr_pages; ++i)
254 + if (pfn_valid(start_pfn + i) &&
255 + !PageReserved(pfn_to_page(start_pfn + i)))
256 + return 1;
257 +
258 + WARN_ONCE(1, "ioremap on RAM pfn 0x%lx\n", start_pfn);
259 +
260 + return 0;
261 +}
262 +
263 /*
264 * Remap an arbitrary physical address space into the kernel virtual
265 * address space. Needed when the kernel wants to access high addresses
266 @@ -93,14 +108,11 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr,
267 /*
268 * Don't allow anybody to remap normal RAM that we're using..
269 */
270 + pfn = phys_addr >> PAGE_SHIFT;
271 last_pfn = last_addr >> PAGE_SHIFT;
272 - for (pfn = phys_addr >> PAGE_SHIFT; pfn <= last_pfn; pfn++) {
273 - int is_ram = page_is_ram(pfn);
274 -
275 - if (is_ram && pfn_valid(pfn) && !PageReserved(pfn_to_page(pfn)))
276 - return NULL;
277 - WARN_ON_ONCE(is_ram);
278 - }
279 + if (walk_system_ram_range(pfn, last_pfn - pfn + 1, NULL,
280 + __ioremap_check_ram) == 1)
281 + return NULL;
282
283 /*
284 * Mappings have to be page-aligned
285 diff --git a/drivers/acpi/ac.c b/drivers/acpi/ac.c
286 index c67f6f5ad611..36b0e61f9c09 100644
287 --- a/drivers/acpi/ac.c
288 +++ b/drivers/acpi/ac.c
289 @@ -30,6 +30,10 @@
290 #include <linux/types.h>
291 #include <linux/dmi.h>
292 #include <linux/delay.h>
293 +#ifdef CONFIG_ACPI_PROCFS_POWER
294 +#include <linux/proc_fs.h>
295 +#include <linux/seq_file.h>
296 +#endif
297 #include <linux/platform_device.h>
298 #include <linux/power_supply.h>
299 #include <linux/acpi.h>
300 @@ -52,6 +56,7 @@ MODULE_AUTHOR("Paul Diefenbaugh");
301 MODULE_DESCRIPTION("ACPI AC Adapter Driver");
302 MODULE_LICENSE("GPL");
303
304 +
305 static int acpi_ac_add(struct acpi_device *device);
306 static int acpi_ac_remove(struct acpi_device *device);
307 static void acpi_ac_notify(struct acpi_device *device, u32 event);
308 @@ -67,6 +72,13 @@ static int acpi_ac_resume(struct device *dev);
309 #endif
310 static SIMPLE_DEV_PM_OPS(acpi_ac_pm, NULL, acpi_ac_resume);
311
312 +#ifdef CONFIG_ACPI_PROCFS_POWER
313 +extern struct proc_dir_entry *acpi_lock_ac_dir(void);
314 +extern void *acpi_unlock_ac_dir(struct proc_dir_entry *acpi_ac_dir);
315 +static int acpi_ac_open_fs(struct inode *inode, struct file *file);
316 +#endif
317 +
318 +
319 static int ac_sleep_before_get_state_ms;
320
321 static struct acpi_driver acpi_ac_driver = {
322 @@ -91,6 +103,16 @@ struct acpi_ac {
323
324 #define to_acpi_ac(x) container_of(x, struct acpi_ac, charger)
325
326 +#ifdef CONFIG_ACPI_PROCFS_POWER
327 +static const struct file_operations acpi_ac_fops = {
328 + .owner = THIS_MODULE,
329 + .open = acpi_ac_open_fs,
330 + .read = seq_read,
331 + .llseek = seq_lseek,
332 + .release = single_release,
333 +};
334 +#endif
335 +
336 /* --------------------------------------------------------------------------
337 AC Adapter Management
338 -------------------------------------------------------------------------- */
339 @@ -143,6 +165,83 @@ static enum power_supply_property ac_props[] = {
340 POWER_SUPPLY_PROP_ONLINE,
341 };
342
343 +#ifdef CONFIG_ACPI_PROCFS_POWER
344 +/* --------------------------------------------------------------------------
345 + FS Interface (/proc)
346 + -------------------------------------------------------------------------- */
347 +
348 +static struct proc_dir_entry *acpi_ac_dir;
349 +
350 +static int acpi_ac_seq_show(struct seq_file *seq, void *offset)
351 +{
352 + struct acpi_ac *ac = seq->private;
353 +
354 +
355 + if (!ac)
356 + return 0;
357 +
358 + if (acpi_ac_get_state(ac)) {
359 + seq_puts(seq, "ERROR: Unable to read AC Adapter state\n");
360 + return 0;
361 + }
362 +
363 + seq_puts(seq, "state: ");
364 + switch (ac->state) {
365 + case ACPI_AC_STATUS_OFFLINE:
366 + seq_puts(seq, "off-line\n");
367 + break;
368 + case ACPI_AC_STATUS_ONLINE:
369 + seq_puts(seq, "on-line\n");
370 + break;
371 + default:
372 + seq_puts(seq, "unknown\n");
373 + break;
374 + }
375 +
376 + return 0;
377 +}
378 +
379 +static int acpi_ac_open_fs(struct inode *inode, struct file *file)
380 +{
381 + return single_open(file, acpi_ac_seq_show, PDE_DATA(inode));
382 +}
383 +
384 +static int acpi_ac_add_fs(struct acpi_ac *ac)
385 +{
386 + struct proc_dir_entry *entry = NULL;
387 +
388 + printk(KERN_WARNING PREFIX "Deprecated procfs I/F for AC is loaded,"
389 + " please retry with CONFIG_ACPI_PROCFS_POWER cleared\n");
390 + if (!acpi_device_dir(ac->device)) {
391 + acpi_device_dir(ac->device) =
392 + proc_mkdir(acpi_device_bid(ac->device), acpi_ac_dir);
393 + if (!acpi_device_dir(ac->device))
394 + return -ENODEV;
395 + }
396 +
397 + /* 'state' [R] */
398 + entry = proc_create_data(ACPI_AC_FILE_STATE,
399 + S_IRUGO, acpi_device_dir(ac->device),
400 + &acpi_ac_fops, ac);
401 + if (!entry)
402 + return -ENODEV;
403 + return 0;
404 +}
405 +
406 +static int acpi_ac_remove_fs(struct acpi_ac *ac)
407 +{
408 +
409 + if (acpi_device_dir(ac->device)) {
410 + remove_proc_entry(ACPI_AC_FILE_STATE,
411 + acpi_device_dir(ac->device));
412 + remove_proc_entry(acpi_device_bid(ac->device), acpi_ac_dir);
413 + acpi_device_dir(ac->device) = NULL;
414 + }
415 +
416 + return 0;
417 +}
418 +#endif
419 +
420 /* --------------------------------------------------------------------------
421 Driver Model
422 -------------------------------------------------------------------------- */
423 @@ -243,6 +342,11 @@ static int acpi_ac_add(struct acpi_device *device)
424 goto end;
425
426 ac->charger.name = acpi_device_bid(device);
427 +#ifdef CONFIG_ACPI_PROCFS_POWER
428 + result = acpi_ac_add_fs(ac);
429 + if (result)
430 + goto end;
431 +#endif
432 ac->charger.type = POWER_SUPPLY_TYPE_MAINS;
433 ac->charger.properties = ac_props;
434 ac->charger.num_properties = ARRAY_SIZE(ac_props);
435 @@ -258,8 +362,12 @@ static int acpi_ac_add(struct acpi_device *device)
436 ac->battery_nb.notifier_call = acpi_ac_battery_notify;
437 register_acpi_notifier(&ac->battery_nb);
438 end:
439 - if (result)
440 + if (result) {
441 +#ifdef CONFIG_ACPI_PROCFS_POWER
442 + acpi_ac_remove_fs(ac);
443 +#endif
444 kfree(ac);
445 + }
446
447 dmi_check_system(ac_dmi_table);
448 return result;
449 @@ -303,6 +411,10 @@ static int acpi_ac_remove(struct acpi_device *device)
450 power_supply_unregister(&ac->charger);
451 unregister_acpi_notifier(&ac->battery_nb);
452
453 +#ifdef CONFIG_ACPI_PROCFS_POWER
454 + acpi_ac_remove_fs(ac);
455 +#endif
456 +
457 kfree(ac);
458
459 return 0;
460 @@ -315,9 +427,20 @@ static int __init acpi_ac_init(void)
461 if (acpi_disabled)
462 return -ENODEV;
463
464 +#ifdef CONFIG_ACPI_PROCFS_POWER
465 + acpi_ac_dir = acpi_lock_ac_dir();
466 + if (!acpi_ac_dir)
467 + return -ENODEV;
468 +#endif
469 +
470 +
471 result = acpi_bus_register_driver(&acpi_ac_driver);
472 - if (result < 0)
473 + if (result < 0) {
474 +#ifdef CONFIG_ACPI_PROCFS_POWER
475 + acpi_unlock_ac_dir(acpi_ac_dir);
476 +#endif
477 return -ENODEV;
478 + }
479
480 return 0;
481 }
482 @@ -325,6 +448,9 @@ static int __init acpi_ac_init(void)
483 static void __exit acpi_ac_exit(void)
484 {
485 acpi_bus_unregister_driver(&acpi_ac_driver);
486 +#ifdef CONFIG_ACPI_PROCFS_POWER
487 + acpi_unlock_ac_dir(acpi_ac_dir);
488 +#endif
489 }
490 module_init(acpi_ac_init);
491 module_exit(acpi_ac_exit);
492 diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
493 index 6e7b2a12860d..884c5674fda8 100644
494 --- a/drivers/acpi/battery.c
495 +++ b/drivers/acpi/battery.c
496 @@ -34,6 +34,7 @@
497 #include <linux/dmi.h>
498 #include <linux/slab.h>
499 #include <linux/suspend.h>
500 +#include <linux/delay.h>
501 #include <asm/unaligned.h>
502
503 #ifdef CONFIG_ACPI_PROCFS_POWER
504 @@ -1069,6 +1070,28 @@ static struct dmi_system_id bat_dmi_table[] = {
505 {},
506 };
507
508 +/*
509 + * Some machines'(E,G Lenovo Z480) ECs are not stable
510 + * during boot up and this causes battery driver fails to be
511 + * probed due to failure of getting battery information
512 + * from EC sometimes. After several retries, the operation
513 + * may work. So add retry code here and 20ms sleep between
514 + * every retries.
515 + */
516 +static int acpi_battery_update_retry(struct acpi_battery *battery)
517 +{
518 + int retry, ret;
519 +
520 + for (retry = 5; retry; retry--) {
521 + ret = acpi_battery_update(battery);
522 + if (!ret)
523 + break;
524 +
525 + msleep(20);
526 + }
527 + return ret;
528 +}
529 +
530 static int acpi_battery_add(struct acpi_device *device)
531 {
532 int result = 0;
533 @@ -1087,9 +1110,11 @@ static int acpi_battery_add(struct acpi_device *device)
534 mutex_init(&battery->sysfs_lock);
535 if (acpi_has_method(battery->device->handle, "_BIX"))
536 set_bit(ACPI_BATTERY_XINFO_PRESENT, &battery->flags);
537 - result = acpi_battery_update(battery);
538 +
539 + result = acpi_battery_update_retry(battery);
540 if (result)
541 goto fail;
542 +
543 #ifdef CONFIG_ACPI_PROCFS_POWER
544 result = acpi_battery_add_fs(device);
545 #endif
546 diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
547 index ad11ba4a412d..49d89909b4ed 100644
548 --- a/drivers/acpi/ec.c
549 +++ b/drivers/acpi/ec.c
550 @@ -78,6 +78,9 @@ enum {
551 EC_FLAGS_BLOCKED, /* Transactions are blocked */
552 };
553
554 +#define ACPI_EC_COMMAND_POLL 0x01 /* Available for command byte */
555 +#define ACPI_EC_COMMAND_COMPLETE 0x02 /* Completed last byte */
556 +
557 /* ec.c is compiled in acpi namespace so this shows up as acpi.ec_delay param */
558 static unsigned int ec_delay __read_mostly = ACPI_EC_DELAY;
559 module_param(ec_delay, uint, 0644);
560 @@ -109,7 +112,7 @@ struct transaction {
561 u8 ri;
562 u8 wlen;
563 u8 rlen;
564 - bool done;
565 + u8 flags;
566 };
567
568 struct acpi_ec *boot_ec, *first_ec;
569 @@ -150,60 +153,74 @@ static inline void acpi_ec_write_data(struct acpi_ec *ec, u8 data)
570 outb(data, ec->data_addr);
571 }
572
573 -static int ec_transaction_done(struct acpi_ec *ec)
574 +static int ec_transaction_completed(struct acpi_ec *ec)
575 {
576 unsigned long flags;
577 int ret = 0;
578 spin_lock_irqsave(&ec->lock, flags);
579 - if (!ec->curr || ec->curr->done)
580 + if (ec->curr && (ec->curr->flags & ACPI_EC_COMMAND_COMPLETE))
581 ret = 1;
582 spin_unlock_irqrestore(&ec->lock, flags);
583 return ret;
584 }
585
586 -static void start_transaction(struct acpi_ec *ec)
587 +static bool advance_transaction(struct acpi_ec *ec)
588 {
589 - ec->curr->irq_count = ec->curr->wi = ec->curr->ri = 0;
590 - ec->curr->done = false;
591 - acpi_ec_write_cmd(ec, ec->curr->command);
592 -}
593 -
594 -static void advance_transaction(struct acpi_ec *ec, u8 status)
595 -{
596 - unsigned long flags;
597 struct transaction *t;
598 + u8 status;
599 + bool wakeup = false;
600
601 - spin_lock_irqsave(&ec->lock, flags);
602 + pr_debug("===== %s =====\n", in_interrupt() ? "IRQ" : "TASK");
603 + status = acpi_ec_read_status(ec);
604 t = ec->curr;
605 if (!t)
606 - goto unlock;
607 - if (t->wlen > t->wi) {
608 - if ((status & ACPI_EC_FLAG_IBF) == 0)
609 - acpi_ec_write_data(ec,
610 - t->wdata[t->wi++]);
611 - else
612 - goto err;
613 - } else if (t->rlen > t->ri) {
614 - if ((status & ACPI_EC_FLAG_OBF) == 1) {
615 - t->rdata[t->ri++] = acpi_ec_read_data(ec);
616 - if (t->rlen == t->ri)
617 - t->done = true;
618 + goto err;
619 + if (t->flags & ACPI_EC_COMMAND_POLL) {
620 + if (t->wlen > t->wi) {
621 + if ((status & ACPI_EC_FLAG_IBF) == 0)
622 + acpi_ec_write_data(ec, t->wdata[t->wi++]);
623 + else
624 + goto err;
625 + } else if (t->rlen > t->ri) {
626 + if ((status & ACPI_EC_FLAG_OBF) == 1) {
627 + t->rdata[t->ri++] = acpi_ec_read_data(ec);
628 + if (t->rlen == t->ri) {
629 + t->flags |= ACPI_EC_COMMAND_COMPLETE;
630 + wakeup = true;
631 + }
632 + } else
633 + goto err;
634 + } else if (t->wlen == t->wi &&
635 + (status & ACPI_EC_FLAG_IBF) == 0) {
636 + t->flags |= ACPI_EC_COMMAND_COMPLETE;
637 + wakeup = true;
638 + }
639 + return wakeup;
640 + } else {
641 + if ((status & ACPI_EC_FLAG_IBF) == 0) {
642 + acpi_ec_write_cmd(ec, t->command);
643 + t->flags |= ACPI_EC_COMMAND_POLL;
644 } else
645 goto err;
646 - } else if (t->wlen == t->wi &&
647 - (status & ACPI_EC_FLAG_IBF) == 0)
648 - t->done = true;
649 - goto unlock;
650 + return wakeup;
651 + }
652 err:
653 /*
654 * If SCI bit is set, then don't think it's a false IRQ
655 * otherwise will take a not handled IRQ as a false one.
656 */
657 - if (in_interrupt() && !(status & ACPI_EC_FLAG_SCI))
658 - ++t->irq_count;
659 + if (!(status & ACPI_EC_FLAG_SCI)) {
660 + if (in_interrupt() && t)
661 + ++t->irq_count;
662 + }
663 + return wakeup;
664 +}
665
666 -unlock:
667 - spin_unlock_irqrestore(&ec->lock, flags);
668 +static void start_transaction(struct acpi_ec *ec)
669 +{
670 + ec->curr->irq_count = ec->curr->wi = ec->curr->ri = 0;
671 + ec->curr->flags = 0;
672 + (void)advance_transaction(ec);
673 }
674
675 static int acpi_ec_sync_query(struct acpi_ec *ec, u8 *data);
676 @@ -228,15 +245,17 @@ static int ec_poll(struct acpi_ec *ec)
677 /* don't sleep with disabled interrupts */
678 if (EC_FLAGS_MSI || irqs_disabled()) {
679 udelay(ACPI_EC_MSI_UDELAY);
680 - if (ec_transaction_done(ec))
681 + if (ec_transaction_completed(ec))
682 return 0;
683 } else {
684 if (wait_event_timeout(ec->wait,
685 - ec_transaction_done(ec),
686 + ec_transaction_completed(ec),
687 msecs_to_jiffies(1)))
688 return 0;
689 }
690 - advance_transaction(ec, acpi_ec_read_status(ec));
691 + spin_lock_irqsave(&ec->lock, flags);
692 + (void)advance_transaction(ec);
693 + spin_unlock_irqrestore(&ec->lock, flags);
694 } while (time_before(jiffies, delay));
695 pr_debug("controller reset, restart transaction\n");
696 spin_lock_irqsave(&ec->lock, flags);
697 @@ -268,23 +287,6 @@ static int acpi_ec_transaction_unlocked(struct acpi_ec *ec,
698 return ret;
699 }
700
701 -static int ec_check_ibf0(struct acpi_ec *ec)
702 -{
703 - u8 status = acpi_ec_read_status(ec);
704 - return (status & ACPI_EC_FLAG_IBF) == 0;
705 -}
706 -
707 -static int ec_wait_ibf0(struct acpi_ec *ec)
708 -{
709 - unsigned long delay = jiffies + msecs_to_jiffies(ec_delay);
710 - /* interrupt wait manually if GPE mode is not active */
711 - while (time_before(jiffies, delay))
712 - if (wait_event_timeout(ec->wait, ec_check_ibf0(ec),
713 - msecs_to_jiffies(1)))
714 - return 0;
715 - return -ETIME;
716 -}
717 -
718 static int acpi_ec_transaction(struct acpi_ec *ec, struct transaction *t)
719 {
720 int status;
721 @@ -305,12 +307,6 @@ static int acpi_ec_transaction(struct acpi_ec *ec, struct transaction *t)
722 goto unlock;
723 }
724 }
725 - if (ec_wait_ibf0(ec)) {
726 - pr_err("input buffer is not empty, "
727 - "aborting transaction\n");
728 - status = -ETIME;
729 - goto end;
730 - }
731 pr_debug("transaction start (cmd=0x%02x, addr=0x%02x)\n",
732 t->command, t->wdata ? t->wdata[0] : 0);
733 /* disable GPE during transaction if storm is detected */
734 @@ -334,7 +330,6 @@ static int acpi_ec_transaction(struct acpi_ec *ec, struct transaction *t)
735 set_bit(EC_FLAGS_GPE_STORM, &ec->flags);
736 }
737 pr_debug("transaction end\n");
738 -end:
739 if (ec->global_lock)
740 acpi_release_global_lock(glk);
741 unlock:
742 @@ -634,17 +629,14 @@ static int ec_check_sci(struct acpi_ec *ec, u8 state)
743 static u32 acpi_ec_gpe_handler(acpi_handle gpe_device,
744 u32 gpe_number, void *data)
745 {
746 + unsigned long flags;
747 struct acpi_ec *ec = data;
748 - u8 status = acpi_ec_read_status(ec);
749
750 - pr_debug("~~~> interrupt, status:0x%02x\n", status);
751 -
752 - advance_transaction(ec, status);
753 - if (ec_transaction_done(ec) &&
754 - (acpi_ec_read_status(ec) & ACPI_EC_FLAG_IBF) == 0) {
755 + spin_lock_irqsave(&ec->lock, flags);
756 + if (advance_transaction(ec))
757 wake_up(&ec->wait);
758 - ec_check_sci(ec, acpi_ec_read_status(ec));
759 - }
760 + spin_unlock_irqrestore(&ec->lock, flags);
761 + ec_check_sci(ec, acpi_ec_read_status(ec));
762 return ACPI_INTERRUPT_HANDLED | ACPI_REENABLE_GPE;
763 }
764
765 diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
766 index 0bdacc5e26a3..2ba8f02ced36 100644
767 --- a/drivers/acpi/resource.c
768 +++ b/drivers/acpi/resource.c
769 @@ -77,7 +77,7 @@ bool acpi_dev_resource_memory(struct acpi_resource *ares, struct resource *res)
770 switch (ares->type) {
771 case ACPI_RESOURCE_TYPE_MEMORY24:
772 memory24 = &ares->data.memory24;
773 - if (!memory24->address_length)
774 + if (!memory24->minimum && !memory24->address_length)
775 return false;
776 acpi_dev_get_memresource(res, memory24->minimum,
777 memory24->address_length,
778 @@ -85,7 +85,7 @@ bool acpi_dev_resource_memory(struct acpi_resource *ares, struct resource *res)
779 break;
780 case ACPI_RESOURCE_TYPE_MEMORY32:
781 memory32 = &ares->data.memory32;
782 - if (!memory32->address_length)
783 + if (!memory32->minimum && !memory32->address_length)
784 return false;
785 acpi_dev_get_memresource(res, memory32->minimum,
786 memory32->address_length,
787 @@ -93,7 +93,7 @@ bool acpi_dev_resource_memory(struct acpi_resource *ares, struct resource *res)
788 break;
789 case ACPI_RESOURCE_TYPE_FIXED_MEMORY32:
790 fixed_memory32 = &ares->data.fixed_memory32;
791 - if (!fixed_memory32->address_length)
792 + if (!fixed_memory32->address && !fixed_memory32->address_length)
793 return false;
794 acpi_dev_get_memresource(res, fixed_memory32->address,
795 fixed_memory32->address_length,
796 @@ -150,7 +150,7 @@ bool acpi_dev_resource_io(struct acpi_resource *ares, struct resource *res)
797 switch (ares->type) {
798 case ACPI_RESOURCE_TYPE_IO:
799 io = &ares->data.io;
800 - if (!io->address_length)
801 + if (!io->minimum && !io->address_length)
802 return false;
803 acpi_dev_get_ioresource(res, io->minimum,
804 io->address_length,
805 @@ -158,7 +158,7 @@ bool acpi_dev_resource_io(struct acpi_resource *ares, struct resource *res)
806 break;
807 case ACPI_RESOURCE_TYPE_FIXED_IO:
808 fixed_io = &ares->data.fixed_io;
809 - if (!fixed_io->address_length)
810 + if (!fixed_io->address && !fixed_io->address_length)
811 return false;
812 acpi_dev_get_ioresource(res, fixed_io->address,
813 fixed_io->address_length,
814 diff --git a/drivers/ata/ahci_imx.c b/drivers/ata/ahci_imx.c
815 index 8befeb69eeb1..926355e6eeea 100644
816 --- a/drivers/ata/ahci_imx.c
817 +++ b/drivers/ata/ahci_imx.c
818 @@ -58,6 +58,8 @@ enum ahci_imx_type {
819 struct imx_ahci_priv {
820 struct platform_device *ahci_pdev;
821 enum ahci_imx_type type;
822 + struct clk *sata_clk;
823 + struct clk *sata_ref_clk;
824 struct clk *ahb_clk;
825 struct regmap *gpr;
826 bool no_device;
827 @@ -224,7 +226,7 @@ static int imx_sata_enable(struct ahci_host_priv *hpriv)
828 return ret;
829 }
830
831 - ret = ahci_platform_enable_clks(hpriv);
832 + ret = clk_prepare_enable(imxpriv->sata_ref_clk);
833 if (ret < 0)
834 goto disable_regulator;
835
836 @@ -291,7 +293,7 @@ static void imx_sata_disable(struct ahci_host_priv *hpriv)
837 !IMX6Q_GPR13_SATA_MPLL_CLK_EN);
838 }
839
840 - ahci_platform_disable_clks(hpriv);
841 + clk_disable_unprepare(imxpriv->sata_ref_clk);
842
843 if (hpriv->target_pwr)
844 regulator_disable(hpriv->target_pwr);
845 @@ -385,6 +387,19 @@ static int imx_ahci_probe(struct platform_device *pdev)
846 imxpriv->no_device = false;
847 imxpriv->first_time = true;
848 imxpriv->type = (enum ahci_imx_type)of_id->data;
849 +
850 + imxpriv->sata_clk = devm_clk_get(dev, "sata");
851 + if (IS_ERR(imxpriv->sata_clk)) {
852 + dev_err(dev, "can't get sata clock.\n");
853 + return PTR_ERR(imxpriv->sata_clk);
854 + }
855 +
856 + imxpriv->sata_ref_clk = devm_clk_get(dev, "sata_ref");
857 + if (IS_ERR(imxpriv->sata_ref_clk)) {
858 + dev_err(dev, "can't get sata_ref clock.\n");
859 + return PTR_ERR(imxpriv->sata_ref_clk);
860 + }
861 +
862 imxpriv->ahb_clk = devm_clk_get(dev, "ahb");
863 if (IS_ERR(imxpriv->ahb_clk)) {
864 dev_err(dev, "can't get ahb clock.\n");
865 @@ -407,10 +422,14 @@ static int imx_ahci_probe(struct platform_device *pdev)
866
867 hpriv->plat_data = imxpriv;
868
869 - ret = imx_sata_enable(hpriv);
870 + ret = clk_prepare_enable(imxpriv->sata_clk);
871 if (ret)
872 return ret;
873
874 + ret = imx_sata_enable(hpriv);
875 + if (ret)
876 + goto disable_clk;
877 +
878 /*
879 * Configure the HWINIT bits of the HOST_CAP and HOST_PORTS_IMPL,
880 * and IP vendor specific register IMX_TIMER1MS.
881 @@ -434,16 +453,24 @@ static int imx_ahci_probe(struct platform_device *pdev)
882
883 ret = ahci_platform_init_host(pdev, hpriv, &ahci_imx_port_info, 0, 0);
884 if (ret)
885 - imx_sata_disable(hpriv);
886 + goto disable_sata;
887 +
888 + return 0;
889
890 +disable_sata:
891 + imx_sata_disable(hpriv);
892 +disable_clk:
893 + clk_disable_unprepare(imxpriv->sata_clk);
894 return ret;
895 }
896
897 static void ahci_imx_host_stop(struct ata_host *host)
898 {
899 struct ahci_host_priv *hpriv = host->private_data;
900 + struct imx_ahci_priv *imxpriv = hpriv->plat_data;
901
902 imx_sata_disable(hpriv);
903 + clk_disable_unprepare(imxpriv->sata_clk);
904 }
905
906 #ifdef CONFIG_PM_SLEEP
907 diff --git a/drivers/base/dma-contiguous.c b/drivers/base/dma-contiguous.c
908 index 165c2c299e57..d3bffa478eca 100644
909 --- a/drivers/base/dma-contiguous.c
910 +++ b/drivers/base/dma-contiguous.c
911 @@ -155,13 +155,23 @@ static int __init cma_activate_area(struct cma *cma)
912 base_pfn = pfn;
913 for (j = pageblock_nr_pages; j; --j, pfn++) {
914 WARN_ON_ONCE(!pfn_valid(pfn));
915 + /*
916 + * alloc_contig_range requires the pfn range
917 + * specified to be in the same zone. Make this
918 + * simple by forcing the entire CMA resv range
919 + * to be in the same zone.
920 + */
921 if (page_zone(pfn_to_page(pfn)) != zone)
922 - return -EINVAL;
923 + goto err;
924 }
925 init_cma_reserved_pageblock(pfn_to_page(base_pfn));
926 } while (--i);
927
928 return 0;
929 +
930 +err:
931 + kfree(cma->bitmap);
932 + return -EINVAL;
933 }
934
935 static struct cma cma_areas[MAX_CMA_AREAS];
936 diff --git a/drivers/char/i8k.c b/drivers/char/i8k.c
937 index d915707d2ba1..93dcad0c1cbe 100644
938 --- a/drivers/char/i8k.c
939 +++ b/drivers/char/i8k.c
940 @@ -138,7 +138,9 @@ static int i8k_smm(struct smm_regs *regs)
941 if (!alloc_cpumask_var(&old_mask, GFP_KERNEL))
942 return -ENOMEM;
943 cpumask_copy(old_mask, &current->cpus_allowed);
944 - set_cpus_allowed_ptr(current, cpumask_of(0));
945 + rc = set_cpus_allowed_ptr(current, cpumask_of(0));
946 + if (rc)
947 + goto out;
948 if (smp_processor_id() != 0) {
949 rc = -EBUSY;
950 goto out;
951 diff --git a/drivers/clk/clk-s2mps11.c b/drivers/clk/clk-s2mps11.c
952 index f2f62a1bf61a..cbc23a610d9f 100644
953 --- a/drivers/clk/clk-s2mps11.c
954 +++ b/drivers/clk/clk-s2mps11.c
955 @@ -206,16 +206,13 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
956 goto err_reg;
957 }
958
959 - s2mps11_clk->lookup = devm_kzalloc(&pdev->dev,
960 - sizeof(struct clk_lookup), GFP_KERNEL);
961 + s2mps11_clk->lookup = clkdev_alloc(s2mps11_clk->clk,
962 + s2mps11_name(s2mps11_clk), NULL);
963 if (!s2mps11_clk->lookup) {
964 ret = -ENOMEM;
965 goto err_lup;
966 }
967
968 - s2mps11_clk->lookup->con_id = s2mps11_name(s2mps11_clk);
969 - s2mps11_clk->lookup->clk = s2mps11_clk->clk;
970 -
971 clkdev_add(s2mps11_clk->lookup);
972 }
973
974 diff --git a/drivers/clk/qcom/mmcc-msm8960.c b/drivers/clk/qcom/mmcc-msm8960.c
975 index f9b59c7e48e9..9be47a829144 100644
976 --- a/drivers/clk/qcom/mmcc-msm8960.c
977 +++ b/drivers/clk/qcom/mmcc-msm8960.c
978 @@ -1208,7 +1208,7 @@ static struct clk_branch rot_clk = {
979
980 static u8 mmcc_pxo_hdmi_map[] = {
981 [P_PXO] = 0,
982 - [P_HDMI_PLL] = 2,
983 + [P_HDMI_PLL] = 3,
984 };
985
986 static const char *mmcc_pxo_hdmi[] = {
987 diff --git a/drivers/clk/spear/spear3xx_clock.c b/drivers/clk/spear/spear3xx_clock.c
988 index c2d204315546..125eba86c844 100644
989 --- a/drivers/clk/spear/spear3xx_clock.c
990 +++ b/drivers/clk/spear/spear3xx_clock.c
991 @@ -211,7 +211,7 @@ static inline void spear310_clk_init(void) { }
992 /* array of all spear 320 clock lookups */
993 #ifdef CONFIG_MACH_SPEAR320
994
995 -#define SPEAR320_CONTROL_REG (soc_config_base + 0x0000)
996 +#define SPEAR320_CONTROL_REG (soc_config_base + 0x0010)
997 #define SPEAR320_EXT_CTRL_REG (soc_config_base + 0x0018)
998
999 #define SPEAR320_UARTX_PCLK_MASK 0x1
1000 diff --git a/drivers/cpufreq/Makefile b/drivers/cpufreq/Makefile
1001 index 0dbb963c1aef..3254f6cf56bf 100644
1002 --- a/drivers/cpufreq/Makefile
1003 +++ b/drivers/cpufreq/Makefile
1004 @@ -47,7 +47,7 @@ obj-$(CONFIG_ARM_BIG_LITTLE_CPUFREQ) += arm_big_little.o
1005 # LITTLE drivers, so that it is probed last.
1006 obj-$(CONFIG_ARM_DT_BL_CPUFREQ) += arm_big_little_dt.o
1007
1008 -obj-$(CONFIG_ARCH_DAVINCI_DA850) += davinci-cpufreq.o
1009 +obj-$(CONFIG_ARCH_DAVINCI) += davinci-cpufreq.o
1010 obj-$(CONFIG_UX500_SOC_DB8500) += dbx500-cpufreq.o
1011 obj-$(CONFIG_ARM_EXYNOS_CPUFREQ) += exynos-cpufreq.o
1012 obj-$(CONFIG_ARM_EXYNOS4210_CPUFREQ) += exynos4210-cpufreq.o
1013 diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
1014 index fcd0c9208e98..870eecc816ce 100644
1015 --- a/drivers/cpufreq/intel_pstate.c
1016 +++ b/drivers/cpufreq/intel_pstate.c
1017 @@ -132,6 +132,7 @@ static struct pstate_funcs pstate_funcs;
1018
1019 struct perf_limits {
1020 int no_turbo;
1021 + int turbo_disabled;
1022 int max_perf_pct;
1023 int min_perf_pct;
1024 int32_t max_perf;
1025 @@ -291,7 +292,10 @@ static ssize_t store_no_turbo(struct kobject *a, struct attribute *b,
1026 if (ret != 1)
1027 return -EINVAL;
1028 limits.no_turbo = clamp_t(int, input, 0 , 1);
1029 -
1030 + if (limits.turbo_disabled) {
1031 + pr_warn("Turbo disabled by BIOS or unavailable on processor\n");
1032 + limits.no_turbo = limits.turbo_disabled;
1033 + }
1034 return count;
1035 }
1036
1037 @@ -361,21 +365,21 @@ static int byt_get_min_pstate(void)
1038 {
1039 u64 value;
1040 rdmsrl(BYT_RATIOS, value);
1041 - return (value >> 8) & 0x3F;
1042 + return (value >> 8) & 0x7F;
1043 }
1044
1045 static int byt_get_max_pstate(void)
1046 {
1047 u64 value;
1048 rdmsrl(BYT_RATIOS, value);
1049 - return (value >> 16) & 0x3F;
1050 + return (value >> 16) & 0x7F;
1051 }
1052
1053 static int byt_get_turbo_pstate(void)
1054 {
1055 u64 value;
1056 rdmsrl(BYT_TURBO_RATIOS, value);
1057 - return value & 0x3F;
1058 + return value & 0x7F;
1059 }
1060
1061 static void byt_set_pstate(struct cpudata *cpudata, int pstate)
1062 @@ -385,7 +389,7 @@ static void byt_set_pstate(struct cpudata *cpudata, int pstate)
1063 u32 vid;
1064
1065 val = pstate << 8;
1066 - if (limits.no_turbo)
1067 + if (limits.no_turbo && !limits.turbo_disabled)
1068 val |= (u64)1 << 32;
1069
1070 vid_fp = cpudata->vid.min + mul_fp(
1071 @@ -409,8 +413,8 @@ static void byt_get_vid(struct cpudata *cpudata)
1072
1073
1074 rdmsrl(BYT_VIDS, value);
1075 - cpudata->vid.min = int_tofp((value >> 8) & 0x3f);
1076 - cpudata->vid.max = int_tofp((value >> 16) & 0x3f);
1077 + cpudata->vid.min = int_tofp((value >> 8) & 0x7f);
1078 + cpudata->vid.max = int_tofp((value >> 16) & 0x7f);
1079 cpudata->vid.ratio = div_fp(
1080 cpudata->vid.max - cpudata->vid.min,
1081 int_tofp(cpudata->pstate.max_pstate -
1082 @@ -452,7 +456,7 @@ static void core_set_pstate(struct cpudata *cpudata, int pstate)
1083 u64 val;
1084
1085 val = pstate << 8;
1086 - if (limits.no_turbo)
1087 + if (limits.no_turbo && !limits.turbo_disabled)
1088 val |= (u64)1 << 32;
1089
1090 wrmsrl_on_cpu(cpudata->cpu, MSR_IA32_PERF_CTL, val);
1091 @@ -705,9 +709,8 @@ static int intel_pstate_init_cpu(unsigned int cpunum)
1092
1093 cpu = all_cpu_data[cpunum];
1094
1095 - intel_pstate_get_cpu_pstates(cpu);
1096 -
1097 cpu->cpu = cpunum;
1098 + intel_pstate_get_cpu_pstates(cpu);
1099
1100 init_timer_deferrable(&cpu->timer);
1101 cpu->timer.function = intel_pstate_timer_func;
1102 @@ -750,7 +753,7 @@ static int intel_pstate_set_policy(struct cpufreq_policy *policy)
1103 limits.min_perf = int_tofp(1);
1104 limits.max_perf_pct = 100;
1105 limits.max_perf = int_tofp(1);
1106 - limits.no_turbo = 0;
1107 + limits.no_turbo = limits.turbo_disabled;
1108 return 0;
1109 }
1110 limits.min_perf_pct = (policy->min * 100) / policy->cpuinfo.max_freq;
1111 @@ -793,6 +796,7 @@ static int intel_pstate_cpu_init(struct cpufreq_policy *policy)
1112 {
1113 struct cpudata *cpu;
1114 int rc;
1115 + u64 misc_en;
1116
1117 rc = intel_pstate_init_cpu(policy->cpu);
1118 if (rc)
1119 @@ -800,8 +804,13 @@ static int intel_pstate_cpu_init(struct cpufreq_policy *policy)
1120
1121 cpu = all_cpu_data[policy->cpu];
1122
1123 - if (!limits.no_turbo &&
1124 - limits.min_perf_pct == 100 && limits.max_perf_pct == 100)
1125 + rdmsrl(MSR_IA32_MISC_ENABLE, misc_en);
1126 + if (misc_en & MSR_IA32_MISC_ENABLE_TURBO_DISABLE ||
1127 + cpu->pstate.max_pstate == cpu->pstate.turbo_pstate) {
1128 + limits.turbo_disabled = 1;
1129 + limits.no_turbo = 1;
1130 + }
1131 + if (limits.min_perf_pct == 100 && limits.max_perf_pct == 100)
1132 policy->policy = CPUFREQ_POLICY_PERFORMANCE;
1133 else
1134 policy->policy = CPUFREQ_POLICY_POWERSAVE;
1135 diff --git a/drivers/crypto/caam/jr.c b/drivers/crypto/caam/jr.c
1136 index 1d80bd3636c5..b512a4ba7569 100644
1137 --- a/drivers/crypto/caam/jr.c
1138 +++ b/drivers/crypto/caam/jr.c
1139 @@ -453,8 +453,8 @@ static int caam_jr_probe(struct platform_device *pdev)
1140 int error;
1141
1142 jrdev = &pdev->dev;
1143 - jrpriv = kmalloc(sizeof(struct caam_drv_private_jr),
1144 - GFP_KERNEL);
1145 + jrpriv = devm_kmalloc(jrdev, sizeof(struct caam_drv_private_jr),
1146 + GFP_KERNEL);
1147 if (!jrpriv)
1148 return -ENOMEM;
1149
1150 @@ -487,10 +487,8 @@ static int caam_jr_probe(struct platform_device *pdev)
1151
1152 /* Now do the platform independent part */
1153 error = caam_jr_init(jrdev); /* now turn on hardware */
1154 - if (error) {
1155 - kfree(jrpriv);
1156 + if (error)
1157 return error;
1158 - }
1159
1160 jrpriv->dev = jrdev;
1161 spin_lock(&driver_data.jr_alloc_lock);
1162 diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
1163 index 388c028e223c..44c79fd04523 100644
1164 --- a/drivers/gpu/drm/i915/i915_drv.h
1165 +++ b/drivers/gpu/drm/i915/i915_drv.h
1166 @@ -803,6 +803,7 @@ enum intel_sbi_destination {
1167 #define QUIRK_PIPEA_FORCE (1<<0)
1168 #define QUIRK_LVDS_SSC_DISABLE (1<<1)
1169 #define QUIRK_INVERT_BRIGHTNESS (1<<2)
1170 +#define QUIRK_BACKLIGHT_PRESENT (1<<3)
1171
1172 struct intel_fbdev;
1173 struct intel_fbc_work;
1174 diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c
1175 index 62ef55ba061c..7465ab0fd396 100644
1176 --- a/drivers/gpu/drm/i915/i915_gem_stolen.c
1177 +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c
1178 @@ -74,6 +74,50 @@ static unsigned long i915_stolen_to_physical(struct drm_device *dev)
1179 if (base == 0)
1180 return 0;
1181
1182 + /* make sure we don't clobber the GTT if it's within stolen memory */
1183 + if (INTEL_INFO(dev)->gen <= 4 && !IS_G33(dev) && !IS_G4X(dev)) {
1184 + struct {
1185 + u32 start, end;
1186 + } stolen[2] = {
1187 + { .start = base, .end = base + dev_priv->gtt.stolen_size, },
1188 + { .start = base, .end = base + dev_priv->gtt.stolen_size, },
1189 + };
1190 + u64 gtt_start, gtt_end;
1191 +
1192 + gtt_start = I915_READ(PGTBL_CTL);
1193 + if (IS_GEN4(dev))
1194 + gtt_start = (gtt_start & PGTBL_ADDRESS_LO_MASK) |
1195 + (gtt_start & PGTBL_ADDRESS_HI_MASK) << 28;
1196 + else
1197 + gtt_start &= PGTBL_ADDRESS_LO_MASK;
1198 + gtt_end = gtt_start + gtt_total_entries(dev_priv->gtt) * 4;
1199 +
1200 + if (gtt_start >= stolen[0].start && gtt_start < stolen[0].end)
1201 + stolen[0].end = gtt_start;
1202 + if (gtt_end > stolen[1].start && gtt_end <= stolen[1].end)
1203 + stolen[1].start = gtt_end;
1204 +
1205 + /* pick the larger of the two chunks */
1206 + if (stolen[0].end - stolen[0].start >
1207 + stolen[1].end - stolen[1].start) {
1208 + base = stolen[0].start;
1209 + dev_priv->gtt.stolen_size = stolen[0].end - stolen[0].start;
1210 + } else {
1211 + base = stolen[1].start;
1212 + dev_priv->gtt.stolen_size = stolen[1].end - stolen[1].start;
1213 + }
1214 +
1215 + if (stolen[0].start != stolen[1].start ||
1216 + stolen[0].end != stolen[1].end) {
1217 + DRM_DEBUG_KMS("GTT within stolen memory at 0x%llx-0x%llx\n",
1218 + (unsigned long long) gtt_start,
1219 + (unsigned long long) gtt_end - 1);
1220 + DRM_DEBUG_KMS("Stolen memory adjusted to 0x%x-0x%x\n",
1221 + base, base + (u32) dev_priv->gtt.stolen_size - 1);
1222 + }
1223 + }
1224 +
1225 +
1226 /* Verify that nothing else uses this physical address. Stolen
1227 * memory should be reserved by the BIOS and hidden from the
1228 * kernel. So if the region is already marked as busy, something
1229 diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
1230 index c77af69c2d8f..3f34dcf283a5 100644
1231 --- a/drivers/gpu/drm/i915/i915_reg.h
1232 +++ b/drivers/gpu/drm/i915/i915_reg.h
1233 @@ -659,6 +659,9 @@ enum punit_power_well {
1234 /*
1235 * Instruction and interrupt control regs
1236 */
1237 +#define PGTBL_CTL 0x02020
1238 +#define PGTBL_ADDRESS_LO_MASK 0xfffff000 /* bits [31:12] */
1239 +#define PGTBL_ADDRESS_HI_MASK 0x000000f0 /* bits [35:32] (gen4) */
1240 #define PGTBL_ER 0x02024
1241 #define RENDER_RING_BASE 0x02000
1242 #define BSD_RING_BASE 0x04000
1243 diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
1244 index 5b60e25baa32..b91dfbe9fe8e 100644
1245 --- a/drivers/gpu/drm/i915/intel_display.c
1246 +++ b/drivers/gpu/drm/i915/intel_display.c
1247 @@ -11166,6 +11166,14 @@ static void quirk_invert_brightness(struct drm_device *dev)
1248 DRM_INFO("applying inverted panel brightness quirk\n");
1249 }
1250
1251 +/* Some VBT's incorrectly indicate no backlight is present */
1252 +static void quirk_backlight_present(struct drm_device *dev)
1253 +{
1254 + struct drm_i915_private *dev_priv = dev->dev_private;
1255 + dev_priv->quirks |= QUIRK_BACKLIGHT_PRESENT;
1256 + DRM_INFO("applying backlight present quirk\n");
1257 +}
1258 +
1259 struct intel_quirk {
1260 int device;
1261 int subsystem_vendor;
1262 @@ -11237,6 +11245,12 @@ static struct intel_quirk intel_quirks[] = {
1263
1264 /* Acer Aspire 5336 */
1265 { 0x2a42, 0x1025, 0x048a, quirk_invert_brightness },
1266 +
1267 + /* Acer C720 and C720P Chromebooks (Celeron 2955U) have backlights */
1268 + { 0x0a06, 0x1025, 0x0a11, quirk_backlight_present },
1269 +
1270 + /* Toshiba CB35 Chromebook (Celeron 2955U) */
1271 + { 0x0a06, 0x1179, 0x0a88, quirk_backlight_present },
1272 };
1273
1274 static void intel_init_quirks(struct drm_device *dev)
1275 diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
1276 index 8b2538356371..27ee96ba906a 100644
1277 --- a/drivers/gpu/drm/i915/intel_panel.c
1278 +++ b/drivers/gpu/drm/i915/intel_panel.c
1279 @@ -1065,8 +1065,12 @@ int intel_panel_setup_backlight(struct drm_connector *connector)
1280 int ret;
1281
1282 if (!dev_priv->vbt.backlight.present) {
1283 - DRM_DEBUG_KMS("native backlight control not available per VBT\n");
1284 - return 0;
1285 + if (dev_priv->quirks & QUIRK_BACKLIGHT_PRESENT) {
1286 + DRM_DEBUG_KMS("no backlight present per VBT, but present per quirk\n");
1287 + } else {
1288 + DRM_DEBUG_KMS("no backlight present per VBT\n");
1289 + return 0;
1290 + }
1291 }
1292
1293 /* set level and max in panel struct */
1294 diff --git a/drivers/gpu/drm/radeon/ci_dpm.c b/drivers/gpu/drm/radeon/ci_dpm.c
1295 index 10dae4106c08..584090ac3eb9 100644
1296 --- a/drivers/gpu/drm/radeon/ci_dpm.c
1297 +++ b/drivers/gpu/drm/radeon/ci_dpm.c
1298 @@ -1179,7 +1179,7 @@ static int ci_stop_dpm(struct radeon_device *rdev)
1299 tmp &= ~GLOBAL_PWRMGT_EN;
1300 WREG32_SMC(GENERAL_PWRMGT, tmp);
1301
1302 - tmp = RREG32(SCLK_PWRMGT_CNTL);
1303 + tmp = RREG32_SMC(SCLK_PWRMGT_CNTL);
1304 tmp &= ~DYNAMIC_PM_EN;
1305 WREG32_SMC(SCLK_PWRMGT_CNTL, tmp);
1306
1307 diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
1308 index 0f7a51a3694f..a61a9039f6f6 100644
1309 --- a/drivers/gpu/drm/radeon/evergreen.c
1310 +++ b/drivers/gpu/drm/radeon/evergreen.c
1311 @@ -189,7 +189,7 @@ static const u32 evergreen_golden_registers[] =
1312 0x8c1c, 0xffffffff, 0x00001010,
1313 0x28350, 0xffffffff, 0x00000000,
1314 0xa008, 0xffffffff, 0x00010000,
1315 - 0x5cc, 0xffffffff, 0x00000001,
1316 + 0x5c4, 0xffffffff, 0x00000001,
1317 0x9508, 0xffffffff, 0x00000002,
1318 0x913c, 0x0000000f, 0x0000000a
1319 };
1320 @@ -476,7 +476,7 @@ static const u32 cedar_golden_registers[] =
1321 0x8c1c, 0xffffffff, 0x00001010,
1322 0x28350, 0xffffffff, 0x00000000,
1323 0xa008, 0xffffffff, 0x00010000,
1324 - 0x5cc, 0xffffffff, 0x00000001,
1325 + 0x5c4, 0xffffffff, 0x00000001,
1326 0x9508, 0xffffffff, 0x00000002
1327 };
1328
1329 @@ -635,7 +635,7 @@ static const u32 juniper_mgcg_init[] =
1330 static const u32 supersumo_golden_registers[] =
1331 {
1332 0x5eb4, 0xffffffff, 0x00000002,
1333 - 0x5cc, 0xffffffff, 0x00000001,
1334 + 0x5c4, 0xffffffff, 0x00000001,
1335 0x7030, 0xffffffff, 0x00000011,
1336 0x7c30, 0xffffffff, 0x00000011,
1337 0x6104, 0x01000300, 0x00000000,
1338 @@ -719,7 +719,7 @@ static const u32 sumo_golden_registers[] =
1339 static const u32 wrestler_golden_registers[] =
1340 {
1341 0x5eb4, 0xffffffff, 0x00000002,
1342 - 0x5cc, 0xffffffff, 0x00000001,
1343 + 0x5c4, 0xffffffff, 0x00000001,
1344 0x7030, 0xffffffff, 0x00000011,
1345 0x7c30, 0xffffffff, 0x00000011,
1346 0x6104, 0x01000300, 0x00000000,
1347 diff --git a/drivers/gpu/drm/radeon/radeon_vm.c b/drivers/gpu/drm/radeon/radeon_vm.c
1348 index c11b71d249e3..c8c48aa4181e 100644
1349 --- a/drivers/gpu/drm/radeon/radeon_vm.c
1350 +++ b/drivers/gpu/drm/radeon/radeon_vm.c
1351 @@ -493,7 +493,7 @@ int radeon_vm_bo_set_addr(struct radeon_device *rdev,
1352 mutex_unlock(&vm->mutex);
1353
1354 r = radeon_bo_create(rdev, RADEON_VM_PTE_COUNT * 8,
1355 - RADEON_GPU_PAGE_SIZE, false,
1356 + RADEON_GPU_PAGE_SIZE, true,
1357 RADEON_GEM_DOMAIN_VRAM, NULL, &pt);
1358 if (r)
1359 return r;
1360 @@ -913,7 +913,7 @@ int radeon_vm_init(struct radeon_device *rdev, struct radeon_vm *vm)
1361 return -ENOMEM;
1362 }
1363
1364 - r = radeon_bo_create(rdev, pd_size, RADEON_VM_PTB_ALIGN_SIZE, false,
1365 + r = radeon_bo_create(rdev, pd_size, RADEON_VM_PTB_ALIGN_SIZE, true,
1366 RADEON_GEM_DOMAIN_VRAM, NULL,
1367 &vm->page_directory);
1368 if (r)
1369 diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c
1370 index 72d3616de08e..95b693c11640 100644
1371 --- a/drivers/gpu/drm/radeon/rs600.c
1372 +++ b/drivers/gpu/drm/radeon/rs600.c
1373 @@ -646,8 +646,10 @@ int rs600_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr)
1374 return -EINVAL;
1375 }
1376 addr = addr & 0xFFFFFFFFFFFFF000ULL;
1377 - addr |= R600_PTE_VALID | R600_PTE_SYSTEM | R600_PTE_SNOOPED;
1378 - addr |= R600_PTE_READABLE | R600_PTE_WRITEABLE;
1379 + if (addr != rdev->dummy_page.addr)
1380 + addr |= R600_PTE_VALID | R600_PTE_READABLE |
1381 + R600_PTE_WRITEABLE;
1382 + addr |= R600_PTE_SYSTEM | R600_PTE_SNOOPED;
1383 writeq(addr, ptr + (i * 8));
1384 return 0;
1385 }
1386 diff --git a/drivers/gpu/drm/radeon/rv770_dpm.c b/drivers/gpu/drm/radeon/rv770_dpm.c
1387 index da041a43d82e..3c76e1dcdf04 100644
1388 --- a/drivers/gpu/drm/radeon/rv770_dpm.c
1389 +++ b/drivers/gpu/drm/radeon/rv770_dpm.c
1390 @@ -2329,12 +2329,6 @@ void rv770_get_engine_memory_ss(struct radeon_device *rdev)
1391 pi->mclk_ss = radeon_atombios_get_asic_ss_info(rdev, &ss,
1392 ASIC_INTERNAL_MEMORY_SS, 0);
1393
1394 - /* disable ss, causes hangs on some cayman boards */
1395 - if (rdev->family == CHIP_CAYMAN) {
1396 - pi->sclk_ss = false;
1397 - pi->mclk_ss = false;
1398 - }
1399 -
1400 if (pi->sclk_ss || pi->mclk_ss)
1401 pi->dynamic_ss = true;
1402 else
1403 diff --git a/drivers/hv/connection.c b/drivers/hv/connection.c
1404 index 05827eccc53a..ce5a9f2584f3 100644
1405 --- a/drivers/hv/connection.c
1406 +++ b/drivers/hv/connection.c
1407 @@ -319,9 +319,13 @@ static void process_chn_event(u32 relid)
1408 */
1409
1410 do {
1411 - hv_begin_read(&channel->inbound);
1412 + if (read_state)
1413 + hv_begin_read(&channel->inbound);
1414 channel->onchannel_callback(arg);
1415 - bytes_to_read = hv_end_read(&channel->inbound);
1416 + if (read_state)
1417 + bytes_to_read = hv_end_read(&channel->inbound);
1418 + else
1419 + bytes_to_read = 0;
1420 } while (read_state && (bytes_to_read != 0));
1421 } else {
1422 pr_err("no channel callback for relid - %u\n", relid);
1423 diff --git a/drivers/hwmon/adc128d818.c b/drivers/hwmon/adc128d818.c
1424 index 5ffd81f19d01..0625e50d7a6e 100644
1425 --- a/drivers/hwmon/adc128d818.c
1426 +++ b/drivers/hwmon/adc128d818.c
1427 @@ -239,50 +239,50 @@ static ssize_t adc128_show_alarm(struct device *dev,
1428 return sprintf(buf, "%u\n", !!(alarms & mask));
1429 }
1430
1431 -static SENSOR_DEVICE_ATTR_2(in0_input, S_IWUSR | S_IRUGO,
1432 - adc128_show_in, adc128_set_in, 0, 0);
1433 +static SENSOR_DEVICE_ATTR_2(in0_input, S_IRUGO,
1434 + adc128_show_in, NULL, 0, 0);
1435 static SENSOR_DEVICE_ATTR_2(in0_min, S_IWUSR | S_IRUGO,
1436 adc128_show_in, adc128_set_in, 0, 1);
1437 static SENSOR_DEVICE_ATTR_2(in0_max, S_IWUSR | S_IRUGO,
1438 adc128_show_in, adc128_set_in, 0, 2);
1439
1440 -static SENSOR_DEVICE_ATTR_2(in1_input, S_IWUSR | S_IRUGO,
1441 - adc128_show_in, adc128_set_in, 1, 0);
1442 +static SENSOR_DEVICE_ATTR_2(in1_input, S_IRUGO,
1443 + adc128_show_in, NULL, 1, 0);
1444 static SENSOR_DEVICE_ATTR_2(in1_min, S_IWUSR | S_IRUGO,
1445 adc128_show_in, adc128_set_in, 1, 1);
1446 static SENSOR_DEVICE_ATTR_2(in1_max, S_IWUSR | S_IRUGO,
1447 adc128_show_in, adc128_set_in, 1, 2);
1448
1449 -static SENSOR_DEVICE_ATTR_2(in2_input, S_IWUSR | S_IRUGO,
1450 - adc128_show_in, adc128_set_in, 2, 0);
1451 +static SENSOR_DEVICE_ATTR_2(in2_input, S_IRUGO,
1452 + adc128_show_in, NULL, 2, 0);
1453 static SENSOR_DEVICE_ATTR_2(in2_min, S_IWUSR | S_IRUGO,
1454 adc128_show_in, adc128_set_in, 2, 1);
1455 static SENSOR_DEVICE_ATTR_2(in2_max, S_IWUSR | S_IRUGO,
1456 adc128_show_in, adc128_set_in, 2, 2);
1457
1458 -static SENSOR_DEVICE_ATTR_2(in3_input, S_IWUSR | S_IRUGO,
1459 - adc128_show_in, adc128_set_in, 3, 0);
1460 +static SENSOR_DEVICE_ATTR_2(in3_input, S_IRUGO,
1461 + adc128_show_in, NULL, 3, 0);
1462 static SENSOR_DEVICE_ATTR_2(in3_min, S_IWUSR | S_IRUGO,
1463 adc128_show_in, adc128_set_in, 3, 1);
1464 static SENSOR_DEVICE_ATTR_2(in3_max, S_IWUSR | S_IRUGO,
1465 adc128_show_in, adc128_set_in, 3, 2);
1466
1467 -static SENSOR_DEVICE_ATTR_2(in4_input, S_IWUSR | S_IRUGO,
1468 - adc128_show_in, adc128_set_in, 4, 0);
1469 +static SENSOR_DEVICE_ATTR_2(in4_input, S_IRUGO,
1470 + adc128_show_in, NULL, 4, 0);
1471 static SENSOR_DEVICE_ATTR_2(in4_min, S_IWUSR | S_IRUGO,
1472 adc128_show_in, adc128_set_in, 4, 1);
1473 static SENSOR_DEVICE_ATTR_2(in4_max, S_IWUSR | S_IRUGO,
1474 adc128_show_in, adc128_set_in, 4, 2);
1475
1476 -static SENSOR_DEVICE_ATTR_2(in5_input, S_IWUSR | S_IRUGO,
1477 - adc128_show_in, adc128_set_in, 5, 0);
1478 +static SENSOR_DEVICE_ATTR_2(in5_input, S_IRUGO,
1479 + adc128_show_in, NULL, 5, 0);
1480 static SENSOR_DEVICE_ATTR_2(in5_min, S_IWUSR | S_IRUGO,
1481 adc128_show_in, adc128_set_in, 5, 1);
1482 static SENSOR_DEVICE_ATTR_2(in5_max, S_IWUSR | S_IRUGO,
1483 adc128_show_in, adc128_set_in, 5, 2);
1484
1485 -static SENSOR_DEVICE_ATTR_2(in6_input, S_IWUSR | S_IRUGO,
1486 - adc128_show_in, adc128_set_in, 6, 0);
1487 +static SENSOR_DEVICE_ATTR_2(in6_input, S_IRUGO,
1488 + adc128_show_in, NULL, 6, 0);
1489 static SENSOR_DEVICE_ATTR_2(in6_min, S_IWUSR | S_IRUGO,
1490 adc128_show_in, adc128_set_in, 6, 1);
1491 static SENSOR_DEVICE_ATTR_2(in6_max, S_IWUSR | S_IRUGO,
1492 diff --git a/drivers/hwmon/adm1021.c b/drivers/hwmon/adm1021.c
1493 index 3eb4281689b5..d74241bb278c 100644
1494 --- a/drivers/hwmon/adm1021.c
1495 +++ b/drivers/hwmon/adm1021.c
1496 @@ -185,7 +185,7 @@ static ssize_t set_temp_max(struct device *dev,
1497 struct adm1021_data *data = dev_get_drvdata(dev);
1498 struct i2c_client *client = data->client;
1499 long temp;
1500 - int err;
1501 + int reg_val, err;
1502
1503 err = kstrtol(buf, 10, &temp);
1504 if (err)
1505 @@ -193,10 +193,11 @@ static ssize_t set_temp_max(struct device *dev,
1506 temp /= 1000;
1507
1508 mutex_lock(&data->update_lock);
1509 - data->temp_max[index] = clamp_val(temp, -128, 127);
1510 + reg_val = clamp_val(temp, -128, 127);
1511 + data->temp_max[index] = reg_val * 1000;
1512 if (!read_only)
1513 i2c_smbus_write_byte_data(client, ADM1021_REG_TOS_W(index),
1514 - data->temp_max[index]);
1515 + reg_val);
1516 mutex_unlock(&data->update_lock);
1517
1518 return count;
1519 @@ -210,7 +211,7 @@ static ssize_t set_temp_min(struct device *dev,
1520 struct adm1021_data *data = dev_get_drvdata(dev);
1521 struct i2c_client *client = data->client;
1522 long temp;
1523 - int err;
1524 + int reg_val, err;
1525
1526 err = kstrtol(buf, 10, &temp);
1527 if (err)
1528 @@ -218,10 +219,11 @@ static ssize_t set_temp_min(struct device *dev,
1529 temp /= 1000;
1530
1531 mutex_lock(&data->update_lock);
1532 - data->temp_min[index] = clamp_val(temp, -128, 127);
1533 + reg_val = clamp_val(temp, -128, 127);
1534 + data->temp_min[index] = reg_val * 1000;
1535 if (!read_only)
1536 i2c_smbus_write_byte_data(client, ADM1021_REG_THYST_W(index),
1537 - data->temp_min[index]);
1538 + reg_val);
1539 mutex_unlock(&data->update_lock);
1540
1541 return count;
1542 diff --git a/drivers/hwmon/adm1029.c b/drivers/hwmon/adm1029.c
1543 index d19c790e410a..e38115ce0350 100644
1544 --- a/drivers/hwmon/adm1029.c
1545 +++ b/drivers/hwmon/adm1029.c
1546 @@ -232,6 +232,9 @@ static ssize_t set_fan_div(struct device *dev,
1547 /* Update the value */
1548 reg = (reg & 0x3F) | (val << 6);
1549
1550 + /* Update the cache */
1551 + data->fan_div[attr->index] = reg;
1552 +
1553 /* Write value */
1554 i2c_smbus_write_byte_data(client,
1555 ADM1029_REG_FAN_DIV[attr->index], reg);
1556 diff --git a/drivers/hwmon/adm1031.c b/drivers/hwmon/adm1031.c
1557 index a8a540ca8c34..51c1a5a165ab 100644
1558 --- a/drivers/hwmon/adm1031.c
1559 +++ b/drivers/hwmon/adm1031.c
1560 @@ -365,6 +365,7 @@ set_auto_temp_min(struct device *dev, struct device_attribute *attr,
1561 if (ret)
1562 return ret;
1563
1564 + val = clamp_val(val, 0, 127000);
1565 mutex_lock(&data->update_lock);
1566 data->auto_temp[nr] = AUTO_TEMP_MIN_TO_REG(val, data->auto_temp[nr]);
1567 adm1031_write_value(client, ADM1031_REG_AUTO_TEMP(nr),
1568 @@ -394,6 +395,7 @@ set_auto_temp_max(struct device *dev, struct device_attribute *attr,
1569 if (ret)
1570 return ret;
1571
1572 + val = clamp_val(val, 0, 127000);
1573 mutex_lock(&data->update_lock);
1574 data->temp_max[nr] = AUTO_TEMP_MAX_TO_REG(val, data->auto_temp[nr],
1575 data->pwm[nr]);
1576 @@ -696,7 +698,7 @@ static ssize_t set_temp_min(struct device *dev, struct device_attribute *attr,
1577 if (ret)
1578 return ret;
1579
1580 - val = clamp_val(val, -55000, nr == 0 ? 127750 : 127875);
1581 + val = clamp_val(val, -55000, 127000);
1582 mutex_lock(&data->update_lock);
1583 data->temp_min[nr] = TEMP_TO_REG(val);
1584 adm1031_write_value(client, ADM1031_REG_TEMP_MIN(nr),
1585 @@ -717,7 +719,7 @@ static ssize_t set_temp_max(struct device *dev, struct device_attribute *attr,
1586 if (ret)
1587 return ret;
1588
1589 - val = clamp_val(val, -55000, nr == 0 ? 127750 : 127875);
1590 + val = clamp_val(val, -55000, 127000);
1591 mutex_lock(&data->update_lock);
1592 data->temp_max[nr] = TEMP_TO_REG(val);
1593 adm1031_write_value(client, ADM1031_REG_TEMP_MAX(nr),
1594 @@ -738,7 +740,7 @@ static ssize_t set_temp_crit(struct device *dev, struct device_attribute *attr,
1595 if (ret)
1596 return ret;
1597
1598 - val = clamp_val(val, -55000, nr == 0 ? 127750 : 127875);
1599 + val = clamp_val(val, -55000, 127000);
1600 mutex_lock(&data->update_lock);
1601 data->temp_crit[nr] = TEMP_TO_REG(val);
1602 adm1031_write_value(client, ADM1031_REG_TEMP_CRIT(nr),
1603 diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c
1604 index eea817296513..9f2be3dd28f3 100644
1605 --- a/drivers/hwmon/amc6821.c
1606 +++ b/drivers/hwmon/amc6821.c
1607 @@ -704,7 +704,7 @@ static SENSOR_DEVICE_ATTR(temp1_max_alarm, S_IRUGO,
1608 get_temp_alarm, NULL, IDX_TEMP1_MAX);
1609 static SENSOR_DEVICE_ATTR(temp1_crit_alarm, S_IRUGO,
1610 get_temp_alarm, NULL, IDX_TEMP1_CRIT);
1611 -static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO | S_IWUSR,
1612 +static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO,
1613 get_temp, NULL, IDX_TEMP2_INPUT);
1614 static SENSOR_DEVICE_ATTR(temp2_min, S_IRUGO | S_IWUSR, get_temp,
1615 set_temp, IDX_TEMP2_MIN);
1616 diff --git a/drivers/hwmon/emc2103.c b/drivers/hwmon/emc2103.c
1617 index fd892dd48e4c..78002de46cb6 100644
1618 --- a/drivers/hwmon/emc2103.c
1619 +++ b/drivers/hwmon/emc2103.c
1620 @@ -250,9 +250,7 @@ static ssize_t set_temp_min(struct device *dev, struct device_attribute *da,
1621 if (result < 0)
1622 return result;
1623
1624 - val = DIV_ROUND_CLOSEST(val, 1000);
1625 - if ((val < -63) || (val > 127))
1626 - return -EINVAL;
1627 + val = clamp_val(DIV_ROUND_CLOSEST(val, 1000), -63, 127);
1628
1629 mutex_lock(&data->update_lock);
1630 data->temp_min[nr] = val;
1631 @@ -274,9 +272,7 @@ static ssize_t set_temp_max(struct device *dev, struct device_attribute *da,
1632 if (result < 0)
1633 return result;
1634
1635 - val = DIV_ROUND_CLOSEST(val, 1000);
1636 - if ((val < -63) || (val > 127))
1637 - return -EINVAL;
1638 + val = clamp_val(DIV_ROUND_CLOSEST(val, 1000), -63, 127);
1639
1640 mutex_lock(&data->update_lock);
1641 data->temp_max[nr] = val;
1642 @@ -390,15 +386,14 @@ static ssize_t set_fan_target(struct device *dev, struct device_attribute *da,
1643 {
1644 struct emc2103_data *data = emc2103_update_device(dev);
1645 struct i2c_client *client = to_i2c_client(dev);
1646 - long rpm_target;
1647 + unsigned long rpm_target;
1648
1649 - int result = kstrtol(buf, 10, &rpm_target);
1650 + int result = kstrtoul(buf, 10, &rpm_target);
1651 if (result < 0)
1652 return result;
1653
1654 /* Datasheet states 16384 as maximum RPM target (table 3.2) */
1655 - if ((rpm_target < 0) || (rpm_target > 16384))
1656 - return -EINVAL;
1657 + rpm_target = clamp_val(rpm_target, 0, 16384);
1658
1659 mutex_lock(&data->update_lock);
1660
1661 diff --git a/drivers/iio/adc/ti_am335x_adc.c b/drivers/iio/adc/ti_am335x_adc.c
1662 index a4db3026bec6..d5dc4c6ce86c 100644
1663 --- a/drivers/iio/adc/ti_am335x_adc.c
1664 +++ b/drivers/iio/adc/ti_am335x_adc.c
1665 @@ -374,7 +374,7 @@ static int tiadc_read_raw(struct iio_dev *indio_dev,
1666 return -EAGAIN;
1667 }
1668 }
1669 - map_val = chan->channel + TOTAL_CHANNELS;
1670 + map_val = adc_dev->channel_step[chan->scan_index];
1671
1672 /*
1673 * We check the complete FIFO. We programmed just one entry but in case
1674 diff --git a/drivers/md/dm-io.c b/drivers/md/dm-io.c
1675 index 3842ac738f98..db404a0f7e2c 100644
1676 --- a/drivers/md/dm-io.c
1677 +++ b/drivers/md/dm-io.c
1678 @@ -10,6 +10,7 @@
1679 #include <linux/device-mapper.h>
1680
1681 #include <linux/bio.h>
1682 +#include <linux/completion.h>
1683 #include <linux/mempool.h>
1684 #include <linux/module.h>
1685 #include <linux/sched.h>
1686 @@ -32,7 +33,7 @@ struct dm_io_client {
1687 struct io {
1688 unsigned long error_bits;
1689 atomic_t count;
1690 - struct task_struct *sleeper;
1691 + struct completion *wait;
1692 struct dm_io_client *client;
1693 io_notify_fn callback;
1694 void *context;
1695 @@ -121,8 +122,8 @@ static void dec_count(struct io *io, unsigned int region, int error)
1696 invalidate_kernel_vmap_range(io->vma_invalidate_address,
1697 io->vma_invalidate_size);
1698
1699 - if (io->sleeper)
1700 - wake_up_process(io->sleeper);
1701 + if (io->wait)
1702 + complete(io->wait);
1703
1704 else {
1705 unsigned long r = io->error_bits;
1706 @@ -387,6 +388,7 @@ static int sync_io(struct dm_io_client *client, unsigned int num_regions,
1707 */
1708 volatile char io_[sizeof(struct io) + __alignof__(struct io) - 1];
1709 struct io *io = (struct io *)PTR_ALIGN(&io_, __alignof__(struct io));
1710 + DECLARE_COMPLETION_ONSTACK(wait);
1711
1712 if (num_regions > 1 && (rw & RW_MASK) != WRITE) {
1713 WARN_ON(1);
1714 @@ -395,7 +397,7 @@ static int sync_io(struct dm_io_client *client, unsigned int num_regions,
1715
1716 io->error_bits = 0;
1717 atomic_set(&io->count, 1); /* see dispatch_io() */
1718 - io->sleeper = current;
1719 + io->wait = &wait;
1720 io->client = client;
1721
1722 io->vma_invalidate_address = dp->vma_invalidate_address;
1723 @@ -403,15 +405,7 @@ static int sync_io(struct dm_io_client *client, unsigned int num_regions,
1724
1725 dispatch_io(rw, num_regions, where, dp, io, 1);
1726
1727 - while (1) {
1728 - set_current_state(TASK_UNINTERRUPTIBLE);
1729 -
1730 - if (!atomic_read(&io->count))
1731 - break;
1732 -
1733 - io_schedule();
1734 - }
1735 - set_current_state(TASK_RUNNING);
1736 + wait_for_completion_io(&wait);
1737
1738 if (error_bits)
1739 *error_bits = io->error_bits;
1740 @@ -434,7 +428,7 @@ static int async_io(struct dm_io_client *client, unsigned int num_regions,
1741 io = mempool_alloc(client->pool, GFP_NOIO);
1742 io->error_bits = 0;
1743 atomic_set(&io->count, 1); /* see dispatch_io() */
1744 - io->sleeper = NULL;
1745 + io->wait = NULL;
1746 io->client = client;
1747 io->callback = fn;
1748 io->context = context;
1749 diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
1750 index ebfa411d1a7d..9efb863ad052 100644
1751 --- a/drivers/md/dm-mpath.c
1752 +++ b/drivers/md/dm-mpath.c
1753 @@ -1620,8 +1620,9 @@ static int multipath_busy(struct dm_target *ti)
1754
1755 spin_lock_irqsave(&m->lock, flags);
1756
1757 - /* pg_init in progress, requeue until done */
1758 - if (!pg_ready(m)) {
1759 + /* pg_init in progress or no paths available */
1760 + if (m->pg_init_in_progress ||
1761 + (!m->nr_valid_paths && m->queue_if_no_path)) {
1762 busy = 1;
1763 goto out;
1764 }
1765 diff --git a/drivers/md/dm.c b/drivers/md/dm.c
1766 index 455e64916498..490ac238772d 100644
1767 --- a/drivers/md/dm.c
1768 +++ b/drivers/md/dm.c
1769 @@ -54,6 +54,8 @@ static void do_deferred_remove(struct work_struct *w);
1770
1771 static DECLARE_WORK(deferred_remove_work, do_deferred_remove);
1772
1773 +static struct workqueue_struct *deferred_remove_workqueue;
1774 +
1775 /*
1776 * For bio-based dm.
1777 * One of these is allocated per bio.
1778 @@ -276,16 +278,24 @@ static int __init local_init(void)
1779 if (r)
1780 goto out_free_rq_tio_cache;
1781
1782 + deferred_remove_workqueue = alloc_workqueue("kdmremove", WQ_UNBOUND, 1);
1783 + if (!deferred_remove_workqueue) {
1784 + r = -ENOMEM;
1785 + goto out_uevent_exit;
1786 + }
1787 +
1788 _major = major;
1789 r = register_blkdev(_major, _name);
1790 if (r < 0)
1791 - goto out_uevent_exit;
1792 + goto out_free_workqueue;
1793
1794 if (!_major)
1795 _major = r;
1796
1797 return 0;
1798
1799 +out_free_workqueue:
1800 + destroy_workqueue(deferred_remove_workqueue);
1801 out_uevent_exit:
1802 dm_uevent_exit();
1803 out_free_rq_tio_cache:
1804 @@ -299,6 +309,7 @@ out_free_io_cache:
1805 static void local_exit(void)
1806 {
1807 flush_scheduled_work();
1808 + destroy_workqueue(deferred_remove_workqueue);
1809
1810 kmem_cache_destroy(_rq_tio_cache);
1811 kmem_cache_destroy(_io_cache);
1812 @@ -407,7 +418,7 @@ static void dm_blk_close(struct gendisk *disk, fmode_t mode)
1813
1814 if (atomic_dec_and_test(&md->open_count) &&
1815 (test_bit(DMF_DEFERRED_REMOVE, &md->flags)))
1816 - schedule_work(&deferred_remove_work);
1817 + queue_work(deferred_remove_workqueue, &deferred_remove_work);
1818
1819 dm_put(md);
1820
1821 diff --git a/drivers/mtd/nand/omap2.c b/drivers/mtd/nand/omap2.c
1822 index 0a685089c3fd..69faeec7fa4c 100644
1823 --- a/drivers/mtd/nand/omap2.c
1824 +++ b/drivers/mtd/nand/omap2.c
1825 @@ -1162,7 +1162,7 @@ static int __maybe_unused omap_calculate_ecc_bch(struct mtd_info *mtd,
1826 struct gpmc_nand_regs *gpmc_regs = &info->reg;
1827 u8 *ecc_code;
1828 unsigned long nsectors, bch_val1, bch_val2, bch_val3, bch_val4;
1829 - int i;
1830 + int i, j;
1831
1832 nsectors = ((readl(info->reg.gpmc_ecc_config) >> 4) & 0x7) + 1;
1833 for (i = 0; i < nsectors; i++) {
1834 @@ -1210,8 +1210,8 @@ static int __maybe_unused omap_calculate_ecc_bch(struct mtd_info *mtd,
1835 case OMAP_ECC_BCH4_CODE_HW_DETECTION_SW:
1836 /* Add constant polynomial to remainder, so that
1837 * ECC of blank pages results in 0x0 on reading back */
1838 - for (i = 0; i < eccbytes; i++)
1839 - ecc_calc[i] ^= bch4_polynomial[i];
1840 + for (j = 0; j < eccbytes; j++)
1841 + ecc_calc[j] ^= bch4_polynomial[j];
1842 break;
1843 case OMAP_ECC_BCH4_CODE_HW:
1844 /* Set 8th ECC byte as 0x0 for ROM compatibility */
1845 @@ -1220,8 +1220,8 @@ static int __maybe_unused omap_calculate_ecc_bch(struct mtd_info *mtd,
1846 case OMAP_ECC_BCH8_CODE_HW_DETECTION_SW:
1847 /* Add constant polynomial to remainder, so that
1848 * ECC of blank pages results in 0x0 on reading back */
1849 - for (i = 0; i < eccbytes; i++)
1850 - ecc_calc[i] ^= bch8_polynomial[i];
1851 + for (j = 0; j < eccbytes; j++)
1852 + ecc_calc[j] ^= bch8_polynomial[j];
1853 break;
1854 case OMAP_ECC_BCH8_CODE_HW:
1855 /* Set 14th ECC byte as 0x0 for ROM compatibility */
1856 diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
1857 index cf0761f08911..71dfd79f391a 100644
1858 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c
1859 +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
1860 @@ -4310,7 +4310,7 @@ int i40e_vsi_open(struct i40e_vsi *vsi)
1861 goto err_setup_rx;
1862
1863 if (!vsi->netdev) {
1864 - err = EINVAL;
1865 + err = -EINVAL;
1866 goto err_setup_rx;
1867 }
1868 snprintf(int_name, sizeof(int_name) - 1, "%s-%s",
1869 diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
1870 index 83b01fa02400..bba3726ab510 100644
1871 --- a/drivers/pci/pci.c
1872 +++ b/drivers/pci/pci.c
1873 @@ -3109,8 +3109,13 @@ static int pci_af_flr(struct pci_dev *dev, int probe)
1874 if (probe)
1875 return 0;
1876
1877 - /* Wait for Transaction Pending bit clean */
1878 - if (pci_wait_for_pending(dev, pos + PCI_AF_STATUS, PCI_AF_STATUS_TP))
1879 + /*
1880 + * Wait for Transaction Pending bit to clear. A word-aligned test
1881 + * is used, so we use the conrol offset rather than status and shift
1882 + * the test bit to match.
1883 + */
1884 + if (pci_wait_for_pending(dev, pos + PCI_AF_CTRL,
1885 + PCI_AF_STATUS_TP << 8))
1886 goto clear;
1887
1888 dev_err(&dev->dev, "transaction is not cleared; "
1889 diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
1890 index c64a2f3b2d62..49c446530101 100644
1891 --- a/drivers/phy/phy-core.c
1892 +++ b/drivers/phy/phy-core.c
1893 @@ -614,8 +614,9 @@ struct phy *phy_create(struct device *dev, const struct phy_ops *ops,
1894 return phy;
1895
1896 put_dev:
1897 - put_device(&phy->dev);
1898 - ida_remove(&phy_ida, phy->id);
1899 + put_device(&phy->dev); /* calls phy_release() which frees resources */
1900 + return ERR_PTR(ret);
1901 +
1902 free_phy:
1903 kfree(phy);
1904 return ERR_PTR(ret);
1905 @@ -799,7 +800,7 @@ static void phy_release(struct device *dev)
1906
1907 phy = to_phy(dev);
1908 dev_vdbg(dev, "releasing '%s'\n", dev_name(dev));
1909 - ida_remove(&phy_ida, phy->id);
1910 + ida_simple_remove(&phy_ida, phy->id);
1911 kfree(phy);
1912 }
1913
1914 diff --git a/drivers/rtc/rtc-puv3.c b/drivers/rtc/rtc-puv3.c
1915 index 1ecfe3bd92ac..1cff2a21db67 100644
1916 --- a/drivers/rtc/rtc-puv3.c
1917 +++ b/drivers/rtc/rtc-puv3.c
1918 @@ -71,7 +71,7 @@ static int puv3_rtc_setpie(struct device *dev, int enabled)
1919 {
1920 unsigned int tmp;
1921
1922 - dev_debug(dev, "%s: pie=%d\n", __func__, enabled);
1923 + dev_dbg(dev, "%s: pie=%d\n", __func__, enabled);
1924
1925 spin_lock_irq(&puv3_rtc_pie_lock);
1926 tmp = readl(RTC_RTSR) & ~RTC_RTSR_HZE;
1927 @@ -140,7 +140,7 @@ static int puv3_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm)
1928 rtc_tm_to_time(tm, &rtcalarm_count);
1929 writel(rtcalarm_count, RTC_RTAR);
1930
1931 - puv3_rtc_setaie(&dev->dev, alrm->enabled);
1932 + puv3_rtc_setaie(dev, alrm->enabled);
1933
1934 if (alrm->enabled)
1935 enable_irq_wake(puv3_rtc_alarmno);
1936 diff --git a/drivers/thermal/thermal_hwmon.c b/drivers/thermal/thermal_hwmon.c
1937 index fdb07199d9c2..1967bee4f076 100644
1938 --- a/drivers/thermal/thermal_hwmon.c
1939 +++ b/drivers/thermal/thermal_hwmon.c
1940 @@ -140,6 +140,12 @@ thermal_hwmon_lookup_temp(const struct thermal_hwmon_device *hwmon,
1941 return NULL;
1942 }
1943
1944 +static bool thermal_zone_crit_temp_valid(struct thermal_zone_device *tz)
1945 +{
1946 + unsigned long temp;
1947 + return tz->ops->get_crit_temp && !tz->ops->get_crit_temp(tz, &temp);
1948 +}
1949 +
1950 int thermal_add_hwmon_sysfs(struct thermal_zone_device *tz)
1951 {
1952 struct thermal_hwmon_device *hwmon;
1953 @@ -189,21 +195,18 @@ int thermal_add_hwmon_sysfs(struct thermal_zone_device *tz)
1954 if (result)
1955 goto free_temp_mem;
1956
1957 - if (tz->ops->get_crit_temp) {
1958 - unsigned long temperature;
1959 - if (!tz->ops->get_crit_temp(tz, &temperature)) {
1960 - snprintf(temp->temp_crit.name,
1961 - sizeof(temp->temp_crit.name),
1962 + if (thermal_zone_crit_temp_valid(tz)) {
1963 + snprintf(temp->temp_crit.name,
1964 + sizeof(temp->temp_crit.name),
1965 "temp%d_crit", hwmon->count);
1966 - temp->temp_crit.attr.attr.name = temp->temp_crit.name;
1967 - temp->temp_crit.attr.attr.mode = 0444;
1968 - temp->temp_crit.attr.show = temp_crit_show;
1969 - sysfs_attr_init(&temp->temp_crit.attr.attr);
1970 - result = device_create_file(hwmon->device,
1971 - &temp->temp_crit.attr);
1972 - if (result)
1973 - goto unregister_input;
1974 - }
1975 + temp->temp_crit.attr.attr.name = temp->temp_crit.name;
1976 + temp->temp_crit.attr.attr.mode = 0444;
1977 + temp->temp_crit.attr.show = temp_crit_show;
1978 + sysfs_attr_init(&temp->temp_crit.attr.attr);
1979 + result = device_create_file(hwmon->device,
1980 + &temp->temp_crit.attr);
1981 + if (result)
1982 + goto unregister_input;
1983 }
1984
1985 mutex_lock(&thermal_hwmon_list_lock);
1986 @@ -250,7 +253,7 @@ void thermal_remove_hwmon_sysfs(struct thermal_zone_device *tz)
1987 }
1988
1989 device_remove_file(hwmon->device, &temp->temp_input.attr);
1990 - if (tz->ops->get_crit_temp)
1991 + if (thermal_zone_crit_temp_valid(tz))
1992 device_remove_file(hwmon->device, &temp->temp_crit.attr);
1993
1994 mutex_lock(&thermal_hwmon_list_lock);
1995 diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
1996 index 3b6c1a2e25de..be1c842ec747 100644
1997 --- a/drivers/tty/serial/imx.c
1998 +++ b/drivers/tty/serial/imx.c
1999 @@ -563,6 +563,9 @@ static void imx_start_tx(struct uart_port *port)
2000 struct imx_port *sport = (struct imx_port *)port;
2001 unsigned long temp;
2002
2003 + if (uart_circ_empty(&port->state->xmit))
2004 + return;
2005 +
2006 if (USE_IRDA(sport)) {
2007 /* half duplex in IrDA mode; have to disable receive mode */
2008 temp = readl(sport->port.membase + UCR4);
2009 diff --git a/drivers/tty/serial/ip22zilog.c b/drivers/tty/serial/ip22zilog.c
2010 index 1efd4c36ba0c..99b7b8697861 100644
2011 --- a/drivers/tty/serial/ip22zilog.c
2012 +++ b/drivers/tty/serial/ip22zilog.c
2013 @@ -603,6 +603,8 @@ static void ip22zilog_start_tx(struct uart_port *port)
2014 } else {
2015 struct circ_buf *xmit = &port->state->xmit;
2016
2017 + if (uart_circ_empty(xmit))
2018 + return;
2019 writeb(xmit->buf[xmit->tail], &channel->data);
2020 ZSDELAY();
2021 ZS_WSYNC(channel);
2022 diff --git a/drivers/tty/serial/m32r_sio.c b/drivers/tty/serial/m32r_sio.c
2023 index 68f2c53e0b54..5702828fb62e 100644
2024 --- a/drivers/tty/serial/m32r_sio.c
2025 +++ b/drivers/tty/serial/m32r_sio.c
2026 @@ -266,9 +266,11 @@ static void m32r_sio_start_tx(struct uart_port *port)
2027 if (!(up->ier & UART_IER_THRI)) {
2028 up->ier |= UART_IER_THRI;
2029 serial_out(up, UART_IER, up->ier);
2030 - serial_out(up, UART_TX, xmit->buf[xmit->tail]);
2031 - xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1);
2032 - up->port.icount.tx++;
2033 + if (!uart_circ_empty(xmit)) {
2034 + serial_out(up, UART_TX, xmit->buf[xmit->tail]);
2035 + xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1);
2036 + up->port.icount.tx++;
2037 + }
2038 }
2039 while((serial_in(up, UART_LSR) & UART_EMPTY) != UART_EMPTY);
2040 #else
2041 diff --git a/drivers/tty/serial/pmac_zilog.c b/drivers/tty/serial/pmac_zilog.c
2042 index 8193635103ee..f7ad5b903055 100644
2043 --- a/drivers/tty/serial/pmac_zilog.c
2044 +++ b/drivers/tty/serial/pmac_zilog.c
2045 @@ -653,6 +653,8 @@ static void pmz_start_tx(struct uart_port *port)
2046 } else {
2047 struct circ_buf *xmit = &port->state->xmit;
2048
2049 + if (uart_circ_empty(xmit))
2050 + goto out;
2051 write_zsdata(uap, xmit->buf[xmit->tail]);
2052 zssync(uap);
2053 xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1);
2054 @@ -661,6 +663,7 @@ static void pmz_start_tx(struct uart_port *port)
2055 if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
2056 uart_write_wakeup(&uap->port);
2057 }
2058 + out:
2059 pmz_debug("pmz: start_tx() done.\n");
2060 }
2061
2062 diff --git a/drivers/tty/serial/sunsab.c b/drivers/tty/serial/sunsab.c
2063 index 80a58eca785b..2f57df9a71d9 100644
2064 --- a/drivers/tty/serial/sunsab.c
2065 +++ b/drivers/tty/serial/sunsab.c
2066 @@ -427,6 +427,9 @@ static void sunsab_start_tx(struct uart_port *port)
2067 struct circ_buf *xmit = &up->port.state->xmit;
2068 int i;
2069
2070 + if (uart_circ_empty(xmit))
2071 + return;
2072 +
2073 up->interrupt_mask1 &= ~(SAB82532_IMR1_ALLS|SAB82532_IMR1_XPR);
2074 writeb(up->interrupt_mask1, &up->regs->w.imr1);
2075
2076 diff --git a/drivers/tty/serial/sunzilog.c b/drivers/tty/serial/sunzilog.c
2077 index a85db8b87156..02df3940b95e 100644
2078 --- a/drivers/tty/serial/sunzilog.c
2079 +++ b/drivers/tty/serial/sunzilog.c
2080 @@ -703,6 +703,8 @@ static void sunzilog_start_tx(struct uart_port *port)
2081 } else {
2082 struct circ_buf *xmit = &port->state->xmit;
2083
2084 + if (uart_circ_empty(xmit))
2085 + return;
2086 writeb(xmit->buf[xmit->tail], &channel->data);
2087 ZSDELAY();
2088 ZS_WSYNC(channel);
2089 diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
2090 index 762e4a5f5ae9..330df5ce435b 100644
2091 --- a/drivers/usb/serial/cp210x.c
2092 +++ b/drivers/usb/serial/cp210x.c
2093 @@ -153,6 +153,7 @@ static const struct usb_device_id id_table[] = {
2094 { USB_DEVICE(0x1843, 0x0200) }, /* Vaisala USB Instrument Cable */
2095 { USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */
2096 { USB_DEVICE(0x1ADB, 0x0001) }, /* Schweitzer Engineering C662 Cable */
2097 + { USB_DEVICE(0x1B1C, 0x1C00) }, /* Corsair USB Dongle */
2098 { USB_DEVICE(0x1BE3, 0x07A6) }, /* WAGO 750-923 USB Service Cable */
2099 { USB_DEVICE(0x1E29, 0x0102) }, /* Festo CPX-USB */
2100 { USB_DEVICE(0x1E29, 0x0501) }, /* Festo CMSP */
2101 diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
2102 index 115662c16dcc..8a3813be1b28 100644
2103 --- a/drivers/usb/serial/ftdi_sio.c
2104 +++ b/drivers/usb/serial/ftdi_sio.c
2105 @@ -720,7 +720,8 @@ static const struct usb_device_id id_table_combined[] = {
2106 { USB_DEVICE(FTDI_VID, FTDI_ACG_HFDUAL_PID) },
2107 { USB_DEVICE(FTDI_VID, FTDI_YEI_SERVOCENTER31_PID) },
2108 { USB_DEVICE(FTDI_VID, FTDI_THORLABS_PID) },
2109 - { USB_DEVICE(TESTO_VID, TESTO_USB_INTERFACE_PID) },
2110 + { USB_DEVICE(TESTO_VID, TESTO_1_PID) },
2111 + { USB_DEVICE(TESTO_VID, TESTO_3_PID) },
2112 { USB_DEVICE(FTDI_VID, FTDI_GAMMA_SCOUT_PID) },
2113 { USB_DEVICE(FTDI_VID, FTDI_TACTRIX_OPENPORT_13M_PID) },
2114 { USB_DEVICE(FTDI_VID, FTDI_TACTRIX_OPENPORT_13S_PID) },
2115 @@ -944,6 +945,8 @@ static const struct usb_device_id id_table_combined[] = {
2116 { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_2_PID) },
2117 { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_3_PID) },
2118 { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_4_PID) },
2119 + /* Infineon Devices */
2120 + { USB_DEVICE_INTERFACE_NUMBER(INFINEON_VID, INFINEON_TRIBOARD_PID, 1) },
2121 { } /* Terminating entry */
2122 };
2123
2124 diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
2125 index 500474c48f4b..c4777bc6aee0 100644
2126 --- a/drivers/usb/serial/ftdi_sio_ids.h
2127 +++ b/drivers/usb/serial/ftdi_sio_ids.h
2128 @@ -584,6 +584,12 @@
2129 #define RATOC_PRODUCT_ID_USB60F 0xb020
2130
2131 /*
2132 + * Infineon Technologies
2133 + */
2134 +#define INFINEON_VID 0x058b
2135 +#define INFINEON_TRIBOARD_PID 0x0028 /* DAS JTAG TriBoard TC1798 V1.0 */
2136 +
2137 +/*
2138 * Acton Research Corp.
2139 */
2140 #define ACTON_VID 0x0647 /* Vendor ID */
2141 @@ -798,7 +804,8 @@
2142 * Submitted by Colin Leroy
2143 */
2144 #define TESTO_VID 0x128D
2145 -#define TESTO_USB_INTERFACE_PID 0x0001
2146 +#define TESTO_1_PID 0x0001
2147 +#define TESTO_3_PID 0x0003
2148
2149 /*
2150 * Mobility Electronics products.
2151 diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
2152 index e25e8ca09fe2..9da566a3f5c8 100644
2153 --- a/drivers/usb/serial/option.c
2154 +++ b/drivers/usb/serial/option.c
2155 @@ -1487,6 +1487,8 @@ static const struct usb_device_id option_ids[] = {
2156 .driver_info = (kernel_ulong_t)&net_intf2_blacklist },
2157 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1426, 0xff, 0xff, 0xff), /* ZTE MF91 */
2158 .driver_info = (kernel_ulong_t)&net_intf2_blacklist },
2159 + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1428, 0xff, 0xff, 0xff), /* Telewell TW-LTE 4G v2 */
2160 + .driver_info = (kernel_ulong_t)&net_intf2_blacklist },
2161 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1533, 0xff, 0xff, 0xff) },
2162 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1534, 0xff, 0xff, 0xff) },
2163 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1535, 0xff, 0xff, 0xff) },
2164 diff --git a/fs/ext4/extents_status.c b/fs/ext4/extents_status.c
2165 index 0ebc21204b51..c7d7d5fc3ac3 100644
2166 --- a/fs/ext4/extents_status.c
2167 +++ b/fs/ext4/extents_status.c
2168 @@ -960,10 +960,10 @@ retry:
2169 continue;
2170 }
2171
2172 - if (ei->i_es_lru_nr == 0 || ei == locked_ei)
2173 + if (ei->i_es_lru_nr == 0 || ei == locked_ei ||
2174 + !write_trylock(&ei->i_es_lock))
2175 continue;
2176
2177 - write_lock(&ei->i_es_lock);
2178 shrunk = __es_try_to_reclaim_extents(ei, nr_to_scan);
2179 if (ei->i_es_lru_nr == 0)
2180 list_del_init(&ei->i_es_lru);
2181 diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
2182 index 0ee59a6644e2..64bb32f17903 100644
2183 --- a/fs/ext4/ialloc.c
2184 +++ b/fs/ext4/ialloc.c
2185 @@ -851,6 +851,13 @@ got:
2186 goto out;
2187 }
2188
2189 + BUFFER_TRACE(group_desc_bh, "get_write_access");
2190 + err = ext4_journal_get_write_access(handle, group_desc_bh);
2191 + if (err) {
2192 + ext4_std_error(sb, err);
2193 + goto out;
2194 + }
2195 +
2196 /* We may have to initialize the block bitmap if it isn't already */
2197 if (ext4_has_group_desc_csum(sb) &&
2198 gdp->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT)) {
2199 @@ -887,13 +894,6 @@ got:
2200 }
2201 }
2202
2203 - BUFFER_TRACE(group_desc_bh, "get_write_access");
2204 - err = ext4_journal_get_write_access(handle, group_desc_bh);
2205 - if (err) {
2206 - ext4_std_error(sb, err);
2207 - goto out;
2208 - }
2209 -
2210 /* Update the relevant bg descriptor fields */
2211 if (ext4_has_group_desc_csum(sb)) {
2212 int free;
2213 diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
2214 index fe4e668d3023..2735a72d1ec4 100644
2215 --- a/fs/ext4/mballoc.c
2216 +++ b/fs/ext4/mballoc.c
2217 @@ -751,8 +751,8 @@ void ext4_mb_generate_buddy(struct super_block *sb,
2218
2219 if (free != grp->bb_free) {
2220 ext4_grp_locked_error(sb, group, 0, 0,
2221 - "%u clusters in bitmap, %u in gd; "
2222 - "block bitmap corrupt.",
2223 + "block bitmap and bg descriptor "
2224 + "inconsistent: %u vs %u free clusters",
2225 free, grp->bb_free);
2226 /*
2227 * If we intend to continue, we consider group descriptor
2228 diff --git a/fs/ext4/super.c b/fs/ext4/super.c
2229 index 6f9e6fadac04..29a403c0c003 100644
2230 --- a/fs/ext4/super.c
2231 +++ b/fs/ext4/super.c
2232 @@ -1524,8 +1524,6 @@ static int handle_mount_opt(struct super_block *sb, char *opt, int token,
2233 arg = JBD2_DEFAULT_MAX_COMMIT_AGE;
2234 sbi->s_commit_interval = HZ * arg;
2235 } else if (token == Opt_max_batch_time) {
2236 - if (arg == 0)
2237 - arg = EXT4_DEF_MAX_BATCH_TIME;
2238 sbi->s_max_batch_time = arg;
2239 } else if (token == Opt_min_batch_time) {
2240 sbi->s_min_batch_time = arg;
2241 @@ -2798,10 +2796,11 @@ static void print_daily_error_info(unsigned long arg)
2242 es = sbi->s_es;
2243
2244 if (es->s_error_count)
2245 - ext4_msg(sb, KERN_NOTICE, "error count: %u",
2246 + /* fsck newer than v1.41.13 is needed to clean this condition. */
2247 + ext4_msg(sb, KERN_NOTICE, "error count since last fsck: %u",
2248 le32_to_cpu(es->s_error_count));
2249 if (es->s_first_error_time) {
2250 - printk(KERN_NOTICE "EXT4-fs (%s): initial error at %u: %.*s:%d",
2251 + printk(KERN_NOTICE "EXT4-fs (%s): initial error at time %u: %.*s:%d",
2252 sb->s_id, le32_to_cpu(es->s_first_error_time),
2253 (int) sizeof(es->s_first_error_func),
2254 es->s_first_error_func,
2255 @@ -2815,7 +2814,7 @@ static void print_daily_error_info(unsigned long arg)
2256 printk("\n");
2257 }
2258 if (es->s_last_error_time) {
2259 - printk(KERN_NOTICE "EXT4-fs (%s): last error at %u: %.*s:%d",
2260 + printk(KERN_NOTICE "EXT4-fs (%s): last error at time %u: %.*s:%d",
2261 sb->s_id, le32_to_cpu(es->s_last_error_time),
2262 (int) sizeof(es->s_last_error_func),
2263 es->s_last_error_func,
2264 @@ -3869,38 +3868,19 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
2265 goto failed_mount2;
2266 }
2267 }
2268 -
2269 - /*
2270 - * set up enough so that it can read an inode,
2271 - * and create new inode for buddy allocator
2272 - */
2273 - sbi->s_gdb_count = db_count;
2274 - if (!test_opt(sb, NOLOAD) &&
2275 - EXT4_HAS_COMPAT_FEATURE(sb, EXT4_FEATURE_COMPAT_HAS_JOURNAL))
2276 - sb->s_op = &ext4_sops;
2277 - else
2278 - sb->s_op = &ext4_nojournal_sops;
2279 -
2280 - ext4_ext_init(sb);
2281 - err = ext4_mb_init(sb);
2282 - if (err) {
2283 - ext4_msg(sb, KERN_ERR, "failed to initialize mballoc (%d)",
2284 - err);
2285 - goto failed_mount2;
2286 - }
2287 -
2288 if (!ext4_check_descriptors(sb, &first_not_zeroed)) {
2289 ext4_msg(sb, KERN_ERR, "group descriptors corrupted!");
2290 - goto failed_mount2a;
2291 + goto failed_mount2;
2292 }
2293 if (EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_FLEX_BG))
2294 if (!ext4_fill_flex_info(sb)) {
2295 ext4_msg(sb, KERN_ERR,
2296 "unable to initialize "
2297 "flex_bg meta info!");
2298 - goto failed_mount2a;
2299 + goto failed_mount2;
2300 }
2301
2302 + sbi->s_gdb_count = db_count;
2303 get_random_bytes(&sbi->s_next_generation, sizeof(u32));
2304 spin_lock_init(&sbi->s_next_gen_lock);
2305
2306 @@ -3935,6 +3915,14 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
2307 sbi->s_stripe = ext4_get_stripe_size(sbi);
2308 sbi->s_extent_max_zeroout_kb = 32;
2309
2310 + /*
2311 + * set up enough so that it can read an inode
2312 + */
2313 + if (!test_opt(sb, NOLOAD) &&
2314 + EXT4_HAS_COMPAT_FEATURE(sb, EXT4_FEATURE_COMPAT_HAS_JOURNAL))
2315 + sb->s_op = &ext4_sops;
2316 + else
2317 + sb->s_op = &ext4_nojournal_sops;
2318 sb->s_export_op = &ext4_export_ops;
2319 sb->s_xattr = ext4_xattr_handlers;
2320 #ifdef CONFIG_QUOTA
2321 @@ -4124,13 +4112,21 @@ no_journal:
2322 if (err) {
2323 ext4_msg(sb, KERN_ERR, "failed to reserve %llu clusters for "
2324 "reserved pool", ext4_calculate_resv_clusters(sb));
2325 - goto failed_mount5;
2326 + goto failed_mount4a;
2327 }
2328
2329 err = ext4_setup_system_zone(sb);
2330 if (err) {
2331 ext4_msg(sb, KERN_ERR, "failed to initialize system "
2332 "zone (%d)", err);
2333 + goto failed_mount4a;
2334 + }
2335 +
2336 + ext4_ext_init(sb);
2337 + err = ext4_mb_init(sb);
2338 + if (err) {
2339 + ext4_msg(sb, KERN_ERR, "failed to initialize mballoc (%d)",
2340 + err);
2341 goto failed_mount5;
2342 }
2343
2344 @@ -4207,8 +4203,11 @@ failed_mount8:
2345 failed_mount7:
2346 ext4_unregister_li_request(sb);
2347 failed_mount6:
2348 - ext4_release_system_zone(sb);
2349 + ext4_mb_release(sb);
2350 failed_mount5:
2351 + ext4_ext_release(sb);
2352 + ext4_release_system_zone(sb);
2353 +failed_mount4a:
2354 dput(sb->s_root);
2355 sb->s_root = NULL;
2356 failed_mount4:
2357 @@ -4232,14 +4231,11 @@ failed_mount3:
2358 percpu_counter_destroy(&sbi->s_extent_cache_cnt);
2359 if (sbi->s_mmp_tsk)
2360 kthread_stop(sbi->s_mmp_tsk);
2361 -failed_mount2a:
2362 - ext4_mb_release(sb);
2363 failed_mount2:
2364 for (i = 0; i < db_count; i++)
2365 brelse(sbi->s_group_desc[i]);
2366 ext4_kvfree(sbi->s_group_desc);
2367 failed_mount:
2368 - ext4_ext_release(sb);
2369 if (sbi->s_chksum_driver)
2370 crypto_free_shash(sbi->s_chksum_driver);
2371 if (sbi->s_proc) {
2372 diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
2373 index bc077f3c8868..a63e20fee78a 100644
2374 --- a/fs/f2fs/data.c
2375 +++ b/fs/f2fs/data.c
2376 @@ -869,7 +869,8 @@ static int f2fs_write_data_pages(struct address_space *mapping,
2377 return 0;
2378
2379 if (S_ISDIR(inode->i_mode) && wbc->sync_mode == WB_SYNC_NONE &&
2380 - get_dirty_dents(inode) < nr_pages_to_skip(sbi, DATA))
2381 + get_dirty_dents(inode) < nr_pages_to_skip(sbi, DATA) &&
2382 + available_free_memory(sbi, DIRTY_DENTS))
2383 goto skip_write;
2384
2385 diff = nr_pages_to_write(sbi, DATA, wbc);
2386 diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
2387 index 2ecac8312359..656523cb4513 100644
2388 --- a/fs/f2fs/f2fs.h
2389 +++ b/fs/f2fs/f2fs.h
2390 @@ -1140,6 +1140,7 @@ f2fs_hash_t f2fs_dentry_hash(const char *, size_t);
2391 struct dnode_of_data;
2392 struct node_info;
2393
2394 +bool available_free_memory(struct f2fs_sb_info *, int);
2395 int is_checkpointed_node(struct f2fs_sb_info *, nid_t);
2396 bool fsync_mark_done(struct f2fs_sb_info *, nid_t);
2397 void get_node_info(struct f2fs_sb_info *, nid_t, struct node_info *);
2398 diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
2399 index a161e955c4c8..5696bde95702 100644
2400 --- a/fs/f2fs/node.c
2401 +++ b/fs/f2fs/node.c
2402 @@ -26,20 +26,28 @@
2403 static struct kmem_cache *nat_entry_slab;
2404 static struct kmem_cache *free_nid_slab;
2405
2406 -static inline bool available_free_memory(struct f2fs_nm_info *nm_i, int type)
2407 +bool available_free_memory(struct f2fs_sb_info *sbi, int type)
2408 {
2409 + struct f2fs_nm_info *nm_i = NM_I(sbi);
2410 struct sysinfo val;
2411 unsigned long mem_size = 0;
2412 + bool res = false;
2413
2414 si_meminfo(&val);
2415 - if (type == FREE_NIDS)
2416 - mem_size = nm_i->fcnt * sizeof(struct free_nid);
2417 - else if (type == NAT_ENTRIES)
2418 - mem_size += nm_i->nat_cnt * sizeof(struct nat_entry);
2419 - mem_size >>= 12;
2420 -
2421 - /* give 50:50 memory for free nids and nat caches respectively */
2422 - return (mem_size < ((val.totalram * nm_i->ram_thresh) >> 11));
2423 + /* give 25%, 25%, 50% memory for each components respectively */
2424 + if (type == FREE_NIDS) {
2425 + mem_size = (nm_i->fcnt * sizeof(struct free_nid)) >> 12;
2426 + res = mem_size < ((val.totalram * nm_i->ram_thresh / 100) >> 2);
2427 + } else if (type == NAT_ENTRIES) {
2428 + mem_size = (nm_i->nat_cnt * sizeof(struct nat_entry)) >> 12;
2429 + res = mem_size < ((val.totalram * nm_i->ram_thresh / 100) >> 2);
2430 + } else if (type == DIRTY_DENTS) {
2431 + if (sbi->sb->s_bdi->dirty_exceeded)
2432 + return false;
2433 + mem_size = get_pages(sbi, F2FS_DIRTY_DENTS);
2434 + res = mem_size < ((val.totalram * nm_i->ram_thresh / 100) >> 1);
2435 + }
2436 + return res;
2437 }
2438
2439 static void clear_node_page_dirty(struct page *page)
2440 @@ -243,7 +251,7 @@ int try_to_free_nats(struct f2fs_sb_info *sbi, int nr_shrink)
2441 {
2442 struct f2fs_nm_info *nm_i = NM_I(sbi);
2443
2444 - if (available_free_memory(nm_i, NAT_ENTRIES))
2445 + if (available_free_memory(sbi, NAT_ENTRIES))
2446 return 0;
2447
2448 write_lock(&nm_i->nat_tree_lock);
2449 @@ -1315,13 +1323,14 @@ static void __del_from_free_nid_list(struct f2fs_nm_info *nm_i,
2450 radix_tree_delete(&nm_i->free_nid_root, i->nid);
2451 }
2452
2453 -static int add_free_nid(struct f2fs_nm_info *nm_i, nid_t nid, bool build)
2454 +static int add_free_nid(struct f2fs_sb_info *sbi, nid_t nid, bool build)
2455 {
2456 + struct f2fs_nm_info *nm_i = NM_I(sbi);
2457 struct free_nid *i;
2458 struct nat_entry *ne;
2459 bool allocated = false;
2460
2461 - if (!available_free_memory(nm_i, FREE_NIDS))
2462 + if (!available_free_memory(sbi, FREE_NIDS))
2463 return -1;
2464
2465 /* 0 nid should not be used */
2466 @@ -1374,9 +1383,10 @@ static void remove_free_nid(struct f2fs_nm_info *nm_i, nid_t nid)
2467 kmem_cache_free(free_nid_slab, i);
2468 }
2469
2470 -static void scan_nat_page(struct f2fs_nm_info *nm_i,
2471 +static void scan_nat_page(struct f2fs_sb_info *sbi,
2472 struct page *nat_page, nid_t start_nid)
2473 {
2474 + struct f2fs_nm_info *nm_i = NM_I(sbi);
2475 struct f2fs_nat_block *nat_blk = page_address(nat_page);
2476 block_t blk_addr;
2477 int i;
2478 @@ -1391,7 +1401,7 @@ static void scan_nat_page(struct f2fs_nm_info *nm_i,
2479 blk_addr = le32_to_cpu(nat_blk->entries[i].block_addr);
2480 f2fs_bug_on(blk_addr == NEW_ADDR);
2481 if (blk_addr == NULL_ADDR) {
2482 - if (add_free_nid(nm_i, start_nid, true) < 0)
2483 + if (add_free_nid(sbi, start_nid, true) < 0)
2484 break;
2485 }
2486 }
2487 @@ -1415,7 +1425,7 @@ static void build_free_nids(struct f2fs_sb_info *sbi)
2488 while (1) {
2489 struct page *page = get_current_nat_page(sbi, nid);
2490
2491 - scan_nat_page(nm_i, page, nid);
2492 + scan_nat_page(sbi, page, nid);
2493 f2fs_put_page(page, 1);
2494
2495 nid += (NAT_ENTRY_PER_BLOCK - (nid % NAT_ENTRY_PER_BLOCK));
2496 @@ -1435,7 +1445,7 @@ static void build_free_nids(struct f2fs_sb_info *sbi)
2497 block_t addr = le32_to_cpu(nat_in_journal(sum, i).block_addr);
2498 nid = le32_to_cpu(nid_in_journal(sum, i));
2499 if (addr == NULL_ADDR)
2500 - add_free_nid(nm_i, nid, true);
2501 + add_free_nid(sbi, nid, true);
2502 else
2503 remove_free_nid(nm_i, nid);
2504 }
2505 @@ -1512,7 +1522,7 @@ void alloc_nid_failed(struct f2fs_sb_info *sbi, nid_t nid)
2506 spin_lock(&nm_i->free_nid_list_lock);
2507 i = __lookup_free_nid_list(nm_i, nid);
2508 f2fs_bug_on(!i || i->state != NID_ALLOC);
2509 - if (!available_free_memory(nm_i, FREE_NIDS)) {
2510 + if (!available_free_memory(sbi, FREE_NIDS)) {
2511 __del_from_free_nid_list(nm_i, i);
2512 need_free = true;
2513 } else {
2514 @@ -1843,7 +1853,7 @@ flush_now:
2515 }
2516
2517 if (nat_get_blkaddr(ne) == NULL_ADDR &&
2518 - add_free_nid(NM_I(sbi), nid, false) <= 0) {
2519 + add_free_nid(sbi, nid, false) <= 0) {
2520 write_lock(&nm_i->nat_tree_lock);
2521 __del_from_nat_cache(nm_i, ne);
2522 write_unlock(&nm_i->nat_tree_lock);
2523 diff --git a/fs/f2fs/node.h b/fs/f2fs/node.h
2524 index 5decc1a375f0..b5170776b8dc 100644
2525 --- a/fs/f2fs/node.h
2526 +++ b/fs/f2fs/node.h
2527 @@ -75,9 +75,10 @@ static inline void node_info_from_raw_nat(struct node_info *ni,
2528 ni->version = raw_ne->version;
2529 }
2530
2531 -enum nid_type {
2532 +enum mem_type {
2533 FREE_NIDS, /* indicates the free nid list */
2534 - NAT_ENTRIES /* indicates the cached nat entry */
2535 + NAT_ENTRIES, /* indicates the cached nat entry */
2536 + DIRTY_DENTS /* indicates dirty dentry pages */
2537 };
2538
2539 /*
2540 diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c
2541 index 38cfcf5f6fce..6f0f590cc5a3 100644
2542 --- a/fs/jbd2/transaction.c
2543 +++ b/fs/jbd2/transaction.c
2544 @@ -1588,9 +1588,12 @@ int jbd2_journal_stop(handle_t *handle)
2545 * to perform a synchronous write. We do this to detect the
2546 * case where a single process is doing a stream of sync
2547 * writes. No point in waiting for joiners in that case.
2548 + *
2549 + * Setting max_batch_time to 0 disables this completely.
2550 */
2551 pid = current->pid;
2552 - if (handle->h_sync && journal->j_last_sync_writer != pid) {
2553 + if (handle->h_sync && journal->j_last_sync_writer != pid &&
2554 + journal->j_max_batch_time) {
2555 u64 commit_time, trans_time;
2556
2557 journal->j_last_sync_writer = pid;
2558 diff --git a/fs/kernfs/dir.c b/fs/kernfs/dir.c
2559 index ac127cd008bf..a693f5b01ae6 100644
2560 --- a/fs/kernfs/dir.c
2561 +++ b/fs/kernfs/dir.c
2562 @@ -714,6 +714,7 @@ struct kernfs_root *kernfs_create_root(struct kernfs_syscall_ops *scops,
2563 return ERR_PTR(-ENOMEM);
2564
2565 ida_init(&root->ino_ida);
2566 + INIT_LIST_HEAD(&root->supers);
2567
2568 kn = __kernfs_new_node(root, "", S_IFDIR | S_IRUGO | S_IXUGO,
2569 KERNFS_DIR);
2570 diff --git a/fs/kernfs/kernfs-internal.h b/fs/kernfs/kernfs-internal.h
2571 index 8be13b2a079b..dc84a3ef9ca2 100644
2572 --- a/fs/kernfs/kernfs-internal.h
2573 +++ b/fs/kernfs/kernfs-internal.h
2574 @@ -49,6 +49,8 @@ static inline struct kernfs_root *kernfs_root(struct kernfs_node *kn)
2575 * mount.c
2576 */
2577 struct kernfs_super_info {
2578 + struct super_block *sb;
2579 +
2580 /*
2581 * The root associated with this super_block. Each super_block is
2582 * identified by the root and ns it's associated with.
2583 @@ -62,6 +64,9 @@ struct kernfs_super_info {
2584 * an array and compare kernfs_node tag against every entry.
2585 */
2586 const void *ns;
2587 +
2588 + /* anchored at kernfs_root->supers, protected by kernfs_mutex */
2589 + struct list_head node;
2590 };
2591 #define kernfs_info(SB) ((struct kernfs_super_info *)(SB->s_fs_info))
2592
2593 diff --git a/fs/kernfs/mount.c b/fs/kernfs/mount.c
2594 index 95dcd1d558bb..f973ae9b05f1 100644
2595 --- a/fs/kernfs/mount.c
2596 +++ b/fs/kernfs/mount.c
2597 @@ -68,6 +68,7 @@ static int kernfs_fill_super(struct super_block *sb, unsigned long magic)
2598 struct inode *inode;
2599 struct dentry *root;
2600
2601 + info->sb = sb;
2602 sb->s_blocksize = PAGE_CACHE_SIZE;
2603 sb->s_blocksize_bits = PAGE_CACHE_SHIFT;
2604 sb->s_magic = magic;
2605 @@ -167,12 +168,18 @@ struct dentry *kernfs_mount_ns(struct file_system_type *fs_type, int flags,
2606 *new_sb_created = !sb->s_root;
2607
2608 if (!sb->s_root) {
2609 + struct kernfs_super_info *info = kernfs_info(sb);
2610 +
2611 error = kernfs_fill_super(sb, magic);
2612 if (error) {
2613 deactivate_locked_super(sb);
2614 return ERR_PTR(error);
2615 }
2616 sb->s_flags |= MS_ACTIVE;
2617 +
2618 + mutex_lock(&kernfs_mutex);
2619 + list_add(&info->node, &root->supers);
2620 + mutex_unlock(&kernfs_mutex);
2621 }
2622
2623 return dget(sb->s_root);
2624 @@ -191,6 +198,10 @@ void kernfs_kill_sb(struct super_block *sb)
2625 struct kernfs_super_info *info = kernfs_info(sb);
2626 struct kernfs_node *root_kn = sb->s_root->d_fsdata;
2627
2628 + mutex_lock(&kernfs_mutex);
2629 + list_del(&info->node);
2630 + mutex_unlock(&kernfs_mutex);
2631 +
2632 /*
2633 * Remove the superblock from fs_supers/s_instances
2634 * so we can't find it, before freeing kernfs_super_info.
2635 @@ -200,6 +211,36 @@ void kernfs_kill_sb(struct super_block *sb)
2636 kernfs_put(root_kn);
2637 }
2638
2639 +/**
2640 + * kernfs_pin_sb: try to pin the superblock associated with a kernfs_root
2641 + * @kernfs_root: the kernfs_root in question
2642 + * @ns: the namespace tag
2643 + *
2644 + * Pin the superblock so the superblock won't be destroyed in subsequent
2645 + * operations. This can be used to block ->kill_sb() which may be useful
2646 + * for kernfs users which dynamically manage superblocks.
2647 + *
2648 + * Returns NULL if there's no superblock associated to this kernfs_root, or
2649 + * -EINVAL if the superblock is being freed.
2650 + */
2651 +struct super_block *kernfs_pin_sb(struct kernfs_root *root, const void *ns)
2652 +{
2653 + struct kernfs_super_info *info;
2654 + struct super_block *sb = NULL;
2655 +
2656 + mutex_lock(&kernfs_mutex);
2657 + list_for_each_entry(info, &root->supers, node) {
2658 + if (info->ns == ns) {
2659 + sb = info->sb;
2660 + if (!atomic_inc_not_zero(&info->sb->s_active))
2661 + sb = ERR_PTR(-EINVAL);
2662 + break;
2663 + }
2664 + }
2665 + mutex_unlock(&kernfs_mutex);
2666 + return sb;
2667 +}
2668 +
2669 void __init kernfs_init(void)
2670 {
2671 kernfs_node_cache = kmem_cache_create("kernfs_node_cache",
2672 diff --git a/include/linux/kernfs.h b/include/linux/kernfs.h
2673 index 52bf5677db0b..20f493564917 100644
2674 --- a/include/linux/kernfs.h
2675 +++ b/include/linux/kernfs.h
2676 @@ -161,6 +161,10 @@ struct kernfs_root {
2677 /* private fields, do not use outside kernfs proper */
2678 struct ida ino_ida;
2679 struct kernfs_syscall_ops *syscall_ops;
2680 +
2681 + /* list of kernfs_super_info of this root, protected by kernfs_mutex */
2682 + struct list_head supers;
2683 +
2684 wait_queue_head_t deactivate_waitq;
2685 };
2686
2687 @@ -300,6 +304,7 @@ struct dentry *kernfs_mount_ns(struct file_system_type *fs_type, int flags,
2688 struct kernfs_root *root, unsigned long magic,
2689 bool *new_sb_created, const void *ns);
2690 void kernfs_kill_sb(struct super_block *sb);
2691 +struct super_block *kernfs_pin_sb(struct kernfs_root *root, const void *ns);
2692
2693 void kernfs_init(void);
2694
2695 diff --git a/include/linux/ring_buffer.h b/include/linux/ring_buffer.h
2696 index d69cf637a15a..49a4d6f59108 100644
2697 --- a/include/linux/ring_buffer.h
2698 +++ b/include/linux/ring_buffer.h
2699 @@ -97,7 +97,7 @@ __ring_buffer_alloc(unsigned long size, unsigned flags, struct lock_class_key *k
2700 __ring_buffer_alloc((size), (flags), &__key); \
2701 })
2702
2703 -void ring_buffer_wait(struct ring_buffer *buffer, int cpu);
2704 +int ring_buffer_wait(struct ring_buffer *buffer, int cpu);
2705 int ring_buffer_poll_wait(struct ring_buffer *buffer, int cpu,
2706 struct file *filp, poll_table *poll_table);
2707
2708 diff --git a/kernel/cgroup.c b/kernel/cgroup.c
2709 index ceee0c54c6a4..073226b3dfb0 100644
2710 --- a/kernel/cgroup.c
2711 +++ b/kernel/cgroup.c
2712 @@ -1484,10 +1484,13 @@ static struct dentry *cgroup_mount(struct file_system_type *fs_type,
2713 int flags, const char *unused_dev_name,
2714 void *data)
2715 {
2716 + struct super_block *pinned_sb = NULL;
2717 + struct cgroup_subsys *ss;
2718 struct cgroup_root *root;
2719 struct cgroup_sb_opts opts;
2720 struct dentry *dentry;
2721 int ret;
2722 + int i;
2723 bool new_sb;
2724
2725 /*
2726 @@ -1514,6 +1517,29 @@ retry:
2727 goto out_unlock;
2728 }
2729
2730 + /*
2731 + * Destruction of cgroup root is asynchronous, so subsystems may
2732 + * still be dying after the previous unmount. Let's drain the
2733 + * dying subsystems. We just need to ensure that the ones
2734 + * unmounted previously finish dying and don't care about new ones
2735 + * starting. Testing ref liveliness is good enough.
2736 + */
2737 + for_each_subsys(ss, i) {
2738 + if (!(opts.subsys_mask & (1 << i)) ||
2739 + ss->root == &cgrp_dfl_root)
2740 + continue;
2741 +
2742 + if (!atomic_inc_not_zero(&ss->root->cgrp.refcnt)) {
2743 + mutex_unlock(&cgroup_mutex);
2744 + mutex_unlock(&cgroup_tree_mutex);
2745 + msleep(10);
2746 + mutex_lock(&cgroup_tree_mutex);
2747 + mutex_lock(&cgroup_mutex);
2748 + goto retry;
2749 + }
2750 + cgroup_put(&ss->root->cgrp);
2751 + }
2752 +
2753 for_each_root(root) {
2754 bool name_match = false;
2755
2756 @@ -1559,10 +1585,25 @@ retry:
2757 * destruction to complete so that the subsystems are free.
2758 * We can use wait_queue for the wait but this path is
2759 * super cold. Let's just sleep for a bit and retry.
2760 +
2761 + * We want to reuse @root whose lifetime is governed by its
2762 + * ->cgrp. Let's check whether @root is alive and keep it
2763 + * that way. As cgroup_kill_sb() can happen anytime, we
2764 + * want to block it by pinning the sb so that @root doesn't
2765 + * get killed before mount is complete.
2766 + *
2767 + * With the sb pinned, inc_not_zero can reliably indicate
2768 + * whether @root can be reused. If it's being killed,
2769 + * drain it. We can use wait_queue for the wait but this
2770 + * path is super cold. Let's just sleep a bit and retry.
2771 */
2772 - if (!atomic_inc_not_zero(&root->cgrp.refcnt)) {
2773 + pinned_sb = kernfs_pin_sb(root->kf_root, NULL);
2774 + if (IS_ERR(pinned_sb) ||
2775 + !atomic_inc_not_zero(&root->cgrp.refcnt)) {
2776 mutex_unlock(&cgroup_mutex);
2777 mutex_unlock(&cgroup_tree_mutex);
2778 + if (!IS_ERR_OR_NULL(pinned_sb))
2779 + deactivate_super(pinned_sb);
2780 msleep(10);
2781 mutex_lock(&cgroup_tree_mutex);
2782 mutex_lock(&cgroup_mutex);
2783 @@ -1609,6 +1650,16 @@ out_unlock:
2784 CGROUP_SUPER_MAGIC, &new_sb);
2785 if (IS_ERR(dentry) || !new_sb)
2786 cgroup_put(&root->cgrp);
2787 +
2788 + /*
2789 + * If @pinned_sb, we're reusing an existing root and holding an
2790 + * extra ref on its sb. Mount is complete. Put the extra ref.
2791 + */
2792 + if (pinned_sb) {
2793 + WARN_ON(new_sb);
2794 + deactivate_super(pinned_sb);
2795 + }
2796 +
2797 return dentry;
2798 }
2799
2800 diff --git a/kernel/cpuset.c b/kernel/cpuset.c
2801 index 3d54c418bd06..a735402837ac 100644
2802 --- a/kernel/cpuset.c
2803 +++ b/kernel/cpuset.c
2804 @@ -1188,7 +1188,13 @@ done:
2805
2806 int current_cpuset_is_being_rebound(void)
2807 {
2808 - return task_cs(current) == cpuset_being_rebound;
2809 + int ret;
2810 +
2811 + rcu_read_lock();
2812 + ret = task_cs(current) == cpuset_being_rebound;
2813 + rcu_read_unlock();
2814 +
2815 + return ret;
2816 }
2817
2818 static int update_relax_domain_level(struct cpuset *cs, s64 val)
2819 diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
2820 index c634868c2921..7c56c3d06943 100644
2821 --- a/kernel/trace/ring_buffer.c
2822 +++ b/kernel/trace/ring_buffer.c
2823 @@ -543,7 +543,7 @@ static void rb_wake_up_waiters(struct irq_work *work)
2824 * as data is added to any of the @buffer's cpu buffers. Otherwise
2825 * it will wait for data to be added to a specific cpu buffer.
2826 */
2827 -void ring_buffer_wait(struct ring_buffer *buffer, int cpu)
2828 +int ring_buffer_wait(struct ring_buffer *buffer, int cpu)
2829 {
2830 struct ring_buffer_per_cpu *cpu_buffer;
2831 DEFINE_WAIT(wait);
2832 @@ -557,6 +557,8 @@ void ring_buffer_wait(struct ring_buffer *buffer, int cpu)
2833 if (cpu == RING_BUFFER_ALL_CPUS)
2834 work = &buffer->irq_work;
2835 else {
2836 + if (!cpumask_test_cpu(cpu, buffer->cpumask))
2837 + return -ENODEV;
2838 cpu_buffer = buffer->buffers[cpu];
2839 work = &cpu_buffer->irq_work;
2840 }
2841 @@ -591,6 +593,7 @@ void ring_buffer_wait(struct ring_buffer *buffer, int cpu)
2842 schedule();
2843
2844 finish_wait(&work->waiters, &wait);
2845 + return 0;
2846 }
2847
2848 /**
2849 diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
2850 index 1848dc6278b7..39a12265c253 100644
2851 --- a/kernel/trace/trace.c
2852 +++ b/kernel/trace/trace.c
2853 @@ -1103,13 +1103,13 @@ update_max_tr_single(struct trace_array *tr, struct task_struct *tsk, int cpu)
2854 }
2855 #endif /* CONFIG_TRACER_MAX_TRACE */
2856
2857 -static void default_wait_pipe(struct trace_iterator *iter)
2858 +static int default_wait_pipe(struct trace_iterator *iter)
2859 {
2860 /* Iterators are static, they should be filled or empty */
2861 if (trace_buffer_iter(iter, iter->cpu_file))
2862 - return;
2863 + return 0;
2864
2865 - ring_buffer_wait(iter->trace_buffer->buffer, iter->cpu_file);
2866 + return ring_buffer_wait(iter->trace_buffer->buffer, iter->cpu_file);
2867 }
2868
2869 #ifdef CONFIG_FTRACE_STARTUP_TEST
2870 @@ -4236,17 +4236,19 @@ tracing_poll_pipe(struct file *filp, poll_table *poll_table)
2871 *
2872 * Anyway, this is really very primitive wakeup.
2873 */
2874 -void poll_wait_pipe(struct trace_iterator *iter)
2875 +int poll_wait_pipe(struct trace_iterator *iter)
2876 {
2877 set_current_state(TASK_INTERRUPTIBLE);
2878 /* sleep for 100 msecs, and try again. */
2879 schedule_timeout(HZ / 10);
2880 + return 0;
2881 }
2882
2883 /* Must be called with trace_types_lock mutex held. */
2884 static int tracing_wait_pipe(struct file *filp)
2885 {
2886 struct trace_iterator *iter = filp->private_data;
2887 + int ret;
2888
2889 while (trace_empty(iter)) {
2890
2891 @@ -4256,10 +4258,13 @@ static int tracing_wait_pipe(struct file *filp)
2892
2893 mutex_unlock(&iter->mutex);
2894
2895 - iter->trace->wait_pipe(iter);
2896 + ret = iter->trace->wait_pipe(iter);
2897
2898 mutex_lock(&iter->mutex);
2899
2900 + if (ret)
2901 + return ret;
2902 +
2903 if (signal_pending(current))
2904 return -EINTR;
2905
2906 @@ -5196,8 +5201,12 @@ tracing_buffers_read(struct file *filp, char __user *ubuf,
2907 goto out_unlock;
2908 }
2909 mutex_unlock(&trace_types_lock);
2910 - iter->trace->wait_pipe(iter);
2911 + ret = iter->trace->wait_pipe(iter);
2912 mutex_lock(&trace_types_lock);
2913 + if (ret) {
2914 + size = ret;
2915 + goto out_unlock;
2916 + }
2917 if (signal_pending(current)) {
2918 size = -EINTR;
2919 goto out_unlock;
2920 @@ -5407,8 +5416,10 @@ tracing_buffers_splice_read(struct file *file, loff_t *ppos,
2921 goto out;
2922 }
2923 mutex_unlock(&trace_types_lock);
2924 - iter->trace->wait_pipe(iter);
2925 + ret = iter->trace->wait_pipe(iter);
2926 mutex_lock(&trace_types_lock);
2927 + if (ret)
2928 + goto out;
2929 if (signal_pending(current)) {
2930 ret = -EINTR;
2931 goto out;
2932 diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
2933 index 2e29d7ba5a52..99676cd9e28a 100644
2934 --- a/kernel/trace/trace.h
2935 +++ b/kernel/trace/trace.h
2936 @@ -342,7 +342,7 @@ struct tracer {
2937 void (*stop)(struct trace_array *tr);
2938 void (*open)(struct trace_iterator *iter);
2939 void (*pipe_open)(struct trace_iterator *iter);
2940 - void (*wait_pipe)(struct trace_iterator *iter);
2941 + int (*wait_pipe)(struct trace_iterator *iter);
2942 void (*close)(struct trace_iterator *iter);
2943 void (*pipe_close)(struct trace_iterator *iter);
2944 ssize_t (*read)(struct trace_iterator *iter,
2945 @@ -560,7 +560,7 @@ void trace_init_global_iter(struct trace_iterator *iter);
2946
2947 void tracing_iter_reset(struct trace_iterator *iter, int cpu);
2948
2949 -void poll_wait_pipe(struct trace_iterator *iter);
2950 +int poll_wait_pipe(struct trace_iterator *iter);
2951
2952 void tracing_sched_switch_trace(struct trace_array *tr,
2953 struct task_struct *prev,
2954 diff --git a/kernel/workqueue.c b/kernel/workqueue.c
2955 index 8edc87185427..7ba589779a6b 100644
2956 --- a/kernel/workqueue.c
2957 +++ b/kernel/workqueue.c
2958 @@ -3422,6 +3422,7 @@ int workqueue_sysfs_register(struct workqueue_struct *wq)
2959 }
2960 }
2961
2962 + dev_set_uevent_suppress(&wq_dev->dev, false);
2963 kobject_uevent(&wq_dev->dev.kobj, KOBJ_ADD);
2964 return 0;
2965 }
2966 @@ -5033,7 +5034,7 @@ static void __init wq_numa_init(void)
2967 BUG_ON(!tbl);
2968
2969 for_each_node(node)
2970 - BUG_ON(!alloc_cpumask_var_node(&tbl[node], GFP_KERNEL,
2971 + BUG_ON(!zalloc_cpumask_var_node(&tbl[node], GFP_KERNEL,
2972 node_online(node) ? node : NUMA_NO_NODE));
2973
2974 for_each_possible_cpu(cpu) {
2975 diff --git a/mm/mempolicy.c b/mm/mempolicy.c
2976 index 35f9f91278fd..6b65d10f0df8 100644
2977 --- a/mm/mempolicy.c
2978 +++ b/mm/mempolicy.c
2979 @@ -2136,7 +2136,6 @@ struct mempolicy *__mpol_dup(struct mempolicy *old)
2980 } else
2981 *new = *old;
2982
2983 - rcu_read_lock();
2984 if (current_cpuset_is_being_rebound()) {
2985 nodemask_t mems = cpuset_mems_allowed(current);
2986 if (new->flags & MPOL_F_REBINDING)
2987 @@ -2144,7 +2143,6 @@ struct mempolicy *__mpol_dup(struct mempolicy *old)
2988 else
2989 mpol_rebind_policy(new, &mems, MPOL_REBIND_ONCE);
2990 }
2991 - rcu_read_unlock();
2992 atomic_set(&new->refcnt, 1);
2993 return new;
2994 }