Magellan Linux

Contents of /trunk/kernel-alx-legacy/patches-4.9/0161-4.9.62-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3608 - (show annotations) (download)
Fri Aug 14 07:34:29 2020 UTC (3 years, 8 months ago) by niro
File size: 97221 byte(s)
-added kerenl-alx-legacy pkg
1 diff --git a/Documentation/devicetree/bindings/arm/davinci.txt b/Documentation/devicetree/bindings/arm/davinci.txt
2 index f0841ce725b5..715622c36260 100644
3 --- a/Documentation/devicetree/bindings/arm/davinci.txt
4 +++ b/Documentation/devicetree/bindings/arm/davinci.txt
5 @@ -13,6 +13,10 @@ EnBW AM1808 based CMC board
6 Required root node properties:
7 - compatible = "enbw,cmc", "ti,da850;
8
9 +LEGO MINDSTORMS EV3 (AM1808 based)
10 +Required root node properties:
11 + - compatible = "lego,ev3", "ti,da850";
12 +
13 Generic DaVinci Boards
14 ----------------------
15
16 diff --git a/Documentation/devicetree/bindings/clock/qoriq-clock.txt b/Documentation/devicetree/bindings/clock/qoriq-clock.txt
17 index 16a3ec433119..1bd2c76396f4 100644
18 --- a/Documentation/devicetree/bindings/clock/qoriq-clock.txt
19 +++ b/Documentation/devicetree/bindings/clock/qoriq-clock.txt
20 @@ -31,6 +31,7 @@ Required properties:
21 * "fsl,t4240-clockgen"
22 * "fsl,b4420-clockgen"
23 * "fsl,b4860-clockgen"
24 + * "fsl,ls1012a-clockgen"
25 * "fsl,ls1021a-clockgen"
26 Chassis-version clock strings include:
27 * "fsl,qoriq-clockgen-1.0": for chassis 1.0 clocks
28 diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
29 index bceffffb7502..f949a22bcd74 100644
30 --- a/Documentation/devicetree/bindings/vendor-prefixes.txt
31 +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
32 @@ -154,6 +154,7 @@ kosagi Sutajio Ko-Usagi PTE Ltd.
33 kyo Kyocera Corporation
34 lacie LaCie
35 lantiq Lantiq Semiconductor
36 +lego LEGO Systems A/S
37 lenovo Lenovo Group Ltd.
38 lg LG Corporation
39 linux Linux-specific binding
40 diff --git a/Makefile b/Makefile
41 index b56b99e20b30..8ab48891d088 100644
42 --- a/Makefile
43 +++ b/Makefile
44 @@ -1,6 +1,6 @@
45 VERSION = 4
46 PATCHLEVEL = 9
47 -SUBLEVEL = 61
48 +SUBLEVEL = 62
49 EXTRAVERSION =
50 NAME = Roaring Lionus
51
52 diff --git a/arch/arm/boot/dts/imx53-qsb-common.dtsi b/arch/arm/boot/dts/imx53-qsb-common.dtsi
53 index c05e7cfd0cbc..40b3e31935d0 100644
54 --- a/arch/arm/boot/dts/imx53-qsb-common.dtsi
55 +++ b/arch/arm/boot/dts/imx53-qsb-common.dtsi
56 @@ -215,16 +215,16 @@
57
58 pinctrl_fec: fecgrp {
59 fsl,pins = <
60 - MX53_PAD_FEC_MDC__FEC_MDC 0x80000000
61 - MX53_PAD_FEC_MDIO__FEC_MDIO 0x80000000
62 - MX53_PAD_FEC_REF_CLK__FEC_TX_CLK 0x80000000
63 - MX53_PAD_FEC_RX_ER__FEC_RX_ER 0x80000000
64 - MX53_PAD_FEC_CRS_DV__FEC_RX_DV 0x80000000
65 - MX53_PAD_FEC_RXD1__FEC_RDATA_1 0x80000000
66 - MX53_PAD_FEC_RXD0__FEC_RDATA_0 0x80000000
67 - MX53_PAD_FEC_TX_EN__FEC_TX_EN 0x80000000
68 - MX53_PAD_FEC_TXD1__FEC_TDATA_1 0x80000000
69 - MX53_PAD_FEC_TXD0__FEC_TDATA_0 0x80000000
70 + MX53_PAD_FEC_MDC__FEC_MDC 0x4
71 + MX53_PAD_FEC_MDIO__FEC_MDIO 0x1fc
72 + MX53_PAD_FEC_REF_CLK__FEC_TX_CLK 0x180
73 + MX53_PAD_FEC_RX_ER__FEC_RX_ER 0x180
74 + MX53_PAD_FEC_CRS_DV__FEC_RX_DV 0x180
75 + MX53_PAD_FEC_RXD1__FEC_RDATA_1 0x180
76 + MX53_PAD_FEC_RXD0__FEC_RDATA_0 0x180
77 + MX53_PAD_FEC_TX_EN__FEC_TX_EN 0x4
78 + MX53_PAD_FEC_TXD1__FEC_TDATA_1 0x4
79 + MX53_PAD_FEC_TXD0__FEC_TDATA_0 0x4
80 >;
81 };
82
83 diff --git a/arch/arm/boot/dts/stih410.dtsi b/arch/arm/boot/dts/stih410.dtsi
84 index a3ef7341c051..4d329b2908be 100644
85 --- a/arch/arm/boot/dts/stih410.dtsi
86 +++ b/arch/arm/boot/dts/stih410.dtsi
87 @@ -131,7 +131,7 @@
88 <&clk_s_d2_quadfs 0>;
89
90 assigned-clock-rates = <297000000>,
91 - <108000000>,
92 + <297000000>,
93 <0>,
94 <400000000>,
95 <400000000>;
96 diff --git a/arch/arm/configs/omap2plus_defconfig b/arch/arm/configs/omap2plus_defconfig
97 index 53e1a884a1ea..66d71963761d 100644
98 --- a/arch/arm/configs/omap2plus_defconfig
99 +++ b/arch/arm/configs/omap2plus_defconfig
100 @@ -216,6 +216,7 @@ CONFIG_SERIO=m
101 CONFIG_SERIAL_8250=y
102 CONFIG_SERIAL_8250_CONSOLE=y
103 CONFIG_SERIAL_8250_NR_UARTS=32
104 +CONFIG_SERIAL_8250_RUNTIME_UARTS=6
105 CONFIG_SERIAL_8250_EXTENDED=y
106 CONFIG_SERIAL_8250_MANY_PORTS=y
107 CONFIG_SERIAL_8250_SHARE_IRQ=y
108 diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
109 index 9688ec0c6ef4..1b304897aa12 100644
110 --- a/arch/arm/kernel/traps.c
111 +++ b/arch/arm/kernel/traps.c
112 @@ -152,30 +152,26 @@ static void dump_mem(const char *lvl, const char *str, unsigned long bottom,
113 set_fs(fs);
114 }
115
116 -static void dump_instr(const char *lvl, struct pt_regs *regs)
117 +static void __dump_instr(const char *lvl, struct pt_regs *regs)
118 {
119 unsigned long addr = instruction_pointer(regs);
120 const int thumb = thumb_mode(regs);
121 const int width = thumb ? 4 : 8;
122 - mm_segment_t fs;
123 char str[sizeof("00000000 ") * 5 + 2 + 1], *p = str;
124 int i;
125
126 /*
127 - * We need to switch to kernel mode so that we can use __get_user
128 - * to safely read from kernel space. Note that we now dump the
129 - * code first, just in case the backtrace kills us.
130 + * Note that we now dump the code first, just in case the backtrace
131 + * kills us.
132 */
133 - fs = get_fs();
134 - set_fs(KERNEL_DS);
135
136 for (i = -4; i < 1 + !!thumb; i++) {
137 unsigned int val, bad;
138
139 if (thumb)
140 - bad = __get_user(val, &((u16 *)addr)[i]);
141 + bad = get_user(val, &((u16 *)addr)[i]);
142 else
143 - bad = __get_user(val, &((u32 *)addr)[i]);
144 + bad = get_user(val, &((u32 *)addr)[i]);
145
146 if (!bad)
147 p += sprintf(p, i == 0 ? "(%0*x) " : "%0*x ",
148 @@ -186,8 +182,20 @@ static void dump_instr(const char *lvl, struct pt_regs *regs)
149 }
150 }
151 printk("%sCode: %s\n", lvl, str);
152 +}
153
154 - set_fs(fs);
155 +static void dump_instr(const char *lvl, struct pt_regs *regs)
156 +{
157 + mm_segment_t fs;
158 +
159 + if (!user_mode(regs)) {
160 + fs = get_fs();
161 + set_fs(KERNEL_DS);
162 + __dump_instr(lvl, regs);
163 + set_fs(fs);
164 + } else {
165 + __dump_instr(lvl, regs);
166 + }
167 }
168
169 #ifdef CONFIG_ARM_UNWIND
170 diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c
171 index b5bf46ce873b..cab3574ab7d9 100644
172 --- a/arch/arm64/mm/dma-mapping.c
173 +++ b/arch/arm64/mm/dma-mapping.c
174 @@ -836,14 +836,21 @@ static bool do_iommu_attach(struct device *dev, const struct iommu_ops *ops,
175 * then the IOMMU core will have already configured a group for this
176 * device, and allocated the default domain for that group.
177 */
178 - if (!domain || iommu_dma_init_domain(domain, dma_base, size, dev)) {
179 - pr_warn("Failed to set up IOMMU for device %s; retaining platform DMA ops\n",
180 - dev_name(dev));
181 - return false;
182 + if (!domain)
183 + goto out_err;
184 +
185 + if (domain->type == IOMMU_DOMAIN_DMA) {
186 + if (iommu_dma_init_domain(domain, dma_base, size, dev))
187 + goto out_err;
188 +
189 + dev->archdata.dma_ops = &iommu_dma_ops;
190 }
191
192 - dev->archdata.dma_ops = &iommu_dma_ops;
193 return true;
194 +out_err:
195 + pr_warn("Failed to set up IOMMU for device %s; retaining platform DMA ops\n",
196 + dev_name(dev));
197 + return false;
198 }
199
200 static void queue_iommu_attach(struct device *dev, const struct iommu_ops *ops,
201 diff --git a/arch/mips/ar7/platform.c b/arch/mips/ar7/platform.c
202 index 58fca9ad5fcc..3446b6fb3acb 100644
203 --- a/arch/mips/ar7/platform.c
204 +++ b/arch/mips/ar7/platform.c
205 @@ -576,6 +576,7 @@ static int __init ar7_register_uarts(void)
206 uart_port.type = PORT_AR7;
207 uart_port.uartclk = clk_get_rate(bus_clk) / 2;
208 uart_port.iotype = UPIO_MEM32;
209 + uart_port.flags = UPF_FIXED_TYPE;
210 uart_port.regshift = 2;
211
212 uart_port.line = 0;
213 @@ -654,6 +655,10 @@ static int __init ar7_register_devices(void)
214 u32 val;
215 int res;
216
217 + res = ar7_gpio_init();
218 + if (res)
219 + pr_warn("unable to register gpios: %d\n", res);
220 +
221 res = ar7_register_uarts();
222 if (res)
223 pr_err("unable to setup uart(s): %d\n", res);
224 diff --git a/arch/mips/ar7/prom.c b/arch/mips/ar7/prom.c
225 index a23adc49d50f..36aabee9cba4 100644
226 --- a/arch/mips/ar7/prom.c
227 +++ b/arch/mips/ar7/prom.c
228 @@ -246,8 +246,6 @@ void __init prom_init(void)
229 ar7_init_cmdline(fw_arg0, (char **)fw_arg1);
230 ar7_init_env((struct env_var *)fw_arg2);
231 console_config();
232 -
233 - ar7_gpio_init();
234 }
235
236 #define PORT(offset) (KSEG1ADDR(AR7_REGS_UART0 + (offset * 4)))
237 diff --git a/arch/mips/include/asm/mips-cm.h b/arch/mips/include/asm/mips-cm.h
238 index 2e4180797b21..b6845db453a3 100644
239 --- a/arch/mips/include/asm/mips-cm.h
240 +++ b/arch/mips/include/asm/mips-cm.h
241 @@ -239,8 +239,8 @@ BUILD_CM_Cx_R_(tcid_8_priority, 0x80)
242 #define CM_GCR_BASE_GCRBASE_MSK (_ULCAST_(0x1ffff) << 15)
243 #define CM_GCR_BASE_CMDEFTGT_SHF 0
244 #define CM_GCR_BASE_CMDEFTGT_MSK (_ULCAST_(0x3) << 0)
245 -#define CM_GCR_BASE_CMDEFTGT_DISABLED 0
246 -#define CM_GCR_BASE_CMDEFTGT_MEM 1
247 +#define CM_GCR_BASE_CMDEFTGT_MEM 0
248 +#define CM_GCR_BASE_CMDEFTGT_RESERVED 1
249 #define CM_GCR_BASE_CMDEFTGT_IOCU0 2
250 #define CM_GCR_BASE_CMDEFTGT_IOCU1 3
251
252 diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
253 index 1b50958a1373..c558bce989cd 100644
254 --- a/arch/mips/kernel/process.c
255 +++ b/arch/mips/kernel/process.c
256 @@ -50,9 +50,7 @@
257 #ifdef CONFIG_HOTPLUG_CPU
258 void arch_cpu_idle_dead(void)
259 {
260 - /* What the heck is this check doing ? */
261 - if (!cpumask_test_cpu(smp_processor_id(), &cpu_callin_map))
262 - play_dead();
263 + play_dead();
264 }
265 #endif
266
267 diff --git a/arch/mips/kernel/smp-bmips.c b/arch/mips/kernel/smp-bmips.c
268 index 6d0f1321e084..47c9646f93b3 100644
269 --- a/arch/mips/kernel/smp-bmips.c
270 +++ b/arch/mips/kernel/smp-bmips.c
271 @@ -587,11 +587,11 @@ void __init bmips_cpu_setup(void)
272
273 /* Flush and enable RAC */
274 cfg = __raw_readl(cbr + BMIPS_RAC_CONFIG);
275 - __raw_writel(cfg | 0x100, BMIPS_RAC_CONFIG);
276 + __raw_writel(cfg | 0x100, cbr + BMIPS_RAC_CONFIG);
277 __raw_readl(cbr + BMIPS_RAC_CONFIG);
278
279 cfg = __raw_readl(cbr + BMIPS_RAC_CONFIG);
280 - __raw_writel(cfg | 0xf, BMIPS_RAC_CONFIG);
281 + __raw_writel(cfg | 0xf, cbr + BMIPS_RAC_CONFIG);
282 __raw_readl(cbr + BMIPS_RAC_CONFIG);
283
284 cfg = __raw_readl(cbr + BMIPS_RAC_ADDRESS_RANGE);
285 diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
286 index 7ebb1918e2ac..95ba4271af6a 100644
287 --- a/arch/mips/kernel/smp.c
288 +++ b/arch/mips/kernel/smp.c
289 @@ -68,6 +68,9 @@ EXPORT_SYMBOL(cpu_sibling_map);
290 cpumask_t cpu_core_map[NR_CPUS] __read_mostly;
291 EXPORT_SYMBOL(cpu_core_map);
292
293 +static DECLARE_COMPLETION(cpu_starting);
294 +static DECLARE_COMPLETION(cpu_running);
295 +
296 /*
297 * A logcal cpu mask containing only one VPE per core to
298 * reduce the number of IPIs on large MT systems.
299 @@ -369,9 +372,12 @@ asmlinkage void start_secondary(void)
300 cpumask_set_cpu(cpu, &cpu_coherent_mask);
301 notify_cpu_starting(cpu);
302
303 - cpumask_set_cpu(cpu, &cpu_callin_map);
304 + /* Notify boot CPU that we're starting & ready to sync counters */
305 + complete(&cpu_starting);
306 +
307 synchronise_count_slave(cpu);
308
309 + /* The CPU is running and counters synchronised, now mark it online */
310 set_cpu_online(cpu, true);
311
312 set_cpu_sibling_map(cpu);
313 @@ -379,6 +385,12 @@ asmlinkage void start_secondary(void)
314
315 calculate_cpu_foreign_map();
316
317 + /*
318 + * Notify boot CPU that we're up & online and it can safely return
319 + * from __cpu_up
320 + */
321 + complete(&cpu_running);
322 +
323 /*
324 * irq will be enabled in ->smp_finish(), enabling it too early
325 * is dangerous.
326 @@ -430,22 +442,23 @@ void smp_prepare_boot_cpu(void)
327 {
328 set_cpu_possible(0, true);
329 set_cpu_online(0, true);
330 - cpumask_set_cpu(0, &cpu_callin_map);
331 }
332
333 int __cpu_up(unsigned int cpu, struct task_struct *tidle)
334 {
335 mp_ops->boot_secondary(cpu, tidle);
336
337 - /*
338 - * Trust is futile. We should really have timeouts ...
339 - */
340 - while (!cpumask_test_cpu(cpu, &cpu_callin_map)) {
341 - udelay(100);
342 - schedule();
343 + /* Wait for CPU to start and be ready to sync counters */
344 + if (!wait_for_completion_timeout(&cpu_starting,
345 + msecs_to_jiffies(1000))) {
346 + pr_crit("CPU%u: failed to start\n", cpu);
347 + return -EIO;
348 }
349
350 synchronise_count_master(cpu);
351 +
352 + /* Wait for CPU to finish startup & mark itself online before return */
353 + wait_for_completion(&cpu_running);
354 return 0;
355 }
356
357 diff --git a/arch/mips/mm/uasm-micromips.c b/arch/mips/mm/uasm-micromips.c
358 index 277cf52d80e1..6c17cba7f383 100644
359 --- a/arch/mips/mm/uasm-micromips.c
360 +++ b/arch/mips/mm/uasm-micromips.c
361 @@ -80,7 +80,7 @@ static struct insn insn_table_MM[] = {
362 { insn_jr, M(mm_pool32a_op, 0, 0, 0, mm_jalr_op, mm_pool32axf_op), RS },
363 { insn_lb, M(mm_lb32_op, 0, 0, 0, 0, 0), RT | RS | SIMM },
364 { insn_ld, 0, 0 },
365 - { insn_lh, M(mm_lh32_op, 0, 0, 0, 0, 0), RS | RS | SIMM },
366 + { insn_lh, M(mm_lh32_op, 0, 0, 0, 0, 0), RT | RS | SIMM },
367 { insn_ll, M(mm_pool32c_op, 0, 0, (mm_ll_func << 1), 0, 0), RS | RT | SIMM },
368 { insn_lld, 0, 0 },
369 { insn_lui, M(mm_pool32i_op, mm_lui_op, 0, 0, 0, 0), RS | SIMM },
370 diff --git a/arch/powerpc/boot/dts/fsl/kmcoge4.dts b/arch/powerpc/boot/dts/fsl/kmcoge4.dts
371 index ae70a24094b0..e103c0f3f650 100644
372 --- a/arch/powerpc/boot/dts/fsl/kmcoge4.dts
373 +++ b/arch/powerpc/boot/dts/fsl/kmcoge4.dts
374 @@ -83,6 +83,10 @@
375 };
376 };
377
378 + sdhc@114000 {
379 + status = "disabled";
380 + };
381 +
382 i2c@119000 {
383 status = "disabled";
384 };
385 diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
386 index bc3f7d0d7b79..f1d7e996e673 100644
387 --- a/arch/powerpc/kernel/time.c
388 +++ b/arch/powerpc/kernel/time.c
389 @@ -407,6 +407,7 @@ void arch_vtime_task_switch(struct task_struct *prev)
390 struct cpu_accounting_data *acct = get_accounting(current);
391
392 acct->starttime = get_accounting(prev)->starttime;
393 + acct->startspurr = get_accounting(prev)->startspurr;
394 acct->system_time = 0;
395 acct->user_time = 0;
396 }
397 diff --git a/arch/powerpc/kvm/book3s_hv_rm_xics.c b/arch/powerpc/kvm/book3s_hv_rm_xics.c
398 index a0ea63ac2b52..a8e3498a853f 100644
399 --- a/arch/powerpc/kvm/book3s_hv_rm_xics.c
400 +++ b/arch/powerpc/kvm/book3s_hv_rm_xics.c
401 @@ -376,6 +376,7 @@ static void icp_rm_deliver_irq(struct kvmppc_xics *xics, struct kvmppc_icp *icp,
402 */
403 if (reject && reject != XICS_IPI) {
404 arch_spin_unlock(&ics->lock);
405 + icp->n_reject++;
406 new_irq = reject;
407 goto again;
408 }
409 @@ -707,10 +708,8 @@ int kvmppc_rm_h_eoi(struct kvm_vcpu *vcpu, unsigned long xirr)
410 state = &ics->irq_state[src];
411
412 /* Still asserted, resend it */
413 - if (state->asserted) {
414 - icp->n_reject++;
415 + if (state->asserted)
416 icp_rm_deliver_irq(xics, icp, irq);
417 - }
418
419 if (!hlist_empty(&vcpu->kvm->irq_ack_notifier_list)) {
420 icp->rm_action |= XICS_RM_NOTIFY_EOI;
421 diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c
422 index 2374c5b46bbc..0c196861bc38 100644
423 --- a/arch/s390/kernel/early.c
424 +++ b/arch/s390/kernel/early.c
425 @@ -363,6 +363,18 @@ static inline void save_vector_registers(void)
426 #endif
427 }
428
429 +static int __init topology_setup(char *str)
430 +{
431 + bool enabled;
432 + int rc;
433 +
434 + rc = kstrtobool(str, &enabled);
435 + if (!rc && !enabled)
436 + S390_lowcore.machine_flags &= ~MACHINE_HAS_TOPOLOGY;
437 + return rc;
438 +}
439 +early_param("topology", topology_setup);
440 +
441 static int __init disable_vector_extension(char *str)
442 {
443 S390_lowcore.machine_flags &= ~MACHINE_FLAG_VX;
444 diff --git a/arch/s390/kernel/topology.c b/arch/s390/kernel/topology.c
445 index 8705ee66c087..239f29508f0b 100644
446 --- a/arch/s390/kernel/topology.c
447 +++ b/arch/s390/kernel/topology.c
448 @@ -37,7 +37,6 @@ static void set_topology_timer(void);
449 static void topology_work_fn(struct work_struct *work);
450 static struct sysinfo_15_1_x *tl_info;
451
452 -static bool topology_enabled = true;
453 static DECLARE_WORK(topology_work, topology_work_fn);
454
455 /*
456 @@ -56,7 +55,7 @@ static cpumask_t cpu_group_map(struct mask_info *info, unsigned int cpu)
457 cpumask_t mask;
458
459 cpumask_copy(&mask, cpumask_of(cpu));
460 - if (!topology_enabled || !MACHINE_HAS_TOPOLOGY)
461 + if (!MACHINE_HAS_TOPOLOGY)
462 return mask;
463 for (; info; info = info->next) {
464 if (cpumask_test_cpu(cpu, &info->mask))
465 @@ -71,7 +70,7 @@ static cpumask_t cpu_thread_map(unsigned int cpu)
466 int i;
467
468 cpumask_copy(&mask, cpumask_of(cpu));
469 - if (!topology_enabled || !MACHINE_HAS_TOPOLOGY)
470 + if (!MACHINE_HAS_TOPOLOGY)
471 return mask;
472 cpu -= cpu % (smp_cpu_mtid + 1);
473 for (i = 0; i <= smp_cpu_mtid; i++)
474 @@ -413,12 +412,6 @@ static const struct cpumask *cpu_drawer_mask(int cpu)
475 return &per_cpu(cpu_topology, cpu).drawer_mask;
476 }
477
478 -static int __init early_parse_topology(char *p)
479 -{
480 - return kstrtobool(p, &topology_enabled);
481 -}
482 -early_param("topology", early_parse_topology);
483 -
484 static struct sched_domain_topology_level s390_topology[] = {
485 { cpu_thread_mask, cpu_smt_flags, SD_INIT_NAME(SMT) },
486 { cpu_coregroup_mask, cpu_core_flags, SD_INIT_NAME(MC) },
487 diff --git a/arch/sh/kernel/cpu/sh3/setup-sh770x.c b/arch/sh/kernel/cpu/sh3/setup-sh770x.c
488 index 538c10db3537..8dc315b212c2 100644
489 --- a/arch/sh/kernel/cpu/sh3/setup-sh770x.c
490 +++ b/arch/sh/kernel/cpu/sh3/setup-sh770x.c
491 @@ -165,7 +165,6 @@ static struct plat_sci_port scif2_platform_data = {
492 .scscr = SCSCR_TE | SCSCR_RE,
493 .type = PORT_IRDA,
494 .ops = &sh770x_sci_port_ops,
495 - .regshift = 1,
496 };
497
498 static struct resource scif2_resources[] = {
499 diff --git a/arch/x86/crypto/sha1-mb/sha1_mb_mgr_flush_avx2.S b/arch/x86/crypto/sha1-mb/sha1_mb_mgr_flush_avx2.S
500 index 96df6a39d7e2..a2ae6891e1fc 100644
501 --- a/arch/x86/crypto/sha1-mb/sha1_mb_mgr_flush_avx2.S
502 +++ b/arch/x86/crypto/sha1-mb/sha1_mb_mgr_flush_avx2.S
503 @@ -157,8 +157,8 @@ LABEL skip_ %I
504 .endr
505
506 # Find min length
507 - vmovdqa _lens+0*16(state), %xmm0
508 - vmovdqa _lens+1*16(state), %xmm1
509 + vmovdqu _lens+0*16(state), %xmm0
510 + vmovdqu _lens+1*16(state), %xmm1
511
512 vpminud %xmm1, %xmm0, %xmm2 # xmm2 has {D,C,B,A}
513 vpalignr $8, %xmm2, %xmm3, %xmm3 # xmm3 has {x,x,D,C}
514 @@ -178,8 +178,8 @@ LABEL skip_ %I
515 vpsubd %xmm2, %xmm0, %xmm0
516 vpsubd %xmm2, %xmm1, %xmm1
517
518 - vmovdqa %xmm0, _lens+0*16(state)
519 - vmovdqa %xmm1, _lens+1*16(state)
520 + vmovdqu %xmm0, _lens+0*16(state)
521 + vmovdqu %xmm1, _lens+1*16(state)
522
523 # "state" and "args" are the same address, arg1
524 # len is arg2
525 @@ -235,8 +235,8 @@ ENTRY(sha1_mb_mgr_get_comp_job_avx2)
526 jc .return_null
527
528 # Find min length
529 - vmovdqa _lens(state), %xmm0
530 - vmovdqa _lens+1*16(state), %xmm1
531 + vmovdqu _lens(state), %xmm0
532 + vmovdqu _lens+1*16(state), %xmm1
533
534 vpminud %xmm1, %xmm0, %xmm2 # xmm2 has {D,C,B,A}
535 vpalignr $8, %xmm2, %xmm3, %xmm3 # xmm3 has {x,x,D,C}
536 diff --git a/arch/x86/crypto/sha256-mb/sha256_mb_mgr_flush_avx2.S b/arch/x86/crypto/sha256-mb/sha256_mb_mgr_flush_avx2.S
537 index a78a0694ddef..ec9bee661d50 100644
538 --- a/arch/x86/crypto/sha256-mb/sha256_mb_mgr_flush_avx2.S
539 +++ b/arch/x86/crypto/sha256-mb/sha256_mb_mgr_flush_avx2.S
540 @@ -155,8 +155,8 @@ LABEL skip_ %I
541 .endr
542
543 # Find min length
544 - vmovdqa _lens+0*16(state), %xmm0
545 - vmovdqa _lens+1*16(state), %xmm1
546 + vmovdqu _lens+0*16(state), %xmm0
547 + vmovdqu _lens+1*16(state), %xmm1
548
549 vpminud %xmm1, %xmm0, %xmm2 # xmm2 has {D,C,B,A}
550 vpalignr $8, %xmm2, %xmm3, %xmm3 # xmm3 has {x,x,D,C}
551 @@ -176,8 +176,8 @@ LABEL skip_ %I
552 vpsubd %xmm2, %xmm0, %xmm0
553 vpsubd %xmm2, %xmm1, %xmm1
554
555 - vmovdqa %xmm0, _lens+0*16(state)
556 - vmovdqa %xmm1, _lens+1*16(state)
557 + vmovdqu %xmm0, _lens+0*16(state)
558 + vmovdqu %xmm1, _lens+1*16(state)
559
560 # "state" and "args" are the same address, arg1
561 # len is arg2
562 @@ -234,8 +234,8 @@ ENTRY(sha256_mb_mgr_get_comp_job_avx2)
563 jc .return_null
564
565 # Find min length
566 - vmovdqa _lens(state), %xmm0
567 - vmovdqa _lens+1*16(state), %xmm1
568 + vmovdqu _lens(state), %xmm0
569 + vmovdqu _lens+1*16(state), %xmm1
570
571 vpminud %xmm1, %xmm0, %xmm2 # xmm2 has {D,C,B,A}
572 vpalignr $8, %xmm2, %xmm3, %xmm3 # xmm3 has {x,x,D,C}
573 diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
574 index a300aa10ebc5..dead0f3921f3 100644
575 --- a/arch/x86/include/asm/uaccess.h
576 +++ b/arch/x86/include/asm/uaccess.h
577 @@ -68,6 +68,12 @@ static inline bool __chk_range_not_ok(unsigned long addr, unsigned long size, un
578 __chk_range_not_ok((unsigned long __force)(addr), size, limit); \
579 })
580
581 +#ifdef CONFIG_DEBUG_ATOMIC_SLEEP
582 +# define WARN_ON_IN_IRQ() WARN_ON_ONCE(!in_task())
583 +#else
584 +# define WARN_ON_IN_IRQ()
585 +#endif
586 +
587 /**
588 * access_ok: - Checks if a user space pointer is valid
589 * @type: Type of access: %VERIFY_READ or %VERIFY_WRITE. Note that
590 @@ -88,8 +94,11 @@ static inline bool __chk_range_not_ok(unsigned long addr, unsigned long size, un
591 * checks that the pointer is in the user space range - after calling
592 * this function, memory access functions may still return -EFAULT.
593 */
594 -#define access_ok(type, addr, size) \
595 - likely(!__range_not_ok(addr, size, user_addr_max()))
596 +#define access_ok(type, addr, size) \
597 +({ \
598 + WARN_ON_IN_IRQ(); \
599 + likely(!__range_not_ok(addr, size, user_addr_max())); \
600 +})
601
602 /*
603 * These are the main single-value transfer routines. They automatically
604 diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
605 index 36171bcd91f8..9fe7b9e1ae30 100644
606 --- a/arch/x86/kernel/smpboot.c
607 +++ b/arch/x86/kernel/smpboot.c
608 @@ -180,6 +180,12 @@ static void smp_callin(void)
609 */
610 smp_store_cpu_info(cpuid);
611
612 + /*
613 + * The topology information must be up to date before
614 + * calibrate_delay() and notify_cpu_starting().
615 + */
616 + set_cpu_sibling_map(raw_smp_processor_id());
617 +
618 /*
619 * Get our bogomips.
620 * Update loops_per_jiffy in cpu_data. Previous call to
621 @@ -190,11 +196,6 @@ static void smp_callin(void)
622 cpu_data(cpuid).loops_per_jiffy = loops_per_jiffy;
623 pr_debug("Stack at about %p\n", &cpuid);
624
625 - /*
626 - * This must be done before setting cpu_online_mask
627 - * or calling notify_cpu_starting.
628 - */
629 - set_cpu_sibling_map(raw_smp_processor_id());
630 wmb();
631
632 notify_cpu_starting(cpuid);
633 diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
634 index 6e57edf33d75..44bf5cf417d3 100644
635 --- a/arch/x86/kernel/tsc.c
636 +++ b/arch/x86/kernel/tsc.c
637 @@ -1382,12 +1382,10 @@ void __init tsc_init(void)
638 unsigned long calibrate_delay_is_known(void)
639 {
640 int sibling, cpu = smp_processor_id();
641 - struct cpumask *mask = topology_core_cpumask(cpu);
642 + int constant_tsc = cpu_has(&cpu_data(cpu), X86_FEATURE_CONSTANT_TSC);
643 + const struct cpumask *mask = topology_core_cpumask(cpu);
644
645 - if (!tsc_disabled && !cpu_has(&cpu_data(cpu), X86_FEATURE_CONSTANT_TSC))
646 - return 0;
647 -
648 - if (!mask)
649 + if (tsc_disabled || !constant_tsc || !mask)
650 return 0;
651
652 sibling = cpumask_any_but(mask, cpu);
653 diff --git a/arch/x86/oprofile/op_model_ppro.c b/arch/x86/oprofile/op_model_ppro.c
654 index 350f7096baac..7913b6921959 100644
655 --- a/arch/x86/oprofile/op_model_ppro.c
656 +++ b/arch/x86/oprofile/op_model_ppro.c
657 @@ -212,8 +212,8 @@ static void arch_perfmon_setup_counters(void)
658 eax.full = cpuid_eax(0xa);
659
660 /* Workaround for BIOS bugs in 6/15. Taken from perfmon2 */
661 - if (eax.split.version_id == 0 && __this_cpu_read(cpu_info.x86) == 6 &&
662 - __this_cpu_read(cpu_info.x86_model) == 15) {
663 + if (eax.split.version_id == 0 && boot_cpu_data.x86 == 6 &&
664 + boot_cpu_data.x86_model == 15) {
665 eax.split.version_id = 2;
666 eax.split.num_counters = 2;
667 eax.split.bit_width = 40;
668 diff --git a/crypto/ccm.c b/crypto/ccm.c
669 index 006d8575ef5c..b3ace633fae9 100644
670 --- a/crypto/ccm.c
671 +++ b/crypto/ccm.c
672 @@ -413,7 +413,7 @@ static int crypto_ccm_decrypt(struct aead_request *req)
673 unsigned int cryptlen = req->cryptlen;
674 u8 *authtag = pctx->auth_tag;
675 u8 *odata = pctx->odata;
676 - u8 *iv = req->iv;
677 + u8 *iv = pctx->idata;
678 int err;
679
680 cryptlen -= authsize;
681 @@ -429,6 +429,8 @@ static int crypto_ccm_decrypt(struct aead_request *req)
682 if (req->src != req->dst)
683 dst = pctx->dst;
684
685 + memcpy(iv, req->iv, 16);
686 +
687 skcipher_request_set_tfm(skreq, ctx->ctr);
688 skcipher_request_set_callback(skreq, pctx->flags,
689 crypto_ccm_decrypt_done, req);
690 diff --git a/drivers/base/power/opp/of.c b/drivers/base/power/opp/of.c
691 index 5552211e6fcd..b52c617947ad 100644
692 --- a/drivers/base/power/opp/of.c
693 +++ b/drivers/base/power/opp/of.c
694 @@ -386,7 +386,7 @@ static int _of_add_opp_table_v1(struct device *dev)
695 {
696 const struct property *prop;
697 const __be32 *val;
698 - int nr;
699 + int nr, ret;
700
701 prop = of_find_property(dev->of_node, "operating-points", NULL);
702 if (!prop)
703 @@ -409,9 +409,13 @@ static int _of_add_opp_table_v1(struct device *dev)
704 unsigned long freq = be32_to_cpup(val++) * 1000;
705 unsigned long volt = be32_to_cpup(val++);
706
707 - if (_opp_add_v1(dev, freq, volt, false))
708 - dev_warn(dev, "%s: Failed to add OPP %ld\n",
709 - __func__, freq);
710 + ret = _opp_add_v1(dev, freq, volt, false);
711 + if (ret) {
712 + dev_err(dev, "%s: Failed to add OPP %ld (%d)\n",
713 + __func__, freq, ret);
714 + dev_pm_opp_of_remove_table(dev);
715 + return ret;
716 + }
717 nr -= 2;
718 }
719
720 diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
721 index 7b274ff4632c..24f4b544d270 100644
722 --- a/drivers/block/rbd.c
723 +++ b/drivers/block/rbd.c
724 @@ -2788,7 +2788,7 @@ static int rbd_img_obj_parent_read_full(struct rbd_obj_request *obj_request)
725 * from the parent.
726 */
727 page_count = (u32)calc_pages_for(0, length);
728 - pages = ceph_alloc_page_vector(page_count, GFP_KERNEL);
729 + pages = ceph_alloc_page_vector(page_count, GFP_NOIO);
730 if (IS_ERR(pages)) {
731 result = PTR_ERR(pages);
732 pages = NULL;
733 @@ -2922,7 +2922,7 @@ static int rbd_img_obj_exists_submit(struct rbd_obj_request *obj_request)
734 */
735 size = sizeof (__le64) + sizeof (__le32) + sizeof (__le32);
736 page_count = (u32)calc_pages_for(0, size);
737 - pages = ceph_alloc_page_vector(page_count, GFP_KERNEL);
738 + pages = ceph_alloc_page_vector(page_count, GFP_NOIO);
739 if (IS_ERR(pages)) {
740 ret = PTR_ERR(pages);
741 goto fail_stat_request;
742 diff --git a/drivers/clk/mvebu/ap806-system-controller.c b/drivers/clk/mvebu/ap806-system-controller.c
743 index 02023baf86c9..962e0c5f6f4d 100644
744 --- a/drivers/clk/mvebu/ap806-system-controller.c
745 +++ b/drivers/clk/mvebu/ap806-system-controller.c
746 @@ -55,21 +55,39 @@ static int ap806_syscon_clk_probe(struct platform_device *pdev)
747
748 freq_mode = reg & AP806_SAR_CLKFREQ_MODE_MASK;
749 switch (freq_mode) {
750 - case 0x0 ... 0x5:
751 + case 0x0:
752 + case 0x1:
753 cpuclk_freq = 2000;
754 break;
755 - case 0x6 ... 0xB:
756 + case 0x6:
757 + case 0x7:
758 cpuclk_freq = 1800;
759 break;
760 - case 0xC ... 0x11:
761 + case 0x4:
762 + case 0xB:
763 + case 0xD:
764 cpuclk_freq = 1600;
765 break;
766 - case 0x12 ... 0x16:
767 + case 0x1a:
768 cpuclk_freq = 1400;
769 break;
770 - case 0x17 ... 0x19:
771 + case 0x14:
772 + case 0x17:
773 cpuclk_freq = 1300;
774 break;
775 + case 0x19:
776 + cpuclk_freq = 1200;
777 + break;
778 + case 0x13:
779 + case 0x1d:
780 + cpuclk_freq = 1000;
781 + break;
782 + case 0x1c:
783 + cpuclk_freq = 800;
784 + break;
785 + case 0x1b:
786 + cpuclk_freq = 600;
787 + break;
788 default:
789 dev_err(&pdev->dev, "invalid SAR value\n");
790 return -EINVAL;
791 diff --git a/drivers/clk/samsung/clk-exynos5433.c b/drivers/clk/samsung/clk-exynos5433.c
792 index ea1608682d7f..2fe057326552 100644
793 --- a/drivers/clk/samsung/clk-exynos5433.c
794 +++ b/drivers/clk/samsung/clk-exynos5433.c
795 @@ -2559,8 +2559,10 @@ static const struct samsung_fixed_rate_clock disp_fixed_clks[] __initconst = {
796 FRATE(0, "phyclk_mipidphy1_bitclkdiv8_phy", NULL, 0, 188000000),
797 FRATE(0, "phyclk_mipidphy1_rxclkesc0_phy", NULL, 0, 100000000),
798 /* PHY clocks from MIPI_DPHY0 */
799 - FRATE(0, "phyclk_mipidphy0_bitclkdiv8_phy", NULL, 0, 188000000),
800 - FRATE(0, "phyclk_mipidphy0_rxclkesc0_phy", NULL, 0, 100000000),
801 + FRATE(CLK_PHYCLK_MIPIDPHY0_BITCLKDIV8_PHY, "phyclk_mipidphy0_bitclkdiv8_phy",
802 + NULL, 0, 188000000),
803 + FRATE(CLK_PHYCLK_MIPIDPHY0_RXCLKESC0_PHY, "phyclk_mipidphy0_rxclkesc0_phy",
804 + NULL, 0, 100000000),
805 /* PHY clocks from HDMI_PHY */
806 FRATE(CLK_PHYCLK_HDMIPHY_TMDS_CLKO_PHY, "phyclk_hdmiphy_tmds_clko_phy",
807 NULL, 0, 300000000),
808 diff --git a/drivers/crypto/vmx/aes_ctr.c b/drivers/crypto/vmx/aes_ctr.c
809 index 38ed10d761d0..7cf6d31c1123 100644
810 --- a/drivers/crypto/vmx/aes_ctr.c
811 +++ b/drivers/crypto/vmx/aes_ctr.c
812 @@ -80,11 +80,13 @@ static int p8_aes_ctr_setkey(struct crypto_tfm *tfm, const u8 *key,
813 int ret;
814 struct p8_aes_ctr_ctx *ctx = crypto_tfm_ctx(tfm);
815
816 + preempt_disable();
817 pagefault_disable();
818 enable_kernel_vsx();
819 ret = aes_p8_set_encrypt_key(key, keylen * 8, &ctx->enc_key);
820 disable_kernel_vsx();
821 pagefault_enable();
822 + preempt_enable();
823
824 ret += crypto_blkcipher_setkey(ctx->fallback, key, keylen);
825 return ret;
826 @@ -99,11 +101,13 @@ static void p8_aes_ctr_final(struct p8_aes_ctr_ctx *ctx,
827 u8 *dst = walk->dst.virt.addr;
828 unsigned int nbytes = walk->nbytes;
829
830 + preempt_disable();
831 pagefault_disable();
832 enable_kernel_vsx();
833 aes_p8_encrypt(ctrblk, keystream, &ctx->enc_key);
834 disable_kernel_vsx();
835 pagefault_enable();
836 + preempt_enable();
837
838 crypto_xor(keystream, src, nbytes);
839 memcpy(dst, keystream, nbytes);
840 @@ -132,6 +136,7 @@ static int p8_aes_ctr_crypt(struct blkcipher_desc *desc,
841 blkcipher_walk_init(&walk, dst, src, nbytes);
842 ret = blkcipher_walk_virt_block(desc, &walk, AES_BLOCK_SIZE);
843 while ((nbytes = walk.nbytes) >= AES_BLOCK_SIZE) {
844 + preempt_disable();
845 pagefault_disable();
846 enable_kernel_vsx();
847 aes_p8_ctr32_encrypt_blocks(walk.src.virt.addr,
848 @@ -143,6 +148,7 @@ static int p8_aes_ctr_crypt(struct blkcipher_desc *desc,
849 walk.iv);
850 disable_kernel_vsx();
851 pagefault_enable();
852 + preempt_enable();
853
854 /* We need to update IV mostly for last bytes/round */
855 inc = (nbytes & AES_BLOCK_MASK) / AES_BLOCK_SIZE;
856 diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c
857 index ee181c53626f..6e197c1c213d 100644
858 --- a/drivers/edac/amd64_edac.c
859 +++ b/drivers/edac/amd64_edac.c
860 @@ -2984,8 +2984,11 @@ static int __init amd64_edac_init(void)
861 int err = -ENODEV;
862 int i;
863
864 + if (!x86_match_cpu(amd64_cpuids))
865 + return -ENODEV;
866 +
867 if (amd_cache_northbridges() < 0)
868 - goto err_ret;
869 + return -ENODEV;
870
871 opstate_init();
872
873 @@ -2998,14 +3001,16 @@ static int __init amd64_edac_init(void)
874 if (!msrs)
875 goto err_free;
876
877 - for (i = 0; i < amd_nb_num(); i++)
878 - if (probe_one_instance(i)) {
879 + for (i = 0; i < amd_nb_num(); i++) {
880 + err = probe_one_instance(i);
881 + if (err) {
882 /* unwind properly */
883 while (--i >= 0)
884 remove_one_instance(i);
885
886 goto err_pci;
887 }
888 + }
889
890 setup_pci_device();
891
892 @@ -3025,7 +3030,6 @@ static int __init amd64_edac_init(void)
893 kfree(ecc_stngs);
894 ecc_stngs = NULL;
895
896 -err_ret:
897 return err;
898 }
899
900 diff --git a/drivers/edac/amd64_edac.h b/drivers/edac/amd64_edac.h
901 index c08870479054..dcb5f9481735 100644
902 --- a/drivers/edac/amd64_edac.h
903 +++ b/drivers/edac/amd64_edac.h
904 @@ -16,6 +16,7 @@
905 #include <linux/slab.h>
906 #include <linux/mmzone.h>
907 #include <linux/edac.h>
908 +#include <asm/cpu_device_id.h>
909 #include <asm/msr.h>
910 #include "edac_core.h"
911 #include "mce_amd.h"
912 diff --git a/drivers/gpu/drm/arm/malidp_planes.c b/drivers/gpu/drm/arm/malidp_planes.c
913 index afe0480d95c9..8b009b549e45 100644
914 --- a/drivers/gpu/drm/arm/malidp_planes.c
915 +++ b/drivers/gpu/drm/arm/malidp_planes.c
916 @@ -182,7 +182,8 @@ static void malidp_de_plane_update(struct drm_plane *plane,
917
918 /* setup the rotation and axis flip bits */
919 if (plane->state->rotation & DRM_ROTATE_MASK)
920 - val = ilog2(plane->state->rotation & DRM_ROTATE_MASK) << LAYER_ROT_OFFSET;
921 + val |= ilog2(plane->state->rotation & DRM_ROTATE_MASK) <<
922 + LAYER_ROT_OFFSET;
923 if (plane->state->rotation & DRM_REFLECT_X)
924 val |= LAYER_H_FLIP;
925 if (plane->state->rotation & DRM_REFLECT_Y)
926 diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
927 index 213d892b6fa3..a68f94daf9b6 100644
928 --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
929 +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
930 @@ -325,7 +325,7 @@ static void adv7511_set_link_config(struct adv7511 *adv7511,
931 adv7511->rgb = config->input_colorspace == HDMI_COLORSPACE_RGB;
932 }
933
934 -static void adv7511_power_on(struct adv7511 *adv7511)
935 +static void __adv7511_power_on(struct adv7511 *adv7511)
936 {
937 adv7511->current_edid_segment = -1;
938
939 @@ -354,6 +354,11 @@ static void adv7511_power_on(struct adv7511 *adv7511)
940 regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER2,
941 ADV7511_REG_POWER2_HPD_SRC_MASK,
942 ADV7511_REG_POWER2_HPD_SRC_NONE);
943 +}
944 +
945 +static void adv7511_power_on(struct adv7511 *adv7511)
946 +{
947 + __adv7511_power_on(adv7511);
948
949 /*
950 * Most of the registers are reset during power down or when HPD is low.
951 @@ -362,21 +367,23 @@ static void adv7511_power_on(struct adv7511 *adv7511)
952
953 if (adv7511->type == ADV7533)
954 adv7533_dsi_power_on(adv7511);
955 -
956 adv7511->powered = true;
957 }
958
959 -static void adv7511_power_off(struct adv7511 *adv7511)
960 +static void __adv7511_power_off(struct adv7511 *adv7511)
961 {
962 /* TODO: setup additional power down modes */
963 regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER,
964 ADV7511_POWER_POWER_DOWN,
965 ADV7511_POWER_POWER_DOWN);
966 regcache_mark_dirty(adv7511->regmap);
967 +}
968
969 +static void adv7511_power_off(struct adv7511 *adv7511)
970 +{
971 + __adv7511_power_off(adv7511);
972 if (adv7511->type == ADV7533)
973 adv7533_dsi_power_off(adv7511);
974 -
975 adv7511->powered = false;
976 }
977
978 @@ -567,23 +574,20 @@ static int adv7511_get_modes(struct adv7511 *adv7511,
979
980 /* Reading the EDID only works if the device is powered */
981 if (!adv7511->powered) {
982 - regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER,
983 - ADV7511_POWER_POWER_DOWN, 0);
984 - if (adv7511->i2c_main->irq) {
985 - regmap_write(adv7511->regmap, ADV7511_REG_INT_ENABLE(0),
986 - ADV7511_INT0_EDID_READY);
987 - regmap_write(adv7511->regmap, ADV7511_REG_INT_ENABLE(1),
988 - ADV7511_INT1_DDC_ERROR);
989 - }
990 - adv7511->current_edid_segment = -1;
991 + unsigned int edid_i2c_addr =
992 + (adv7511->i2c_main->addr << 1) + 4;
993 +
994 + __adv7511_power_on(adv7511);
995 +
996 + /* Reset the EDID_I2C_ADDR register as it might be cleared */
997 + regmap_write(adv7511->regmap, ADV7511_REG_EDID_I2C_ADDR,
998 + edid_i2c_addr);
999 }
1000
1001 edid = drm_do_get_edid(connector, adv7511_get_edid_block, adv7511);
1002
1003 if (!adv7511->powered)
1004 - regmap_update_bits(adv7511->regmap, ADV7511_REG_POWER,
1005 - ADV7511_POWER_POWER_DOWN,
1006 - ADV7511_POWER_POWER_DOWN);
1007 + __adv7511_power_off(adv7511);
1008
1009 kfree(adv7511->edid);
1010 adv7511->edid = edid;
1011 diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
1012 index 362b8cd68a24..80a903bd317d 100644
1013 --- a/drivers/gpu/drm/drm_drv.c
1014 +++ b/drivers/gpu/drm/drm_drv.c
1015 @@ -218,7 +218,7 @@ static int drm_minor_register(struct drm_device *dev, unsigned int type)
1016 ret = drm_debugfs_init(minor, minor->index, drm_debugfs_root);
1017 if (ret) {
1018 DRM_ERROR("DRM: Failed to initialize /sys/kernel/debug/dri.\n");
1019 - return ret;
1020 + goto err_debugfs;
1021 }
1022
1023 ret = device_add(minor->kdev);
1024 diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
1025 index a19ec06f9e42..3ce9ba30d827 100644
1026 --- a/drivers/gpu/drm/i915/intel_drv.h
1027 +++ b/drivers/gpu/drm/i915/intel_drv.h
1028 @@ -457,7 +457,6 @@ struct intel_crtc_scaler_state {
1029
1030 struct intel_pipe_wm {
1031 struct intel_wm_level wm[5];
1032 - struct intel_wm_level raw_wm[5];
1033 uint32_t linetime;
1034 bool fbc_wm_enabled;
1035 bool pipe_enabled;
1036 diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
1037 index 49de4760cc16..277a8026460b 100644
1038 --- a/drivers/gpu/drm/i915/intel_pm.c
1039 +++ b/drivers/gpu/drm/i915/intel_pm.c
1040 @@ -27,6 +27,7 @@
1041
1042 #include <linux/cpufreq.h>
1043 #include <drm/drm_plane_helper.h>
1044 +#include <drm/drm_atomic_helper.h>
1045 #include "i915_drv.h"
1046 #include "intel_drv.h"
1047 #include "../../../platform/x86/intel_ips.h"
1048 @@ -2017,9 +2018,9 @@ static void ilk_compute_wm_level(const struct drm_i915_private *dev_priv,
1049 const struct intel_crtc *intel_crtc,
1050 int level,
1051 struct intel_crtc_state *cstate,
1052 - struct intel_plane_state *pristate,
1053 - struct intel_plane_state *sprstate,
1054 - struct intel_plane_state *curstate,
1055 + const struct intel_plane_state *pristate,
1056 + const struct intel_plane_state *sprstate,
1057 + const struct intel_plane_state *curstate,
1058 struct intel_wm_level *result)
1059 {
1060 uint16_t pri_latency = dev_priv->wm.pri_latency[level];
1061 @@ -2341,28 +2342,24 @@ static int ilk_compute_pipe_wm(struct intel_crtc_state *cstate)
1062 struct intel_pipe_wm *pipe_wm;
1063 struct drm_device *dev = state->dev;
1064 const struct drm_i915_private *dev_priv = to_i915(dev);
1065 - struct intel_plane *intel_plane;
1066 - struct intel_plane_state *pristate = NULL;
1067 - struct intel_plane_state *sprstate = NULL;
1068 - struct intel_plane_state *curstate = NULL;
1069 + struct drm_plane *plane;
1070 + const struct drm_plane_state *plane_state;
1071 + const struct intel_plane_state *pristate = NULL;
1072 + const struct intel_plane_state *sprstate = NULL;
1073 + const struct intel_plane_state *curstate = NULL;
1074 int level, max_level = ilk_wm_max_level(dev), usable_level;
1075 struct ilk_wm_maximums max;
1076
1077 pipe_wm = &cstate->wm.ilk.optimal;
1078
1079 - for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
1080 - struct intel_plane_state *ps;
1081 + drm_atomic_crtc_state_for_each_plane_state(plane, plane_state, &cstate->base) {
1082 + const struct intel_plane_state *ps = to_intel_plane_state(plane_state);
1083
1084 - ps = intel_atomic_get_existing_plane_state(state,
1085 - intel_plane);
1086 - if (!ps)
1087 - continue;
1088 -
1089 - if (intel_plane->base.type == DRM_PLANE_TYPE_PRIMARY)
1090 + if (plane->type == DRM_PLANE_TYPE_PRIMARY)
1091 pristate = ps;
1092 - else if (intel_plane->base.type == DRM_PLANE_TYPE_OVERLAY)
1093 + else if (plane->type == DRM_PLANE_TYPE_OVERLAY)
1094 sprstate = ps;
1095 - else if (intel_plane->base.type == DRM_PLANE_TYPE_CURSOR)
1096 + else if (plane->type == DRM_PLANE_TYPE_CURSOR)
1097 curstate = ps;
1098 }
1099
1100 @@ -2384,11 +2381,9 @@ static int ilk_compute_pipe_wm(struct intel_crtc_state *cstate)
1101 if (pipe_wm->sprites_scaled)
1102 usable_level = 0;
1103
1104 - ilk_compute_wm_level(dev_priv, intel_crtc, 0, cstate,
1105 - pristate, sprstate, curstate, &pipe_wm->raw_wm[0]);
1106 -
1107 memset(&pipe_wm->wm, 0, sizeof(pipe_wm->wm));
1108 - pipe_wm->wm[0] = pipe_wm->raw_wm[0];
1109 + ilk_compute_wm_level(dev_priv, intel_crtc, 0, cstate,
1110 + pristate, sprstate, curstate, &pipe_wm->wm[0]);
1111
1112 if (IS_HASWELL(dev) || IS_BROADWELL(dev))
1113 pipe_wm->linetime = hsw_compute_linetime_wm(cstate);
1114 @@ -2398,8 +2393,8 @@ static int ilk_compute_pipe_wm(struct intel_crtc_state *cstate)
1115
1116 ilk_compute_wm_reg_maximums(dev, 1, &max);
1117
1118 - for (level = 1; level <= max_level; level++) {
1119 - struct intel_wm_level *wm = &pipe_wm->raw_wm[level];
1120 + for (level = 1; level <= usable_level; level++) {
1121 + struct intel_wm_level *wm = &pipe_wm->wm[level];
1122
1123 ilk_compute_wm_level(dev_priv, intel_crtc, level, cstate,
1124 pristate, sprstate, curstate, wm);
1125 @@ -2409,13 +2404,10 @@ static int ilk_compute_pipe_wm(struct intel_crtc_state *cstate)
1126 * register maximums since such watermarks are
1127 * always invalid.
1128 */
1129 - if (level > usable_level)
1130 - continue;
1131 -
1132 - if (ilk_validate_wm_level(level, &max, wm))
1133 - pipe_wm->wm[level] = *wm;
1134 - else
1135 - usable_level = level;
1136 + if (!ilk_validate_wm_level(level, &max, wm)) {
1137 + memset(wm, 0, sizeof(*wm));
1138 + break;
1139 + }
1140 }
1141
1142 return 0;
1143 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
1144 index 36005bdf3749..29abd28c19b3 100644
1145 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
1146 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
1147 @@ -721,7 +721,7 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset)
1148 * allocation taken by fbdev
1149 */
1150 if (!(dev_priv->capabilities & SVGA_CAP_3D))
1151 - mem_size *= 2;
1152 + mem_size *= 3;
1153
1154 dev_priv->max_mob_pages = mem_size * 1024 / PAGE_SIZE;
1155 dev_priv->prim_bb_mem =
1156 diff --git a/drivers/iio/magnetometer/mag3110.c b/drivers/iio/magnetometer/mag3110.c
1157 index f2b3bd7bf862..b4f643fb3b1e 100644
1158 --- a/drivers/iio/magnetometer/mag3110.c
1159 +++ b/drivers/iio/magnetometer/mag3110.c
1160 @@ -222,29 +222,39 @@ static int mag3110_write_raw(struct iio_dev *indio_dev,
1161 int val, int val2, long mask)
1162 {
1163 struct mag3110_data *data = iio_priv(indio_dev);
1164 - int rate;
1165 + int rate, ret;
1166
1167 - if (iio_buffer_enabled(indio_dev))
1168 - return -EBUSY;
1169 + ret = iio_device_claim_direct_mode(indio_dev);
1170 + if (ret)
1171 + return ret;
1172
1173 switch (mask) {
1174 case IIO_CHAN_INFO_SAMP_FREQ:
1175 rate = mag3110_get_samp_freq_index(data, val, val2);
1176 - if (rate < 0)
1177 - return -EINVAL;
1178 + if (rate < 0) {
1179 + ret = -EINVAL;
1180 + break;
1181 + }
1182
1183 data->ctrl_reg1 &= ~MAG3110_CTRL_DR_MASK;
1184 data->ctrl_reg1 |= rate << MAG3110_CTRL_DR_SHIFT;
1185 - return i2c_smbus_write_byte_data(data->client,
1186 + ret = i2c_smbus_write_byte_data(data->client,
1187 MAG3110_CTRL_REG1, data->ctrl_reg1);
1188 + break;
1189 case IIO_CHAN_INFO_CALIBBIAS:
1190 - if (val < -10000 || val > 10000)
1191 - return -EINVAL;
1192 - return i2c_smbus_write_word_swapped(data->client,
1193 + if (val < -10000 || val > 10000) {
1194 + ret = -EINVAL;
1195 + break;
1196 + }
1197 + ret = i2c_smbus_write_word_swapped(data->client,
1198 MAG3110_OFF_X + 2 * chan->scan_index, val << 1);
1199 + break;
1200 default:
1201 - return -EINVAL;
1202 + ret = -EINVAL;
1203 + break;
1204 }
1205 + iio_device_release_direct_mode(indio_dev);
1206 + return ret;
1207 }
1208
1209 static irqreturn_t mag3110_trigger_handler(int irq, void *p)
1210 diff --git a/drivers/iio/pressure/ms5611_core.c b/drivers/iio/pressure/ms5611_core.c
1211 index a74ed1f0c880..8cc7156b5ace 100644
1212 --- a/drivers/iio/pressure/ms5611_core.c
1213 +++ b/drivers/iio/pressure/ms5611_core.c
1214 @@ -308,6 +308,7 @@ static int ms5611_write_raw(struct iio_dev *indio_dev,
1215 {
1216 struct ms5611_state *st = iio_priv(indio_dev);
1217 const struct ms5611_osr *osr = NULL;
1218 + int ret;
1219
1220 if (mask != IIO_CHAN_INFO_OVERSAMPLING_RATIO)
1221 return -EINVAL;
1222 @@ -321,12 +322,11 @@ static int ms5611_write_raw(struct iio_dev *indio_dev,
1223 if (!osr)
1224 return -EINVAL;
1225
1226 - mutex_lock(&st->lock);
1227 + ret = iio_device_claim_direct_mode(indio_dev);
1228 + if (ret)
1229 + return ret;
1230
1231 - if (iio_buffer_enabled(indio_dev)) {
1232 - mutex_unlock(&st->lock);
1233 - return -EBUSY;
1234 - }
1235 + mutex_lock(&st->lock);
1236
1237 if (chan->type == IIO_TEMP)
1238 st->temp_osr = osr;
1239 @@ -334,6 +334,8 @@ static int ms5611_write_raw(struct iio_dev *indio_dev,
1240 st->pressure_osr = osr;
1241
1242 mutex_unlock(&st->lock);
1243 + iio_device_release_direct_mode(indio_dev);
1244 +
1245 return 0;
1246 }
1247
1248 diff --git a/drivers/iio/proximity/sx9500.c b/drivers/iio/proximity/sx9500.c
1249 index 1f06282ec793..9ea147f1a50d 100644
1250 --- a/drivers/iio/proximity/sx9500.c
1251 +++ b/drivers/iio/proximity/sx9500.c
1252 @@ -387,14 +387,18 @@ static int sx9500_read_raw(struct iio_dev *indio_dev,
1253 int *val, int *val2, long mask)
1254 {
1255 struct sx9500_data *data = iio_priv(indio_dev);
1256 + int ret;
1257
1258 switch (chan->type) {
1259 case IIO_PROXIMITY:
1260 switch (mask) {
1261 case IIO_CHAN_INFO_RAW:
1262 - if (iio_buffer_enabled(indio_dev))
1263 - return -EBUSY;
1264 - return sx9500_read_proximity(data, chan, val);
1265 + ret = iio_device_claim_direct_mode(indio_dev);
1266 + if (ret)
1267 + return ret;
1268 + ret = sx9500_read_proximity(data, chan, val);
1269 + iio_device_release_direct_mode(indio_dev);
1270 + return ret;
1271 case IIO_CHAN_INFO_SAMP_FREQ:
1272 return sx9500_read_samp_freq(data, val, val2);
1273 default:
1274 diff --git a/drivers/iio/trigger/iio-trig-interrupt.c b/drivers/iio/trigger/iio-trig-interrupt.c
1275 index 572bc6f02ca8..e18f12b74610 100644
1276 --- a/drivers/iio/trigger/iio-trig-interrupt.c
1277 +++ b/drivers/iio/trigger/iio-trig-interrupt.c
1278 @@ -58,7 +58,7 @@ static int iio_interrupt_trigger_probe(struct platform_device *pdev)
1279 trig_info = kzalloc(sizeof(*trig_info), GFP_KERNEL);
1280 if (!trig_info) {
1281 ret = -ENOMEM;
1282 - goto error_put_trigger;
1283 + goto error_free_trigger;
1284 }
1285 iio_trigger_set_drvdata(trig, trig_info);
1286 trig_info->irq = irq;
1287 @@ -83,8 +83,8 @@ static int iio_interrupt_trigger_probe(struct platform_device *pdev)
1288 free_irq(irq, trig);
1289 error_free_trig_info:
1290 kfree(trig_info);
1291 -error_put_trigger:
1292 - iio_trigger_put(trig);
1293 +error_free_trigger:
1294 + iio_trigger_free(trig);
1295 error_ret:
1296 return ret;
1297 }
1298 @@ -99,7 +99,7 @@ static int iio_interrupt_trigger_remove(struct platform_device *pdev)
1299 iio_trigger_unregister(trig);
1300 free_irq(trig_info->irq, trig);
1301 kfree(trig_info);
1302 - iio_trigger_put(trig);
1303 + iio_trigger_free(trig);
1304
1305 return 0;
1306 }
1307 diff --git a/drivers/iio/trigger/iio-trig-sysfs.c b/drivers/iio/trigger/iio-trig-sysfs.c
1308 index 3dfab2bc6d69..202e8b89caf2 100644
1309 --- a/drivers/iio/trigger/iio-trig-sysfs.c
1310 +++ b/drivers/iio/trigger/iio-trig-sysfs.c
1311 @@ -174,7 +174,7 @@ static int iio_sysfs_trigger_probe(int id)
1312 return 0;
1313
1314 out2:
1315 - iio_trigger_put(t->trig);
1316 + iio_trigger_free(t->trig);
1317 free_t:
1318 kfree(t);
1319 out1:
1320 diff --git a/drivers/infiniband/sw/rxe/rxe_req.c b/drivers/infiniband/sw/rxe/rxe_req.c
1321 index 9f46be52335e..9d084780ac91 100644
1322 --- a/drivers/infiniband/sw/rxe/rxe_req.c
1323 +++ b/drivers/infiniband/sw/rxe/rxe_req.c
1324 @@ -633,6 +633,7 @@ int rxe_requester(void *arg)
1325 goto exit;
1326 }
1327 rmr->state = RXE_MEM_STATE_FREE;
1328 + rxe_drop_ref(rmr);
1329 wqe->state = wqe_state_done;
1330 wqe->status = IB_WC_SUCCESS;
1331 } else if (wqe->wr.opcode == IB_WR_REG_MR) {
1332 diff --git a/drivers/infiniband/sw/rxe/rxe_resp.c b/drivers/infiniband/sw/rxe/rxe_resp.c
1333 index 69ed4e0d7a0d..7705820cdac6 100644
1334 --- a/drivers/infiniband/sw/rxe/rxe_resp.c
1335 +++ b/drivers/infiniband/sw/rxe/rxe_resp.c
1336 @@ -893,6 +893,7 @@ static enum resp_states do_complete(struct rxe_qp *qp,
1337 return RESPST_ERROR;
1338 }
1339 rmr->state = RXE_MEM_STATE_FREE;
1340 + rxe_drop_ref(rmr);
1341 }
1342
1343 wc->qp = &qp->ibqp;
1344 diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
1345 index 0616a65f0d78..75761667be59 100644
1346 --- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
1347 +++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
1348 @@ -1392,7 +1392,7 @@ static void ipoib_cm_tx_reap(struct work_struct *work)
1349
1350 while (!list_empty(&priv->cm.reap_list)) {
1351 p = list_entry(priv->cm.reap_list.next, typeof(*p), list);
1352 - list_del(&p->list);
1353 + list_del_init(&p->list);
1354 spin_unlock_irqrestore(&priv->lock, flags);
1355 netif_tx_unlock_bh(dev);
1356 ipoib_cm_tx_destroy(p);
1357 diff --git a/drivers/input/keyboard/mpr121_touchkey.c b/drivers/input/keyboard/mpr121_touchkey.c
1358 index 0fd612dd76ed..aaf43befffaa 100644
1359 --- a/drivers/input/keyboard/mpr121_touchkey.c
1360 +++ b/drivers/input/keyboard/mpr121_touchkey.c
1361 @@ -87,7 +87,8 @@ static irqreturn_t mpr_touchkey_interrupt(int irq, void *dev_id)
1362 struct mpr121_touchkey *mpr121 = dev_id;
1363 struct i2c_client *client = mpr121->client;
1364 struct input_dev *input = mpr121->input_dev;
1365 - unsigned int key_num, key_val, pressed;
1366 + unsigned long bit_changed;
1367 + unsigned int key_num;
1368 int reg;
1369
1370 reg = i2c_smbus_read_byte_data(client, ELE_TOUCH_STATUS_1_ADDR);
1371 @@ -105,18 +106,22 @@ static irqreturn_t mpr_touchkey_interrupt(int irq, void *dev_id)
1372
1373 reg &= TOUCH_STATUS_MASK;
1374 /* use old press bit to figure out which bit changed */
1375 - key_num = ffs(reg ^ mpr121->statusbits) - 1;
1376 - pressed = reg & (1 << key_num);
1377 + bit_changed = reg ^ mpr121->statusbits;
1378 mpr121->statusbits = reg;
1379 + for_each_set_bit(key_num, &bit_changed, mpr121->keycount) {
1380 + unsigned int key_val, pressed;
1381
1382 - key_val = mpr121->keycodes[key_num];
1383 + pressed = reg & BIT(key_num);
1384 + key_val = mpr121->keycodes[key_num];
1385
1386 - input_event(input, EV_MSC, MSC_SCAN, key_num);
1387 - input_report_key(input, key_val, pressed);
1388 - input_sync(input);
1389 + input_event(input, EV_MSC, MSC_SCAN, key_num);
1390 + input_report_key(input, key_val, pressed);
1391 +
1392 + dev_dbg(&client->dev, "key %d %d %s\n", key_num, key_val,
1393 + pressed ? "pressed" : "released");
1394
1395 - dev_dbg(&client->dev, "key %d %d %s\n", key_num, key_val,
1396 - pressed ? "pressed" : "released");
1397 + }
1398 + input_sync(input);
1399
1400 out:
1401 return IRQ_HANDLED;
1402 @@ -231,6 +236,7 @@ static int mpr_touchkey_probe(struct i2c_client *client,
1403 input_dev->id.bustype = BUS_I2C;
1404 input_dev->dev.parent = &client->dev;
1405 input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP);
1406 + input_set_capability(input_dev, EV_MSC, MSC_SCAN);
1407
1408 input_dev->keycode = mpr121->keycodes;
1409 input_dev->keycodesize = sizeof(mpr121->keycodes[0]);
1410 diff --git a/drivers/input/mouse/elan_i2c_core.c b/drivers/input/mouse/elan_i2c_core.c
1411 index b8c50d883b2c..c9d491bc85e0 100644
1412 --- a/drivers/input/mouse/elan_i2c_core.c
1413 +++ b/drivers/input/mouse/elan_i2c_core.c
1414 @@ -1240,6 +1240,7 @@ static const struct acpi_device_id elan_acpi_id[] = {
1415 { "ELAN0605", 0 },
1416 { "ELAN0609", 0 },
1417 { "ELAN060B", 0 },
1418 + { "ELAN060C", 0 },
1419 { "ELAN0611", 0 },
1420 { "ELAN1000", 0 },
1421 { }
1422 diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c
1423 index e6f9b2d745ca..d3d975ae24b7 100644
1424 --- a/drivers/iommu/arm-smmu-v3.c
1425 +++ b/drivers/iommu/arm-smmu-v3.c
1426 @@ -1040,13 +1040,8 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu_device *smmu, u32 sid,
1427 }
1428 }
1429
1430 - /* Nuke the existing Config, as we're going to rewrite it */
1431 - val &= ~(STRTAB_STE_0_CFG_MASK << STRTAB_STE_0_CFG_SHIFT);
1432 -
1433 - if (ste->valid)
1434 - val |= STRTAB_STE_0_V;
1435 - else
1436 - val &= ~STRTAB_STE_0_V;
1437 + /* Nuke the existing STE_0 value, as we're going to rewrite it */
1438 + val = ste->valid ? STRTAB_STE_0_V : 0;
1439
1440 if (ste->bypass) {
1441 val |= disable_bypass ? STRTAB_STE_0_CFG_ABORT
1442 @@ -1081,7 +1076,6 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu_device *smmu, u32 sid,
1443 val |= (ste->s1_cfg->cdptr_dma & STRTAB_STE_0_S1CTXPTR_MASK
1444 << STRTAB_STE_0_S1CTXPTR_SHIFT) |
1445 STRTAB_STE_0_CFG_S1_TRANS;
1446 -
1447 }
1448
1449 if (ste->s2_cfg) {
1450 diff --git a/drivers/media/i2c/adv7604.c b/drivers/media/i2c/adv7604.c
1451 index 4003831de712..7b1935ab03c8 100644
1452 --- a/drivers/media/i2c/adv7604.c
1453 +++ b/drivers/media/i2c/adv7604.c
1454 @@ -3118,6 +3118,9 @@ static int adv76xx_parse_dt(struct adv76xx_state *state)
1455 state->pdata.blank_data = 1;
1456 state->pdata.op_format_mode_sel = ADV7604_OP_FORMAT_MODE0;
1457 state->pdata.bus_order = ADV7604_BUS_ORDER_RGB;
1458 + state->pdata.dr_str_data = ADV76XX_DR_STR_MEDIUM_HIGH;
1459 + state->pdata.dr_str_clk = ADV76XX_DR_STR_MEDIUM_HIGH;
1460 + state->pdata.dr_str_sync = ADV76XX_DR_STR_MEDIUM_HIGH;
1461
1462 return 0;
1463 }
1464 diff --git a/drivers/misc/cxl/pci.c b/drivers/misc/cxl/pci.c
1465 index fa4fe02cfef4..eef202d4399b 100644
1466 --- a/drivers/misc/cxl/pci.c
1467 +++ b/drivers/misc/cxl/pci.c
1468 @@ -1620,6 +1620,9 @@ static void cxl_pci_remove_adapter(struct cxl *adapter)
1469 cxl_sysfs_adapter_remove(adapter);
1470 cxl_debugfs_adapter_remove(adapter);
1471
1472 + /* Flush adapter datacache as its about to be removed */
1473 + cxl_data_cache_flush(adapter);
1474 +
1475 cxl_deconfigure_adapter(adapter);
1476
1477 device_unregister(&adapter->dev);
1478 diff --git a/drivers/net/can/c_can/c_can_pci.c b/drivers/net/can/c_can/c_can_pci.c
1479 index cf7c18947189..d065c0e2d18e 100644
1480 --- a/drivers/net/can/c_can/c_can_pci.c
1481 +++ b/drivers/net/can/c_can/c_can_pci.c
1482 @@ -178,7 +178,6 @@ static int c_can_pci_probe(struct pci_dev *pdev,
1483 break;
1484 case BOSCH_D_CAN:
1485 priv->regs = reg_map_d_can;
1486 - priv->can.ctrlmode_supported |= CAN_CTRLMODE_3_SAMPLES;
1487 break;
1488 default:
1489 ret = -EINVAL;
1490 diff --git a/drivers/net/can/c_can/c_can_platform.c b/drivers/net/can/c_can/c_can_platform.c
1491 index e36d10520e24..717530eac70c 100644
1492 --- a/drivers/net/can/c_can/c_can_platform.c
1493 +++ b/drivers/net/can/c_can/c_can_platform.c
1494 @@ -320,7 +320,6 @@ static int c_can_plat_probe(struct platform_device *pdev)
1495 break;
1496 case BOSCH_D_CAN:
1497 priv->regs = reg_map_d_can;
1498 - priv->can.ctrlmode_supported |= CAN_CTRLMODE_3_SAMPLES;
1499 priv->read_reg = c_can_plat_read_reg_aligned_to_16bit;
1500 priv->write_reg = c_can_plat_write_reg_aligned_to_16bit;
1501 priv->read_reg32 = d_can_plat_read_reg32;
1502 diff --git a/drivers/net/can/ifi_canfd/ifi_canfd.c b/drivers/net/can/ifi_canfd/ifi_canfd.c
1503 index 481895b2f9f4..c06ef438f23f 100644
1504 --- a/drivers/net/can/ifi_canfd/ifi_canfd.c
1505 +++ b/drivers/net/can/ifi_canfd/ifi_canfd.c
1506 @@ -670,9 +670,9 @@ static void ifi_canfd_set_bittiming(struct net_device *ndev)
1507 priv->base + IFI_CANFD_FTIME);
1508
1509 /* Configure transmitter delay */
1510 - tdc = (dbt->brp * (dbt->phase_seg1 + 1)) & IFI_CANFD_TDELAY_MASK;
1511 - writel(IFI_CANFD_TDELAY_EN | IFI_CANFD_TDELAY_ABS | tdc,
1512 - priv->base + IFI_CANFD_TDELAY);
1513 + tdc = dbt->brp * (dbt->prop_seg + dbt->phase_seg1);
1514 + tdc &= IFI_CANFD_TDELAY_MASK;
1515 + writel(IFI_CANFD_TDELAY_EN | tdc, priv->base + IFI_CANFD_TDELAY);
1516 }
1517
1518 static void ifi_canfd_set_filter(struct net_device *ndev, const u32 id,
1519 diff --git a/drivers/net/can/sun4i_can.c b/drivers/net/can/sun4i_can.c
1520 index b0c80859f746..1ac2090a1721 100644
1521 --- a/drivers/net/can/sun4i_can.c
1522 +++ b/drivers/net/can/sun4i_can.c
1523 @@ -539,6 +539,13 @@ static int sun4i_can_err(struct net_device *dev, u8 isrc, u8 status)
1524 }
1525 stats->rx_over_errors++;
1526 stats->rx_errors++;
1527 +
1528 + /* reset the CAN IP by entering reset mode
1529 + * ignoring timeout error
1530 + */
1531 + set_reset_mode(dev);
1532 + set_normal_mode(dev);
1533 +
1534 /* clear bit */
1535 sun4i_can_write_cmdreg(priv, SUN4I_CMD_CLEAR_OR_FLAG);
1536 }
1537 @@ -653,8 +660,9 @@ static irqreturn_t sun4i_can_interrupt(int irq, void *dev_id)
1538 netif_wake_queue(dev);
1539 can_led_event(dev, CAN_LED_EVENT_TX);
1540 }
1541 - if (isrc & SUN4I_INT_RBUF_VLD) {
1542 - /* receive interrupt */
1543 + if ((isrc & SUN4I_INT_RBUF_VLD) &&
1544 + !(isrc & SUN4I_INT_DATA_OR)) {
1545 + /* receive interrupt - don't read if overrun occurred */
1546 while (status & SUN4I_STA_RBUF_RDY) {
1547 /* RX buffer is not empty */
1548 sun4i_can_rx(dev);
1549 diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c
1550 index afbfc0f656f3..dc6d3b0a0be8 100644
1551 --- a/drivers/net/usb/cdc_ncm.c
1552 +++ b/drivers/net/usb/cdc_ncm.c
1553 @@ -769,8 +769,10 @@ int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_
1554 u8 *buf;
1555 int len;
1556 int temp;
1557 + int err;
1558 u8 iface_no;
1559 struct usb_cdc_parsed_header hdr;
1560 + u16 curr_ntb_format;
1561
1562 ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
1563 if (!ctx)
1564 @@ -875,6 +877,32 @@ int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_
1565 goto error2;
1566 }
1567
1568 + /*
1569 + * Some Huawei devices have been observed to come out of reset in NDP32 mode.
1570 + * Let's check if this is the case, and set the device to NDP16 mode again if
1571 + * needed.
1572 + */
1573 + if (ctx->drvflags & CDC_NCM_FLAG_RESET_NTB16) {
1574 + err = usbnet_read_cmd(dev, USB_CDC_GET_NTB_FORMAT,
1575 + USB_TYPE_CLASS | USB_DIR_IN | USB_RECIP_INTERFACE,
1576 + 0, iface_no, &curr_ntb_format, 2);
1577 + if (err < 0) {
1578 + goto error2;
1579 + }
1580 +
1581 + if (curr_ntb_format == USB_CDC_NCM_NTB32_FORMAT) {
1582 + dev_info(&intf->dev, "resetting NTB format to 16-bit");
1583 + err = usbnet_write_cmd(dev, USB_CDC_SET_NTB_FORMAT,
1584 + USB_TYPE_CLASS | USB_DIR_OUT
1585 + | USB_RECIP_INTERFACE,
1586 + USB_CDC_NCM_NTB16_FORMAT,
1587 + iface_no, NULL, 0);
1588 +
1589 + if (err < 0)
1590 + goto error2;
1591 + }
1592 + }
1593 +
1594 cdc_ncm_find_endpoints(dev, ctx->data);
1595 cdc_ncm_find_endpoints(dev, ctx->control);
1596 if (!dev->in || !dev->out || !dev->status) {
1597 diff --git a/drivers/net/usb/huawei_cdc_ncm.c b/drivers/net/usb/huawei_cdc_ncm.c
1598 index 2680a65cd5e4..63f28908afda 100644
1599 --- a/drivers/net/usb/huawei_cdc_ncm.c
1600 +++ b/drivers/net/usb/huawei_cdc_ncm.c
1601 @@ -80,6 +80,12 @@ static int huawei_cdc_ncm_bind(struct usbnet *usbnet_dev,
1602 * be at the end of the frame.
1603 */
1604 drvflags |= CDC_NCM_FLAG_NDP_TO_END;
1605 +
1606 + /* Additionally, it has been reported that some Huawei E3372H devices, with
1607 + * firmware version 21.318.01.00.541, come out of reset in NTB32 format mode, hence
1608 + * needing to be set to the NTB16 one again.
1609 + */
1610 + drvflags |= CDC_NCM_FLAG_RESET_NTB16;
1611 ret = cdc_ncm_bind_common(usbnet_dev, intf, 1, drvflags);
1612 if (ret)
1613 goto err;
1614 diff --git a/drivers/net/wireless/ath/wcn36xx/main.c b/drivers/net/wireless/ath/wcn36xx/main.c
1615 index e1d59da2ad20..ca8797c65312 100644
1616 --- a/drivers/net/wireless/ath/wcn36xx/main.c
1617 +++ b/drivers/net/wireless/ath/wcn36xx/main.c
1618 @@ -1165,11 +1165,12 @@ static int wcn36xx_remove(struct platform_device *pdev)
1619 wcn36xx_dbg(WCN36XX_DBG_MAC, "platform remove\n");
1620
1621 release_firmware(wcn->nv);
1622 - mutex_destroy(&wcn->hal_mutex);
1623
1624 ieee80211_unregister_hw(hw);
1625 iounmap(wcn->dxe_base);
1626 iounmap(wcn->ccu_base);
1627 +
1628 + mutex_destroy(&wcn->hal_mutex);
1629 ieee80211_free_hw(hw);
1630
1631 return 0;
1632 diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
1633 index 27960b0bfbcd..425a89c635d0 100644
1634 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
1635 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
1636 @@ -6572,8 +6572,7 @@ static int brcmf_setup_wiphy(struct wiphy *wiphy, struct brcmf_if *ifp)
1637 wiphy->bands[NL80211_BAND_5GHZ] = band;
1638 }
1639 }
1640 - err = brcmf_setup_wiphybands(wiphy);
1641 - return err;
1642 + return 0;
1643 }
1644
1645 static s32 brcmf_config_dongle(struct brcmf_cfg80211_info *cfg)
1646 @@ -6938,6 +6937,12 @@ struct brcmf_cfg80211_info *brcmf_cfg80211_attach(struct brcmf_pub *drvr,
1647 goto priv_out;
1648 }
1649
1650 + err = brcmf_setup_wiphybands(wiphy);
1651 + if (err) {
1652 + brcmf_err("Setting wiphy bands failed (%d)\n", err);
1653 + goto wiphy_unreg_out;
1654 + }
1655 +
1656 /* If cfg80211 didn't disable 40MHz HT CAP in wiphy_register(),
1657 * setup 40MHz in 2GHz band and enable OBSS scanning.
1658 */
1659 diff --git a/drivers/net/wireless/marvell/libertas/cmd.c b/drivers/net/wireless/marvell/libertas/cmd.c
1660 index 301170cccfff..033ff881c751 100644
1661 --- a/drivers/net/wireless/marvell/libertas/cmd.c
1662 +++ b/drivers/net/wireless/marvell/libertas/cmd.c
1663 @@ -305,7 +305,7 @@ int lbs_cmd_802_11_sleep_params(struct lbs_private *priv, uint16_t cmd_action,
1664 }
1665
1666 lbs_deb_leave_args(LBS_DEB_CMD, "ret %d", ret);
1667 - return 0;
1668 + return ret;
1669 }
1670
1671 static int lbs_wait_for_ds_awake(struct lbs_private *priv)
1672 diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800usb.c b/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
1673 index 4b0bb6b4f6f1..c636e6065548 100644
1674 --- a/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
1675 +++ b/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
1676 @@ -646,10 +646,9 @@ static void rt2800usb_txdone_nostatus(struct rt2x00_dev *rt2x00dev)
1677 !test_bit(ENTRY_DATA_STATUS_PENDING, &entry->flags))
1678 break;
1679
1680 - if (test_bit(ENTRY_DATA_IO_FAILED, &entry->flags))
1681 + if (test_bit(ENTRY_DATA_IO_FAILED, &entry->flags) ||
1682 + rt2800usb_entry_txstatus_timeout(entry))
1683 rt2x00lib_txdone_noinfo(entry, TXDONE_FAILURE);
1684 - else if (rt2800usb_entry_txstatus_timeout(entry))
1685 - rt2x00lib_txdone_noinfo(entry, TXDONE_UNKNOWN);
1686 else
1687 break;
1688 }
1689 diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c
1690 index d9b5b73c35a0..a7bdb1ffac2e 100644
1691 --- a/drivers/net/xen-netback/netback.c
1692 +++ b/drivers/net/xen-netback/netback.c
1693 @@ -67,6 +67,7 @@ module_param(rx_drain_timeout_msecs, uint, 0444);
1694 unsigned int rx_stall_timeout_msecs = 60000;
1695 module_param(rx_stall_timeout_msecs, uint, 0444);
1696
1697 +#define MAX_QUEUES_DEFAULT 8
1698 unsigned int xenvif_max_queues;
1699 module_param_named(max_queues, xenvif_max_queues, uint, 0644);
1700 MODULE_PARM_DESC(max_queues,
1701 @@ -1626,11 +1627,12 @@ static int __init netback_init(void)
1702 if (!xen_domain())
1703 return -ENODEV;
1704
1705 - /* Allow as many queues as there are CPUs if user has not
1706 + /* Allow as many queues as there are CPUs but max. 8 if user has not
1707 * specified a value.
1708 */
1709 if (xenvif_max_queues == 0)
1710 - xenvif_max_queues = num_online_cpus();
1711 + xenvif_max_queues = min_t(unsigned int, MAX_QUEUES_DEFAULT,
1712 + num_online_cpus());
1713
1714 if (fatal_skb_slots < XEN_NETBK_LEGACY_SLOTS_MAX) {
1715 pr_info("fatal_skb_slots too small (%d), bump it to XEN_NETBK_LEGACY_SLOTS_MAX (%d)\n",
1716 diff --git a/drivers/pci/host/pci-mvebu.c b/drivers/pci/host/pci-mvebu.c
1717 index 45a89d969700..90e0b6f134ad 100644
1718 --- a/drivers/pci/host/pci-mvebu.c
1719 +++ b/drivers/pci/host/pci-mvebu.c
1720 @@ -133,6 +133,12 @@ struct mvebu_pcie {
1721 int nports;
1722 };
1723
1724 +struct mvebu_pcie_window {
1725 + phys_addr_t base;
1726 + phys_addr_t remap;
1727 + size_t size;
1728 +};
1729 +
1730 /* Structure representing one PCIe interface */
1731 struct mvebu_pcie_port {
1732 char *name;
1733 @@ -150,10 +156,8 @@ struct mvebu_pcie_port {
1734 struct mvebu_sw_pci_bridge bridge;
1735 struct device_node *dn;
1736 struct mvebu_pcie *pcie;
1737 - phys_addr_t memwin_base;
1738 - size_t memwin_size;
1739 - phys_addr_t iowin_base;
1740 - size_t iowin_size;
1741 + struct mvebu_pcie_window memwin;
1742 + struct mvebu_pcie_window iowin;
1743 u32 saved_pcie_stat;
1744 };
1745
1746 @@ -379,23 +383,45 @@ static void mvebu_pcie_add_windows(struct mvebu_pcie_port *port,
1747 }
1748 }
1749
1750 +static void mvebu_pcie_set_window(struct mvebu_pcie_port *port,
1751 + unsigned int target, unsigned int attribute,
1752 + const struct mvebu_pcie_window *desired,
1753 + struct mvebu_pcie_window *cur)
1754 +{
1755 + if (desired->base == cur->base && desired->remap == cur->remap &&
1756 + desired->size == cur->size)
1757 + return;
1758 +
1759 + if (cur->size != 0) {
1760 + mvebu_pcie_del_windows(port, cur->base, cur->size);
1761 + cur->size = 0;
1762 + cur->base = 0;
1763 +
1764 + /*
1765 + * If something tries to change the window while it is enabled
1766 + * the change will not be done atomically. That would be
1767 + * difficult to do in the general case.
1768 + */
1769 + }
1770 +
1771 + if (desired->size == 0)
1772 + return;
1773 +
1774 + mvebu_pcie_add_windows(port, target, attribute, desired->base,
1775 + desired->size, desired->remap);
1776 + *cur = *desired;
1777 +}
1778 +
1779 static void mvebu_pcie_handle_iobase_change(struct mvebu_pcie_port *port)
1780 {
1781 - phys_addr_t iobase;
1782 + struct mvebu_pcie_window desired = {};
1783
1784 /* Are the new iobase/iolimit values invalid? */
1785 if (port->bridge.iolimit < port->bridge.iobase ||
1786 port->bridge.iolimitupper < port->bridge.iobaseupper ||
1787 !(port->bridge.command & PCI_COMMAND_IO)) {
1788 -
1789 - /* If a window was configured, remove it */
1790 - if (port->iowin_base) {
1791 - mvebu_pcie_del_windows(port, port->iowin_base,
1792 - port->iowin_size);
1793 - port->iowin_base = 0;
1794 - port->iowin_size = 0;
1795 - }
1796 -
1797 + mvebu_pcie_set_window(port, port->io_target, port->io_attr,
1798 + &desired, &port->iowin);
1799 return;
1800 }
1801
1802 @@ -412,32 +438,27 @@ static void mvebu_pcie_handle_iobase_change(struct mvebu_pcie_port *port)
1803 * specifications. iobase is the bus address, port->iowin_base
1804 * is the CPU address.
1805 */
1806 - iobase = ((port->bridge.iobase & 0xF0) << 8) |
1807 - (port->bridge.iobaseupper << 16);
1808 - port->iowin_base = port->pcie->io.start + iobase;
1809 - port->iowin_size = ((0xFFF | ((port->bridge.iolimit & 0xF0) << 8) |
1810 - (port->bridge.iolimitupper << 16)) -
1811 - iobase) + 1;
1812 -
1813 - mvebu_pcie_add_windows(port, port->io_target, port->io_attr,
1814 - port->iowin_base, port->iowin_size,
1815 - iobase);
1816 + desired.remap = ((port->bridge.iobase & 0xF0) << 8) |
1817 + (port->bridge.iobaseupper << 16);
1818 + desired.base = port->pcie->io.start + desired.remap;
1819 + desired.size = ((0xFFF | ((port->bridge.iolimit & 0xF0) << 8) |
1820 + (port->bridge.iolimitupper << 16)) -
1821 + desired.remap) +
1822 + 1;
1823 +
1824 + mvebu_pcie_set_window(port, port->io_target, port->io_attr, &desired,
1825 + &port->iowin);
1826 }
1827
1828 static void mvebu_pcie_handle_membase_change(struct mvebu_pcie_port *port)
1829 {
1830 + struct mvebu_pcie_window desired = {.remap = MVEBU_MBUS_NO_REMAP};
1831 +
1832 /* Are the new membase/memlimit values invalid? */
1833 if (port->bridge.memlimit < port->bridge.membase ||
1834 !(port->bridge.command & PCI_COMMAND_MEMORY)) {
1835 -
1836 - /* If a window was configured, remove it */
1837 - if (port->memwin_base) {
1838 - mvebu_pcie_del_windows(port, port->memwin_base,
1839 - port->memwin_size);
1840 - port->memwin_base = 0;
1841 - port->memwin_size = 0;
1842 - }
1843 -
1844 + mvebu_pcie_set_window(port, port->mem_target, port->mem_attr,
1845 + &desired, &port->memwin);
1846 return;
1847 }
1848
1849 @@ -447,14 +468,12 @@ static void mvebu_pcie_handle_membase_change(struct mvebu_pcie_port *port)
1850 * window to setup, according to the PCI-to-PCI bridge
1851 * specifications.
1852 */
1853 - port->memwin_base = ((port->bridge.membase & 0xFFF0) << 16);
1854 - port->memwin_size =
1855 - (((port->bridge.memlimit & 0xFFF0) << 16) | 0xFFFFF) -
1856 - port->memwin_base + 1;
1857 -
1858 - mvebu_pcie_add_windows(port, port->mem_target, port->mem_attr,
1859 - port->memwin_base, port->memwin_size,
1860 - MVEBU_MBUS_NO_REMAP);
1861 + desired.base = ((port->bridge.membase & 0xFFF0) << 16);
1862 + desired.size = (((port->bridge.memlimit & 0xFFF0) << 16) | 0xFFFFF) -
1863 + desired.base + 1;
1864 +
1865 + mvebu_pcie_set_window(port, port->mem_target, port->mem_attr, &desired,
1866 + &port->memwin);
1867 }
1868
1869 /*
1870 diff --git a/drivers/pinctrl/intel/pinctrl-baytrail.c b/drivers/pinctrl/intel/pinctrl-baytrail.c
1871 index 5419de8e20b1..0a965026b134 100644
1872 --- a/drivers/pinctrl/intel/pinctrl-baytrail.c
1873 +++ b/drivers/pinctrl/intel/pinctrl-baytrail.c
1874 @@ -1466,7 +1466,7 @@ static void byt_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
1875 val & BYT_INPUT_EN ? " " : "in",
1876 val & BYT_OUTPUT_EN ? " " : "out",
1877 val & BYT_LEVEL ? "hi" : "lo",
1878 - comm->pad_map[i], comm->pad_map[i] * 32,
1879 + comm->pad_map[i], comm->pad_map[i] * 16,
1880 conf0 & 0x7,
1881 conf0 & BYT_TRIG_NEG ? " fall" : " ",
1882 conf0 & BYT_TRIG_POS ? " rise" : " ",
1883 diff --git a/drivers/platform/x86/hp-wmi.c b/drivers/platform/x86/hp-wmi.c
1884 index 96ffda493266..454cb2ee3cee 100644
1885 --- a/drivers/platform/x86/hp-wmi.c
1886 +++ b/drivers/platform/x86/hp-wmi.c
1887 @@ -248,7 +248,7 @@ static int hp_wmi_display_state(void)
1888 int ret = hp_wmi_perform_query(HPWMI_DISPLAY_QUERY, 0, &state,
1889 sizeof(state), sizeof(state));
1890 if (ret)
1891 - return -EINVAL;
1892 + return ret < 0 ? ret : -EINVAL;
1893 return state;
1894 }
1895
1896 @@ -258,7 +258,7 @@ static int hp_wmi_hddtemp_state(void)
1897 int ret = hp_wmi_perform_query(HPWMI_HDDTEMP_QUERY, 0, &state,
1898 sizeof(state), sizeof(state));
1899 if (ret)
1900 - return -EINVAL;
1901 + return ret < 0 ? ret : -EINVAL;
1902 return state;
1903 }
1904
1905 @@ -268,7 +268,7 @@ static int hp_wmi_als_state(void)
1906 int ret = hp_wmi_perform_query(HPWMI_ALS_QUERY, 0, &state,
1907 sizeof(state), sizeof(state));
1908 if (ret)
1909 - return -EINVAL;
1910 + return ret < 0 ? ret : -EINVAL;
1911 return state;
1912 }
1913
1914 @@ -279,7 +279,7 @@ static int hp_wmi_dock_state(void)
1915 sizeof(state), sizeof(state));
1916
1917 if (ret)
1918 - return -EINVAL;
1919 + return ret < 0 ? ret : -EINVAL;
1920
1921 return state & 0x1;
1922 }
1923 @@ -290,7 +290,7 @@ static int hp_wmi_tablet_state(void)
1924 int ret = hp_wmi_perform_query(HPWMI_HARDWARE_QUERY, 0, &state,
1925 sizeof(state), sizeof(state));
1926 if (ret)
1927 - return ret;
1928 + return ret < 0 ? ret : -EINVAL;
1929
1930 return (state & 0x4) ? 1 : 0;
1931 }
1932 @@ -323,7 +323,7 @@ static int __init hp_wmi_enable_hotkeys(void)
1933 int ret = hp_wmi_perform_query(HPWMI_BIOS_QUERY, 1, &value,
1934 sizeof(value), 0);
1935 if (ret)
1936 - return -EINVAL;
1937 + return ret < 0 ? ret : -EINVAL;
1938 return 0;
1939 }
1940
1941 @@ -336,7 +336,7 @@ static int hp_wmi_set_block(void *data, bool blocked)
1942 ret = hp_wmi_perform_query(HPWMI_WIRELESS_QUERY, 1,
1943 &query, sizeof(query), 0);
1944 if (ret)
1945 - return -EINVAL;
1946 + return ret < 0 ? ret : -EINVAL;
1947 return 0;
1948 }
1949
1950 @@ -428,7 +428,7 @@ static int hp_wmi_post_code_state(void)
1951 int ret = hp_wmi_perform_query(HPWMI_POSTCODEERROR_QUERY, 0, &state,
1952 sizeof(state), sizeof(state));
1953 if (ret)
1954 - return -EINVAL;
1955 + return ret < 0 ? ret : -EINVAL;
1956 return state;
1957 }
1958
1959 @@ -494,7 +494,7 @@ static ssize_t set_als(struct device *dev, struct device_attribute *attr,
1960 int ret = hp_wmi_perform_query(HPWMI_ALS_QUERY, 1, &tmp,
1961 sizeof(tmp), sizeof(tmp));
1962 if (ret)
1963 - return -EINVAL;
1964 + return ret < 0 ? ret : -EINVAL;
1965
1966 return count;
1967 }
1968 @@ -515,7 +515,7 @@ static ssize_t set_postcode(struct device *dev, struct device_attribute *attr,
1969 ret = hp_wmi_perform_query(HPWMI_POSTCODEERROR_QUERY, 1, &tmp,
1970 sizeof(tmp), sizeof(tmp));
1971 if (ret)
1972 - return -EINVAL;
1973 + return ret < 0 ? ret : -EINVAL;
1974
1975 return count;
1976 }
1977 @@ -572,10 +572,12 @@ static void hp_wmi_notify(u32 value, void *context)
1978
1979 switch (event_id) {
1980 case HPWMI_DOCK_EVENT:
1981 - input_report_switch(hp_wmi_input_dev, SW_DOCK,
1982 - hp_wmi_dock_state());
1983 - input_report_switch(hp_wmi_input_dev, SW_TABLET_MODE,
1984 - hp_wmi_tablet_state());
1985 + if (test_bit(SW_DOCK, hp_wmi_input_dev->swbit))
1986 + input_report_switch(hp_wmi_input_dev, SW_DOCK,
1987 + hp_wmi_dock_state());
1988 + if (test_bit(SW_TABLET_MODE, hp_wmi_input_dev->swbit))
1989 + input_report_switch(hp_wmi_input_dev, SW_TABLET_MODE,
1990 + hp_wmi_tablet_state());
1991 input_sync(hp_wmi_input_dev);
1992 break;
1993 case HPWMI_PARK_HDD:
1994 @@ -644,6 +646,7 @@ static int __init hp_wmi_input_setup(void)
1995 {
1996 acpi_status status;
1997 int err;
1998 + int val;
1999
2000 hp_wmi_input_dev = input_allocate_device();
2001 if (!hp_wmi_input_dev)
2002 @@ -654,17 +657,26 @@ static int __init hp_wmi_input_setup(void)
2003 hp_wmi_input_dev->id.bustype = BUS_HOST;
2004
2005 __set_bit(EV_SW, hp_wmi_input_dev->evbit);
2006 - __set_bit(SW_DOCK, hp_wmi_input_dev->swbit);
2007 - __set_bit(SW_TABLET_MODE, hp_wmi_input_dev->swbit);
2008 +
2009 + /* Dock */
2010 + val = hp_wmi_dock_state();
2011 + if (!(val < 0)) {
2012 + __set_bit(SW_DOCK, hp_wmi_input_dev->swbit);
2013 + input_report_switch(hp_wmi_input_dev, SW_DOCK, val);
2014 + }
2015 +
2016 + /* Tablet mode */
2017 + val = hp_wmi_tablet_state();
2018 + if (!(val < 0)) {
2019 + __set_bit(SW_TABLET_MODE, hp_wmi_input_dev->swbit);
2020 + input_report_switch(hp_wmi_input_dev, SW_TABLET_MODE, val);
2021 + }
2022
2023 err = sparse_keymap_setup(hp_wmi_input_dev, hp_wmi_keymap, NULL);
2024 if (err)
2025 goto err_free_dev;
2026
2027 /* Set initial hardware state */
2028 - input_report_switch(hp_wmi_input_dev, SW_DOCK, hp_wmi_dock_state());
2029 - input_report_switch(hp_wmi_input_dev, SW_TABLET_MODE,
2030 - hp_wmi_tablet_state());
2031 input_sync(hp_wmi_input_dev);
2032
2033 if (!hp_wmi_bios_2009_later() && hp_wmi_bios_2008_later())
2034 @@ -950,10 +962,12 @@ static int hp_wmi_resume_handler(struct device *device)
2035 * changed.
2036 */
2037 if (hp_wmi_input_dev) {
2038 - input_report_switch(hp_wmi_input_dev, SW_DOCK,
2039 - hp_wmi_dock_state());
2040 - input_report_switch(hp_wmi_input_dev, SW_TABLET_MODE,
2041 - hp_wmi_tablet_state());
2042 + if (test_bit(SW_DOCK, hp_wmi_input_dev->swbit))
2043 + input_report_switch(hp_wmi_input_dev, SW_DOCK,
2044 + hp_wmi_dock_state());
2045 + if (test_bit(SW_TABLET_MODE, hp_wmi_input_dev->swbit))
2046 + input_report_switch(hp_wmi_input_dev, SW_TABLET_MODE,
2047 + hp_wmi_tablet_state());
2048 input_sync(hp_wmi_input_dev);
2049 }
2050
2051 diff --git a/drivers/s390/net/qeth_core.h b/drivers/s390/net/qeth_core.h
2052 index f3756ca6f349..d55e6438bb5e 100644
2053 --- a/drivers/s390/net/qeth_core.h
2054 +++ b/drivers/s390/net/qeth_core.h
2055 @@ -921,7 +921,6 @@ void qeth_clear_thread_running_bit(struct qeth_card *, unsigned long);
2056 int qeth_core_hardsetup_card(struct qeth_card *);
2057 void qeth_print_status_message(struct qeth_card *);
2058 int qeth_init_qdio_queues(struct qeth_card *);
2059 -int qeth_send_startlan(struct qeth_card *);
2060 int qeth_send_ipa_cmd(struct qeth_card *, struct qeth_cmd_buffer *,
2061 int (*reply_cb)
2062 (struct qeth_card *, struct qeth_reply *, unsigned long),
2063 diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c
2064 index e8c48309ebe9..21ef8023430f 100644
2065 --- a/drivers/s390/net/qeth_core_main.c
2066 +++ b/drivers/s390/net/qeth_core_main.c
2067 @@ -2944,7 +2944,7 @@ int qeth_send_ipa_cmd(struct qeth_card *card, struct qeth_cmd_buffer *iob,
2068 }
2069 EXPORT_SYMBOL_GPL(qeth_send_ipa_cmd);
2070
2071 -int qeth_send_startlan(struct qeth_card *card)
2072 +static int qeth_send_startlan(struct qeth_card *card)
2073 {
2074 int rc;
2075 struct qeth_cmd_buffer *iob;
2076 @@ -2957,7 +2957,6 @@ int qeth_send_startlan(struct qeth_card *card)
2077 rc = qeth_send_ipa_cmd(card, iob, NULL, NULL);
2078 return rc;
2079 }
2080 -EXPORT_SYMBOL_GPL(qeth_send_startlan);
2081
2082 static int qeth_default_setadapterparms_cb(struct qeth_card *card,
2083 struct qeth_reply *reply, unsigned long data)
2084 @@ -5091,6 +5090,20 @@ int qeth_core_hardsetup_card(struct qeth_card *card)
2085 goto out;
2086 }
2087
2088 + rc = qeth_send_startlan(card);
2089 + if (rc) {
2090 + QETH_DBF_TEXT_(SETUP, 2, "6err%d", rc);
2091 + if (rc == IPA_RC_LAN_OFFLINE) {
2092 + dev_warn(&card->gdev->dev,
2093 + "The LAN is offline\n");
2094 + card->lan_online = 0;
2095 + } else {
2096 + rc = -ENODEV;
2097 + goto out;
2098 + }
2099 + } else
2100 + card->lan_online = 1;
2101 +
2102 card->options.ipa4.supported_funcs = 0;
2103 card->options.ipa6.supported_funcs = 0;
2104 card->options.adp.supported_funcs = 0;
2105 @@ -5102,14 +5115,14 @@ int qeth_core_hardsetup_card(struct qeth_card *card)
2106 if (qeth_is_supported(card, IPA_SETADAPTERPARMS)) {
2107 rc = qeth_query_setadapterparms(card);
2108 if (rc < 0) {
2109 - QETH_DBF_TEXT_(SETUP, 2, "6err%d", rc);
2110 + QETH_DBF_TEXT_(SETUP, 2, "7err%d", rc);
2111 goto out;
2112 }
2113 }
2114 if (qeth_adp_supported(card, IPA_SETADP_SET_DIAG_ASSIST)) {
2115 rc = qeth_query_setdiagass(card);
2116 if (rc < 0) {
2117 - QETH_DBF_TEXT_(SETUP, 2, "7err%d", rc);
2118 + QETH_DBF_TEXT_(SETUP, 2, "8err%d", rc);
2119 goto out;
2120 }
2121 }
2122 diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c
2123 index 5d010aa89852..8530477caab8 100644
2124 --- a/drivers/s390/net/qeth_l2_main.c
2125 +++ b/drivers/s390/net/qeth_l2_main.c
2126 @@ -1204,21 +1204,6 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode)
2127 /* softsetup */
2128 QETH_DBF_TEXT(SETUP, 2, "softsetp");
2129
2130 - rc = qeth_send_startlan(card);
2131 - if (rc) {
2132 - QETH_DBF_TEXT_(SETUP, 2, "1err%d", rc);
2133 - if (rc == 0xe080) {
2134 - dev_warn(&card->gdev->dev,
2135 - "The LAN is offline\n");
2136 - card->lan_online = 0;
2137 - goto contin;
2138 - }
2139 - rc = -ENODEV;
2140 - goto out_remove;
2141 - } else
2142 - card->lan_online = 1;
2143 -
2144 -contin:
2145 if ((card->info.type == QETH_CARD_TYPE_OSD) ||
2146 (card->info.type == QETH_CARD_TYPE_OSX)) {
2147 rc = qeth_l2_start_ipassists(card);
2148 diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c
2149 index 171be5ec2ece..03a2619166ca 100644
2150 --- a/drivers/s390/net/qeth_l3_main.c
2151 +++ b/drivers/s390/net/qeth_l3_main.c
2152 @@ -3230,21 +3230,6 @@ static int __qeth_l3_set_online(struct ccwgroup_device *gdev, int recovery_mode)
2153 /* softsetup */
2154 QETH_DBF_TEXT(SETUP, 2, "softsetp");
2155
2156 - rc = qeth_send_startlan(card);
2157 - if (rc) {
2158 - QETH_DBF_TEXT_(SETUP, 2, "1err%d", rc);
2159 - if (rc == 0xe080) {
2160 - dev_warn(&card->gdev->dev,
2161 - "The LAN is offline\n");
2162 - card->lan_online = 0;
2163 - goto contin;
2164 - }
2165 - rc = -ENODEV;
2166 - goto out_remove;
2167 - } else
2168 - card->lan_online = 1;
2169 -
2170 -contin:
2171 rc = qeth_l3_setadapter_parms(card);
2172 if (rc)
2173 QETH_DBF_TEXT_(SETUP, 2, "2err%04x", rc);
2174 diff --git a/drivers/s390/net/qeth_l3_sys.c b/drivers/s390/net/qeth_l3_sys.c
2175 index 0e00a5ce0f00..cffe42f5775d 100644
2176 --- a/drivers/s390/net/qeth_l3_sys.c
2177 +++ b/drivers/s390/net/qeth_l3_sys.c
2178 @@ -692,15 +692,15 @@ static ssize_t qeth_l3_dev_vipa_add_show(char *buf, struct qeth_card *card,
2179 enum qeth_prot_versions proto)
2180 {
2181 struct qeth_ipaddr *ipaddr;
2182 - struct hlist_node *tmp;
2183 char addr_str[40];
2184 + int str_len = 0;
2185 int entry_len; /* length of 1 entry string, differs between v4 and v6 */
2186 - int i = 0;
2187 + int i;
2188
2189 entry_len = (proto == QETH_PROT_IPV4)? 12 : 40;
2190 entry_len += 2; /* \n + terminator */
2191 spin_lock_bh(&card->ip_lock);
2192 - hash_for_each_safe(card->ip_htable, i, tmp, ipaddr, hnode) {
2193 + hash_for_each(card->ip_htable, i, ipaddr, hnode) {
2194 if (ipaddr->proto != proto)
2195 continue;
2196 if (ipaddr->type != QETH_IP_TYPE_VIPA)
2197 @@ -708,16 +708,17 @@ static ssize_t qeth_l3_dev_vipa_add_show(char *buf, struct qeth_card *card,
2198 /* String must not be longer than PAGE_SIZE. So we check if
2199 * string length gets near PAGE_SIZE. Then we can savely display
2200 * the next IPv6 address (worst case, compared to IPv4) */
2201 - if ((PAGE_SIZE - i) <= entry_len)
2202 + if ((PAGE_SIZE - str_len) <= entry_len)
2203 break;
2204 qeth_l3_ipaddr_to_string(proto, (const u8 *)&ipaddr->u,
2205 addr_str);
2206 - i += snprintf(buf + i, PAGE_SIZE - i, "%s\n", addr_str);
2207 + str_len += snprintf(buf + str_len, PAGE_SIZE - str_len, "%s\n",
2208 + addr_str);
2209 }
2210 spin_unlock_bh(&card->ip_lock);
2211 - i += snprintf(buf + i, PAGE_SIZE - i, "\n");
2212 + str_len += snprintf(buf + str_len, PAGE_SIZE - str_len, "\n");
2213
2214 - return i;
2215 + return str_len;
2216 }
2217
2218 static ssize_t qeth_l3_dev_vipa_add4_show(struct device *dev,
2219 @@ -854,15 +855,15 @@ static ssize_t qeth_l3_dev_rxip_add_show(char *buf, struct qeth_card *card,
2220 enum qeth_prot_versions proto)
2221 {
2222 struct qeth_ipaddr *ipaddr;
2223 - struct hlist_node *tmp;
2224 char addr_str[40];
2225 + int str_len = 0;
2226 int entry_len; /* length of 1 entry string, differs between v4 and v6 */
2227 - int i = 0;
2228 + int i;
2229
2230 entry_len = (proto == QETH_PROT_IPV4)? 12 : 40;
2231 entry_len += 2; /* \n + terminator */
2232 spin_lock_bh(&card->ip_lock);
2233 - hash_for_each_safe(card->ip_htable, i, tmp, ipaddr, hnode) {
2234 + hash_for_each(card->ip_htable, i, ipaddr, hnode) {
2235 if (ipaddr->proto != proto)
2236 continue;
2237 if (ipaddr->type != QETH_IP_TYPE_RXIP)
2238 @@ -870,16 +871,17 @@ static ssize_t qeth_l3_dev_rxip_add_show(char *buf, struct qeth_card *card,
2239 /* String must not be longer than PAGE_SIZE. So we check if
2240 * string length gets near PAGE_SIZE. Then we can savely display
2241 * the next IPv6 address (worst case, compared to IPv4) */
2242 - if ((PAGE_SIZE - i) <= entry_len)
2243 + if ((PAGE_SIZE - str_len) <= entry_len)
2244 break;
2245 qeth_l3_ipaddr_to_string(proto, (const u8 *)&ipaddr->u,
2246 addr_str);
2247 - i += snprintf(buf + i, PAGE_SIZE - i, "%s\n", addr_str);
2248 + str_len += snprintf(buf + str_len, PAGE_SIZE - str_len, "%s\n",
2249 + addr_str);
2250 }
2251 spin_unlock_bh(&card->ip_lock);
2252 - i += snprintf(buf + i, PAGE_SIZE - i, "\n");
2253 + str_len += snprintf(buf + str_len, PAGE_SIZE - str_len, "\n");
2254
2255 - return i;
2256 + return str_len;
2257 }
2258
2259 static ssize_t qeth_l3_dev_rxip_add4_show(struct device *dev,
2260 diff --git a/drivers/staging/iio/trigger/iio-trig-bfin-timer.c b/drivers/staging/iio/trigger/iio-trig-bfin-timer.c
2261 index 38dca69a06eb..ce500a509aa2 100644
2262 --- a/drivers/staging/iio/trigger/iio-trig-bfin-timer.c
2263 +++ b/drivers/staging/iio/trigger/iio-trig-bfin-timer.c
2264 @@ -260,7 +260,7 @@ static int iio_bfin_tmr_trigger_probe(struct platform_device *pdev)
2265 out1:
2266 iio_trigger_unregister(st->trig);
2267 out:
2268 - iio_trigger_put(st->trig);
2269 + iio_trigger_free(st->trig);
2270 return ret;
2271 }
2272
2273 @@ -273,7 +273,7 @@ static int iio_bfin_tmr_trigger_remove(struct platform_device *pdev)
2274 peripheral_free(st->t->pin);
2275 free_irq(st->irq, st);
2276 iio_trigger_unregister(st->trig);
2277 - iio_trigger_put(st->trig);
2278 + iio_trigger_free(st->trig);
2279
2280 return 0;
2281 }
2282 diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c
2283 index 7e97a1ccab23..15eaea53b3df 100644
2284 --- a/drivers/tty/serial/sh-sci.c
2285 +++ b/drivers/tty/serial/sh-sci.c
2286 @@ -193,18 +193,17 @@ static const struct plat_sci_reg sci_regmap[SCIx_NR_REGTYPES][SCIx_NR_REGS] = {
2287 },
2288
2289 /*
2290 - * Common definitions for legacy IrDA ports, dependent on
2291 - * regshift value.
2292 + * Common definitions for legacy IrDA ports.
2293 */
2294 [SCIx_IRDA_REGTYPE] = {
2295 [SCSMR] = { 0x00, 8 },
2296 - [SCBRR] = { 0x01, 8 },
2297 - [SCSCR] = { 0x02, 8 },
2298 - [SCxTDR] = { 0x03, 8 },
2299 - [SCxSR] = { 0x04, 8 },
2300 - [SCxRDR] = { 0x05, 8 },
2301 - [SCFCR] = { 0x06, 8 },
2302 - [SCFDR] = { 0x07, 16 },
2303 + [SCBRR] = { 0x02, 8 },
2304 + [SCSCR] = { 0x04, 8 },
2305 + [SCxTDR] = { 0x06, 8 },
2306 + [SCxSR] = { 0x08, 16 },
2307 + [SCxRDR] = { 0x0a, 8 },
2308 + [SCFCR] = { 0x0c, 8 },
2309 + [SCFDR] = { 0x0e, 16 },
2310 [SCTFDR] = sci_reg_invalid,
2311 [SCRFDR] = sci_reg_invalid,
2312 [SCSPTR] = sci_reg_invalid,
2313 diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
2314 index 882fc4e08284..fcc7aa248ce7 100644
2315 --- a/drivers/usb/core/hcd.c
2316 +++ b/drivers/usb/core/hcd.c
2317 @@ -3023,6 +3023,7 @@ void usb_remove_hcd(struct usb_hcd *hcd)
2318 }
2319
2320 usb_put_invalidate_rhdev(hcd);
2321 + hcd->flags = 0;
2322 }
2323 EXPORT_SYMBOL_GPL(usb_remove_hcd);
2324
2325 diff --git a/drivers/video/fbdev/pmag-ba-fb.c b/drivers/video/fbdev/pmag-ba-fb.c
2326 index 5872bc4af3ce..df02fb4b7fd1 100644
2327 --- a/drivers/video/fbdev/pmag-ba-fb.c
2328 +++ b/drivers/video/fbdev/pmag-ba-fb.c
2329 @@ -129,7 +129,7 @@ static struct fb_ops pmagbafb_ops = {
2330 /*
2331 * Turn the hardware cursor off.
2332 */
2333 -static void __init pmagbafb_erase_cursor(struct fb_info *info)
2334 +static void pmagbafb_erase_cursor(struct fb_info *info)
2335 {
2336 struct pmagbafb_par *par = info->par;
2337
2338 diff --git a/include/dt-bindings/clock/exynos5433.h b/include/dt-bindings/clock/exynos5433.h
2339 index 4fa6bb2136e3..be39d23e6a32 100644
2340 --- a/include/dt-bindings/clock/exynos5433.h
2341 +++ b/include/dt-bindings/clock/exynos5433.h
2342 @@ -771,7 +771,10 @@
2343
2344 #define CLK_PCLK_DECON 113
2345
2346 -#define DISP_NR_CLK 114
2347 +#define CLK_PHYCLK_MIPIDPHY0_BITCLKDIV8_PHY 114
2348 +#define CLK_PHYCLK_MIPIDPHY0_RXCLKESC0_PHY 115
2349 +
2350 +#define DISP_NR_CLK 116
2351
2352 /* CMU_AUD */
2353 #define CLK_MOUT_AUD_PLL_USER 1
2354 diff --git a/include/linux/phy.h b/include/linux/phy.h
2355 index 8431c8c0c320..a04d69ab7c34 100644
2356 --- a/include/linux/phy.h
2357 +++ b/include/linux/phy.h
2358 @@ -142,11 +142,7 @@ static inline const char *phy_modes(phy_interface_t interface)
2359 /* Used when trying to connect to a specific phy (mii bus id:phy device id) */
2360 #define PHY_ID_FMT "%s:%02x"
2361
2362 -/*
2363 - * Need to be a little smaller than phydev->dev.bus_id to leave room
2364 - * for the ":%02x"
2365 - */
2366 -#define MII_BUS_ID_SIZE (20 - 3)
2367 +#define MII_BUS_ID_SIZE 61
2368
2369 /* Or MII_ADDR_C45 into regnum for read/write on mii_bus to enable the 21 bit
2370 IEEE 802.3ae clause 45 addressing mode used by 10GIGE phy chips. */
2371 @@ -602,7 +598,7 @@ struct phy_driver {
2372 /* A Structure for boards to register fixups with the PHY Lib */
2373 struct phy_fixup {
2374 struct list_head list;
2375 - char bus_id[20];
2376 + char bus_id[MII_BUS_ID_SIZE + 3];
2377 u32 phy_uid;
2378 u32 phy_uid_mask;
2379 int (*run)(struct phy_device *phydev);
2380 diff --git a/include/linux/preempt.h b/include/linux/preempt.h
2381 index 75e4e30677f1..7eeceac52dea 100644
2382 --- a/include/linux/preempt.h
2383 +++ b/include/linux/preempt.h
2384 @@ -65,19 +65,24 @@
2385
2386 /*
2387 * Are we doing bottom half or hardware interrupt processing?
2388 - * Are we in a softirq context? Interrupt context?
2389 - * in_softirq - Are we currently processing softirq or have bh disabled?
2390 - * in_serving_softirq - Are we currently processing softirq?
2391 + *
2392 + * in_irq() - We're in (hard) IRQ context
2393 + * in_softirq() - We have BH disabled, or are processing softirqs
2394 + * in_interrupt() - We're in NMI,IRQ,SoftIRQ context or have BH disabled
2395 + * in_serving_softirq() - We're in softirq context
2396 + * in_nmi() - We're in NMI context
2397 + * in_task() - We're in task context
2398 + *
2399 + * Note: due to the BH disabled confusion: in_softirq(),in_interrupt() really
2400 + * should not be used in new code.
2401 */
2402 #define in_irq() (hardirq_count())
2403 #define in_softirq() (softirq_count())
2404 #define in_interrupt() (irq_count())
2405 #define in_serving_softirq() (softirq_count() & SOFTIRQ_OFFSET)
2406 -
2407 -/*
2408 - * Are we in NMI context?
2409 - */
2410 -#define in_nmi() (preempt_count() & NMI_MASK)
2411 +#define in_nmi() (preempt_count() & NMI_MASK)
2412 +#define in_task() (!(preempt_count() & \
2413 + (NMI_MASK | HARDIRQ_MASK | SOFTIRQ_OFFSET)))
2414
2415 /*
2416 * The preempt_count offset after preempt_disable();
2417 diff --git a/include/linux/usb/cdc_ncm.h b/include/linux/usb/cdc_ncm.h
2418 index 00d232406f18..b0fad110817b 100644
2419 --- a/include/linux/usb/cdc_ncm.h
2420 +++ b/include/linux/usb/cdc_ncm.h
2421 @@ -83,6 +83,7 @@
2422 /* Driver flags */
2423 #define CDC_NCM_FLAG_NDP_TO_END 0x02 /* NDP is placed at end of frame */
2424 #define CDC_MBIM_FLAG_AVOID_ALTSETTING_TOGGLE 0x04 /* Avoid altsetting toggle during init */
2425 +#define CDC_NCM_FLAG_RESET_NTB16 0x08 /* set NDP16 one more time after altsetting switch */
2426
2427 #define cdc_ncm_comm_intf_is_mbim(x) ((x)->desc.bInterfaceSubClass == USB_CDC_SUBCLASS_MBIM && \
2428 (x)->desc.bInterfaceProtocol == USB_CDC_PROTO_NONE)
2429 diff --git a/include/sound/seq_kernel.h b/include/sound/seq_kernel.h
2430 index feb58d455560..4b9ee3009aa0 100644
2431 --- a/include/sound/seq_kernel.h
2432 +++ b/include/sound/seq_kernel.h
2433 @@ -49,7 +49,8 @@ typedef union snd_seq_timestamp snd_seq_timestamp_t;
2434 #define SNDRV_SEQ_DEFAULT_CLIENT_EVENTS 200
2435
2436 /* max delivery path length */
2437 -#define SNDRV_SEQ_MAX_HOPS 10
2438 +/* NOTE: this shouldn't be greater than MAX_LOCKDEP_SUBCLASSES */
2439 +#define SNDRV_SEQ_MAX_HOPS 8
2440
2441 /* max size of event size */
2442 #define SNDRV_SEQ_MAX_EVENT_LEN 0x3fffffff
2443 diff --git a/kernel/sched/core.c b/kernel/sched/core.c
2444 index 02e7ad860b52..78181c03d9c7 100644
2445 --- a/kernel/sched/core.c
2446 +++ b/kernel/sched/core.c
2447 @@ -7961,6 +7961,7 @@ void sched_move_task(struct task_struct *tsk)
2448 struct rq *rq;
2449
2450 rq = task_rq_lock(tsk, &rf);
2451 + update_rq_clock(rq);
2452
2453 running = task_current(rq, tsk);
2454 queued = task_on_rq_queued(tsk);
2455 diff --git a/kernel/workqueue_internal.h b/kernel/workqueue_internal.h
2456 index 8635417c587b..29fa81f0f51a 100644
2457 --- a/kernel/workqueue_internal.h
2458 +++ b/kernel/workqueue_internal.h
2459 @@ -9,6 +9,7 @@
2460
2461 #include <linux/workqueue.h>
2462 #include <linux/kthread.h>
2463 +#include <linux/preempt.h>
2464
2465 struct worker_pool;
2466
2467 @@ -59,7 +60,7 @@ struct worker {
2468 */
2469 static inline struct worker *current_wq_worker(void)
2470 {
2471 - if (current->flags & PF_WQ_WORKER)
2472 + if (in_task() && (current->flags & PF_WQ_WORKER))
2473 return kthread_data(current);
2474 return NULL;
2475 }
2476 diff --git a/lib/asn1_decoder.c b/lib/asn1_decoder.c
2477 index fef5d2e114be..1ef0cec38d78 100644
2478 --- a/lib/asn1_decoder.c
2479 +++ b/lib/asn1_decoder.c
2480 @@ -228,7 +228,7 @@ int asn1_ber_decoder(const struct asn1_decoder *decoder,
2481 hdr = 2;
2482
2483 /* Extract a tag from the data */
2484 - if (unlikely(dp >= datalen - 1))
2485 + if (unlikely(datalen - dp < 2))
2486 goto data_overrun_error;
2487 tag = data[dp++];
2488 if (unlikely((tag & 0x1f) == ASN1_LONG_TAG))
2489 @@ -274,7 +274,7 @@ int asn1_ber_decoder(const struct asn1_decoder *decoder,
2490 int n = len - 0x80;
2491 if (unlikely(n > 2))
2492 goto length_too_long;
2493 - if (unlikely(dp >= datalen - n))
2494 + if (unlikely(n > datalen - dp))
2495 goto data_overrun_error;
2496 hdr += n;
2497 for (len = 0; n > 0; n--) {
2498 diff --git a/net/dsa/Kconfig b/net/dsa/Kconfig
2499 index 96e47c539bee..39bb5b3a82f2 100644
2500 --- a/net/dsa/Kconfig
2501 +++ b/net/dsa/Kconfig
2502 @@ -1,12 +1,13 @@
2503 config HAVE_NET_DSA
2504 def_bool y
2505 - depends on NETDEVICES && !S390
2506 + depends on INET && NETDEVICES && !S390
2507
2508 # Drivers must select NET_DSA and the appropriate tagging format
2509
2510 config NET_DSA
2511 tristate "Distributed Switch Architecture"
2512 - depends on HAVE_NET_DSA && NET_SWITCHDEV
2513 + depends on HAVE_NET_DSA
2514 + select NET_SWITCHDEV
2515 select PHYLIB
2516 ---help---
2517 Say Y if you want to enable support for the hardware switches supported
2518 diff --git a/net/ipv4/ah4.c b/net/ipv4/ah4.c
2519 index f2a71025a770..22377c8ff14b 100644
2520 --- a/net/ipv4/ah4.c
2521 +++ b/net/ipv4/ah4.c
2522 @@ -270,6 +270,9 @@ static void ah_input_done(struct crypto_async_request *base, int err)
2523 int ihl = ip_hdrlen(skb);
2524 int ah_hlen = (ah->hdrlen + 2) << 2;
2525
2526 + if (err)
2527 + goto out;
2528 +
2529 work_iph = AH_SKB_CB(skb)->tmp;
2530 auth_data = ah_tmp_auth(work_iph, ihl);
2531 icv = ah_tmp_icv(ahp->ahash, auth_data, ahp->icv_trunc_len);
2532 diff --git a/net/netfilter/nft_meta.c b/net/netfilter/nft_meta.c
2533 index 6c1e0246706e..7c3395513ff0 100644
2534 --- a/net/netfilter/nft_meta.c
2535 +++ b/net/netfilter/nft_meta.c
2536 @@ -159,8 +159,34 @@ void nft_meta_get_eval(const struct nft_expr *expr,
2537 else
2538 *dest = PACKET_BROADCAST;
2539 break;
2540 + case NFPROTO_NETDEV:
2541 + switch (skb->protocol) {
2542 + case htons(ETH_P_IP): {
2543 + int noff = skb_network_offset(skb);
2544 + struct iphdr *iph, _iph;
2545 +
2546 + iph = skb_header_pointer(skb, noff,
2547 + sizeof(_iph), &_iph);
2548 + if (!iph)
2549 + goto err;
2550 +
2551 + if (ipv4_is_multicast(iph->daddr))
2552 + *dest = PACKET_MULTICAST;
2553 + else
2554 + *dest = PACKET_BROADCAST;
2555 +
2556 + break;
2557 + }
2558 + case htons(ETH_P_IPV6):
2559 + *dest = PACKET_MULTICAST;
2560 + break;
2561 + default:
2562 + WARN_ON_ONCE(1);
2563 + goto err;
2564 + }
2565 + break;
2566 default:
2567 - WARN_ON(1);
2568 + WARN_ON_ONCE(1);
2569 goto err;
2570 }
2571 break;
2572 diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c
2573 index 41b8cb115801..7d3a98b2d55a 100644
2574 --- a/security/apparmor/lsm.c
2575 +++ b/security/apparmor/lsm.c
2576 @@ -671,9 +671,9 @@ enum profile_mode aa_g_profile_mode = APPARMOR_ENFORCE;
2577 module_param_call(mode, param_set_mode, param_get_mode,
2578 &aa_g_profile_mode, S_IRUSR | S_IWUSR);
2579
2580 -#ifdef CONFIG_SECURITY_APPARMOR_HASH
2581 /* whether policy verification hashing is enabled */
2582 bool aa_g_hash_policy = IS_ENABLED(CONFIG_SECURITY_APPARMOR_HASH_DEFAULT);
2583 +#ifdef CONFIG_SECURITY_APPARMOR_HASH
2584 module_param_named(hash_policy, aa_g_hash_policy, aabool, S_IRUSR | S_IWUSR);
2585 #endif
2586
2587 diff --git a/security/keys/trusted.c b/security/keys/trusted.c
2588 index f4db42e669e9..4ba2f6b91242 100644
2589 --- a/security/keys/trusted.c
2590 +++ b/security/keys/trusted.c
2591 @@ -70,7 +70,7 @@ static int TSS_sha1(const unsigned char *data, unsigned int datalen,
2592 }
2593
2594 ret = crypto_shash_digest(&sdesc->shash, data, datalen, digest);
2595 - kfree(sdesc);
2596 + kzfree(sdesc);
2597 return ret;
2598 }
2599
2600 @@ -114,7 +114,7 @@ static int TSS_rawhmac(unsigned char *digest, const unsigned char *key,
2601 if (!ret)
2602 ret = crypto_shash_final(&sdesc->shash, digest);
2603 out:
2604 - kfree(sdesc);
2605 + kzfree(sdesc);
2606 return ret;
2607 }
2608
2609 @@ -165,7 +165,7 @@ static int TSS_authhmac(unsigned char *digest, const unsigned char *key,
2610 paramdigest, TPM_NONCE_SIZE, h1,
2611 TPM_NONCE_SIZE, h2, 1, &c, 0, 0);
2612 out:
2613 - kfree(sdesc);
2614 + kzfree(sdesc);
2615 return ret;
2616 }
2617
2618 @@ -246,7 +246,7 @@ static int TSS_checkhmac1(unsigned char *buffer,
2619 if (memcmp(testhmac, authdata, SHA1_DIGEST_SIZE))
2620 ret = -EINVAL;
2621 out:
2622 - kfree(sdesc);
2623 + kzfree(sdesc);
2624 return ret;
2625 }
2626
2627 @@ -347,7 +347,7 @@ static int TSS_checkhmac2(unsigned char *buffer,
2628 if (memcmp(testhmac2, authdata2, SHA1_DIGEST_SIZE))
2629 ret = -EINVAL;
2630 out:
2631 - kfree(sdesc);
2632 + kzfree(sdesc);
2633 return ret;
2634 }
2635
2636 @@ -564,7 +564,7 @@ static int tpm_seal(struct tpm_buf *tb, uint16_t keytype,
2637 *bloblen = storedsize;
2638 }
2639 out:
2640 - kfree(td);
2641 + kzfree(td);
2642 return ret;
2643 }
2644
2645 @@ -678,7 +678,7 @@ static int key_seal(struct trusted_key_payload *p,
2646 if (ret < 0)
2647 pr_info("trusted_key: srkseal failed (%d)\n", ret);
2648
2649 - kfree(tb);
2650 + kzfree(tb);
2651 return ret;
2652 }
2653
2654 @@ -703,7 +703,7 @@ static int key_unseal(struct trusted_key_payload *p,
2655 /* pull migratable flag out of sealed key */
2656 p->migratable = p->key[--p->key_len];
2657
2658 - kfree(tb);
2659 + kzfree(tb);
2660 return ret;
2661 }
2662
2663 @@ -1037,12 +1037,12 @@ static int trusted_instantiate(struct key *key,
2664 if (!ret && options->pcrlock)
2665 ret = pcrlock(options->pcrlock);
2666 out:
2667 - kfree(datablob);
2668 - kfree(options);
2669 + kzfree(datablob);
2670 + kzfree(options);
2671 if (!ret)
2672 rcu_assign_keypointer(key, payload);
2673 else
2674 - kfree(payload);
2675 + kzfree(payload);
2676 return ret;
2677 }
2678
2679 @@ -1051,8 +1051,7 @@ static void trusted_rcu_free(struct rcu_head *rcu)
2680 struct trusted_key_payload *p;
2681
2682 p = container_of(rcu, struct trusted_key_payload, rcu);
2683 - memset(p->key, 0, p->key_len);
2684 - kfree(p);
2685 + kzfree(p);
2686 }
2687
2688 /*
2689 @@ -1094,13 +1093,13 @@ static int trusted_update(struct key *key, struct key_preparsed_payload *prep)
2690 ret = datablob_parse(datablob, new_p, new_o);
2691 if (ret != Opt_update) {
2692 ret = -EINVAL;
2693 - kfree(new_p);
2694 + kzfree(new_p);
2695 goto out;
2696 }
2697
2698 if (!new_o->keyhandle) {
2699 ret = -EINVAL;
2700 - kfree(new_p);
2701 + kzfree(new_p);
2702 goto out;
2703 }
2704
2705 @@ -1114,22 +1113,22 @@ static int trusted_update(struct key *key, struct key_preparsed_payload *prep)
2706 ret = key_seal(new_p, new_o);
2707 if (ret < 0) {
2708 pr_info("trusted_key: key_seal failed (%d)\n", ret);
2709 - kfree(new_p);
2710 + kzfree(new_p);
2711 goto out;
2712 }
2713 if (new_o->pcrlock) {
2714 ret = pcrlock(new_o->pcrlock);
2715 if (ret < 0) {
2716 pr_info("trusted_key: pcrlock failed (%d)\n", ret);
2717 - kfree(new_p);
2718 + kzfree(new_p);
2719 goto out;
2720 }
2721 }
2722 rcu_assign_keypointer(key, new_p);
2723 call_rcu(&p->rcu, trusted_rcu_free);
2724 out:
2725 - kfree(datablob);
2726 - kfree(new_o);
2727 + kzfree(datablob);
2728 + kzfree(new_o);
2729 return ret;
2730 }
2731
2732 @@ -1148,34 +1147,30 @@ static long trusted_read(const struct key *key, char __user *buffer,
2733 p = rcu_dereference_key(key);
2734 if (!p)
2735 return -EINVAL;
2736 - if (!buffer || buflen <= 0)
2737 - return 2 * p->blob_len;
2738 - ascii_buf = kmalloc(2 * p->blob_len, GFP_KERNEL);
2739 - if (!ascii_buf)
2740 - return -ENOMEM;
2741
2742 - bufp = ascii_buf;
2743 - for (i = 0; i < p->blob_len; i++)
2744 - bufp = hex_byte_pack(bufp, p->blob[i]);
2745 - if ((copy_to_user(buffer, ascii_buf, 2 * p->blob_len)) != 0) {
2746 - kfree(ascii_buf);
2747 - return -EFAULT;
2748 + if (buffer && buflen >= 2 * p->blob_len) {
2749 + ascii_buf = kmalloc(2 * p->blob_len, GFP_KERNEL);
2750 + if (!ascii_buf)
2751 + return -ENOMEM;
2752 +
2753 + bufp = ascii_buf;
2754 + for (i = 0; i < p->blob_len; i++)
2755 + bufp = hex_byte_pack(bufp, p->blob[i]);
2756 + if (copy_to_user(buffer, ascii_buf, 2 * p->blob_len) != 0) {
2757 + kzfree(ascii_buf);
2758 + return -EFAULT;
2759 + }
2760 + kzfree(ascii_buf);
2761 }
2762 - kfree(ascii_buf);
2763 return 2 * p->blob_len;
2764 }
2765
2766 /*
2767 - * trusted_destroy - before freeing the key, clear the decrypted data
2768 + * trusted_destroy - clear and free the key's payload
2769 */
2770 static void trusted_destroy(struct key *key)
2771 {
2772 - struct trusted_key_payload *p = key->payload.data[0];
2773 -
2774 - if (!p)
2775 - return;
2776 - memset(p->key, 0, p->key_len);
2777 - kfree(key->payload.data[0]);
2778 + kzfree(key->payload.data[0]);
2779 }
2780
2781 struct key_type key_type_trusted = {
2782 diff --git a/sound/core/seq/oss/seq_oss_midi.c b/sound/core/seq/oss/seq_oss_midi.c
2783 index aaff9ee32695..b30b2139e3f0 100644
2784 --- a/sound/core/seq/oss/seq_oss_midi.c
2785 +++ b/sound/core/seq/oss/seq_oss_midi.c
2786 @@ -612,9 +612,7 @@ send_midi_event(struct seq_oss_devinfo *dp, struct snd_seq_event *ev, struct seq
2787 if (!dp->timer->running)
2788 len = snd_seq_oss_timer_start(dp->timer);
2789 if (ev->type == SNDRV_SEQ_EVENT_SYSEX) {
2790 - if ((ev->flags & SNDRV_SEQ_EVENT_LENGTH_MASK) == SNDRV_SEQ_EVENT_LENGTH_VARIABLE)
2791 - snd_seq_oss_readq_puts(dp->readq, mdev->seq_device,
2792 - ev->data.ext.ptr, ev->data.ext.len);
2793 + snd_seq_oss_readq_sysex(dp->readq, mdev->seq_device, ev);
2794 } else {
2795 len = snd_midi_event_decode(mdev->coder, msg, sizeof(msg), ev);
2796 if (len > 0)
2797 diff --git a/sound/core/seq/oss/seq_oss_readq.c b/sound/core/seq/oss/seq_oss_readq.c
2798 index 046cb586fb2f..06b21226b4e7 100644
2799 --- a/sound/core/seq/oss/seq_oss_readq.c
2800 +++ b/sound/core/seq/oss/seq_oss_readq.c
2801 @@ -117,6 +117,35 @@ snd_seq_oss_readq_puts(struct seq_oss_readq *q, int dev, unsigned char *data, in
2802 return 0;
2803 }
2804
2805 +/*
2806 + * put MIDI sysex bytes; the event buffer may be chained, thus it has
2807 + * to be expanded via snd_seq_dump_var_event().
2808 + */
2809 +struct readq_sysex_ctx {
2810 + struct seq_oss_readq *readq;
2811 + int dev;
2812 +};
2813 +
2814 +static int readq_dump_sysex(void *ptr, void *buf, int count)
2815 +{
2816 + struct readq_sysex_ctx *ctx = ptr;
2817 +
2818 + return snd_seq_oss_readq_puts(ctx->readq, ctx->dev, buf, count);
2819 +}
2820 +
2821 +int snd_seq_oss_readq_sysex(struct seq_oss_readq *q, int dev,
2822 + struct snd_seq_event *ev)
2823 +{
2824 + struct readq_sysex_ctx ctx = {
2825 + .readq = q,
2826 + .dev = dev
2827 + };
2828 +
2829 + if ((ev->flags & SNDRV_SEQ_EVENT_LENGTH_MASK) != SNDRV_SEQ_EVENT_LENGTH_VARIABLE)
2830 + return 0;
2831 + return snd_seq_dump_var_event(ev, readq_dump_sysex, &ctx);
2832 +}
2833 +
2834 /*
2835 * copy an event to input queue:
2836 * return zero if enqueued
2837 diff --git a/sound/core/seq/oss/seq_oss_readq.h b/sound/core/seq/oss/seq_oss_readq.h
2838 index f1463f1f449e..8d033ca2d23f 100644
2839 --- a/sound/core/seq/oss/seq_oss_readq.h
2840 +++ b/sound/core/seq/oss/seq_oss_readq.h
2841 @@ -44,6 +44,8 @@ void snd_seq_oss_readq_delete(struct seq_oss_readq *q);
2842 void snd_seq_oss_readq_clear(struct seq_oss_readq *readq);
2843 unsigned int snd_seq_oss_readq_poll(struct seq_oss_readq *readq, struct file *file, poll_table *wait);
2844 int snd_seq_oss_readq_puts(struct seq_oss_readq *readq, int dev, unsigned char *data, int len);
2845 +int snd_seq_oss_readq_sysex(struct seq_oss_readq *q, int dev,
2846 + struct snd_seq_event *ev);
2847 int snd_seq_oss_readq_put_event(struct seq_oss_readq *readq, union evrec *ev);
2848 int snd_seq_oss_readq_put_timestamp(struct seq_oss_readq *readq, unsigned long curt, int seq_mode);
2849 int snd_seq_oss_readq_pick(struct seq_oss_readq *q, union evrec *rec);
2850 diff --git a/sound/soc/sunxi/sun4i-spdif.c b/sound/soc/sunxi/sun4i-spdif.c
2851 index 88fbb3a1e660..048de15d6937 100644
2852 --- a/sound/soc/sunxi/sun4i-spdif.c
2853 +++ b/sound/soc/sunxi/sun4i-spdif.c
2854 @@ -403,14 +403,6 @@ static struct snd_soc_dai_driver sun4i_spdif_dai = {
2855 .name = "spdif",
2856 };
2857
2858 -static const struct snd_soc_dapm_widget dit_widgets[] = {
2859 - SND_SOC_DAPM_OUTPUT("spdif-out"),
2860 -};
2861 -
2862 -static const struct snd_soc_dapm_route dit_routes[] = {
2863 - { "spdif-out", NULL, "Playback" },
2864 -};
2865 -
2866 static const struct of_device_id sun4i_spdif_of_match[] = {
2867 { .compatible = "allwinner,sun4i-a10-spdif", },
2868 { .compatible = "allwinner,sun6i-a31-spdif", },
2869 diff --git a/tools/testing/selftests/firmware/fw_filesystem.sh b/tools/testing/selftests/firmware/fw_filesystem.sh
2870 index 5c495ad7958a..d8ac9ba67688 100755
2871 --- a/tools/testing/selftests/firmware/fw_filesystem.sh
2872 +++ b/tools/testing/selftests/firmware/fw_filesystem.sh
2873 @@ -48,18 +48,18 @@ echo "ABCD0123" >"$FW"
2874
2875 NAME=$(basename "$FW")
2876
2877 -if printf '\000' >"$DIR"/trigger_request; then
2878 +if printf '\000' >"$DIR"/trigger_request 2> /dev/null; then
2879 echo "$0: empty filename should not succeed" >&2
2880 exit 1
2881 fi
2882
2883 -if printf '\000' >"$DIR"/trigger_async_request; then
2884 +if printf '\000' >"$DIR"/trigger_async_request 2> /dev/null; then
2885 echo "$0: empty filename should not succeed (async)" >&2
2886 exit 1
2887 fi
2888
2889 # Request a firmware that doesn't exist, it should fail.
2890 -if echo -n "nope-$NAME" >"$DIR"/trigger_request; then
2891 +if echo -n "nope-$NAME" >"$DIR"/trigger_request 2> /dev/null; then
2892 echo "$0: firmware shouldn't have loaded" >&2
2893 exit 1
2894 fi
2895 diff --git a/tools/testing/selftests/firmware/fw_userhelper.sh b/tools/testing/selftests/firmware/fw_userhelper.sh
2896 index b9983f8e09f6..01c626a1f226 100755
2897 --- a/tools/testing/selftests/firmware/fw_userhelper.sh
2898 +++ b/tools/testing/selftests/firmware/fw_userhelper.sh
2899 @@ -64,9 +64,33 @@ trap "test_finish" EXIT
2900 echo "ABCD0123" >"$FW"
2901 NAME=$(basename "$FW")
2902
2903 +DEVPATH="$DIR"/"nope-$NAME"/loading
2904 +
2905 # Test failure when doing nothing (timeout works).
2906 -echo 1 >/sys/class/firmware/timeout
2907 -echo -n "$NAME" >"$DIR"/trigger_request
2908 +echo -n 2 >/sys/class/firmware/timeout
2909 +echo -n "nope-$NAME" >"$DIR"/trigger_request 2>/dev/null &
2910 +
2911 +# Give the kernel some time to load the loading file, must be less
2912 +# than the timeout above.
2913 +sleep 1
2914 +if [ ! -f $DEVPATH ]; then
2915 + echo "$0: fallback mechanism immediately cancelled"
2916 + echo ""
2917 + echo "The file never appeared: $DEVPATH"
2918 + echo ""
2919 + echo "This might be a distribution udev rule setup by your distribution"
2920 + echo "to immediately cancel all fallback requests, this must be"
2921 + echo "removed before running these tests. To confirm look for"
2922 + echo "a firmware rule like /lib/udev/rules.d/50-firmware.rules"
2923 + echo "and see if you have something like this:"
2924 + echo ""
2925 + echo "SUBSYSTEM==\"firmware\", ACTION==\"add\", ATTR{loading}=\"-1\""
2926 + echo ""
2927 + echo "If you do remove this file or comment out this line before"
2928 + echo "proceeding with these tests."
2929 + exit 1
2930 +fi
2931 +
2932 if diff -q "$FW" /dev/test_firmware >/dev/null ; then
2933 echo "$0: firmware was not expected to match" >&2
2934 exit 1