Magellan Linux

Annotation of /trunk/kernel-alx/patches-5.4/0133-5.4.34-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3514 - (hide annotations) (download)
Mon May 11 14:36:40 2020 UTC (4 years, 1 month ago) by niro
File size: 73417 byte(s)
-linux-5.4.34
1 niro 3514 diff --git a/Makefile b/Makefile
2     index c09d5a4d2e7a..fdbc51db822a 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,7 +1,7 @@
6     # SPDX-License-Identifier: GPL-2.0
7     VERSION = 5
8     PATCHLEVEL = 4
9     -SUBLEVEL = 33
10     +SUBLEVEL = 34
11     EXTRAVERSION =
12     NAME = Kleptomaniac Octopus
13    
14     diff --git a/arch/arm/boot/dts/imx7-colibri.dtsi b/arch/arm/boot/dts/imx7-colibri.dtsi
15     index eed78f12e79e..8bba03de51ad 100644
16     --- a/arch/arm/boot/dts/imx7-colibri.dtsi
17     +++ b/arch/arm/boot/dts/imx7-colibri.dtsi
18     @@ -346,7 +346,7 @@
19     &iomuxc {
20     pinctrl-names = "default";
21     pinctrl-0 = <&pinctrl_gpio1 &pinctrl_gpio2 &pinctrl_gpio3 &pinctrl_gpio4
22     - &pinctrl_gpio7>;
23     + &pinctrl_gpio7 &pinctrl_usbc_det>;
24    
25     pinctrl_gpio1: gpio1-grp {
26     fsl,pins = <
27     @@ -451,7 +451,6 @@
28    
29     pinctrl_enet1: enet1grp {
30     fsl,pins = <
31     - MX7D_PAD_ENET1_CRS__GPIO7_IO14 0x14
32     MX7D_PAD_ENET1_RGMII_RX_CTL__ENET1_RGMII_RX_CTL 0x73
33     MX7D_PAD_ENET1_RGMII_RD0__ENET1_RGMII_RD0 0x73
34     MX7D_PAD_ENET1_RGMII_RD1__ENET1_RGMII_RD1 0x73
35     @@ -649,6 +648,12 @@
36     >;
37     };
38    
39     + pinctrl_usbc_det: gpio-usbc-det {
40     + fsl,pins = <
41     + MX7D_PAD_ENET1_CRS__GPIO7_IO14 0x14
42     + >;
43     + };
44     +
45     pinctrl_usbh_reg: gpio-usbh-vbus {
46     fsl,pins = <
47     MX7D_PAD_UART3_CTS_B__GPIO4_IO7 0x14 /* SODIMM 129 USBH PEN */
48     diff --git a/arch/arm64/boot/dts/freescale/imx8mq-librem5-devkit.dts b/arch/arm64/boot/dts/freescale/imx8mq-librem5-devkit.dts
49     index 98cfe67b7db7..19b427f68dad 100644
50     --- a/arch/arm64/boot/dts/freescale/imx8mq-librem5-devkit.dts
51     +++ b/arch/arm64/boot/dts/freescale/imx8mq-librem5-devkit.dts
52     @@ -743,6 +743,7 @@
53     };
54    
55     &usb3_phy0 {
56     + vbus-supply = <&reg_5v_p>;
57     status = "okay";
58     };
59    
60     diff --git a/arch/arm64/kernel/vdso.c b/arch/arm64/kernel/vdso.c
61     index 354b11e27c07..033a48f30dbb 100644
62     --- a/arch/arm64/kernel/vdso.c
63     +++ b/arch/arm64/kernel/vdso.c
64     @@ -260,18 +260,7 @@ static int __aarch32_alloc_vdso_pages(void)
65     if (ret)
66     return ret;
67    
68     - ret = aarch32_alloc_kuser_vdso_page();
69     - if (ret) {
70     - unsigned long c_vvar =
71     - (unsigned long)page_to_virt(aarch32_vdso_pages[C_VVAR]);
72     - unsigned long c_vdso =
73     - (unsigned long)page_to_virt(aarch32_vdso_pages[C_VDSO]);
74     -
75     - free_page(c_vvar);
76     - free_page(c_vdso);
77     - }
78     -
79     - return ret;
80     + return aarch32_alloc_kuser_vdso_page();
81     }
82     #else
83     static int __aarch32_alloc_vdso_pages(void)
84     diff --git a/arch/x86/include/asm/microcode_amd.h b/arch/x86/include/asm/microcode_amd.h
85     index 209492849566..5c524d4f71cd 100644
86     --- a/arch/x86/include/asm/microcode_amd.h
87     +++ b/arch/x86/include/asm/microcode_amd.h
88     @@ -41,7 +41,7 @@ struct microcode_amd {
89     unsigned int mpb[0];
90     };
91    
92     -#define PATCH_MAX_SIZE PAGE_SIZE
93     +#define PATCH_MAX_SIZE (3 * PAGE_SIZE)
94    
95     #ifdef CONFIG_MICROCODE_AMD
96     extern void __init load_ucode_amd_bsp(unsigned int family);
97     diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resctrl/core.c
98     index 89049b343c7a..d8cc5223b7ce 100644
99     --- a/arch/x86/kernel/cpu/resctrl/core.c
100     +++ b/arch/x86/kernel/cpu/resctrl/core.c
101     @@ -578,6 +578,8 @@ static void domain_add_cpu(int cpu, struct rdt_resource *r)
102     d->id = id;
103     cpumask_set_cpu(cpu, &d->cpu_mask);
104    
105     + rdt_domain_reconfigure_cdp(r);
106     +
107     if (r->alloc_capable && domain_setup_ctrlval(r, d)) {
108     kfree(d);
109     return;
110     diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
111     index 181c992f448c..3dd13f3a8b23 100644
112     --- a/arch/x86/kernel/cpu/resctrl/internal.h
113     +++ b/arch/x86/kernel/cpu/resctrl/internal.h
114     @@ -601,5 +601,6 @@ bool has_busy_rmid(struct rdt_resource *r, struct rdt_domain *d);
115     void __check_limbo(struct rdt_domain *d, bool force_free);
116     bool cbm_validate_intel(char *buf, u32 *data, struct rdt_resource *r);
117     bool cbm_validate_amd(char *buf, u32 *data, struct rdt_resource *r);
118     +void rdt_domain_reconfigure_cdp(struct rdt_resource *r);
119    
120     #endif /* _ASM_X86_RESCTRL_INTERNAL_H */
121     diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
122     index 954fd048ad9b..20856d80dce3 100644
123     --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
124     +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
125     @@ -1769,6 +1769,19 @@ static int set_cache_qos_cfg(int level, bool enable)
126     return 0;
127     }
128    
129     +/* Restore the qos cfg state when a domain comes online */
130     +void rdt_domain_reconfigure_cdp(struct rdt_resource *r)
131     +{
132     + if (!r->alloc_capable)
133     + return;
134     +
135     + if (r == &rdt_resources_all[RDT_RESOURCE_L2DATA])
136     + l2_qos_cfg_update(&r->alloc_enabled);
137     +
138     + if (r == &rdt_resources_all[RDT_RESOURCE_L3DATA])
139     + l3_qos_cfg_update(&r->alloc_enabled);
140     +}
141     +
142     /*
143     * Enable or disable the MBA software controller
144     * which helps user specify bandwidth in MBps.
145     @@ -2993,7 +3006,8 @@ static int rdtgroup_rmdir(struct kernfs_node *kn)
146     * If the rdtgroup is a mon group and parent directory
147     * is a valid "mon_groups" directory, remove the mon group.
148     */
149     - if (rdtgrp->type == RDTCTRL_GROUP && parent_kn == rdtgroup_default.kn) {
150     + if (rdtgrp->type == RDTCTRL_GROUP && parent_kn == rdtgroup_default.kn &&
151     + rdtgrp != &rdtgroup_default) {
152     if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKSETUP ||
153     rdtgrp->mode == RDT_MODE_PSEUDO_LOCKED) {
154     ret = rdtgroup_ctrl_remove(kn, rdtgrp);
155     diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
156     index ed2ecb00004f..5e6c8bfc6612 100644
157     --- a/drivers/acpi/ec.c
158     +++ b/drivers/acpi/ec.c
159     @@ -1573,6 +1573,7 @@ static int acpi_ec_add(struct acpi_device *device)
160    
161     if (boot_ec && ec->command_addr == boot_ec->command_addr &&
162     ec->data_addr == boot_ec->data_addr) {
163     + boot_ec_is_ecdt = false;
164     /*
165     * Trust PNP0C09 namespace location rather than
166     * ECDT ID. But trust ECDT GPE rather than _GPE
167     @@ -1592,12 +1593,9 @@ static int acpi_ec_add(struct acpi_device *device)
168    
169     if (ec == boot_ec)
170     acpi_handle_info(boot_ec->handle,
171     - "Boot %s EC initialization complete\n",
172     + "Boot %s EC used to handle transactions and events\n",
173     boot_ec_is_ecdt ? "ECDT" : "DSDT");
174    
175     - acpi_handle_info(ec->handle,
176     - "EC: Used to handle transactions and events\n");
177     -
178     device->driver_data = ec;
179    
180     ret = !!request_region(ec->data_addr, 1, "EC data");
181     diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c
182     index 14e68f202f81..12d980aafc5f 100644
183     --- a/drivers/acpi/nfit/core.c
184     +++ b/drivers/acpi/nfit/core.c
185     @@ -360,7 +360,7 @@ static union acpi_object *acpi_label_info(acpi_handle handle)
186    
187     static u8 nfit_dsm_revid(unsigned family, unsigned func)
188     {
189     - static const u8 revid_table[NVDIMM_FAMILY_MAX+1][32] = {
190     + static const u8 revid_table[NVDIMM_FAMILY_MAX+1][NVDIMM_CMD_MAX+1] = {
191     [NVDIMM_FAMILY_INTEL] = {
192     [NVDIMM_INTEL_GET_MODES] = 2,
193     [NVDIMM_INTEL_GET_FWINFO] = 2,
194     @@ -386,7 +386,7 @@ static u8 nfit_dsm_revid(unsigned family, unsigned func)
195    
196     if (family > NVDIMM_FAMILY_MAX)
197     return 0;
198     - if (func > 31)
199     + if (func > NVDIMM_CMD_MAX)
200     return 0;
201     id = revid_table[family][func];
202     if (id == 0)
203     @@ -492,7 +492,8 @@ int acpi_nfit_ctl(struct nvdimm_bus_descriptor *nd_desc, struct nvdimm *nvdimm,
204     * Check for a valid command. For ND_CMD_CALL, we also have to
205     * make sure that the DSM function is supported.
206     */
207     - if (cmd == ND_CMD_CALL && !test_bit(func, &dsm_mask))
208     + if (cmd == ND_CMD_CALL &&
209     + (func > NVDIMM_CMD_MAX || !test_bit(func, &dsm_mask)))
210     return -ENOTTY;
211     else if (!test_bit(cmd, &cmd_mask))
212     return -ENOTTY;
213     @@ -3499,7 +3500,8 @@ static int acpi_nfit_clear_to_send(struct nvdimm_bus_descriptor *nd_desc,
214     if (nvdimm && cmd == ND_CMD_CALL &&
215     call_pkg->nd_family == NVDIMM_FAMILY_INTEL) {
216     func = call_pkg->nd_command;
217     - if ((1 << func) & NVDIMM_INTEL_SECURITY_CMDMASK)
218     + if (func > NVDIMM_CMD_MAX ||
219     + (1 << func) & NVDIMM_INTEL_SECURITY_CMDMASK)
220     return -EOPNOTSUPP;
221     }
222    
223     diff --git a/drivers/acpi/nfit/nfit.h b/drivers/acpi/nfit/nfit.h
224     index 24241941181c..b317f4043705 100644
225     --- a/drivers/acpi/nfit/nfit.h
226     +++ b/drivers/acpi/nfit/nfit.h
227     @@ -34,6 +34,7 @@
228     | ACPI_NFIT_MEM_NOT_ARMED | ACPI_NFIT_MEM_MAP_FAILED)
229    
230     #define NVDIMM_FAMILY_MAX NVDIMM_FAMILY_HYPERV
231     +#define NVDIMM_CMD_MAX 31
232    
233     #define NVDIMM_STANDARD_CMDMASK \
234     (1 << ND_CMD_SMART | 1 << ND_CMD_SMART_THRESHOLD | 1 << ND_CMD_DIMM_FLAGS \
235     diff --git a/drivers/clk/at91/clk-usb.c b/drivers/clk/at91/clk-usb.c
236     index 22aede42a336..bda92980e015 100644
237     --- a/drivers/clk/at91/clk-usb.c
238     +++ b/drivers/clk/at91/clk-usb.c
239     @@ -211,7 +211,7 @@ _at91sam9x5_clk_register_usb(struct regmap *regmap, const char *name,
240    
241     usb->hw.init = &init;
242     usb->regmap = regmap;
243     - usb->usbs_mask = SAM9X5_USBS_MASK;
244     + usb->usbs_mask = usbs_mask;
245    
246     hw = &usb->hw;
247     ret = clk_hw_register(NULL, &usb->hw);
248     diff --git a/drivers/clk/at91/sam9x60.c b/drivers/clk/at91/sam9x60.c
249     index 77398aefeb6d..7338a3bc71eb 100644
250     --- a/drivers/clk/at91/sam9x60.c
251     +++ b/drivers/clk/at91/sam9x60.c
252     @@ -237,9 +237,8 @@ static void __init sam9x60_pmc_setup(struct device_node *np)
253    
254     parent_names[0] = "pllack";
255     parent_names[1] = "upllck";
256     - parent_names[2] = "mainck";
257     - parent_names[3] = "mainck";
258     - hw = sam9x60_clk_register_usb(regmap, "usbck", parent_names, 4);
259     + parent_names[2] = "main_osc";
260     + hw = sam9x60_clk_register_usb(regmap, "usbck", parent_names, 3);
261     if (IS_ERR(hw))
262     goto err_free;
263    
264     diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
265     index f423b5384705..630e8342d162 100644
266     --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
267     +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
268     @@ -2176,6 +2176,8 @@ static int amdgpu_device_ip_suspend_phase1(struct amdgpu_device *adev)
269     {
270     int i, r;
271    
272     + amdgpu_device_set_pg_state(adev, AMD_PG_STATE_UNGATE);
273     + amdgpu_device_set_cg_state(adev, AMD_CG_STATE_UNGATE);
274    
275     for (i = adev->num_ip_blocks - 1; i >= 0; i--) {
276     if (!adev->ip_blocks[i].status.valid)
277     diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
278     index 203ce4b1028f..e6da53e9c3f4 100644
279     --- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
280     +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
281     @@ -3805,9 +3805,12 @@ static int smu7_trim_single_dpm_states(struct pp_hwmgr *hwmgr,
282     {
283     uint32_t i;
284    
285     + /* force the trim if mclk_switching is disabled to prevent flicker */
286     + bool force_trim = (low_limit == high_limit);
287     for (i = 0; i < dpm_table->count; i++) {
288     /*skip the trim if od is enabled*/
289     - if (!hwmgr->od_enabled && (dpm_table->dpm_levels[i].value < low_limit
290     + if ((!hwmgr->od_enabled || force_trim)
291     + && (dpm_table->dpm_levels[i].value < low_limit
292     || dpm_table->dpm_levels[i].value > high_limit))
293     dpm_table->dpm_levels[i].enabled = false;
294     else
295     diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
296     index 16dd338877d0..0c55c54372d7 100644
297     --- a/drivers/i2c/busses/i2c-designware-platdrv.c
298     +++ b/drivers/i2c/busses/i2c-designware-platdrv.c
299     @@ -370,10 +370,16 @@ static int dw_i2c_plat_probe(struct platform_device *pdev)
300     adap->dev.of_node = pdev->dev.of_node;
301     adap->nr = -1;
302    
303     - dev_pm_set_driver_flags(&pdev->dev,
304     - DPM_FLAG_SMART_PREPARE |
305     - DPM_FLAG_SMART_SUSPEND |
306     - DPM_FLAG_LEAVE_SUSPENDED);
307     + if (dev->flags & ACCESS_NO_IRQ_SUSPEND) {
308     + dev_pm_set_driver_flags(&pdev->dev,
309     + DPM_FLAG_SMART_PREPARE |
310     + DPM_FLAG_LEAVE_SUSPENDED);
311     + } else {
312     + dev_pm_set_driver_flags(&pdev->dev,
313     + DPM_FLAG_SMART_PREPARE |
314     + DPM_FLAG_SMART_SUSPEND |
315     + DPM_FLAG_LEAVE_SUSPENDED);
316     + }
317    
318     /* The code below assumes runtime PM to be disabled. */
319     WARN_ON(pm_runtime_enabled(&pdev->dev));
320     diff --git a/drivers/irqchip/irq-ti-sci-inta.c b/drivers/irqchip/irq-ti-sci-inta.c
321     index ef4d625d2d80..fa7488863bd0 100644
322     --- a/drivers/irqchip/irq-ti-sci-inta.c
323     +++ b/drivers/irqchip/irq-ti-sci-inta.c
324     @@ -37,6 +37,7 @@
325     #define VINT_ENABLE_SET_OFFSET 0x0
326     #define VINT_ENABLE_CLR_OFFSET 0x8
327     #define VINT_STATUS_OFFSET 0x18
328     +#define VINT_STATUS_MASKED_OFFSET 0x20
329    
330     /**
331     * struct ti_sci_inta_event_desc - Description of an event coming to
332     @@ -116,7 +117,7 @@ static void ti_sci_inta_irq_handler(struct irq_desc *desc)
333     chained_irq_enter(irq_desc_get_chip(desc), desc);
334    
335     val = readq_relaxed(inta->base + vint_desc->vint_id * 0x1000 +
336     - VINT_STATUS_OFFSET);
337     + VINT_STATUS_MASKED_OFFSET);
338    
339     for_each_set_bit(bit, &val, MAX_EVENTS_PER_VINT) {
340     virq = irq_find_mapping(domain, vint_desc->events[bit].hwirq);
341     diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
342     index 8071c3fa3fb7..cffaf4fdd772 100644
343     --- a/drivers/net/dsa/mt7530.c
344     +++ b/drivers/net/dsa/mt7530.c
345     @@ -66,58 +66,6 @@ static const struct mt7530_mib_desc mt7530_mib[] = {
346     MIB_DESC(1, 0xb8, "RxArlDrop"),
347     };
348    
349     -static int
350     -mt7623_trgmii_write(struct mt7530_priv *priv, u32 reg, u32 val)
351     -{
352     - int ret;
353     -
354     - ret = regmap_write(priv->ethernet, TRGMII_BASE(reg), val);
355     - if (ret < 0)
356     - dev_err(priv->dev,
357     - "failed to priv write register\n");
358     - return ret;
359     -}
360     -
361     -static u32
362     -mt7623_trgmii_read(struct mt7530_priv *priv, u32 reg)
363     -{
364     - int ret;
365     - u32 val;
366     -
367     - ret = regmap_read(priv->ethernet, TRGMII_BASE(reg), &val);
368     - if (ret < 0) {
369     - dev_err(priv->dev,
370     - "failed to priv read register\n");
371     - return ret;
372     - }
373     -
374     - return val;
375     -}
376     -
377     -static void
378     -mt7623_trgmii_rmw(struct mt7530_priv *priv, u32 reg,
379     - u32 mask, u32 set)
380     -{
381     - u32 val;
382     -
383     - val = mt7623_trgmii_read(priv, reg);
384     - val &= ~mask;
385     - val |= set;
386     - mt7623_trgmii_write(priv, reg, val);
387     -}
388     -
389     -static void
390     -mt7623_trgmii_set(struct mt7530_priv *priv, u32 reg, u32 val)
391     -{
392     - mt7623_trgmii_rmw(priv, reg, 0, val);
393     -}
394     -
395     -static void
396     -mt7623_trgmii_clear(struct mt7530_priv *priv, u32 reg, u32 val)
397     -{
398     - mt7623_trgmii_rmw(priv, reg, val, 0);
399     -}
400     -
401     static int
402     core_read_mmd_indirect(struct mt7530_priv *priv, int prtad, int devad)
403     {
404     @@ -530,27 +478,6 @@ mt7530_pad_clk_setup(struct dsa_switch *ds, int mode)
405     for (i = 0 ; i < NUM_TRGMII_CTRL; i++)
406     mt7530_rmw(priv, MT7530_TRGMII_RD(i),
407     RD_TAP_MASK, RD_TAP(16));
408     - else
409     - if (priv->id != ID_MT7621)
410     - mt7623_trgmii_set(priv, GSW_INTF_MODE,
411     - INTF_MODE_TRGMII);
412     -
413     - return 0;
414     -}
415     -
416     -static int
417     -mt7623_pad_clk_setup(struct dsa_switch *ds)
418     -{
419     - struct mt7530_priv *priv = ds->priv;
420     - int i;
421     -
422     - for (i = 0 ; i < NUM_TRGMII_CTRL; i++)
423     - mt7623_trgmii_write(priv, GSW_TRGMII_TD_ODT(i),
424     - TD_DM_DRVP(8) | TD_DM_DRVN(8));
425     -
426     - mt7623_trgmii_set(priv, GSW_TRGMII_RCK_CTRL, RX_RST | RXC_DQSISEL);
427     - mt7623_trgmii_clear(priv, GSW_TRGMII_RCK_CTRL, RX_RST);
428     -
429     return 0;
430     }
431    
432     @@ -857,8 +784,9 @@ mt7530_port_set_vlan_unaware(struct dsa_switch *ds, int port)
433     */
434     mt7530_rmw(priv, MT7530_PCR_P(port), PCR_PORT_VLAN_MASK,
435     MT7530_PORT_MATRIX_MODE);
436     - mt7530_rmw(priv, MT7530_PVC_P(port), VLAN_ATTR_MASK,
437     - VLAN_ATTR(MT7530_VLAN_TRANSPARENT));
438     + mt7530_rmw(priv, MT7530_PVC_P(port), VLAN_ATTR_MASK | PVC_EG_TAG_MASK,
439     + VLAN_ATTR(MT7530_VLAN_TRANSPARENT) |
440     + PVC_EG_TAG(MT7530_VLAN_EG_CONSISTENT));
441    
442     for (i = 0; i < MT7530_NUM_PORTS; i++) {
443     if (dsa_is_user_port(ds, i) &&
444     @@ -874,8 +802,8 @@ mt7530_port_set_vlan_unaware(struct dsa_switch *ds, int port)
445     if (all_user_ports_removed) {
446     mt7530_write(priv, MT7530_PCR_P(MT7530_CPU_PORT),
447     PCR_MATRIX(dsa_user_ports(priv->ds)));
448     - mt7530_write(priv, MT7530_PVC_P(MT7530_CPU_PORT),
449     - PORT_SPEC_TAG);
450     + mt7530_write(priv, MT7530_PVC_P(MT7530_CPU_PORT), PORT_SPEC_TAG
451     + | PVC_EG_TAG(MT7530_VLAN_EG_CONSISTENT));
452     }
453     }
454    
455     @@ -901,8 +829,9 @@ mt7530_port_set_vlan_aware(struct dsa_switch *ds, int port)
456     /* Set the port as a user port which is to be able to recognize VID
457     * from incoming packets before fetching entry within the VLAN table.
458     */
459     - mt7530_rmw(priv, MT7530_PVC_P(port), VLAN_ATTR_MASK,
460     - VLAN_ATTR(MT7530_VLAN_USER));
461     + mt7530_rmw(priv, MT7530_PVC_P(port), VLAN_ATTR_MASK | PVC_EG_TAG_MASK,
462     + VLAN_ATTR(MT7530_VLAN_USER) |
463     + PVC_EG_TAG(MT7530_VLAN_EG_DISABLED));
464     }
465    
466     static void
467     @@ -1255,10 +1184,6 @@ mt7530_setup(struct dsa_switch *ds)
468     dn = ds->ports[MT7530_CPU_PORT].master->dev.of_node->parent;
469    
470     if (priv->id == ID_MT7530) {
471     - priv->ethernet = syscon_node_to_regmap(dn);
472     - if (IS_ERR(priv->ethernet))
473     - return PTR_ERR(priv->ethernet);
474     -
475     regulator_set_voltage(priv->core_pwr, 1000000, 1000000);
476     ret = regulator_enable(priv->core_pwr);
477     if (ret < 0) {
478     @@ -1332,6 +1257,10 @@ mt7530_setup(struct dsa_switch *ds)
479     mt7530_cpu_port_enable(priv, i);
480     else
481     mt7530_port_disable(ds, i);
482     +
483     + /* Enable consistent egress tag */
484     + mt7530_rmw(priv, MT7530_PVC_P(i), PVC_EG_TAG_MASK,
485     + PVC_EG_TAG(MT7530_VLAN_EG_CONSISTENT));
486     }
487    
488     /* Setup port 5 */
489     @@ -1416,14 +1345,6 @@ static void mt7530_phylink_mac_config(struct dsa_switch *ds, int port,
490     /* Setup TX circuit incluing relevant PAD and driving */
491     mt7530_pad_clk_setup(ds, state->interface);
492    
493     - if (priv->id == ID_MT7530) {
494     - /* Setup RX circuit, relevant PAD and driving on the
495     - * host which must be placed after the setup on the
496     - * device side is all finished.
497     - */
498     - mt7623_pad_clk_setup(ds);
499     - }
500     -
501     priv->p6_interface = state->interface;
502     break;
503     default:
504     diff --git a/drivers/net/dsa/mt7530.h b/drivers/net/dsa/mt7530.h
505     index ccb9da8cad0d..756140b7dfd5 100644
506     --- a/drivers/net/dsa/mt7530.h
507     +++ b/drivers/net/dsa/mt7530.h
508     @@ -167,9 +167,16 @@ enum mt7530_port_mode {
509     /* Register for port vlan control */
510     #define MT7530_PVC_P(x) (0x2010 + ((x) * 0x100))
511     #define PORT_SPEC_TAG BIT(5)
512     +#define PVC_EG_TAG(x) (((x) & 0x7) << 8)
513     +#define PVC_EG_TAG_MASK PVC_EG_TAG(7)
514     #define VLAN_ATTR(x) (((x) & 0x3) << 6)
515     #define VLAN_ATTR_MASK VLAN_ATTR(3)
516    
517     +enum mt7530_vlan_port_eg_tag {
518     + MT7530_VLAN_EG_DISABLED = 0,
519     + MT7530_VLAN_EG_CONSISTENT = 1,
520     +};
521     +
522     enum mt7530_vlan_port_attr {
523     MT7530_VLAN_USER = 0,
524     MT7530_VLAN_TRANSPARENT = 3,
525     @@ -268,7 +275,6 @@ enum mt7530_vlan_port_attr {
526    
527     /* Registers for TRGMII on the both side */
528     #define MT7530_TRGMII_RCK_CTRL 0x7a00
529     -#define GSW_TRGMII_RCK_CTRL 0x300
530     #define RX_RST BIT(31)
531     #define RXC_DQSISEL BIT(30)
532     #define DQSI1_TAP_MASK (0x7f << 8)
533     @@ -277,31 +283,24 @@ enum mt7530_vlan_port_attr {
534     #define DQSI0_TAP(x) ((x) & 0x7f)
535    
536     #define MT7530_TRGMII_RCK_RTT 0x7a04
537     -#define GSW_TRGMII_RCK_RTT 0x304
538     #define DQS1_GATE BIT(31)
539     #define DQS0_GATE BIT(30)
540    
541     #define MT7530_TRGMII_RD(x) (0x7a10 + (x) * 8)
542     -#define GSW_TRGMII_RD(x) (0x310 + (x) * 8)
543     #define BSLIP_EN BIT(31)
544     #define EDGE_CHK BIT(30)
545     #define RD_TAP_MASK 0x7f
546     #define RD_TAP(x) ((x) & 0x7f)
547    
548     -#define GSW_TRGMII_TXCTRL 0x340
549     #define MT7530_TRGMII_TXCTRL 0x7a40
550     #define TRAIN_TXEN BIT(31)
551     #define TXC_INV BIT(30)
552     #define TX_RST BIT(28)
553    
554     #define MT7530_TRGMII_TD_ODT(i) (0x7a54 + 8 * (i))
555     -#define GSW_TRGMII_TD_ODT(i) (0x354 + 8 * (i))
556     #define TD_DM_DRVP(x) ((x) & 0xf)
557     #define TD_DM_DRVN(x) (((x) & 0xf) << 4)
558    
559     -#define GSW_INTF_MODE 0x390
560     -#define INTF_MODE_TRGMII BIT(1)
561     -
562     #define MT7530_TRGMII_TCK_CTRL 0x7a78
563     #define TCK_TAP(x) (((x) & 0xf) << 8)
564    
565     @@ -434,7 +433,6 @@ static const char *p5_intf_modes(unsigned int p5_interface)
566     * @ds: The pointer to the dsa core structure
567     * @bus: The bus used for the device and built-in PHY
568     * @rstc: The pointer to reset control used by MCM
569     - * @ethernet: The regmap used for access TRGMII-based registers
570     * @core_pwr: The power supplied into the core
571     * @io_pwr: The power supplied into the I/O
572     * @reset: The descriptor for GPIO line tied to its reset pin
573     @@ -451,7 +449,6 @@ struct mt7530_priv {
574     struct dsa_switch *ds;
575     struct mii_bus *bus;
576     struct reset_control *rstc;
577     - struct regmap *ethernet;
578     struct regulator *core_pwr;
579     struct regulator *io_pwr;
580     struct gpio_desc *reset;
581     diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
582     index 98f8f2033154..3bd20f765120 100644
583     --- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
584     +++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
585     @@ -514,7 +514,7 @@ static void xgbe_isr_task(unsigned long data)
586     xgbe_disable_rx_tx_ints(pdata);
587    
588     /* Turn on polling */
589     - __napi_schedule_irqoff(&pdata->napi);
590     + __napi_schedule(&pdata->napi);
591     }
592     } else {
593     /* Don't clear Rx/Tx status if doing per channel DMA
594     diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
595     index 703adb96429e..997dc811382a 100644
596     --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
597     +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
598     @@ -65,6 +65,17 @@ u32 mtk_r32(struct mtk_eth *eth, unsigned reg)
599     return __raw_readl(eth->base + reg);
600     }
601    
602     +u32 mtk_m32(struct mtk_eth *eth, u32 mask, u32 set, unsigned reg)
603     +{
604     + u32 val;
605     +
606     + val = mtk_r32(eth, reg);
607     + val &= ~mask;
608     + val |= set;
609     + mtk_w32(eth, val, reg);
610     + return reg;
611     +}
612     +
613     static int mtk_mdio_busy_wait(struct mtk_eth *eth)
614     {
615     unsigned long t_start = jiffies;
616     @@ -193,7 +204,7 @@ static void mtk_mac_config(struct phylink_config *config, unsigned int mode,
617     struct mtk_mac *mac = container_of(config, struct mtk_mac,
618     phylink_config);
619     struct mtk_eth *eth = mac->hw;
620     - u32 mcr_cur, mcr_new, sid;
621     + u32 mcr_cur, mcr_new, sid, i;
622     int val, ge_mode, err;
623    
624     /* MT76x8 has no hardware settings between for the MAC */
625     @@ -255,6 +266,17 @@ static void mtk_mac_config(struct phylink_config *config, unsigned int mode,
626     PHY_INTERFACE_MODE_TRGMII)
627     mtk_gmac0_rgmii_adjust(mac->hw,
628     state->speed);
629     +
630     + /* mt7623_pad_clk_setup */
631     + for (i = 0 ; i < NUM_TRGMII_CTRL; i++)
632     + mtk_w32(mac->hw,
633     + TD_DM_DRVP(8) | TD_DM_DRVN(8),
634     + TRGMII_TD_ODT(i));
635     +
636     + /* Assert/release MT7623 RXC reset */
637     + mtk_m32(mac->hw, 0, RXC_RST | RXC_DQSISEL,
638     + TRGMII_RCK_CTRL);
639     + mtk_m32(mac->hw, RXC_RST, 0, TRGMII_RCK_CTRL);
640     }
641     }
642    
643     diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
644     index 76bd12cb8150..1e787f3577aa 100644
645     --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
646     +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
647     @@ -350,10 +350,13 @@
648     #define DQSI0(x) ((x << 0) & GENMASK(6, 0))
649     #define DQSI1(x) ((x << 8) & GENMASK(14, 8))
650     #define RXCTL_DMWTLAT(x) ((x << 16) & GENMASK(18, 16))
651     +#define RXC_RST BIT(31)
652     #define RXC_DQSISEL BIT(30)
653     #define RCK_CTRL_RGMII_1000 (RXC_DQSISEL | RXCTL_DMWTLAT(2) | DQSI1(16))
654     #define RCK_CTRL_RGMII_10_100 RXCTL_DMWTLAT(2)
655    
656     +#define NUM_TRGMII_CTRL 5
657     +
658     /* TRGMII RXC control register */
659     #define TRGMII_TCK_CTRL 0x10340
660     #define TXCTL_DMWTLAT(x) ((x << 16) & GENMASK(18, 16))
661     @@ -361,6 +364,11 @@
662     #define TCK_CTRL_RGMII_1000 TXCTL_DMWTLAT(2)
663     #define TCK_CTRL_RGMII_10_100 (TXC_INV | TXCTL_DMWTLAT(2))
664    
665     +/* TRGMII TX Drive Strength */
666     +#define TRGMII_TD_ODT(i) (0x10354 + 8 * (i))
667     +#define TD_DM_DRVP(x) ((x) & 0xf)
668     +#define TD_DM_DRVN(x) (((x) & 0xf) << 4)
669     +
670     /* TRGMII Interface mode register */
671     #define INTF_MODE 0x10390
672     #define TRGMII_INTF_DIS BIT(0)
673     diff --git a/drivers/net/ethernet/mellanox/mlx5/core/devlink.c b/drivers/net/ethernet/mellanox/mlx5/core/devlink.c
674     index 381925c90d94..d63ce3feb65c 100644
675     --- a/drivers/net/ethernet/mellanox/mlx5/core/devlink.c
676     +++ b/drivers/net/ethernet/mellanox/mlx5/core/devlink.c
677     @@ -23,7 +23,10 @@ static int mlx5_devlink_flash_update(struct devlink *devlink,
678     if (err)
679     return err;
680    
681     - return mlx5_firmware_flash(dev, fw, extack);
682     + err = mlx5_firmware_flash(dev, fw, extack);
683     + release_firmware(fw);
684     +
685     + return err;
686     }
687    
688     static u8 mlx5_fw_ver_major(u32 version)
689     diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/ethernet/mellanox/mlx5/core/en.h
690     index 55ceabf077b2..11426f94c90c 100644
691     --- a/drivers/net/ethernet/mellanox/mlx5/core/en.h
692     +++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h
693     @@ -1035,14 +1035,15 @@ int mlx5e_open_channels(struct mlx5e_priv *priv,
694     struct mlx5e_channels *chs);
695     void mlx5e_close_channels(struct mlx5e_channels *chs);
696    
697     -/* Function pointer to be used to modify WH settings while
698     +/* Function pointer to be used to modify HW or kernel settings while
699     * switching channels
700     */
701     -typedef int (*mlx5e_fp_hw_modify)(struct mlx5e_priv *priv);
702     +typedef int (*mlx5e_fp_preactivate)(struct mlx5e_priv *priv);
703     int mlx5e_safe_reopen_channels(struct mlx5e_priv *priv);
704     int mlx5e_safe_switch_channels(struct mlx5e_priv *priv,
705     struct mlx5e_channels *new_chs,
706     - mlx5e_fp_hw_modify hw_modify);
707     + mlx5e_fp_preactivate preactivate);
708     +int mlx5e_num_channels_changed(struct mlx5e_priv *priv);
709     void mlx5e_activate_priv_channels(struct mlx5e_priv *priv);
710     void mlx5e_deactivate_priv_channels(struct mlx5e_priv *priv);
711    
712     diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
713     index c6776f308d5e..304ddce6b087 100644
714     --- a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
715     +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
716     @@ -445,9 +445,7 @@ int mlx5e_ethtool_set_channels(struct mlx5e_priv *priv,
717    
718     if (!test_bit(MLX5E_STATE_OPENED, &priv->state)) {
719     *cur_params = new_channels.params;
720     - if (!netif_is_rxfh_configured(priv->netdev))
721     - mlx5e_build_default_indir_rqt(priv->rss_params.indirection_rqt,
722     - MLX5E_INDIR_RQT_SIZE, count);
723     + mlx5e_num_channels_changed(priv);
724     goto out;
725     }
726    
727     @@ -455,12 +453,8 @@ int mlx5e_ethtool_set_channels(struct mlx5e_priv *priv,
728     if (arfs_enabled)
729     mlx5e_arfs_disable(priv);
730    
731     - if (!netif_is_rxfh_configured(priv->netdev))
732     - mlx5e_build_default_indir_rqt(priv->rss_params.indirection_rqt,
733     - MLX5E_INDIR_RQT_SIZE, count);
734     -
735     /* Switch to new channels, set new parameters and close old ones */
736     - err = mlx5e_safe_switch_channels(priv, &new_channels, NULL);
737     + err = mlx5e_safe_switch_channels(priv, &new_channels, mlx5e_num_channels_changed);
738    
739     if (arfs_enabled) {
740     int err2 = mlx5e_arfs_enable(priv);
741     diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
742     index ee7c753e9ea0..88ea279c29bb 100644
743     --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
744     +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
745     @@ -2897,6 +2897,28 @@ static void mlx5e_netdev_set_tcs(struct net_device *netdev)
746     netdev_set_tc_queue(netdev, tc, nch, 0);
747     }
748    
749     +static void mlx5e_update_netdev_queues(struct mlx5e_priv *priv)
750     +{
751     + int num_txqs = priv->channels.num * priv->channels.params.num_tc;
752     + int num_rxqs = priv->channels.num * priv->profile->rq_groups;
753     + struct net_device *netdev = priv->netdev;
754     +
755     + mlx5e_netdev_set_tcs(netdev);
756     + netif_set_real_num_tx_queues(netdev, num_txqs);
757     + netif_set_real_num_rx_queues(netdev, num_rxqs);
758     +}
759     +
760     +int mlx5e_num_channels_changed(struct mlx5e_priv *priv)
761     +{
762     + u16 count = priv->channels.params.num_channels;
763     +
764     + if (!netif_is_rxfh_configured(priv->netdev))
765     + mlx5e_build_default_indir_rqt(priv->rss_params.indirection_rqt,
766     + MLX5E_INDIR_RQT_SIZE, count);
767     +
768     + return 0;
769     +}
770     +
771     static void mlx5e_build_txq_maps(struct mlx5e_priv *priv)
772     {
773     int i, ch;
774     @@ -2918,13 +2940,7 @@ static void mlx5e_build_txq_maps(struct mlx5e_priv *priv)
775    
776     void mlx5e_activate_priv_channels(struct mlx5e_priv *priv)
777     {
778     - int num_txqs = priv->channels.num * priv->channels.params.num_tc;
779     - int num_rxqs = priv->channels.num * priv->profile->rq_groups;
780     - struct net_device *netdev = priv->netdev;
781     -
782     - mlx5e_netdev_set_tcs(netdev);
783     - netif_set_real_num_tx_queues(netdev, num_txqs);
784     - netif_set_real_num_rx_queues(netdev, num_rxqs);
785     + mlx5e_update_netdev_queues(priv);
786    
787     mlx5e_build_txq_maps(priv);
788     mlx5e_activate_channels(&priv->channels);
789     @@ -2960,7 +2976,7 @@ void mlx5e_deactivate_priv_channels(struct mlx5e_priv *priv)
790    
791     static void mlx5e_switch_priv_channels(struct mlx5e_priv *priv,
792     struct mlx5e_channels *new_chs,
793     - mlx5e_fp_hw_modify hw_modify)
794     + mlx5e_fp_preactivate preactivate)
795     {
796     struct net_device *netdev = priv->netdev;
797     int new_num_txqs;
798     @@ -2979,9 +2995,11 @@ static void mlx5e_switch_priv_channels(struct mlx5e_priv *priv,
799    
800     priv->channels = *new_chs;
801    
802     - /* New channels are ready to roll, modify HW settings if needed */
803     - if (hw_modify)
804     - hw_modify(priv);
805     + /* New channels are ready to roll, call the preactivate hook if needed
806     + * to modify HW settings or update kernel parameters.
807     + */
808     + if (preactivate)
809     + preactivate(priv);
810    
811     priv->profile->update_rx(priv);
812     mlx5e_activate_priv_channels(priv);
813     @@ -2993,7 +3011,7 @@ static void mlx5e_switch_priv_channels(struct mlx5e_priv *priv,
814    
815     int mlx5e_safe_switch_channels(struct mlx5e_priv *priv,
816     struct mlx5e_channels *new_chs,
817     - mlx5e_fp_hw_modify hw_modify)
818     + mlx5e_fp_preactivate preactivate)
819     {
820     int err;
821    
822     @@ -3001,7 +3019,7 @@ int mlx5e_safe_switch_channels(struct mlx5e_priv *priv,
823     if (err)
824     return err;
825    
826     - mlx5e_switch_priv_channels(priv, new_chs, hw_modify);
827     + mlx5e_switch_priv_channels(priv, new_chs, preactivate);
828     return 0;
829     }
830    
831     @@ -5308,9 +5326,10 @@ int mlx5e_attach_netdev(struct mlx5e_priv *priv)
832     max_nch = mlx5e_get_max_num_channels(priv->mdev);
833     if (priv->channels.params.num_channels > max_nch) {
834     mlx5_core_warn(priv->mdev, "MLX5E: Reducing number of channels to %d\n", max_nch);
835     + /* Reducing the number of channels - RXFH has to be reset. */
836     + priv->netdev->priv_flags &= ~IFF_RXFH_CONFIGURED;
837     priv->channels.params.num_channels = max_nch;
838     - mlx5e_build_default_indir_rqt(priv->rss_params.indirection_rqt,
839     - MLX5E_INDIR_RQT_SIZE, max_nch);
840     + mlx5e_num_channels_changed(priv);
841     }
842    
843     err = profile->init_tx(priv);
844     diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
845     index cd9bb7c7b341..fddf644ba349 100644
846     --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
847     +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
848     @@ -1814,29 +1814,30 @@ static int register_devlink_port(struct mlx5_core_dev *dev,
849     struct mlx5_eswitch_rep *rep = rpriv->rep;
850     struct netdev_phys_item_id ppid = {};
851     unsigned int dl_port_index = 0;
852     + u16 pfnum;
853    
854     if (!is_devlink_port_supported(dev, rpriv))
855     return 0;
856    
857     mlx5e_rep_get_port_parent_id(rpriv->netdev, &ppid);
858     + pfnum = PCI_FUNC(dev->pdev->devfn);
859    
860     if (rep->vport == MLX5_VPORT_UPLINK) {
861     devlink_port_attrs_set(&rpriv->dl_port,
862     DEVLINK_PORT_FLAVOUR_PHYSICAL,
863     - PCI_FUNC(dev->pdev->devfn), false, 0,
864     + pfnum, false, 0,
865     &ppid.id[0], ppid.id_len);
866     dl_port_index = vport_to_devlink_port_index(dev, rep->vport);
867     } else if (rep->vport == MLX5_VPORT_PF) {
868     devlink_port_attrs_pci_pf_set(&rpriv->dl_port,
869     &ppid.id[0], ppid.id_len,
870     - dev->pdev->devfn);
871     + pfnum);
872     dl_port_index = rep->vport;
873     } else if (mlx5_eswitch_is_vf_vport(dev->priv.eswitch,
874     rpriv->rep->vport)) {
875     devlink_port_attrs_pci_vf_set(&rpriv->dl_port,
876     &ppid.id[0], ppid.id_len,
877     - dev->pdev->devfn,
878     - rep->vport - 1);
879     + pfnum, rep->vport - 1);
880     dl_port_index = vport_to_devlink_port_index(dev, rep->vport);
881     }
882    
883     diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
884     index 1f9107d83848..ec117e441425 100644
885     --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
886     +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
887     @@ -3181,12 +3181,13 @@ static int add_vlan_pop_action(struct mlx5e_priv *priv,
888     struct mlx5_esw_flow_attr *attr,
889     u32 *action)
890     {
891     - int nest_level = attr->parse_attr->filter_dev->lower_level;
892     struct flow_action_entry vlan_act = {
893     .id = FLOW_ACTION_VLAN_POP,
894     };
895     - int err = 0;
896     + int nest_level, err = 0;
897    
898     + nest_level = attr->parse_attr->filter_dev->lower_level -
899     + priv->netdev->lower_level;
900     while (nest_level--) {
901     err = parse_tc_vlan_action(priv, &vlan_act, attr, action);
902     if (err)
903     diff --git a/drivers/net/ethernet/mellanox/mlx5/core/health.c b/drivers/net/ethernet/mellanox/mlx5/core/health.c
904     index c07f3154437c..f63beb399837 100644
905     --- a/drivers/net/ethernet/mellanox/mlx5/core/health.c
906     +++ b/drivers/net/ethernet/mellanox/mlx5/core/health.c
907     @@ -243,7 +243,7 @@ recover_from_sw_reset:
908     if (mlx5_get_nic_state(dev) == MLX5_NIC_IFC_DISABLED)
909     break;
910    
911     - cond_resched();
912     + msleep(20);
913     } while (!time_after(jiffies, end));
914    
915     if (mlx5_get_nic_state(dev) != MLX5_NIC_IFC_DISABLED) {
916     diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c
917     index 102d637bc84a..65a3e3b5face 100644
918     --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c
919     +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c
920     @@ -146,6 +146,8 @@ static int sun7i_gmac_probe(struct platform_device *pdev)
921     plat_dat->init = sun7i_gmac_init;
922     plat_dat->exit = sun7i_gmac_exit;
923     plat_dat->fix_mac_speed = sun7i_fix_speed;
924     + plat_dat->tx_fifo_size = 4096;
925     + plat_dat->rx_fifo_size = 16384;
926    
927     ret = sun7i_gmac_init(pdev, plat_dat->bsp_priv);
928     if (ret)
929     diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
930     index 51b64f087717..663c68ed6ef9 100644
931     --- a/drivers/net/phy/micrel.c
932     +++ b/drivers/net/phy/micrel.c
933     @@ -1154,7 +1154,7 @@ static struct phy_driver ksphy_driver[] = {
934     .driver_data = &ksz9021_type,
935     .probe = kszphy_probe,
936     .config_init = ksz9131_config_init,
937     - .read_status = ksz9031_read_status,
938     + .read_status = genphy_read_status,
939     .ack_interrupt = kszphy_ack_interrupt,
940     .config_intr = kszphy_config_intr,
941     .get_sset_count = kszphy_get_sset_count,
942     diff --git a/drivers/net/tun.c b/drivers/net/tun.c
943     index 16f5cb249ed5..6e9a59e3d822 100644
944     --- a/drivers/net/tun.c
945     +++ b/drivers/net/tun.c
946     @@ -1925,6 +1925,7 @@ drop:
947    
948     skb_reset_network_header(skb);
949     skb_probe_transport_header(skb);
950     + skb_record_rx_queue(skb, tfile->queue_index);
951    
952     if (skb_xdp) {
953     struct bpf_prog *xdp_prog;
954     @@ -2492,6 +2493,7 @@ build:
955     skb->protocol = eth_type_trans(skb, tun->dev);
956     skb_reset_network_header(skb);
957     skb_probe_transport_header(skb);
958     + skb_record_rx_queue(skb, tfile->queue_index);
959    
960     if (skb_xdp) {
961     err = do_xdp_generic(xdp_prog, skb);
962     @@ -2503,7 +2505,6 @@ build:
963     !tfile->detached)
964     rxhash = __skb_get_hash_symmetric(skb);
965    
966     - skb_record_rx_queue(skb, tfile->queue_index);
967     netif_receive_skb(skb);
968    
969     /* No need for get_cpu_ptr() here since this function is
970     diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
971     index 14f562cd715c..c48c68090d76 100644
972     --- a/drivers/net/wireless/mac80211_hwsim.c
973     +++ b/drivers/net/wireless/mac80211_hwsim.c
974     @@ -3575,9 +3575,9 @@ static int hwsim_new_radio_nl(struct sk_buff *msg, struct genl_info *info)
975     }
976    
977     if (info->attrs[HWSIM_ATTR_RADIO_NAME]) {
978     - hwname = kasprintf(GFP_KERNEL, "%.*s",
979     - nla_len(info->attrs[HWSIM_ATTR_RADIO_NAME]),
980     - (char *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]));
981     + hwname = kstrndup((char *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]),
982     + nla_len(info->attrs[HWSIM_ATTR_RADIO_NAME]),
983     + GFP_KERNEL);
984     if (!hwname)
985     return -ENOMEM;
986     param.hwname = hwname;
987     @@ -3597,9 +3597,9 @@ static int hwsim_del_radio_nl(struct sk_buff *msg, struct genl_info *info)
988     if (info->attrs[HWSIM_ATTR_RADIO_ID]) {
989     idx = nla_get_u32(info->attrs[HWSIM_ATTR_RADIO_ID]);
990     } else if (info->attrs[HWSIM_ATTR_RADIO_NAME]) {
991     - hwname = kasprintf(GFP_KERNEL, "%.*s",
992     - nla_len(info->attrs[HWSIM_ATTR_RADIO_NAME]),
993     - (char *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]));
994     + hwname = kstrndup((char *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]),
995     + nla_len(info->attrs[HWSIM_ATTR_RADIO_NAME]),
996     + GFP_KERNEL);
997     if (!hwname)
998     return -ENOMEM;
999     } else
1000     diff --git a/drivers/platform/chrome/cros_ec_rpmsg.c b/drivers/platform/chrome/cros_ec_rpmsg.c
1001     index 0c3738c3244d..aa2059b33ba5 100644
1002     --- a/drivers/platform/chrome/cros_ec_rpmsg.c
1003     +++ b/drivers/platform/chrome/cros_ec_rpmsg.c
1004     @@ -42,6 +42,8 @@ struct cros_ec_rpmsg {
1005     struct completion xfer_ack;
1006     struct work_struct host_event_work;
1007     struct rpmsg_endpoint *ept;
1008     + bool has_pending_host_event;
1009     + bool probe_done;
1010     };
1011    
1012     /**
1013     @@ -186,7 +188,14 @@ static int cros_ec_rpmsg_callback(struct rpmsg_device *rpdev, void *data,
1014     memcpy(ec_dev->din, resp->data, len);
1015     complete(&ec_rpmsg->xfer_ack);
1016     } else if (resp->type == HOST_EVENT_MARK) {
1017     - schedule_work(&ec_rpmsg->host_event_work);
1018     + /*
1019     + * If the host event is sent before cros_ec_register is
1020     + * finished, queue the host event.
1021     + */
1022     + if (ec_rpmsg->probe_done)
1023     + schedule_work(&ec_rpmsg->host_event_work);
1024     + else
1025     + ec_rpmsg->has_pending_host_event = true;
1026     } else {
1027     dev_warn(ec_dev->dev, "rpmsg received invalid type = %d",
1028     resp->type);
1029     @@ -249,6 +258,11 @@ static int cros_ec_rpmsg_probe(struct rpmsg_device *rpdev)
1030     return ret;
1031     }
1032    
1033     + ec_rpmsg->probe_done = true;
1034     +
1035     + if (ec_rpmsg->has_pending_host_event)
1036     + schedule_work(&ec_rpmsg->host_event_work);
1037     +
1038     return 0;
1039     }
1040    
1041     diff --git a/drivers/pwm/pwm-pca9685.c b/drivers/pwm/pwm-pca9685.c
1042     index b07bdca3d510..590375be5214 100644
1043     --- a/drivers/pwm/pwm-pca9685.c
1044     +++ b/drivers/pwm/pwm-pca9685.c
1045     @@ -20,6 +20,7 @@
1046     #include <linux/slab.h>
1047     #include <linux/delay.h>
1048     #include <linux/pm_runtime.h>
1049     +#include <linux/bitmap.h>
1050    
1051     /*
1052     * Because the PCA9685 has only one prescaler per chip, changing the period of
1053     @@ -74,6 +75,7 @@ struct pca9685 {
1054     #if IS_ENABLED(CONFIG_GPIOLIB)
1055     struct mutex lock;
1056     struct gpio_chip gpio;
1057     + DECLARE_BITMAP(pwms_inuse, PCA9685_MAXCHAN + 1);
1058     #endif
1059     };
1060    
1061     @@ -83,51 +85,51 @@ static inline struct pca9685 *to_pca(struct pwm_chip *chip)
1062     }
1063    
1064     #if IS_ENABLED(CONFIG_GPIOLIB)
1065     -static int pca9685_pwm_gpio_request(struct gpio_chip *gpio, unsigned int offset)
1066     +static bool pca9685_pwm_test_and_set_inuse(struct pca9685 *pca, int pwm_idx)
1067     {
1068     - struct pca9685 *pca = gpiochip_get_data(gpio);
1069     - struct pwm_device *pwm;
1070     + bool is_inuse;
1071    
1072     mutex_lock(&pca->lock);
1073     -
1074     - pwm = &pca->chip.pwms[offset];
1075     -
1076     - if (pwm->flags & (PWMF_REQUESTED | PWMF_EXPORTED)) {
1077     - mutex_unlock(&pca->lock);
1078     - return -EBUSY;
1079     + if (pwm_idx >= PCA9685_MAXCHAN) {
1080     + /*
1081     + * "all LEDs" channel:
1082     + * pretend already in use if any of the PWMs are requested
1083     + */
1084     + if (!bitmap_empty(pca->pwms_inuse, PCA9685_MAXCHAN)) {
1085     + is_inuse = true;
1086     + goto out;
1087     + }
1088     + } else {
1089     + /*
1090     + * regular channel:
1091     + * pretend already in use if the "all LEDs" channel is requested
1092     + */
1093     + if (test_bit(PCA9685_MAXCHAN, pca->pwms_inuse)) {
1094     + is_inuse = true;
1095     + goto out;
1096     + }
1097     }
1098     -
1099     - pwm_set_chip_data(pwm, (void *)1);
1100     -
1101     + is_inuse = test_and_set_bit(pwm_idx, pca->pwms_inuse);
1102     +out:
1103     mutex_unlock(&pca->lock);
1104     - pm_runtime_get_sync(pca->chip.dev);
1105     - return 0;
1106     + return is_inuse;
1107     }
1108    
1109     -static bool pca9685_pwm_is_gpio(struct pca9685 *pca, struct pwm_device *pwm)
1110     +static void pca9685_pwm_clear_inuse(struct pca9685 *pca, int pwm_idx)
1111     {
1112     - bool is_gpio = false;
1113     -
1114     mutex_lock(&pca->lock);
1115     + clear_bit(pwm_idx, pca->pwms_inuse);
1116     + mutex_unlock(&pca->lock);
1117     +}
1118    
1119     - if (pwm->hwpwm >= PCA9685_MAXCHAN) {
1120     - unsigned int i;
1121     -
1122     - /*
1123     - * Check if any of the GPIOs are requested and in that case
1124     - * prevent using the "all LEDs" channel.
1125     - */
1126     - for (i = 0; i < pca->gpio.ngpio; i++)
1127     - if (gpiochip_is_requested(&pca->gpio, i)) {
1128     - is_gpio = true;
1129     - break;
1130     - }
1131     - } else if (pwm_get_chip_data(pwm)) {
1132     - is_gpio = true;
1133     - }
1134     +static int pca9685_pwm_gpio_request(struct gpio_chip *gpio, unsigned int offset)
1135     +{
1136     + struct pca9685 *pca = gpiochip_get_data(gpio);
1137    
1138     - mutex_unlock(&pca->lock);
1139     - return is_gpio;
1140     + if (pca9685_pwm_test_and_set_inuse(pca, offset))
1141     + return -EBUSY;
1142     + pm_runtime_get_sync(pca->chip.dev);
1143     + return 0;
1144     }
1145    
1146     static int pca9685_pwm_gpio_get(struct gpio_chip *gpio, unsigned int offset)
1147     @@ -162,6 +164,7 @@ static void pca9685_pwm_gpio_free(struct gpio_chip *gpio, unsigned int offset)
1148    
1149     pca9685_pwm_gpio_set(gpio, offset, 0);
1150     pm_runtime_put(pca->chip.dev);
1151     + pca9685_pwm_clear_inuse(pca, offset);
1152     }
1153    
1154     static int pca9685_pwm_gpio_get_direction(struct gpio_chip *chip,
1155     @@ -213,12 +216,17 @@ static int pca9685_pwm_gpio_probe(struct pca9685 *pca)
1156     return devm_gpiochip_add_data(dev, &pca->gpio, pca);
1157     }
1158     #else
1159     -static inline bool pca9685_pwm_is_gpio(struct pca9685 *pca,
1160     - struct pwm_device *pwm)
1161     +static inline bool pca9685_pwm_test_and_set_inuse(struct pca9685 *pca,
1162     + int pwm_idx)
1163     {
1164     return false;
1165     }
1166    
1167     +static inline void
1168     +pca9685_pwm_clear_inuse(struct pca9685 *pca, int pwm_idx)
1169     +{
1170     +}
1171     +
1172     static inline int pca9685_pwm_gpio_probe(struct pca9685 *pca)
1173     {
1174     return 0;
1175     @@ -402,7 +410,7 @@ static int pca9685_pwm_request(struct pwm_chip *chip, struct pwm_device *pwm)
1176     {
1177     struct pca9685 *pca = to_pca(chip);
1178    
1179     - if (pca9685_pwm_is_gpio(pca, pwm))
1180     + if (pca9685_pwm_test_and_set_inuse(pca, pwm->hwpwm))
1181     return -EBUSY;
1182     pm_runtime_get_sync(chip->dev);
1183    
1184     @@ -411,8 +419,11 @@ static int pca9685_pwm_request(struct pwm_chip *chip, struct pwm_device *pwm)
1185    
1186     static void pca9685_pwm_free(struct pwm_chip *chip, struct pwm_device *pwm)
1187     {
1188     + struct pca9685 *pca = to_pca(chip);
1189     +
1190     pca9685_pwm_disable(chip, pwm);
1191     pm_runtime_put(chip->dev);
1192     + pca9685_pwm_clear_inuse(pca, pwm->hwpwm);
1193     }
1194    
1195     static const struct pwm_ops pca9685_pwm_ops = {
1196     diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
1197     index a6863b51a1d0..13ab1494c384 100644
1198     --- a/drivers/scsi/ufs/ufshcd.c
1199     +++ b/drivers/scsi/ufs/ufshcd.c
1200     @@ -1539,6 +1539,11 @@ start:
1201     */
1202     if (ufshcd_can_hibern8_during_gating(hba) &&
1203     ufshcd_is_link_hibern8(hba)) {
1204     + if (async) {
1205     + rc = -EAGAIN;
1206     + hba->clk_gating.active_reqs--;
1207     + break;
1208     + }
1209     spin_unlock_irqrestore(hba->host->host_lock, flags);
1210     flush_work(&hba->clk_gating.ungate_work);
1211     spin_lock_irqsave(hba->host->host_lock, flags);
1212     diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
1213     index d19e051f2bc2..d1ce94c608a9 100644
1214     --- a/drivers/target/iscsi/iscsi_target.c
1215     +++ b/drivers/target/iscsi/iscsi_target.c
1216     @@ -4303,30 +4303,37 @@ int iscsit_close_connection(
1217     if (!atomic_read(&sess->session_reinstatement) &&
1218     atomic_read(&sess->session_fall_back_to_erl0)) {
1219     spin_unlock_bh(&sess->conn_lock);
1220     + complete_all(&sess->session_wait_comp);
1221     iscsit_close_session(sess);
1222    
1223     return 0;
1224     } else if (atomic_read(&sess->session_logout)) {
1225     pr_debug("Moving to TARG_SESS_STATE_FREE.\n");
1226     sess->session_state = TARG_SESS_STATE_FREE;
1227     - spin_unlock_bh(&sess->conn_lock);
1228    
1229     - if (atomic_read(&sess->sleep_on_sess_wait_comp))
1230     - complete(&sess->session_wait_comp);
1231     + if (atomic_read(&sess->session_close)) {
1232     + spin_unlock_bh(&sess->conn_lock);
1233     + complete_all(&sess->session_wait_comp);
1234     + iscsit_close_session(sess);
1235     + } else {
1236     + spin_unlock_bh(&sess->conn_lock);
1237     + }
1238    
1239     return 0;
1240     } else {
1241     pr_debug("Moving to TARG_SESS_STATE_FAILED.\n");
1242     sess->session_state = TARG_SESS_STATE_FAILED;
1243    
1244     - if (!atomic_read(&sess->session_continuation)) {
1245     - spin_unlock_bh(&sess->conn_lock);
1246     + if (!atomic_read(&sess->session_continuation))
1247     iscsit_start_time2retain_handler(sess);
1248     - } else
1249     - spin_unlock_bh(&sess->conn_lock);
1250    
1251     - if (atomic_read(&sess->sleep_on_sess_wait_comp))
1252     - complete(&sess->session_wait_comp);
1253     + if (atomic_read(&sess->session_close)) {
1254     + spin_unlock_bh(&sess->conn_lock);
1255     + complete_all(&sess->session_wait_comp);
1256     + iscsit_close_session(sess);
1257     + } else {
1258     + spin_unlock_bh(&sess->conn_lock);
1259     + }
1260    
1261     return 0;
1262     }
1263     @@ -4432,9 +4439,9 @@ static void iscsit_logout_post_handler_closesession(
1264     complete(&conn->conn_logout_comp);
1265    
1266     iscsit_dec_conn_usage_count(conn);
1267     + atomic_set(&sess->session_close, 1);
1268     iscsit_stop_session(sess, sleep, sleep);
1269     iscsit_dec_session_usage_count(sess);
1270     - iscsit_close_session(sess);
1271     }
1272    
1273     static void iscsit_logout_post_handler_samecid(
1274     @@ -4569,49 +4576,6 @@ void iscsit_fail_session(struct iscsi_session *sess)
1275     sess->session_state = TARG_SESS_STATE_FAILED;
1276     }
1277    
1278     -int iscsit_free_session(struct iscsi_session *sess)
1279     -{
1280     - u16 conn_count = atomic_read(&sess->nconn);
1281     - struct iscsi_conn *conn, *conn_tmp = NULL;
1282     - int is_last;
1283     -
1284     - spin_lock_bh(&sess->conn_lock);
1285     - atomic_set(&sess->sleep_on_sess_wait_comp, 1);
1286     -
1287     - list_for_each_entry_safe(conn, conn_tmp, &sess->sess_conn_list,
1288     - conn_list) {
1289     - if (conn_count == 0)
1290     - break;
1291     -
1292     - if (list_is_last(&conn->conn_list, &sess->sess_conn_list)) {
1293     - is_last = 1;
1294     - } else {
1295     - iscsit_inc_conn_usage_count(conn_tmp);
1296     - is_last = 0;
1297     - }
1298     - iscsit_inc_conn_usage_count(conn);
1299     -
1300     - spin_unlock_bh(&sess->conn_lock);
1301     - iscsit_cause_connection_reinstatement(conn, 1);
1302     - spin_lock_bh(&sess->conn_lock);
1303     -
1304     - iscsit_dec_conn_usage_count(conn);
1305     - if (is_last == 0)
1306     - iscsit_dec_conn_usage_count(conn_tmp);
1307     -
1308     - conn_count--;
1309     - }
1310     -
1311     - if (atomic_read(&sess->nconn)) {
1312     - spin_unlock_bh(&sess->conn_lock);
1313     - wait_for_completion(&sess->session_wait_comp);
1314     - } else
1315     - spin_unlock_bh(&sess->conn_lock);
1316     -
1317     - iscsit_close_session(sess);
1318     - return 0;
1319     -}
1320     -
1321     void iscsit_stop_session(
1322     struct iscsi_session *sess,
1323     int session_sleep,
1324     @@ -4622,8 +4586,6 @@ void iscsit_stop_session(
1325     int is_last;
1326    
1327     spin_lock_bh(&sess->conn_lock);
1328     - if (session_sleep)
1329     - atomic_set(&sess->sleep_on_sess_wait_comp, 1);
1330    
1331     if (connection_sleep) {
1332     list_for_each_entry_safe(conn, conn_tmp, &sess->sess_conn_list,
1333     @@ -4681,12 +4643,15 @@ int iscsit_release_sessions_for_tpg(struct iscsi_portal_group *tpg, int force)
1334     spin_lock(&sess->conn_lock);
1335     if (atomic_read(&sess->session_fall_back_to_erl0) ||
1336     atomic_read(&sess->session_logout) ||
1337     + atomic_read(&sess->session_close) ||
1338     (sess->time2retain_timer_flags & ISCSI_TF_EXPIRED)) {
1339     spin_unlock(&sess->conn_lock);
1340     continue;
1341     }
1342     + iscsit_inc_session_usage_count(sess);
1343     atomic_set(&sess->session_reinstatement, 1);
1344     atomic_set(&sess->session_fall_back_to_erl0, 1);
1345     + atomic_set(&sess->session_close, 1);
1346     spin_unlock(&sess->conn_lock);
1347    
1348     list_move_tail(&se_sess->sess_list, &free_list);
1349     @@ -4696,7 +4661,9 @@ int iscsit_release_sessions_for_tpg(struct iscsi_portal_group *tpg, int force)
1350     list_for_each_entry_safe(se_sess, se_sess_tmp, &free_list, sess_list) {
1351     sess = (struct iscsi_session *)se_sess->fabric_sess_ptr;
1352    
1353     - iscsit_free_session(sess);
1354     + list_del_init(&se_sess->sess_list);
1355     + iscsit_stop_session(sess, 1, 1);
1356     + iscsit_dec_session_usage_count(sess);
1357     session_count++;
1358     }
1359    
1360     diff --git a/drivers/target/iscsi/iscsi_target.h b/drivers/target/iscsi/iscsi_target.h
1361     index c95f56a3ce31..7409ce2a6607 100644
1362     --- a/drivers/target/iscsi/iscsi_target.h
1363     +++ b/drivers/target/iscsi/iscsi_target.h
1364     @@ -43,7 +43,6 @@ extern int iscsi_target_rx_thread(void *);
1365     extern int iscsit_close_connection(struct iscsi_conn *);
1366     extern int iscsit_close_session(struct iscsi_session *);
1367     extern void iscsit_fail_session(struct iscsi_session *);
1368     -extern int iscsit_free_session(struct iscsi_session *);
1369     extern void iscsit_stop_session(struct iscsi_session *, int, int);
1370     extern int iscsit_release_sessions_for_tpg(struct iscsi_portal_group *, int);
1371    
1372     diff --git a/drivers/target/iscsi/iscsi_target_configfs.c b/drivers/target/iscsi/iscsi_target_configfs.c
1373     index 42b369fc415e..0fa1d57b26fa 100644
1374     --- a/drivers/target/iscsi/iscsi_target_configfs.c
1375     +++ b/drivers/target/iscsi/iscsi_target_configfs.c
1376     @@ -1476,20 +1476,23 @@ static void lio_tpg_close_session(struct se_session *se_sess)
1377     spin_lock(&sess->conn_lock);
1378     if (atomic_read(&sess->session_fall_back_to_erl0) ||
1379     atomic_read(&sess->session_logout) ||
1380     + atomic_read(&sess->session_close) ||
1381     (sess->time2retain_timer_flags & ISCSI_TF_EXPIRED)) {
1382     spin_unlock(&sess->conn_lock);
1383     spin_unlock_bh(&se_tpg->session_lock);
1384     return;
1385     }
1386     + iscsit_inc_session_usage_count(sess);
1387     atomic_set(&sess->session_reinstatement, 1);
1388     atomic_set(&sess->session_fall_back_to_erl0, 1);
1389     + atomic_set(&sess->session_close, 1);
1390     spin_unlock(&sess->conn_lock);
1391    
1392     iscsit_stop_time2retain_timer(sess);
1393     spin_unlock_bh(&se_tpg->session_lock);
1394    
1395     iscsit_stop_session(sess, 1, 1);
1396     - iscsit_close_session(sess);
1397     + iscsit_dec_session_usage_count(sess);
1398     }
1399    
1400     static u32 lio_tpg_get_inst_index(struct se_portal_group *se_tpg)
1401     diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c
1402     index f53330813207..731ee67fe914 100644
1403     --- a/drivers/target/iscsi/iscsi_target_login.c
1404     +++ b/drivers/target/iscsi/iscsi_target_login.c
1405     @@ -156,6 +156,7 @@ int iscsi_check_for_session_reinstatement(struct iscsi_conn *conn)
1406     spin_lock(&sess_p->conn_lock);
1407     if (atomic_read(&sess_p->session_fall_back_to_erl0) ||
1408     atomic_read(&sess_p->session_logout) ||
1409     + atomic_read(&sess_p->session_close) ||
1410     (sess_p->time2retain_timer_flags & ISCSI_TF_EXPIRED)) {
1411     spin_unlock(&sess_p->conn_lock);
1412     continue;
1413     @@ -166,6 +167,7 @@ int iscsi_check_for_session_reinstatement(struct iscsi_conn *conn)
1414     (sess_p->sess_ops->SessionType == sessiontype))) {
1415     atomic_set(&sess_p->session_reinstatement, 1);
1416     atomic_set(&sess_p->session_fall_back_to_erl0, 1);
1417     + atomic_set(&sess_p->session_close, 1);
1418     spin_unlock(&sess_p->conn_lock);
1419     iscsit_inc_session_usage_count(sess_p);
1420     iscsit_stop_time2retain_timer(sess_p);
1421     @@ -190,7 +192,6 @@ int iscsi_check_for_session_reinstatement(struct iscsi_conn *conn)
1422     if (sess->session_state == TARG_SESS_STATE_FAILED) {
1423     spin_unlock_bh(&sess->conn_lock);
1424     iscsit_dec_session_usage_count(sess);
1425     - iscsit_close_session(sess);
1426     return 0;
1427     }
1428     spin_unlock_bh(&sess->conn_lock);
1429     @@ -198,7 +199,6 @@ int iscsi_check_for_session_reinstatement(struct iscsi_conn *conn)
1430     iscsit_stop_session(sess, 1, 1);
1431     iscsit_dec_session_usage_count(sess);
1432    
1433     - iscsit_close_session(sess);
1434     return 0;
1435     }
1436    
1437     @@ -486,6 +486,7 @@ static int iscsi_login_non_zero_tsih_s2(
1438     sess_p = (struct iscsi_session *)se_sess->fabric_sess_ptr;
1439     if (atomic_read(&sess_p->session_fall_back_to_erl0) ||
1440     atomic_read(&sess_p->session_logout) ||
1441     + atomic_read(&sess_p->session_close) ||
1442     (sess_p->time2retain_timer_flags & ISCSI_TF_EXPIRED))
1443     continue;
1444     if (!memcmp(sess_p->isid, pdu->isid, 6) &&
1445     diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
1446     index 09d6b11246c9..384f26322609 100644
1447     --- a/drivers/usb/dwc3/gadget.c
1448     +++ b/drivers/usb/dwc3/gadget.c
1449     @@ -2567,10 +2567,8 @@ static void dwc3_gadget_endpoint_transfer_in_progress(struct dwc3_ep *dep,
1450    
1451     dwc3_gadget_ep_cleanup_completed_requests(dep, event, status);
1452    
1453     - if (stop) {
1454     + if (stop)
1455     dwc3_stop_active_transfer(dep, true, true);
1456     - dep->flags = DWC3_EP_ENABLED;
1457     - }
1458    
1459     /*
1460     * WORKAROUND: This is the 2nd half of U1/U2 -> U0 workaround.
1461     diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
1462     index 04bdbbb746a4..32a09ed540a2 100644
1463     --- a/fs/btrfs/relocation.c
1464     +++ b/fs/btrfs/relocation.c
1465     @@ -561,8 +561,8 @@ static int should_ignore_root(struct btrfs_root *root)
1466     if (!reloc_root)
1467     return 0;
1468    
1469     - if (btrfs_root_last_snapshot(&reloc_root->root_item) ==
1470     - root->fs_info->running_transaction->transid - 1)
1471     + if (btrfs_header_generation(reloc_root->commit_root) ==
1472     + root->fs_info->running_transaction->transid)
1473     return 0;
1474     /*
1475     * if there is reloc tree and it was created in previous
1476     diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
1477     index fb0f99dc8c22..164dbfd40c52 100644
1478     --- a/fs/ext4/extents.c
1479     +++ b/fs/ext4/extents.c
1480     @@ -3549,8 +3549,8 @@ static int ext4_ext_convert_to_initialized(handle_t *handle,
1481     (unsigned long long)map->m_lblk, map_len);
1482    
1483     sbi = EXT4_SB(inode->i_sb);
1484     - eof_block = (inode->i_size + inode->i_sb->s_blocksize - 1) >>
1485     - inode->i_sb->s_blocksize_bits;
1486     + eof_block = (EXT4_I(inode)->i_disksize + inode->i_sb->s_blocksize - 1)
1487     + >> inode->i_sb->s_blocksize_bits;
1488     if (eof_block < map->m_lblk + map_len)
1489     eof_block = map->m_lblk + map_len;
1490    
1491     @@ -3805,8 +3805,8 @@ static int ext4_split_convert_extents(handle_t *handle,
1492     __func__, inode->i_ino,
1493     (unsigned long long)map->m_lblk, map->m_len);
1494    
1495     - eof_block = (inode->i_size + inode->i_sb->s_blocksize - 1) >>
1496     - inode->i_sb->s_blocksize_bits;
1497     + eof_block = (EXT4_I(inode)->i_disksize + inode->i_sb->s_blocksize - 1)
1498     + >> inode->i_sb->s_blocksize_bits;
1499     if (eof_block < map->m_lblk + map->m_len)
1500     eof_block = map->m_lblk + map->m_len;
1501     /*
1502     diff --git a/fs/ext4/super.c b/fs/ext4/super.c
1503     index 8bd806a03a90..a1eca6d30643 100644
1504     --- a/fs/ext4/super.c
1505     +++ b/fs/ext4/super.c
1506     @@ -4109,7 +4109,7 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
1507     if (sbi->s_inodes_per_group < sbi->s_inodes_per_block ||
1508     sbi->s_inodes_per_group > blocksize * 8) {
1509     ext4_msg(sb, KERN_ERR, "invalid inodes per group: %lu\n",
1510     - sbi->s_blocks_per_group);
1511     + sbi->s_inodes_per_group);
1512     goto failed_mount;
1513     }
1514     sbi->s_itb_per_group = sbi->s_inodes_per_group /
1515     @@ -4238,9 +4238,9 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
1516     EXT4_BLOCKS_PER_GROUP(sb) - 1);
1517     do_div(blocks_count, EXT4_BLOCKS_PER_GROUP(sb));
1518     if (blocks_count > ((uint64_t)1<<32) - EXT4_DESC_PER_BLOCK(sb)) {
1519     - ext4_msg(sb, KERN_WARNING, "groups count too large: %u "
1520     + ext4_msg(sb, KERN_WARNING, "groups count too large: %llu "
1521     "(block count %llu, first data block %u, "
1522     - "blocks per group %lu)", sbi->s_groups_count,
1523     + "blocks per group %lu)", blocks_count,
1524     ext4_blocks_count(es),
1525     le32_to_cpu(es->s_first_data_block),
1526     EXT4_BLOCKS_PER_GROUP(sb));
1527     diff --git a/fs/jbd2/commit.c b/fs/jbd2/commit.c
1528     index 754ec3c47d6f..88146008b3e3 100644
1529     --- a/fs/jbd2/commit.c
1530     +++ b/fs/jbd2/commit.c
1531     @@ -995,9 +995,10 @@ restart_loop:
1532     * journalled data) we need to unmap buffer and clear
1533     * more bits. We also need to be careful about the check
1534     * because the data page mapping can get cleared under
1535     - * out hands, which alse need not to clear more bits
1536     - * because the page and buffers will be freed and can
1537     - * never be reused once we are done with them.
1538     + * our hands. Note that if mapping == NULL, we don't
1539     + * need to make buffer unmapped because the page is
1540     + * already detached from the mapping and buffers cannot
1541     + * get reused.
1542     */
1543     mapping = READ_ONCE(bh->b_page->mapping);
1544     if (mapping && !sb_is_blkdev_sb(mapping->host->i_sb)) {
1545     diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c
1546     index b045cf1826fc..bb980721502d 100644
1547     --- a/fs/overlayfs/inode.c
1548     +++ b/fs/overlayfs/inode.c
1549     @@ -881,7 +881,7 @@ struct inode *ovl_get_inode(struct super_block *sb,
1550     struct dentry *lowerdentry = lowerpath ? lowerpath->dentry : NULL;
1551     bool bylower = ovl_hash_bylower(sb, upperdentry, lowerdentry,
1552     oip->index);
1553     - int fsid = bylower ? oip->lowerpath->layer->fsid : 0;
1554     + int fsid = bylower ? lowerpath->layer->fsid : 0;
1555     bool is_dir, metacopy = false;
1556     unsigned long ino = 0;
1557     int err = oip->newinode ? -EEXIST : -ENOMEM;
1558     @@ -931,6 +931,8 @@ struct inode *ovl_get_inode(struct super_block *sb,
1559     err = -ENOMEM;
1560     goto out_err;
1561     }
1562     + ino = realinode->i_ino;
1563     + fsid = lowerpath->layer->fsid;
1564     }
1565     ovl_fill_inode(inode, realinode->i_mode, realinode->i_rdev, ino, fsid);
1566     ovl_inode_init(inode, upperdentry, lowerdentry, oip->lowerdata);
1567     diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h
1568     index b69c16cbbf71..2d0d91070268 100644
1569     --- a/include/net/ip6_route.h
1570     +++ b/include/net/ip6_route.h
1571     @@ -254,6 +254,7 @@ static inline bool ipv6_anycast_destination(const struct dst_entry *dst,
1572    
1573     return rt->rt6i_flags & RTF_ANYCAST ||
1574     (rt->rt6i_dst.plen < 127 &&
1575     + !(rt->rt6i_flags & (RTF_GATEWAY | RTF_NONEXTHOP)) &&
1576     ipv6_addr_equal(&rt->rt6i_dst.addr, daddr));
1577     }
1578    
1579     diff --git a/include/target/iscsi/iscsi_target_core.h b/include/target/iscsi/iscsi_target_core.h
1580     index a49d37140a64..591cd9e4692c 100644
1581     --- a/include/target/iscsi/iscsi_target_core.h
1582     +++ b/include/target/iscsi/iscsi_target_core.h
1583     @@ -676,7 +676,7 @@ struct iscsi_session {
1584     atomic_t session_logout;
1585     atomic_t session_reinstatement;
1586     atomic_t session_stop_active;
1587     - atomic_t sleep_on_sess_wait_comp;
1588     + atomic_t session_close;
1589     /* connection list */
1590     struct list_head sess_conn_list;
1591     struct list_head cr_active_list;
1592     diff --git a/kernel/trace/trace_events_trigger.c b/kernel/trace/trace_events_trigger.c
1593     index 287d77eae59b..de840de87a18 100644
1594     --- a/kernel/trace/trace_events_trigger.c
1595     +++ b/kernel/trace/trace_events_trigger.c
1596     @@ -1088,14 +1088,10 @@ register_snapshot_trigger(char *glob, struct event_trigger_ops *ops,
1597     struct event_trigger_data *data,
1598     struct trace_event_file *file)
1599     {
1600     - int ret = register_trigger(glob, ops, data, file);
1601     -
1602     - if (ret > 0 && tracing_alloc_snapshot_instance(file->tr) != 0) {
1603     - unregister_trigger(glob, ops, data, file);
1604     - ret = 0;
1605     - }
1606     + if (tracing_alloc_snapshot_instance(file->tr) != 0)
1607     + return 0;
1608    
1609     - return ret;
1610     + return register_trigger(glob, ops, data, file);
1611     }
1612    
1613     static int
1614     diff --git a/net/bpfilter/main.c b/net/bpfilter/main.c
1615     index efea4874743e..05e1cfc1e5cd 100644
1616     --- a/net/bpfilter/main.c
1617     +++ b/net/bpfilter/main.c
1618     @@ -35,7 +35,6 @@ static void loop(void)
1619     struct mbox_reply reply;
1620     int n;
1621    
1622     - fprintf(debug_f, "testing the buffer\n");
1623     n = read(0, &req, sizeof(req));
1624     if (n != sizeof(req)) {
1625     fprintf(debug_f, "invalid request %d\n", n);
1626     diff --git a/net/core/dev.c b/net/core/dev.c
1627     index c19c424197e3..8ad1e8f00958 100644
1628     --- a/net/core/dev.c
1629     +++ b/net/core/dev.c
1630     @@ -3863,7 +3863,8 @@ EXPORT_SYMBOL(netdev_max_backlog);
1631    
1632     int netdev_tstamp_prequeue __read_mostly = 1;
1633     int netdev_budget __read_mostly = 300;
1634     -unsigned int __read_mostly netdev_budget_usecs = 2000;
1635     +/* Must be at least 2 jiffes to guarantee 1 jiffy timeout */
1636     +unsigned int __read_mostly netdev_budget_usecs = 2 * USEC_PER_SEC / HZ;
1637     int weight_p __read_mostly = 64; /* old backlog weight */
1638     int dev_weight_rx_bias __read_mostly = 1; /* bias for backlog weight */
1639     int dev_weight_tx_bias __read_mostly = 1; /* bias for output_queue quota */
1640     diff --git a/net/hsr/hsr_netlink.c b/net/hsr/hsr_netlink.c
1641     index fae21c863b1f..55c0b2e872a5 100644
1642     --- a/net/hsr/hsr_netlink.c
1643     +++ b/net/hsr/hsr_netlink.c
1644     @@ -61,10 +61,16 @@ static int hsr_newlink(struct net *src_net, struct net_device *dev,
1645     else
1646     multicast_spec = nla_get_u8(data[IFLA_HSR_MULTICAST_SPEC]);
1647    
1648     - if (!data[IFLA_HSR_VERSION])
1649     + if (!data[IFLA_HSR_VERSION]) {
1650     hsr_version = 0;
1651     - else
1652     + } else {
1653     hsr_version = nla_get_u8(data[IFLA_HSR_VERSION]);
1654     + if (hsr_version > 1) {
1655     + NL_SET_ERR_MSG_MOD(extack,
1656     + "Only versions 0..1 are supported");
1657     + return -EINVAL;
1658     + }
1659     + }
1660    
1661     return hsr_dev_finalize(dev, link, multicast_spec, hsr_version);
1662     }
1663     diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
1664     index e4632bd2026d..458dc6eb5a68 100644
1665     --- a/net/ipv4/devinet.c
1666     +++ b/net/ipv4/devinet.c
1667     @@ -614,12 +614,15 @@ struct in_ifaddr *inet_ifa_byprefix(struct in_device *in_dev, __be32 prefix,
1668     return NULL;
1669     }
1670    
1671     -static int ip_mc_config(struct sock *sk, bool join, const struct in_ifaddr *ifa)
1672     +static int ip_mc_autojoin_config(struct net *net, bool join,
1673     + const struct in_ifaddr *ifa)
1674     {
1675     +#if defined(CONFIG_IP_MULTICAST)
1676     struct ip_mreqn mreq = {
1677     .imr_multiaddr.s_addr = ifa->ifa_address,
1678     .imr_ifindex = ifa->ifa_dev->dev->ifindex,
1679     };
1680     + struct sock *sk = net->ipv4.mc_autojoin_sk;
1681     int ret;
1682    
1683     ASSERT_RTNL();
1684     @@ -632,6 +635,9 @@ static int ip_mc_config(struct sock *sk, bool join, const struct in_ifaddr *ifa)
1685     release_sock(sk);
1686    
1687     return ret;
1688     +#else
1689     + return -EOPNOTSUPP;
1690     +#endif
1691     }
1692    
1693     static int inet_rtm_deladdr(struct sk_buff *skb, struct nlmsghdr *nlh,
1694     @@ -675,7 +681,7 @@ static int inet_rtm_deladdr(struct sk_buff *skb, struct nlmsghdr *nlh,
1695     continue;
1696    
1697     if (ipv4_is_multicast(ifa->ifa_address))
1698     - ip_mc_config(net->ipv4.mc_autojoin_sk, false, ifa);
1699     + ip_mc_autojoin_config(net, false, ifa);
1700     __inet_del_ifa(in_dev, ifap, 1, nlh, NETLINK_CB(skb).portid);
1701     return 0;
1702     }
1703     @@ -940,8 +946,7 @@ static int inet_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh,
1704     */
1705     set_ifa_lifetime(ifa, valid_lft, prefered_lft);
1706     if (ifa->ifa_flags & IFA_F_MCAUTOJOIN) {
1707     - int ret = ip_mc_config(net->ipv4.mc_autojoin_sk,
1708     - true, ifa);
1709     + int ret = ip_mc_autojoin_config(net, true, ifa);
1710    
1711     if (ret < 0) {
1712     inet_free_ifa(ifa);
1713     diff --git a/net/l2tp/l2tp_netlink.c b/net/l2tp/l2tp_netlink.c
1714     index f5a9bdc4980c..ebb381c3f1b9 100644
1715     --- a/net/l2tp/l2tp_netlink.c
1716     +++ b/net/l2tp/l2tp_netlink.c
1717     @@ -920,51 +920,51 @@ static const struct genl_ops l2tp_nl_ops[] = {
1718     .cmd = L2TP_CMD_TUNNEL_CREATE,
1719     .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
1720     .doit = l2tp_nl_cmd_tunnel_create,
1721     - .flags = GENL_ADMIN_PERM,
1722     + .flags = GENL_UNS_ADMIN_PERM,
1723     },
1724     {
1725     .cmd = L2TP_CMD_TUNNEL_DELETE,
1726     .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
1727     .doit = l2tp_nl_cmd_tunnel_delete,
1728     - .flags = GENL_ADMIN_PERM,
1729     + .flags = GENL_UNS_ADMIN_PERM,
1730     },
1731     {
1732     .cmd = L2TP_CMD_TUNNEL_MODIFY,
1733     .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
1734     .doit = l2tp_nl_cmd_tunnel_modify,
1735     - .flags = GENL_ADMIN_PERM,
1736     + .flags = GENL_UNS_ADMIN_PERM,
1737     },
1738     {
1739     .cmd = L2TP_CMD_TUNNEL_GET,
1740     .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
1741     .doit = l2tp_nl_cmd_tunnel_get,
1742     .dumpit = l2tp_nl_cmd_tunnel_dump,
1743     - .flags = GENL_ADMIN_PERM,
1744     + .flags = GENL_UNS_ADMIN_PERM,
1745     },
1746     {
1747     .cmd = L2TP_CMD_SESSION_CREATE,
1748     .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
1749     .doit = l2tp_nl_cmd_session_create,
1750     - .flags = GENL_ADMIN_PERM,
1751     + .flags = GENL_UNS_ADMIN_PERM,
1752     },
1753     {
1754     .cmd = L2TP_CMD_SESSION_DELETE,
1755     .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
1756     .doit = l2tp_nl_cmd_session_delete,
1757     - .flags = GENL_ADMIN_PERM,
1758     + .flags = GENL_UNS_ADMIN_PERM,
1759     },
1760     {
1761     .cmd = L2TP_CMD_SESSION_MODIFY,
1762     .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
1763     .doit = l2tp_nl_cmd_session_modify,
1764     - .flags = GENL_ADMIN_PERM,
1765     + .flags = GENL_UNS_ADMIN_PERM,
1766     },
1767     {
1768     .cmd = L2TP_CMD_SESSION_GET,
1769     .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
1770     .doit = l2tp_nl_cmd_session_get,
1771     .dumpit = l2tp_nl_cmd_session_dump,
1772     - .flags = GENL_ADMIN_PERM,
1773     + .flags = GENL_UNS_ADMIN_PERM,
1774     },
1775     };
1776    
1777     diff --git a/net/mac80211/main.c b/net/mac80211/main.c
1778     index 2d05c4cfaf6d..bc4bed021066 100644
1779     --- a/net/mac80211/main.c
1780     +++ b/net/mac80211/main.c
1781     @@ -1045,7 +1045,7 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
1782     local->hw.wiphy->signal_type = CFG80211_SIGNAL_TYPE_UNSPEC;
1783     if (hw->max_signal <= 0) {
1784     result = -EINVAL;
1785     - goto fail_wiphy_register;
1786     + goto fail_workqueue;
1787     }
1788     }
1789    
1790     @@ -1107,7 +1107,7 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
1791    
1792     result = ieee80211_init_cipher_suites(local);
1793     if (result < 0)
1794     - goto fail_wiphy_register;
1795     + goto fail_workqueue;
1796    
1797     if (!local->ops->remain_on_channel)
1798     local->hw.wiphy->max_remain_on_channel_duration = 5000;
1799     @@ -1133,10 +1133,6 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
1800    
1801     local->hw.wiphy->max_num_csa_counters = IEEE80211_MAX_CSA_COUNTERS_NUM;
1802    
1803     - result = wiphy_register(local->hw.wiphy);
1804     - if (result < 0)
1805     - goto fail_wiphy_register;
1806     -
1807     /*
1808     * We use the number of queues for feature tests (QoS, HT) internally
1809     * so restrict them appropriately.
1810     @@ -1192,9 +1188,9 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
1811     goto fail_flows;
1812    
1813     rtnl_lock();
1814     -
1815     result = ieee80211_init_rate_ctrl_alg(local,
1816     hw->rate_control_algorithm);
1817     + rtnl_unlock();
1818     if (result < 0) {
1819     wiphy_debug(local->hw.wiphy,
1820     "Failed to initialize rate control algorithm\n");
1821     @@ -1248,6 +1244,12 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
1822     local->sband_allocated |= BIT(band);
1823     }
1824    
1825     + result = wiphy_register(local->hw.wiphy);
1826     + if (result < 0)
1827     + goto fail_wiphy_register;
1828     +
1829     + rtnl_lock();
1830     +
1831     /* add one default STA interface if supported */
1832     if (local->hw.wiphy->interface_modes & BIT(NL80211_IFTYPE_STATION) &&
1833     !ieee80211_hw_check(hw, NO_AUTO_VIF)) {
1834     @@ -1287,17 +1289,17 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
1835     #if defined(CONFIG_INET) || defined(CONFIG_IPV6)
1836     fail_ifa:
1837     #endif
1838     + wiphy_unregister(local->hw.wiphy);
1839     + fail_wiphy_register:
1840     rtnl_lock();
1841     rate_control_deinitialize(local);
1842     ieee80211_remove_interfaces(local);
1843     - fail_rate:
1844     rtnl_unlock();
1845     + fail_rate:
1846     fail_flows:
1847     ieee80211_led_exit(local);
1848     destroy_workqueue(local->workqueue);
1849     fail_workqueue:
1850     - wiphy_unregister(local->hw.wiphy);
1851     - fail_wiphy_register:
1852     if (local->wiphy_ciphers_allocated)
1853     kfree(local->hw.wiphy->cipher_suites);
1854     kfree(local->int_scan_req);
1855     @@ -1347,8 +1349,8 @@ void ieee80211_unregister_hw(struct ieee80211_hw *hw)
1856     skb_queue_purge(&local->skb_queue_unreliable);
1857     skb_queue_purge(&local->skb_queue_tdls_chsw);
1858    
1859     - destroy_workqueue(local->workqueue);
1860     wiphy_unregister(local->hw.wiphy);
1861     + destroy_workqueue(local->workqueue);
1862     ieee80211_led_exit(local);
1863     kfree(local->int_scan_req);
1864     }
1865     diff --git a/net/qrtr/qrtr.c b/net/qrtr/qrtr.c
1866     index 3d24d45be5f4..930f48a20546 100644
1867     --- a/net/qrtr/qrtr.c
1868     +++ b/net/qrtr/qrtr.c
1869     @@ -763,20 +763,21 @@ static int qrtr_sendmsg(struct socket *sock, struct msghdr *msg, size_t len)
1870    
1871     node = NULL;
1872     if (addr->sq_node == QRTR_NODE_BCAST) {
1873     - enqueue_fn = qrtr_bcast_enqueue;
1874     - if (addr->sq_port != QRTR_PORT_CTRL) {
1875     + if (addr->sq_port != QRTR_PORT_CTRL &&
1876     + qrtr_local_nid != QRTR_NODE_BCAST) {
1877     release_sock(sk);
1878     return -ENOTCONN;
1879     }
1880     + enqueue_fn = qrtr_bcast_enqueue;
1881     } else if (addr->sq_node == ipc->us.sq_node) {
1882     enqueue_fn = qrtr_local_enqueue;
1883     } else {
1884     - enqueue_fn = qrtr_node_enqueue;
1885     node = qrtr_node_lookup(addr->sq_node);
1886     if (!node) {
1887     release_sock(sk);
1888     return -ECONNRESET;
1889     }
1890     + enqueue_fn = qrtr_node_enqueue;
1891     }
1892    
1893     plen = (len + 3) & ~3;
1894     diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
1895     index dbb6a14968ef..b65180e874fb 100644
1896     --- a/net/wireless/nl80211.c
1897     +++ b/net/wireless/nl80211.c
1898     @@ -618,10 +618,8 @@ const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = {
1899     [NL80211_ATTR_HE_CAPABILITY] = { .type = NLA_BINARY,
1900     .len = NL80211_HE_MAX_CAPABILITY_LEN },
1901    
1902     - [NL80211_ATTR_FTM_RESPONDER] = {
1903     - .type = NLA_NESTED,
1904     - .validation_data = nl80211_ftm_responder_policy,
1905     - },
1906     + [NL80211_ATTR_FTM_RESPONDER] =
1907     + NLA_POLICY_NESTED(nl80211_ftm_responder_policy),
1908     [NL80211_ATTR_TIMEOUT] = NLA_POLICY_MIN(NLA_U32, 1),
1909     [NL80211_ATTR_PEER_MEASUREMENTS] =
1910     NLA_POLICY_NESTED(nl80211_pmsr_attr_policy),
1911     diff --git a/security/keys/proc.c b/security/keys/proc.c
1912     index 415f3f1c2da0..d0cde6685627 100644
1913     --- a/security/keys/proc.c
1914     +++ b/security/keys/proc.c
1915     @@ -139,6 +139,8 @@ static void *proc_keys_next(struct seq_file *p, void *v, loff_t *_pos)
1916     n = key_serial_next(p, v);
1917     if (n)
1918     *_pos = key_node_serial(n);
1919     + else
1920     + (*_pos)++;
1921     return n;
1922     }
1923    
1924     diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
1925     index 0fcbb6ab2d58..10c8b31f8507 100644
1926     --- a/sound/pci/hda/patch_realtek.c
1927     +++ b/sound/pci/hda/patch_realtek.c
1928     @@ -7253,6 +7253,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1929     SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_FIXUP_STEREO_DMIC),
1930     SND_PCI_QUIRK(0x1043, 0x17d1, "ASUS UX431FL", ALC294_FIXUP_ASUS_DUAL_SPK),
1931     SND_PCI_QUIRK(0x1043, 0x18b1, "Asus MJ401TA", ALC256_FIXUP_ASUS_HEADSET_MIC),
1932     + SND_PCI_QUIRK(0x1043, 0x18f1, "Asus FX505DT", ALC256_FIXUP_ASUS_HEADSET_MIC),
1933     SND_PCI_QUIRK(0x1043, 0x19ce, "ASUS B9450FA", ALC294_FIXUP_ASUS_HPE),
1934     SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),
1935     SND_PCI_QUIRK(0x1043, 0x1a30, "ASUS X705UD", ALC256_FIXUP_ASUS_MIC),
1936     diff --git a/sound/soc/intel/atom/sst-atom-controls.c b/sound/soc/intel/atom/sst-atom-controls.c
1937     index baef461a99f1..f883c9340eee 100644
1938     --- a/sound/soc/intel/atom/sst-atom-controls.c
1939     +++ b/sound/soc/intel/atom/sst-atom-controls.c
1940     @@ -1333,7 +1333,7 @@ int sst_send_pipe_gains(struct snd_soc_dai *dai, int stream, int mute)
1941     dai->capture_widget->name);
1942     w = dai->capture_widget;
1943     snd_soc_dapm_widget_for_each_source_path(w, p) {
1944     - if (p->connected && !p->connected(w, p->sink))
1945     + if (p->connected && !p->connected(w, p->source))
1946     continue;
1947    
1948     if (p->connect && p->source->power &&
1949     diff --git a/sound/soc/intel/atom/sst/sst_pci.c b/sound/soc/intel/atom/sst/sst_pci.c
1950     index d952719bc098..5862fe968083 100644
1951     --- a/sound/soc/intel/atom/sst/sst_pci.c
1952     +++ b/sound/soc/intel/atom/sst/sst_pci.c
1953     @@ -99,7 +99,7 @@ static int sst_platform_get_resources(struct intel_sst_drv *ctx)
1954     dev_dbg(ctx->dev, "DRAM Ptr %p\n", ctx->dram);
1955     do_release_regions:
1956     pci_release_regions(pci);
1957     - return 0;
1958     + return ret;
1959     }
1960    
1961     /*
1962     diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c
1963     index d2a050bb8341..5661994e13e7 100644
1964     --- a/sound/usb/mixer.c
1965     +++ b/sound/usb/mixer.c
1966     @@ -1446,7 +1446,7 @@ error:
1967     usb_audio_err(chip,
1968     "cannot get connectors status: req = %#x, wValue = %#x, wIndex = %#x, type = %d\n",
1969     UAC_GET_CUR, validx, idx, cval->val_type);
1970     - return ret;
1971     + return filter_error(cval, ret);
1972     }
1973    
1974     ucontrol->value.integer.value[0] = val;
1975     @@ -1750,11 +1750,15 @@ static void get_connector_control_name(struct usb_mixer_interface *mixer,
1976    
1977     /* Build a mixer control for a UAC connector control (jack-detect) */
1978     static void build_connector_control(struct usb_mixer_interface *mixer,
1979     + const struct usbmix_name_map *imap,
1980     struct usb_audio_term *term, bool is_input)
1981     {
1982     struct snd_kcontrol *kctl;
1983     struct usb_mixer_elem_info *cval;
1984    
1985     + if (check_ignored_ctl(find_map(imap, term->id, 0)))
1986     + return;
1987     +
1988     cval = kzalloc(sizeof(*cval), GFP_KERNEL);
1989     if (!cval)
1990     return;
1991     @@ -2088,8 +2092,9 @@ static int parse_audio_input_terminal(struct mixer_build *state, int unitid,
1992     check_input_term(state, term_id, &iterm);
1993    
1994     /* Check for jack detection. */
1995     - if (uac_v2v3_control_is_readable(bmctls, control))
1996     - build_connector_control(state->mixer, &iterm, true);
1997     + if ((iterm.type & 0xff00) != 0x0100 &&
1998     + uac_v2v3_control_is_readable(bmctls, control))
1999     + build_connector_control(state->mixer, state->map, &iterm, true);
2000    
2001     return 0;
2002     }
2003     @@ -3050,13 +3055,13 @@ static int snd_usb_mixer_controls_badd(struct usb_mixer_interface *mixer,
2004     memset(&iterm, 0, sizeof(iterm));
2005     iterm.id = UAC3_BADD_IT_ID4;
2006     iterm.type = UAC_BIDIR_TERMINAL_HEADSET;
2007     - build_connector_control(mixer, &iterm, true);
2008     + build_connector_control(mixer, map->map, &iterm, true);
2009    
2010     /* Output Term - Insertion control */
2011     memset(&oterm, 0, sizeof(oterm));
2012     oterm.id = UAC3_BADD_OT_ID3;
2013     oterm.type = UAC_BIDIR_TERMINAL_HEADSET;
2014     - build_connector_control(mixer, &oterm, false);
2015     + build_connector_control(mixer, map->map, &oterm, false);
2016     }
2017    
2018     return 0;
2019     @@ -3085,7 +3090,7 @@ static int snd_usb_mixer_controls(struct usb_mixer_interface *mixer)
2020     if (map->id == state.chip->usb_id) {
2021     state.map = map->map;
2022     state.selector_map = map->selector_map;
2023     - mixer->ignore_ctl_error = map->ignore_ctl_error;
2024     + mixer->ignore_ctl_error |= map->ignore_ctl_error;
2025     break;
2026     }
2027     }
2028     @@ -3128,10 +3133,11 @@ static int snd_usb_mixer_controls(struct usb_mixer_interface *mixer)
2029     if (err < 0 && err != -EINVAL)
2030     return err;
2031    
2032     - if (uac_v2v3_control_is_readable(le16_to_cpu(desc->bmControls),
2033     + if ((state.oterm.type & 0xff00) != 0x0100 &&
2034     + uac_v2v3_control_is_readable(le16_to_cpu(desc->bmControls),
2035     UAC2_TE_CONNECTOR)) {
2036     - build_connector_control(state.mixer, &state.oterm,
2037     - false);
2038     + build_connector_control(state.mixer, state.map,
2039     + &state.oterm, false);
2040     }
2041     } else { /* UAC_VERSION_3 */
2042     struct uac3_output_terminal_descriptor *desc = p;
2043     @@ -3153,10 +3159,11 @@ static int snd_usb_mixer_controls(struct usb_mixer_interface *mixer)
2044     if (err < 0 && err != -EINVAL)
2045     return err;
2046    
2047     - if (uac_v2v3_control_is_readable(le32_to_cpu(desc->bmControls),
2048     + if ((state.oterm.type & 0xff00) != 0x0100 &&
2049     + uac_v2v3_control_is_readable(le32_to_cpu(desc->bmControls),
2050     UAC3_TE_INSERTION)) {
2051     - build_connector_control(state.mixer, &state.oterm,
2052     - false);
2053     + build_connector_control(state.mixer, state.map,
2054     + &state.oterm, false);
2055     }
2056     }
2057     }
2058     diff --git a/sound/usb/mixer_maps.c b/sound/usb/mixer_maps.c
2059     index f6a67eecb063..3a54ca04ec4c 100644
2060     --- a/sound/usb/mixer_maps.c
2061     +++ b/sound/usb/mixer_maps.c
2062     @@ -350,9 +350,11 @@ static const struct usbmix_name_map dell_alc4020_map[] = {
2063     };
2064    
2065     /* Some mobos shipped with a dummy HD-audio show the invalid GET_MIN/GET_MAX
2066     - * response for Input Gain Pad (id=19, control=12). Skip it.
2067     + * response for Input Gain Pad (id=19, control=12) and the connector status
2068     + * for SPDIF terminal (id=18). Skip them.
2069     */
2070     static const struct usbmix_name_map asus_rog_map[] = {
2071     + { 18, NULL }, /* OT, connector control */
2072     { 19, NULL, 12 }, /* FU, Input Gain Pad */
2073     {}
2074     };
2075     diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
2076     index 6407dff405d9..4d8db41b949a 100644
2077     --- a/tools/perf/builtin-report.c
2078     +++ b/tools/perf/builtin-report.c
2079     @@ -181,24 +181,23 @@ static int hist_iter__branch_callback(struct hist_entry_iter *iter,
2080     {
2081     struct hist_entry *he = iter->he;
2082     struct report *rep = arg;
2083     - struct branch_info *bi;
2084     + struct branch_info *bi = he->branch_info;
2085     struct perf_sample *sample = iter->sample;
2086     struct evsel *evsel = iter->evsel;
2087     int err;
2088    
2089     + branch_type_count(&rep->brtype_stat, &bi->flags,
2090     + bi->from.addr, bi->to.addr);
2091     +
2092     if (!ui__has_annotation() && !rep->symbol_ipc)
2093     return 0;
2094    
2095     - bi = he->branch_info;
2096     err = addr_map_symbol__inc_samples(&bi->from, sample, evsel);
2097     if (err)
2098     goto out;
2099    
2100     err = addr_map_symbol__inc_samples(&bi->to, sample, evsel);
2101    
2102     - branch_type_count(&rep->brtype_stat, &bi->flags,
2103     - bi->from.addr, bi->to.addr);
2104     -
2105     out:
2106     return err;
2107     }