Gentoo Archives: gentoo-commits

From: Mike Pagano <mpagano@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/linux-patches:5.14 commit in: /
Date: Sat, 06 Nov 2021 13:41:51
Message-Id: 1636206096.257adff21499e9d222d24ca4de3f19cc03122e47.mpagano@gentoo
1 commit: 257adff21499e9d222d24ca4de3f19cc03122e47
2 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
3 AuthorDate: Sat Nov 6 13:41:36 2021 +0000
4 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
5 CommitDate: Sat Nov 6 13:41:36 2021 +0000
6 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=257adff2
7
8 Linux patch 5.14.17
9
10 Signed-off-by: Mike Pagano <mpagano <AT> gentoo.org>
11
12 0000_README | 4 +
13 1016_linux-5.14.17.patch | 682 +++++++++++++++++++++++++++++++++++++++++++++++
14 2 files changed, 686 insertions(+)
15
16 diff --git a/0000_README b/0000_README
17 index 8bcce4c..55b967b 100644
18 --- a/0000_README
19 +++ b/0000_README
20 @@ -111,6 +111,10 @@ Patch: 1015_linux-5.14.16.patch
21 From: http://www.kernel.org
22 Desc: Linux 5.14.16
23
24 +Patch: 1016_linux-5.14.17.patch
25 +From: http://www.kernel.org
26 +Desc: Linux 5.14.17
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/1016_linux-5.14.17.patch b/1016_linux-5.14.17.patch
33 new file mode 100644
34 index 0000000..d62c7fc
35 --- /dev/null
36 +++ b/1016_linux-5.14.17.patch
37 @@ -0,0 +1,682 @@
38 +diff --git a/Makefile b/Makefile
39 +index 02b6dab373ddb..b792b6c178691 100644
40 +--- a/Makefile
41 ++++ b/Makefile
42 +@@ -1,7 +1,7 @@
43 + # SPDX-License-Identifier: GPL-2.0
44 + VERSION = 5
45 + PATCHLEVEL = 14
46 +-SUBLEVEL = 16
47 ++SUBLEVEL = 17
48 + EXTRAVERSION =
49 + NAME = Opossums on Parade
50 +
51 +diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c
52 +index 939ca220bf78d..518e88780574e 100644
53 +--- a/drivers/amba/bus.c
54 ++++ b/drivers/amba/bus.c
55 +@@ -379,9 +379,6 @@ static int amba_device_try_add(struct amba_device *dev, struct resource *parent)
56 + void __iomem *tmp;
57 + int i, ret;
58 +
59 +- WARN_ON(dev->irq[0] == (unsigned int)-1);
60 +- WARN_ON(dev->irq[1] == (unsigned int)-1);
61 +-
62 + ret = request_resource(parent, &dev->res);
63 + if (ret)
64 + goto err_out;
65 +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
66 +index a1c5bd2859fc3..d90dc5efc3340 100644
67 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
68 ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
69 +@@ -1073,8 +1073,6 @@ struct amdgpu_device {
70 + char product_name[32];
71 + char serial[20];
72 +
73 +- struct amdgpu_autodump autodump;
74 +-
75 + atomic_t throttling_logging_enabled;
76 + struct ratelimit_state throttling_logging_rs;
77 + uint32_t ras_hw_enabled;
78 +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
79 +index 83db7d8fa1508..a0f197eaaec0a 100644
80 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
81 ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
82 +@@ -27,7 +27,6 @@
83 + #include <linux/pci.h>
84 + #include <linux/uaccess.h>
85 + #include <linux/pm_runtime.h>
86 +-#include <linux/poll.h>
87 +
88 + #include "amdgpu.h"
89 + #include "amdgpu_pm.h"
90 +@@ -37,85 +36,7 @@
91 + #include "amdgpu_securedisplay.h"
92 + #include "amdgpu_fw_attestation.h"
93 +
94 +-int amdgpu_debugfs_wait_dump(struct amdgpu_device *adev)
95 +-{
96 + #if defined(CONFIG_DEBUG_FS)
97 +- unsigned long timeout = 600 * HZ;
98 +- int ret;
99 +-
100 +- wake_up_interruptible(&adev->autodump.gpu_hang);
101 +-
102 +- ret = wait_for_completion_interruptible_timeout(&adev->autodump.dumping, timeout);
103 +- if (ret == 0) {
104 +- pr_err("autodump: timeout, move on to gpu recovery\n");
105 +- return -ETIMEDOUT;
106 +- }
107 +-#endif
108 +- return 0;
109 +-}
110 +-
111 +-#if defined(CONFIG_DEBUG_FS)
112 +-
113 +-static int amdgpu_debugfs_autodump_open(struct inode *inode, struct file *file)
114 +-{
115 +- struct amdgpu_device *adev = inode->i_private;
116 +- int ret;
117 +-
118 +- file->private_data = adev;
119 +-
120 +- ret = down_read_killable(&adev->reset_sem);
121 +- if (ret)
122 +- return ret;
123 +-
124 +- if (adev->autodump.dumping.done) {
125 +- reinit_completion(&adev->autodump.dumping);
126 +- ret = 0;
127 +- } else {
128 +- ret = -EBUSY;
129 +- }
130 +-
131 +- up_read(&adev->reset_sem);
132 +-
133 +- return ret;
134 +-}
135 +-
136 +-static int amdgpu_debugfs_autodump_release(struct inode *inode, struct file *file)
137 +-{
138 +- struct amdgpu_device *adev = file->private_data;
139 +-
140 +- complete_all(&adev->autodump.dumping);
141 +- return 0;
142 +-}
143 +-
144 +-static unsigned int amdgpu_debugfs_autodump_poll(struct file *file, struct poll_table_struct *poll_table)
145 +-{
146 +- struct amdgpu_device *adev = file->private_data;
147 +-
148 +- poll_wait(file, &adev->autodump.gpu_hang, poll_table);
149 +-
150 +- if (amdgpu_in_reset(adev))
151 +- return POLLIN | POLLRDNORM | POLLWRNORM;
152 +-
153 +- return 0;
154 +-}
155 +-
156 +-static const struct file_operations autodump_debug_fops = {
157 +- .owner = THIS_MODULE,
158 +- .open = amdgpu_debugfs_autodump_open,
159 +- .poll = amdgpu_debugfs_autodump_poll,
160 +- .release = amdgpu_debugfs_autodump_release,
161 +-};
162 +-
163 +-static void amdgpu_debugfs_autodump_init(struct amdgpu_device *adev)
164 +-{
165 +- init_completion(&adev->autodump.dumping);
166 +- complete_all(&adev->autodump.dumping);
167 +- init_waitqueue_head(&adev->autodump.gpu_hang);
168 +-
169 +- debugfs_create_file("amdgpu_autodump", 0600,
170 +- adev_to_drm(adev)->primary->debugfs_root,
171 +- adev, &autodump_debug_fops);
172 +-}
173 +
174 + /**
175 + * amdgpu_debugfs_process_reg_op - Handle MMIO register reads/writes
176 +@@ -1588,7 +1509,6 @@ int amdgpu_debugfs_init(struct amdgpu_device *adev)
177 + }
178 +
179 + amdgpu_ras_debugfs_create_all(adev);
180 +- amdgpu_debugfs_autodump_init(adev);
181 + amdgpu_rap_debugfs_init(adev);
182 + amdgpu_securedisplay_debugfs_init(adev);
183 + amdgpu_fw_attestation_debugfs_init(adev);
184 +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.h
185 +index 141a8474e24f2..8b641f40fdf66 100644
186 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.h
187 ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.h
188 +@@ -26,10 +26,6 @@
189 + /*
190 + * Debugfs
191 + */
192 +-struct amdgpu_autodump {
193 +- struct completion dumping;
194 +- struct wait_queue_head gpu_hang;
195 +-};
196 +
197 + int amdgpu_debugfs_regs_init(struct amdgpu_device *adev);
198 + int amdgpu_debugfs_init(struct amdgpu_device *adev);
199 +@@ -37,4 +33,3 @@ void amdgpu_debugfs_fini(struct amdgpu_device *adev);
200 + void amdgpu_debugfs_fence_init(struct amdgpu_device *adev);
201 + void amdgpu_debugfs_firmware_init(struct amdgpu_device *adev);
202 + void amdgpu_debugfs_gem_init(struct amdgpu_device *adev);
203 +-int amdgpu_debugfs_wait_dump(struct amdgpu_device *adev);
204 +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
205 +index cd8cc7d31b49c..08e53ff747282 100644
206 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
207 ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
208 +@@ -2380,10 +2380,6 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev)
209 + if (!adev->gmc.xgmi.pending_reset)
210 + amdgpu_amdkfd_device_init(adev);
211 +
212 +- r = amdgpu_amdkfd_resume_iommu(adev);
213 +- if (r)
214 +- goto init_failed;
215 +-
216 + amdgpu_fru_get_product_info(adev);
217 +
218 + init_failed:
219 +@@ -4411,10 +4407,6 @@ int amdgpu_device_pre_asic_reset(struct amdgpu_device *adev,
220 + if (reset_context->reset_req_dev == adev)
221 + job = reset_context->job;
222 +
223 +- /* no need to dump if device is not in good state during probe period */
224 +- if (!adev->gmc.xgmi.pending_reset)
225 +- amdgpu_debugfs_wait_dump(adev);
226 +-
227 + if (amdgpu_sriov_vf(adev)) {
228 + /* stop the data exchange thread */
229 + amdgpu_virt_fini_data_exchange(adev);
230 +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
231 +index 5ba8a4f353440..ef64fb8f1bbf5 100644
232 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
233 ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
234 +@@ -875,6 +875,9 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,
235 +
236 + svm_migrate_init((struct amdgpu_device *)kfd->kgd);
237 +
238 ++ if(kgd2kfd_resume_iommu(kfd))
239 ++ goto device_iommu_error;
240 ++
241 + if (kfd_resume(kfd))
242 + goto kfd_resume_error;
243 +
244 +diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
245 +index 4c8edfdc3cac8..f3e2ef74078a2 100644
246 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
247 ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
248 +@@ -247,6 +247,7 @@ static ssize_t dp_link_settings_write(struct file *f, const char __user *buf,
249 + {
250 + struct amdgpu_dm_connector *connector = file_inode(f)->i_private;
251 + struct dc_link *link = connector->dc_link;
252 ++ struct dc *dc = (struct dc *)link->dc;
253 + struct dc_link_settings prefer_link_settings;
254 + char *wr_buf = NULL;
255 + const uint32_t wr_buf_size = 40;
256 +@@ -313,7 +314,7 @@ static ssize_t dp_link_settings_write(struct file *f, const char __user *buf,
257 + prefer_link_settings.lane_count = param[0];
258 + prefer_link_settings.link_rate = param[1];
259 +
260 +- dp_retrain_link_dp_test(link, &prefer_link_settings, false);
261 ++ dc_link_set_preferred_training_settings(dc, &prefer_link_settings, NULL, link, true);
262 +
263 + kfree(wr_buf);
264 + return size;
265 +diff --git a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
266 +index fc77592d88a96..4bf1fdd933441 100644
267 +--- a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
268 ++++ b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
269 +@@ -2091,10 +2091,6 @@ static void __execlists_unhold(struct i915_request *rq)
270 + if (p->flags & I915_DEPENDENCY_WEAK)
271 + continue;
272 +
273 +- /* Propagate any change in error status */
274 +- if (rq->fence.error)
275 +- i915_request_set_error_once(w, rq->fence.error);
276 +-
277 + if (w->engine != rq->engine)
278 + continue;
279 +
280 +diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
281 +index 5aa5ddefd22d2..f0f073bf72a48 100644
282 +--- a/drivers/gpu/drm/i915/i915_reg.h
283 ++++ b/drivers/gpu/drm/i915/i915_reg.h
284 +@@ -11021,12 +11021,6 @@ enum skl_power_gate {
285 + #define DC_STATE_DEBUG_MASK_CORES (1 << 0)
286 + #define DC_STATE_DEBUG_MASK_MEMORY_UP (1 << 1)
287 +
288 +-#define BXT_P_CR_MC_BIOS_REQ_0_0_0 _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x7114)
289 +-#define BXT_REQ_DATA_MASK 0x3F
290 +-#define BXT_DRAM_CHANNEL_ACTIVE_SHIFT 12
291 +-#define BXT_DRAM_CHANNEL_ACTIVE_MASK (0xF << 12)
292 +-#define BXT_MEMORY_FREQ_MULTIPLIER_HZ 133333333
293 +-
294 + #define BXT_D_CR_DRP0_DUNIT8 0x1000
295 + #define BXT_D_CR_DRP0_DUNIT9 0x1200
296 + #define BXT_D_CR_DRP0_DUNIT_START 8
297 +@@ -11057,9 +11051,7 @@ enum skl_power_gate {
298 + #define BXT_DRAM_TYPE_LPDDR4 (0x2 << 22)
299 + #define BXT_DRAM_TYPE_DDR4 (0x4 << 22)
300 +
301 +-#define SKL_MEMORY_FREQ_MULTIPLIER_HZ 266666666
302 + #define SKL_MC_BIOS_DATA_0_0_0_MCHBAR_PCU _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x5E04)
303 +-#define SKL_REQ_DATA_MASK (0xF << 0)
304 +
305 + #define SKL_MAD_INTER_CHANNEL_0_0_0_MCHBAR_MCMAIN _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x5000)
306 + #define SKL_DRAM_DDR_TYPE_MASK (0x3 << 0)
307 +diff --git a/drivers/gpu/drm/i915/intel_dram.c b/drivers/gpu/drm/i915/intel_dram.c
308 +index 50fdea84ba706..300dfe239b8cc 100644
309 +--- a/drivers/gpu/drm/i915/intel_dram.c
310 ++++ b/drivers/gpu/drm/i915/intel_dram.c
311 +@@ -244,7 +244,6 @@ static int
312 + skl_get_dram_info(struct drm_i915_private *i915)
313 + {
314 + struct dram_info *dram_info = &i915->dram_info;
315 +- u32 mem_freq_khz, val;
316 + int ret;
317 +
318 + dram_info->type = skl_get_dram_type(i915);
319 +@@ -255,17 +254,6 @@ skl_get_dram_info(struct drm_i915_private *i915)
320 + if (ret)
321 + return ret;
322 +
323 +- val = intel_uncore_read(&i915->uncore,
324 +- SKL_MC_BIOS_DATA_0_0_0_MCHBAR_PCU);
325 +- mem_freq_khz = DIV_ROUND_UP((val & SKL_REQ_DATA_MASK) *
326 +- SKL_MEMORY_FREQ_MULTIPLIER_HZ, 1000);
327 +-
328 +- if (dram_info->num_channels * mem_freq_khz == 0) {
329 +- drm_info(&i915->drm,
330 +- "Couldn't get system memory bandwidth\n");
331 +- return -EINVAL;
332 +- }
333 +-
334 + return 0;
335 + }
336 +
337 +@@ -350,24 +338,10 @@ static void bxt_get_dimm_info(struct dram_dimm_info *dimm, u32 val)
338 + static int bxt_get_dram_info(struct drm_i915_private *i915)
339 + {
340 + struct dram_info *dram_info = &i915->dram_info;
341 +- u32 dram_channels;
342 +- u32 mem_freq_khz, val;
343 +- u8 num_active_channels, valid_ranks = 0;
344 ++ u32 val;
345 ++ u8 valid_ranks = 0;
346 + int i;
347 +
348 +- val = intel_uncore_read(&i915->uncore, BXT_P_CR_MC_BIOS_REQ_0_0_0);
349 +- mem_freq_khz = DIV_ROUND_UP((val & BXT_REQ_DATA_MASK) *
350 +- BXT_MEMORY_FREQ_MULTIPLIER_HZ, 1000);
351 +-
352 +- dram_channels = val & BXT_DRAM_CHANNEL_ACTIVE_MASK;
353 +- num_active_channels = hweight32(dram_channels);
354 +-
355 +- if (mem_freq_khz * num_active_channels == 0) {
356 +- drm_info(&i915->drm,
357 +- "Couldn't get system memory bandwidth\n");
358 +- return -EINVAL;
359 +- }
360 +-
361 + /*
362 + * Now read each DUNIT8/9/10/11 to check the rank of each dimms.
363 + */
364 +diff --git a/drivers/media/firewire/firedtv-avc.c b/drivers/media/firewire/firedtv-avc.c
365 +index 2bf9467b917d1..71991f8638e6b 100644
366 +--- a/drivers/media/firewire/firedtv-avc.c
367 ++++ b/drivers/media/firewire/firedtv-avc.c
368 +@@ -1165,7 +1165,11 @@ int avc_ca_pmt(struct firedtv *fdtv, char *msg, int length)
369 + read_pos += program_info_length;
370 + write_pos += program_info_length;
371 + }
372 +- while (read_pos < length) {
373 ++ while (read_pos + 4 < length) {
374 ++ if (write_pos + 4 >= sizeof(c->operand) - 4) {
375 ++ ret = -EINVAL;
376 ++ goto out;
377 ++ }
378 + c->operand[write_pos++] = msg[read_pos++];
379 + c->operand[write_pos++] = msg[read_pos++];
380 + c->operand[write_pos++] = msg[read_pos++];
381 +@@ -1177,13 +1181,17 @@ int avc_ca_pmt(struct firedtv *fdtv, char *msg, int length)
382 + c->operand[write_pos++] = es_info_length >> 8;
383 + c->operand[write_pos++] = es_info_length & 0xff;
384 + if (es_info_length > 0) {
385 ++ if (read_pos >= length) {
386 ++ ret = -EINVAL;
387 ++ goto out;
388 ++ }
389 + pmt_cmd_id = msg[read_pos++];
390 + if (pmt_cmd_id != 1 && pmt_cmd_id != 4)
391 + dev_err(fdtv->device, "invalid pmt_cmd_id %d at stream level\n",
392 + pmt_cmd_id);
393 +
394 +- if (es_info_length > sizeof(c->operand) - 4 -
395 +- write_pos) {
396 ++ if (es_info_length > sizeof(c->operand) - 4 - write_pos ||
397 ++ es_info_length > length - read_pos) {
398 + ret = -EINVAL;
399 + goto out;
400 + }
401 +diff --git a/drivers/media/firewire/firedtv-ci.c b/drivers/media/firewire/firedtv-ci.c
402 +index 9363d005e2b61..e0d57e09dab0c 100644
403 +--- a/drivers/media/firewire/firedtv-ci.c
404 ++++ b/drivers/media/firewire/firedtv-ci.c
405 +@@ -134,6 +134,8 @@ static int fdtv_ca_pmt(struct firedtv *fdtv, void *arg)
406 + } else {
407 + data_length = msg->msg[3];
408 + }
409 ++ if (data_length > sizeof(msg->msg) - data_pos)
410 ++ return -EINVAL;
411 +
412 + return avc_ca_pmt(fdtv, &msg->msg[data_pos], data_length);
413 + }
414 +diff --git a/drivers/net/ethernet/sfc/ethtool_common.c b/drivers/net/ethernet/sfc/ethtool_common.c
415 +index bf1443539a1a4..bd552c7dffcb1 100644
416 +--- a/drivers/net/ethernet/sfc/ethtool_common.c
417 ++++ b/drivers/net/ethernet/sfc/ethtool_common.c
418 +@@ -563,20 +563,14 @@ int efx_ethtool_get_link_ksettings(struct net_device *net_dev,
419 + {
420 + struct efx_nic *efx = netdev_priv(net_dev);
421 + struct efx_link_state *link_state = &efx->link_state;
422 +- u32 supported;
423 +
424 + mutex_lock(&efx->mac_lock);
425 + efx_mcdi_phy_get_link_ksettings(efx, cmd);
426 + mutex_unlock(&efx->mac_lock);
427 +
428 + /* Both MACs support pause frames (bidirectional and respond-only) */
429 +- ethtool_convert_link_mode_to_legacy_u32(&supported,
430 +- cmd->link_modes.supported);
431 +-
432 +- supported |= SUPPORTED_Pause | SUPPORTED_Asym_Pause;
433 +-
434 +- ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,
435 +- supported);
436 ++ ethtool_link_ksettings_add_link_mode(cmd, supported, Pause);
437 ++ ethtool_link_ksettings_add_link_mode(cmd, supported, Asym_Pause);
438 +
439 + if (LOOPBACK_INTERNAL(efx)) {
440 + cmd->base.speed = link_state->speed;
441 +diff --git a/drivers/net/vrf.c b/drivers/net/vrf.c
442 +index 8bbe2a7bb1412..2b1b944d4b281 100644
443 +--- a/drivers/net/vrf.c
444 ++++ b/drivers/net/vrf.c
445 +@@ -1367,8 +1367,6 @@ static struct sk_buff *vrf_ip6_rcv(struct net_device *vrf_dev,
446 + bool need_strict = rt6_need_strict(&ipv6_hdr(skb)->daddr);
447 + bool is_ndisc = ipv6_ndisc_frame(skb);
448 +
449 +- nf_reset_ct(skb);
450 +-
451 + /* loopback, multicast & non-ND link-local traffic; do not push through
452 + * packet taps again. Reset pkt_type for upper layers to process skb.
453 + * For strict packets with a source LLA, determine the dst using the
454 +@@ -1431,8 +1429,6 @@ static struct sk_buff *vrf_ip_rcv(struct net_device *vrf_dev,
455 + skb->skb_iif = vrf_dev->ifindex;
456 + IPCB(skb)->flags |= IPSKB_L3SLAVE;
457 +
458 +- nf_reset_ct(skb);
459 +-
460 + if (ipv4_is_multicast(ip_hdr(skb)->daddr))
461 + goto out;
462 +
463 +diff --git a/drivers/net/wireless/ath/wcn36xx/main.c b/drivers/net/wireless/ath/wcn36xx/main.c
464 +index 67f4db662402b..c7592143f2eb9 100644
465 +--- a/drivers/net/wireless/ath/wcn36xx/main.c
466 ++++ b/drivers/net/wireless/ath/wcn36xx/main.c
467 +@@ -604,15 +604,6 @@ static int wcn36xx_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
468 + }
469 + }
470 + }
471 +- /* FIXME: Only enable bmps support when encryption is enabled.
472 +- * For any reasons, when connected to open/no-security BSS,
473 +- * the wcn36xx controller in bmps mode does not forward
474 +- * 'wake-up' beacons despite AP sends DTIM with station AID.
475 +- * It could be due to a firmware issue or to the way driver
476 +- * configure the station.
477 +- */
478 +- if (vif->type == NL80211_IFTYPE_STATION)
479 +- vif_priv->allow_bmps = true;
480 + break;
481 + case DISABLE_KEY:
482 + if (!(IEEE80211_KEY_FLAG_PAIRWISE & key_conf->flags)) {
483 +@@ -913,7 +904,6 @@ static void wcn36xx_bss_info_changed(struct ieee80211_hw *hw,
484 + vif->addr,
485 + bss_conf->aid);
486 + vif_priv->sta_assoc = false;
487 +- vif_priv->allow_bmps = false;
488 + wcn36xx_smd_set_link_st(wcn,
489 + bss_conf->bssid,
490 + vif->addr,
491 +diff --git a/drivers/net/wireless/ath/wcn36xx/pmc.c b/drivers/net/wireless/ath/wcn36xx/pmc.c
492 +index 2d0780fefd477..2936aaf532738 100644
493 +--- a/drivers/net/wireless/ath/wcn36xx/pmc.c
494 ++++ b/drivers/net/wireless/ath/wcn36xx/pmc.c
495 +@@ -23,10 +23,7 @@ int wcn36xx_pmc_enter_bmps_state(struct wcn36xx *wcn,
496 + {
497 + int ret = 0;
498 + struct wcn36xx_vif *vif_priv = wcn36xx_vif_to_priv(vif);
499 +-
500 +- if (!vif_priv->allow_bmps)
501 +- return -ENOTSUPP;
502 +-
503 ++ /* TODO: Make sure the TX chain clean */
504 + ret = wcn36xx_smd_enter_bmps(wcn, vif);
505 + if (!ret) {
506 + wcn36xx_dbg(WCN36XX_DBG_PMC, "Entered BMPS\n");
507 +diff --git a/drivers/net/wireless/ath/wcn36xx/wcn36xx.h b/drivers/net/wireless/ath/wcn36xx/wcn36xx.h
508 +index 0feb235b5a426..7989aee004194 100644
509 +--- a/drivers/net/wireless/ath/wcn36xx/wcn36xx.h
510 ++++ b/drivers/net/wireless/ath/wcn36xx/wcn36xx.h
511 +@@ -128,7 +128,6 @@ struct wcn36xx_vif {
512 + enum wcn36xx_hal_bss_type bss_type;
513 +
514 + /* Power management */
515 +- bool allow_bmps;
516 + enum wcn36xx_power_state pw_state;
517 +
518 + u8 bss_index;
519 +diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
520 +index d26025cf5de35..71dd0989c78ab 100644
521 +--- a/drivers/scsi/scsi.c
522 ++++ b/drivers/scsi/scsi.c
523 +@@ -553,8 +553,10 @@ EXPORT_SYMBOL(scsi_device_get);
524 + */
525 + void scsi_device_put(struct scsi_device *sdev)
526 + {
527 +- module_put(sdev->host->hostt->module);
528 ++ struct module *mod = sdev->host->hostt->module;
529 ++
530 + put_device(&sdev->sdev_gendev);
531 ++ module_put(mod);
532 + }
533 + EXPORT_SYMBOL(scsi_device_put);
534 +
535 +diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
536 +index c0d31119d6d7b..ed05c3565e831 100644
537 +--- a/drivers/scsi/scsi_sysfs.c
538 ++++ b/drivers/scsi/scsi_sysfs.c
539 +@@ -448,9 +448,12 @@ static void scsi_device_dev_release_usercontext(struct work_struct *work)
540 + struct scsi_vpd *vpd_pg80 = NULL, *vpd_pg83 = NULL;
541 + struct scsi_vpd *vpd_pg0 = NULL, *vpd_pg89 = NULL;
542 + unsigned long flags;
543 ++ struct module *mod;
544 +
545 + sdev = container_of(work, struct scsi_device, ew.work);
546 +
547 ++ mod = sdev->host->hostt->module;
548 ++
549 + scsi_dh_release_device(sdev);
550 +
551 + parent = sdev->sdev_gendev.parent;
552 +@@ -501,11 +504,17 @@ static void scsi_device_dev_release_usercontext(struct work_struct *work)
553 +
554 + if (parent)
555 + put_device(parent);
556 ++ module_put(mod);
557 + }
558 +
559 + static void scsi_device_dev_release(struct device *dev)
560 + {
561 + struct scsi_device *sdp = to_scsi_device(dev);
562 ++
563 ++ /* Set module pointer as NULL in case of module unloading */
564 ++ if (!try_module_get(sdp->host->hostt->module))
565 ++ sdp->host->hostt->module = NULL;
566 ++
567 + execute_in_process_context(scsi_device_dev_release_usercontext,
568 + &sdp->ew);
569 + }
570 +diff --git a/drivers/soc/imx/gpcv2.c b/drivers/soc/imx/gpcv2.c
571 +index 34a9ac1f2b9b1..8b7a01773aec2 100644
572 +--- a/drivers/soc/imx/gpcv2.c
573 ++++ b/drivers/soc/imx/gpcv2.c
574 +@@ -244,6 +244,8 @@ static int imx_pgc_power_up(struct generic_pm_domain *genpd)
575 + goto out_regulator_disable;
576 + }
577 +
578 ++ reset_control_assert(domain->reset);
579 ++
580 + if (domain->bits.pxx) {
581 + /* request the domain to power up */
582 + regmap_update_bits(domain->regmap, GPC_PU_PGC_SW_PUP_REQ,
583 +@@ -266,8 +268,6 @@ static int imx_pgc_power_up(struct generic_pm_domain *genpd)
584 + GPC_PGC_CTRL_PCR);
585 + }
586 +
587 +- reset_control_assert(domain->reset);
588 +-
589 + /* delay for reset to propagate */
590 + udelay(5);
591 +
592 +diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
593 +index 99ff2d23be05e..0f8b7c93310ea 100644
594 +--- a/drivers/usb/core/hcd.c
595 ++++ b/drivers/usb/core/hcd.c
596 +@@ -2775,7 +2775,6 @@ int usb_add_hcd(struct usb_hcd *hcd,
597 + {
598 + int retval;
599 + struct usb_device *rhdev;
600 +- struct usb_hcd *shared_hcd;
601 +
602 + if (!hcd->skip_phy_initialization && usb_hcd_is_primary_hcd(hcd)) {
603 + hcd->phy_roothub = usb_phy_roothub_alloc(hcd->self.sysdev);
604 +@@ -2936,26 +2935,13 @@ int usb_add_hcd(struct usb_hcd *hcd,
605 + goto err_hcd_driver_start;
606 + }
607 +
608 +- /* starting here, usbcore will pay attention to the shared HCD roothub */
609 +- shared_hcd = hcd->shared_hcd;
610 +- if (!usb_hcd_is_primary_hcd(hcd) && shared_hcd && HCD_DEFER_RH_REGISTER(shared_hcd)) {
611 +- retval = register_root_hub(shared_hcd);
612 +- if (retval != 0)
613 +- goto err_register_root_hub;
614 +-
615 +- if (shared_hcd->uses_new_polling && HCD_POLL_RH(shared_hcd))
616 +- usb_hcd_poll_rh_status(shared_hcd);
617 +- }
618 +-
619 + /* starting here, usbcore will pay attention to this root hub */
620 +- if (!HCD_DEFER_RH_REGISTER(hcd)) {
621 +- retval = register_root_hub(hcd);
622 +- if (retval != 0)
623 +- goto err_register_root_hub;
624 ++ retval = register_root_hub(hcd);
625 ++ if (retval != 0)
626 ++ goto err_register_root_hub;
627 +
628 +- if (hcd->uses_new_polling && HCD_POLL_RH(hcd))
629 +- usb_hcd_poll_rh_status(hcd);
630 +- }
631 ++ if (hcd->uses_new_polling && HCD_POLL_RH(hcd))
632 ++ usb_hcd_poll_rh_status(hcd);
633 +
634 + return retval;
635 +
636 +@@ -2999,7 +2985,6 @@ EXPORT_SYMBOL_GPL(usb_add_hcd);
637 + void usb_remove_hcd(struct usb_hcd *hcd)
638 + {
639 + struct usb_device *rhdev = hcd->self.root_hub;
640 +- bool rh_registered;
641 +
642 + dev_info(hcd->self.controller, "remove, state %x\n", hcd->state);
643 +
644 +@@ -3010,7 +2995,6 @@ void usb_remove_hcd(struct usb_hcd *hcd)
645 +
646 + dev_dbg(hcd->self.controller, "roothub graceful disconnect\n");
647 + spin_lock_irq (&hcd_root_hub_lock);
648 +- rh_registered = hcd->rh_registered;
649 + hcd->rh_registered = 0;
650 + spin_unlock_irq (&hcd_root_hub_lock);
651 +
652 +@@ -3020,8 +3004,7 @@ void usb_remove_hcd(struct usb_hcd *hcd)
653 + cancel_work_sync(&hcd->died_work);
654 +
655 + mutex_lock(&usb_bus_idr_lock);
656 +- if (rh_registered)
657 +- usb_disconnect(&rhdev); /* Sets rhdev to NULL */
658 ++ usb_disconnect(&rhdev); /* Sets rhdev to NULL */
659 + mutex_unlock(&usb_bus_idr_lock);
660 +
661 + /*
662 +diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
663 +index cb730683f898f..4e32b96ccc889 100644
664 +--- a/drivers/usb/host/xhci.c
665 ++++ b/drivers/usb/host/xhci.c
666 +@@ -692,7 +692,6 @@ int xhci_run(struct usb_hcd *hcd)
667 + if (ret)
668 + xhci_free_command(xhci, command);
669 + }
670 +- set_bit(HCD_FLAG_DEFER_RH_REGISTER, &hcd->flags);
671 + xhci_dbg_trace(xhci, trace_xhci_dbg_init,
672 + "Finished xhci_run for USB2 roothub");
673 +
674 +diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h
675 +index 2c1fc9212cf28..548a028f2dabb 100644
676 +--- a/include/linux/usb/hcd.h
677 ++++ b/include/linux/usb/hcd.h
678 +@@ -124,7 +124,6 @@ struct usb_hcd {
679 + #define HCD_FLAG_RH_RUNNING 5 /* root hub is running? */
680 + #define HCD_FLAG_DEAD 6 /* controller has died? */
681 + #define HCD_FLAG_INTF_AUTHORIZED 7 /* authorize interfaces? */
682 +-#define HCD_FLAG_DEFER_RH_REGISTER 8 /* Defer roothub registration */
683 +
684 + /* The flags can be tested using these macros; they are likely to
685 + * be slightly faster than test_bit().
686 +@@ -135,7 +134,6 @@ struct usb_hcd {
687 + #define HCD_WAKEUP_PENDING(hcd) ((hcd)->flags & (1U << HCD_FLAG_WAKEUP_PENDING))
688 + #define HCD_RH_RUNNING(hcd) ((hcd)->flags & (1U << HCD_FLAG_RH_RUNNING))
689 + #define HCD_DEAD(hcd) ((hcd)->flags & (1U << HCD_FLAG_DEAD))
690 +-#define HCD_DEFER_RH_REGISTER(hcd) ((hcd)->flags & (1U << HCD_FLAG_DEFER_RH_REGISTER))
691 +
692 + /*
693 + * Specifies if interfaces are authorized by default
694 +diff --git a/sound/usb/mixer_maps.c b/sound/usb/mixer_maps.c
695 +index c5794e83fd800..8f6823df944ff 100644
696 +--- a/sound/usb/mixer_maps.c
697 ++++ b/sound/usb/mixer_maps.c
698 +@@ -528,6 +528,10 @@ static const struct usbmix_ctl_map usbmix_ctl_maps[] = {
699 + .id = USB_ID(0x2573, 0x0008),
700 + .map = maya44_map,
701 + },
702 ++ {
703 ++ .id = USB_ID(0x2708, 0x0002), /* Audient iD14 */
704 ++ .ignore_ctl_error = 1,
705 ++ },
706 + {
707 + /* KEF X300A */
708 + .id = USB_ID(0x27ac, 0x1000),
709 +@@ -538,6 +542,10 @@ static const struct usbmix_ctl_map usbmix_ctl_maps[] = {
710 + .id = USB_ID(0x25c4, 0x0003),
711 + .map = scms_usb3318_map,
712 + },
713 ++ {
714 ++ .id = USB_ID(0x30be, 0x0101), /* Schiit Hel */
715 ++ .ignore_ctl_error = 1,
716 ++ },
717 + {
718 + /* Bose Companion 5 */
719 + .id = USB_ID(0x05a7, 0x1020),