Magellan Linux

Annotation of /trunk/kernel-alx/patches-4.14/0122-4.14.23-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3238 - (hide annotations) (download)
Fri Nov 9 12:14:58 2018 UTC (5 years, 7 months ago) by niro
File size: 54414 byte(s)
-added up to patches-4.14.79
1 niro 3238 diff --git a/Makefile b/Makefile
2     index 03d41143900c..169f3199274f 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,7 +1,7 @@
6     # SPDX-License-Identifier: GPL-2.0
7     VERSION = 4
8     PATCHLEVEL = 14
9     -SUBLEVEL = 22
10     +SUBLEVEL = 23
11     EXTRAVERSION =
12     NAME = Petit Gorille
13    
14     diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
15     index 582142ae92e1..345d4e521191 100644
16     --- a/arch/arm64/kernel/cpufeature.c
17     +++ b/arch/arm64/kernel/cpufeature.c
18     @@ -175,9 +175,11 @@ static const struct arm64_ftr_bits ftr_id_aa64mmfr2[] = {
19     };
20    
21     static const struct arm64_ftr_bits ftr_ctr[] = {
22     - ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_EXACT, 31, 1, 1), /* RAO */
23     + ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_EXACT, 31, 1, 1), /* RES1 */
24     + ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, 29, 1, 1), /* DIC */
25     + ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, 28, 1, 1), /* IDC */
26     ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_HIGHER_SAFE, 24, 4, 0), /* CWG */
27     - ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, 20, 4, 0), /* ERG */
28     + ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_HIGHER_SAFE, 20, 4, 0), /* ERG */
29     ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, 16, 4, 1), /* DminLine */
30     /*
31     * Linux can handle differing I-cache policies. Userspace JITs will
32     diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c
33     index 8383af15a759..4fc0e958770b 100644
34     --- a/arch/arm64/kernel/traps.c
35     +++ b/arch/arm64/kernel/traps.c
36     @@ -56,7 +56,7 @@ static const char *handler[]= {
37     "Error"
38     };
39    
40     -int show_unhandled_signals = 1;
41     +int show_unhandled_signals = 0;
42    
43     /*
44     * Dump out the contents of some kernel memory nicely...
45     @@ -573,14 +573,6 @@ asmlinkage long do_ni_syscall(struct pt_regs *regs)
46     }
47     #endif
48    
49     - if (show_unhandled_signals_ratelimited()) {
50     - pr_info("%s[%d]: syscall %d\n", current->comm,
51     - task_pid_nr(current), regs->syscallno);
52     - dump_instr("", regs);
53     - if (user_mode(regs))
54     - __show_regs(regs);
55     - }
56     -
57     return sys_ni_syscall();
58     }
59    
60     diff --git a/arch/arm64/mm/proc.S b/arch/arm64/mm/proc.S
61     index 329a1c43365e..139320a7f7a2 100644
62     --- a/arch/arm64/mm/proc.S
63     +++ b/arch/arm64/mm/proc.S
64     @@ -155,7 +155,7 @@ ENDPROC(cpu_do_switch_mm)
65    
66     .macro __idmap_cpu_set_reserved_ttbr1, tmp1, tmp2
67     adrp \tmp1, empty_zero_page
68     - msr ttbr1_el1, \tmp2
69     + msr ttbr1_el1, \tmp1
70     isb
71     tlbi vmalle1
72     dsb nsh
73     diff --git a/arch/m32r/Kconfig b/arch/m32r/Kconfig
74     index 0d9446c37ae8..498398d915c1 100644
75     --- a/arch/m32r/Kconfig
76     +++ b/arch/m32r/Kconfig
77     @@ -196,8 +196,8 @@ config TIMER_DIVIDE
78     default "128"
79    
80     config CPU_BIG_ENDIAN
81     - bool "Generate big endian code"
82     - default n
83     + bool
84     + default !CPU_LITTLE_ENDIAN
85    
86     config CPU_LITTLE_ENDIAN
87     bool "Generate little endian code"
88     diff --git a/arch/microblaze/Makefile b/arch/microblaze/Makefile
89     index 830ee7d42fa0..d269dd4b8279 100644
90     --- a/arch/microblaze/Makefile
91     +++ b/arch/microblaze/Makefile
92     @@ -36,16 +36,21 @@ endif
93     CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_DIV) += -mno-xl-soft-div
94     CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_BARREL) += -mxl-barrel-shift
95     CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR) += -mxl-pattern-compare
96     -CPUFLAGS-$(CONFIG_BIG_ENDIAN) += -mbig-endian
97     -CPUFLAGS-$(CONFIG_LITTLE_ENDIAN) += -mlittle-endian
98     +
99     +ifdef CONFIG_CPU_BIG_ENDIAN
100     +KBUILD_CFLAGS += -mbig-endian
101     +KBUILD_AFLAGS += -mbig-endian
102     +LD += -EB
103     +else
104     +KBUILD_CFLAGS += -mlittle-endian
105     +KBUILD_AFLAGS += -mlittle-endian
106     +LD += -EL
107     +endif
108    
109     CPUFLAGS-1 += $(call cc-option,-mcpu=v$(CPU_VER))
110    
111     # r31 holds current when in kernel mode
112     -KBUILD_CFLAGS += -ffixed-r31 $(CPUFLAGS-1) $(CPUFLAGS-2)
113     -
114     -LDFLAGS :=
115     -LDFLAGS_vmlinux :=
116     +KBUILD_CFLAGS += -ffixed-r31 $(CPUFLAGS-y) $(CPUFLAGS-1) $(CPUFLAGS-2)
117    
118     head-y := arch/microblaze/kernel/head.o
119     libs-y += arch/microblaze/lib/
120     diff --git a/arch/mips/boot/Makefile b/arch/mips/boot/Makefile
121     index 1bd5c4f00d19..c22da16d67b8 100644
122     --- a/arch/mips/boot/Makefile
123     +++ b/arch/mips/boot/Makefile
124     @@ -126,6 +126,7 @@ $(obj)/vmlinux.its.S: $(addprefix $(srctree)/arch/mips/$(PLATFORM)/,$(ITS_INPUTS
125    
126     quiet_cmd_cpp_its_S = ITS $@
127     cmd_cpp_its_S = $(CPP) $(cpp_flags) -P -C -o $@ $< \
128     + -D__ASSEMBLY__ \
129     -DKERNEL_NAME="\"Linux $(KERNELRELEASE)\"" \
130     -DVMLINUX_BINARY="\"$(3)\"" \
131     -DVMLINUX_COMPRESSION="\"$(2)\"" \
132     diff --git a/arch/mips/include/asm/compat.h b/arch/mips/include/asm/compat.h
133     index 49691331ada4..08ec0762ca50 100644
134     --- a/arch/mips/include/asm/compat.h
135     +++ b/arch/mips/include/asm/compat.h
136     @@ -86,7 +86,6 @@ struct compat_flock {
137     compat_off_t l_len;
138     s32 l_sysid;
139     compat_pid_t l_pid;
140     - short __unused;
141     s32 pad[4];
142     };
143    
144     diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c
145     index ffdbc4836b4f..abff76bda9e6 100644
146     --- a/arch/x86/oprofile/nmi_int.c
147     +++ b/arch/x86/oprofile/nmi_int.c
148     @@ -460,7 +460,7 @@ static int nmi_setup(void)
149     goto fail;
150    
151     for_each_possible_cpu(cpu) {
152     - if (!cpu)
153     + if (!IS_ENABLED(CONFIG_SMP) || !cpu)
154     continue;
155    
156     memcpy(per_cpu(cpu_msrs, cpu).counters,
157     diff --git a/arch/xtensa/mm/init.c b/arch/xtensa/mm/init.c
158     index 720fe4e8b497..8dad076661fc 100644
159     --- a/arch/xtensa/mm/init.c
160     +++ b/arch/xtensa/mm/init.c
161     @@ -79,19 +79,75 @@ void __init zones_init(void)
162     free_area_init_node(0, zones_size, ARCH_PFN_OFFSET, NULL);
163     }
164    
165     +#ifdef CONFIG_HIGHMEM
166     +static void __init free_area_high(unsigned long pfn, unsigned long end)
167     +{
168     + for (; pfn < end; pfn++)
169     + free_highmem_page(pfn_to_page(pfn));
170     +}
171     +
172     +static void __init free_highpages(void)
173     +{
174     + unsigned long max_low = max_low_pfn;
175     + struct memblock_region *mem, *res;
176     +
177     + reset_all_zones_managed_pages();
178     + /* set highmem page free */
179     + for_each_memblock(memory, mem) {
180     + unsigned long start = memblock_region_memory_base_pfn(mem);
181     + unsigned long end = memblock_region_memory_end_pfn(mem);
182     +
183     + /* Ignore complete lowmem entries */
184     + if (end <= max_low)
185     + continue;
186     +
187     + if (memblock_is_nomap(mem))
188     + continue;
189     +
190     + /* Truncate partial highmem entries */
191     + if (start < max_low)
192     + start = max_low;
193     +
194     + /* Find and exclude any reserved regions */
195     + for_each_memblock(reserved, res) {
196     + unsigned long res_start, res_end;
197     +
198     + res_start = memblock_region_reserved_base_pfn(res);
199     + res_end = memblock_region_reserved_end_pfn(res);
200     +
201     + if (res_end < start)
202     + continue;
203     + if (res_start < start)
204     + res_start = start;
205     + if (res_start > end)
206     + res_start = end;
207     + if (res_end > end)
208     + res_end = end;
209     + if (res_start != start)
210     + free_area_high(start, res_start);
211     + start = res_end;
212     + if (start == end)
213     + break;
214     + }
215     +
216     + /* And now free anything which remains */
217     + if (start < end)
218     + free_area_high(start, end);
219     + }
220     +}
221     +#else
222     +static void __init free_highpages(void)
223     +{
224     +}
225     +#endif
226     +
227     /*
228     * Initialize memory pages.
229     */
230    
231     void __init mem_init(void)
232     {
233     -#ifdef CONFIG_HIGHMEM
234     - unsigned long tmp;
235     -
236     - reset_all_zones_managed_pages();
237     - for (tmp = max_low_pfn; tmp < max_pfn; tmp++)
238     - free_highmem_page(pfn_to_page(tmp));
239     -#endif
240     + free_highpages();
241    
242     max_mapnr = max_pfn - ARCH_PFN_OFFSET;
243     high_memory = (void *)__va(max_low_pfn << PAGE_SHIFT);
244     diff --git a/crypto/asymmetric_keys/pkcs7_verify.c b/crypto/asymmetric_keys/pkcs7_verify.c
245     index 986033e64a83..a18295651077 100644
246     --- a/crypto/asymmetric_keys/pkcs7_verify.c
247     +++ b/crypto/asymmetric_keys/pkcs7_verify.c
248     @@ -273,7 +273,7 @@ static int pkcs7_verify_sig_chain(struct pkcs7_message *pkcs7,
249     sinfo->index);
250     return 0;
251     }
252     - ret = public_key_verify_signature(p->pub, p->sig);
253     + ret = public_key_verify_signature(p->pub, x509->sig);
254     if (ret < 0)
255     return ret;
256     x509->signer = p;
257     @@ -369,8 +369,7 @@ static int pkcs7_verify_one(struct pkcs7_message *pkcs7,
258     *
259     * (*) -EBADMSG if some part of the message was invalid, or:
260     *
261     - * (*) 0 if no signature chains were found to be blacklisted or to contain
262     - * unsupported crypto, or:
263     + * (*) 0 if a signature chain passed verification, or:
264     *
265     * (*) -EKEYREJECTED if a blacklisted key was encountered, or:
266     *
267     @@ -426,8 +425,11 @@ int pkcs7_verify(struct pkcs7_message *pkcs7,
268    
269     for (sinfo = pkcs7->signed_infos; sinfo; sinfo = sinfo->next) {
270     ret = pkcs7_verify_one(pkcs7, sinfo);
271     - if (sinfo->blacklisted && actual_ret == -ENOPKG)
272     - actual_ret = -EKEYREJECTED;
273     + if (sinfo->blacklisted) {
274     + if (actual_ret == -ENOPKG)
275     + actual_ret = -EKEYREJECTED;
276     + continue;
277     + }
278     if (ret < 0) {
279     if (ret == -ENOPKG) {
280     sinfo->unsupported_crypto = true;
281     diff --git a/crypto/asymmetric_keys/public_key.c b/crypto/asymmetric_keys/public_key.c
282     index 3cd6e12cfc46..d1af69d2ff85 100644
283     --- a/crypto/asymmetric_keys/public_key.c
284     +++ b/crypto/asymmetric_keys/public_key.c
285     @@ -93,9 +93,11 @@ int public_key_verify_signature(const struct public_key *pkey,
286    
287     BUG_ON(!pkey);
288     BUG_ON(!sig);
289     - BUG_ON(!sig->digest);
290     BUG_ON(!sig->s);
291    
292     + if (!sig->digest)
293     + return -ENOPKG;
294     +
295     alg_name = sig->pkey_algo;
296     if (strcmp(sig->pkey_algo, "rsa") == 0) {
297     /* The data wangled by the RSA algorithm is typically padded
298     diff --git a/crypto/asymmetric_keys/restrict.c b/crypto/asymmetric_keys/restrict.c
299     index 86fb68508952..7c93c7728454 100644
300     --- a/crypto/asymmetric_keys/restrict.c
301     +++ b/crypto/asymmetric_keys/restrict.c
302     @@ -67,8 +67,9 @@ __setup("ca_keys=", ca_keys_setup);
303     *
304     * Returns 0 if the new certificate was accepted, -ENOKEY if we couldn't find a
305     * matching parent certificate in the trusted list, -EKEYREJECTED if the
306     - * signature check fails or the key is blacklisted and some other error if
307     - * there is a matching certificate but the signature check cannot be performed.
308     + * signature check fails or the key is blacklisted, -ENOPKG if the signature
309     + * uses unsupported crypto, or some other error if there is a matching
310     + * certificate but the signature check cannot be performed.
311     */
312     int restrict_link_by_signature(struct key *dest_keyring,
313     const struct key_type *type,
314     @@ -88,6 +89,8 @@ int restrict_link_by_signature(struct key *dest_keyring,
315     return -EOPNOTSUPP;
316    
317     sig = payload->data[asym_auth];
318     + if (!sig)
319     + return -ENOPKG;
320     if (!sig->auth_ids[0] && !sig->auth_ids[1])
321     return -ENOKEY;
322    
323     @@ -139,6 +142,8 @@ static int key_or_keyring_common(struct key *dest_keyring,
324     return -EOPNOTSUPP;
325    
326     sig = payload->data[asym_auth];
327     + if (!sig)
328     + return -ENOPKG;
329     if (!sig->auth_ids[0] && !sig->auth_ids[1])
330     return -ENOKEY;
331    
332     @@ -222,9 +227,9 @@ static int key_or_keyring_common(struct key *dest_keyring,
333     *
334     * Returns 0 if the new certificate was accepted, -ENOKEY if we
335     * couldn't find a matching parent certificate in the trusted list,
336     - * -EKEYREJECTED if the signature check fails, and some other error if
337     - * there is a matching certificate but the signature check cannot be
338     - * performed.
339     + * -EKEYREJECTED if the signature check fails, -ENOPKG if the signature uses
340     + * unsupported crypto, or some other error if there is a matching certificate
341     + * but the signature check cannot be performed.
342     */
343     int restrict_link_by_key_or_keyring(struct key *dest_keyring,
344     const struct key_type *type,
345     @@ -249,9 +254,9 @@ int restrict_link_by_key_or_keyring(struct key *dest_keyring,
346     *
347     * Returns 0 if the new certificate was accepted, -ENOKEY if we
348     * couldn't find a matching parent certificate in the trusted list,
349     - * -EKEYREJECTED if the signature check fails, and some other error if
350     - * there is a matching certificate but the signature check cannot be
351     - * performed.
352     + * -EKEYREJECTED if the signature check fails, -ENOPKG if the signature uses
353     + * unsupported crypto, or some other error if there is a matching certificate
354     + * but the signature check cannot be performed.
355     */
356     int restrict_link_by_key_or_keyring_chain(struct key *dest_keyring,
357     const struct key_type *type,
358     diff --git a/drivers/extcon/extcon-intel-int3496.c b/drivers/extcon/extcon-intel-int3496.c
359     index 1a45e745717d..a6661097b2f9 100644
360     --- a/drivers/extcon/extcon-intel-int3496.c
361     +++ b/drivers/extcon/extcon-intel-int3496.c
362     @@ -153,8 +153,9 @@ static int int3496_probe(struct platform_device *pdev)
363     return ret;
364     }
365    
366     - /* queue initial processing of id-pin */
367     + /* process id-pin so that we start with the right status */
368     queue_delayed_work(system_wq, &data->work, 0);
369     + flush_delayed_work(&data->work);
370    
371     platform_set_drvdata(pdev, data);
372    
373     diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c
374     index c13c51af0b68..c53095b3b0fb 100644
375     --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c
376     +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c
377     @@ -14,6 +14,16 @@
378    
379     #include "amd_acpi.h"
380    
381     +#define AMDGPU_PX_QUIRK_FORCE_ATPX (1 << 0)
382     +
383     +struct amdgpu_px_quirk {
384     + u32 chip_vendor;
385     + u32 chip_device;
386     + u32 subsys_vendor;
387     + u32 subsys_device;
388     + u32 px_quirk_flags;
389     +};
390     +
391     struct amdgpu_atpx_functions {
392     bool px_params;
393     bool power_cntl;
394     @@ -35,6 +45,7 @@ struct amdgpu_atpx {
395     static struct amdgpu_atpx_priv {
396     bool atpx_detected;
397     bool bridge_pm_usable;
398     + unsigned int quirks;
399     /* handle for device - and atpx */
400     acpi_handle dhandle;
401     acpi_handle other_handle;
402     @@ -205,13 +216,19 @@ static int amdgpu_atpx_validate(struct amdgpu_atpx *atpx)
403    
404     atpx->is_hybrid = false;
405     if (valid_bits & ATPX_MS_HYBRID_GFX_SUPPORTED) {
406     - printk("ATPX Hybrid Graphics\n");
407     - /*
408     - * Disable legacy PM methods only when pcie port PM is usable,
409     - * otherwise the device might fail to power off or power on.
410     - */
411     - atpx->functions.power_cntl = !amdgpu_atpx_priv.bridge_pm_usable;
412     - atpx->is_hybrid = true;
413     + if (amdgpu_atpx_priv.quirks & AMDGPU_PX_QUIRK_FORCE_ATPX) {
414     + printk("ATPX Hybrid Graphics, forcing to ATPX\n");
415     + atpx->functions.power_cntl = true;
416     + atpx->is_hybrid = false;
417     + } else {
418     + printk("ATPX Hybrid Graphics\n");
419     + /*
420     + * Disable legacy PM methods only when pcie port PM is usable,
421     + * otherwise the device might fail to power off or power on.
422     + */
423     + atpx->functions.power_cntl = !amdgpu_atpx_priv.bridge_pm_usable;
424     + atpx->is_hybrid = true;
425     + }
426     }
427    
428     atpx->dgpu_req_power_for_displays = false;
429     @@ -547,6 +564,31 @@ static const struct vga_switcheroo_handler amdgpu_atpx_handler = {
430     .get_client_id = amdgpu_atpx_get_client_id,
431     };
432    
433     +static const struct amdgpu_px_quirk amdgpu_px_quirk_list[] = {
434     + /* HG _PR3 doesn't seem to work on this A+A weston board */
435     + { 0x1002, 0x6900, 0x1002, 0x0124, AMDGPU_PX_QUIRK_FORCE_ATPX },
436     + { 0x1002, 0x6900, 0x1028, 0x0812, AMDGPU_PX_QUIRK_FORCE_ATPX },
437     + { 0x1002, 0x6900, 0x1028, 0x0813, AMDGPU_PX_QUIRK_FORCE_ATPX },
438     + { 0, 0, 0, 0, 0 },
439     +};
440     +
441     +static void amdgpu_atpx_get_quirks(struct pci_dev *pdev)
442     +{
443     + const struct amdgpu_px_quirk *p = amdgpu_px_quirk_list;
444     +
445     + /* Apply PX quirks */
446     + while (p && p->chip_device != 0) {
447     + if (pdev->vendor == p->chip_vendor &&
448     + pdev->device == p->chip_device &&
449     + pdev->subsystem_vendor == p->subsys_vendor &&
450     + pdev->subsystem_device == p->subsys_device) {
451     + amdgpu_atpx_priv.quirks |= p->px_quirk_flags;
452     + break;
453     + }
454     + ++p;
455     + }
456     +}
457     +
458     /**
459     * amdgpu_atpx_detect - detect whether we have PX
460     *
461     @@ -570,6 +612,7 @@ static bool amdgpu_atpx_detect(void)
462    
463     parent_pdev = pci_upstream_bridge(pdev);
464     d3_supported |= parent_pdev && parent_pdev->bridge_d3;
465     + amdgpu_atpx_get_quirks(pdev);
466     }
467    
468     while ((pdev = pci_get_class(PCI_CLASS_DISPLAY_OTHER << 8, pdev)) != NULL) {
469     @@ -579,6 +622,7 @@ static bool amdgpu_atpx_detect(void)
470    
471     parent_pdev = pci_upstream_bridge(pdev);
472     d3_supported |= parent_pdev && parent_pdev->bridge_d3;
473     + amdgpu_atpx_get_quirks(pdev);
474     }
475    
476     if (has_atpx && vga_count == 2) {
477     diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
478     index e630d918fefc..bc746a6e0ecc 100644
479     --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
480     +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
481     @@ -2076,8 +2076,6 @@ int amdgpu_device_init(struct amdgpu_device *adev,
482     * ignore it */
483     vga_client_register(adev->pdev, adev, NULL, amdgpu_vga_set_decode);
484    
485     - if (amdgpu_runtime_pm == 1)
486     - runtime = true;
487     if (amdgpu_device_is_px(ddev))
488     runtime = true;
489     if (!pci_is_thunderbolt_attached(adev->pdev))
490     diff --git a/drivers/gpu/drm/amd/amdgpu/si_dpm.c b/drivers/gpu/drm/amd/amdgpu/si_dpm.c
491     index d63873f3f574..a2aeb643ac51 100644
492     --- a/drivers/gpu/drm/amd/amdgpu/si_dpm.c
493     +++ b/drivers/gpu/drm/amd/amdgpu/si_dpm.c
494     @@ -3465,6 +3465,11 @@ static void si_apply_state_adjust_rules(struct amdgpu_device *adev,
495     (adev->pdev->device == 0x6667)) {
496     max_sclk = 75000;
497     }
498     + if ((adev->pdev->revision == 0xC3) ||
499     + (adev->pdev->device == 0x6665)) {
500     + max_sclk = 60000;
501     + max_mclk = 80000;
502     + }
503     } else if (adev->asic_type == CHIP_OLAND) {
504     if ((adev->pdev->revision == 0xC7) ||
505     (adev->pdev->revision == 0x80) ||
506     diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c b/drivers/gpu/drm/amd/amdgpu/soc15.c
507     index 3e59c766722c..ff7d4827385e 100644
508     --- a/drivers/gpu/drm/amd/amdgpu/soc15.c
509     +++ b/drivers/gpu/drm/amd/amdgpu/soc15.c
510     @@ -661,8 +661,8 @@ static int soc15_common_early_init(void *handle)
511     AMD_CG_SUPPORT_MC_LS |
512     AMD_CG_SUPPORT_SDMA_MGCG |
513     AMD_CG_SUPPORT_SDMA_LS;
514     - adev->pg_flags = AMD_PG_SUPPORT_SDMA |
515     - AMD_PG_SUPPORT_MMHUB;
516     + adev->pg_flags = AMD_PG_SUPPORT_SDMA;
517     +
518     adev->external_rev_id = 0x1;
519     break;
520     default:
521     diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c b/drivers/gpu/drm/amd/amdgpu/vi.c
522     index 9ff69b90df36..4968b6bb9466 100644
523     --- a/drivers/gpu/drm/amd/amdgpu/vi.c
524     +++ b/drivers/gpu/drm/amd/amdgpu/vi.c
525     @@ -448,14 +448,19 @@ static bool vi_read_bios_from_rom(struct amdgpu_device *adev,
526    
527     static void vi_detect_hw_virtualization(struct amdgpu_device *adev)
528     {
529     - uint32_t reg = RREG32(mmBIF_IOV_FUNC_IDENTIFIER);
530     - /* bit0: 0 means pf and 1 means vf */
531     - /* bit31: 0 means disable IOV and 1 means enable */
532     - if (reg & 1)
533     - adev->virt.caps |= AMDGPU_SRIOV_CAPS_IS_VF;
534     -
535     - if (reg & 0x80000000)
536     - adev->virt.caps |= AMDGPU_SRIOV_CAPS_ENABLE_IOV;
537     + uint32_t reg = 0;
538     +
539     + if (adev->asic_type == CHIP_TONGA ||
540     + adev->asic_type == CHIP_FIJI) {
541     + reg = RREG32(mmBIF_IOV_FUNC_IDENTIFIER);
542     + /* bit0: 0 means pf and 1 means vf */
543     + /* bit31: 0 means disable IOV and 1 means enable */
544     + if (reg & 1)
545     + adev->virt.caps |= AMDGPU_SRIOV_CAPS_IS_VF;
546     +
547     + if (reg & 0x80000000)
548     + adev->virt.caps |= AMDGPU_SRIOV_CAPS_ENABLE_IOV;
549     + }
550    
551     if (reg == 0) {
552     if (is_virtual_machine()) /* passthrough mode exclus sr-iov mode */
553     diff --git a/drivers/gpu/drm/cirrus/cirrus_mode.c b/drivers/gpu/drm/cirrus/cirrus_mode.c
554     index a4c4a465b385..130483f2cd7f 100644
555     --- a/drivers/gpu/drm/cirrus/cirrus_mode.c
556     +++ b/drivers/gpu/drm/cirrus/cirrus_mode.c
557     @@ -294,22 +294,7 @@ static void cirrus_crtc_prepare(struct drm_crtc *crtc)
558     {
559     }
560    
561     -/*
562     - * This is called after a mode is programmed. It should reverse anything done
563     - * by the prepare function
564     - */
565     -static void cirrus_crtc_commit(struct drm_crtc *crtc)
566     -{
567     -}
568     -
569     -/*
570     - * The core can pass us a set of gamma values to program. We actually only
571     - * use this for 8-bit mode so can't perform smooth fades on deeper modes,
572     - * but it's a requirement that we provide the function
573     - */
574     -static int cirrus_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
575     - u16 *blue, uint32_t size,
576     - struct drm_modeset_acquire_ctx *ctx)
577     +static void cirrus_crtc_load_lut(struct drm_crtc *crtc)
578     {
579     struct drm_device *dev = crtc->dev;
580     struct cirrus_device *cdev = dev->dev_private;
581     @@ -317,7 +302,7 @@ static int cirrus_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
582     int i;
583    
584     if (!crtc->enabled)
585     - return 0;
586     + return;
587    
588     r = crtc->gamma_store;
589     g = r + crtc->gamma_size;
590     @@ -330,6 +315,27 @@ static int cirrus_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
591     WREG8(PALETTE_DATA, *g++ >> 8);
592     WREG8(PALETTE_DATA, *b++ >> 8);
593     }
594     +}
595     +
596     +/*
597     + * This is called after a mode is programmed. It should reverse anything done
598     + * by the prepare function
599     + */
600     +static void cirrus_crtc_commit(struct drm_crtc *crtc)
601     +{
602     + cirrus_crtc_load_lut(crtc);
603     +}
604     +
605     +/*
606     + * The core can pass us a set of gamma values to program. We actually only
607     + * use this for 8-bit mode so can't perform smooth fades on deeper modes,
608     + * but it's a requirement that we provide the function
609     + */
610     +static int cirrus_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
611     + u16 *blue, uint32_t size,
612     + struct drm_modeset_acquire_ctx *ctx)
613     +{
614     + cirrus_crtc_load_lut(crtc);
615    
616     return 0;
617     }
618     diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
619     index fc7946eb6665..d52c9758d8cf 100644
620     --- a/drivers/gpu/drm/drm_edid.c
621     +++ b/drivers/gpu/drm/drm_edid.c
622     @@ -111,6 +111,9 @@ static const struct edid_quirk {
623     /* AEO model 0 reports 8 bpc, but is a 6 bpc panel */
624     { "AEO", 0, EDID_QUIRK_FORCE_6BPC },
625    
626     + /* CPT panel of Asus UX303LA reports 8 bpc, but is a 6 bpc panel */
627     + { "CPT", 0x17df, EDID_QUIRK_FORCE_6BPC },
628     +
629     /* Belinea 10 15 55 */
630     { "MAX", 1516, EDID_QUIRK_PREFER_LARGE_60 },
631     { "MAX", 0x77e, EDID_QUIRK_PREFER_LARGE_60 },
632     diff --git a/drivers/gpu/drm/drm_mm.c b/drivers/gpu/drm/drm_mm.c
633     index 61a1c8ea74bc..1acf3b1479a1 100644
634     --- a/drivers/gpu/drm/drm_mm.c
635     +++ b/drivers/gpu/drm/drm_mm.c
636     @@ -834,9 +834,24 @@ struct drm_mm_node *drm_mm_scan_color_evict(struct drm_mm_scan *scan)
637     if (!mm->color_adjust)
638     return NULL;
639    
640     - hole = list_first_entry(&mm->hole_stack, typeof(*hole), hole_stack);
641     - hole_start = __drm_mm_hole_node_start(hole);
642     - hole_end = hole_start + hole->hole_size;
643     + /*
644     + * The hole found during scanning should ideally be the first element
645     + * in the hole_stack list, but due to side-effects in the driver it
646     + * may not be.
647     + */
648     + list_for_each_entry(hole, &mm->hole_stack, hole_stack) {
649     + hole_start = __drm_mm_hole_node_start(hole);
650     + hole_end = hole_start + hole->hole_size;
651     +
652     + if (hole_start <= scan->hit_start &&
653     + hole_end >= scan->hit_end)
654     + break;
655     + }
656     +
657     + /* We should only be called after we found the hole previously */
658     + DRM_MM_BUG_ON(&hole->hole_stack == &mm->hole_stack);
659     + if (unlikely(&hole->hole_stack == &mm->hole_stack))
660     + return NULL;
661    
662     DRM_MM_BUG_ON(hole_start > scan->hit_start);
663     DRM_MM_BUG_ON(hole_end < scan->hit_end);
664     diff --git a/drivers/gpu/drm/i915/intel_breadcrumbs.c b/drivers/gpu/drm/i915/intel_breadcrumbs.c
665     index 4e00e5cb9fa1..5095c095da04 100644
666     --- a/drivers/gpu/drm/i915/intel_breadcrumbs.c
667     +++ b/drivers/gpu/drm/i915/intel_breadcrumbs.c
668     @@ -541,29 +541,16 @@ void intel_engine_remove_wait(struct intel_engine_cs *engine,
669     spin_unlock_irq(&b->rb_lock);
670     }
671    
672     -static bool signal_valid(const struct drm_i915_gem_request *request)
673     -{
674     - return intel_wait_check_request(&request->signaling.wait, request);
675     -}
676     -
677     static bool signal_complete(const struct drm_i915_gem_request *request)
678     {
679     if (!request)
680     return false;
681    
682     - /* If another process served as the bottom-half it may have already
683     - * signalled that this wait is already completed.
684     - */
685     - if (intel_wait_complete(&request->signaling.wait))
686     - return signal_valid(request);
687     -
688     - /* Carefully check if the request is complete, giving time for the
689     + /*
690     + * Carefully check if the request is complete, giving time for the
691     * seqno to be visible or if the GPU hung.
692     */
693     - if (__i915_request_irq_complete(request))
694     - return true;
695     -
696     - return false;
697     + return __i915_request_irq_complete(request);
698     }
699    
700     static struct drm_i915_gem_request *to_signaler(struct rb_node *rb)
701     @@ -606,9 +593,13 @@ static int intel_breadcrumbs_signaler(void *arg)
702     request = i915_gem_request_get_rcu(request);
703     rcu_read_unlock();
704     if (signal_complete(request)) {
705     - local_bh_disable();
706     - dma_fence_signal(&request->fence);
707     - local_bh_enable(); /* kick start the tasklets */
708     + if (!test_bit(DMA_FENCE_FLAG_SIGNALED_BIT,
709     + &request->fence.flags)) {
710     + local_bh_disable();
711     + dma_fence_signal(&request->fence);
712     + GEM_BUG_ON(!i915_gem_request_completed(request));
713     + local_bh_enable(); /* kick start the tasklets */
714     + }
715    
716     spin_lock_irq(&b->rb_lock);
717    
718     diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
719     index 5744eb729d24..ca2fbe56635a 100644
720     --- a/drivers/hid/hid-core.c
721     +++ b/drivers/hid/hid-core.c
722     @@ -2716,6 +2716,9 @@ static const struct hid_device_id hid_ignore_list[] = {
723     { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYTIME) },
724     { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYTEMPERATURE) },
725     { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYPH) },
726     + { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POWERANALYSERCASSY) },
727     + { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CONVERTERCONTROLLERCASSY) },
728     + { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MACHINETESTCASSY) },
729     { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_JWM) },
730     { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_DMMP) },
731     { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_UMIP) },
732     diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
733     index be2e005c3c51..ff539c0b4637 100644
734     --- a/drivers/hid/hid-ids.h
735     +++ b/drivers/hid/hid-ids.h
736     @@ -634,6 +634,9 @@
737     #define USB_DEVICE_ID_LD_MICROCASSYTIME 0x1033
738     #define USB_DEVICE_ID_LD_MICROCASSYTEMPERATURE 0x1035
739     #define USB_DEVICE_ID_LD_MICROCASSYPH 0x1038
740     +#define USB_DEVICE_ID_LD_POWERANALYSERCASSY 0x1040
741     +#define USB_DEVICE_ID_LD_CONVERTERCONTROLLERCASSY 0x1042
742     +#define USB_DEVICE_ID_LD_MACHINETESTCASSY 0x1043
743     #define USB_DEVICE_ID_LD_JWM 0x1080
744     #define USB_DEVICE_ID_LD_DMMP 0x1081
745     #define USB_DEVICE_ID_LD_UMIP 0x1090
746     diff --git a/drivers/i2c/busses/i2c-bcm2835.c b/drivers/i2c/busses/i2c-bcm2835.c
747     index cd07a69e2e93..44deae78913e 100644
748     --- a/drivers/i2c/busses/i2c-bcm2835.c
749     +++ b/drivers/i2c/busses/i2c-bcm2835.c
750     @@ -50,6 +50,9 @@
751     #define BCM2835_I2C_S_CLKT BIT(9)
752     #define BCM2835_I2C_S_LEN BIT(10) /* Fake bit for SW error reporting */
753    
754     +#define BCM2835_I2C_FEDL_SHIFT 16
755     +#define BCM2835_I2C_REDL_SHIFT 0
756     +
757     #define BCM2835_I2C_CDIV_MIN 0x0002
758     #define BCM2835_I2C_CDIV_MAX 0xFFFE
759    
760     @@ -81,7 +84,7 @@ static inline u32 bcm2835_i2c_readl(struct bcm2835_i2c_dev *i2c_dev, u32 reg)
761    
762     static int bcm2835_i2c_set_divider(struct bcm2835_i2c_dev *i2c_dev)
763     {
764     - u32 divider;
765     + u32 divider, redl, fedl;
766    
767     divider = DIV_ROUND_UP(clk_get_rate(i2c_dev->clk),
768     i2c_dev->bus_clk_rate);
769     @@ -100,6 +103,22 @@ static int bcm2835_i2c_set_divider(struct bcm2835_i2c_dev *i2c_dev)
770    
771     bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_DIV, divider);
772    
773     + /*
774     + * Number of core clocks to wait after falling edge before
775     + * outputting the next data bit. Note that both FEDL and REDL
776     + * can't be greater than CDIV/2.
777     + */
778     + fedl = max(divider / 16, 1u);
779     +
780     + /*
781     + * Number of core clocks to wait after rising edge before
782     + * sampling the next incoming data bit.
783     + */
784     + redl = max(divider / 4, 1u);
785     +
786     + bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_DEL,
787     + (fedl << BCM2835_I2C_FEDL_SHIFT) |
788     + (redl << BCM2835_I2C_REDL_SHIFT));
789     return 0;
790     }
791    
792     diff --git a/drivers/i2c/busses/i2c-designware-master.c b/drivers/i2c/busses/i2c-designware-master.c
793     index 418c233075d3..13e849bf9aa0 100644
794     --- a/drivers/i2c/busses/i2c-designware-master.c
795     +++ b/drivers/i2c/busses/i2c-designware-master.c
796     @@ -207,7 +207,7 @@ static void i2c_dw_xfer_init(struct dw_i2c_dev *dev)
797     i2c_dw_disable_int(dev);
798    
799     /* Enable the adapter */
800     - __i2c_dw_enable(dev, true);
801     + __i2c_dw_enable_and_wait(dev, true);
802    
803     /* Clear and enable interrupts */
804     dw_readl(dev, DW_IC_CLR_INTR);
805     diff --git a/drivers/iio/adc/stm32-adc.c b/drivers/iio/adc/stm32-adc.c
806     index 172753b14a4f..04be8bd951be 100644
807     --- a/drivers/iio/adc/stm32-adc.c
808     +++ b/drivers/iio/adc/stm32-adc.c
809     @@ -764,8 +764,6 @@ static int stm32h7_adc_enable(struct stm32_adc *adc)
810     int ret;
811     u32 val;
812    
813     - /* Clear ADRDY by writing one, then enable ADC */
814     - stm32_adc_set_bits(adc, STM32H7_ADC_ISR, STM32H7_ADRDY);
815     stm32_adc_set_bits(adc, STM32H7_ADC_CR, STM32H7_ADEN);
816    
817     /* Poll for ADRDY to be set (after adc startup time) */
818     @@ -773,8 +771,11 @@ static int stm32h7_adc_enable(struct stm32_adc *adc)
819     val & STM32H7_ADRDY,
820     100, STM32_ADC_TIMEOUT_US);
821     if (ret) {
822     - stm32_adc_clr_bits(adc, STM32H7_ADC_CR, STM32H7_ADEN);
823     + stm32_adc_set_bits(adc, STM32H7_ADC_CR, STM32H7_ADDIS);
824     dev_err(&indio_dev->dev, "Failed to enable ADC\n");
825     + } else {
826     + /* Clear ADRDY by writing one */
827     + stm32_adc_set_bits(adc, STM32H7_ADC_ISR, STM32H7_ADRDY);
828     }
829    
830     return ret;
831     diff --git a/drivers/iio/imu/adis_trigger.c b/drivers/iio/imu/adis_trigger.c
832     index f53e9a803a0e..93b99bd93738 100644
833     --- a/drivers/iio/imu/adis_trigger.c
834     +++ b/drivers/iio/imu/adis_trigger.c
835     @@ -47,6 +47,10 @@ int adis_probe_trigger(struct adis *adis, struct iio_dev *indio_dev)
836     if (adis->trig == NULL)
837     return -ENOMEM;
838    
839     + adis->trig->dev.parent = &adis->spi->dev;
840     + adis->trig->ops = &adis_trigger_ops;
841     + iio_trigger_set_drvdata(adis->trig, adis);
842     +
843     ret = request_irq(adis->spi->irq,
844     &iio_trigger_generic_data_rdy_poll,
845     IRQF_TRIGGER_RISING,
846     @@ -55,9 +59,6 @@ int adis_probe_trigger(struct adis *adis, struct iio_dev *indio_dev)
847     if (ret)
848     goto error_free_trig;
849    
850     - adis->trig->dev.parent = &adis->spi->dev;
851     - adis->trig->ops = &adis_trigger_ops;
852     - iio_trigger_set_drvdata(adis->trig, adis);
853     ret = iio_trigger_register(adis->trig);
854    
855     indio_dev->trig = iio_trigger_get(adis->trig);
856     diff --git a/drivers/iio/industrialio-buffer.c b/drivers/iio/industrialio-buffer.c
857     index d2b465140a6b..78482d456c3b 100644
858     --- a/drivers/iio/industrialio-buffer.c
859     +++ b/drivers/iio/industrialio-buffer.c
860     @@ -175,7 +175,7 @@ unsigned int iio_buffer_poll(struct file *filp,
861     struct iio_dev *indio_dev = filp->private_data;
862     struct iio_buffer *rb = indio_dev->buffer;
863    
864     - if (!indio_dev->info)
865     + if (!indio_dev->info || rb == NULL)
866     return 0;
867    
868     poll_wait(filp, &rb->pollq, wait);
869     diff --git a/drivers/iio/proximity/Kconfig b/drivers/iio/proximity/Kconfig
870     index ae070950f920..c03de24d3c51 100644
871     --- a/drivers/iio/proximity/Kconfig
872     +++ b/drivers/iio/proximity/Kconfig
873     @@ -58,6 +58,8 @@ config SX9500
874    
875     config SRF08
876     tristate "Devantech SRF02/SRF08/SRF10 ultrasonic ranger sensor"
877     + select IIO_BUFFER
878     + select IIO_TRIGGERED_BUFFER
879     depends on I2C
880     help
881     Say Y here to build a driver for Devantech SRF02/SRF08/SRF10
882     diff --git a/drivers/infiniband/core/rdma_core.c b/drivers/infiniband/core/rdma_core.c
883     index 85b5ee4defa4..4e1f76730855 100644
884     --- a/drivers/infiniband/core/rdma_core.c
885     +++ b/drivers/infiniband/core/rdma_core.c
886     @@ -196,7 +196,15 @@ static struct ib_uobject *lookup_get_idr_uobject(const struct uverbs_obj_type *t
887     goto free;
888     }
889    
890     - uverbs_uobject_get(uobj);
891     + /*
892     + * The idr_find is guaranteed to return a pointer to something that
893     + * isn't freed yet, or NULL, as the free after idr_remove goes through
894     + * kfree_rcu(). However the object may still have been released and
895     + * kfree() could be called at any time.
896     + */
897     + if (!kref_get_unless_zero(&uobj->ref))
898     + uobj = ERR_PTR(-ENOENT);
899     +
900     free:
901     rcu_read_unlock();
902     return uobj;
903     diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
904     index 93c1a57dbff1..186dce6bba8f 100644
905     --- a/drivers/infiniband/core/uverbs_cmd.c
906     +++ b/drivers/infiniband/core/uverbs_cmd.c
907     @@ -565,9 +565,10 @@ ssize_t ib_uverbs_open_xrcd(struct ib_uverbs_file *file,
908     if (f.file)
909     fdput(f);
910    
911     + mutex_unlock(&file->device->xrcd_tree_mutex);
912     +
913     uobj_alloc_commit(&obj->uobject);
914    
915     - mutex_unlock(&file->device->xrcd_tree_mutex);
916     return in_len;
917    
918     err_copy:
919     @@ -606,10 +607,8 @@ ssize_t ib_uverbs_close_xrcd(struct ib_uverbs_file *file,
920    
921     uobj = uobj_get_write(uobj_get_type(xrcd), cmd.xrcd_handle,
922     file->ucontext);
923     - if (IS_ERR(uobj)) {
924     - mutex_unlock(&file->device->xrcd_tree_mutex);
925     + if (IS_ERR(uobj))
926     return PTR_ERR(uobj);
927     - }
928    
929     ret = uobj_remove_commit(uobj);
930     return ret ?: in_len;
931     @@ -1982,8 +1981,15 @@ static int modify_qp(struct ib_uverbs_file *file,
932     goto release_qp;
933     }
934    
935     + if ((cmd->base.attr_mask & IB_QP_AV) &&
936     + !rdma_is_port_valid(qp->device, cmd->base.dest.port_num)) {
937     + ret = -EINVAL;
938     + goto release_qp;
939     + }
940     +
941     if ((cmd->base.attr_mask & IB_QP_ALT_PATH) &&
942     - !rdma_is_port_valid(qp->device, cmd->base.alt_port_num)) {
943     + (!rdma_is_port_valid(qp->device, cmd->base.alt_port_num) ||
944     + !rdma_is_port_valid(qp->device, cmd->base.alt_dest.port_num))) {
945     ret = -EINVAL;
946     goto release_qp;
947     }
948     diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c
949     index dc2aed6fb21b..0f70ff91276e 100644
950     --- a/drivers/infiniband/core/uverbs_main.c
951     +++ b/drivers/infiniband/core/uverbs_main.c
952     @@ -647,12 +647,21 @@ static int verify_command_mask(struct ib_device *ib_dev, __u32 command)
953     return -1;
954     }
955    
956     +static bool verify_command_idx(u32 command, bool extended)
957     +{
958     + if (extended)
959     + return command < ARRAY_SIZE(uverbs_ex_cmd_table);
960     +
961     + return command < ARRAY_SIZE(uverbs_cmd_table);
962     +}
963     +
964     static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf,
965     size_t count, loff_t *pos)
966     {
967     struct ib_uverbs_file *file = filp->private_data;
968     struct ib_device *ib_dev;
969     struct ib_uverbs_cmd_hdr hdr;
970     + bool extended_command;
971     __u32 command;
972     __u32 flags;
973     int srcu_key;
974     @@ -685,6 +694,15 @@ static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf,
975     }
976    
977     command = hdr.command & IB_USER_VERBS_CMD_COMMAND_MASK;
978     + flags = (hdr.command &
979     + IB_USER_VERBS_CMD_FLAGS_MASK) >> IB_USER_VERBS_CMD_FLAGS_SHIFT;
980     +
981     + extended_command = flags & IB_USER_VERBS_CMD_FLAG_EXTENDED;
982     + if (!verify_command_idx(command, extended_command)) {
983     + ret = -EINVAL;
984     + goto out;
985     + }
986     +
987     if (verify_command_mask(ib_dev, command)) {
988     ret = -EOPNOTSUPP;
989     goto out;
990     @@ -696,12 +714,8 @@ static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf,
991     goto out;
992     }
993    
994     - flags = (hdr.command &
995     - IB_USER_VERBS_CMD_FLAGS_MASK) >> IB_USER_VERBS_CMD_FLAGS_SHIFT;
996     -
997     if (!flags) {
998     - if (command >= ARRAY_SIZE(uverbs_cmd_table) ||
999     - !uverbs_cmd_table[command]) {
1000     + if (!uverbs_cmd_table[command]) {
1001     ret = -EINVAL;
1002     goto out;
1003     }
1004     @@ -722,8 +736,7 @@ static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf,
1005     struct ib_udata uhw;
1006     size_t written_count = count;
1007    
1008     - if (command >= ARRAY_SIZE(uverbs_ex_cmd_table) ||
1009     - !uverbs_ex_cmd_table[command]) {
1010     + if (!uverbs_ex_cmd_table[command]) {
1011     ret = -ENOSYS;
1012     goto out;
1013     }
1014     diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c
1015     index 3b35271114ee..ae9ff72e83ee 100644
1016     --- a/drivers/irqchip/irq-gic-v3.c
1017     +++ b/drivers/irqchip/irq-gic-v3.c
1018     @@ -660,7 +660,7 @@ static void gic_raise_softirq(const struct cpumask *mask, unsigned int irq)
1019     * Ensure that stores to Normal memory are visible to the
1020     * other CPUs before issuing the IPI.
1021     */
1022     - smp_wmb();
1023     + wmb();
1024    
1025     for_each_cpu(cpu, mask) {
1026     unsigned long cluster_id = cpu_logical_map(cpu) & ~0xffUL;
1027     diff --git a/drivers/irqchip/irq-mips-gic.c b/drivers/irqchip/irq-mips-gic.c
1028     index c90976d7e53c..a9f300efce54 100644
1029     --- a/drivers/irqchip/irq-mips-gic.c
1030     +++ b/drivers/irqchip/irq-mips-gic.c
1031     @@ -427,8 +427,6 @@ static int gic_shared_irq_domain_map(struct irq_domain *d, unsigned int virq,
1032     spin_lock_irqsave(&gic_lock, flags);
1033     write_gic_map_pin(intr, GIC_MAP_PIN_MAP_TO_PIN | gic_cpu_pin);
1034     write_gic_map_vp(intr, BIT(mips_cm_vp_id(cpu)));
1035     - gic_clear_pcpu_masks(intr);
1036     - set_bit(intr, per_cpu_ptr(pcpu_masks, cpu));
1037     irq_data_update_effective_affinity(data, cpumask_of(cpu));
1038     spin_unlock_irqrestore(&gic_lock, flags);
1039    
1040     diff --git a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
1041     index b65ce26ff72f..1802debbd3c7 100644
1042     --- a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
1043     +++ b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
1044     @@ -2632,7 +2632,6 @@ void t4_get_regs(struct adapter *adap, void *buf, size_t buf_size)
1045     }
1046    
1047     #define EEPROM_STAT_ADDR 0x7bfc
1048     -#define VPD_SIZE 0x800
1049     #define VPD_BASE 0x400
1050     #define VPD_BASE_OLD 0
1051     #define VPD_LEN 1024
1052     @@ -2670,15 +2669,6 @@ int t4_get_raw_vpd_params(struct adapter *adapter, struct vpd_params *p)
1053     if (!vpd)
1054     return -ENOMEM;
1055    
1056     - /* We have two VPD data structures stored in the adapter VPD area.
1057     - * By default, Linux calculates the size of the VPD area by traversing
1058     - * the first VPD area at offset 0x0, so we need to tell the OS what
1059     - * our real VPD size is.
1060     - */
1061     - ret = pci_set_vpd_size(adapter->pdev, VPD_SIZE);
1062     - if (ret < 0)
1063     - goto out;
1064     -
1065     /* Card information normally starts at VPD_BASE but early cards had
1066     * it at 0.
1067     */
1068     diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
1069     index 4c3feb96f391..d18824772f6c 100644
1070     --- a/drivers/pci/quirks.c
1071     +++ b/drivers/pci/quirks.c
1072     @@ -3412,22 +3412,29 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PORT_RIDGE,
1073    
1074     static void quirk_chelsio_extend_vpd(struct pci_dev *dev)
1075     {
1076     - pci_set_vpd_size(dev, 8192);
1077     -}
1078     -
1079     -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x20, quirk_chelsio_extend_vpd);
1080     -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x21, quirk_chelsio_extend_vpd);
1081     -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x22, quirk_chelsio_extend_vpd);
1082     -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x23, quirk_chelsio_extend_vpd);
1083     -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x24, quirk_chelsio_extend_vpd);
1084     -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x25, quirk_chelsio_extend_vpd);
1085     -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x26, quirk_chelsio_extend_vpd);
1086     -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x30, quirk_chelsio_extend_vpd);
1087     -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x31, quirk_chelsio_extend_vpd);
1088     -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x32, quirk_chelsio_extend_vpd);
1089     -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x35, quirk_chelsio_extend_vpd);
1090     -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x36, quirk_chelsio_extend_vpd);
1091     -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x37, quirk_chelsio_extend_vpd);
1092     + int chip = (dev->device & 0xf000) >> 12;
1093     + int func = (dev->device & 0x0f00) >> 8;
1094     + int prod = (dev->device & 0x00ff) >> 0;
1095     +
1096     + /*
1097     + * If this is a T3-based adapter, there's a 1KB VPD area at offset
1098     + * 0xc00 which contains the preferred VPD values. If this is a T4 or
1099     + * later based adapter, the special VPD is at offset 0x400 for the
1100     + * Physical Functions (the SR-IOV Virtual Functions have no VPD
1101     + * Capabilities). The PCI VPD Access core routines will normally
1102     + * compute the size of the VPD by parsing the VPD Data Structure at
1103     + * offset 0x000. This will result in silent failures when attempting
1104     + * to accesses these other VPD areas which are beyond those computed
1105     + * limits.
1106     + */
1107     + if (chip == 0x0 && prod >= 0x20)
1108     + pci_set_vpd_size(dev, 8192);
1109     + else if (chip >= 0x4 && func < 0x8)
1110     + pci_set_vpd_size(dev, 2048);
1111     +}
1112     +
1113     +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, PCI_ANY_ID,
1114     + quirk_chelsio_extend_vpd);
1115    
1116     #ifdef CONFIG_ACPI
1117     /*
1118     diff --git a/drivers/scsi/ibmvscsi/ibmvfc.h b/drivers/scsi/ibmvscsi/ibmvfc.h
1119     index 9a0696f68f37..b81a53c4a9a8 100644
1120     --- a/drivers/scsi/ibmvscsi/ibmvfc.h
1121     +++ b/drivers/scsi/ibmvscsi/ibmvfc.h
1122     @@ -367,7 +367,7 @@ enum ibmvfc_fcp_rsp_info_codes {
1123     };
1124    
1125     struct ibmvfc_fcp_rsp_info {
1126     - __be16 reserved;
1127     + u8 reserved[3];
1128     u8 rsp_code;
1129     u8 reserved2[4];
1130     }__attribute__((packed, aligned (2)));
1131     diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
1132     index c05c4f877750..774c97bb1c08 100644
1133     --- a/drivers/usb/core/quirks.c
1134     +++ b/drivers/usb/core/quirks.c
1135     @@ -225,6 +225,9 @@ static const struct usb_device_id usb_quirk_list[] = {
1136     { USB_DEVICE(0x1a0a, 0x0200), .driver_info =
1137     USB_QUIRK_LINEAR_UFRAME_INTR_BINTERVAL },
1138    
1139     + /* Corsair K70 RGB */
1140     + { USB_DEVICE(0x1b1c, 0x1b13), .driver_info = USB_QUIRK_DELAY_INIT },
1141     +
1142     /* Corsair Strafe RGB */
1143     { USB_DEVICE(0x1b1c, 0x1b20), .driver_info = USB_QUIRK_DELAY_INIT },
1144    
1145     diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c
1146     index 75e6cb044eb2..89fe53c846ef 100644
1147     --- a/drivers/usb/dwc3/ep0.c
1148     +++ b/drivers/usb/dwc3/ep0.c
1149     @@ -884,7 +884,12 @@ static void dwc3_ep0_complete_data(struct dwc3 *dwc,
1150     trb++;
1151     trb->ctrl &= ~DWC3_TRB_CTRL_HWO;
1152     trace_dwc3_complete_trb(ep0, trb);
1153     - ep0->trb_enqueue = 0;
1154     +
1155     + if (r->direction)
1156     + dwc->eps[1]->trb_enqueue = 0;
1157     + else
1158     + dwc->eps[0]->trb_enqueue = 0;
1159     +
1160     dwc->ep0_bounced = false;
1161     }
1162    
1163     diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
1164     index 97e52c0d1a72..0ebdb313bb00 100644
1165     --- a/drivers/usb/dwc3/gadget.c
1166     +++ b/drivers/usb/dwc3/gadget.c
1167     @@ -2774,6 +2774,8 @@ static void dwc3_gadget_conndone_interrupt(struct dwc3 *dwc)
1168     break;
1169     }
1170    
1171     + dwc->eps[1]->endpoint.maxpacket = dwc->gadget.ep0->maxpacket;
1172     +
1173     /* Enable USB2 LPM Capability */
1174    
1175     if ((dwc->revision > DWC3_REVISION_194A) &&
1176     diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
1177     index c0491dd73f53..a9c9ab01592b 100644
1178     --- a/drivers/usb/gadget/function/f_fs.c
1179     +++ b/drivers/usb/gadget/function/f_fs.c
1180     @@ -1856,44 +1856,20 @@ static int ffs_func_eps_enable(struct ffs_function *func)
1181    
1182     spin_lock_irqsave(&func->ffs->eps_lock, flags);
1183     while(count--) {
1184     - struct usb_endpoint_descriptor *ds;
1185     - struct usb_ss_ep_comp_descriptor *comp_desc = NULL;
1186     - int needs_comp_desc = false;
1187     - int desc_idx;
1188     -
1189     - if (ffs->gadget->speed == USB_SPEED_SUPER) {
1190     - desc_idx = 2;
1191     - needs_comp_desc = true;
1192     - } else if (ffs->gadget->speed == USB_SPEED_HIGH)
1193     - desc_idx = 1;
1194     - else
1195     - desc_idx = 0;
1196     -
1197     - /* fall-back to lower speed if desc missing for current speed */
1198     - do {
1199     - ds = ep->descs[desc_idx];
1200     - } while (!ds && --desc_idx >= 0);
1201     -
1202     - if (!ds) {
1203     - ret = -EINVAL;
1204     - break;
1205     - }
1206     -
1207     ep->ep->driver_data = ep;
1208     - ep->ep->desc = ds;
1209    
1210     - if (needs_comp_desc) {
1211     - comp_desc = (struct usb_ss_ep_comp_descriptor *)(ds +
1212     - USB_DT_ENDPOINT_SIZE);
1213     - ep->ep->maxburst = comp_desc->bMaxBurst + 1;
1214     - ep->ep->comp_desc = comp_desc;
1215     + ret = config_ep_by_speed(func->gadget, &func->function, ep->ep);
1216     + if (ret) {
1217     + pr_err("%s: config_ep_by_speed(%s) returned %d\n",
1218     + __func__, ep->ep->name, ret);
1219     + break;
1220     }
1221    
1222     ret = usb_ep_enable(ep->ep);
1223     if (likely(!ret)) {
1224     epfile->ep = ep;
1225     - epfile->in = usb_endpoint_dir_in(ds);
1226     - epfile->isoc = usb_endpoint_xfer_isoc(ds);
1227     + epfile->in = usb_endpoint_dir_in(ep->ep->desc);
1228     + epfile->isoc = usb_endpoint_xfer_isoc(ep->ep->desc);
1229     } else {
1230     break;
1231     }
1232     @@ -2980,10 +2956,8 @@ static int _ffs_func_bind(struct usb_configuration *c,
1233     struct ffs_data *ffs = func->ffs;
1234    
1235     const int full = !!func->ffs->fs_descs_count;
1236     - const int high = gadget_is_dualspeed(func->gadget) &&
1237     - func->ffs->hs_descs_count;
1238     - const int super = gadget_is_superspeed(func->gadget) &&
1239     - func->ffs->ss_descs_count;
1240     + const int high = !!func->ffs->hs_descs_count;
1241     + const int super = !!func->ffs->ss_descs_count;
1242    
1243     int fs_len, hs_len, ss_len, ret, i;
1244     struct ffs_ep *eps_ptr;
1245     diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
1246     index df169c8e7225..37ef2ac9cdae 100644
1247     --- a/drivers/usb/host/ehci-hub.c
1248     +++ b/drivers/usb/host/ehci-hub.c
1249     @@ -787,12 +787,12 @@ static struct urb *request_single_step_set_feature_urb(
1250     atomic_inc(&urb->use_count);
1251     atomic_inc(&urb->dev->urbnum);
1252     urb->setup_dma = dma_map_single(
1253     - hcd->self.controller,
1254     + hcd->self.sysdev,
1255     urb->setup_packet,
1256     sizeof(struct usb_ctrlrequest),
1257     DMA_TO_DEVICE);
1258     urb->transfer_dma = dma_map_single(
1259     - hcd->self.controller,
1260     + hcd->self.sysdev,
1261     urb->transfer_buffer,
1262     urb->transfer_buffer_length,
1263     DMA_FROM_DEVICE);
1264     diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
1265     index 44924824fa41..1099465b27f0 100644
1266     --- a/drivers/usb/host/ohci-hcd.c
1267     +++ b/drivers/usb/host/ohci-hcd.c
1268     @@ -73,6 +73,7 @@ static const char hcd_name [] = "ohci_hcd";
1269    
1270     #define STATECHANGE_DELAY msecs_to_jiffies(300)
1271     #define IO_WATCHDOG_DELAY msecs_to_jiffies(275)
1272     +#define IO_WATCHDOG_OFF 0xffffff00
1273    
1274     #include "ohci.h"
1275     #include "pci-quirks.h"
1276     @@ -230,7 +231,7 @@ static int ohci_urb_enqueue (
1277     }
1278    
1279     /* Start up the I/O watchdog timer, if it's not running */
1280     - if (!timer_pending(&ohci->io_watchdog) &&
1281     + if (ohci->prev_frame_no == IO_WATCHDOG_OFF &&
1282     list_empty(&ohci->eds_in_use) &&
1283     !(ohci->flags & OHCI_QUIRK_QEMU)) {
1284     ohci->prev_frame_no = ohci_frame_no(ohci);
1285     @@ -501,6 +502,7 @@ static int ohci_init (struct ohci_hcd *ohci)
1286    
1287     setup_timer(&ohci->io_watchdog, io_watchdog_func,
1288     (unsigned long) ohci);
1289     + ohci->prev_frame_no = IO_WATCHDOG_OFF;
1290    
1291     ohci->hcca = dma_alloc_coherent (hcd->self.controller,
1292     sizeof(*ohci->hcca), &ohci->hcca_dma, GFP_KERNEL);
1293     @@ -730,7 +732,7 @@ static void io_watchdog_func(unsigned long _ohci)
1294     u32 head;
1295     struct ed *ed;
1296     struct td *td, *td_start, *td_next;
1297     - unsigned frame_no;
1298     + unsigned frame_no, prev_frame_no = IO_WATCHDOG_OFF;
1299     unsigned long flags;
1300    
1301     spin_lock_irqsave(&ohci->lock, flags);
1302     @@ -835,7 +837,7 @@ static void io_watchdog_func(unsigned long _ohci)
1303     }
1304     }
1305     if (!list_empty(&ohci->eds_in_use)) {
1306     - ohci->prev_frame_no = frame_no;
1307     + prev_frame_no = frame_no;
1308     ohci->prev_wdh_cnt = ohci->wdh_cnt;
1309     ohci->prev_donehead = ohci_readl(ohci,
1310     &ohci->regs->donehead);
1311     @@ -845,6 +847,7 @@ static void io_watchdog_func(unsigned long _ohci)
1312     }
1313    
1314     done:
1315     + ohci->prev_frame_no = prev_frame_no;
1316     spin_unlock_irqrestore(&ohci->lock, flags);
1317     }
1318    
1319     @@ -973,6 +976,7 @@ static void ohci_stop (struct usb_hcd *hcd)
1320     if (quirk_nec(ohci))
1321     flush_work(&ohci->nec_work);
1322     del_timer_sync(&ohci->io_watchdog);
1323     + ohci->prev_frame_no = IO_WATCHDOG_OFF;
1324    
1325     ohci_writel (ohci, OHCI_INTR_MIE, &ohci->regs->intrdisable);
1326     ohci_usb_reset(ohci);
1327     diff --git a/drivers/usb/host/ohci-hub.c b/drivers/usb/host/ohci-hub.c
1328     index 248eb7702463..aca57bcb9afe 100644
1329     --- a/drivers/usb/host/ohci-hub.c
1330     +++ b/drivers/usb/host/ohci-hub.c
1331     @@ -310,8 +310,10 @@ static int ohci_bus_suspend (struct usb_hcd *hcd)
1332     rc = ohci_rh_suspend (ohci, 0);
1333     spin_unlock_irq (&ohci->lock);
1334    
1335     - if (rc == 0)
1336     + if (rc == 0) {
1337     del_timer_sync(&ohci->io_watchdog);
1338     + ohci->prev_frame_no = IO_WATCHDOG_OFF;
1339     + }
1340     return rc;
1341     }
1342    
1343     diff --git a/drivers/usb/host/ohci-q.c b/drivers/usb/host/ohci-q.c
1344     index 641fed609911..24edb7674710 100644
1345     --- a/drivers/usb/host/ohci-q.c
1346     +++ b/drivers/usb/host/ohci-q.c
1347     @@ -1018,6 +1018,8 @@ static void finish_unlinks(struct ohci_hcd *ohci)
1348     * have modified this list. normally it's just prepending
1349     * entries (which we'd ignore), but paranoia won't hurt.
1350     */
1351     + *last = ed->ed_next;
1352     + ed->ed_next = NULL;
1353     modified = 0;
1354    
1355     /* unlink urbs as requested, but rescan the list after
1356     @@ -1076,21 +1078,22 @@ static void finish_unlinks(struct ohci_hcd *ohci)
1357     goto rescan_this;
1358    
1359     /*
1360     - * If no TDs are queued, take ED off the ed_rm_list.
1361     + * If no TDs are queued, ED is now idle.
1362     * Otherwise, if the HC is running, reschedule.
1363     - * If not, leave it on the list for further dequeues.
1364     + * If the HC isn't running, add ED back to the
1365     + * start of the list for later processing.
1366     */
1367     if (list_empty(&ed->td_list)) {
1368     - *last = ed->ed_next;
1369     - ed->ed_next = NULL;
1370     ed->state = ED_IDLE;
1371     list_del(&ed->in_use_list);
1372     } else if (ohci->rh_state == OHCI_RH_RUNNING) {
1373     - *last = ed->ed_next;
1374     - ed->ed_next = NULL;
1375     ed_schedule(ohci, ed);
1376     } else {
1377     - last = &ed->ed_next;
1378     + ed->ed_next = ohci->ed_rm_list;
1379     + ohci->ed_rm_list = ed;
1380     + /* Don't loop on the same ED */
1381     + if (last == &ohci->ed_rm_list)
1382     + last = &ed->ed_next;
1383     }
1384    
1385     if (modified)
1386     diff --git a/drivers/usb/misc/ldusb.c b/drivers/usb/misc/ldusb.c
1387     index 680bddb3ce05..6635a3c990f6 100644
1388     --- a/drivers/usb/misc/ldusb.c
1389     +++ b/drivers/usb/misc/ldusb.c
1390     @@ -46,6 +46,9 @@
1391     #define USB_DEVICE_ID_LD_MICROCASSYTIME 0x1033 /* USB Product ID of Micro-CASSY Time (reserved) */
1392     #define USB_DEVICE_ID_LD_MICROCASSYTEMPERATURE 0x1035 /* USB Product ID of Micro-CASSY Temperature */
1393     #define USB_DEVICE_ID_LD_MICROCASSYPH 0x1038 /* USB Product ID of Micro-CASSY pH */
1394     +#define USB_DEVICE_ID_LD_POWERANALYSERCASSY 0x1040 /* USB Product ID of Power Analyser CASSY */
1395     +#define USB_DEVICE_ID_LD_CONVERTERCONTROLLERCASSY 0x1042 /* USB Product ID of Converter Controller CASSY */
1396     +#define USB_DEVICE_ID_LD_MACHINETESTCASSY 0x1043 /* USB Product ID of Machine Test CASSY */
1397     #define USB_DEVICE_ID_LD_JWM 0x1080 /* USB Product ID of Joule and Wattmeter */
1398     #define USB_DEVICE_ID_LD_DMMP 0x1081 /* USB Product ID of Digital Multimeter P (reserved) */
1399     #define USB_DEVICE_ID_LD_UMIP 0x1090 /* USB Product ID of UMI P */
1400     @@ -88,6 +91,9 @@ static const struct usb_device_id ld_usb_table[] = {
1401     { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYTIME) },
1402     { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYTEMPERATURE) },
1403     { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MICROCASSYPH) },
1404     + { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POWERANALYSERCASSY) },
1405     + { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CONVERTERCONTROLLERCASSY) },
1406     + { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MACHINETESTCASSY) },
1407     { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_JWM) },
1408     { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_DMMP) },
1409     { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_UMIP) },
1410     diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
1411     index b17450a59882..b5cc08d8aa22 100644
1412     --- a/drivers/usb/musb/musb_host.c
1413     +++ b/drivers/usb/musb/musb_host.c
1414     @@ -418,13 +418,7 @@ static void musb_advance_schedule(struct musb *musb, struct urb *urb,
1415     }
1416     }
1417    
1418     - /*
1419     - * The pipe must be broken if current urb->status is set, so don't
1420     - * start next urb.
1421     - * TODO: to minimize the risk of regression, only check urb->status
1422     - * for RX, until we have a test case to understand the behavior of TX.
1423     - */
1424     - if ((!status || !is_in) && qh && qh->is_ready) {
1425     + if (qh != NULL && qh->is_ready) {
1426     musb_dbg(musb, "... next ep%d %cX urb %p",
1427     hw_ep->epnum, is_in ? 'R' : 'T', next_urb(qh));
1428     musb_start_urb(musb, is_in, qh);
1429     diff --git a/drivers/usb/renesas_usbhs/fifo.c b/drivers/usb/renesas_usbhs/fifo.c
1430     index 50285b01da92..5d369b38868a 100644
1431     --- a/drivers/usb/renesas_usbhs/fifo.c
1432     +++ b/drivers/usb/renesas_usbhs/fifo.c
1433     @@ -998,6 +998,10 @@ static int usbhsf_dma_prepare_pop_with_usb_dmac(struct usbhs_pkt *pkt,
1434     if ((uintptr_t)pkt->buf & (USBHS_USB_DMAC_XFER_SIZE - 1))
1435     goto usbhsf_pio_prepare_pop;
1436    
1437     + /* return at this time if the pipe is running */
1438     + if (usbhs_pipe_is_running(pipe))
1439     + return 0;
1440     +
1441     usbhs_pipe_config_change_bfre(pipe, 1);
1442    
1443     ret = usbhsf_fifo_select(pipe, fifo, 0);
1444     @@ -1188,6 +1192,7 @@ static int usbhsf_dma_pop_done_with_usb_dmac(struct usbhs_pkt *pkt,
1445     usbhsf_fifo_clear(pipe, fifo);
1446     pkt->actual = usbhs_dma_calc_received_size(pkt, chan, rcv_len);
1447    
1448     + usbhs_pipe_running(pipe, 0);
1449     usbhsf_dma_stop(pipe, fifo);
1450     usbhsf_dma_unmap(pkt);
1451     usbhsf_fifo_unselect(pipe, pipe->fifo);
1452     diff --git a/drivers/xen/tmem.c b/drivers/xen/tmem.c
1453     index bf13d1ec51f3..04e7b3b29bac 100644
1454     --- a/drivers/xen/tmem.c
1455     +++ b/drivers/xen/tmem.c
1456     @@ -284,6 +284,10 @@ static int tmem_frontswap_store(unsigned type, pgoff_t offset,
1457     int pool = tmem_frontswap_poolid;
1458     int ret;
1459    
1460     + /* THP isn't supported */
1461     + if (PageTransHuge(page))
1462     + return -1;
1463     +
1464     if (pool < 0)
1465     return -1;
1466     if (ind64 != ind)
1467     diff --git a/include/linux/kconfig.h b/include/linux/kconfig.h
1468     index fec5076eda91..dcde9471897d 100644
1469     --- a/include/linux/kconfig.h
1470     +++ b/include/linux/kconfig.h
1471     @@ -4,6 +4,12 @@
1472    
1473     #include <generated/autoconf.h>
1474    
1475     +#ifdef CONFIG_CPU_BIG_ENDIAN
1476     +#define __BIG_ENDIAN 4321
1477     +#else
1478     +#define __LITTLE_ENDIAN 1234
1479     +#endif
1480     +
1481     #define __ARG_PLACEHOLDER_1 0,
1482     #define __take_second_arg(__ignored, val, ...) val
1483    
1484     @@ -64,4 +70,7 @@
1485     */
1486     #define IS_ENABLED(option) __or(IS_BUILTIN(option), IS_MODULE(option))
1487    
1488     +/* Make sure we always have all types and struct attributes defined. */
1489     +#include <linux/compiler_types.h>
1490     +
1491     #endif /* __LINUX_KCONFIG_H */
1492     diff --git a/mm/zswap.c b/mm/zswap.c
1493     index d39581a076c3..597008a44f70 100644
1494     --- a/mm/zswap.c
1495     +++ b/mm/zswap.c
1496     @@ -970,6 +970,12 @@ static int zswap_frontswap_store(unsigned type, pgoff_t offset,
1497     u8 *src, *dst;
1498     struct zswap_header *zhdr;
1499    
1500     + /* THP isn't supported */
1501     + if (PageTransHuge(page)) {
1502     + ret = -EINVAL;
1503     + goto reject;
1504     + }
1505     +
1506     if (!zswap_enabled || !tree) {
1507     ret = -ENODEV;
1508     goto reject;
1509     diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
1510     index c7df4969f80a..f56aab54e0c8 100644
1511     --- a/net/ipv4/ip_sockglue.c
1512     +++ b/net/ipv4/ip_sockglue.c
1513     @@ -1563,10 +1563,7 @@ int ip_getsockopt(struct sock *sk, int level,
1514     if (get_user(len, optlen))
1515     return -EFAULT;
1516    
1517     - lock_sock(sk);
1518     - err = nf_getsockopt(sk, PF_INET, optname, optval,
1519     - &len);
1520     - release_sock(sk);
1521     + err = nf_getsockopt(sk, PF_INET, optname, optval, &len);
1522     if (err >= 0)
1523     err = put_user(len, optlen);
1524     return err;
1525     @@ -1598,9 +1595,7 @@ int compat_ip_getsockopt(struct sock *sk, int level, int optname,
1526     if (get_user(len, optlen))
1527     return -EFAULT;
1528    
1529     - lock_sock(sk);
1530     err = compat_nf_getsockopt(sk, PF_INET, optname, optval, &len);
1531     - release_sock(sk);
1532     if (err >= 0)
1533     err = put_user(len, optlen);
1534     return err;
1535     diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
1536     index 24b69384bdbf..1276d5bd5675 100644
1537     --- a/net/ipv6/ipv6_sockglue.c
1538     +++ b/net/ipv6/ipv6_sockglue.c
1539     @@ -1355,10 +1355,7 @@ int ipv6_getsockopt(struct sock *sk, int level, int optname,
1540     if (get_user(len, optlen))
1541     return -EFAULT;
1542    
1543     - lock_sock(sk);
1544     - err = nf_getsockopt(sk, PF_INET6, optname, optval,
1545     - &len);
1546     - release_sock(sk);
1547     + err = nf_getsockopt(sk, PF_INET6, optname, optval, &len);
1548     if (err >= 0)
1549     err = put_user(len, optlen);
1550     }
1551     @@ -1397,10 +1394,7 @@ int compat_ipv6_getsockopt(struct sock *sk, int level, int optname,
1552     if (get_user(len, optlen))
1553     return -EFAULT;
1554    
1555     - lock_sock(sk);
1556     - err = compat_nf_getsockopt(sk, PF_INET6,
1557     - optname, optval, &len);
1558     - release_sock(sk);
1559     + err = compat_nf_getsockopt(sk, PF_INET6, optname, optval, &len);
1560     if (err >= 0)
1561     err = put_user(len, optlen);
1562     }
1563     diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
1564     index fb15d3b97cb2..84f757c5d91a 100644
1565     --- a/net/mac80211/cfg.c
1566     +++ b/net/mac80211/cfg.c
1567     @@ -2863,7 +2863,7 @@ cfg80211_beacon_dup(struct cfg80211_beacon_data *beacon)
1568     }
1569     if (beacon->probe_resp_len) {
1570     new_beacon->probe_resp_len = beacon->probe_resp_len;
1571     - beacon->probe_resp = pos;
1572     + new_beacon->probe_resp = pos;
1573     memcpy(pos, beacon->probe_resp, beacon->probe_resp_len);
1574     pos += beacon->probe_resp_len;
1575     }