Gentoo Archives: gentoo-commits

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