Skip to contentSkip to conversation

Linux 5.14.15

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Oct 27, 2021 Stable branch

lore
Share & tools
lore
author maintainer
#1 lore raw
In reply to Greg Kroah-Hartman
Documentation/networking/devlink/ice.rst +5 -4
index a432dc419fa4..5d97cee9457b 100644
@@ -30,10 +30,11 @@ The ``ice`` driver reports the following versions
         PHY, link, etc.
     * - ``fw.mgmt.api``
       - running
-      - 1.5
-      - 2-digit version number of the API exported over the AdminQ by the
-        management firmware. Used by the driver to identify what commands
-        are supported.
+      - 1.5.1
+      - 3-digit version number (major.minor.patch) of the API exported over
+        the AdminQ by the management firmware. Used by the driver to
+        identify what commands are supported. Historical versions of the
+        kernel only displayed a 2-digit version number (major.minor).
     * - ``fw.mgmt.build``
       - running
       - 0x305d955f
Makefile +1 -1
index f05668e1ffab..e66341fba8a4 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 14
-SUBLEVEL = 14
+SUBLEVEL = 15
 EXTRAVERSION =
 NAME = Opossums on Parade
 
arch/arm/Kconfig +1 -0
index 2fb7012c3246..110b305af27f 100644
@@ -93,6 +93,7 @@ config ARM
 	select HAVE_FTRACE_MCOUNT_RECORD if !XIP_KERNEL
 	select HAVE_FUNCTION_GRAPH_TRACER if !THUMB2_KERNEL && !CC_IS_CLANG
 	select HAVE_FUNCTION_TRACER if !XIP_KERNEL
+	select HAVE_FUTEX_CMPXCHG if FUTEX
 	select HAVE_GCC_PLUGINS
 	select HAVE_HW_BREAKPOINT if PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7)
 	select HAVE_IRQ_TIME_ACCOUNTING
arch/arm/boot/dts/at91-sama5d27_som1_ek.dts +0 -1
index 8034e5dacc80..949df688c5f1 100644
@@ -71,7 +71,6 @@ apb {
 			isc: isc@f0008000 {
 				pinctrl-names = "default";
 				pinctrl-0 = <&pinctrl_isc_base &pinctrl_isc_data_8bit &pinctrl_isc_data_9_10 &pinctrl_isc_data_11_12>;
-				status = "okay";
 			};
 
 			qspi1: spi@f0024000 {
arch/arm/boot/dts/spear3xx.dtsi +1 -1
index f266b7b03482..cc88ebe7a60c 100644
@@ -47,7 +47,7 @@ dma@fc400000 {
 		};
 
 		gmac: eth@e0800000 {
-			compatible = "st,spear600-gmac";
+			compatible = "snps,dwmac-3.40a";
 			reg = <0xe0800000 0x8000>;
 			interrupts = <23 22>;
 			interrupt-names = "macirq", "eth_wake_irq";
arch/arm/boot/dts/vexpress-v2m.dtsi +1 -1
index ec13ceb9ed36..79ba83d1f620 100644
@@ -19,7 +19,7 @@
  */
 
 / {
-	bus@4000000 {
+	bus@40000000 {
 		motherboard {
 			model = "V2M-P1";
 			arm,hbi = <0x190>;
arch/arm/boot/dts/vexpress-v2p-ca9.dts +1 -1
index 4c5847955856..1317f0f58d53 100644
@@ -295,7 +295,7 @@ power-vd10-s3 {
 		};
 	};
 
-	smb: bus@4000000 {
+	smb: bus@40000000 {
 		compatible = "simple-bus";
 
 		#address-cells = <2>;
arch/arm64/kvm/hyp/include/nvhe/gfp.h +1 -0
index fb0f523d1492..0a048dc06a7d 100644
@@ -24,6 +24,7 @@ struct hyp_pool {
 
 /* Allocation */
 void *hyp_alloc_pages(struct hyp_pool *pool, unsigned short order);
+void hyp_split_page(struct hyp_page *page);
 void hyp_get_page(struct hyp_pool *pool, void *addr);
 void hyp_put_page(struct hyp_pool *pool, void *addr);
 
arch/arm64/kvm/hyp/nvhe/mem_protect.c +12 -1
index a6ce991b1467..b79ce0059e7b 100644
@@ -35,7 +35,18 @@ static const u8 pkvm_hyp_id = 1;
 
 static void *host_s2_zalloc_pages_exact(size_t size)
 {
-	return hyp_alloc_pages(&host_s2_pool, get_order(size));
+	void *addr = hyp_alloc_pages(&host_s2_pool, get_order(size));
+
+	hyp_split_page(hyp_virt_to_page(addr));
+
+	/*
+	 * The size of concatenated PGDs is always a power of two of PAGE_SIZE,
+	 * so there should be no need to free any of the tail pages to make the
+	 * allocation exact.
+	 */
+	WARN_ON(size != (PAGE_SIZE << get_order(size)));
+
+	return addr;
 }
 
 static void *host_s2_zalloc_page(void *pool)
arch/arm64/kvm/hyp/nvhe/page_alloc.c +14 -0
index 41fc25bdfb34..a6e874e61a40 100644
@@ -193,6 +193,20 @@ void hyp_get_page(struct hyp_pool *pool, void *addr)
 	hyp_spin_unlock(&pool->lock);
 }
 
+void hyp_split_page(struct hyp_page *p)
+{
+	unsigned short order = p->order;
+	unsigned int i;
+
+	p->order = 0;
+	for (i = 1; i < (1 << order); i++) {
+		struct hyp_page *tail = p + i;
+
+		tail->order = 0;
+		hyp_set_page_refcounted(tail);
+	}
+}
+
 void *hyp_alloc_pages(struct hyp_pool *pool, unsigned short order)
 {
 	unsigned short i = order;
arch/arm64/kvm/mmu.c +4 -2
index 0625bf2353c2..3fcdacfee579 100644
@@ -1477,8 +1477,10 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
 		 * when updating the PG_mte_tagged page flag, see
 		 * sanitise_mte_tags for more details.
 		 */
-		if (kvm_has_mte(kvm) && vma->vm_flags & VM_SHARED)
-			return -EINVAL;
+		if (kvm_has_mte(kvm) && vma->vm_flags & VM_SHARED) {
+			ret = -EINVAL;
+			break;
+		}
 
 		if (vma->vm_flags & VM_PFNMAP) {
 			/* IO region dirty page logging not allowed */
arch/nios2/include/asm/irqflags.h +2 -2
index b3ec3e510706..25acf27862f9 100644
@@ -9,7 +9,7 @@
 
 static inline unsigned long arch_local_save_flags(void)
 {
-	return RDCTL(CTL_STATUS);
+	return RDCTL(CTL_FSTATUS);
 }
 
 /*
@@ -18,7 +18,7 @@ static inline unsigned long arch_local_save_flags(void)
  */
 static inline void arch_local_irq_restore(unsigned long flags)
 {
-	WRCTL(CTL_STATUS, flags);
+	WRCTL(CTL_FSTATUS, flags);
 }
 
 static inline void arch_local_irq_disable(void)
arch/nios2/include/asm/registers.h +1 -1
index 183c720e454d..95b67dd16f81 100644
@@ -11,7 +11,7 @@
 #endif
 
 /* control register numbers */
-#define CTL_STATUS	0
+#define CTL_FSTATUS	0
 #define CTL_ESTATUS	1
 #define CTL_BSTATUS	2
 #define CTL_IENABLE	3
arch/parisc/math-emu/fpudispatch.c +53 -3

335 lines not on this page · raw message

arch/powerpc/include/asm/code-patching.h +1 -0
index a95f63788c6b..4ba834599c4d 100644
@@ -23,6 +23,7 @@
 #define BRANCH_ABSOLUTE	0x2
 
 bool is_offset_in_branch_range(long offset);
+bool is_offset_in_cond_branch_range(long offset);
 int create_branch(struct ppc_inst *instr, const u32 *addr,
 		  unsigned long target, int flags);
 int create_cond_branch(struct ppc_inst *instr, const u32 *addr,
arch/powerpc/include/asm/security_features.h +5 -0
index 792eefaf230b..27574f218b37 100644
@@ -39,6 +39,11 @@ static inline bool security_ftr_enabled(u64 feature)
 	return !!(powerpc_security_features & feature);
 }
 
+#ifdef CONFIG_PPC_BOOK3S_64
+enum stf_barrier_type stf_barrier_type_get(void);
+#else
+static inline enum stf_barrier_type stf_barrier_type_get(void) { return STF_BARRIER_NONE; }
+#endif
 
 // Features indicating support for Spectre/Meltdown mitigations
 
arch/powerpc/kernel/idle_book3s.S +6 -4
index abb719b21cae..3d97fb833834 100644
@@ -126,14 +126,16 @@ _GLOBAL(idle_return_gpr_loss)
 /*
  * This is the sequence required to execute idle instructions, as
  * specified in ISA v2.07 (and earlier). MSR[IR] and MSR[DR] must be 0.
- *
- * The 0(r1) slot is used to save r2 in isa206, so use that here.
+ * We have to store a GPR somewhere, ptesync, then reload it, and create
+ * a false dependency on the result of the load. It doesn't matter which
+ * GPR we store, or where we store it. We have already stored r2 to the
+ * stack at -8(r1) in isa206_idle_insn_mayloss, so use that.
  */
 #define IDLE_STATE_ENTER_SEQ_NORET(IDLE_INST)			\
 	/* Magic NAP/SLEEP/WINKLE mode enter sequence */	\
-	std	r2,0(r1);					\
+	std	r2,-8(r1);					\
 	ptesync;						\
-	ld	r2,0(r1);					\
+	ld	r2,-8(r1);					\
 236:	cmpd	cr0,r2,r2;					\
 	bne	236b;						\
 	IDLE_INST;						\
arch/powerpc/kernel/security.c +5 -0
index cc51fa52e783..e723ff77cc9b 100644
@@ -263,6 +263,11 @@ static int __init handle_no_stf_barrier(char *p)
 
 early_param("no_stf_barrier", handle_no_stf_barrier);
 
+enum stf_barrier_type stf_barrier_type_get(void)
+{
+	return stf_enabled_flush_types;
+}
+
 /* This is the generic flag used by other architectures */
 static int __init handle_ssbd(char *p)
 {
arch/powerpc/kernel/smp.c +0 -2
index 12c75b95646a..3c5eb9dc101b 100644
@@ -1703,8 +1703,6 @@ void __cpu_die(unsigned int cpu)
 
 void arch_cpu_idle_dead(void)
 {
-	sched_preempt_enable_no_resched();
-
 	/*
 	 * Disable on the down path. This will be re-enabled by
 	 * start_secondary() via start_secondary_resume() below
arch/powerpc/kvm/book3s_hv_rmhandlers.S +17 -11
index dd18e1c44751..bbcc82b828da 100644
@@ -255,13 +255,16 @@ kvm_novcpu_exit:
  * r3 contains the SRR1 wakeup value, SRR1 is trashed.
  */
 _GLOBAL(idle_kvm_start_guest)
-	ld	r4,PACAEMERGSP(r13)
 	mfcr	r5
 	mflr	r0
-	std	r1,0(r4)
-	std	r5,8(r4)
-	std	r0,16(r4)
-	subi	r1,r4,STACK_FRAME_OVERHEAD
+	std	r5, 8(r1)	// Save CR in caller's frame
+	std	r0, 16(r1)	// Save LR in caller's frame
+	// Create frame on emergency stack
+	ld	r4, PACAEMERGSP(r13)
+	stdu	r1, -SWITCH_FRAME_SIZE(r4)
+	// Switch to new frame on emergency stack
+	mr	r1, r4
+	std	r3, 32(r1)	// Save SRR1 wakeup value
 	SAVE_NVGPRS(r1)
 
 	/*
@@ -313,6 +316,10 @@ kvm_unsplit_wakeup:
 
 kvm_secondary_got_guest:
 
+	// About to go to guest, clear saved SRR1
+	li	r0, 0
+	std	r0, 32(r1)
+
 	/* Set HSTATE_DSCR(r13) to something sensible */
 	ld	r6, PACA_DSCR_DEFAULT(r13)
 	std	r6, HSTATE_DSCR(r13)
@@ -392,13 +399,12 @@ kvm_no_guest:
 	mfspr	r4, SPRN_LPCR
 	rlwimi	r4, r3, 0, LPCR_PECE0 | LPCR_PECE1
 	mtspr	SPRN_LPCR, r4
-	/* set up r3 for return */
-	mfspr	r3,SPRN_SRR1
+	// Return SRR1 wakeup value, or 0 if we went into the guest
+	ld	r3, 32(r1)
 	REST_NVGPRS(r1)
-	addi	r1, r1, STACK_FRAME_OVERHEAD
-	ld	r0, 16(r1)
-	ld	r5, 8(r1)
-	ld	r1, 0(r1)
+	ld	r1, 0(r1)	// Switch back to caller stack
+	ld	r0, 16(r1)	// Reload LR
+	ld	r5, 8(r1)	// Reload CR
 	mtlr	r0
 	mtcr	r5
 	blr
arch/powerpc/lib/code-patching.c +6 -1
index f9a3019e37b4..c5ed98823835 100644
@@ -228,6 +228,11 @@ bool is_offset_in_branch_range(long offset)
 	return (offset >= -0x2000000 && offset <= 0x1fffffc && !(offset & 0x3));
 }
 
+bool is_offset_in_cond_branch_range(long offset)
+{
+	return offset >= -0x8000 && offset <= 0x7fff && !(offset & 0x3);
+}
+
 /*
  * Helper to check if a given instruction is a conditional branch
  * Derived from the conditional checks in analyse_instr()
@@ -280,7 +285,7 @@ int create_cond_branch(struct ppc_inst *instr, const u32 *addr,
 		offset = offset - (unsigned long)addr;
 
 	/* Check we can represent the target in the instruction format */
-	if (offset < -0x8000 || offset > 0x7FFF || offset & 0x3)
+	if (!is_offset_in_cond_branch_range(offset))
 		return 1;
 
 	/* Mask out the flags and target, so they don't step on each other. */
arch/powerpc/net/bpf_jit.h +21 -12
index 99fad093f43e..7e9b978b768e 100644
@@ -24,16 +24,30 @@
 #define EMIT(instr)		PLANT_INSTR(image, ctx->idx, instr)
 
 /* Long jump; (unconditional 'branch') */
-#define PPC_JMP(dest)		EMIT(PPC_INST_BRANCH |			      \
-				     (((dest) - (ctx->idx * 4)) & 0x03fffffc))
+#define PPC_JMP(dest)							      \
+	do {								      \
+		long offset = (long)(dest) - (ctx->idx * 4);		      \
+		if (!is_offset_in_branch_range(offset)) {		      \
+			pr_err_ratelimited("Branch offset 0x%lx (@%u) out of range\n", offset, ctx->idx);			\
+			return -ERANGE;					      \
+		}							      \
+		EMIT(PPC_INST_BRANCH | (offset & 0x03fffffc));		      \
+	} while (0)
+
 /* blr; (unconditional 'branch' with link) to absolute address */
 #define PPC_BL_ABS(dest)	EMIT(PPC_INST_BL |			      \
 				     (((dest) - (unsigned long)(image + ctx->idx)) & 0x03fffffc))
 /* "cond" here covers BO:BI fields. */
-#define PPC_BCC_SHORT(cond, dest)	EMIT(PPC_INST_BRANCH_COND |	      \
-					     (((cond) & 0x3ff) << 16) |	      \
-					     (((dest) - (ctx->idx * 4)) &     \
-					      0xfffc))
+#define PPC_BCC_SHORT(cond, dest)					      \
+	do {								      \
+		long offset = (long)(dest) - (ctx->idx * 4);		      \
+		if (!is_offset_in_cond_branch_range(offset)) {		      \
+			pr_err_ratelimited("Conditional branch offset 0x%lx (@%u) out of range\n", offset, ctx->idx);		\
+			return -ERANGE;					      \
+		}							      \
+		EMIT(PPC_INST_BRANCH_COND | (((cond) & 0x3ff) << 16) | (offset & 0xfffc));					\
+	} while (0)
+
 /* Sign-extended 32-bit immediate load */
 #define PPC_LI32(d, i)		do {					      \
 		if ((int)(uintptr_t)(i) >= -32768 &&			      \
@@ -78,11 +92,6 @@
 #define PPC_FUNC_ADDR(d,i) do { PPC_LI32(d, i); } while(0)
 #endif
 
-static inline bool is_nearbranch(int offset)
-{
-	return (offset < 32768) && (offset >= -32768);
-}
-
 /*
  * The fly in the ointment of code size changing from pass to pass is
  * avoided by padding the short branch case with a NOP.	 If code size differs
@@ -91,7 +100,7 @@ static inline bool is_nearbranch(int offset)
  * state.
  */
 #define PPC_BCC(cond, dest)	do {					      \
-		if (is_nearbranch((dest) - (ctx->idx * 4))) {		      \
+		if (is_offset_in_cond_branch_range((long)(dest) - (ctx->idx * 4))) {	\
 			PPC_BCC_SHORT(cond, dest);			      \
 			EMIT(PPC_RAW_NOP());				      \
 		} else {						      \
arch/powerpc/net/bpf_jit64.h +4 -4
index 7b713edfa7e2..b63b35e45e55 100644
@@ -16,18 +16,18 @@
  * with our redzone usage.
  *
  *		[	prev sp		] <-------------
- *		[   nv gpr save area	] 6*8		|
+ *		[   nv gpr save area	] 5*8		|
  *		[    tail_call_cnt	] 8		|
- *		[    local_tmp_var	] 8		|
+ *		[    local_tmp_var	] 16		|
  * fp (r31) -->	[   ebpf stack space	] upto 512	|
  *		[     frame header	] 32/112	|
  * sp (r1) --->	[    stack pointer	] --------------
  */
 
 /* for gpr non volatile registers BPG_REG_6 to 10 */
-#define BPF_PPC_STACK_SAVE	(6*8)
+#define BPF_PPC_STACK_SAVE	(5*8)
 /* for bpf JIT code internal usage */
-#define BPF_PPC_STACK_LOCALS	16
+#define BPF_PPC_STACK_LOCALS	24
 /* stack frame excluding BPF stack, ensure this is quadword aligned */
 #define BPF_PPC_STACKFRAME	(STACK_FRAME_MIN_SIZE + \
 				 BPF_PPC_STACK_LOCALS + BPF_PPC_STACK_SAVE)
arch/powerpc/net/bpf_jit_comp.c +5 -1
index 53aefee3fe70..fcbf7a917c56 100644
@@ -210,7 +210,11 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *fp)
 		/* Now build the prologue, body code & epilogue for real. */
 		cgctx.idx = 0;
 		bpf_jit_build_prologue(code_base, &cgctx);
-		bpf_jit_build_body(fp, code_base, &cgctx, addrs, extra_pass);
+		if (bpf_jit_build_body(fp, code_base, &cgctx, addrs, extra_pass)) {
+			bpf_jit_binary_free(bpf_hdr);
+			fp = org_fp;
+			goto out_addrs;
+		}
 		bpf_jit_build_epilogue(code_base, &cgctx);
 
 		if (bpf_jit_enable > 1)
arch/powerpc/net/bpf_jit_comp32.c +6 -2
index a7759aa8043d..0da31d41d413 100644
@@ -200,7 +200,7 @@ void bpf_jit_emit_func_call_rel(u32 *image, struct codegen_context *ctx, u64 fun
 	}
 }
 
-static void bpf_jit_emit_tail_call(u32 *image, struct codegen_context *ctx, u32 out)
+static int bpf_jit_emit_tail_call(u32 *image, struct codegen_context *ctx, u32 out)
 {
 	/*
 	 * By now, the eBPF program has already setup parameters in r3-r6
@@ -261,7 +261,9 @@ static void bpf_jit_emit_tail_call(u32 *image, struct codegen_context *ctx, u32
 	bpf_jit_emit_common_epilogue(image, ctx);
 
 	EMIT(PPC_RAW_BCTR());
+
 	/* out: */
+	return 0;
 }
 
 /* Assemble the body code between the prologue & epilogue */
@@ -1090,7 +1092,9 @@ int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, struct codegen_context *
 		 */
 		case BPF_JMP | BPF_TAIL_CALL:
 			ctx->seen |= SEEN_TAILCALL;
-			bpf_jit_emit_tail_call(image, ctx, addrs[i + 1]);
+			ret = bpf_jit_emit_tail_call(image, ctx, addrs[i + 1]);
+			if (ret < 0)
+				return ret;
 			break;
 
 		default:
arch/powerpc/net/bpf_jit_comp64.c +57 -6

117 lines not on this page · raw message

arch/s390/include/asm/pci.h +2 -0
index 5509b224c2ec..abe4d45c2f47 100644
@@ -207,6 +207,8 @@ int zpci_enable_device(struct zpci_dev *);
 int zpci_disable_device(struct zpci_dev *);
 int zpci_scan_configured_device(struct zpci_dev *zdev, u32 fh);
 int zpci_deconfigure_device(struct zpci_dev *zdev);
+void zpci_device_reserved(struct zpci_dev *zdev);
+bool zpci_is_device_configured(struct zpci_dev *zdev);
 
 int zpci_register_ioat(struct zpci_dev *, u8, u64, u64, u64);
 int zpci_unregister_ioat(struct zpci_dev *, u8);
arch/s390/pci/pci.c +42 -6

78 lines not on this page · raw message

arch/s390/pci/pci_event.c +2 -2
index cd447b96b4b1..9b26617ca1c5 100644
@@ -137,7 +137,7 @@ static void __zpci_event_availability(struct zpci_ccdf_avail *ccdf)
 			/* The 0x0304 event may immediately reserve the device */
 			if (!clp_get_state(zdev->fid, &state) &&
 			    state == ZPCI_FN_STATE_RESERVED) {
-				zpci_zdev_put(zdev);
+				zpci_device_reserved(zdev);
 			}
 		}
 		break;
@@ -148,7 +148,7 @@ static void __zpci_event_availability(struct zpci_ccdf_avail *ccdf)
 	case 0x0308: /* Standby -> Reserved */
 		if (!zdev)
 			break;
-		zpci_zdev_put(zdev);
+		zpci_device_reserved(zdev);
 		break;
 	default:
 		break;
arch/sh/include/asm/pgtable-3level.h +1 -1
index 56bf35c2f29c..cdced80a7ffa 100644
@@ -34,7 +34,7 @@ typedef struct { unsigned long long pmd; } pmd_t;
 
 static inline pmd_t *pud_pgtable(pud_t pud)
 {
-	return (pmd_t *)pud_val(pud);
+	return (pmd_t *)(unsigned long)pud_val(pud);
 }
 
 /* only used by the stubbed out hugetlb gup code, should never be called */
arch/x86/events/msr.c +1 -0
index c853b28efa33..96c775abe31f 100644
@@ -68,6 +68,7 @@ static bool test_intel(int idx, void *data)
 	case INTEL_FAM6_BROADWELL_D:
 	case INTEL_FAM6_BROADWELL_G:
 	case INTEL_FAM6_BROADWELL_X:
+	case INTEL_FAM6_SAPPHIRERAPIDS_X:
 
 	case INTEL_FAM6_ATOM_SILVERMONT:
 	case INTEL_FAM6_ATOM_SILVERMONT_D:
arch/x86/include/asm/kvm_host.h +2 -1
index af6ce8d4c86a..471b35d0b121 100644
@@ -695,7 +695,8 @@ struct kvm_vcpu_arch {
 
 	struct kvm_pio_request pio;
 	void *pio_data;
-	void *guest_ins_data;
+	void *sev_pio_data;
+	unsigned sev_pio_count;
 
 	u8 event_exit_inst_len;
 
arch/x86/kvm/mmu/mmu.c +3 -3
index c268fb59f779..6719a8041f59 100644
@@ -4465,10 +4465,10 @@ static void update_pkru_bitmask(struct kvm_mmu *mmu)
 	unsigned bit;
 	bool wp;
 
-	if (!is_cr4_pke(mmu)) {
-		mmu->pkru_mask = 0;
+	mmu->pkru_mask = 0;
+
+	if (!is_cr4_pke(mmu))
 		return;
-	}
 
 	wp = is_cr0_wp(mmu);
 
arch/x86/kvm/svm/sev.c +14 -2
index cb166bde449b..9959888cb10c 100644
@@ -619,7 +619,12 @@ static int __sev_launch_update_vmsa(struct kvm *kvm, struct kvm_vcpu *vcpu,
 	vmsa.handle = to_kvm_svm(kvm)->sev_info.handle;
 	vmsa.address = __sme_pa(svm->vmsa);
 	vmsa.len = PAGE_SIZE;
-	return sev_issue_cmd(kvm, SEV_CMD_LAUNCH_UPDATE_VMSA, &vmsa, error);
+	ret = sev_issue_cmd(kvm, SEV_CMD_LAUNCH_UPDATE_VMSA, &vmsa, error);
+	if (ret)
+	  return ret;
+
+	vcpu->arch.guest_state_protected = true;
+	return 0;
 }
 
 static int sev_launch_update_vmsa(struct kvm *kvm, struct kvm_sev_cmd *argp)
@@ -1480,6 +1485,13 @@ static int sev_receive_update_data(struct kvm *kvm, struct kvm_sev_cmd *argp)
 		goto e_free_trans;
 	}
 
+	/*
+	 * Flush (on non-coherent CPUs) before RECEIVE_UPDATE_DATA, the PSP
+	 * encrypts the written data with the guest's key, and the cache may
+	 * contain dirty, unencrypted data.
+	 */
+	sev_clflush_pages(guest_page, n);
+
 	/* The RECEIVE_UPDATE_DATA command requires C-bit to be always set. */
 	data.guest_address = (page_to_pfn(guest_page[0]) << PAGE_SHIFT) + offset;
 	data.guest_address |= sev_me_mask;
@@ -2584,7 +2596,7 @@ int sev_es_string_io(struct vcpu_svm *svm, int size, unsigned int port, int in)
 		return -EINVAL;
 
 	return kvm_sev_es_string_io(&svm->vcpu, size, port,
-				    svm->ghcb_sa, svm->ghcb_sa_len, in);
+				    svm->ghcb_sa, svm->ghcb_sa_len / size, in);
 }
 
 void sev_es_init_vmcb(struct vcpu_svm *svm)
arch/x86/kvm/svm/svm.h +1 -1
index bd0fe94c2920..820f807f8a4f 100644
@@ -191,7 +191,7 @@ struct vcpu_svm {
 
 	/* SEV-ES scratch area support */
 	void *ghcb_sa;
-	u64 ghcb_sa_len;
+	u32 ghcb_sa_len;
 	bool ghcb_sa_sync;
 	bool ghcb_sa_free;
 
arch/x86/kvm/vmx/vmx.c +6 -11
index 55de1eb135f9..3cb2f4739e32 100644
@@ -6288,18 +6288,13 @@ static int vmx_sync_pir_to_irr(struct kvm_vcpu *vcpu)
 
 		/*
 		 * If we are running L2 and L1 has a new pending interrupt
-		 * which can be injected, we should re-evaluate
-		 * what should be done with this new L1 interrupt.
-		 * If L1 intercepts external-interrupts, we should
-		 * exit from L2 to L1. Otherwise, interrupt should be
-		 * delivered directly to L2.
+		 * which can be injected, this may cause a vmexit or it may
+		 * be injected into L2.  Either way, this interrupt will be
+		 * processed via KVM_REQ_EVENT, not RVI, because we do not use
+		 * virtual interrupt delivery to inject L1 interrupts into L2.
 		 */
-		if (is_guest_mode(vcpu) && max_irr_updated) {
-			if (nested_exit_on_intr(vcpu))
-				kvm_vcpu_exiting_guest_mode(vcpu);
-			else
-				kvm_make_request(KVM_REQ_EVENT, vcpu);
-		}
+		if (is_guest_mode(vcpu) && max_irr_updated)
+			kvm_make_request(KVM_REQ_EVENT, vcpu);
 	} else {
 		max_irr = kvm_lapic_find_highest_irr(vcpu);
 	}
arch/x86/kvm/x86.c +103 -47

221 lines not on this page · raw message

arch/x86/xen/enlighten.c +4 -5
index c79bd0af2e8c..f252faf5028f 100644
@@ -52,9 +52,6 @@ DEFINE_PER_CPU(struct vcpu_info, xen_vcpu_info);
 DEFINE_PER_CPU(uint32_t, xen_vcpu_id);
 EXPORT_PER_CPU_SYMBOL(xen_vcpu_id);
 
-enum xen_domain_type xen_domain_type = XEN_NATIVE;
-EXPORT_SYMBOL_GPL(xen_domain_type);
-
 unsigned long *machine_to_phys_mapping = (void *)MACH2PHYS_VIRT_START;
 EXPORT_SYMBOL(machine_to_phys_mapping);
 unsigned long  machine_to_phys_nr;
@@ -69,9 +66,11 @@ __read_mostly int xen_have_vector_callback;
 EXPORT_SYMBOL_GPL(xen_have_vector_callback);
 
 /*
- * NB: needs to live in .data because it's used by xen_prepare_pvh which runs
- * before clearing the bss.
+ * NB: These need to live in .data or alike because they're used by
+ * xen_prepare_pvh() which runs before clearing the bss.
  */
+enum xen_domain_type __ro_after_init xen_domain_type = XEN_NATIVE;
+EXPORT_SYMBOL_GPL(xen_domain_type);
 uint32_t xen_start_flags __section(".data") = 0;
 EXPORT_SYMBOL(xen_start_flags);
 
arch/xtensa/platforms/xtfpga/setup.c +8 -4
index 4f7d6142d41f..538e6748e85a 100644
@@ -51,8 +51,12 @@ void platform_power_off(void)
 
 void platform_restart(void)
 {
-	/* Flush and reset the mmu, simulate a processor reset, and
-	 * jump to the reset vector. */
+	/* Try software reset first. */
+	WRITE_ONCE(*(u32 *)XTFPGA_SWRST_VADDR, 0xdead);
+
+	/* If software reset did not work, flush and reset the mmu,
+	 * simulate a processor reset, and jump to the reset vector.
+	 */
 	cpu_reset();
 	/* control never gets here */
 }
@@ -66,7 +70,7 @@ void __init platform_calibrate_ccount(void)
 
 #endif
 
-#ifdef CONFIG_OF
+#ifdef CONFIG_USE_OF
 
 static void __init xtfpga_clk_setup(struct device_node *np)
 {
@@ -284,4 +288,4 @@ static int __init xtavnet_init(void)
  */
 arch_initcall(xtavnet_init);
 
-#endif /* CONFIG_OF */
+#endif /* CONFIG_USE_OF */
block/blk-cgroup.c +3 -2
index 28e11decbac5..8e4dcf6036f6 100644
@@ -1916,10 +1916,11 @@ void blk_cgroup_bio_start(struct bio *bio)
 {
 	int rwd = blk_cgroup_io_type(bio), cpu;
 	struct blkg_iostat_set *bis;
+	unsigned long flags;
 
 	cpu = get_cpu();
 	bis = per_cpu_ptr(bio->bi_blkg->iostat_cpu, cpu);
-	u64_stats_update_begin(&bis->sync);
+	flags = u64_stats_update_begin_irqsave(&bis->sync);
 
 	/*
 	 * If the bio is flagged with BIO_CGROUP_ACCT it means this is a split
@@ -1931,7 +1932,7 @@ void blk_cgroup_bio_start(struct bio *bio)
 	}
 	bis->cur.ios[rwd]++;
 
-	u64_stats_update_end(&bis->sync);
+	u64_stats_update_end_irqrestore(&bis->sync, flags);
 	if (cgroup_subsys_on_dfl(io_cgrp_subsys))
 		cgroup_rstat_updated(bio->bi_blkg->blkcg->css.cgroup, cpu);
 	put_cpu();
block/blk-mq-debugfs.c +1 -0
index 4b66d2776eda..3b38d15723de 100644
@@ -129,6 +129,7 @@ static const char *const blk_queue_flag_name[] = {
 	QUEUE_FLAG_NAME(PCI_P2PDMA),
 	QUEUE_FLAG_NAME(ZONE_RESETALL),
 	QUEUE_FLAG_NAME(RQ_ALLOC_TIME),
+	QUEUE_FLAG_NAME(HCTX_ACTIVE),
 	QUEUE_FLAG_NAME(NOWAIT),
 };
 #undef QUEUE_FLAG_NAME
block/mq-deadline.c +6 -6
index 3c3693c34f06..7f3c3932b723 100644
@@ -270,12 +270,6 @@ deadline_move_request(struct deadline_data *dd, struct dd_per_prio *per_prio,
 	deadline_remove_request(rq->q, per_prio, rq);
 }
 
-/* Number of requests queued for a given priority level. */
-static u32 dd_queued(struct deadline_data *dd, enum dd_prio prio)
-{
-	return dd_sum(dd, inserted, prio) - dd_sum(dd, completed, prio);
-}
-
 /*
  * deadline_check_fifo returns 0 if there are no expired requests on the fifo,
  * 1 otherwise. Requires !list_empty(&dd->fifo_list[data_dir])
@@ -953,6 +947,12 @@ static int dd_async_depth_show(void *data, struct seq_file *m)
 	return 0;
 }
 
+/* Number of requests queued for a given priority level. */
+static u32 dd_queued(struct deadline_data *dd, enum dd_prio prio)
+{
+	return dd_sum(dd, inserted, prio) - dd_sum(dd, completed, prio);
+}
+
 static int dd_queued_show(void *data, struct seq_file *m)
 {
 	struct request_queue *q = data;
drivers/base/test/Makefile +1 -1
index 64b2f3d744d5..7f76fee6f989 100644
@@ -2,4 +2,4 @@
 obj-$(CONFIG_TEST_ASYNC_DRIVER_PROBE)	+= test_async_driver_probe.o
 
 obj-$(CONFIG_DRIVER_PE_KUNIT_TEST) += property-entry-test.o
-CFLAGS_REMOVE_property-entry-test.o += -fplugin-arg-structleak_plugin-byref -fplugin-arg-structleak_plugin-byref-all
+CFLAGS_property-entry-test.o += $(DISABLE_STRUCTLEAK_PLUGIN)
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +4 -4
index d60096b3b2c2..cd8cc7d31b49 100644
@@ -2342,10 +2342,6 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev)
 	if (r)
 		goto init_failed;
 
-	r = amdgpu_amdkfd_resume_iommu(adev);
-	if (r)
-		goto init_failed;
-
 	r = amdgpu_device_ip_hw_init_phase1(adev);
 	if (r)
 		goto init_failed;
@@ -2384,6 +2380,10 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev)
 	if (!adev->gmc.xgmi.pending_reset)
 		amdgpu_amdkfd_device_init(adev);
 
+	r = amdgpu_amdkfd_resume_iommu(adev);
+	if (r)
+		goto init_failed;
+
 	amdgpu_fru_get_product_info(adev);
 
 init_failed:
drivers/gpu/drm/amd/display/Kconfig +2 -0
index 7dffc04a557e..127667e549c1 100644
@@ -25,6 +25,8 @@ config DRM_AMD_DC_HDCP
 
 config DRM_AMD_DC_SI
 	bool "AMD DC support for Southern Islands ASICs"
+	depends on DRM_AMDGPU_SI
+	depends on DRM_AMD_DC
 	default n
 	help
 	  Choose this option to enable new AMD DC support for SI asics
drivers/gpu/drm/kmb/kmb_crtc.c +38 -3

70 lines not on this page · raw message

drivers/gpu/drm/kmb/kmb_drv.c +5 -5
index f54392ec4fab..d3091bf38cc0 100644
@@ -173,10 +173,10 @@ static int kmb_setup_mode_config(struct drm_device *drm)
 	ret = drmm_mode_config_init(drm);
 	if (ret)
 		return ret;
-	drm->mode_config.min_width = KMB_MIN_WIDTH;
-	drm->mode_config.min_height = KMB_MIN_HEIGHT;
-	drm->mode_config.max_width = KMB_MAX_WIDTH;
-	drm->mode_config.max_height = KMB_MAX_HEIGHT;
+	drm->mode_config.min_width = KMB_FB_MIN_WIDTH;
+	drm->mode_config.min_height = KMB_FB_MIN_HEIGHT;
+	drm->mode_config.max_width = KMB_FB_MAX_WIDTH;
+	drm->mode_config.max_height = KMB_FB_MAX_HEIGHT;
 	drm->mode_config.funcs = &kmb_mode_config_funcs;
 
 	ret = kmb_setup_crtc(drm);
@@ -381,7 +381,7 @@ static irqreturn_t handle_lcd_irq(struct drm_device *dev)
 		if (val & LAYER3_DMA_FIFO_UNDERFLOW)
 			drm_dbg(&kmb->drm,
 				"LAYER3:GL1 DMA UNDERFLOW val = 0x%lx", val);
-		if (val & LAYER3_DMA_FIFO_UNDERFLOW)
+		if (val & LAYER3_DMA_FIFO_OVERFLOW)
 			drm_dbg(&kmb->drm,
 				"LAYER3:GL1 DMA OVERFLOW val = 0x%lx", val);
 	}
drivers/gpu/drm/kmb/kmb_drv.h +13 -0
index ebbaa5f422d5..bf085e95b28f 100644
@@ -20,6 +20,18 @@
 #define DRIVER_MAJOR			1
 #define DRIVER_MINOR			1
 
+/* Platform definitions */
+#define KMB_CRTC_MIN_VFP		4
+#define KMB_CRTC_MAX_WIDTH		1920 /* max width in pixels */
+#define KMB_CRTC_MAX_HEIGHT		1080 /* max height in pixels */
+#define KMB_CRTC_MIN_WIDTH		1920
+#define KMB_CRTC_MIN_HEIGHT		1080
+#define KMB_FB_MAX_WIDTH		1920
+#define KMB_FB_MAX_HEIGHT		1080
+#define KMB_FB_MIN_WIDTH		1
+#define KMB_FB_MIN_HEIGHT		1
+#define KMB_MIN_VREFRESH		59    /*vertical refresh in Hz */
+#define KMB_MAX_VREFRESH		60    /*vertical refresh in Hz */
 #define KMB_LCD_DEFAULT_CLK		200000000
 #define KMB_SYS_CLK_MHZ			500
 
@@ -45,6 +57,7 @@ struct kmb_drm_private {
 	spinlock_t			irq_lock;
 	int				irq_lcd;
 	int				sys_clk_mhz;
+	struct disp_cfg			init_disp_cfg[KMB_MAX_PLANES];
 	struct layer_status		plane_status[KMB_MAX_PLANES];
 	int				kmb_under_flow;
 	int				kmb_flush_done;
drivers/gpu/drm/kmb/kmb_dsi.c +15 -10
index 231041b269f5..756490589e0a 100644
@@ -482,6 +482,10 @@ static u32 mipi_tx_fg_section_cfg(struct kmb_dsi *kmb_dsi,
 	return 0;
 }
 
+#define CLK_DIFF_LOW 50
+#define CLK_DIFF_HI 60
+#define SYSCLK_500  500
+
 static void mipi_tx_fg_cfg_regs(struct kmb_dsi *kmb_dsi, u8 frame_gen,
 				struct mipi_tx_frame_timing_cfg *fg_cfg)
 {
@@ -492,7 +496,12 @@ static void mipi_tx_fg_cfg_regs(struct kmb_dsi *kmb_dsi, u8 frame_gen,
 	/* 500 Mhz system clock minus 50 to account for the difference in
 	 * MIPI clock speed in RTL tests
 	 */
-	sysclk = kmb_dsi->sys_clk_mhz - 50;
+	if (kmb_dsi->sys_clk_mhz == SYSCLK_500) {
+		sysclk = kmb_dsi->sys_clk_mhz - CLK_DIFF_LOW;
+	} else {
+		/* 700 Mhz clk*/
+		sysclk = kmb_dsi->sys_clk_mhz - CLK_DIFF_HI;
+	}
 
 	/* PPL-Pixel Packing Layer, LLP-Low Level Protocol
 	 * Frame genartor timing parameters are clocked on the system clock,
@@ -1322,7 +1331,8 @@ static u32 mipi_tx_init_dphy(struct kmb_dsi *kmb_dsi,
 	return 0;
 }
 
-static void connect_lcd_to_mipi(struct kmb_dsi *kmb_dsi)
+static void connect_lcd_to_mipi(struct kmb_dsi *kmb_dsi,
+				struct drm_atomic_state *old_state)
 {
 	struct regmap *msscam;
 
@@ -1331,7 +1341,7 @@ static void connect_lcd_to_mipi(struct kmb_dsi *kmb_dsi)
 		dev_dbg(kmb_dsi->dev, "failed to get msscam syscon");
 		return;
 	}
-
+	drm_atomic_bridge_chain_enable(adv_bridge, old_state);
 	/* DISABLE MIPI->CIF CONNECTION */
 	regmap_write(msscam, MSS_MIPI_CIF_CFG, 0);
 
@@ -1342,7 +1352,7 @@ static void connect_lcd_to_mipi(struct kmb_dsi *kmb_dsi)
 }
 
 int kmb_dsi_mode_set(struct kmb_dsi *kmb_dsi, struct drm_display_mode *mode,
-		     int sys_clk_mhz)
+		     int sys_clk_mhz, struct drm_atomic_state *old_state)
 {
 	u64 data_rate;
 
@@ -1384,18 +1394,13 @@ int kmb_dsi_mode_set(struct kmb_dsi *kmb_dsi, struct drm_display_mode *mode,
 		mipi_tx_init_cfg.lane_rate_mbps = data_rate;
 	}
 
-	kmb_write_mipi(kmb_dsi, DPHY_ENABLE, 0);
-	kmb_write_mipi(kmb_dsi, DPHY_INIT_CTRL0, 0);
-	kmb_write_mipi(kmb_dsi, DPHY_INIT_CTRL1, 0);
-	kmb_write_mipi(kmb_dsi, DPHY_INIT_CTRL2, 0);
-
 	/* Initialize mipi controller */
 	mipi_tx_init_cntrl(kmb_dsi, &mipi_tx_init_cfg);
 
 	/* Dphy initialization */
 	mipi_tx_init_dphy(kmb_dsi, &mipi_tx_init_cfg);
 
-	connect_lcd_to_mipi(kmb_dsi);
+	connect_lcd_to_mipi(kmb_dsi, old_state);
 	dev_info(kmb_dsi->dev, "mipi hw initialized");
 
 	return 0;
drivers/gpu/drm/kmb/kmb_dsi.h +1 -1
index 66b7c500d9bc..09dc88743d77 100644
@@ -380,7 +380,7 @@ int kmb_dsi_host_bridge_init(struct device *dev);
 struct kmb_dsi *kmb_dsi_init(struct platform_device *pdev);
 void kmb_dsi_host_unregister(struct kmb_dsi *kmb_dsi);
 int kmb_dsi_mode_set(struct kmb_dsi *kmb_dsi, struct drm_display_mode *mode,
-		     int sys_clk_mhz);
+		     int sys_clk_mhz, struct drm_atomic_state *old_state);
 int kmb_dsi_map_mmio(struct kmb_dsi *kmb_dsi);
 int kmb_dsi_clk_init(struct kmb_dsi *kmb_dsi);
 int kmb_dsi_encoder_init(struct drm_device *dev, struct kmb_dsi *kmb_dsi);
drivers/gpu/drm/kmb/kmb_plane.c +113 -9

219 lines not on this page · raw message

drivers/gpu/drm/kmb/kmb_plane.h +9 -2
index 486490f7a3ec..b51144044fe8 100644
@@ -35,6 +35,9 @@
 #define POSSIBLE_CRTCS 1
 #define to_kmb_plane(x) container_of(x, struct kmb_plane, base_plane)
 
+#define POSSIBLE_CRTCS		1
+#define KMB_MAX_PLANES		2
+
 enum layer_id {
 	LAYER_0,
 	LAYER_1,
@@ -43,8 +46,6 @@ enum layer_id {
 	/* KMB_MAX_PLANES */
 };
 
-#define KMB_MAX_PLANES 1
-
 enum sub_plane_id {
 	Y_PLANE,
 	U_PLANE,
@@ -62,6 +63,12 @@ struct layer_status {
 	u32 ctrl;
 };
 
+struct disp_cfg {
+	unsigned int width;
+	unsigned int height;
+	unsigned int format;
+};
+
 struct kmb_plane *kmb_plane_init(struct drm_device *drm);
 void kmb_plane_destroy(struct drm_plane *plane);
 #endif /* __KMB_PLANE_H__ */
drivers/gpu/drm/kmb/kmb_regs.h +3 -0
index 48150569f702..9756101b0d32 100644
@@ -43,8 +43,10 @@
 #define LCD_CTRL_OUTPUT_ENABLED			  BIT(19)
 #define LCD_CTRL_BPORCH_ENABLE			  BIT(21)
 #define LCD_CTRL_FPORCH_ENABLE			  BIT(22)
+#define LCD_CTRL_ALPHA_BLEND_BKGND_DISABLE	  BIT(23)
 #define LCD_CTRL_PIPELINE_DMA			  BIT(28)
 #define LCD_CTRL_VHSYNC_IDLE_LVL		  BIT(31)
+#define LCD_CTRL_ALPHA_ALL			  (0xff << 6)
 
 /* interrupts */
 #define LCD_INT_STATUS				(0x4 * 0x001)
@@ -115,6 +117,7 @@
 #define LCD_LAYER_ALPHA_EMBED			BIT(5)
 #define LCD_LAYER_ALPHA_COMBI			(LCD_LAYER_ALPHA_STATIC | \
 						      LCD_LAYER_ALPHA_EMBED)
+#define LCD_LAYER_ALPHA_DISABLED		~(LCD_LAYER_ALPHA_COMBI)
 /* RGB multiplied with alpha */
 #define LCD_LAYER_ALPHA_PREMULT			BIT(6)
 #define LCD_LAYER_INVERT_COL			BIT(7)
drivers/gpu/drm/msm/adreno/a6xx_gmu.c +6 -0
index b349692219b7..c95985792076 100644
@@ -296,6 +296,8 @@ int a6xx_gmu_set_oob(struct a6xx_gmu *gmu, enum a6xx_gmu_oob_state state)
 	u32 val;
 	int request, ack;
 
+	WARN_ON_ONCE(!mutex_is_locked(&gmu->lock));
+
 	if (state >= ARRAY_SIZE(a6xx_gmu_oob_bits))
 		return -EINVAL;
 
@@ -337,6 +339,8 @@ void a6xx_gmu_clear_oob(struct a6xx_gmu *gmu, enum a6xx_gmu_oob_state state)
 {
 	int bit;
 
+	WARN_ON_ONCE(!mutex_is_locked(&gmu->lock));
+
 	if (state >= ARRAY_SIZE(a6xx_gmu_oob_bits))
 		return;
 
@@ -1478,6 +1482,8 @@ int a6xx_gmu_init(struct a6xx_gpu *a6xx_gpu, struct device_node *node)
 	if (!pdev)
 		return -ENODEV;
 
+	mutex_init(&gmu->lock);
+
 	gmu->dev = &pdev->dev;
 
 	of_dma_configure(gmu->dev, node, true);
drivers/gpu/drm/msm/adreno/a6xx_gmu.h +3 -0
index 71dfa60070cc..19c1a0ddee7a 100644
@@ -44,6 +44,9 @@ struct a6xx_gmu_bo {
 struct a6xx_gmu {
 	struct device *dev;
 
+	/* For serializing communication with the GMU: */
+	struct mutex lock;
+
 	struct msm_gem_address_space *aspace;
 
 	void * __iomem mmio;
drivers/gpu/drm/msm/adreno/a6xx_gpu.c +34 -6
index 1b3519b821a3..91c5c6709b6c 100644
@@ -859,7 +859,7 @@ static int a6xx_zap_shader_init(struct msm_gpu *gpu)
 	  A6XX_RBBM_INT_0_MASK_UCHE_OOB_ACCESS | \
 	  A6XX_RBBM_INT_0_MASK_UCHE_TRAP_INTR)
 
-static int a6xx_hw_init(struct msm_gpu *gpu)
+static int hw_init(struct msm_gpu *gpu)
 {
 	struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu);
 	struct a6xx_gpu *a6xx_gpu = to_a6xx_gpu(adreno_gpu);
@@ -1107,6 +1107,19 @@ static int a6xx_hw_init(struct msm_gpu *gpu)
 	return ret;
 }
 
+static int a6xx_hw_init(struct msm_gpu *gpu)
+{
+	struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu);
+	struct a6xx_gpu *a6xx_gpu = to_a6xx_gpu(adreno_gpu);
+	int ret;
+
+	mutex_lock(&a6xx_gpu->gmu.lock);
+	ret = hw_init(gpu);
+	mutex_unlock(&a6xx_gpu->gmu.lock);
+
+	return ret;
+}
+
 static void a6xx_dump(struct msm_gpu *gpu)
 {
 	DRM_DEV_INFO(&gpu->pdev->dev, "status:   %08x\n",
@@ -1481,7 +1494,9 @@ static int a6xx_pm_resume(struct msm_gpu *gpu)
 
 	trace_msm_gpu_resume(0);
 
+	mutex_lock(&a6xx_gpu->gmu.lock);
 	ret = a6xx_gmu_resume(a6xx_gpu);
+	mutex_unlock(&a6xx_gpu->gmu.lock);
 	if (ret)
 		return ret;
 
@@ -1504,7 +1519,9 @@ static int a6xx_pm_suspend(struct msm_gpu *gpu)
 
 	devfreq_suspend_device(gpu->devfreq.devfreq);
 
+	mutex_lock(&a6xx_gpu->gmu.lock);
 	ret = a6xx_gmu_stop(a6xx_gpu);
+	mutex_unlock(&a6xx_gpu->gmu.lock);
 	if (ret)
 		return ret;
 
@@ -1519,18 +1536,19 @@ static int a6xx_get_timestamp(struct msm_gpu *gpu, uint64_t *value)
 {
 	struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu);
 	struct a6xx_gpu *a6xx_gpu = to_a6xx_gpu(adreno_gpu);
-	static DEFINE_MUTEX(perfcounter_oob);
 
-	mutex_lock(&perfcounter_oob);
+	mutex_lock(&a6xx_gpu->gmu.lock);
 
 	/* Force the GPU power on so we can read this register */
 	a6xx_gmu_set_oob(&a6xx_gpu->gmu, GMU_OOB_PERFCOUNTER_SET);
 
 	*value = gpu_read64(gpu, REG_A6XX_CP_ALWAYS_ON_COUNTER_LO,
-		REG_A6XX_CP_ALWAYS_ON_COUNTER_HI);
+			    REG_A6XX_CP_ALWAYS_ON_COUNTER_HI);
 
 	a6xx_gmu_clear_oob(&a6xx_gpu->gmu, GMU_OOB_PERFCOUNTER_SET);
-	mutex_unlock(&perfcounter_oob);
+
+	mutex_unlock(&a6xx_gpu->gmu.lock);
+
 	return 0;
 }
 
@@ -1594,6 +1612,16 @@ static unsigned long a6xx_gpu_busy(struct msm_gpu *gpu)
 	return (unsigned long)busy_time;
 }
 
+void a6xx_gpu_set_freq(struct msm_gpu *gpu, struct dev_pm_opp *opp)
+{
+	struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu);
+	struct a6xx_gpu *a6xx_gpu = to_a6xx_gpu(adreno_gpu);
+
+	mutex_lock(&a6xx_gpu->gmu.lock);
+	a6xx_gmu_set_freq(gpu, opp);
+	mutex_unlock(&a6xx_gpu->gmu.lock);
+}
+
 static struct msm_gem_address_space *
 a6xx_create_address_space(struct msm_gpu *gpu, struct platform_device *pdev)
 {
@@ -1740,7 +1768,7 @@ static const struct adreno_gpu_funcs funcs = {
 #endif
 		.gpu_busy = a6xx_gpu_busy,
 		.gpu_get_freq = a6xx_gmu_get_freq,
-		.gpu_set_freq = a6xx_gmu_set_freq,
+		.gpu_set_freq = a6xx_gpu_set_freq,
 #if defined(CONFIG_DRM_MSM_GPU_STATE)
 		.gpu_state_get = a6xx_gpu_state_get,
 		.gpu_state_put = a6xx_gpu_state_put,
drivers/gpu/drm/mxsfb/mxsfb_drv.c +5 -1
index c277d3f61a5e..1c19ca5398e9 100644
@@ -268,7 +268,11 @@ static void mxsfb_irq_disable(struct drm_device *drm)
 	struct mxsfb_drm_private *mxsfb = drm->dev_private;
 
 	mxsfb_enable_axi_clk(mxsfb);
-	mxsfb->crtc.funcs->disable_vblank(&mxsfb->crtc);
+
+	/* Disable and clear VBLANK IRQ */
+	writel(CTRL1_CUR_FRAME_DONE_IRQ_EN, mxsfb->base + LCDC_CTRL1 + REG_CLR);
+	writel(CTRL1_CUR_FRAME_DONE_IRQ, mxsfb->base + LCDC_CTRL1 + REG_CLR);
+
 	mxsfb_disable_axi_clk(mxsfb);
 }
 
drivers/gpu/drm/panel/panel-ilitek-ili9881c.c +6 -6
index 0145129d7c66..534dd7414d42 100644
@@ -590,14 +590,14 @@ static const struct drm_display_mode k101_im2byl02_default_mode = {
 	.clock		= 69700,
 
 	.hdisplay	= 800,
-	.hsync_start	= 800 + 6,
-	.hsync_end	= 800 + 6 + 15,
-	.htotal		= 800 + 6 + 15 + 16,
+	.hsync_start	= 800 + 52,
+	.hsync_end	= 800 + 52 + 8,
+	.htotal		= 800 + 52 + 8 + 48,
 
 	.vdisplay	= 1280,
-	.vsync_start	= 1280 + 8,
-	.vsync_end	= 1280 + 8 + 48,
-	.vtotal		= 1280 + 8 + 48 + 52,
+	.vsync_start	= 1280 + 16,
+	.vsync_end	= 1280 + 16 + 6,
+	.vtotal		= 1280 + 16 + 6 + 15,
 
 	.width_mm	= 135,
 	.height_mm	= 217,
drivers/iio/test/Makefile +1 -0
index f1099b495301..467519a2027e 100644
@@ -5,3 +5,4 @@
 
 # Keep in alphabetical order
 obj-$(CONFIG_IIO_TEST_FORMAT) += iio-test-format.o
+CFLAGS_iio-test-format.o += $(DISABLE_STRUCTLEAK_PLUGIN)
drivers/input/keyboard/snvs_pwrkey.c +29 -0
index 2f5e3ab5ed63..65286762b02a 100644
@@ -3,6 +3,7 @@
 // Driver for the IMX SNVS ON/OFF Power Key
 // Copyright (C) 2015 Freescale Semiconductor, Inc. All Rights Reserved.
 
+#include <linux/clk.h>
 #include <linux/device.h>
 #include <linux/err.h>
 #include <linux/init.h>
@@ -99,6 +100,11 @@ static irqreturn_t imx_snvs_pwrkey_interrupt(int irq, void *dev_id)
 	return IRQ_HANDLED;
 }
 
+static void imx_snvs_pwrkey_disable_clk(void *data)
+{
+	clk_disable_unprepare(data);
+}
+
 static void imx_snvs_pwrkey_act(void *pdata)
 {
 	struct pwrkey_drv_data *pd = pdata;
@@ -111,6 +117,7 @@ static int imx_snvs_pwrkey_probe(struct platform_device *pdev)
 	struct pwrkey_drv_data *pdata;
 	struct input_dev *input;
 	struct device_node *np;
+	struct clk *clk;
 	int error;
 	u32 vid;
 
@@ -134,6 +141,28 @@ static int imx_snvs_pwrkey_probe(struct platform_device *pdev)
 		dev_warn(&pdev->dev, "KEY_POWER without setting in dts\n");
 	}
 
+	clk = devm_clk_get_optional(&pdev->dev, NULL);
+	if (IS_ERR(clk)) {
+		dev_err(&pdev->dev, "Failed to get snvs clock (%pe)\n", clk);
+		return PTR_ERR(clk);
+	}
+
+	error = clk_prepare_enable(clk);
+	if (error) {
+		dev_err(&pdev->dev, "Failed to enable snvs clock (%pe)\n",
+			ERR_PTR(error));
+		return error;
+	}
+
+	error = devm_add_action_or_reset(&pdev->dev,
+					 imx_snvs_pwrkey_disable_clk, clk);
+	if (error) {
+		dev_err(&pdev->dev,
+			"Failed to register clock cleanup handler (%pe)\n",
+			ERR_PTR(error));
+		return error;
+	}
+
 	pdata->wakeup = of_property_read_bool(np, "wakeup-source");
 
 	pdata->irq = platform_get_irq(pdev, 0);
drivers/isdn/capi/kcapi.c +5 -0
index cb0afe897162..7313454e403a 100644
@@ -480,6 +480,11 @@ int detach_capi_ctr(struct capi_ctr *ctr)
 
 	ctr_down(ctr, CAPI_CTR_DETACHED);
 
+	if (ctr->cnr < 1 || ctr->cnr - 1 >= CAPI_MAXCONTR) {
+		err = -EINVAL;
+		goto unlock_out;
+	}
+
 	if (capi_controller[ctr->cnr - 1] != ctr) {
 		err = -EINVAL;
 		goto unlock_out;
drivers/isdn/hardware/mISDN/netjet.c +1 -1
index 2a1ddd47a096..a52f275f8263 100644
@@ -949,8 +949,8 @@ nj_release(struct tiger_hw *card)
 		nj_disable_hwirq(card);
 		mode_tiger(&card->bc[0], ISDN_P_NONE);
 		mode_tiger(&card->bc[1], ISDN_P_NONE);
-		card->isac.release(&card->isac);
 		spin_unlock_irqrestore(&card->lock, flags);
+		card->isac.release(&card->isac);
 		release_region(card->base, card->base_s);
 		card->base_s = 0;
 	}
drivers/net/can/rcar/rcar_can.c +12 -8
index 00e4533c8bdd..8999ec9455ec 100644
@@ -846,10 +846,12 @@ static int __maybe_unused rcar_can_suspend(struct device *dev)
 	struct rcar_can_priv *priv = netdev_priv(ndev);
 	u16 ctlr;
 
-	if (netif_running(ndev)) {
-		netif_stop_queue(ndev);
-		netif_device_detach(ndev);
-	}
+	if (!netif_running(ndev))
+		return 0;
+
+	netif_stop_queue(ndev);
+	netif_device_detach(ndev);
+
 	ctlr = readw(&priv->regs->ctlr);
 	ctlr |= RCAR_CAN_CTLR_CANM_HALT;
 	writew(ctlr, &priv->regs->ctlr);
@@ -868,6 +870,9 @@ static int __maybe_unused rcar_can_resume(struct device *dev)
 	u16 ctlr;
 	int err;
 
+	if (!netif_running(ndev))
+		return 0;
+
 	err = clk_enable(priv->clk);
 	if (err) {
 		netdev_err(ndev, "clk_enable() failed, error %d\n", err);
@@ -881,10 +886,9 @@ static int __maybe_unused rcar_can_resume(struct device *dev)
 	writew(ctlr, &priv->regs->ctlr);
 	priv->can.state = CAN_STATE_ERROR_ACTIVE;
 
-	if (netif_running(ndev)) {
-		netif_device_attach(ndev);
-		netif_start_queue(ndev);
-	}
+	netif_device_attach(ndev);
+	netif_start_queue(ndev);
+
 	return 0;
 }
 
drivers/net/can/sja1000/peak_pci.c +4 -5
index 84eac8cb8686..15bca07dc706 100644
@@ -729,16 +729,15 @@ static void peak_pci_remove(struct pci_dev *pdev)
 		struct net_device *prev_dev = chan->prev_dev;
 
 		dev_info(&pdev->dev, "removing device %s\n", dev->name);
+		/* do that only for first channel */
+		if (!prev_dev && chan->pciec_card)
+			peak_pciec_remove(chan->pciec_card);
 		unregister_sja1000dev(dev);
 		free_sja1000dev(dev);
 		dev = prev_dev;
 
-		if (!dev) {
-			/* do that only for first channel */
-			if (chan->pciec_card)
-				peak_pciec_remove(chan->pciec_card);
+		if (!dev)
 			break;
-		}
 		priv = netdev_priv(dev);
 		chan = priv->priv;
 	}
drivers/net/can/usb/peak_usb/pcan_usb_fd.c +2 -3
index b11eabad575b..e206959b3d06 100644
@@ -551,11 +551,10 @@ static int pcan_usb_fd_decode_status(struct pcan_usb_fd_if *usb_if,
 	} else if (sm->channel_p_w_b & PUCAN_BUS_WARNING) {
 		new_state = CAN_STATE_ERROR_WARNING;
 	} else {
-		/* no error bit (so, no error skb, back to active state) */
-		dev->can.state = CAN_STATE_ERROR_ACTIVE;
+		/* back to (or still in) ERROR_ACTIVE state */
+		new_state = CAN_STATE_ERROR_ACTIVE;
 		pdev->bec.txerr = 0;
 		pdev->bec.rxerr = 0;
-		return 0;
 	}
 
 	/* state hasn't changed */
drivers/net/dsa/lantiq_gswip.c +1 -1
index 267324889dd6..1b9b7569c371 100644
@@ -230,7 +230,7 @@
 #define GSWIP_SDMA_PCTRLp(p)		(0xBC0 + ((p) * 0x6))
 #define  GSWIP_SDMA_PCTRL_EN		BIT(0)	/* SDMA Port Enable */
 #define  GSWIP_SDMA_PCTRL_FCEN		BIT(1)	/* Flow Control Enable */
-#define  GSWIP_SDMA_PCTRL_PAUFWD	BIT(1)	/* Pause Frame Forwarding */
+#define  GSWIP_SDMA_PCTRL_PAUFWD	BIT(3)	/* Pause Frame Forwarding */
 
 #define GSWIP_TABLE_ACTIVE_VLAN		0x01
 #define GSWIP_TABLE_VLAN_MAPPING	0x02
drivers/net/dsa/mt7530.c +1 -7
index 0cea1572f826..5f60db08bf80 100644
@@ -1031,9 +1031,6 @@ mt7530_port_enable(struct dsa_switch *ds, int port,
 {
 	struct mt7530_priv *priv = ds->priv;
 
-	if (!dsa_is_user_port(ds, port))
-		return 0;
-
 	mutex_lock(&priv->reg_mutex);
 
 	/* Allow the user port gets connected to the cpu port and also
@@ -1056,9 +1053,6 @@ mt7530_port_disable(struct dsa_switch *ds, int port)
 {
 	struct mt7530_priv *priv = ds->priv;
 
-	if (!dsa_is_user_port(ds, port))
-		return;
-
 	mutex_lock(&priv->reg_mutex);
 
 	/* Clear up all port matrix which could be restored in the next
@@ -3132,7 +3126,7 @@ mt7530_probe(struct mdio_device *mdiodev)
 		return -ENOMEM;
 
 	priv->ds->dev = &mdiodev->dev;
-	priv->ds->num_ports = DSA_MAX_PORTS;
+	priv->ds->num_ports = MT7530_NUM_PORTS;
 
 	/* Use medatek,mcm property to distinguish hardware type that would
 	 * casues a little bit differences on power-on sequence.
drivers/net/ethernet/freescale/enetc/enetc_ethtool.c +1 -1
index ebccaf02411c..8b618c15984d 100644
@@ -157,7 +157,7 @@ static const struct {
 	{ ENETC_PM0_TFRM,   "MAC tx frames" },
 	{ ENETC_PM0_TFCS,   "MAC tx fcs errors" },
 	{ ENETC_PM0_TVLAN,  "MAC tx VLAN frames" },
-	{ ENETC_PM0_TERR,   "MAC tx frames" },
+	{ ENETC_PM0_TERR,   "MAC tx frame errors" },
 	{ ENETC_PM0_TUCA,   "MAC tx unicast frames" },
 	{ ENETC_PM0_TMCA,   "MAC tx multicast frames" },
 	{ ENETC_PM0_TBCA,   "MAC tx broadcast frames" },
drivers/net/ethernet/freescale/enetc/enetc_pf.c +4 -1
index cf00709caea4..3ac324509f43 100644
@@ -517,10 +517,13 @@ static void enetc_port_si_configure(struct enetc_si *si)
 
 static void enetc_configure_port_mac(struct enetc_hw *hw)
 {
+	int tc;
+
 	enetc_port_wr(hw, ENETC_PM0_MAXFRM,
 		      ENETC_SET_MAXFRM(ENETC_RX_MAXFRM_SIZE));
 
-	enetc_port_wr(hw, ENETC_PTCMSDUR(0), ENETC_MAC_MAXFRM_SIZE);
+	for (tc = 0; tc < 8; tc++)
+		enetc_port_wr(hw, ENETC_PTCMSDUR(tc), ENETC_MAC_MAXFRM_SIZE);
 
 	enetc_port_wr(hw, ENETC_PM0_CMD_CFG, ENETC_PM0_CMD_PHY_TX_EN |
 		      ENETC_PM0_CMD_TXP	| ENETC_PM0_PROMISC);
drivers/net/ethernet/hisilicon/hns3/hnae3.c +21 -0
index eef1b2764d34..67b0bf310daa 100644
@@ -10,6 +10,27 @@ static LIST_HEAD(hnae3_ae_algo_list);
 static LIST_HEAD(hnae3_client_list);
 static LIST_HEAD(hnae3_ae_dev_list);
 
+void hnae3_unregister_ae_algo_prepare(struct hnae3_ae_algo *ae_algo)
+{
+	const struct pci_device_id *pci_id;
+	struct hnae3_ae_dev *ae_dev;
+
+	if (!ae_algo)
+		return;
+
+	list_for_each_entry(ae_dev, &hnae3_ae_dev_list, node) {
+		if (!hnae3_get_bit(ae_dev->flag, HNAE3_DEV_INITED_B))
+			continue;
+
+		pci_id = pci_match_id(ae_algo->pdev_id_table, ae_dev->pdev);
+		if (!pci_id)
+			continue;
+		if (IS_ENABLED(CONFIG_PCI_IOV))
+			pci_disable_sriov(ae_dev->pdev);
+	}
+}
+EXPORT_SYMBOL(hnae3_unregister_ae_algo_prepare);
+
 /* we are keeping things simple and using single lock for all the
  * list. This is a non-critical code so other updations, if happen
  * in parallel, can wait.
drivers/net/ethernet/hisilicon/hns3/hnae3.h +1 -0
index 32987bd134a1..dc5cce127d8e 100644
@@ -850,6 +850,7 @@ struct hnae3_handle {
 int hnae3_register_ae_dev(struct hnae3_ae_dev *ae_dev);
 void hnae3_unregister_ae_dev(struct hnae3_ae_dev *ae_dev);
 
+void hnae3_unregister_ae_algo_prepare(struct hnae3_ae_algo *ae_algo);
 void hnae3_unregister_ae_algo(struct hnae3_ae_algo *ae_algo);
 void hnae3_register_ae_algo(struct hnae3_ae_algo *ae_algo);
 
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +22 -15
index 114692c4f797..5aad7951308d 100644
@@ -1845,7 +1845,6 @@ void hns3_shinfo_pack(struct skb_shared_info *shinfo, __u32 *size)
 
 static int hns3_skb_linearize(struct hns3_enet_ring *ring,
 			      struct sk_buff *skb,
-			      u8 max_non_tso_bd_num,
 			      unsigned int bd_num)
 {
 	/* 'bd_num == UINT_MAX' means the skb' fraglist has a
@@ -1862,8 +1861,7 @@ static int hns3_skb_linearize(struct hns3_enet_ring *ring,
 	 * will not help.
 	 */
 	if (skb->len > HNS3_MAX_TSO_SIZE ||
-	    (!skb_is_gso(skb) && skb->len >
-	     HNS3_MAX_NON_TSO_SIZE(max_non_tso_bd_num))) {
+	    (!skb_is_gso(skb) && skb->len > HNS3_MAX_NON_TSO_SIZE)) {
 		u64_stats_update_begin(&ring->syncp);
 		ring->stats.hw_limitation++;
 		u64_stats_update_end(&ring->syncp);
@@ -1898,8 +1896,7 @@ static int hns3_nic_maybe_stop_tx(struct hns3_enet_ring *ring,
 			goto out;
 		}
 
-		if (hns3_skb_linearize(ring, skb, max_non_tso_bd_num,
-				       bd_num))
+		if (hns3_skb_linearize(ring, skb, bd_num))
 			return -ENOMEM;
 
 		bd_num = hns3_tx_bd_count(skb->len);
@@ -3266,6 +3263,7 @@ static void hns3_buffer_detach(struct hns3_enet_ring *ring, int i)
 {
 	hns3_unmap_buffer(ring, &ring->desc_cb[i]);
 	ring->desc[i].addr = 0;
+	ring->desc_cb[i].refill = 0;
 }
 
 static void hns3_free_buffer_detach(struct hns3_enet_ring *ring, int i,
@@ -3343,6 +3341,7 @@ static int hns3_alloc_and_attach_buffer(struct hns3_enet_ring *ring, int i)
 		return ret;
 
 	ring->desc[i].addr = cpu_to_le64(ring->desc_cb[i].dma);
+	ring->desc_cb[i].refill = 1;
 
 	return 0;
 }
@@ -3373,12 +3372,14 @@ static void hns3_replace_buffer(struct hns3_enet_ring *ring, int i,
 	hns3_unmap_buffer(ring, &ring->desc_cb[i]);
 	ring->desc_cb[i] = *res_cb;
 	ring->desc[i].addr = cpu_to_le64(ring->desc_cb[i].dma);
+	ring->desc_cb[i].refill = 1;
 	ring->desc[i].rx.bd_base_info = 0;
 }
 
 static void hns3_reuse_buffer(struct hns3_enet_ring *ring, int i)
 {
 	ring->desc_cb[i].reuse_flag = 0;
+	ring->desc_cb[i].refill = 1;
 	ring->desc[i].addr = cpu_to_le64(ring->desc_cb[i].dma +
 					 ring->desc_cb[i].page_offset);
 	ring->desc[i].rx.bd_base_info = 0;
@@ -3485,10 +3486,14 @@ static int hns3_desc_unused(struct hns3_enet_ring *ring)
 	int ntc = ring->next_to_clean;
 	int ntu = ring->next_to_use;
 
+	if (unlikely(ntc == ntu && !ring->desc_cb[ntc].refill))
+		return ring->desc_num;
+
 	return ((ntc >= ntu) ? 0 : ring->desc_num) + ntc - ntu;
 }
 
-static void hns3_nic_alloc_rx_buffers(struct hns3_enet_ring *ring,
+/* Return true if there is any allocation failure */
+static bool hns3_nic_alloc_rx_buffers(struct hns3_enet_ring *ring,
 				      int cleand_count)
 {
 	struct hns3_desc_cb *desc_cb;
@@ -3513,7 +3518,10 @@ static void hns3_nic_alloc_rx_buffers(struct hns3_enet_ring *ring,
 				hns3_rl_err(ring_to_netdev(ring),
 					    "alloc rx buffer failed: %d\n",
 					    ret);
-				break;
+
+				writel(i, ring->tqp->io_base +
+				       HNS3_RING_RX_RING_HEAD_REG);
+				return true;
 			}
 			hns3_replace_buffer(ring, ring->next_to_use, &res_cbs);
 
@@ -3526,6 +3534,7 @@ static void hns3_nic_alloc_rx_buffers(struct hns3_enet_ring *ring,
 	}
 
 	writel(i, ring->tqp->io_base + HNS3_RING_RX_RING_HEAD_REG);
+	return false;
 }
 
 static bool hns3_can_reuse_page(struct hns3_desc_cb *cb)
@@ -3824,6 +3833,7 @@ static void hns3_rx_ring_move_fw(struct hns3_enet_ring *ring)
 {
 	ring->desc[ring->next_to_clean].rx.bd_base_info &=
 		cpu_to_le32(~BIT(HNS3_RXD_VLD_B));
+	ring->desc_cb[ring->next_to_clean].refill = 0;
 	ring->next_to_clean += 1;
 
 	if (unlikely(ring->next_to_clean == ring->desc_num))
@@ -4159,6 +4169,7 @@ int hns3_clean_rx_ring(struct hns3_enet_ring *ring, int budget,
 {
 #define RCB_NOF_ALLOC_RX_BUFF_ONCE 16
 	int unused_count = hns3_desc_unused(ring);
+	bool failure = false;
 	int recv_pkts = 0;
 	int err;
 
@@ -4167,9 +4178,9 @@ int hns3_clean_rx_ring(struct hns3_enet_ring *ring, int budget,
 	while (recv_pkts < budget) {
 		/* Reuse or realloc buffers */
 		if (unused_count >= RCB_NOF_ALLOC_RX_BUFF_ONCE) {
-			hns3_nic_alloc_rx_buffers(ring, unused_count);
-			unused_count = hns3_desc_unused(ring) -
-					ring->pending_buf;
+			failure = failure ||
+				hns3_nic_alloc_rx_buffers(ring, unused_count);
+			unused_count = 0;
 		}
 
 		/* Poll one pkt */
@@ -4188,11 +4199,7 @@ int hns3_clean_rx_ring(struct hns3_enet_ring *ring, int budget,
 	}
 
 out:
-	/* Make all data has been write before submit */
-	if (unused_count > 0)
-		hns3_nic_alloc_rx_buffers(ring, unused_count);
-
-	return recv_pkts;
+	return failure ? budget : recv_pkts;
 }
 
 static void hns3_update_rx_int_coalesce(struct hns3_enet_tqp_vector *tqp_vector)
drivers/net/ethernet/hisilicon/hns3/hns3_enet.h +3 -4
index 15af3d93857b..d146f44bfaca 100644
@@ -185,11 +185,9 @@ enum hns3_nic_state {
 
 #define HNS3_MAX_BD_SIZE			65535
 #define HNS3_MAX_TSO_BD_NUM			63U
-#define HNS3_MAX_TSO_SIZE \
-	(HNS3_MAX_BD_SIZE * HNS3_MAX_TSO_BD_NUM)
+#define HNS3_MAX_TSO_SIZE			1048576U
+#define HNS3_MAX_NON_TSO_SIZE			9728U
 
-#define HNS3_MAX_NON_TSO_SIZE(max_non_tso_bd_num) \
-	(HNS3_MAX_BD_SIZE * (max_non_tso_bd_num))
 
 #define HNS3_VECTOR_GL0_OFFSET			0x100
 #define HNS3_VECTOR_GL1_OFFSET			0x200
@@ -324,6 +322,7 @@ struct hns3_desc_cb {
 	u32 length;     /* length of the buffer */
 
 	u16 reuse_flag;
+	u16 refill;
 
 	/* desc type, used by the ring user to mark the type of the priv data */
 	u16 type;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_dcb.c +9 -0
index c90bfde2aecf..c60d0626062c 100644
@@ -133,6 +133,15 @@ static int hclge_ets_validate(struct hclge_dev *hdev, struct ieee_ets *ets,
 				*changed = true;
 			break;
 		case IEEE_8021QAZ_TSA_ETS:
+			/* The hardware will switch to sp mode if bandwidth is
+			 * 0, so limit ets bandwidth must be greater than 0.
+			 */
+			if (!ets->tc_tx_bw[i]) {
+				dev_err(&hdev->pdev->dev,
+					"tc%u ets bw cannot be 0\n", i);
+				return -EINVAL;
+			}
+
 			if (hdev->tm_info.tc_info[i].tc_sch_mode !=
 				HCLGE_SCH_MODE_DWRR)
 				*changed = true;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c +4 -1
index 2eeafd61a07e..c63b440fd654 100644
@@ -995,8 +995,11 @@ static int hclge_config_tm_hw_err_int(struct hclge_dev *hdev, bool en)
 
 	/* configure TM QCN hw errors */
 	hclge_cmd_setup_basic_desc(&desc, HCLGE_TM_QCN_MEM_INT_CFG, false);
-	if (en)
+	desc.data[0] = cpu_to_le32(HCLGE_TM_QCN_ERR_INT_TYPE);
+	if (en) {
+		desc.data[0] |= cpu_to_le32(HCLGE_TM_QCN_FIFO_INT_EN);
 		desc.data[1] = cpu_to_le32(HCLGE_TM_QCN_MEM_ERR_INT_EN);
+	}
 
 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
 	if (ret)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.h +2 -0
index 07987fb8332e..d811eeefe2c0 100644
@@ -50,6 +50,8 @@
 #define HCLGE_PPP_MPF_ECC_ERR_INT3_EN	0x003F
 #define HCLGE_PPP_MPF_ECC_ERR_INT3_EN_MASK	0x003F
 #define HCLGE_TM_SCH_ECC_ERR_INT_EN	0x3
+#define HCLGE_TM_QCN_ERR_INT_TYPE	0x29
+#define HCLGE_TM_QCN_FIFO_INT_EN	0xFFFF00
 #define HCLGE_TM_QCN_MEM_ERR_INT_EN	0xFFFFFF
 #define HCLGE_NCSI_ERR_INT_EN	0x3
 #define HCLGE_NCSI_ERR_INT_TYPE	0x9
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +1 -0
index 9920e76b4f41..be46b164b0e2 100644
@@ -13023,6 +13023,7 @@ static int hclge_init(void)
 
 static void hclge_exit(void)
 {
+	hnae3_unregister_ae_algo_prepare(&ae_algo);
 	hnae3_unregister_ae_algo(&ae_algo);
 	destroy_workqueue(hclge_wq);
 }
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c +2 -0
index f314dbd3ce11..95074e91a846 100644
@@ -752,6 +752,8 @@ static void hclge_tm_pg_info_init(struct hclge_dev *hdev)
 		hdev->tm_info.pg_info[i].tc_bit_map = hdev->hw_tc_map;
 		for (k = 0; k < hdev->tm_info.num_tc; k++)
 			hdev->tm_info.pg_info[i].tc_dwrr[k] = BW_PERCENT;
+		for (; k < HNAE3_MAX_TC; k++)
+			hdev->tm_info.pg_info[i].tc_dwrr[k] = 0;
 	}
 }
 
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +3 -3
index 22cf66004dfa..b8414f684e89 100644
@@ -2271,9 +2271,9 @@ static void hclgevf_reset_service_task(struct hclgevf_dev *hdev)
 		hdev->reset_attempts = 0;
 
 		hdev->last_reset_time = jiffies;
-		while ((hdev->reset_type =
-			hclgevf_get_reset_level(hdev, &hdev->reset_pending))
-		       != HNAE3_NONE_RESET)
+		hdev->reset_type =
+			hclgevf_get_reset_level(hdev, &hdev->reset_pending);
+		if (hdev->reset_type != HNAE3_NONE_RESET)
 			hclgevf_reset(hdev);
 	} else if (test_and_clear_bit(HCLGEVF_RESET_REQUESTED,
 				      &hdev->reset_state)) {
drivers/net/ethernet/intel/e1000e/e1000.h +3 -1
index 5b2143f4b1f8..3178efd98006 100644
@@ -113,7 +113,8 @@ enum e1000_boards {
 	board_pch2lan,
 	board_pch_lpt,
 	board_pch_spt,
-	board_pch_cnp
+	board_pch_cnp,
+	board_pch_tgp
 };
 
 struct e1000_ps_page {
@@ -499,6 +500,7 @@ extern const struct e1000_info e1000_pch2_info;
 extern const struct e1000_info e1000_pch_lpt_info;
 extern const struct e1000_info e1000_pch_spt_info;
 extern const struct e1000_info e1000_pch_cnp_info;
+extern const struct e1000_info e1000_pch_tgp_info;
 extern const struct e1000_info e1000_es2_info;
 
 void e1000e_ptp_init(struct e1000_adapter *adapter);
drivers/net/ethernet/intel/e1000e/ich8lan.c +30 -1
index a80336c4319b..f8b3e758a8d2 100644
@@ -4804,7 +4804,7 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw)
 static s32 e1000_init_hw_ich8lan(struct e1000_hw *hw)
 {
 	struct e1000_mac_info *mac = &hw->mac;
-	u32 ctrl_ext, txdctl, snoop;
+	u32 ctrl_ext, txdctl, snoop, fflt_dbg;
 	s32 ret_val;
 	u16 i;
 
@@ -4863,6 +4863,15 @@ static s32 e1000_init_hw_ich8lan(struct e1000_hw *hw)
 		snoop = (u32)~(PCIE_NO_SNOOP_ALL);
 	e1000e_set_pcie_no_snoop(hw, snoop);
 
+	/* Enable workaround for packet loss issue on TGP PCH
+	 * Do not gate DMA clock from the modPHY block
+	 */
+	if (mac->type >= e1000_pch_tgp) {
+		fflt_dbg = er32(FFLT_DBG);
+		fflt_dbg |= E1000_FFLT_DBG_DONT_GATE_WAKE_DMA_CLK;
+		ew32(FFLT_DBG, fflt_dbg);
+	}
+
 	ctrl_ext = er32(CTRL_EXT);
 	ctrl_ext |= E1000_CTRL_EXT_RO_DIS;
 	ew32(CTRL_EXT, ctrl_ext);
@@ -5983,3 +5992,23 @@ const struct e1000_info e1000_pch_cnp_info = {
 	.phy_ops		= &ich8_phy_ops,
 	.nvm_ops		= &spt_nvm_ops,
 };
+
+const struct e1000_info e1000_pch_tgp_info = {
+	.mac			= e1000_pch_tgp,
+	.flags			= FLAG_IS_ICH
+				  | FLAG_HAS_WOL
+				  | FLAG_HAS_HW_TIMESTAMP
+				  | FLAG_HAS_CTRLEXT_ON_LOAD
+				  | FLAG_HAS_AMT
+				  | FLAG_HAS_FLASH
+				  | FLAG_HAS_JUMBO_FRAMES
+				  | FLAG_APME_IN_WUC,
+	.flags2			= FLAG2_HAS_PHY_STATS
+				  | FLAG2_HAS_EEE,
+	.pba			= 26,
+	.max_hw_frame_size	= 9022,
+	.get_variants		= e1000_get_variants_ich8lan,
+	.mac_ops		= &ich8_mac_ops,
+	.phy_ops		= &ich8_phy_ops,
+	.nvm_ops		= &spt_nvm_ops,
+};
drivers/net/ethernet/intel/e1000e/ich8lan.h +3 -0
index e757896287eb..8f2a8f4ce0ee 100644
@@ -286,6 +286,9 @@
 /* Proprietary Latency Tolerance Reporting PCI Capability */
 #define E1000_PCI_LTR_CAP_LPT		0xA8
 
+/* Don't gate wake DMA clock */
+#define E1000_FFLT_DBG_DONT_GATE_WAKE_DMA_CLK	0x1000
+
 void e1000e_write_protect_nvm_ich8lan(struct e1000_hw *hw);
 void e1000e_set_kmrn_lock_loss_workaround_ich8lan(struct e1000_hw *hw,
 						  bool state);
drivers/net/ethernet/intel/e1000e/netdev.c +15 -14
index 757a54c39eef..774f849027f0 100644
@@ -51,6 +51,7 @@ static const struct e1000_info *e1000_info_tbl[] = {
 	[board_pch_lpt]		= &e1000_pch_lpt_info,
 	[board_pch_spt]		= &e1000_pch_spt_info,
 	[board_pch_cnp]		= &e1000_pch_cnp_info,
+	[board_pch_tgp]		= &e1000_pch_tgp_info,
 };
 
 struct e1000_reg_info {
@@ -7844,20 +7845,20 @@ static const struct pci_device_id e1000_pci_tbl[] = {
 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_CMP_I219_V11), board_pch_cnp },
 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_CMP_I219_LM12), board_pch_spt },
 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_CMP_I219_V12), board_pch_spt },
-	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_LM13), board_pch_cnp },
-	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_V13), board_pch_cnp },
-	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_LM14), board_pch_cnp },
-	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_V14), board_pch_cnp },
-	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_LM15), board_pch_cnp },
-	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_V15), board_pch_cnp },
-	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_LM16), board_pch_cnp },
-	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_V16), board_pch_cnp },
-	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_LM17), board_pch_cnp },
-	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_V17), board_pch_cnp },
-	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_LM18), board_pch_cnp },
-	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_V18), board_pch_cnp },
-	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_LM19), board_pch_cnp },
-	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_V19), board_pch_cnp },
+	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_LM13), board_pch_tgp },
+	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_V13), board_pch_tgp },
+	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_LM14), board_pch_tgp },
+	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_V14), board_pch_tgp },
+	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_LM15), board_pch_tgp },
+	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_V15), board_pch_tgp },
+	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_LM16), board_pch_tgp },
+	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_V16), board_pch_tgp },
+	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_LM17), board_pch_tgp },
+	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_V17), board_pch_tgp },
+	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_LM18), board_pch_tgp },
+	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_V18), board_pch_tgp },
+	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_LM19), board_pch_tgp },
+	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_V19), board_pch_tgp },
 
 	{ 0, 0, 0, 0, 0, 0, 0 }	/* terminate list */
 };
drivers/net/ethernet/intel/ice/ice_common.c +2 -0
index 2fb81e359cdf..df5ad4de1f00 100644
@@ -25,6 +25,8 @@ static enum ice_status ice_set_mac_type(struct ice_hw *hw)
 	case ICE_DEV_ID_E810C_BACKPLANE:
 	case ICE_DEV_ID_E810C_QSFP:
 	case ICE_DEV_ID_E810C_SFP:
+	case ICE_DEV_ID_E810_XXV_BACKPLANE:
+	case ICE_DEV_ID_E810_XXV_QSFP:
 	case ICE_DEV_ID_E810_XXV_SFP:
 		hw->mac_type = ICE_MAC_E810;
 		break;
drivers/net/ethernet/intel/ice/ice_devids.h +4 -0
index 9d8194671f6a..ef4392e6e244 100644
@@ -21,6 +21,10 @@
 #define ICE_DEV_ID_E810C_QSFP		0x1592
 /* Intel(R) Ethernet Controller E810-C for SFP */
 #define ICE_DEV_ID_E810C_SFP		0x1593
+/* Intel(R) Ethernet Controller E810-XXV for backplane */
+#define ICE_DEV_ID_E810_XXV_BACKPLANE	0x1599
+/* Intel(R) Ethernet Controller E810-XXV for QSFP */
+#define ICE_DEV_ID_E810_XXV_QSFP	0x159A
 /* Intel(R) Ethernet Controller E810-XXV for SFP */
 #define ICE_DEV_ID_E810_XXV_SFP		0x159B
 /* Intel(R) Ethernet Connection E823-C for backplane */
drivers/net/ethernet/intel/ice/ice_devlink.c +2 -1
index 7fe6e8ea39f0..64bea7659cf7 100644
@@ -63,7 +63,8 @@ static int ice_info_fw_api(struct ice_pf *pf, struct ice_info_ctx *ctx)
 {
 	struct ice_hw *hw = &pf->hw;
 
-	snprintf(ctx->buf, sizeof(ctx->buf), "%u.%u", hw->api_maj_ver, hw->api_min_ver);
+	snprintf(ctx->buf, sizeof(ctx->buf), "%u.%u.%u", hw->api_maj_ver,
+		 hw->api_min_ver, hw->api_patch);
 
 	return 0;
 }
drivers/net/ethernet/intel/ice/ice_flex_pipe.c +2 -2
index 06ac9badee77..1ac96dc66d0d 100644
@@ -1668,7 +1668,7 @@ static u16 ice_tunnel_idx_to_entry(struct ice_hw *hw, enum ice_tunnel_type type,
 	for (i = 0; i < hw->tnl.count && i < ICE_TUNNEL_MAX_ENTRIES; i++)
 		if (hw->tnl.tbl[i].valid &&
 		    hw->tnl.tbl[i].type == type &&
-		    idx--)
+		    idx-- == 0)
 			return i;
 
 	WARN_ON_ONCE(1);
@@ -1828,7 +1828,7 @@ int ice_udp_tunnel_set_port(struct net_device *netdev, unsigned int table,
 	u16 index;
 
 	tnl_type = ti->type == UDP_TUNNEL_TYPE_VXLAN ? TNL_VXLAN : TNL_GENEVE;
-	index = ice_tunnel_idx_to_entry(&pf->hw, idx, tnl_type);
+	index = ice_tunnel_idx_to_entry(&pf->hw, tnl_type, idx);
 
 	status = ice_create_tunnel(&pf->hw, index, tnl_type, ntohs(ti->port));
 	if (status) {
drivers/net/ethernet/intel/ice/ice_lib.c +9 -0
index dde9802c6c72..b718e196af2a 100644
@@ -2841,6 +2841,7 @@ void ice_napi_del(struct ice_vsi *vsi)
  */
 int ice_vsi_release(struct ice_vsi *vsi)
 {
+	enum ice_status err;
 	struct ice_pf *pf;
 
 	if (!vsi->back)
@@ -2912,6 +2913,10 @@ int ice_vsi_release(struct ice_vsi *vsi)
 
 	ice_fltr_remove_all(vsi);
 	ice_rm_vsi_lan_cfg(vsi->port_info, vsi->idx);
+	err = ice_rm_vsi_rdma_cfg(vsi->port_info, vsi->idx);
+	if (err)
+		dev_err(ice_pf_to_dev(vsi->back), "Failed to remove RDMA scheduler config for VSI %u, err %d\n",
+			vsi->vsi_num, err);
 	ice_vsi_delete(vsi);
 	ice_vsi_free_q_vectors(vsi);
 
@@ -3092,6 +3097,10 @@ int ice_vsi_rebuild(struct ice_vsi *vsi, bool init_vsi)
 	prev_num_q_vectors = ice_vsi_rebuild_get_coalesce(vsi, coalesce);
 
 	ice_rm_vsi_lan_cfg(vsi->port_info, vsi->idx);
+	ret = ice_rm_vsi_rdma_cfg(vsi->port_info, vsi->idx);
+	if (ret)
+		dev_err(ice_pf_to_dev(vsi->back), "Failed to remove RDMA scheduler config for VSI %u, err %d\n",
+			vsi->vsi_num, ret);
 	ice_vsi_free_q_vectors(vsi);
 
 	/* SR-IOV determines needed MSIX resources all at once instead of per
drivers/net/ethernet/intel/ice/ice_main.c +7 -1
index a8bd512d5b45..ed087fde2066 100644
@@ -4224,6 +4224,9 @@ ice_probe(struct pci_dev *pdev, const struct pci_device_id __always_unused *ent)
 	if (!pf)
 		return -ENOMEM;
 
+	/* initialize Auxiliary index to invalid value */
+	pf->aux_idx = -1;
+
 	/* set up for high or low DMA */
 	err = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64));
 	if (err)
@@ -4615,7 +4618,8 @@ static void ice_remove(struct pci_dev *pdev)
 
 	ice_aq_cancel_waiting_tasks(pf);
 	ice_unplug_aux_dev(pf);
-	ida_free(&ice_aux_ida, pf->aux_idx);
+	if (pf->aux_idx >= 0)
+		ida_free(&ice_aux_ida, pf->aux_idx);
 	set_bit(ICE_DOWN, pf->state);
 
 	mutex_destroy(&(&pf->hw)->fdir_fltr_lock);
@@ -5016,6 +5020,8 @@ static const struct pci_device_id ice_pci_tbl[] = {
 	{ PCI_VDEVICE(INTEL, ICE_DEV_ID_E810C_BACKPLANE), 0 },
 	{ PCI_VDEVICE(INTEL, ICE_DEV_ID_E810C_QSFP), 0 },
 	{ PCI_VDEVICE(INTEL, ICE_DEV_ID_E810C_SFP), 0 },
+	{ PCI_VDEVICE(INTEL, ICE_DEV_ID_E810_XXV_BACKPLANE), 0 },
+	{ PCI_VDEVICE(INTEL, ICE_DEV_ID_E810_XXV_QSFP), 0 },
 	{ PCI_VDEVICE(INTEL, ICE_DEV_ID_E810_XXV_SFP), 0 },
 	{ PCI_VDEVICE(INTEL, ICE_DEV_ID_E823C_BACKPLANE), 0 },
 	{ PCI_VDEVICE(INTEL, ICE_DEV_ID_E823C_QSFP), 0 },
drivers/net/ethernet/intel/ice/ice_sched.c +13 -0
index 9f07b6641705..2d9b10277186 100644
@@ -2070,6 +2070,19 @@ enum ice_status ice_rm_vsi_lan_cfg(struct ice_port_info *pi, u16 vsi_handle)
 	return ice_sched_rm_vsi_cfg(pi, vsi_handle, ICE_SCHED_NODE_OWNER_LAN);
 }
 
+/**
+ * ice_rm_vsi_rdma_cfg - remove VSI and its RDMA children nodes
+ * @pi: port information structure
+ * @vsi_handle: software VSI handle
+ *
+ * This function clears the VSI and its RDMA children nodes from scheduler tree
+ * for all TCs.
+ */
+enum ice_status ice_rm_vsi_rdma_cfg(struct ice_port_info *pi, u16 vsi_handle)
+{
+	return ice_sched_rm_vsi_cfg(pi, vsi_handle, ICE_SCHED_NODE_OWNER_RDMA);
+}
+
 /**
  * ice_get_agg_info - get the aggregator ID
  * @hw: pointer to the hardware structure
drivers/net/ethernet/intel/ice/ice_sched.h +1 -0
index 9beef8f0ec76..fdf7a5882f07 100644
@@ -89,6 +89,7 @@ enum ice_status
 ice_sched_cfg_vsi(struct ice_port_info *pi, u16 vsi_handle, u8 tc, u16 maxqs,
 		  u8 owner, bool enable);
 enum ice_status ice_rm_vsi_lan_cfg(struct ice_port_info *pi, u16 vsi_handle);
+enum ice_status ice_rm_vsi_rdma_cfg(struct ice_port_info *pi, u16 vsi_handle);
 
 /* Tx scheduler rate limiter functions */
 enum ice_status
drivers/net/ethernet/intel/igc/igc_hw.h +1 -1
index 4461f8b9a864..4e0203336c6b 100644
@@ -22,8 +22,8 @@
 #define IGC_DEV_ID_I220_V			0x15F7
 #define IGC_DEV_ID_I225_K			0x3100
 #define IGC_DEV_ID_I225_K2			0x3101
+#define IGC_DEV_ID_I226_K			0x3102
 #define IGC_DEV_ID_I225_LMVP			0x5502
-#define IGC_DEV_ID_I226_K			0x5504
 #define IGC_DEV_ID_I225_IT			0x0D9F
 #define IGC_DEV_ID_I226_LM			0x125B
 #define IGC_DEV_ID_I226_V			0x125C
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c +2 -0
index 1e2d117082d4..603d9884b6bd 100644
@@ -10,6 +10,8 @@
 #include "en_tc.h"
 #include "rep/tc.h"
 #include "rep/neigh.h"
+#include "lag.h"
+#include "lag_mp.h"
 
 struct mlx5e_tc_tun_route_attr {
 	struct net_device *out_dev;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_rxtx.c +27 -24

66 lines not on this page · raw message

drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +2 -0
index 6eba574c5a36..c757209b47ee 100644
@@ -72,6 +72,8 @@
 #include "lib/fs_chains.h"
 #include "diag/en_tc_tracepoint.h"
 #include <asm/div64.h>
+#include "lag.h"
+#include "lag_mp.h"
 
 #define nic_chains(priv) ((priv)->fs.tc.chains)
 #define MLX5_MH_ACT_SZ MLX5_UN_SZ_BYTES(set_add_copy_action_in_auto)
drivers/net/ethernet/mellanox/mlx5/core/en_tx.c +11 -9
index c63d78eda606..188994d091c5 100644
@@ -213,19 +213,18 @@ static inline void mlx5e_insert_vlan(void *start, struct sk_buff *skb, u16 ihs)
 	memcpy(&vhdr->h_vlan_encapsulated_proto, skb->data + cpy1_sz, cpy2_sz);
 }
 
-/* If packet is not IP's CHECKSUM_PARTIAL (e.g. icmd packet),
- * need to set L3 checksum flag for IPsec
- */
 static void
 ipsec_txwqe_build_eseg_csum(struct mlx5e_txqsq *sq, struct sk_buff *skb,
 			    struct mlx5_wqe_eth_seg *eseg)
 {
+	struct xfrm_offload *xo = xfrm_offload(skb);
+
 	eseg->cs_flags = MLX5_ETH_WQE_L3_CSUM;
-	if (skb->encapsulation) {
-		eseg->cs_flags |= MLX5_ETH_WQE_L3_INNER_CSUM;
+	if (xo->inner_ipproto) {
+		eseg->cs_flags |= MLX5_ETH_WQE_L4_INNER_CSUM | MLX5_ETH_WQE_L3_INNER_CSUM;
+	} else if (likely(skb->ip_summed == CHECKSUM_PARTIAL)) {
+		eseg->cs_flags |= MLX5_ETH_WQE_L4_CSUM;
 		sq->stats->csum_partial_inner++;
-	} else {
-		sq->stats->csum_partial++;
 	}
 }
 
@@ -234,6 +233,11 @@ mlx5e_txwqe_build_eseg_csum(struct mlx5e_txqsq *sq, struct sk_buff *skb,
 			    struct mlx5e_accel_tx_state *accel,
 			    struct mlx5_wqe_eth_seg *eseg)
 {
+	if (unlikely(mlx5e_ipsec_eseg_meta(eseg))) {
+		ipsec_txwqe_build_eseg_csum(sq, skb, eseg);
+		return;
+	}
+
 	if (likely(skb->ip_summed == CHECKSUM_PARTIAL)) {
 		eseg->cs_flags = MLX5_ETH_WQE_L3_CSUM;
 		if (skb->encapsulation) {
@@ -249,8 +253,6 @@ mlx5e_txwqe_build_eseg_csum(struct mlx5e_txqsq *sq, struct sk_buff *skb,
 		eseg->cs_flags = MLX5_ETH_WQE_L3_CSUM | MLX5_ETH_WQE_L4_CSUM;
 		sq->stats->csum_partial++;
 #endif
-	} else if (unlikely(mlx5e_ipsec_eseg_meta(eseg))) {
-		ipsec_txwqe_build_eseg_csum(sq, skb, eseg);
 	} else
 		sq->stats->csum_none++;
 }
drivers/net/ethernet/mellanox/mlx5/core/lag.c +12 -7
index 40ef60f562b4..be6e7e10b252 100644
@@ -372,12 +372,17 @@ static void mlx5_do_bond(struct mlx5_lag *ldev)
 	bool do_bond, roce_lag;
 	int err;
 
-	if (!mlx5_lag_is_ready(ldev))
-		return;
+	if (!mlx5_lag_is_ready(ldev)) {
+		do_bond = false;
+	} else {
+		/* VF LAG is in multipath mode, ignore bond change requests */
+		if (mlx5_lag_is_multipath(dev0))
+			return;
 
-	tracker = ldev->tracker;
+		tracker = ldev->tracker;
 
-	do_bond = tracker.is_bonded && mlx5_lag_check_prereq(ldev);
+		do_bond = tracker.is_bonded && mlx5_lag_check_prereq(ldev);
+	}
 
 	if (do_bond && !__mlx5_lag_is_active(ldev)) {
 		roce_lag = !mlx5_sriov_is_enabled(dev0) &&
@@ -691,11 +696,11 @@ void mlx5_lag_remove_netdev(struct mlx5_core_dev *dev,
 	if (!ldev)
 		return;
 
-	if (__mlx5_lag_is_active(ldev))
-		mlx5_disable_lag(ldev);
-
 	mlx5_ldev_remove_netdev(ldev, netdev);
 	ldev->flags &= ~MLX5_LAG_FLAG_READY;
+
+	if (__mlx5_lag_is_active(ldev))
+		mlx5_queue_bond_work(ldev, 0);
 }
 
 /* Must be called with intf_mutex held */
drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c +8 -5
index 516bfc2bd797..577e5d02bfdd 100644
@@ -9,20 +9,23 @@
 #include "eswitch.h"
 #include "lib/mlx5.h"
 
+static bool __mlx5_lag_is_multipath(struct mlx5_lag *ldev)
+{
+	return !!(ldev->flags & MLX5_LAG_FLAG_MULTIPATH);
+}
+
 static bool mlx5_lag_multipath_check_prereq(struct mlx5_lag *ldev)
 {
 	if (!mlx5_lag_is_ready(ldev))
 		return false;
 
+	if (__mlx5_lag_is_active(ldev) && !__mlx5_lag_is_multipath(ldev))
+		return false;
+
 	return mlx5_esw_multipath_prereq(ldev->pf[MLX5_LAG_P1].dev,
 					 ldev->pf[MLX5_LAG_P2].dev);
 }
 
-static bool __mlx5_lag_is_multipath(struct mlx5_lag *ldev)
-{
-	return !!(ldev->flags & MLX5_LAG_FLAG_MULTIPATH);
-}
-
 bool mlx5_lag_is_multipath(struct mlx5_core_dev *dev)
 {
 	struct mlx5_lag *ldev;
drivers/net/ethernet/mellanox/mlx5/core/lag_mp.h +2 -0
index 729c839397a8..dea199e79bed 100644
@@ -24,12 +24,14 @@ struct lag_mp {
 void mlx5_lag_mp_reset(struct mlx5_lag *ldev);
 int mlx5_lag_mp_init(struct mlx5_lag *ldev);
 void mlx5_lag_mp_cleanup(struct mlx5_lag *ldev);
+bool mlx5_lag_is_multipath(struct mlx5_core_dev *dev);
 
 #else /* CONFIG_MLX5_ESWITCH */
 
 static inline void mlx5_lag_mp_reset(struct mlx5_lag *ldev) {};
 static inline int mlx5_lag_mp_init(struct mlx5_lag *ldev) { return 0; }
 static inline void mlx5_lag_mp_cleanup(struct mlx5_lag *ldev) {}
+bool mlx5_lag_is_multipath(struct mlx5_core_dev *dev) { return false; }
 
 #endif /* CONFIG_MLX5_ESWITCH */
 #endif /* __MLX5_LAG_MP_H__ */
drivers/net/ethernet/stmicro/stmmac/dwmac-generic.c +1 -0
index fbfda55b4c52..5e731a72cce8 100644
@@ -71,6 +71,7 @@ static int dwmac_generic_probe(struct platform_device *pdev)
 
 static const struct of_device_id dwmac_generic_match[] = {
 	{ .compatible = "st,spear600-gmac"},
+	{ .compatible = "snps,dwmac-3.40a"},
 	{ .compatible = "snps,dwmac-3.50a"},
 	{ .compatible = "snps,dwmac-3.610"},
 	{ .compatible = "snps,dwmac-3.70a"},
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +1 -1
index 6b2a5e5769e8..14e577787415 100644
@@ -736,7 +736,7 @@ static int stmmac_hwtstamp_set(struct net_device *dev, struct ifreq *ifr)
 			config.rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT;
 			ptp_v2 = PTP_TCR_TSVER2ENA;
 			snap_type_sel = PTP_TCR_SNAPTYPSEL_1;
-			if (priv->synopsys_id != DWMAC_CORE_5_10)
+			if (priv->synopsys_id < DWMAC_CORE_4_10)
 				ts_event_en = PTP_TCR_TSEVNTENA;
 			ptp_over_ipv4_udp = PTP_TCR_TSIPV4ENA;
 			ptp_over_ipv6_udp = PTP_TCR_TSIPV6ENA;
drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +8 -0
index 62cec9bfcd33..232ac98943cd 100644
@@ -508,6 +508,14 @@ stmmac_probe_config_dt(struct platform_device *pdev, u8 *mac)
 		plat->pmt = 1;
 	}
 
+	if (of_device_is_compatible(np, "snps,dwmac-3.40a")) {
+		plat->has_gmac = 1;
+		plat->enh_desc = 1;
+		plat->tx_coe = 1;
+		plat->bugged_jumbo = 1;
+		plat->pmt = 1;
+	}
+
 	if (of_device_is_compatible(np, "snps,dwmac-4.00") ||
 	    of_device_is_compatible(np, "snps,dwmac-4.10a") ||
 	    of_device_is_compatible(np, "snps,dwmac-4.20a") ||
drivers/net/hamradio/baycom_epp.c +3 -3
index 4435a1195194..8ea8d50f81c4 100644
@@ -623,16 +623,16 @@ static int receive(struct net_device *dev, int cnt)
 
 /* --------------------------------------------------------------------- */
 
-#ifdef __i386__
+#if defined(__i386__) && !defined(CONFIG_UML)
 #include <asm/msr.h>
 #define GETTICK(x)						\
 ({								\
 	if (boot_cpu_has(X86_FEATURE_TSC))			\
 		x = (unsigned int)rdtsc();			\
 })
-#else /* __i386__ */
+#else /* __i386__  && !CONFIG_UML */
 #define GETTICK(x)
-#endif /* __i386__ */
+#endif /* __i386__  && !CONFIG_UML */
 
 static void epp_bh(struct work_struct *work)
 {
drivers/net/phy/mdio_bus.c +1 -0
index 6865d9319197..3fa9c15ec81e 100644
@@ -548,6 +548,7 @@ int __mdiobus_register(struct mii_bus *bus, struct module *owner)
 	err = device_register(&bus->dev);
 	if (err) {
 		pr_err("mii_bus %s failed to register\n", bus->id);
+		put_device(&bus->dev);
 		return -EINVAL;
 	}
 
drivers/net/usb/Kconfig +1 -0
index f87f17503373..b554054a7560 100644
@@ -117,6 +117,7 @@ config USB_LAN78XX
 	select PHYLIB
 	select MICROCHIP_PHY
 	select FIXED_PHY
+	select CRC32
 	help
 	  This option adds support for Microchip LAN78XX based USB 2
 	  & USB 3 10/100/1000 Ethernet adapters.
drivers/net/usb/r8152.c +15 -1
index 79832374f78d..92fca5e9ed03 100644
@@ -767,6 +767,7 @@ enum rtl8152_flags {
 	PHY_RESET,
 	SCHEDULE_TASKLET,
 	GREEN_ETHERNET,
+	RX_EPROTO,
 };
 
 #define DEVICE_ID_THINKPAD_THUNDERBOLT3_DOCK_GEN2	0x3082
@@ -1770,6 +1771,14 @@ static void read_bulk_callback(struct urb *urb)
 		rtl_set_unplug(tp);
 		netif_device_detach(tp->netdev);
 		return;
+	case -EPROTO:
+		urb->actual_length = 0;
+		spin_lock_irqsave(&tp->rx_lock, flags);
+		list_add_tail(&agg->list, &tp->rx_done);
+		spin_unlock_irqrestore(&tp->rx_lock, flags);
+		set_bit(RX_EPROTO, &tp->flags);
+		schedule_delayed_work(&tp->schedule, 1);
+		return;
 	case -ENOENT:
 		return;	/* the urb is in unlink state */
 	case -ETIME:
@@ -2425,6 +2434,7 @@ static int rx_bottom(struct r8152 *tp, int budget)
 	if (list_empty(&tp->rx_done))
 		goto out1;
 
+	clear_bit(RX_EPROTO, &tp->flags);
 	INIT_LIST_HEAD(&rx_queue);
 	spin_lock_irqsave(&tp->rx_lock, flags);
 	list_splice_init(&tp->rx_done, &rx_queue);
@@ -2441,7 +2451,7 @@ static int rx_bottom(struct r8152 *tp, int budget)
 
 		agg = list_entry(cursor, struct rx_agg, list);
 		urb = agg->urb;
-		if (urb->actual_length < ETH_ZLEN)
+		if (urb->status != 0 || urb->actual_length < ETH_ZLEN)
 			goto submit;
 
 		agg_free = rtl_get_free_rx(tp, GFP_ATOMIC);
@@ -6643,6 +6653,10 @@ static void rtl_work_func_t(struct work_struct *work)
 	    netif_carrier_ok(tp->netdev))
 		tasklet_schedule(&tp->tx_tl);
 
[… more lines in the raw message]

Lines of this file are not shown. View the raw message.

drivers/pci/hotplug/s390_pci_hpc.c +1 -8
index 014868752cd4..dcefdb42ac46 100644

Lines of this file are not shown. View the raw message.

drivers/pinctrl/stm32/pinctrl-stm32.c +2 -2
index 68b3886f9f0f..dfd8888a222a 100644

Lines of this file are not shown. View the raw message.

drivers/platform/x86/intel_scu_ipc.c +2 -2
index 25b98b12439f..121037d0a933 100644

Lines of this file are not shown. View the raw message.

drivers/ptp/ptp_clock.c +11 -4
index 4dfc52e06704..7fd02aabd79a 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/hosts.c +2 -1
index 3f6f14f0cafb..24b72ee4246f 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/mpi3mr/mpi3mr_os.c +1 -1
index 24ac7ddec749..206c2598ade3 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/qla2xxx/qla_bsg.c +1 -1
index d42b2ad84049..2304f54fdc93 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/scsi_transport_iscsi.c +0 -2
index 922e4c7bd88e..78343d3f9385 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/storvsc_drv.c +23 -9
index 37506b3fe5a9..5fa1120a87f7 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-mux.c +7 -0
index 9708b7827ff7..f5d32ec4634e 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi.c +11 -16
index f95f7666cb5b..3093e0041158 100644

Lines of this file are not shown. View the raw message.

drivers/thunderbolt/Makefile +1 -0
index da19d7987d00..78fd365893c1 100644

Lines of this file are not shown. View the raw message.

fs/autofs/waitq.c +1 -1
index 16b5fca0626e..54c1f8b8b075 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/tree-log.c +29 -18

47 lines not on this page · raw message

fs/ceph/caps.c +3 -9
index 3296a93be907..9290f97446c2 100644

Lines of this file are not shown. View the raw message.

fs/ceph/file.c +0 -1
index 3daebfaec8c6..8a50a74c8017 100644

Lines of this file are not shown. View the raw message.

fs/ceph/inode.c +0 -2
index 1bd2cc015913..4648a4b5d9c5 100644

Lines of this file are not shown. View the raw message.

fs/ceph/mds_client.c +5 -12
index 52b3ddc5f199..363f4f66b048 100644

Lines of this file are not shown. View the raw message.

fs/ceph/super.c +14 -3
index 9b1b7f4cfdd4..fd8742bae847 100644

Lines of this file are not shown. View the raw message.

fs/ceph/super.h +0 -3
index 2200ed76b123..3f96d2ff91ef 100644

Lines of this file are not shown. View the raw message.

fs/kernel_read_file.c +1 -1
index 87aac4c72c37..1b07550485b9 100644

Lines of this file are not shown. View the raw message.

fs/nfsd/nfsctl.c +4 -1
index 09ae1a0873d0..070e5dd03e26 100644

Lines of this file are not shown. View the raw message.

fs/ocfs2/alloc.c +12 -34

46 lines not on this page · raw message

fs/ocfs2/super.c +10 -4
index c86bd4e60e20..5c914ce9b3ac 100644

Lines of this file are not shown. View the raw message.

fs/userfaultfd.c +9 -3
index c830cc4ea60f..a87af3333739 100644

Lines of this file are not shown. View the raw message.

include/linux/elfcore.h +1 -1
index 2aaa15779d50..957ebec35aad 100644

Lines of this file are not shown. View the raw message.

include/linux/mlx5/driver.h +0 -1
index 25a8be58d289..9b8add8eac0c 100644

Lines of this file are not shown. View the raw message.

include/linux/secretmem.h +1 -1
index 21c3771e6a56..988528b5da43 100644

Lines of this file are not shown. View the raw message.

include/linux/spi/spi.h +3 -0
index 97b8d12b5f2b..5d80c6fd2a22 100644

Lines of this file are not shown. View the raw message.

include/linux/trace_recursion.h +9 -40

49 lines not on this page · raw message

include/linux/user_namespace.h +2 -0
index eb70cabe6e7f..33a4240e6a6f 100644

Lines of this file are not shown. View the raw message.

include/net/sctp/sm.h +3 -3
index 2eb6d7c2c931..f37c7a558d6d 100644

Lines of this file are not shown. View the raw message.

include/sound/hda_codec.h +1 -0
index 2e8d51937acd..47d2cad21b56 100644

Lines of this file are not shown. View the raw message.

kernel/auditsc.c +1 -1
index 8dd73a64f921..b1cb1dbf7417 100644

Lines of this file are not shown. View the raw message.

kernel/cred.c +4 -5
index f784e08c2fbd..1ae0b4948a5a 100644

Lines of this file are not shown. View the raw message.

kernel/dma/debug.c +6 -6
index 70519f67556f..fad3c77c1da1 100644

Lines of this file are not shown. View the raw message.

kernel/sched/core.c +1 -0
index 399c37c95392..e165d28cf73b 100644

Lines of this file are not shown. View the raw message.

kernel/signal.c +6 -19
index a3229add4455..13d2505a14a0 100644

Lines of this file are not shown. View the raw message.

kernel/trace/ftrace.c +2 -2
index 7b180f61e6d3..06700d5b1171 100644

Lines of this file are not shown. View the raw message.

kernel/ucount.c +49 -0

49 lines not on this page · raw message

lib/Makefile +1 -1
index 5efd1b435a37..a841be5244ac 100644

Lines of this file are not shown. View the raw message.

lib/kunit/executor_test.c +2 -2
index cdbe54b16501..e14a18af573d 100644

Lines of this file are not shown. View the raw message.

mm/huge_memory.c +4 -2
index afff3ac87067..163c2da2a654 100644

Lines of this file are not shown. View the raw message.

mm/mempolicy.c +5 -11
index 54f6eaff18c5..aeebe8d11ad1 100644

Lines of this file are not shown. View the raw message.

mm/slub.c +17 -6
index f77d8cd79ef7..1d2587d9dbfd 100644

Lines of this file are not shown. View the raw message.

net/bpf/test_run.c +9 -5
index caa16bf30fb5..a63f1cc8568b 100644

Lines of this file are not shown. View the raw message.

net/bridge/br_private.h +1 -3
index 2b48b204205e..7d3155283af9 100644

Lines of this file are not shown. View the raw message.

net/can/isotp.c +36 -15

51 lines not on this page · raw message

net/can/j1939/j1939-priv.h +1 -0
index 12369b604ce9..cea712fb2a9e 100644

Lines of this file are not shown. View the raw message.

net/can/j1939/main.c +5 -2
index 08c8606cfd9c..9bc55ecb37f9 100644

Lines of this file are not shown. View the raw message.

net/can/j1939/transport.c +9 -5
index bdc95bd7a851..e59fbbffa31c 100644

Lines of this file are not shown. View the raw message.

net/dsa/dsa2.c +7 -2
index 76ed5ef0e36a..28326ca34b52 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_ipv4.c +16 -3
index db07c05736b2..609d7048d04d 100644

Lines of this file are not shown. View the raw message.

net/ipv6/ip6_output.c +2 -1
index 8e6ca9ad6812..80b1a7838cff 100644

Lines of this file are not shown. View the raw message.

net/ipv6/netfilter/ip6t_rt.c +6 -42

48 lines not on this page · raw message

net/netfilter/Kconfig +1 -1
index 54395266339d..92a747896f80 100644

Lines of this file are not shown. View the raw message.

net/netfilter/ipvs/ip_vs_ctl.c +5 -0
index c25097092a06..29ec3ef63edc 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nft_chain_filter.c +3 -6
index 5b02408a920b..3ced0eb6b7c3 100644

Lines of this file are not shown. View the raw message.

net/netfilter/xt_IDLETIMER.c +1 -1
index 7b2f359bfce4..2f7cf5ecebf4 100644

Lines of this file are not shown. View the raw message.

net/nfc/nci/rsp.c +2 -0
index e9605922a322..49cbc44e075d 100644

Lines of this file are not shown. View the raw message.

net/sched/act_ct.c +1 -1
index 1b4b3514c94f..07f4dce7b535 100644

Lines of this file are not shown. View the raw message.

scripts/Makefile.gcc-plugins +4 -0
index 952e46876329..4aad28480035 100644

Lines of this file are not shown. View the raw message.

security/keys/process_keys.c +8 -0
index e3d79a7b6db6..b5d5333ab330 100644

Lines of this file are not shown. View the raw message.

sound/hda/hdac_controller.c +3 -2
index 062da7a7a586..f7bd6e2db085 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/hda_bind.c +11 -9
index e8dee24c309d..50a58fb5ad9c 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/hda_codec.c +1 -0
index 7a717e151156..8afcce6478cd 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/hda_controller.c +16 -8
index ca2f2ecd1488..5a49ee4f6ce0 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/hda_controller.h +1 -1
index 68f9668788ea..324cba13c7ba 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/hda_intel.c +23 -6
index 0062c18b646a..89f135a6a1f6 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/hda_intel.h +3 -1
index 3fb119f09040..0f39418f9328 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/patch_realtek.c +1 -0
index 8e6ff50f0f94..b30e1843273b 100644

Lines of this file are not shown. View the raw message.

sound/soc/codecs/Kconfig +1 -0
index db16071205ba..dd1ae611fc2a 100644

Lines of this file are not shown. View the raw message.

sound/soc/codecs/cs4341.c +7 -0
index 7d3e54d8eef3..29d05e32d341 100644

Lines of this file are not shown. View the raw message.

sound/soc/codecs/nau8824.c +2 -2
index db88be48c998..f946ef65a4c1 100644

Lines of this file are not shown. View the raw message.

sound/soc/codecs/pcm179x-spi.c +1 -0
index 0a542924ec5f..ebf63ea90a1c 100644

Lines of this file are not shown. View the raw message.

sound/soc/codecs/pcm512x.c +2 -0
index 4dc844f3c1fc..60dee41816dc 100644

Lines of this file are not shown. View the raw message.

sound/soc/codecs/wm8960.c +10 -3
index 9e621a254392..499604f1e178 100644

Lines of this file are not shown. View the raw message.

sound/soc/fsl/fsl_xcvr.c +12 -5
index 477d16713e72..a9b6c2b0c871 100644

Lines of this file are not shown. View the raw message.

sound/soc/soc-dapm.c +8 -5
index 91bf939d5233..8477071141e2 100644

Lines of this file are not shown. View the raw message.

sound/usb/quirks-table.h +32 -0
index 147b831e1a82..91d40b4c851c 100644

Lines of this file are not shown. View the raw message.

tools/lib/perf/tests/test-evlist.c +3 -3
index c67c83399170..ce91a582f0e4 100644

Lines of this file are not shown. View the raw message.

tools/lib/perf/tests/test-evsel.c +4 -3
index a184e4861627..33ae9334861a 100644

Lines of this file are not shown. View the raw message.

tools/objtool/elf.c +25 -31

56 lines not on this page · raw message

tools/testing/selftests/net/forwarding/Makefile +1 -0
index d97bd6889446..72ee644d47bf 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/net/forwarding/forwarding.config.sample +2 -0
index b802c14d2950..e5e2fbeca22e 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/net/forwarding/ip6_forward_instats_vrf.sh new file +172 -0

172 lines not on this page · raw message

tools/testing/selftests/net/forwarding/lib.sh +8 -0
index 42e28c983d41..5140980f5475 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/netfilter/nft_flowtable.sh +0 -1
index 427d94816f2d..d4ffebb989f8 100755

Lines of this file are not shown. View the raw message.

tools/testing/selftests/vm/userfaultfd.c +20 -3
index 2ea438e6b8b1..a7e512a81d82 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.14.15 kernel.

All users of the 5.14 kernel series must upgrade.

The updated 5.14.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.14.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

------------

 Documentation/networking/devlink/ice.rst                          |    9 
 Makefile                                                          |    2 
 arch/arm/Kconfig                                                  |    1 
 arch/arm/boot/dts/at91-sama5d27_som1_ek.dts                       |    1 
 arch/arm/boot/dts/spear3xx.dtsi                                   |    2 
 arch/arm/boot/dts/vexpress-v2m.dtsi                               |    2 
 arch/arm/boot/dts/vexpress-v2p-ca9.dts                            |    2 
 arch/arm64/kvm/hyp/include/nvhe/gfp.h                             |    1 
 arch/arm64/kvm/hyp/nvhe/mem_protect.c                             |   13 
 arch/arm64/kvm/hyp/nvhe/page_alloc.c                              |   14 
 arch/arm64/kvm/mmu.c                                              |    6 
 arch/nios2/include/asm/irqflags.h                                 |    4 
 arch/nios2/include/asm/registers.h                                |    2 
 arch/parisc/math-emu/fpudispatch.c                                |   56 +++
 arch/powerpc/include/asm/code-patching.h                          |    1 
 arch/powerpc/include/asm/security_features.h                      |    5 
 arch/powerpc/kernel/idle_book3s.S                                 |   10 
 arch/powerpc/kernel/security.c                                    |    5 
 arch/powerpc/kernel/smp.c                                         |    2 
 arch/powerpc/kvm/book3s_hv_rmhandlers.S                           |   28 -
 arch/powerpc/lib/code-patching.c                                  |    7 
 arch/powerpc/net/bpf_jit.h                                        |   33 +
 arch/powerpc/net/bpf_jit64.h                                      |    8 
 arch/powerpc/net/bpf_jit_comp.c                                   |    6 
 arch/powerpc/net/bpf_jit_comp32.c                                 |    8 
 arch/powerpc/net/bpf_jit_comp64.c                                 |   63 +++
 arch/s390/include/asm/pci.h                                       |    2 
 arch/s390/pci/pci.c                                               |   48 ++
 arch/s390/pci/pci_event.c                                         |    4 
 arch/sh/include/asm/pgtable-3level.h                              |    2 
 arch/x86/events/msr.c                                             |    1 
 arch/x86/include/asm/kvm_host.h                                   |    3 
 arch/x86/kvm/mmu/mmu.c                                            |    6 
 arch/x86/kvm/svm/sev.c                                            |   16 
 arch/x86/kvm/svm/svm.h                                            |    2 
 arch/x86/kvm/vmx/vmx.c                                            |   17 
 arch/x86/kvm/x86.c                                                |  150 +++++---
 arch/x86/xen/enlighten.c                                          |    9 
 arch/xtensa/platforms/xtfpga/setup.c                              |   12 
 block/blk-cgroup.c                                                |    5 
 block/blk-mq-debugfs.c                                            |    1 
 block/mq-deadline.c                                               |   12 
 drivers/base/test/Makefile                                        |    2 
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c                        |    8 
 drivers/gpu/drm/amd/display/Kconfig                               |    2 
 drivers/gpu/drm/kmb/kmb_crtc.c                                    |   41 ++
 drivers/gpu/drm/kmb/kmb_drv.c                                     |   10 
 drivers/gpu/drm/kmb/kmb_drv.h                                     |   13 
 drivers/gpu/drm/kmb/kmb_dsi.c                                     |   25 -
 drivers/gpu/drm/kmb/kmb_dsi.h                                     |    2 
 drivers/gpu/drm/kmb/kmb_plane.c                                   |  122 ++++++-
 drivers/gpu/drm/kmb/kmb_plane.h                                   |   11 
 drivers/gpu/drm/kmb/kmb_regs.h                                    |    3 
 drivers/gpu/drm/msm/adreno/a6xx_gmu.c                             |    6 
 drivers/gpu/drm/msm/adreno/a6xx_gmu.h                             |    3 
 drivers/gpu/drm/msm/adreno/a6xx_gpu.c                             |   40 +-
 drivers/gpu/drm/mxsfb/mxsfb_drv.c                                 |    6 
 drivers/gpu/drm/panel/panel-ilitek-ili9881c.c                     |   12 
 drivers/iio/test/Makefile                                         |    1 
 drivers/input/keyboard/snvs_pwrkey.c                              |   29 +
 drivers/isdn/capi/kcapi.c                                         |    5 
 drivers/isdn/hardware/mISDN/netjet.c                              |    2 
 drivers/net/can/rcar/rcar_can.c                                   |   20 -
 drivers/net/can/sja1000/peak_pci.c                                |    9 
 drivers/net/can/usb/peak_usb/pcan_usb_fd.c                        |    5 
 drivers/net/dsa/lantiq_gswip.c                                    |    2 
 drivers/net/dsa/mt7530.c                                          |    8 
 drivers/net/ethernet/freescale/enetc/enetc_ethtool.c              |    2 
 drivers/net/ethernet/freescale/enetc/enetc_pf.c                   |    5 
 drivers/net/ethernet/hisilicon/hns3/hnae3.c                       |   21 +
 drivers/net/ethernet/hisilicon/hns3/hnae3.h                       |    1 
 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c                   |   37 +-
 drivers/net/ethernet/hisilicon/hns3/hns3_enet.h                   |    7 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_dcb.c            |    9 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c            |    5 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.h            |    2 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c           |    1 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c             |    2 
 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c         |    6 
 drivers/net/ethernet/intel/e1000e/e1000.h                         |    4 
 drivers/net/ethernet/intel/e1000e/ich8lan.c                       |   31 +
 drivers/net/ethernet/intel/e1000e/ich8lan.h                       |    3 
 drivers/net/ethernet/intel/e1000e/netdev.c                        |   29 -
 drivers/net/ethernet/intel/ice/ice_common.c                       |    2 
 drivers/net/ethernet/intel/ice/ice_devids.h                       |    4 
 drivers/net/ethernet/intel/ice/ice_devlink.c                      |    3 
 drivers/net/ethernet/intel/ice/ice_flex_pipe.c                    |    4 
 drivers/net/ethernet/intel/ice/ice_lib.c                          |    9 
 drivers/net/ethernet/intel/ice/ice_main.c                         |    8 
 drivers/net/ethernet/intel/ice/ice_sched.c                        |   13 
 drivers/net/ethernet/intel/ice/ice_sched.h                        |    1 
 drivers/net/ethernet/intel/igc/igc_hw.h                           |    2 
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c               |    2 
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_rxtx.c     |   51 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c                   |    2 
 drivers/net/ethernet/mellanox/mlx5/core/en_tx.c                   |   20 -
 drivers/net/ethernet/mellanox/mlx5/core/lag.c                     |   19 -
 drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c                  |   13 
 drivers/net/ethernet/mellanox/mlx5/core/lag_mp.h                  |    2 
 drivers/net/ethernet/stmicro/stmmac/dwmac-generic.c               |    1 
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c                 |    2 
 drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c             |    8 
 drivers/net/hamradio/baycom_epp.c                                 |    6 
 drivers/net/phy/mdio_bus.c                                        |    1 
 drivers/net/usb/Kconfig                                           |    1 
 drivers/net/usb/r8152.c                                           |   16 
 drivers/pci/hotplug/s390_pci_hpc.c                                |    9 
 drivers/pinctrl/stm32/pinctrl-stm32.c                             |    4 
 drivers/platform/x86/intel_scu_ipc.c                              |    4 
 drivers/ptp/ptp_clock.c                                           |   15 
 drivers/scsi/hosts.c                                              |    3 
 drivers/scsi/mpi3mr/mpi3mr_os.c                                   |    2 
 drivers/scsi/qla2xxx/qla_bsg.c                                    |    2 
 drivers/scsi/scsi_transport_iscsi.c                               |    2 
 drivers/scsi/storvsc_drv.c                                        |   32 +
 drivers/spi/spi-mux.c                                             |    7 
 drivers/spi/spi.c                                                 |   27 -
 drivers/thunderbolt/Makefile                                      |    1 
 fs/autofs/waitq.c                                                 |    2 
 fs/btrfs/tree-log.c                                               |   47 +-
 fs/ceph/caps.c                                                    |   12 
 fs/ceph/file.c                                                    |    1 
 fs/ceph/inode.c                                                   |    2 
 fs/ceph/mds_client.c                                              |   17 
 fs/ceph/super.c                                                   |   17 
 fs/ceph/super.h                                                   |    3 
 fs/kernel_read_file.c                                             |    2 
 fs/nfsd/nfsctl.c                                                  |    5 
 fs/ocfs2/alloc.c                                                  |   46 --
 fs/ocfs2/super.c                                                  |   14 
 fs/userfaultfd.c                                                  |   12 
 include/linux/elfcore.h                                           |    2 
 include/linux/mlx5/driver.h                                       |    1 
 include/linux/secretmem.h                                         |    2 
 include/linux/spi/spi.h                                           |    3 
 include/linux/trace_recursion.h                                   |   49 --
 include/linux/user_namespace.h                                    |    2 
 include/net/sctp/sm.h                                             |    6 
 include/sound/hda_codec.h                                         |    1 
 kernel/auditsc.c                                                  |    2 
 kernel/cred.c                                                     |    9 
 kernel/dma/debug.c                                                |   12 
 kernel/sched/core.c                                               |    1 
 kernel/signal.c                                                   |   25 -
 kernel/trace/ftrace.c                                             |    4 
 kernel/ucount.c                                                   |   49 ++
 lib/Makefile                                                      |    2 
 lib/kunit/executor_test.c                                         |    4 
 mm/huge_memory.c                                                  |    6 
 mm/mempolicy.c                                                    |   16 
 mm/slub.c                                                         |   23 -
 net/bpf/test_run.c                                                |   14 
 net/bridge/br_private.h                                           |    4 
 net/can/isotp.c                                                   |   51 ++
 net/can/j1939/j1939-priv.h                                        |    1 
 net/can/j1939/main.c                                              |    7 
 net/can/j1939/transport.c                                         |   14 
 net/dsa/dsa2.c                                                    |    9 
 net/ipv4/tcp_ipv4.c                                               |   19 -
 net/ipv6/ip6_output.c                                             |    3 
 net/ipv6/netfilter/ip6t_rt.c                                      |   48 --
 net/netfilter/Kconfig                                             |    2 
 net/netfilter/ipvs/ip_vs_ctl.c                                    |    5 
 net/netfilter/nft_chain_filter.c                                  |    9 
 net/netfilter/xt_IDLETIMER.c                                      |    2 
 net/nfc/nci/rsp.c                                                 |    2 
 net/sched/act_ct.c                                                |    2 
 scripts/Makefile.gcc-plugins                                      |    4 
 security/keys/process_keys.c                                      |    8 
 sound/hda/hdac_controller.c                                       |    5 
 sound/pci/hda/hda_bind.c                                          |   20 -
 sound/pci/hda/hda_codec.c                                         |    1 
 sound/pci/hda/hda_controller.c                                    |   24 -
 sound/pci/hda/hda_controller.h                                    |    2 
 sound/pci/hda/hda_intel.c                                         |   29 +
 sound/pci/hda/hda_intel.h                                         |    4 
 sound/pci/hda/patch_realtek.c                                     |    1 
 sound/soc/codecs/Kconfig                                          |    1 
 sound/soc/codecs/cs4341.c                                         |    7 
 sound/soc/codecs/nau8824.c                                        |    4 
 sound/soc/codecs/pcm179x-spi.c                                    |    1 
 sound/soc/codecs/pcm512x.c                                        |    2 
 sound/soc/codecs/wm8960.c                                         |   13 
 sound/soc/fsl/fsl_xcvr.c                                          |   17 
 sound/soc/soc-dapm.c                                              |   13 
 sound/usb/quirks-table.h                                          |   32 +
 tools/lib/perf/tests/test-evlist.c                                |    6 
 tools/lib/perf/tests/test-evsel.c                                 |    7 
 tools/objtool/elf.c                                               |   56 +--
 tools/testing/selftests/net/forwarding/Makefile                   |    1 
 tools/testing/selftests/net/forwarding/forwarding.config.sample   |    2 
 tools/testing/selftests/net/forwarding/ip6_forward_instats_vrf.sh |  172 ++++++++++
 tools/testing/selftests/net/forwarding/lib.sh                     |    8 
 tools/testing/selftests/netfilter/nft_flowtable.sh                |    1 
 tools/testing/selftests/vm/userfaultfd.c                          |   23 +
 195 files changed, 1756 insertions(+), 730 deletions(-)

Aleksander Jan Bajkowski (1):
net: dsa: lantiq_gswip: fix register definition

Alex Deucher (1):
drm/amdgpu/display: fix dependencies for DRM_AMD_DC_SI

Andrea Parri (Microsoft) (1):
scsi: storvsc: Fix validation for unsolicited incoming packets

Anitha Chrisanthus (4):
drm/kmb: Work around for higher system clock drm/kmb: Corrected typo in handle_lcd_irq drm/kmb: Enable ADV bridge after modeset drm/kmb: Limit supported mode to 1080p

Antoine Tenart (1):
netfilter: ipvs: make global sysctl readonly in non-init netns

Arnd Bergmann (1):
bitfield: build kunit tests without structleak plugin

Benjamin Coddington (1):
NFSD: Keep existing listeners on portlist error

Brendan Grieve (1):
ALSA: usb-audio: Provide quirk for Sennheiser GSP670 Headset

Brendan Higgins (4):
gcc-plugins/structleak: add makefile var for disabling structleak iio/test-format: build kunit tests without structleak plugin device property: build kunit tests without structleak plugin
thunderbolt: build kunit tests without structleak plugin

Brett Creeley (2):
ice: Fix failure to re-add LAN/RDMA Tx queues
ice: Print the api_patch as part of the fw.mgmt.api

Chenyi Qiang (1):

      KVM: MMU: Reset mmu->pkru_mask to avoid stale data

Christophe JAILLET (1):
net: dsa: Fix an error handling path in 'dsa_switch_parse_ports_of()'

DENG Qingfang (1):

      net: dsa: mt7530: correct ds->num_ports

Dan Johansen (1):
drm/panel: ilitek-ili9881c: Fix sync for Feixin K101-IM2BYL02 panel

Daniel Borkmann (1):
bpf, test, cgroup: Use sk_{alloc,free} for test cases

Dave Ertman (1):
ice: Avoid crash from unnecessary IDA free

Dexuan Cui (1):

      scsi: core: Fix shost->cmd_per_lun calculation in scsi_add_host_with_dma()

Edmund Dea (3):
drm/kmb: Remove clearing DPHY regs
drm/kmb: Disable change of plane parameters
drm/kmb: Enable alpha blended second plane

Emeel Hakim (2):
net/mlx5e: IPsec: Fix a misuse of the software parser's fields net/mlx5e: IPsec: Fix work queue entry ethernet segment checksum flags

Eric Dumazet (1):
mm/mempolicy: do not allow illegal MPOL_F_NUMA_BALANCING | MPOL_LOCAL in mbind()

Eric W. Biederman (4):
ucounts: Move get_ucounts from cred_alloc_blank to key_change_session_keyring
ucounts: Pair inc_rlimit_ucounts with dec_rlimit_ucoutns in commit_creds
ucounts: Proper error handling in set_cred_ucounts
ucounts: Fix signal ucount refcounting

Eugen Hristev (1):
ARM: dts: at91: sama5d2_som1_ek: disable ISC node by default

Fabien Dessenne (1):
pinctrl: stm32: use valid pin identifier in stm32_pinctrl_resume()

Filipe Manana (1):
btrfs: deal with errors when checking if a dir entry exists during log replay

Florian Westphal (2):
netfilter: nf_tables: skip netdev events generated on netns removal
selftests: netfilter: remove stray bash debug line

Gaosheng Cui (1):
audit: fix possible null-pointer dereference in audit_filter_rules

Geert Uytterhoeven (2):
block/mq-deadline: Move dd_queued() to fix defined but not used warning
sh: pgtable-3level: fix cast to pointer from integer of different size

Gerald Schaefer (1):
dma-debug: fix sg checks in debug_dma_map_sg()

Greg Kroah-Hartman (1):

      Linux 5.14.15

Guangbin Huang (2):
net: hns3: reset DWRR of unused tc to zero
net: hns3: add limit ets dwrr bandwidth cannot be 0

Guenter Roeck (1):
xtensa: xtfpga: Try software restart before simulating CPU reset

Hans de Goede (1):
ASoC: nau8824: Fix headphone vs headset, button-press detection no longer working

Hayes Wang (1):
r8152: avoid to resubmit rx immediately

Helge Deller (1):
parisc: math-emu: Fix fall-through warnings

Herve Codina (2):
net: stmmac: add support for dwmac 3.40a
ARM: dts: spear3xx: Fix gmac node

Ian Kent (1):
autofs: fix wait name hash calculation in autofs_wait()

Jan Beulich (1):
xen/x86: prevent PVH type from getting clobbered

Jan Kara (1):
ocfs2: fix data corruption after conversion from inline format

Jeff Layton (2):
ceph: skip existing superblocks that are blocklisted or shut down when mounting
ceph: fix handling of "meta" errors

Jiaran Zhang (1):
net: hns3: Add configuration of TM QCN error event

Johannes Thumshirn (1):
block: decode QUEUE_FLAG_HCTX_ACTIVE in debugfs output

Joy Gu (1):
scsi: qla2xxx: Fix a memory leak in an error path of qla2x00_process_els()

Juhee Kang (1):
netfilter: xt_IDLETIMER: fix panic that occurs when timer_type has garbage value

Kai Vehmanen (1):
ALSA: hda: avoid write to STATESTS if controller is in reset

Kan Liang (1):
perf/x86/msr: Add Sapphire Rapids CPU support

Kurt Kanzenbach (1):
net: stmmac: Fix E2E delay mechanism

Leonard Crestez (1):
tcp: md5: Fix overlap between vrf and non-vrf keys

Lin Ma (1):
nfc: nci: fix the UAF of rf_conn_info object

Lukas Bulwahn (1):
elfcore: correct reference to CONFIG_UML

Maor Dickman (1):
net/mlx5: Lag, change multipath and bonding to be mutually exclusive

Marc Kleine-Budde (1):
can: isotp: isotp_sendmsg(): fix return error on FC timeout on TX path

Marek Szyprowski (1):
mm/thp: decrease nr_thps in file's mapping on THP split

Marek Vasut (1):
drm: mxsfb: Fix NULL pointer dereference crash on unload

Mark Bloch (1):
net/mlx5: Lag, move lag destruction to a workqueue

Mark Brown (3):
ASoC: pcm179x: Add missing entries SPI to device ID table
ASoC: cs4341: Add SPI device ID table
spi: Fix deadlock when adding SPI controllers on SPI buses

Masahiro Kozuka (1):
KVM: SEV: Flush cache on non-coherent systems before RECEIVE_UPDATE_DATA

Matthew Wilcox (Oracle) (1):
vfs: check fd has read access in kernel_read_file_from_fd()

Max Filippov (1):
xtensa: xtfpga: use CONFIG_USE_OF instead of CONFIG_OF

Miaohe Lin (4):
mm, slub: fix mismatch between reconstructed freelist depth and cnt mm, slub: fix potential memoryleak in kmem_cache_open() mm, slub: fix potential use-after-free in slab_debugfs_fops mm, slub: fix incorrect memcg slab count for bulk free

Michael Ellerman (3):
KVM: PPC: Book3S HV: Fix stack handling in idle_kvm_start_guest()
KVM: PPC: Book3S HV: Make idle_kvm_start_guest() return 0 if it went to guest powerpc/idle: Don't corrupt back chain when going idle

Michael Forney (2):
objtool: Check for gelf_update_rel[a] failures
objtool: Update section header before relocations

Michal Swiatkowski (1):
ice: fix getting UDP tunnel entry

Mike Christie (1):
scsi: iscsi: Fix set_param() handling

Nadav Amit (1):
userfaultfd: fix a race between writeprotect and exit_mmap()

Nathan Lynch (1):
powerpc/smp: do not decrement idle task preempt count in CPU offline

Naveen N. Rao (4):
powerpc/lib: Add helper to check if offset is within conditional branch range powerpc/bpf: Validate branch ranges
powerpc/security: Add a helper to query stf_barrier type powerpc/bpf: Emit stf barrier instruction sequences for BPF_NOSPEC

Nick Desaulniers (1):

      ARM: 9122/1: select HAVE_FUTEX_CMPXCHG

Niklas Schnelle (2):
s390/pci: cleanup resources only if necessary s390/pci: fix zpci_zdev_put() on reserve

Nikolay Aleksandrov (1):
net: bridge: mcast: use multicast_membership_interval for IGMPv3

Paolo Bonzini (11):
KVM: nVMX: promptly process interrupts delivered while in guest mode
KVM: SEV-ES: rename guest_ins_data to sev_pio_data
KVM: SEV-ES: clean up kvm_sev_es_ins/outs
KVM: SEV-ES: keep INS functions together
KVM: SEV-ES: fix length of string I/O
KVM: SEV-ES: go over the sev_pio_data buffer in multiple passes if needed
KVM: SEV-ES: reduce ghcb_sa_len to 32 bits
KVM: x86: leave vcpu->arch.pio.count alone in emulator_pio_in_out
KVM: x86: check for interrupts before deciding whether to exit the fast path
KVM: x86: split the two parts of emulator_pio_in
KVM: x86: remove unnecessary arguments from complete_emulator_pio_in

Paul Blakey (1):
net/sched: act_ct: Fix byte count on fragmented packets

Peng Li (1):
net: hns3: disable sriov before unload hclge layer

Peter Gonda (1):
KVM: SEV-ES: Set guest_state_protected after VMSA update

Peter Rosin (1):
ASoC: pcm512x: Mend accesses to the I2S_1 and I2S_2 registers

Peter Xu (1):
mm/userfaultfd: selftests: fix memory corruption with thp enabled

Prashant Malani (2):
platform/x86: intel_scu_ipc: Increase virtual timeout to 10s platform/x86: intel_scu_ipc: Update timeout value in comment

Quentin Perret (2):
KVM: arm64: Fix host stage-2 PGD refcount
KVM: arm64: Release mmap_lock when using VM_SHARED with MTE

Randy Dunlap (2):
hamradio: baycom_epp: fix build for UML
NIOS2: irqflags: rename a redefined register name

Rob Clark (1):
drm/msm/a6xx: Serialize GMU communication

Rob Herring (1):
arm: dts: vexpress-v2p-ca9: Fix the SMB unit-address

Sasha Neftin (3):
e1000e: Fix packet loss on Tiger Lake and later
igc: Update I226_K device ID
e1000e: Separate TGP board type from SPT

Sean Christopherson (1):

      mm/secretmem: fix NULL page->mapping dereference in page_is_secretmem()

Shengjiu Wang (2):
ASoC: fsl_xcvr: Fix channel swap issue with ARC
ASoC: wm8960: Fix clock configuration on slave mode

Shunsuke Nakamura (2):
libperf test evsel: Fix build error on !x86 architectures libperf tests: Fix test_stat_cpu

Sreekanth Reddy (1):
scsi: mpi3mr: Fix duplicate device entries when scanning through sysfs

Srinivasa Rao Mandadapu (1):
ASoC: codec: wcd938x: Add irq config support

Stephane Grosjean (1):
can: peak_usb: pcan_usb_fd_decode_status(): fix back to ERROR_ACTIVE state notification

Stephen Suryaputra (1):
ipv6: When forwarding count rx stats on the orig netdev

Steven Clarkson (1):
ALSA: hda/realtek: Add quirk for Clevo PC50HS

Steven Rostedt (VMware) (1):
tracing: Have all levels of checks prevent recursion

Takashi Iwai (2):
ASoC: DAPM: Fix missing kctl change notifications
ALSA: hda: intel: Allow repeatedly probing on codec configuration errors

Tejun Heo (1):

      blk-cgroup: blk_cgroup_bio_start() should use irq-safe operations on blkg->iostat_cpu

Tony Nguyen (1):
ice: Add missing E810 device ids

Uwe Kleine-König (2):
spi-mux: Fix false-positive lockdep splats
Input: snvs_pwrkey - add clk handling

Valentin Vidic (1):
ocfs2: mount fails with buffer overflow in strlen

Vegard Nossum (2):
lan78xx: select CRC32
netfilter: Kconfig: use 'default y' instead of 'm' for bool config option

Vladimir Oltean (2):
net: enetc: fix ethtool counter name for PM0_TERR
net: enetc: make sure all traffic classes can send large frames

Woody Lin (1):
sched/scs: Reset the shadow stack when idle_task_exit

Xiaolong Huang (1):

      isdn: cpai: check ctr->cnr to avoid array index out of bound

Xin Long (2):
netfilter: ip6t_rt: fix rt0_hdr parsing in rt_mt6
sctp: fix transport encap_port update in sctp_vtag_verify

Xiyu Yang (1):
kunit: fix reference count leak in kfree_at_end

Yanfei Xu (1):
net: mdiobus: Fix memory leak in __mdiobus_register

Yang Yingliang (1):
ptp: Fix possible memory leak in ptp_clock_register()

Yifan Zhang (1):
drm/amdgpu: init iommu after amdkfd device init

Yoshihiro Shimoda (1):
can: rcar_can: fix suspend/resume

Yufeng Mo (1):
net: hns3: fix vf reset workqueue cannot exit

Yunsheng Lin (3):
net: hns3: schedule the polling again when allocation fails
net: hns3: fix the max tx size according to user manual
net: hns3: fix for miscalculation of rx unused desc

Zhang Changzhong (2):
can: j1939: j1939_xtp_rx_dat_one(): cancel session if receive TP.DT with error length
can: j1939: j1939_xtp_rx_rts_session_new(): abort TP less than 9 bytes

Zheyu Ma (2):
can: peak_pci: peak_pci_remove(): fix UAF
isdn: mISDN: Fix sleeping function called from invalid context

Ziyang Xuan (4):
can: isotp: isotp_sendmsg(): add result check for wait_event_interruptible()
can: isotp: isotp_sendmsg(): fix TX buffer concurrent access in isotp_sendmsg()
can: j1939: j1939_tp_rxtimer(): fix errant alert in j1939_tp_rxtimer
can: j1939: j1939_netdev_start(): fix UAF for rx_kref of j1939_priv