Magellan Linux

Annotation of /trunk/kernel-magellan/patches-5.3/0101-5.3.2-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3448 - (hide annotations) (download)
Fri Oct 4 07:57:10 2019 UTC (4 years, 8 months ago) by niro
File size: 25912 byte(s)
-linux-5.3.2
1 niro 3448 diff --git a/Makefile b/Makefile
2     index f32e8d2e09c3..13fa3a409ddd 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,7 +1,7 @@
6     # SPDX-License-Identifier: GPL-2.0
7     VERSION = 5
8     PATCHLEVEL = 3
9     -SUBLEVEL = 1
10     +SUBLEVEL = 2
11     EXTRAVERSION =
12     NAME = Bobtail Squid
13    
14     diff --git a/arch/powerpc/include/asm/opal.h b/arch/powerpc/include/asm/opal.h
15     index 57bd029c715e..d5a0807d21db 100644
16     --- a/arch/powerpc/include/asm/opal.h
17     +++ b/arch/powerpc/include/asm/opal.h
18     @@ -272,7 +272,7 @@ int64_t opal_xive_get_vp_info(uint64_t vp,
19     int64_t opal_xive_set_vp_info(uint64_t vp,
20     uint64_t flags,
21     uint64_t report_cl_pair);
22     -int64_t opal_xive_allocate_irq(uint32_t chip_id);
23     +int64_t opal_xive_allocate_irq_raw(uint32_t chip_id);
24     int64_t opal_xive_free_irq(uint32_t girq);
25     int64_t opal_xive_sync(uint32_t type, uint32_t id);
26     int64_t opal_xive_dump(uint32_t type, uint32_t id);
27     diff --git a/arch/powerpc/platforms/powernv/opal-call.c b/arch/powerpc/platforms/powernv/opal-call.c
28     index 29ca523c1c79..dccdc9df5213 100644
29     --- a/arch/powerpc/platforms/powernv/opal-call.c
30     +++ b/arch/powerpc/platforms/powernv/opal-call.c
31     @@ -257,7 +257,7 @@ OPAL_CALL(opal_xive_set_queue_info, OPAL_XIVE_SET_QUEUE_INFO);
32     OPAL_CALL(opal_xive_donate_page, OPAL_XIVE_DONATE_PAGE);
33     OPAL_CALL(opal_xive_alloc_vp_block, OPAL_XIVE_ALLOCATE_VP_BLOCK);
34     OPAL_CALL(opal_xive_free_vp_block, OPAL_XIVE_FREE_VP_BLOCK);
35     -OPAL_CALL(opal_xive_allocate_irq, OPAL_XIVE_ALLOCATE_IRQ);
36     +OPAL_CALL(opal_xive_allocate_irq_raw, OPAL_XIVE_ALLOCATE_IRQ);
37     OPAL_CALL(opal_xive_free_irq, OPAL_XIVE_FREE_IRQ);
38     OPAL_CALL(opal_xive_get_vp_info, OPAL_XIVE_GET_VP_INFO);
39     OPAL_CALL(opal_xive_set_vp_info, OPAL_XIVE_SET_VP_INFO);
40     diff --git a/arch/powerpc/sysdev/xive/native.c b/arch/powerpc/sysdev/xive/native.c
41     index 2f26b74f6cfa..cf156aadefe9 100644
42     --- a/arch/powerpc/sysdev/xive/native.c
43     +++ b/arch/powerpc/sysdev/xive/native.c
44     @@ -231,6 +231,17 @@ static bool xive_native_match(struct device_node *node)
45     return of_device_is_compatible(node, "ibm,opal-xive-vc");
46     }
47    
48     +static s64 opal_xive_allocate_irq(u32 chip_id)
49     +{
50     + s64 irq = opal_xive_allocate_irq_raw(chip_id);
51     +
52     + /*
53     + * Old versions of skiboot can incorrectly return 0xffffffff to
54     + * indicate no space, fix it up here.
55     + */
56     + return irq == 0xffffffff ? OPAL_RESOURCE : irq;
57     +}
58     +
59     #ifdef CONFIG_SMP
60     static int xive_native_get_ipi(unsigned int cpu, struct xive_cpu *xc)
61     {
62     diff --git a/drivers/clk/imx/clk-imx8mm.c b/drivers/clk/imx/clk-imx8mm.c
63     index 6b8e75df994d..6f46bcb1d643 100644
64     --- a/drivers/clk/imx/clk-imx8mm.c
65     +++ b/drivers/clk/imx/clk-imx8mm.c
66     @@ -55,8 +55,8 @@ static const struct imx_pll14xx_rate_table imx8mm_pll1416x_tbl[] = {
67     };
68    
69     static const struct imx_pll14xx_rate_table imx8mm_audiopll_tbl[] = {
70     - PLL_1443X_RATE(786432000U, 655, 5, 2, 23593),
71     - PLL_1443X_RATE(722534400U, 301, 5, 1, 3670),
72     + PLL_1443X_RATE(393216000U, 262, 2, 3, 9437),
73     + PLL_1443X_RATE(361267200U, 361, 3, 3, 17511),
74     };
75    
76     static const struct imx_pll14xx_rate_table imx8mm_videopll_tbl[] = {
77     diff --git a/drivers/clocksource/timer-of.c b/drivers/clocksource/timer-of.c
78     index 80542289fae7..d8c2bd4391d0 100644
79     --- a/drivers/clocksource/timer-of.c
80     +++ b/drivers/clocksource/timer-of.c
81     @@ -113,8 +113,10 @@ static __init int timer_of_clk_init(struct device_node *np,
82     of_clk->clk = of_clk->name ? of_clk_get_by_name(np, of_clk->name) :
83     of_clk_get(np, of_clk->index);
84     if (IS_ERR(of_clk->clk)) {
85     - pr_err("Failed to get clock for %pOF\n", np);
86     - return PTR_ERR(of_clk->clk);
87     + ret = PTR_ERR(of_clk->clk);
88     + if (ret != -EPROBE_DEFER)
89     + pr_err("Failed to get clock for %pOF\n", np);
90     + goto out;
91     }
92    
93     ret = clk_prepare_enable(of_clk->clk);
94     diff --git a/drivers/clocksource/timer-probe.c b/drivers/clocksource/timer-probe.c
95     index dda1946e84dd..ee9574da53c0 100644
96     --- a/drivers/clocksource/timer-probe.c
97     +++ b/drivers/clocksource/timer-probe.c
98     @@ -29,7 +29,9 @@ void __init timer_probe(void)
99    
100     ret = init_func_ret(np);
101     if (ret) {
102     - pr_err("Failed to initialize '%pOF': %d\n", np, ret);
103     + if (ret != -EPROBE_DEFER)
104     + pr_err("Failed to initialize '%pOF': %d\n", np,
105     + ret);
106     continue;
107     }
108    
109     diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
110     index c9d686a0e805..4818ae427098 100644
111     --- a/drivers/crypto/talitos.c
112     +++ b/drivers/crypto/talitos.c
113     @@ -3140,6 +3140,7 @@ static int talitos_remove(struct platform_device *ofdev)
114     break;
115     case CRYPTO_ALG_TYPE_AEAD:
116     crypto_unregister_aead(&t_alg->algt.alg.aead);
117     + break;
118     case CRYPTO_ALG_TYPE_AHASH:
119     crypto_unregister_ahash(&t_alg->algt.alg.hash);
120     break;
121     diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
122     index 45be7a2132bb..beb2d268d1ef 100644
123     --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
124     +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
125     @@ -4548,20 +4548,10 @@ static int dm_plane_atomic_check(struct drm_plane *plane,
126     static int dm_plane_atomic_async_check(struct drm_plane *plane,
127     struct drm_plane_state *new_plane_state)
128     {
129     - struct drm_plane_state *old_plane_state =
130     - drm_atomic_get_old_plane_state(new_plane_state->state, plane);
131     -
132     /* Only support async updates on cursor planes. */
133     if (plane->type != DRM_PLANE_TYPE_CURSOR)
134     return -EINVAL;
135    
136     - /*
137     - * DRM calls prepare_fb and cleanup_fb on new_plane_state for
138     - * async commits so don't allow fb changes.
139     - */
140     - if (old_plane_state->fb != new_plane_state->fb)
141     - return -EINVAL;
142     -
143     return 0;
144     }
145    
146     @@ -7284,6 +7274,26 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev,
147     if (ret)
148     goto fail;
149    
150     + if (state->legacy_cursor_update) {
151     + /*
152     + * This is a fast cursor update coming from the plane update
153     + * helper, check if it can be done asynchronously for better
154     + * performance.
155     + */
156     + state->async_update =
157     + !drm_atomic_helper_async_check(dev, state);
158     +
159     + /*
160     + * Skip the remaining global validation if this is an async
161     + * update. Cursor updates can be done without affecting
162     + * state or bandwidth calcs and this avoids the performance
163     + * penalty of locking the private state object and
164     + * allocating a new dc_state.
165     + */
166     + if (state->async_update)
167     + return 0;
168     + }
169     +
170     /* Check scaling and underscan changes*/
171     /* TODO Removed scaling changes validation due to inability to commit
172     * new stream into context w\o causing full reset. Need to
173     @@ -7336,13 +7346,29 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev,
174     ret = -EINVAL;
175     goto fail;
176     }
177     - } else if (state->legacy_cursor_update) {
178     + } else {
179     /*
180     - * This is a fast cursor update coming from the plane update
181     - * helper, check if it can be done asynchronously for better
182     - * performance.
183     + * The commit is a fast update. Fast updates shouldn't change
184     + * the DC context, affect global validation, and can have their
185     + * commit work done in parallel with other commits not touching
186     + * the same resource. If we have a new DC context as part of
187     + * the DM atomic state from validation we need to free it and
188     + * retain the existing one instead.
189     */
190     - state->async_update = !drm_atomic_helper_async_check(dev, state);
191     + struct dm_atomic_state *new_dm_state, *old_dm_state;
192     +
193     + new_dm_state = dm_atomic_get_new_state(state);
194     + old_dm_state = dm_atomic_get_old_state(state);
195     +
196     + if (new_dm_state && old_dm_state) {
197     + if (new_dm_state->context)
198     + dc_release_state(new_dm_state->context);
199     +
200     + new_dm_state->context = old_dm_state->context;
201     +
202     + if (old_dm_state->context)
203     + dc_retain_state(old_dm_state->context);
204     + }
205     }
206    
207     /* Must be success */
208     diff --git a/drivers/gpu/drm/amd/display/dc/calcs/Makefile b/drivers/gpu/drm/amd/display/dc/calcs/Makefile
209     index 95f332ee3e7e..16614d73a5fc 100644
210     --- a/drivers/gpu/drm/amd/display/dc/calcs/Makefile
211     +++ b/drivers/gpu/drm/amd/display/dc/calcs/Makefile
212     @@ -32,6 +32,10 @@ endif
213    
214     calcs_ccflags := -mhard-float -msse $(cc_stack_align)
215    
216     +ifdef CONFIG_CC_IS_CLANG
217     +calcs_ccflags += -msse2
218     +endif
219     +
220     CFLAGS_dcn_calcs.o := $(calcs_ccflags)
221     CFLAGS_dcn_calc_auto.o := $(calcs_ccflags)
222     CFLAGS_dcn_calc_math.o := $(calcs_ccflags) -Wno-tautological-compare
223     diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/Makefile b/drivers/gpu/drm/amd/display/dc/dcn20/Makefile
224     index e9721a906592..f57a3b281408 100644
225     --- a/drivers/gpu/drm/amd/display/dc/dcn20/Makefile
226     +++ b/drivers/gpu/drm/amd/display/dc/dcn20/Makefile
227     @@ -18,6 +18,10 @@ endif
228    
229     CFLAGS_dcn20_resource.o := -mhard-float -msse $(cc_stack_align)
230    
231     +ifdef CONFIG_CC_IS_CLANG
232     +CFLAGS_dcn20_resource.o += -msse2
233     +endif
234     +
235     AMD_DAL_DCN20 = $(addprefix $(AMDDALPATH)/dc/dcn20/,$(DCN20))
236    
237     AMD_DISPLAY_FILES += $(AMD_DAL_DCN20)
238     diff --git a/drivers/gpu/drm/amd/display/dc/dml/Makefile b/drivers/gpu/drm/amd/display/dc/dml/Makefile
239     index 0bb7a20675c4..132ade1a234e 100644
240     --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile
241     +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile
242     @@ -32,6 +32,10 @@ endif
243    
244     dml_ccflags := -mhard-float -msse $(cc_stack_align)
245    
246     +ifdef CONFIG_CC_IS_CLANG
247     +dml_ccflags += -msse2
248     +endif
249     +
250     CFLAGS_display_mode_lib.o := $(dml_ccflags)
251    
252     ifdef CONFIG_DRM_AMD_DC_DCN2_0
253     diff --git a/drivers/gpu/drm/amd/display/dc/dsc/Makefile b/drivers/gpu/drm/amd/display/dc/dsc/Makefile
254     index e019cd9447e8..17db603f2d1f 100644
255     --- a/drivers/gpu/drm/amd/display/dc/dsc/Makefile
256     +++ b/drivers/gpu/drm/amd/display/dc/dsc/Makefile
257     @@ -9,6 +9,10 @@ endif
258    
259     dsc_ccflags := -mhard-float -msse $(cc_stack_align)
260    
261     +ifdef CONFIG_CC_IS_CLANG
262     +dsc_ccflags += -msse2
263     +endif
264     +
265     CFLAGS_rc_calc.o := $(dsc_ccflags)
266     CFLAGS_rc_calc_dpi.o := $(dsc_ccflags)
267     CFLAGS_codec_main_amd.o := $(dsc_ccflags)
268     diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
269     index 0a00be19f7a0..e4d51ce20a6a 100644
270     --- a/drivers/hid/hid-ids.h
271     +++ b/drivers/hid/hid-ids.h
272     @@ -568,6 +568,7 @@
273     #define USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPTICAL_MOUSE_0B4A 0x0b4a
274     #define USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE 0x134a
275     #define USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE_094A 0x094a
276     +#define USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE_0941 0x0941
277     #define USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE_0641 0x0641
278    
279     #define USB_VENDOR_ID_HUION 0x256c
280     diff --git a/drivers/hid/hid-lg.c b/drivers/hid/hid-lg.c
281     index 5008a3dc28f4..0dc7cdfc56f7 100644
282     --- a/drivers/hid/hid-lg.c
283     +++ b/drivers/hid/hid-lg.c
284     @@ -818,7 +818,7 @@ static int lg_probe(struct hid_device *hdev, const struct hid_device_id *id)
285    
286     if (!buf) {
287     ret = -ENOMEM;
288     - goto err_free;
289     + goto err_stop;
290     }
291    
292     ret = hid_hw_raw_request(hdev, buf[0], buf, sizeof(cbuf),
293     @@ -850,9 +850,12 @@ static int lg_probe(struct hid_device *hdev, const struct hid_device_id *id)
294     ret = lg4ff_init(hdev);
295    
296     if (ret)
297     - goto err_free;
298     + goto err_stop;
299    
300     return 0;
301     +
302     +err_stop:
303     + hid_hw_stop(hdev);
304     err_free:
305     kfree(drv_data);
306     return ret;
307     @@ -863,8 +866,7 @@ static void lg_remove(struct hid_device *hdev)
308     struct lg_drv_data *drv_data = hid_get_drvdata(hdev);
309     if (drv_data->quirks & LG_FF4)
310     lg4ff_deinit(hdev);
311     - else
312     - hid_hw_stop(hdev);
313     + hid_hw_stop(hdev);
314     kfree(drv_data);
315     }
316    
317     diff --git a/drivers/hid/hid-lg4ff.c b/drivers/hid/hid-lg4ff.c
318     index cefba038520c..03f0220062ca 100644
319     --- a/drivers/hid/hid-lg4ff.c
320     +++ b/drivers/hid/hid-lg4ff.c
321     @@ -1477,7 +1477,6 @@ int lg4ff_deinit(struct hid_device *hid)
322     }
323     }
324     #endif
325     - hid_hw_stop(hid);
326     drv_data->device_props = NULL;
327    
328     kfree(entry);
329     diff --git a/drivers/hid/hid-logitech-dj.c b/drivers/hid/hid-logitech-dj.c
330     index cc47f948c1d0..7badbaa18878 100644
331     --- a/drivers/hid/hid-logitech-dj.c
332     +++ b/drivers/hid/hid-logitech-dj.c
333     @@ -1734,14 +1734,14 @@ static int logi_dj_probe(struct hid_device *hdev,
334     if (retval < 0) {
335     hid_err(hdev, "%s: logi_dj_recv_query_paired_devices error:%d\n",
336     __func__, retval);
337     - goto logi_dj_recv_query_paired_devices_failed;
338     + /*
339     + * This can happen with a KVM, let the probe succeed,
340     + * logi_dj_recv_queue_unknown_work will retry later.
341     + */
342     }
343     }
344    
345     - return retval;
346     -
347     -logi_dj_recv_query_paired_devices_failed:
348     - hid_hw_close(hdev);
349     + return 0;
350    
351     llopen_failed:
352     switch_to_dj_mode_fail:
353     diff --git a/drivers/hid/hid-prodikeys.c b/drivers/hid/hid-prodikeys.c
354     index 21544ebff855..5a3b3d974d84 100644
355     --- a/drivers/hid/hid-prodikeys.c
356     +++ b/drivers/hid/hid-prodikeys.c
357     @@ -551,10 +551,14 @@ static void pcmidi_setup_extra_keys(
358    
359     static int pcmidi_set_operational(struct pcmidi_snd *pm)
360     {
361     + int rc;
362     +
363     if (pm->ifnum != 1)
364     return 0; /* only set up ONCE for interace 1 */
365    
366     - pcmidi_get_output_report(pm);
367     + rc = pcmidi_get_output_report(pm);
368     + if (rc < 0)
369     + return rc;
370     pcmidi_submit_output_report(pm, 0xc1);
371     return 0;
372     }
373     @@ -683,7 +687,11 @@ static int pcmidi_snd_initialise(struct pcmidi_snd *pm)
374     spin_lock_init(&pm->rawmidi_in_lock);
375    
376     init_sustain_timers(pm);
377     - pcmidi_set_operational(pm);
378     + err = pcmidi_set_operational(pm);
379     + if (err < 0) {
380     + pk_error("failed to find output report\n");
381     + goto fail_register;
382     + }
383    
384     /* register it */
385     err = snd_card_register(card);
386     diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
387     index 166f41f3173b..c50bcd967d99 100644
388     --- a/drivers/hid/hid-quirks.c
389     +++ b/drivers/hid/hid-quirks.c
390     @@ -92,6 +92,7 @@ static const struct hid_device_id hid_quirks[] = {
391     { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPTICAL_MOUSE_0B4A), HID_QUIRK_ALWAYS_POLL },
392     { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
393     { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE_094A), HID_QUIRK_ALWAYS_POLL },
394     + { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE_0941), HID_QUIRK_ALWAYS_POLL },
395     { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE_0641), HID_QUIRK_ALWAYS_POLL },
396     { HID_USB_DEVICE(USB_VENDOR_ID_IDEACOM, USB_DEVICE_ID_IDEACOM_IDC6680), HID_QUIRK_MULTI_INPUT },
397     { HID_USB_DEVICE(USB_VENDOR_ID_INNOMEDIA, USB_DEVICE_ID_INNEX_GENESIS_ATARI), HID_QUIRK_MULTI_INPUT },
398     diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c
399     index 49dd2d905c7f..73c0f7a95e2d 100644
400     --- a/drivers/hid/hid-sony.c
401     +++ b/drivers/hid/hid-sony.c
402     @@ -2811,7 +2811,6 @@ err_stop:
403     sony_cancel_work_sync(sc);
404     sony_remove_dev_list(sc);
405     sony_release_device_id(sc);
406     - hid_hw_stop(hdev);
407     return ret;
408     }
409    
410     @@ -2876,6 +2875,7 @@ static int sony_probe(struct hid_device *hdev, const struct hid_device_id *id)
411     */
412     if (!(hdev->claimed & HID_CLAIMED_INPUT)) {
413     hid_err(hdev, "failed to claim input\n");
414     + hid_hw_stop(hdev);
415     return -ENODEV;
416     }
417    
418     diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c
419     index 006bd6f4f653..62ef47a730b0 100644
420     --- a/drivers/hid/hidraw.c
421     +++ b/drivers/hid/hidraw.c
422     @@ -370,7 +370,7 @@ static long hidraw_ioctl(struct file *file, unsigned int cmd,
423    
424     mutex_lock(&minors_lock);
425     dev = hidraw_table[minor];
426     - if (!dev) {
427     + if (!dev || !dev->exist) {
428     ret = -ENODEV;
429     goto out;
430     }
431     diff --git a/drivers/mtd/chips/cfi_cmdset_0002.c b/drivers/mtd/chips/cfi_cmdset_0002.c
432     index f4da7bd552e9..7d29f596bc9e 100644
433     --- a/drivers/mtd/chips/cfi_cmdset_0002.c
434     +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
435     @@ -1717,31 +1717,37 @@ static int __xipram do_write_oneword(struct map_info *map, struct flchip *chip,
436     continue;
437     }
438    
439     + /*
440     + * We check "time_after" and "!chip_good" before checking
441     + * "chip_good" to avoid the failure due to scheduling.
442     + */
443     if (time_after(jiffies, timeo) &&
444     - !chip_ready(map, chip, adr)) {
445     + !chip_good(map, chip, adr, datum)) {
446     xip_enable(map, chip, adr);
447     printk(KERN_WARNING "MTD %s(): software timeout\n", __func__);
448     xip_disable(map, chip, adr);
449     + ret = -EIO;
450     break;
451     }
452    
453     - if (chip_ready(map, chip, adr))
454     + if (chip_good(map, chip, adr, datum))
455     break;
456    
457     /* Latency issues. Drop the lock, wait a while and retry */
458     UDELAY(map, chip, adr, 1);
459     }
460     +
461     /* Did we succeed? */
462     - if (!chip_good(map, chip, adr, datum)) {
463     + if (ret) {
464     /* reset on all failures. */
465     cfi_check_err_status(map, chip, adr);
466     map_write(map, CMD(0xF0), chip->start);
467     /* FIXME - should have reset delay before continuing */
468    
469     - if (++retry_cnt <= MAX_RETRIES)
470     + if (++retry_cnt <= MAX_RETRIES) {
471     + ret = 0;
472     goto retry;
473     -
474     - ret = -EIO;
475     + }
476     }
477     xip_enable(map, chip, adr);
478     op_done:
479     diff --git a/drivers/platform/x86/i2c-multi-instantiate.c b/drivers/platform/x86/i2c-multi-instantiate.c
480     index 197d8a192721..70efa3d29825 100644
481     --- a/drivers/platform/x86/i2c-multi-instantiate.c
482     +++ b/drivers/platform/x86/i2c-multi-instantiate.c
483     @@ -92,7 +92,7 @@ static int i2c_multi_inst_probe(struct platform_device *pdev)
484     for (i = 0; i < multi->num_clients && inst_data[i].type; i++) {
485     memset(&board_info, 0, sizeof(board_info));
486     strlcpy(board_info.type, inst_data[i].type, I2C_NAME_SIZE);
487     - snprintf(name, sizeof(name), "%s-%s.%d", match->id,
488     + snprintf(name, sizeof(name), "%s-%s.%d", dev_name(dev),
489     inst_data[i].type, i);
490     board_info.dev_name = name;
491     switch (inst_data[i].flags & IRQ_RESOURCE_TYPE) {
492     diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h
493     index 475d6f28ca67..7f7a4d9137e5 100644
494     --- a/include/net/netfilter/nf_tables.h
495     +++ b/include/net/netfilter/nf_tables.h
496     @@ -1206,6 +1206,8 @@ void nft_trace_notify(struct nft_traceinfo *info);
497     #define MODULE_ALIAS_NFT_OBJ(type) \
498     MODULE_ALIAS("nft-obj-" __stringify(type))
499    
500     +#if IS_ENABLED(CONFIG_NF_TABLES)
501     +
502     /*
503     * The gencursor defines two generations, the currently active and the
504     * next one. Objects contain a bitmask of 2 bits specifying the generations
505     @@ -1279,6 +1281,8 @@ static inline void nft_set_elem_change_active(const struct net *net,
506     ext->genmask ^= nft_genmask_next(net);
507     }
508    
509     +#endif /* IS_ENABLED(CONFIG_NF_TABLES) */
510     +
511     /*
512     * We use a free bit in the genmask field to indicate the element
513     * is busy, meaning it is currently being processed either by
514     diff --git a/mm/z3fold.c b/mm/z3fold.c
515     index 75b7962439ff..ed19d98c9dcd 100644
516     --- a/mm/z3fold.c
517     +++ b/mm/z3fold.c
518     @@ -41,7 +41,6 @@
519     #include <linux/workqueue.h>
520     #include <linux/slab.h>
521     #include <linux/spinlock.h>
522     -#include <linux/wait.h>
523     #include <linux/zpool.h>
524     #include <linux/magic.h>
525    
526     @@ -146,8 +145,6 @@ struct z3fold_header {
527     * @release_wq: workqueue for safe page release
528     * @work: work_struct for safe page release
529     * @inode: inode for z3fold pseudo filesystem
530     - * @destroying: bool to stop migration once we start destruction
531     - * @isolated: int to count the number of pages currently in isolation
532     *
533     * This structure is allocated at pool creation time and maintains metadata
534     * pertaining to a particular z3fold pool.
535     @@ -166,11 +163,8 @@ struct z3fold_pool {
536     const struct zpool_ops *zpool_ops;
537     struct workqueue_struct *compact_wq;
538     struct workqueue_struct *release_wq;
539     - struct wait_queue_head isolate_wait;
540     struct work_struct work;
541     struct inode *inode;
542     - bool destroying;
543     - int isolated;
544     };
545    
546     /*
547     @@ -775,7 +769,6 @@ static struct z3fold_pool *z3fold_create_pool(const char *name, gfp_t gfp,
548     goto out_c;
549     spin_lock_init(&pool->lock);
550     spin_lock_init(&pool->stale_lock);
551     - init_waitqueue_head(&pool->isolate_wait);
552     pool->unbuddied = __alloc_percpu(sizeof(struct list_head)*NCHUNKS, 2);
553     if (!pool->unbuddied)
554     goto out_pool;
555     @@ -815,15 +808,6 @@ out:
556     return NULL;
557     }
558    
559     -static bool pool_isolated_are_drained(struct z3fold_pool *pool)
560     -{
561     - bool ret;
562     -
563     - spin_lock(&pool->lock);
564     - ret = pool->isolated == 0;
565     - spin_unlock(&pool->lock);
566     - return ret;
567     -}
568     /**
569     * z3fold_destroy_pool() - destroys an existing z3fold pool
570     * @pool: the z3fold pool to be destroyed
571     @@ -833,22 +817,6 @@ static bool pool_isolated_are_drained(struct z3fold_pool *pool)
572     static void z3fold_destroy_pool(struct z3fold_pool *pool)
573     {
574     kmem_cache_destroy(pool->c_handle);
575     - /*
576     - * We set pool-> destroying under lock to ensure that
577     - * z3fold_page_isolate() sees any changes to destroying. This way we
578     - * avoid the need for any memory barriers.
579     - */
580     -
581     - spin_lock(&pool->lock);
582     - pool->destroying = true;
583     - spin_unlock(&pool->lock);
584     -
585     - /*
586     - * We need to ensure that no pages are being migrated while we destroy
587     - * these workqueues, as migration can queue work on either of the
588     - * workqueues.
589     - */
590     - wait_event(pool->isolate_wait, !pool_isolated_are_drained(pool));
591    
592     /*
593     * We need to destroy pool->compact_wq before pool->release_wq,
594     @@ -1339,28 +1307,6 @@ static u64 z3fold_get_pool_size(struct z3fold_pool *pool)
595     return atomic64_read(&pool->pages_nr);
596     }
597    
598     -/*
599     - * z3fold_dec_isolated() expects to be called while pool->lock is held.
600     - */
601     -static void z3fold_dec_isolated(struct z3fold_pool *pool)
602     -{
603     - assert_spin_locked(&pool->lock);
604     - VM_BUG_ON(pool->isolated <= 0);
605     - pool->isolated--;
606     -
607     - /*
608     - * If we have no more isolated pages, we have to see if
609     - * z3fold_destroy_pool() is waiting for a signal.
610     - */
611     - if (pool->isolated == 0 && waitqueue_active(&pool->isolate_wait))
612     - wake_up_all(&pool->isolate_wait);
613     -}
614     -
615     -static void z3fold_inc_isolated(struct z3fold_pool *pool)
616     -{
617     - pool->isolated++;
618     -}
619     -
620     static bool z3fold_page_isolate(struct page *page, isolate_mode_t mode)
621     {
622     struct z3fold_header *zhdr;
623     @@ -1387,34 +1333,6 @@ static bool z3fold_page_isolate(struct page *page, isolate_mode_t mode)
624     spin_lock(&pool->lock);
625     if (!list_empty(&page->lru))
626     list_del(&page->lru);
627     - /*
628     - * We need to check for destruction while holding pool->lock, as
629     - * otherwise destruction could see 0 isolated pages, and
630     - * proceed.
631     - */
632     - if (unlikely(pool->destroying)) {
633     - spin_unlock(&pool->lock);
634     - /*
635     - * If this page isn't stale, somebody else holds a
636     - * reference to it. Let't drop our refcount so that they
637     - * can call the release logic.
638     - */
639     - if (unlikely(kref_put(&zhdr->refcount,
640     - release_z3fold_page_locked))) {
641     - /*
642     - * If we get here we have kref problems, so we
643     - * should freak out.
644     - */
645     - WARN(1, "Z3fold is experiencing kref problems\n");
646     - z3fold_page_unlock(zhdr);
647     - return false;
648     - }
649     - z3fold_page_unlock(zhdr);
650     - return false;
651     - }
652     -
653     -
654     - z3fold_inc_isolated(pool);
655     spin_unlock(&pool->lock);
656     z3fold_page_unlock(zhdr);
657     return true;
658     @@ -1483,10 +1401,6 @@ static int z3fold_page_migrate(struct address_space *mapping, struct page *newpa
659    
660     queue_work_on(new_zhdr->cpu, pool->compact_wq, &new_zhdr->work);
661    
662     - spin_lock(&pool->lock);
663     - z3fold_dec_isolated(pool);
664     - spin_unlock(&pool->lock);
665     -
666     page_mapcount_reset(page);
667     put_page(page);
668     return 0;
669     @@ -1506,14 +1420,10 @@ static void z3fold_page_putback(struct page *page)
670     INIT_LIST_HEAD(&page->lru);
671     if (kref_put(&zhdr->refcount, release_z3fold_page_locked)) {
672     atomic64_dec(&pool->pages_nr);
673     - spin_lock(&pool->lock);
674     - z3fold_dec_isolated(pool);
675     - spin_unlock(&pool->lock);
676     return;
677     }
678     spin_lock(&pool->lock);
679     list_add(&page->lru, &pool->lru);
680     - z3fold_dec_isolated(pool);
681     spin_unlock(&pool->lock);
682     z3fold_page_unlock(zhdr);
683     }
684     diff --git a/sound/firewire/dice/dice-alesis.c b/sound/firewire/dice/dice-alesis.c
685     index 218292bdace6..f5b325263b67 100644
686     --- a/sound/firewire/dice/dice-alesis.c
687     +++ b/sound/firewire/dice/dice-alesis.c
688     @@ -15,7 +15,7 @@ alesis_io14_tx_pcm_chs[MAX_STREAMS][SND_DICE_RATE_MODE_COUNT] = {
689    
690     static const unsigned int
691     alesis_io26_tx_pcm_chs[MAX_STREAMS][SND_DICE_RATE_MODE_COUNT] = {
692     - {10, 10, 8}, /* Tx0 = Analog + S/PDIF. */
693     + {10, 10, 4}, /* Tx0 = Analog + S/PDIF. */
694     {16, 8, 0}, /* Tx1 = ADAT1 + ADAT2. */
695     };
696    
697     diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
698     index 99fc0917339b..b0de3e3b33e5 100644
699     --- a/sound/pci/hda/hda_intel.c
700     +++ b/sound/pci/hda/hda_intel.c
701     @@ -2517,8 +2517,7 @@ static const struct pci_device_id azx_ids[] = {
702     AZX_DCAPS_PM_RUNTIME },
703     /* AMD Raven */
704     { PCI_DEVICE(0x1022, 0x15e3),
705     - .driver_data = AZX_DRIVER_GENERIC | AZX_DCAPS_PRESET_ATI_SB |
706     - AZX_DCAPS_PM_RUNTIME },
707     + .driver_data = AZX_DRIVER_GENERIC | AZX_DCAPS_PRESET_AMD_SB },
708     /* ATI HDMI */
709     { PCI_DEVICE(0x1002, 0x0002),
710     .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS },
711     diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c
712     index e283966bdbb1..bc9dd8e6fd86 100644
713     --- a/sound/pci/hda/patch_analog.c
714     +++ b/sound/pci/hda/patch_analog.c
715     @@ -357,6 +357,7 @@ static const struct hda_fixup ad1986a_fixups[] = {
716    
717     static const struct snd_pci_quirk ad1986a_fixup_tbl[] = {
718     SND_PCI_QUIRK(0x103c, 0x30af, "HP B2800", AD1986A_FIXUP_LAPTOP_IMIC),
719     + SND_PCI_QUIRK(0x1043, 0x1153, "ASUS M9V", AD1986A_FIXUP_LAPTOP_IMIC),
720     SND_PCI_QUIRK(0x1043, 0x1443, "ASUS Z99He", AD1986A_FIXUP_EAPD),
721     SND_PCI_QUIRK(0x1043, 0x1447, "ASUS A8JN", AD1986A_FIXUP_EAPD),
722     SND_PCI_QUIRK_MASK(0x1043, 0xff00, 0x8100, "ASUS P5", AD1986A_FIXUP_3STACK),
723     diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
724     index 78858918cbc1..b6f7b13768a1 100644
725     --- a/sound/usb/quirks.c
726     +++ b/sound/usb/quirks.c
727     @@ -1655,6 +1655,8 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
728     case 0x152a: /* Thesycon devices */
729     case 0x25ce: /* Mytek devices */
730     case 0x2ab6: /* T+A devices */
731     + case 0x3842: /* EVGA */
732     + case 0xc502: /* HiBy devices */
733     if (fp->dsd_raw)
734     return SNDRV_PCM_FMTBIT_DSD_U32_BE;
735     break;
736     diff --git a/tools/objtool/Makefile b/tools/objtool/Makefile
737     index 88158239622b..20f67fcf378d 100644
738     --- a/tools/objtool/Makefile
739     +++ b/tools/objtool/Makefile
740     @@ -35,7 +35,7 @@ INCLUDES := -I$(srctree)/tools/include \
741     -I$(srctree)/tools/arch/$(HOSTARCH)/include/uapi \
742     -I$(srctree)/tools/objtool/arch/$(ARCH)/include
743     WARNINGS := $(EXTRA_WARNINGS) -Wno-switch-default -Wno-switch-enum -Wno-packed
744     -CFLAGS += -Werror $(WARNINGS) $(KBUILD_HOSTCFLAGS) -g $(INCLUDES) $(LIBELF_FLAGS)
745     +CFLAGS := -Werror $(WARNINGS) $(KBUILD_HOSTCFLAGS) -g $(INCLUDES) $(LIBELF_FLAGS)
746     LDFLAGS += $(LIBELF_LIBS) $(LIBSUBCMD) $(KBUILD_HOSTLDFLAGS)
747    
748     # Allow old libelf to be used: