Skip to contentSkip to conversation

Linux 5.15.91

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Feb 1, 2023 Stable branch

lore
Share & tools
lore
author maintainer
#1 lore raw
In reply to Greg Kroah-Hartman
Documentation/ABI/testing/sysfs-kernel-oops_count new file +6 -0
new file mode 100644
index 000000000000..156cca9dbc96
@@ -0,0 +1,6 @@
+What:		/sys/kernel/oops_count
+Date:		November 2022
+KernelVersion:	6.2.0
+Contact:	Linux Kernel Hardening List <[email protected]>
+Description:
+		Shows how many times the system has Oopsed since last boot.
Documentation/ABI/testing/sysfs-kernel-warn_count new file +6 -0
new file mode 100644
index 000000000000..90a029813717
@@ -0,0 +1,6 @@
+What:		/sys/kernel/warn_count
+Date:		November 2022
+KernelVersion:	6.2.0
+Contact:	Linux Kernel Hardening List <[email protected]>
+Description:
+		Shows how many times the system has Warned since last boot.
Documentation/admin-guide/sysctl/kernel.rst +19 -0
index 609b89175408..48b91c485c99 100644
@@ -671,6 +671,15 @@ This is the default behavior.
 an oops event is detected.
 
 
+oops_limit
+==========
+
+Number of kernel oopses after which the kernel should panic when
+``panic_on_oops`` is not set. Setting this to 0 disables checking
+the count. Setting this to  1 has the same effect as setting
+``panic_on_oops=1``. The default value is 10000.
+
+
 osrelease, ostype & version
 ===========================
 
@@ -1485,6 +1494,16 @@ entry will default to 2 instead of 0.
 2 Unprivileged calls to ``bpf()`` are disabled
 = =============================================================
 
+
+warn_limit
+==========
+
+Number of kernel warnings after which the kernel should panic when
+``panic_on_warn`` is not set. Setting this to 0 disables checking
+the warning count. Setting this to 1 has the same effect as setting
+``panic_on_warn=1``. The default value is 0.
+
+
 watchdog
 ========
 
Makefile +3 -2
index 028d23841df8..02b2ade89c51 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 15
-SUBLEVEL = 90
+SUBLEVEL = 91
 EXTRAVERSION =
 NAME = Trick or Treat
 
@@ -430,6 +430,7 @@ else
 HOSTCC	= gcc
 HOSTCXX	= g++
 endif
+HOSTPKG_CONFIG	= pkg-config
 
 export KBUILD_USERCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
 			      -O2 -fomit-frame-pointer -std=gnu89
@@ -525,7 +526,7 @@ KBUILD_LDFLAGS_MODULE :=
 KBUILD_LDFLAGS :=
 CLANG_FLAGS :=
 
-export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC
+export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC HOSTPKG_CONFIG
 export CPP AR NM STRIP OBJCOPY OBJDUMP READELF PAHOLE RESOLVE_BTFIDS LEX YACC AWK INSTALLKERNEL
 export PERL PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX
 export KGZIP KBZIP2 KLZOP LZMA LZ4 XZ ZSTD
arch/alpha/kernel/traps.c +3 -3
index e805106409f7..f5ba12adde67 100644
@@ -192,7 +192,7 @@ die_if_kernel(char * str, struct pt_regs *regs, long err, unsigned long *r9_15)
 		local_irq_enable();
 		while (1);
 	}
-	do_exit(SIGSEGV);
+	make_task_dead(SIGSEGV);
 }
 
 #ifndef CONFIG_MATHEMU
@@ -577,7 +577,7 @@ do_entUna(void * va, unsigned long opcode, unsigned long reg,
 
 	printk("Bad unaligned kernel access at %016lx: %p %lx %lu\n",
 		pc, va, opcode, reg);
-	do_exit(SIGSEGV);
+	make_task_dead(SIGSEGV);
 
 got_exception:
 	/* Ok, we caught the exception, but we don't want it.  Is there
@@ -632,7 +632,7 @@ do_entUna(void * va, unsigned long opcode, unsigned long reg,
 		local_irq_enable();
 		while (1);
 	}
-	do_exit(SIGSEGV);
+	make_task_dead(SIGSEGV);
 }
 
 /*
arch/alpha/mm/fault.c +1 -1
index eee5102c3d88..e9193d52222e 100644
@@ -204,7 +204,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
 	printk(KERN_ALERT "Unable to handle kernel paging request at "
 	       "virtual address %016lx\n", address);
 	die_if_kernel("Oops", regs, cause, (unsigned long*)regs - 16);
-	do_exit(SIGKILL);
+	make_task_dead(SIGKILL);
 
 	/* We ran out of memory, or some other thing happened to us that
 	   made us unable to handle the page fault gracefully.  */
arch/arm/boot/dts/imx6qdl-gw560x.dtsi +0 -1
index 4bc4371e6bae..4b81a975c979 100644
@@ -632,7 +632,6 @@ &ssi1 {
 &uart1 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&pinctrl_uart1>;
-	uart-has-rtscts;
 	rts-gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>;
 	status = "okay";
 };
arch/arm/boot/dts/imx6ul-pico-dwarf.dts +1 -1
index 162dc259edc8..5a74c7f68eb6 100644
@@ -32,7 +32,7 @@ sys_mclk: clock-sys-mclk {
 };
 
 &i2c2 {
-	clock_frequency = <100000>;
+	clock-frequency = <100000>;
 	pinctrl-names = "default";
 	pinctrl-0 = <&pinctrl_i2c2>;
 	status = "okay";
arch/arm/boot/dts/imx7d-pico-dwarf.dts +2 -2
index 5162fe227d1e..fdc10563f147 100644
@@ -32,7 +32,7 @@ sys_mclk: clock-sys-mclk {
 };
 
 &i2c1 {
-	clock_frequency = <100000>;
+	clock-frequency = <100000>;
 	pinctrl-names = "default";
 	pinctrl-0 = <&pinctrl_i2c1>;
 	status = "okay";
@@ -52,7 +52,7 @@ pressure-sensor@60 {
 };
 
 &i2c4 {
-	clock_frequency = <100000>;
+	clock-frequency = <100000>;
 	pinctrl-names = "default";
 	pinctrl-0 = <&pinctrl_i2c1>;
 	status = "okay";
arch/arm/boot/dts/imx7d-pico-nymph.dts +2 -2
index 104a85254adb..5afb1674e012 100644
@@ -43,7 +43,7 @@ sys_mclk: clock-sys-mclk {
 };
 
 &i2c1 {
-	clock_frequency = <100000>;
+	clock-frequency = <100000>;
 	pinctrl-names = "default";
 	pinctrl-0 = <&pinctrl_i2c1>;
 	status = "okay";
@@ -64,7 +64,7 @@ adc@52 {
 };
 
 &i2c2 {
-	clock_frequency = <100000>;
+	clock-frequency = <100000>;
 	pinctrl-names = "default";
 	pinctrl-0 = <&pinctrl_i2c2>;
 	status = "okay";
arch/arm/boot/dts/sam9x60.dtsi +1 -1
index ec45ced3cde6..e1e0dec8cc1f 100644
@@ -567,7 +567,7 @@ pmecc: ecc-engine@ffffe000 {
 			mpddrc: mpddrc@ffffe800 {
 				compatible = "microchip,sam9x60-ddramc", "atmel,sama5d3-ddramc";
 				reg = <0xffffe800 0x200>;
-				clocks = <&pmc PMC_TYPE_SYSTEM 2>, <&pmc PMC_TYPE_CORE PMC_MCK>;
+				clocks = <&pmc PMC_TYPE_SYSTEM 2>, <&pmc PMC_TYPE_PERIPHERAL 49>;
 				clock-names = "ddrck", "mpddr";
 			};
 
arch/arm/kernel/traps.c +1 -1
index 54abd8720dde..91e757bb054e 100644
@@ -334,7 +334,7 @@ static void oops_end(unsigned long flags, struct pt_regs *regs, int signr)
 	if (panic_on_oops)
 		panic("Fatal exception");
 	if (signr)
-		do_exit(signr);
+		make_task_dead(signr);
 }
 
 /*
arch/arm/mach-imx/cpu-imx25.c +1 -0
index b2e1963f473d..2ee2d2813d57 100644
@@ -23,6 +23,7 @@ static int mx25_read_cpu_rev(void)
 
 	np = of_find_compatible_node(NULL, NULL, "fsl,imx25-iim");
 	iim_base = of_iomap(np, 0);
+	of_node_put(np);
 	BUG_ON(!iim_base);
 	rev = readl(iim_base + MXC_IIMSREV);
 	iounmap(iim_base);
arch/arm/mach-imx/cpu-imx27.c +1 -0
index bf70e13bbe9e..1d2893908368 100644
@@ -28,6 +28,7 @@ static int mx27_read_cpu_rev(void)
 
 	np = of_find_compatible_node(NULL, NULL, "fsl,imx27-ccm");
 	ccm_base = of_iomap(np, 0);
+	of_node_put(np);
 	BUG_ON(!ccm_base);
 	/*
 	 * now we have access to the IO registers. As we need
arch/arm/mach-imx/cpu-imx31.c +1 -0
index b9c24b851d1a..35c544924e50 100644
@@ -39,6 +39,7 @@ static int mx31_read_cpu_rev(void)
 
 	np = of_find_compatible_node(NULL, NULL, "fsl,imx31-iim");
 	iim_base = of_iomap(np, 0);
+	of_node_put(np);
 	BUG_ON(!iim_base);
 
 	/* read SREV register from IIM module */
arch/arm/mach-imx/cpu-imx35.c +1 -0
index 80e7d8ab9f1b..1fe75b39c2d9 100644
@@ -21,6 +21,7 @@ static int mx35_read_cpu_rev(void)
 
 	np = of_find_compatible_node(NULL, NULL, "fsl,imx35-iim");
 	iim_base = of_iomap(np, 0);
+	of_node_put(np);
 	BUG_ON(!iim_base);
 
 	rev = imx_readl(iim_base + MXC_IIMSREV);
arch/arm/mach-imx/cpu-imx5.c +1 -0
index ad56263778f9..a67c89bf155d 100644
@@ -28,6 +28,7 @@ static u32 imx5_read_srev_reg(const char *compat)
 
 	np = of_find_compatible_node(NULL, NULL, compat);
 	iim_base = of_iomap(np, 0);
+	of_node_put(np);
 	WARN_ON(!iim_base);
 
 	srev = readl(iim_base + IIM_SREV) & 0xff;
arch/arm/mm/fault.c +1 -1
index efa402025031..af5177801fb1 100644
@@ -125,7 +125,7 @@ __do_kernel_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr,
 	show_pte(KERN_ALERT, mm, addr);
 	die("Oops", regs, fsr);
 	bust_spinlocks(0);
-	do_exit(SIGKILL);
+	make_task_dead(SIGKILL);
 }
 
 /*
arch/arm/mm/nommu.c +1 -1
index 88feffebae21..80613674deb5 100644
@@ -161,7 +161,7 @@ void __init paging_init(const struct machine_desc *mdesc)
 	mpu_setup();
 
 	/* allocate the zero page. */
-	zero_page = memblock_alloc(PAGE_SIZE, PAGE_SIZE);
+	zero_page = (void *)memblock_alloc(PAGE_SIZE, PAGE_SIZE);
 	if (!zero_page)
 		panic("%s: Failed to allocate %lu bytes align=0x%lx\n",
 		      __func__, PAGE_SIZE, PAGE_SIZE);
arch/arm64/boot/dts/freescale/imx8mm-beacon-baseboard.dtsi +2 -2
index 94e5fa8ca957..bb18354c10f0 100644
@@ -70,7 +70,7 @@ sound {
 &ecspi2 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&pinctrl_espi2>;
-	cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
+	cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
 	status = "okay";
 
 	eeprom@0 {
@@ -186,7 +186,7 @@ pinctrl_espi2: espi2grp {
 			MX8MM_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK		0x82
 			MX8MM_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI		0x82
 			MX8MM_IOMUXC_ECSPI2_MISO_ECSPI2_MISO		0x82
-			MX8MM_IOMUXC_ECSPI1_SS0_GPIO5_IO9		0x41
+			MX8MM_IOMUXC_ECSPI2_SS0_GPIO5_IO13              0x41
 		>;
 	};
 
arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts +1 -0
index bafd5c8ea4e2..f7e41e5c2c7b 100644
@@ -675,6 +675,7 @@ &usbotg1 {
 &usbotg2 {
 	dr_mode = "host";
 	vbus-supply = <&reg_usb2_vbus>;
+	over-current-active-low;
 	status = "okay";
 };
 
arch/arm64/boot/dts/freescale/imx8mp-phycore-som.dtsi +0 -10
index fc178eebf8aa..8e189d899794 100644
@@ -98,7 +98,6 @@ pmic: pmic@25 {
 
 		regulators {
 			buck1: BUCK1 {
-				regulator-compatible = "BUCK1";
 				regulator-min-microvolt = <600000>;
 				regulator-max-microvolt = <2187500>;
 				regulator-boot-on;
@@ -107,7 +106,6 @@ buck1: BUCK1 {
 			};
 
 			buck2: BUCK2 {
-				regulator-compatible = "BUCK2";
 				regulator-min-microvolt = <600000>;
 				regulator-max-microvolt = <2187500>;
 				regulator-boot-on;
@@ -116,7 +114,6 @@ buck2: BUCK2 {
 			};
 
 			buck4: BUCK4 {
-				regulator-compatible = "BUCK4";
 				regulator-min-microvolt = <600000>;
 				regulator-max-microvolt = <3400000>;
 				regulator-boot-on;
@@ -124,7 +121,6 @@ buck4: BUCK4 {
 			};
 
 			buck5: BUCK5 {
-				regulator-compatible = "BUCK5";
 				regulator-min-microvolt = <600000>;
 				regulator-max-microvolt = <3400000>;
 				regulator-boot-on;
@@ -132,7 +128,6 @@ buck5: BUCK5 {
 			};
 
 			buck6: BUCK6 {
-				regulator-compatible = "BUCK6";
 				regulator-min-microvolt = <600000>;
 				regulator-max-microvolt = <3400000>;
 				regulator-boot-on;
@@ -140,7 +135,6 @@ buck6: BUCK6 {
 			};
 
 			ldo1: LDO1 {
-				regulator-compatible = "LDO1";
 				regulator-min-microvolt = <1600000>;
 				regulator-max-microvolt = <3300000>;
 				regulator-boot-on;
@@ -148,7 +142,6 @@ ldo1: LDO1 {
 			};
 
 			ldo2: LDO2 {
-				regulator-compatible = "LDO2";
 				regulator-min-microvolt = <800000>;
 				regulator-max-microvolt = <1150000>;
 				regulator-boot-on;
@@ -156,7 +149,6 @@ ldo2: LDO2 {
 			};
 
 			ldo3: LDO3 {
-				regulator-compatible = "LDO3";
 				regulator-min-microvolt = <800000>;
 				regulator-max-microvolt = <3300000>;
 				regulator-boot-on;
@@ -164,7 +156,6 @@ ldo3: LDO3 {
 			};
 
 			ldo4: LDO4 {
-				regulator-compatible = "LDO4";
 				regulator-min-microvolt = <800000>;
 				regulator-max-microvolt = <3300000>;
 				regulator-boot-on;
@@ -172,7 +163,6 @@ ldo4: LDO4 {
 			};
 
 			ldo5: LDO5 {
-				regulator-compatible = "LDO5";
 				regulator-min-microvolt = <1800000>;
 				regulator-max-microvolt = <3300000>;
 			};
arch/arm64/boot/dts/qcom/msm8992-xiaomi-libra.dts +75 -15

114 lines not on this page · raw message

arch/arm64/boot/dts/qcom/msm8992.dtsi +0 -4
index 58fe58cc7703..765e1f1989b5 100644
@@ -14,10 +14,6 @@ &rpmcc {
 	compatible = "qcom,rpmcc-msm8992";
 };
 
-&tcsr_mutex {
-	compatible = "qcom,sfpb-mutex";
-};
-
 &timer {
 	interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
 			     <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
arch/arm64/kernel/traps.c +1 -1
index f859cc870d5b..21e69a991bc8 100644
@@ -235,7 +235,7 @@ void die(const char *str, struct pt_regs *regs, int err)
 	raw_spin_unlock_irqrestore(&die_lock, flags);
 
 	if (ret != NOTIFY_STOP)
-		do_exit(SIGSEGV);
+		make_task_dead(SIGSEGV);
 }
 
 static void arm64_show_signal(int signo, const char *str)
arch/arm64/kvm/vgic/vgic-v3.c +11 -14
index 21a6207fb2ee..8eb70451323b 100644
@@ -347,26 +347,23 @@ int vgic_v3_lpi_sync_pending_status(struct kvm *kvm, struct vgic_irq *irq)
  * The deactivation of the doorbell interrupt will trigger the
  * unmapping of the associated vPE.
  */
-static void unmap_all_vpes(struct vgic_dist *dist)
+static void unmap_all_vpes(struct kvm *kvm)
 {
-	struct irq_desc *desc;
+	struct vgic_dist *dist = &kvm->arch.vgic;
 	int i;
 
-	for (i = 0; i < dist->its_vm.nr_vpes; i++) {
-		desc = irq_to_desc(dist->its_vm.vpes[i]->irq);
-		irq_domain_deactivate_irq(irq_desc_get_irq_data(desc));
-	}
+	for (i = 0; i < dist->its_vm.nr_vpes; i++)
+		free_irq(dist->its_vm.vpes[i]->irq, kvm_get_vcpu(kvm, i));
 }
 
-static void map_all_vpes(struct vgic_dist *dist)
+static void map_all_vpes(struct kvm *kvm)
 {
-	struct irq_desc *desc;
+	struct vgic_dist *dist = &kvm->arch.vgic;
 	int i;
 
-	for (i = 0; i < dist->its_vm.nr_vpes; i++) {
-		desc = irq_to_desc(dist->its_vm.vpes[i]->irq);
-		irq_domain_activate_irq(irq_desc_get_irq_data(desc), false);
-	}
+	for (i = 0; i < dist->its_vm.nr_vpes; i++)
+		WARN_ON(vgic_v4_request_vpe_irq(kvm_get_vcpu(kvm, i),
+						dist->its_vm.vpes[i]->irq));
 }
 
 /**
@@ -391,7 +388,7 @@ int vgic_v3_save_pending_tables(struct kvm *kvm)
 	 * and enabling of the doorbells have already been done.
 	 */
 	if (kvm_vgic_global_state.has_gicv4_1) {
-		unmap_all_vpes(dist);
+		unmap_all_vpes(kvm);
 		vlpi_avail = true;
 	}
 
@@ -441,7 +438,7 @@ int vgic_v3_save_pending_tables(struct kvm *kvm)
 
 out:
 	if (vlpi_avail)
-		map_all_vpes(dist);
+		map_all_vpes(kvm);
 
 	return ret;
 }
arch/arm64/kvm/vgic/vgic-v4.c +6 -2
index c1845d8f5f7e..f507e3fcffce 100644
@@ -222,6 +222,11 @@ void vgic_v4_get_vlpi_state(struct vgic_irq *irq, bool *val)
 	*val = !!(*ptr & mask);
 }
 
+int vgic_v4_request_vpe_irq(struct kvm_vcpu *vcpu, int irq)
+{
+	return request_irq(irq, vgic_v4_doorbell_handler, 0, "vcpu", vcpu);
+}
+
 /**
  * vgic_v4_init - Initialize the GICv4 data structures
  * @kvm:	Pointer to the VM being initialized
@@ -282,8 +287,7 @@ int vgic_v4_init(struct kvm *kvm)
 			irq_flags &= ~IRQ_NOAUTOEN;
 		irq_set_status_flags(irq, irq_flags);
 
-		ret = request_irq(irq, vgic_v4_doorbell_handler,
-				  0, "vcpu", vcpu);
+		ret = vgic_v4_request_vpe_irq(vcpu, irq);
 		if (ret) {
 			kvm_err("failed to allocate vcpu IRQ%d\n", irq);
 			/*
arch/arm64/kvm/vgic/vgic.h +1 -0
index 14a9218641f5..36021c31a706 100644
@@ -321,5 +321,6 @@ int vgic_v4_init(struct kvm *kvm);
 void vgic_v4_teardown(struct kvm *kvm);
 void vgic_v4_configure_vsgis(struct kvm *kvm);
 void vgic_v4_get_vlpi_state(struct vgic_irq *irq, bool *val);
+int vgic_v4_request_vpe_irq(struct kvm_vcpu *vcpu, int irq);
 
 #endif
arch/arm64/mm/fault.c +1 -1
index d09b21faa0b2..97a93ee756a2 100644
@@ -302,7 +302,7 @@ static void die_kernel_fault(const char *msg, unsigned long addr,
 	show_pte(addr);
 	die("Oops", regs, esr);
 	bust_spinlocks(0);
-	do_exit(SIGKILL);
+	make_task_dead(SIGKILL);
 }
 
 #ifdef CONFIG_KASAN_HW_TAGS
arch/csky/abiv1/alignment.c +1 -1
index cb2a0d94a144..2df115d0e210 100644
@@ -294,7 +294,7 @@ void csky_alignment(struct pt_regs *regs)
 				__func__, opcode, rz, rx, imm, addr);
 		show_regs(regs);
 		bust_spinlocks(0);
-		do_exit(SIGKILL);
+		make_task_dead(SIGKILL);
 	}
 
 	force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)addr);
arch/csky/kernel/traps.c +1 -1
index 2020af88b636..6e426fba0119 100644
@@ -109,7 +109,7 @@ void die(struct pt_regs *regs, const char *str)
 	if (panic_on_oops)
 		panic("Fatal exception");
 	if (ret != NOTIFY_STOP)
-		do_exit(SIGSEGV);
+		make_task_dead(SIGSEGV);
 }
 
 void do_trap(struct pt_regs *regs, int signo, int code, unsigned long addr)
arch/csky/mm/fault.c +1 -1
index 466ad949818a..7215a46b6b8e 100644
@@ -67,7 +67,7 @@ static inline void no_context(struct pt_regs *regs, unsigned long addr)
 	pr_alert("Unable to handle kernel paging request at virtual "
 		 "addr 0x%08lx, pc: 0x%08lx\n", addr, regs->pc);
 	die(regs, "Oops");
-	do_exit(SIGKILL);
+	make_task_dead(SIGKILL);
 }
 
 static inline void mm_fault_error(struct pt_regs *regs, unsigned long addr, vm_fault_t fault)
arch/h8300/kernel/traps.c +2 -1
index bdbe988d8dbc..a92c39e03802 100644
@@ -17,6 +17,7 @@
 #include <linux/types.h>
 #include <linux/sched.h>
 #include <linux/sched/debug.h>
+#include <linux/sched/task.h>
 #include <linux/mm_types.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
@@ -106,7 +107,7 @@ void die(const char *str, struct pt_regs *fp, unsigned long err)
 	dump(fp);
 
 	spin_unlock_irq(&die_lock);
-	do_exit(SIGSEGV);
+	make_task_dead(SIGSEGV);
 }
 
 static int kstack_depth_to_print = 24;
arch/h8300/mm/fault.c +1 -1
index d4bc9c16f2df..b465441f490d 100644
@@ -51,7 +51,7 @@ asmlinkage int do_page_fault(struct pt_regs *regs, unsigned long address,
 	printk(" at virtual address %08lx\n", address);
 	if (!user_mode(regs))
 		die("Oops", regs, error_code);
-	do_exit(SIGKILL);
+	make_task_dead(SIGKILL);
 
 	return 1;
 }
arch/hexagon/kernel/traps.c +1 -1
index edfc35dafeb1..1240f038cce0 100644
@@ -214,7 +214,7 @@ int die(const char *str, struct pt_regs *regs, long err)
 		panic("Fatal exception");
 
 	oops_exit();
-	do_exit(err);
+	make_task_dead(err);
 	return 0;
 }
 
arch/ia64/Kconfig +1 -1
index 1e33666fa679..b1f2b6ac9b1d 100644
@@ -323,7 +323,7 @@ config ARCH_PROC_KCORE_TEXT
 	depends on PROC_KCORE
 
 config IA64_MCA_RECOVERY
-	tristate "MCA recovery from errors other than TLB."
+	bool "MCA recovery from errors other than TLB."
 
 config IA64_PALINFO
 	tristate "/proc/pal support"
arch/ia64/kernel/mca_drv.c +1 -1
index 5bfc79be4cef..23c203639a96 100644
@@ -176,7 +176,7 @@ mca_handler_bh(unsigned long paddr, void *iip, unsigned long ipsr)
 	spin_unlock(&mca_bh_lock);
 
 	/* This process is about to be killed itself */
-	do_exit(SIGKILL);
+	make_task_dead(SIGKILL);
 }
 
 /**
arch/ia64/kernel/traps.c +1 -1
index e13cb905930f..753642366e12 100644
@@ -85,7 +85,7 @@ die (const char *str, struct pt_regs *regs, long err)
 	if (panic_on_oops)
 		panic("Fatal exception");
 
-  	do_exit(SIGSEGV);
+	make_task_dead(SIGSEGV);
 	return 0;
 }
 
arch/ia64/mm/fault.c +1 -1
index 02de2e70c587..4796cccbf74f 100644
@@ -259,7 +259,7 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re
 		regs = NULL;
 	bust_spinlocks(0);
 	if (regs)
-		do_exit(SIGKILL);
+		make_task_dead(SIGKILL);
 	return;
 
   out_of_memory:
arch/m68k/kernel/traps.c +1 -1
index 34d6458340b0..59fc63feb0dc 100644
@@ -1131,7 +1131,7 @@ void die_if_kernel (char *str, struct pt_regs *fp, int nr)
 	pr_crit("%s: %08x\n", str, nr);
 	show_registers(fp);
 	add_taint(TAINT_DIE, LOCKDEP_NOW_UNRELIABLE);
-	do_exit(SIGSEGV);
+	make_task_dead(SIGSEGV);
 }
 
 asmlinkage void set_esp0(unsigned long ssp)
arch/m68k/mm/fault.c +1 -1
index ef46e77e97a5..fcb3a0d8421c 100644
@@ -48,7 +48,7 @@ int send_fault_sig(struct pt_regs *regs)
 			pr_alert("Unable to handle kernel access");
 		pr_cont(" at virtual address %p\n", addr);
 		die_if_kernel("Oops", regs, 0 /*error_code*/);
-		do_exit(SIGKILL);
+		make_task_dead(SIGKILL);
 	}
 
 	return 1;
arch/microblaze/kernel/exceptions.c +2 -2
index 908788497b28..fd153d5fab98 100644
@@ -44,10 +44,10 @@ void die(const char *str, struct pt_regs *fp, long err)
 	pr_warn("Oops: %s, sig: %ld\n", str, err);
 	show_regs(fp);
 	spin_unlock_irq(&die_lock);
-	/* do_exit() should take care of panic'ing from an interrupt
+	/* make_task_dead() should take care of panic'ing from an interrupt
 	 * context so we don't handle it here
 	 */
-	do_exit(err);
+	make_task_dead(err);
 }
 
 /* for user application debugging */
arch/mips/kernel/traps.c +1 -1
index edd93430b954..afb2c955d99e 100644
@@ -416,7 +416,7 @@ void __noreturn die(const char *str, struct pt_regs *regs)
 	if (regs && kexec_should_crash(current))
 		crash_kexec(regs);
 
-	do_exit(sig);
+	make_task_dead(sig);
 }
 
 extern struct exception_table_entry __start___dbe_table[];
arch/nds32/kernel/fpu.c +1 -1
index 9edd7ed7d7bf..701c09a668de 100644
@@ -223,7 +223,7 @@ inline void handle_fpu_exception(struct pt_regs *regs)
 		}
 	} else if (fpcsr & FPCSR_mskRIT) {
 		if (!user_mode(regs))
-			do_exit(SIGILL);
+			make_task_dead(SIGILL);
 		si_signo = SIGILL;
 	}
 
arch/nds32/kernel/traps.c +4 -4
index f06421c645af..b90030e8e546 100644
@@ -141,7 +141,7 @@ void die(const char *str, struct pt_regs *regs, int err)
 
 	bust_spinlocks(0);
 	spin_unlock_irq(&die_lock);
-	do_exit(SIGSEGV);
+	make_task_dead(SIGSEGV);
 }
 
 EXPORT_SYMBOL(die);
@@ -240,7 +240,7 @@ void unhandled_interruption(struct pt_regs *regs)
 	pr_emerg("unhandled_interruption\n");
 	show_regs(regs);
 	if (!user_mode(regs))
-		do_exit(SIGKILL);
+		make_task_dead(SIGKILL);
 	force_sig(SIGKILL);
 }
 
@@ -251,7 +251,7 @@ void unhandled_exceptions(unsigned long entry, unsigned long addr,
 		 addr, type);
 	show_regs(regs);
 	if (!user_mode(regs))
-		do_exit(SIGKILL);
+		make_task_dead(SIGKILL);
 	force_sig(SIGKILL);
 }
 
@@ -278,7 +278,7 @@ void do_revinsn(struct pt_regs *regs)
 	pr_emerg("Reserved Instruction\n");
 	show_regs(regs);
 	if (!user_mode(regs))
-		do_exit(SIGILL);
+		make_task_dead(SIGILL);
 	force_sig(SIGILL);
 }
 
arch/nios2/kernel/traps.c +2 -2
index 596986a74a26..85ac49d64cf7 100644
@@ -37,10 +37,10 @@ void die(const char *str, struct pt_regs *regs, long err)
 	show_regs(regs);
 	spin_unlock_irq(&die_lock);
 	/*
-	 * do_exit() should take care of panic'ing from an interrupt
+	 * make_task_dead() should take care of panic'ing from an interrupt
 	 * context so we don't handle it here
 	 */
-	do_exit(err);
+	make_task_dead(err);
 }
 
 void _exception(int signo, struct pt_regs *regs, int code, unsigned long addr)
arch/openrisc/kernel/traps.c +1 -1
index aa1e709405ac..9df1d85bfe1d 100644
@@ -212,7 +212,7 @@ void die(const char *str, struct pt_regs *regs, long err)
 	__asm__ __volatile__("l.nop   1");
 	do {} while (1);
 #endif
-	do_exit(SIGSEGV);
+	make_task_dead(SIGSEGV);
 }
 
 /* This is normally the 'Oops' routine */
arch/parisc/kernel/traps.c +1 -1
index 6fe5a3e98edc..70ace3687950 100644
@@ -268,7 +268,7 @@ void die_if_kernel(char *str, struct pt_regs *regs, long err)
 		panic("Fatal exception");
 
 	oops_exit();
-	do_exit(SIGSEGV);
+	make_task_dead(SIGSEGV);
 }
 
 /* gdb uses break 4,8 */
arch/powerpc/kernel/traps.c +4 -4
index 11741703d26e..a08bb7cefdc5 100644
@@ -245,7 +245,7 @@ static void oops_end(unsigned long flags, struct pt_regs *regs,
 
 	if (panic_on_oops)
 		panic("Fatal exception");
-	do_exit(signr);
+	make_task_dead(signr);
 }
 NOKPROBE_SYMBOL(oops_end);
 
@@ -792,9 +792,9 @@ int machine_check_generic(struct pt_regs *regs)
 void die_mce(const char *str, struct pt_regs *regs, long err)
 {
 	/*
-	 * The machine check wants to kill the interrupted context, but
-	 * do_exit() checks for in_interrupt() and panics in that case, so
-	 * exit the irq/nmi before calling die.
+	 * The machine check wants to kill the interrupted context,
+	 * but make_task_dead() checks for in_interrupt() and panics
+	 * in that case, so exit the irq/nmi before calling die.
 	 */
 	if (in_nmi())
 		nmi_exit();
arch/riscv/kernel/probes/simulate-insn.c +2 -2
index d73e96f6ed7c..a20568bd1f1a 100644
@@ -71,11 +71,11 @@ bool __kprobes simulate_jalr(u32 opcode, unsigned long addr, struct pt_regs *reg
 	u32 rd_index = (opcode >> 7) & 0x1f;
 	u32 rs1_index = (opcode >> 15) & 0x1f;
 
-	ret = rv_insn_reg_set_val(regs, rd_index, addr + 4);
+	ret = rv_insn_reg_get_val(regs, rs1_index, &base_addr);
 	if (!ret)
 		return ret;
 
-	ret = rv_insn_reg_get_val(regs, rs1_index, &base_addr);
+	ret = rv_insn_reg_set_val(regs, rd_index, addr + 4);
 	if (!ret)
 		return ret;
 
arch/riscv/kernel/traps.c +1 -1
index 4102c97309cc..6084bd93d2f5 100644
@@ -59,7 +59,7 @@ void die(struct pt_regs *regs, const char *str)
 	if (panic_on_oops)
 		panic("Fatal exception");
 	if (ret != NOTIFY_STOP)
-		do_exit(SIGSEGV);
+		make_task_dead(SIGSEGV);
 }
 
 void do_trap(struct pt_regs *regs, int signo, int code, unsigned long addr)
arch/riscv/mm/fault.c +1 -1
index 7cfaf366463f..676a3f28811f 100644
@@ -31,7 +31,7 @@ static void die_kernel_fault(const char *msg, unsigned long addr,
 
 	bust_spinlocks(0);
 	die(regs, "Oops");
-	do_exit(SIGKILL);
+	make_task_dead(SIGKILL);
 }
 
 static inline void no_context(struct pt_regs *regs, unsigned long addr)
arch/s390/include/asm/debug.h +3 -3
index 19a55e1e3a0c..5fc91a90657e 100644
@@ -4,8 +4,8 @@
  *
  *    Copyright IBM Corp. 1999, 2020
  */
-#ifndef DEBUG_H
-#define DEBUG_H
+#ifndef _ASM_S390_DEBUG_H
+#define _ASM_S390_DEBUG_H
 
 #include <linux/string.h>
 #include <linux/spinlock.h>
@@ -487,4 +487,4 @@ void debug_register_static(debug_info_t *id, int pages_per_area, int nr_areas);
 
 #endif /* MODULE */
 
-#endif /* DEBUG_H */
+#endif /* _ASM_S390_DEBUG_H */
arch/s390/kernel/dumpstack.c +1 -1
index db1bc00229ca..272ef8597e20 100644
@@ -224,5 +224,5 @@ void die(struct pt_regs *regs, const char *str)
 	if (panic_on_oops)
 		panic("Fatal exception: panic_on_oops");
 	oops_exit();
-	do_exit(SIGSEGV);
+	make_task_dead(SIGSEGV);
 }
arch/s390/kernel/nmi.c +1 -1
index 383b4799b6dd..d4f071e73a0a 100644
@@ -175,7 +175,7 @@ void __s390_handle_mcck(void)
 		       "malfunction (code 0x%016lx).\n", mcck.mcck_code);
 		printk(KERN_EMERG "mcck: task: %s, pid: %d.\n",
 		       current->comm, current->pid);
-		do_exit(SIGSEGV);
+		make_task_dead(SIGSEGV);
 	}
 }
 
arch/s390/kernel/vmlinux.lds.S +2 -0
index b508ccad4856..8ce1615c1046 100644
@@ -80,6 +80,7 @@ SECTIONS
 		_end_amode31_refs = .;
 	}
 
+	. = ALIGN(PAGE_SIZE);
 	_edata = .;		/* End of data section */
 
 	/* will be freed after init */
@@ -194,6 +195,7 @@ SECTIONS
 
 	BSS_SECTION(PAGE_SIZE, 4 * PAGE_SIZE, PAGE_SIZE)
 
+	. = ALIGN(PAGE_SIZE);
 	_end = . ;
 
 	/*
arch/s390/kvm/interrupt.c +8 -4
index 8ce03a5ca863..ca7d09f09809 100644
@@ -81,8 +81,9 @@ static int sca_inject_ext_call(struct kvm_vcpu *vcpu, int src_id)
 		struct esca_block *sca = vcpu->kvm->arch.sca;
 		union esca_sigp_ctrl *sigp_ctrl =
 			&(sca->cpu[vcpu->vcpu_id].sigp_ctrl);
-		union esca_sigp_ctrl new_val = {0}, old_val = *sigp_ctrl;
+		union esca_sigp_ctrl new_val = {0}, old_val;
 
+		old_val = READ_ONCE(*sigp_ctrl);
 		new_val.scn = src_id;
 		new_val.c = 1;
 		old_val.c = 0;
@@ -93,8 +94,9 @@ static int sca_inject_ext_call(struct kvm_vcpu *vcpu, int src_id)
 		struct bsca_block *sca = vcpu->kvm->arch.sca;
 		union bsca_sigp_ctrl *sigp_ctrl =
 			&(sca->cpu[vcpu->vcpu_id].sigp_ctrl);
-		union bsca_sigp_ctrl new_val = {0}, old_val = *sigp_ctrl;
+		union bsca_sigp_ctrl new_val = {0}, old_val;
 
+		old_val = READ_ONCE(*sigp_ctrl);
 		new_val.scn = src_id;
 		new_val.c = 1;
 		old_val.c = 0;
@@ -124,16 +126,18 @@ static void sca_clear_ext_call(struct kvm_vcpu *vcpu)
 		struct esca_block *sca = vcpu->kvm->arch.sca;
 		union esca_sigp_ctrl *sigp_ctrl =
 			&(sca->cpu[vcpu->vcpu_id].sigp_ctrl);
-		union esca_sigp_ctrl old = *sigp_ctrl;
+		union esca_sigp_ctrl old;
 
+		old = READ_ONCE(*sigp_ctrl);
 		expect = old.value;
 		rc = cmpxchg(&sigp_ctrl->value, old.value, 0);
 	} else {
 		struct bsca_block *sca = vcpu->kvm->arch.sca;
 		union bsca_sigp_ctrl *sigp_ctrl =
 			&(sca->cpu[vcpu->vcpu_id].sigp_ctrl);
-		union bsca_sigp_ctrl old = *sigp_ctrl;
+		union bsca_sigp_ctrl old;
 
+		old = READ_ONCE(*sigp_ctrl);
 		expect = old.value;
 		rc = cmpxchg(&sigp_ctrl->value, old.value, 0);
 	}
arch/sh/kernel/traps.c +1 -1
index e76b22157099..361b764700b7 100644
@@ -57,7 +57,7 @@ void die(const char *str, struct pt_regs *regs, long err)
 	if (panic_on_oops)
 		panic("Fatal exception");
 
-	do_exit(SIGSEGV);
+	make_task_dead(SIGSEGV);
 }
 
 void die_if_kernel(const char *str, struct pt_regs *regs, long err)
arch/sparc/kernel/traps_32.c +1 -3
index 5630e5a395e0..179aabfa712e 100644
@@ -86,9 +86,7 @@ void __noreturn die_if_kernel(char *str, struct pt_regs *regs)
 	}
 	printk("Instruction DUMP:");
 	instruction_dump ((unsigned long *) regs->pc);
-	if(regs->psr & PSR_PS)
-		do_exit(SIGKILL);
-	do_exit(SIGSEGV);
+	make_task_dead((regs->psr & PSR_PS) ? SIGKILL : SIGSEGV);
 }
 
 void do_hw_interrupt(struct pt_regs *regs, unsigned long type)
arch/sparc/kernel/traps_64.c +1 -3
index 6863025ed56d..21077821f427 100644
@@ -2559,9 +2559,7 @@ void __noreturn die_if_kernel(char *str, struct pt_regs *regs)
 	}
 	if (panic_on_oops)
 		panic("Fatal exception");
-	if (regs->tstate & TSTATE_PRIV)
-		do_exit(SIGKILL);
-	do_exit(SIGSEGV);
+	make_task_dead((regs->tstate & TSTATE_PRIV)? SIGKILL : SIGSEGV);
 }
 EXPORT_SYMBOL(die_if_kernel);
 
arch/x86/entry/entry_32.S +3 -3
index 6b44263d7efb..e309e7156038 100644
@@ -1239,14 +1239,14 @@ SYM_CODE_START(asm_exc_nmi)
 SYM_CODE_END(asm_exc_nmi)
 
 .pushsection .text, "ax"
-SYM_CODE_START(rewind_stack_do_exit)
+SYM_CODE_START(rewind_stack_and_make_dead)
 	/* Prevent any naive code from trying to unwind to our caller. */
 	xorl	%ebp, %ebp
 
 	movl	PER_CPU_VAR(cpu_current_top_of_stack), %esi
 	leal	-TOP_OF_KERNEL_STACK_PADDING-PTREGS_SIZE(%esi), %esp
 
-	call	do_exit
+	call	make_task_dead
 1:	jmp 1b
-SYM_CODE_END(rewind_stack_do_exit)
+SYM_CODE_END(rewind_stack_and_make_dead)
 .popsection
arch/x86/entry/entry_64.S +3 -3
index a3af2a9159b1..9f1333a9ee41 100644
@@ -1487,7 +1487,7 @@ SYM_CODE_END(ignore_sysret)
 #endif
 
 .pushsection .text, "ax"
-SYM_CODE_START(rewind_stack_do_exit)
+SYM_CODE_START(rewind_stack_and_make_dead)
 	UNWIND_HINT_FUNC
 	/* Prevent any naive code from trying to unwind to our caller. */
 	xorl	%ebp, %ebp
@@ -1496,6 +1496,6 @@ SYM_CODE_START(rewind_stack_do_exit)
 	leaq	-PTREGS_SIZE(%rax), %rsp
 	UNWIND_HINT_REGS
 
-	call	do_exit
-SYM_CODE_END(rewind_stack_do_exit)
+	call	make_task_dead
+SYM_CODE_END(rewind_stack_and_make_dead)
 .popsection
arch/x86/events/amd/core.c +1 -1
index 9687a8aef01c..d93d098dea99 100644
@@ -976,7 +976,7 @@ static int __init amd_core_pmu_init(void)
 		 * numbered counter following it.
 		 */
 		for (i = 0; i < x86_pmu.num_counters - 1; i += 2)
-			even_ctr_mask |= 1 << i;
+			even_ctr_mask |= BIT_ULL(i);
 
 		pair_constraint = (struct event_constraint)
 				    __EVENT_CONSTRAINT(0, even_ctr_mask, 0,
arch/x86/events/intel/uncore.c +1 -0
index c72e368dd164..7e16c590f259 100644
@@ -1829,6 +1829,7 @@ static const struct x86_cpu_id intel_uncore_match[] __initconst = {
 	X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE,		&adl_uncore_init),
 	X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE_L,		&adl_uncore_init),
 	X86_MATCH_INTEL_FAM6_MODEL(SAPPHIRERAPIDS_X,	&spr_uncore_init),
+	X86_MATCH_INTEL_FAM6_MODEL(EMERALDRAPIDS_X,	&spr_uncore_init),
 	X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_D,	&snr_uncore_init),
 	{},
 };
arch/x86/events/msr.c +1 -0
index 96c775abe31f..d23b5523cdd3 100644
@@ -69,6 +69,7 @@ static bool test_intel(int idx, void *data)
 	case INTEL_FAM6_BROADWELL_G:
 	case INTEL_FAM6_BROADWELL_X:
 	case INTEL_FAM6_SAPPHIRERAPIDS_X:
+	case INTEL_FAM6_EMERALDRAPIDS_X:
 
 	case INTEL_FAM6_ATOM_SILVERMONT:
 	case INTEL_FAM6_ATOM_SILVERMONT_D:
arch/x86/kernel/acpi/cstate.c +15 -0
index 7de599eba7f0..7945eae5b315 100644
@@ -79,6 +79,21 @@ void acpi_processor_power_init_bm_check(struct acpi_processor_flags *flags,
 		 */
 		flags->bm_control = 0;
 	}
+	if (c->x86_vendor == X86_VENDOR_AMD && c->x86 >= 0x17) {
+		/*
+		 * For all AMD Zen or newer CPUs that support C3, caches
+		 * should not be flushed by software while entering C3
+		 * type state. Set bm->check to 1 so that kernel doesn't
+		 * need to execute cache flush operation.
+		 */
+		flags->bm_check = 1;
+		/*
+		 * In current AMD C state implementation ARB_DIS is no longer
+		 * used. So set bm_control to zero to indicate ARB_DIS is not
+		 * required while entering C3 type state.
+		 */
+		flags->bm_control = 0;
+	}
 }
 EXPORT_SYMBOL(acpi_processor_power_init_bm_check);
 
arch/x86/kernel/dumpstack.c +2 -2
index ea4fe192189d..53de044e5654 100644
@@ -351,7 +351,7 @@ unsigned long oops_begin(void)
 }
 NOKPROBE_SYMBOL(oops_begin);
 
-void __noreturn rewind_stack_do_exit(int signr);
+void __noreturn rewind_stack_and_make_dead(int signr);
 
 void oops_end(unsigned long flags, struct pt_regs *regs, int signr)
 {
@@ -386,7 +386,7 @@ void oops_end(unsigned long flags, struct pt_regs *regs, int signr)
 	 * reuse the task stack and that existing poisons are invalid.
 	 */
 	kasan_unpoison_task_stack(current);
-	rewind_stack_do_exit(signr);
+	rewind_stack_and_make_dead(signr);
 }
 NOKPROBE_SYMBOL(oops_end);
 
arch/x86/kernel/i8259.c +1 -0
index 15aefa3f3e18..f91e5e31aa4f 100644
@@ -114,6 +114,7 @@ static void make_8259A_irq(unsigned int irq)
 	disable_irq_nosync(irq);
 	io_apic_irqs &= ~(1<<irq);
 	irq_set_chip_and_handler(irq, &i8259A_chip, handle_level_irq);
+	irq_set_status_flags(irq, IRQ_LEVEL);
 	enable_irq(irq);
 	lapic_assign_legacy_vector(irq, true);
 }
arch/x86/kernel/irqinit.c +3 -1
index beb1bada1b0a..c683666876f1 100644
@@ -65,8 +65,10 @@ void __init init_ISA_irqs(void)
 
 	legacy_pic->init(0);
 
-	for (i = 0; i < nr_legacy_irqs(); i++)
+	for (i = 0; i < nr_legacy_irqs(); i++) {
 		irq_set_chip_and_handler(i, chip, handle_level_irq);
+		irq_set_status_flags(i, IRQ_LEVEL);
+	}
 }
 
 void __init init_IRQ(void)
arch/x86/kvm/svm/svm.c +23 -11
index 773420203305..c1a758038892 100644
@@ -465,11 +465,24 @@ static int has_svm(void)
 	return 1;
 }
 
+void __svm_write_tsc_multiplier(u64 multiplier)
+{
+	preempt_disable();
+
+	if (multiplier == __this_cpu_read(current_tsc_ratio))
+		goto out;
+
+	wrmsrl(MSR_AMD64_TSC_RATIO, multiplier);
+	__this_cpu_write(current_tsc_ratio, multiplier);
+out:
+	preempt_enable();
+}
+
 static void svm_hardware_disable(void)
 {
 	/* Make sure we clean up behind us */
 	if (static_cpu_has(X86_FEATURE_TSCRATEMSR))
-		wrmsrl(MSR_AMD64_TSC_RATIO, TSC_RATIO_DEFAULT);
+		__svm_write_tsc_multiplier(TSC_RATIO_DEFAULT);
 
 	cpu_svm_disable();
 
@@ -511,8 +524,11 @@ static int svm_hardware_enable(void)
 	wrmsrl(MSR_VM_HSAVE_PA, __sme_page_pa(sd->save_area));
 
 	if (static_cpu_has(X86_FEATURE_TSCRATEMSR)) {
-		wrmsrl(MSR_AMD64_TSC_RATIO, TSC_RATIO_DEFAULT);
-		__this_cpu_write(current_tsc_ratio, TSC_RATIO_DEFAULT);
+		/*
+		 * Set the default value, even if we don't use TSC scaling
+		 * to avoid having stale value in the msr
+		 */
+		__svm_write_tsc_multiplier(TSC_RATIO_DEFAULT);
 	}
 
 
@@ -1125,9 +1141,10 @@ static void svm_write_tsc_offset(struct kvm_vcpu *vcpu, u64 offset)
 
 static void svm_write_tsc_multiplier(struct kvm_vcpu *vcpu, u64 multiplier)
 {
-	wrmsrl(MSR_AMD64_TSC_RATIO, multiplier);
+	__svm_write_tsc_multiplier(multiplier);
 }
 
+
 /* Evaluate instruction intercepts that depend on guest CPUID features. */
 static void svm_recalc_instruction_intercepts(struct kvm_vcpu *vcpu,
 					      struct vcpu_svm *svm)
@@ -1451,13 +1468,8 @@ static void svm_prepare_guest_switch(struct kvm_vcpu *vcpu)
 		vmsave(__sme_page_pa(sd->save_area));
 	}
 
-	if (static_cpu_has(X86_FEATURE_TSCRATEMSR)) {
-		u64 tsc_ratio = vcpu->arch.tsc_scaling_ratio;
-		if (tsc_ratio != __this_cpu_read(current_tsc_ratio)) {
-			__this_cpu_write(current_tsc_ratio, tsc_ratio);
-			wrmsrl(MSR_AMD64_TSC_RATIO, tsc_ratio);
-		}
-	}
+	if (static_cpu_has(X86_FEATURE_TSCRATEMSR))
+		__svm_write_tsc_multiplier(vcpu->arch.tsc_scaling_ratio);
 
 	if (likely(tsc_aux_uret_slot >= 0))
 		kvm_set_user_return_msr(tsc_aux_uret_slot, svm->tsc_aux, -1ull);
arch/x86/kvm/svm/svm.h +1 -0
index 7004f356edf9..1d9b1a9e4398 100644
@@ -487,6 +487,7 @@ int nested_svm_check_exception(struct vcpu_svm *svm, unsigned nr,
 int nested_svm_exit_special(struct vcpu_svm *svm);
 void nested_load_control_from_vmcb12(struct vcpu_svm *svm,
 				     struct vmcb_control_area *control);
+void __svm_write_tsc_multiplier(u64 multiplier);
 void nested_sync_control_from_vmcb02(struct vcpu_svm *svm);
 void nested_vmcb02_compute_g_pat(struct vcpu_svm *svm);
 void svm_switch_vmcb(struct vcpu_svm *svm, struct kvm_vmcb_info *target_vmcb);
arch/x86/kvm/vmx/vmx.c +9 -12
index 6918f597b8ab..0718658268fe 100644
@@ -3361,18 +3361,15 @@ static u32 vmx_segment_access_rights(struct kvm_segment *var)
 {
 	u32 ar;
 
-	if (var->unusable || !var->present)
-		ar = 1 << 16;
-	else {
-		ar = var->type & 15;
-		ar |= (var->s & 1) << 4;
-		ar |= (var->dpl & 3) << 5;
-		ar |= (var->present & 1) << 7;
-		ar |= (var->avl & 1) << 12;
-		ar |= (var->l & 1) << 13;
-		ar |= (var->db & 1) << 14;
-		ar |= (var->g & 1) << 15;
-	}
+	ar = var->type & 15;
+	ar |= (var->s & 1) << 4;
+	ar |= (var->dpl & 3) << 5;
+	ar |= (var->present & 1) << 7;
+	ar |= (var->avl & 1) << 12;
+	ar |= (var->l & 1) << 13;
+	ar |= (var->db & 1) << 14;
+	ar |= (var->g & 1) << 15;
+	ar |= (var->unusable || !var->present) << 16;
 
 	return ar;
 }
arch/xtensa/kernel/traps.c +1 -1
index 874b6efc6fb3..904086ad5682 100644
@@ -552,5 +552,5 @@ void die(const char * str, struct pt_regs * regs, long err)
 	if (panic_on_oops)
 		panic("Fatal exception");
 
-	do_exit(err);
+	make_task_dead(err);
 }
block/blk-core.c +2 -6
index 13e1fca1e923..ed6271dcc1b1 100644
@@ -698,14 +698,10 @@ static inline bool should_fail_request(struct block_device *part,
 static inline bool bio_check_ro(struct bio *bio)
 {
 	if (op_is_write(bio_op(bio)) && bdev_read_only(bio->bi_bdev)) {
-		char b[BDEVNAME_SIZE];
-
 		if (op_is_flush(bio->bi_opf) && !bio_sectors(bio))
 			return false;
-
-		WARN_ONCE(1,
-		       "Trying to write to read-only block-device %s (partno %d)\n",
-			bio_devname(bio, b), bio->bi_bdev->bd_partno);
+		pr_warn("Trying to write to read-only block-device %pg\n",
+			bio->bi_bdev);
 		/* Older lvm-tools actually trigger this */
 		return false;
 	}
drivers/base/property.c +12 -6
index 735a23db1b5e..17a648d64356 100644
@@ -1055,26 +1055,32 @@ struct fwnode_handle *
 fwnode_graph_get_next_endpoint(const struct fwnode_handle *fwnode,
 			       struct fwnode_handle *prev)
 {
+	struct fwnode_handle *ep, *port_parent = NULL;
 	const struct fwnode_handle *parent;
-	struct fwnode_handle *ep;
 
 	/*
 	 * If this function is in a loop and the previous iteration returned
 	 * an endpoint from fwnode->secondary, then we need to use the secondary
 	 * as parent rather than @fwnode.
 	 */
-	if (prev)
-		parent = fwnode_graph_get_port_parent(prev);
-	else
+	if (prev) {
+		port_parent = fwnode_graph_get_port_parent(prev);
+		parent = port_parent;
+	} else {
 		parent = fwnode;
+	}
 	if (IS_ERR_OR_NULL(parent))
 		return NULL;
 
 	ep = fwnode_call_ptr_op(parent, graph_get_next_endpoint, prev);
 	if (ep)
-		return ep;
+		goto out_put_port_parent;
+
+	ep = fwnode_graph_get_next_endpoint(parent->secondary, NULL);
 
-	return fwnode_graph_get_next_endpoint(parent->secondary, NULL);
+out_put_port_parent:
+	fwnode_handle_put(port_parent);
+	return ep;
 }
 EXPORT_SYMBOL_GPL(fwnode_graph_get_next_endpoint);
 
drivers/base/test/test_async_driver_probe.c +1 -1
index 3bb7beb127a9..c157a912d673 100644
@@ -146,7 +146,7 @@ static int __init test_async_probe_init(void)
 	calltime = ktime_get();
 	for_each_online_cpu(cpu) {
 		nid = cpu_to_node(cpu);
-		pdev = &sync_dev[sync_id];
+		pdev = &async_dev[async_id];
 
 		*pdev = test_platform_device_register_node("test_async_driver",
 							   async_id,
drivers/cpufreq/armada-37xx-cpufreq.c +1 -1
index c10fc33b29b1..b74289a95a17 100644
@@ -445,7 +445,7 @@ static int __init armada37xx_cpufreq_driver_init(void)
 		return -ENODEV;
 	}
 
-	clk = clk_get(cpu_dev, 0);
+	clk = clk_get(cpu_dev, NULL);
 	if (IS_ERR(clk)) {
 		dev_err(cpu_dev, "Cannot get clock for CPU0\n");
 		return PTR_ERR(clk);
drivers/cpufreq/cpufreq-dt-platdev.c +2 -0
index ca1d103ec449..e1b5975c7daa 100644
@@ -133,6 +133,7 @@ static const struct of_device_id blocklist[] __initconst = {
 	{ .compatible = "nvidia,tegra30", },
 	{ .compatible = "nvidia,tegra124", },
 	{ .compatible = "nvidia,tegra210", },
+	{ .compatible = "nvidia,tegra234", },
 
 	{ .compatible = "qcom,apq8096", },
 	{ .compatible = "qcom,msm8996", },
@@ -143,6 +144,7 @@ static const struct of_device_id blocklist[] __initconst = {
 	{ .compatible = "qcom,sc8180x", },
 	{ .compatible = "qcom,sdm845", },
 	{ .compatible = "qcom,sm6350", },
+	{ .compatible = "qcom,sm6375", },
 	{ .compatible = "qcom,sm8150", },
 	{ .compatible = "qcom,sm8250", },
 	{ .compatible = "qcom,sm8350", },
drivers/cpufreq/cpufreq_governor.c +13 -7
index 63f7c219062b..55c80319d268 100644
@@ -388,6 +388,15 @@ static void free_policy_dbs_info(struct policy_dbs_info *policy_dbs,
 	gov->free(policy_dbs);
 }
 
+static void cpufreq_dbs_data_release(struct kobject *kobj)
+{
+	struct dbs_data *dbs_data = to_dbs_data(to_gov_attr_set(kobj));
+	struct dbs_governor *gov = dbs_data->gov;
+
+	gov->exit(dbs_data);
+	kfree(dbs_data);
+}
+
 int cpufreq_dbs_governor_init(struct cpufreq_policy *policy)
 {
 	struct dbs_governor *gov = dbs_governor_of(policy);
@@ -425,6 +434,7 @@ int cpufreq_dbs_governor_init(struct cpufreq_policy *policy)
 		goto free_policy_dbs_info;
 	}
 
+	dbs_data->gov = gov;
 	gov_attr_set_init(&dbs_data->attr_set, &policy_dbs->list);
 
 	ret = gov->init(dbs_data);
@@ -447,6 +457,7 @@ int cpufreq_dbs_governor_init(struct cpufreq_policy *policy)
 	policy->governor_data = policy_dbs;
 
 	gov->kobj_type.sysfs_ops = &governor_sysfs_ops;
+	gov->kobj_type.release = cpufreq_dbs_data_release;
 	ret = kobject_init_and_add(&dbs_data->attr_set.kobj, &gov->kobj_type,
 				   get_governor_parent_kobj(policy),
 				   "%s", gov->gov.name);
@@ -488,13 +499,8 @@ void cpufreq_dbs_governor_exit(struct cpufreq_policy *policy)
 
 	policy->governor_data = NULL;
 
-	if (!count) {
-		if (!have_governor_per_policy())
-			gov->gdbs_data = NULL;
-
-		gov->exit(dbs_data);
-		kfree(dbs_data);
-	}
+	if (!count && !have_governor_per_policy())
+		gov->gdbs_data = NULL;
 
 	free_policy_dbs_info(policy_dbs, gov);
 
drivers/cpufreq/cpufreq_governor.h +1 -0
index bab8e6140377..a6de26318abb 100644
@@ -37,6 +37,7 @@ enum {OD_NORMAL_SAMPLE, OD_SUB_SAMPLE};
 /* Governor demand based switching data (per-policy or global). */
 struct dbs_data {
 	struct gov_attr_set attr_set;
+	struct dbs_governor *gov;
 	void *tuners;
 	unsigned int ignore_nice_load;
 	unsigned int sampling_rate;
drivers/cpufreq/cpufreq_governor_attr_set.c +0 -5
index a6f365b9cc1a..771770ea0ed0 100644
@@ -8,11 +8,6 @@
 
 #include "cpufreq_governor.h"
 
-static inline struct gov_attr_set *to_gov_attr_set(struct kobject *kobj)
-{
-	return container_of(kobj, struct gov_attr_set, kobj);
-}
-
 static inline struct governor_attr *to_gov_attr(struct attribute *attr)
 {
 	return container_of(attr, struct governor_attr, attr);
drivers/dma/dmaengine.c +4 -3
index af3ee288bc11..4ec7bb58c195 100644
@@ -451,7 +451,8 @@ static int dma_chan_get(struct dma_chan *chan)
 	/* The channel is already in use, update client count */
 	if (chan->client_count) {
 		__module_get(owner);
-		goto out;
+		chan->client_count++;
+		return 0;
 	}
 
 	if (!try_module_get(owner))
@@ -470,11 +471,11 @@ static int dma_chan_get(struct dma_chan *chan)
 			goto err_out;
 	}
 
+	chan->client_count++;
+
 	if (!dma_has_cap(DMA_PRIVATE, chan->device->cap_mask))
 		balance_ref_count(chan);
 
-out:
-	chan->client_count++;
 	return 0;
 
 err_out:
drivers/dma/ptdma/ptdma-dev.c +4 -3
index daafea5bc35d..bca4063b0dce 100644
@@ -71,12 +71,13 @@ static int pt_core_execute_cmd(struct ptdma_desc *desc, struct pt_cmd_queue *cmd
 	bool soc = FIELD_GET(DWORD0_SOC, desc->dw0);
 	u8 *q_desc = (u8 *)&cmd_q->qbase[cmd_q->qidx];
 	u32 tail;
+	unsigned long flags;
 
 	if (soc) {
 		desc->dw0 |= FIELD_PREP(DWORD0_IOC, desc->dw0);
 		desc->dw0 &= ~DWORD0_SOC;
 	}
-	mutex_lock(&cmd_q->q_mutex);
+	spin_lock_irqsave(&cmd_q->q_lock, flags);
 
 	/* Copy 32-byte command descriptor to hw queue. */
 	memcpy(q_desc, desc, 32);
@@ -91,7 +92,7 @@ static int pt_core_execute_cmd(struct ptdma_desc *desc, struct pt_cmd_queue *cmd
 
 	/* Turn the queue back on using our cached control register */
 	pt_start_queue(cmd_q);
-	mutex_unlock(&cmd_q->q_mutex);
+	spin_unlock_irqrestore(&cmd_q->q_lock, flags);
 
 	return 0;
 }
@@ -197,7 +198,7 @@ int pt_core_init(struct pt_device *pt)
 
 	cmd_q->pt = pt;
 	cmd_q->dma_pool = dma_pool;
-	mutex_init(&cmd_q->q_mutex);
+	spin_lock_init(&cmd_q->q_lock);
 
 	/* Page alignment satisfies our needs for N <= 128 */
 	cmd_q->qsize = Q_SIZE(Q_DESC_SIZE);
drivers/dma/ptdma/ptdma.h +1 -1
index afbf192c9230..0f0b400a864e 100644
@@ -196,7 +196,7 @@ struct pt_cmd_queue {
 	struct ptdma_desc *qbase;
 
 	/* Aligned queue start address (per requirement) */
-	struct mutex q_mutex ____cacheline_aligned;
+	spinlock_t q_lock ____cacheline_aligned;
 	unsigned int qidx;
 
 	unsigned int qsize;
drivers/dma/ti/k3-udma.c +3 -2
index 75f2a0006c73..d796e50dfe99 100644
@@ -760,11 +760,12 @@ static void udma_decrement_byte_counters(struct udma_chan *uc, u32 val)
 	if (uc->desc->dir == DMA_DEV_TO_MEM) {
 		udma_rchanrt_write(uc, UDMA_CHAN_RT_BCNT_REG, val);
 		udma_rchanrt_write(uc, UDMA_CHAN_RT_SBCNT_REG, val);
-		udma_rchanrt_write(uc, UDMA_CHAN_RT_PEER_BCNT_REG, val);
+		if (uc->config.ep_type != PSIL_EP_NATIVE)
+			udma_rchanrt_write(uc, UDMA_CHAN_RT_PEER_BCNT_REG, val);
 	} else {
 		udma_tchanrt_write(uc, UDMA_CHAN_RT_BCNT_REG, val);
 		udma_tchanrt_write(uc, UDMA_CHAN_RT_SBCNT_REG, val);
-		if (!uc->bchan)
+		if (!uc->bchan && uc->config.ep_type != PSIL_EP_NATIVE)
 			udma_tchanrt_write(uc, UDMA_CHAN_RT_PEER_BCNT_REG, val);
 	}
 }
drivers/dma/xilinx/xilinx_dma.c +3 -1
index 4273150b68dc..edc2bb8f0523 100644
@@ -3138,8 +3138,10 @@ static int xilinx_dma_probe(struct platform_device *pdev)
 	/* Initialize the channels */
 	for_each_child_of_node(node, child) {
 		err = xilinx_dma_child_probe(xdev, child);
-		if (err < 0)
+		if (err < 0) {
+			of_node_put(child);
 			goto error;
+		}
 	}
 
 	if (xdev->dma_config->dmatype == XDMA_TYPE_VDMA) {
drivers/edac/edac_device.c +7 -8
index 8220ce5b87ca..85c229985f90 100644
@@ -34,6 +34,9 @@
 static DEFINE_MUTEX(device_ctls_mutex);
 static LIST_HEAD(edac_device_list);
 
+/* Default workqueue processing interval on this instance, in msecs */
+#define DEFAULT_POLL_INTERVAL 1000
+
 #ifdef CONFIG_EDAC_DEBUG
 static void edac_device_dump_device(struct edac_device_ctl_info *edac_dev)
 {
@@ -366,7 +369,7 @@ static void edac_device_workq_function(struct work_struct *work_req)
 	 * whole one second to save timers firing all over the period
 	 * between integral seconds
 	 */
-	if (edac_dev->poll_msec == 1000)
+	if (edac_dev->poll_msec == DEFAULT_POLL_INTERVAL)
 		edac_queue_work(&edac_dev->work, round_jiffies_relative(edac_dev->delay));
 	else
 		edac_queue_work(&edac_dev->work, edac_dev->delay);
@@ -396,7 +399,7 @@ static void edac_device_workq_setup(struct edac_device_ctl_info *edac_dev,
 	 * timers firing on sub-second basis, while they are happy
 	 * to fire together on the 1 second exactly
 	 */
-	if (edac_dev->poll_msec == 1000)
+	if (edac_dev->poll_msec == DEFAULT_POLL_INTERVAL)
 		edac_queue_work(&edac_dev->work, round_jiffies_relative(edac_dev->delay));
 	else
 		edac_queue_work(&edac_dev->work, edac_dev->delay);
@@ -430,7 +433,7 @@ void edac_device_reset_delay_period(struct edac_device_ctl_info *edac_dev,
 	edac_dev->delay	    = msecs_to_jiffies(msec);
 
 	/* See comment in edac_device_workq_setup() above */
-	if (edac_dev->poll_msec == 1000)
+	if (edac_dev->poll_msec == DEFAULT_POLL_INTERVAL)
 		edac_mod_work(&edac_dev->work, round_jiffies_relative(edac_dev->delay));
 	else
 		edac_mod_work(&edac_dev->work, edac_dev->delay);
@@ -472,11 +475,7 @@ int edac_device_add_device(struct edac_device_ctl_info *edac_dev)
 		/* This instance is NOW RUNNING */
 		edac_dev->op_state = OP_RUNNING_POLL;
 
-		/*
-		 * enable workq processing on this instance,
-		 * default = 1000 msec
-		 */
-		edac_device_workq_setup(edac_dev, 1000);
+		edac_device_workq_setup(edac_dev, edac_dev->poll_msec ?: DEFAULT_POLL_INTERVAL);
 	} else {
 		edac_dev->op_state = OP_RUNNING_INTERRUPT;
 	}
drivers/edac/highbank_mc_edac.c +5 -2
index 61b76ec226af..19fba258ae10 100644
@@ -174,8 +174,10 @@ static int highbank_mc_probe(struct platform_device *pdev)
 	drvdata = mci->pvt_info;
 	platform_set_drvdata(pdev, mci);
 
-	if (!devres_open_group(&pdev->dev, NULL, GFP_KERNEL))
-		return -ENOMEM;
+	if (!devres_open_group(&pdev->dev, NULL, GFP_KERNEL)) {
+		res = -ENOMEM;
+		goto free;
+	}
 
 	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (!r) {
@@ -243,6 +245,7 @@ static int highbank_mc_probe(struct platform_device *pdev)
 	edac_mc_del_mc(&pdev->dev);
 err:
 	devres_release_group(&pdev->dev, NULL);
+free:
 	edac_mc_free(mci);
 	return res;
 }
drivers/edac/qcom_edac.c +2 -3
index 97a27e42dd61..c45519f59dc1 100644
@@ -252,7 +252,7 @@ dump_syn_reg_values(struct llcc_drv_data *drv, u32 bank, int err_type)
 static int
 dump_syn_reg(struct edac_device_ctl_info *edev_ctl, int err_type, u32 bank)
 {
-	struct llcc_drv_data *drv = edev_ctl->pvt_info;
+	struct llcc_drv_data *drv = edev_ctl->dev->platform_data;
 	int ret;
 
 	ret = dump_syn_reg_values(drv, bank, err_type);
@@ -289,7 +289,7 @@ static irqreturn_t
 llcc_ecc_irq_handler(int irq, void *edev_ctl)
 {
 	struct edac_device_ctl_info *edac_dev_ctl = edev_ctl;
-	struct llcc_drv_data *drv = edac_dev_ctl->pvt_info;
+	struct llcc_drv_data *drv = edac_dev_ctl->dev->platform_data;
 	irqreturn_t irq_rc = IRQ_NONE;
 	u32 drp_error, trp_error, i;
 	int ret;
@@ -358,7 +358,6 @@ static int qcom_llcc_edac_probe(struct platform_device *pdev)
 	edev_ctl->dev_name = dev_name(dev);
 	edev_ctl->ctl_name = "llcc";
 	edev_ctl->panic_on_ue = LLCC_ERP_PANIC_ON_UE;
-	edev_ctl->pvt_info = llcc_driv_data;
 
 	rc = edac_device_add_device(edev_ctl);
 	if (rc)
drivers/firmware/arm_scmi/shmem.c +6 -3
index 0e3eaea5d852..56a1f61aa3ff 100644
@@ -58,10 +58,11 @@ u32 shmem_read_header(struct scmi_shared_mem __iomem *shmem)
 void shmem_fetch_response(struct scmi_shared_mem __iomem *shmem,
 			  struct scmi_xfer *xfer)
 {
+	size_t len = ioread32(&shmem->length);
+
 	xfer->hdr.status = ioread32(shmem->msg_payload);
 	/* Skip the length of header and status in shmem area i.e 8 bytes */
-	xfer->rx.len = min_t(size_t, xfer->rx.len,
-			     ioread32(&shmem->length) - 8);
+	xfer->rx.len = min_t(size_t, xfer->rx.len, len > 8 ? len - 8 : 0);
 
 	/* Take a copy to the rx buffer.. */
 	memcpy_fromio(xfer->rx.buf, shmem->msg_payload + 4, xfer->rx.len);
@@ -70,8 +71,10 @@ void shmem_fetch_response(struct scmi_shared_mem __iomem *shmem,
 void shmem_fetch_notification(struct scmi_shared_mem __iomem *shmem,
 			      size_t max_len, struct scmi_xfer *xfer)
 {
+	size_t len = ioread32(&shmem->length);
+
 	/* Skip only the length of header in shmem area i.e 4 bytes */
-	xfer->rx.len = min_t(size_t, max_len, ioread32(&shmem->length) - 4);
+	xfer->rx.len = min_t(size_t, max_len, len > 4 ? len - 4 : 0);
 
 	/* Take a copy to the rx buffer.. */
 	memcpy_fromio(xfer->rx.buf, shmem->msg_payload, xfer->rx.len);
drivers/firmware/google/coreboot_table.c +7 -2
index 9ca21feb9d45..f3694d347801 100644
@@ -93,7 +93,12 @@ static int coreboot_table_populate(struct device *dev, void *ptr)
 	for (i = 0; i < header->table_entries; i++) {
 		entry = ptr_entry;
 
-		device = kzalloc(sizeof(struct device) + entry->size, GFP_KERNEL);
+		if (entry->size < sizeof(*entry)) {
+			dev_warn(dev, "coreboot table entry too small!\n");
+			return -EINVAL;
+		}
+
+		device = kzalloc(sizeof(device->dev) + entry->size, GFP_KERNEL);
 		if (!device)
 			return -ENOMEM;
 
@@ -101,7 +106,7 @@ static int coreboot_table_populate(struct device *dev, void *ptr)
 		device->dev.parent = dev;
 		device->dev.bus = &coreboot_bus_type;
 		device->dev.release = coreboot_device_release;
-		memcpy(&device->entry, ptr_entry, entry->size);
+		memcpy(device->raw, ptr_entry, entry->size);
 
 		ret = device_register(&device->dev);
 		if (ret) {
drivers/firmware/google/coreboot_table.h +1 -0
index beb778674acd..4a89277b99a3 100644
@@ -66,6 +66,7 @@ struct coreboot_device {
 		struct coreboot_table_entry entry;
 		struct lb_cbmem_ref cbmem_ref;
 		struct lb_framebuffer framebuffer;
+		DECLARE_FLEX_ARRAY(u8, raw);
 	};
 };
 
drivers/gpio/gpio-amdpt.c +5 -5
index 44398992ae15..dba4836a18f8 100644
@@ -35,19 +35,19 @@ static int pt_gpio_request(struct gpio_chip *gc, unsigned offset)
 
 	dev_dbg(gc->parent, "pt_gpio_request offset=%x\n", offset);
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 
 	using_pins = readl(pt_gpio->reg_base + PT_SYNC_REG);
 	if (using_pins & BIT(offset)) {
 		dev_warn(gc->parent, "PT GPIO pin %x reconfigured\n",
 			 offset);
-		spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+		raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 		return -EINVAL;
 	}
 
 	writel(using_pins | BIT(offset), pt_gpio->reg_base + PT_SYNC_REG);
 
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 
 	return 0;
 }
@@ -58,13 +58,13 @@ static void pt_gpio_free(struct gpio_chip *gc, unsigned offset)
 	unsigned long flags;
 	u32 using_pins;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 
 	using_pins = readl(pt_gpio->reg_base + PT_SYNC_REG);
 	using_pins &= ~BIT(offset);
 	writel(using_pins, pt_gpio->reg_base + PT_SYNC_REG);
 
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 
 	dev_dbg(gc->parent, "pt_gpio_free offset=%x\n", offset);
 }
drivers/gpio/gpio-brcmstb.c +6 -6
index 895a79936248..c5d85e931f2a 100644
@@ -92,9 +92,9 @@ brcmstb_gpio_get_active_irqs(struct brcmstb_gpio_bank *bank)
 	unsigned long status;
 	unsigned long flags;
 
-	spin_lock_irqsave(&bank->gc.bgpio_lock, flags);
+	raw_spin_lock_irqsave(&bank->gc.bgpio_lock, flags);
 	status = __brcmstb_gpio_get_active_irqs(bank);
-	spin_unlock_irqrestore(&bank->gc.bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&bank->gc.bgpio_lock, flags);
 
 	return status;
 }
@@ -114,14 +114,14 @@ static void brcmstb_gpio_set_imask(struct brcmstb_gpio_bank *bank,
 	u32 imask;
 	unsigned long flags;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 	imask = gc->read_reg(priv->reg_base + GIO_MASK(bank->id));
 	if (enable)
 		imask |= mask;
 	else
 		imask &= ~mask;
 	gc->write_reg(priv->reg_base + GIO_MASK(bank->id), imask);
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 }
 
 static int brcmstb_gpio_to_irq(struct gpio_chip *gc, unsigned offset)
@@ -204,7 +204,7 @@ static int brcmstb_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 		return -EINVAL;
 	}
 
-	spin_lock_irqsave(&bank->gc.bgpio_lock, flags);
+	raw_spin_lock_irqsave(&bank->gc.bgpio_lock, flags);
 
 	iedge_config = bank->gc.read_reg(priv->reg_base +
 			GIO_EC(bank->id)) & ~mask;
@@ -220,7 +220,7 @@ static int brcmstb_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 	bank->gc.write_reg(priv->reg_base + GIO_LEVEL(bank->id),
 			ilevel | level);
 
-	spin_unlock_irqrestore(&bank->gc.bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&bank->gc.bgpio_lock, flags);
 	return 0;
 }
 
drivers/gpio/gpio-cadence.c +6 -6
index 562f8f7e7d1f..137aea49ba02 100644
@@ -41,12 +41,12 @@ static int cdns_gpio_request(struct gpio_chip *chip, unsigned int offset)
 	struct cdns_gpio_chip *cgpio = gpiochip_get_data(chip);
 	unsigned long flags;
 
-	spin_lock_irqsave(&chip->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&chip->bgpio_lock, flags);
 
 	iowrite32(ioread32(cgpio->regs + CDNS_GPIO_BYPASS_MODE) & ~BIT(offset),
 		  cgpio->regs + CDNS_GPIO_BYPASS_MODE);
 
-	spin_unlock_irqrestore(&chip->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&chip->bgpio_lock, flags);
 	return 0;
 }
 
@@ -55,13 +55,13 @@ static void cdns_gpio_free(struct gpio_chip *chip, unsigned int offset)
 	struct cdns_gpio_chip *cgpio = gpiochip_get_data(chip);
 	unsigned long flags;
 
-	spin_lock_irqsave(&chip->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&chip->bgpio_lock, flags);
 
 	iowrite32(ioread32(cgpio->regs + CDNS_GPIO_BYPASS_MODE) |
 		  (BIT(offset) & cgpio->bypass_orig),
 		  cgpio->regs + CDNS_GPIO_BYPASS_MODE);
 
-	spin_unlock_irqrestore(&chip->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&chip->bgpio_lock, flags);
 }
 
 static void cdns_gpio_irq_mask(struct irq_data *d)
@@ -90,7 +90,7 @@ static int cdns_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 	u32 mask = BIT(d->hwirq);
 	int ret = 0;
 
-	spin_lock_irqsave(&chip->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&chip->bgpio_lock, flags);
 
 	int_value = ioread32(cgpio->regs + CDNS_GPIO_IRQ_VALUE) & ~mask;
 	int_type = ioread32(cgpio->regs + CDNS_GPIO_IRQ_TYPE) & ~mask;
@@ -115,7 +115,7 @@ static int cdns_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 	iowrite32(int_type, cgpio->regs + CDNS_GPIO_IRQ_TYPE);
 
 err_irq_type:
-	spin_unlock_irqrestore(&chip->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&chip->bgpio_lock, flags);
 	return ret;
 }
 
drivers/gpio/gpio-dwapb.c +18 -18
index e981e7a46fc1..a503f37001eb 100644
@@ -242,9 +242,9 @@ static void dwapb_irq_ack(struct irq_data *d)
 	u32 val = BIT(irqd_to_hwirq(d));
 	unsigned long flags;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 	dwapb_write(gpio, GPIO_PORTA_EOI, val);
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 }
 
 static void dwapb_irq_mask(struct irq_data *d)
@@ -254,10 +254,10 @@ static void dwapb_irq_mask(struct irq_data *d)
 	unsigned long flags;
 	u32 val;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 	val = dwapb_read(gpio, GPIO_INTMASK) | BIT(irqd_to_hwirq(d));
 	dwapb_write(gpio, GPIO_INTMASK, val);
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 }
 
 static void dwapb_irq_unmask(struct irq_data *d)
@@ -267,10 +267,10 @@ static void dwapb_irq_unmask(struct irq_data *d)
 	unsigned long flags;
 	u32 val;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 	val = dwapb_read(gpio, GPIO_INTMASK) & ~BIT(irqd_to_hwirq(d));
 	dwapb_write(gpio, GPIO_INTMASK, val);
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 }
 
 static void dwapb_irq_enable(struct irq_data *d)
@@ -280,11 +280,11 @@ static void dwapb_irq_enable(struct irq_data *d)
 	unsigned long flags;
 	u32 val;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 	val = dwapb_read(gpio, GPIO_INTEN);
 	val |= BIT(irqd_to_hwirq(d));
 	dwapb_write(gpio, GPIO_INTEN, val);
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 }
 
 static void dwapb_irq_disable(struct irq_data *d)
@@ -294,11 +294,11 @@ static void dwapb_irq_disable(struct irq_data *d)
 	unsigned long flags;
 	u32 val;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 	val = dwapb_read(gpio, GPIO_INTEN);
 	val &= ~BIT(irqd_to_hwirq(d));
 	dwapb_write(gpio, GPIO_INTEN, val);
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 }
 
 static int dwapb_irq_set_type(struct irq_data *d, u32 type)
@@ -308,7 +308,7 @@ static int dwapb_irq_set_type(struct irq_data *d, u32 type)
 	irq_hw_number_t bit = irqd_to_hwirq(d);
 	unsigned long level, polarity, flags;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 	level = dwapb_read(gpio, GPIO_INTTYPE_LEVEL);
 	polarity = dwapb_read(gpio, GPIO_INT_POLARITY);
 
@@ -343,7 +343,7 @@ static int dwapb_irq_set_type(struct irq_data *d, u32 type)
 	dwapb_write(gpio, GPIO_INTTYPE_LEVEL, level);
 	if (type != IRQ_TYPE_EDGE_BOTH)
 		dwapb_write(gpio, GPIO_INT_POLARITY, polarity);
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 
 	return 0;
 }
@@ -373,7 +373,7 @@ static int dwapb_gpio_set_debounce(struct gpio_chip *gc,
 	unsigned long flags, val_deb;
 	unsigned long mask = BIT(offset);
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 
 	val_deb = dwapb_read(gpio, GPIO_PORTA_DEBOUNCE);
 	if (debounce)
@@ -382,7 +382,7 @@ static int dwapb_gpio_set_debounce(struct gpio_chip *gc,
 		val_deb &= ~mask;
 	dwapb_write(gpio, GPIO_PORTA_DEBOUNCE, val_deb);
 
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 
 	return 0;
 }
@@ -738,7 +738,7 @@ static int dwapb_gpio_suspend(struct device *dev)
 	unsigned long flags;
 	int i;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 	for (i = 0; i < gpio->nr_ports; i++) {
 		unsigned int offset;
 		unsigned int idx = gpio->ports[i].idx;
@@ -765,7 +765,7 @@ static int dwapb_gpio_suspend(struct device *dev)
 			dwapb_write(gpio, GPIO_INTMASK, ~ctx->wake_en);
 		}
 	}
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 
 	clk_bulk_disable_unprepare(DWAPB_NR_CLOCKS, gpio->clks);
 
@@ -785,7 +785,7 @@ static int dwapb_gpio_resume(struct device *dev)
 		return err;
 	}
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 	for (i = 0; i < gpio->nr_ports; i++) {
 		unsigned int offset;
 		unsigned int idx = gpio->ports[i].idx;
@@ -812,7 +812,7 @@ static int dwapb_gpio_resume(struct device *dev)
 			dwapb_write(gpio, GPIO_PORTA_EOI, 0xffffffff);
 		}
 	}
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 
 	return 0;
 }
drivers/gpio/gpio-grgpio.c +15 -15
index f954359c9544..21204a5dca3d 100644
@@ -145,7 +145,7 @@ static int grgpio_irq_set_type(struct irq_data *d, unsigned int type)
 		return -EINVAL;
 	}
 
-	spin_lock_irqsave(&priv->gc.bgpio_lock, flags);
+	raw_spin_lock_irqsave(&priv->gc.bgpio_lock, flags);
 
 	ipol = priv->gc.read_reg(priv->regs + GRGPIO_IPOL) & ~mask;
 	iedge = priv->gc.read_reg(priv->regs + GRGPIO_IEDGE) & ~mask;
@@ -153,7 +153,7 @@ static int grgpio_irq_set_type(struct irq_data *d, unsigned int type)
 	priv->gc.write_reg(priv->regs + GRGPIO_IPOL, ipol | pol);
 	priv->gc.write_reg(priv->regs + GRGPIO_IEDGE, iedge | edge);
 
-	spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags);
 
 	return 0;
 }
@@ -164,11 +164,11 @@ static void grgpio_irq_mask(struct irq_data *d)
 	int offset = d->hwirq;
 	unsigned long flags;
 
-	spin_lock_irqsave(&priv->gc.bgpio_lock, flags);
+	raw_spin_lock_irqsave(&priv->gc.bgpio_lock, flags);
 
 	grgpio_set_imask(priv, offset, 0);
 
-	spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags);
 }
 
 static void grgpio_irq_unmask(struct irq_data *d)
@@ -177,11 +177,11 @@ static void grgpio_irq_unmask(struct irq_data *d)
 	int offset = d->hwirq;
 	unsigned long flags;
 
-	spin_lock_irqsave(&priv->gc.bgpio_lock, flags);
+	raw_spin_lock_irqsave(&priv->gc.bgpio_lock, flags);
 
 	grgpio_set_imask(priv, offset, 1);
 
-	spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags);
 }
 
 static struct irq_chip grgpio_irq_chip = {
@@ -199,7 +199,7 @@ static irqreturn_t grgpio_irq_handler(int irq, void *dev)
 	int i;
 	int match = 0;
 
-	spin_lock_irqsave(&priv->gc.bgpio_lock, flags);
+	raw_spin_lock_irqsave(&priv->gc.bgpio_lock, flags);
 
 	/*
 	 * For each gpio line, call its interrupt handler if it its underlying
@@ -215,7 +215,7 @@ static irqreturn_t grgpio_irq_handler(int irq, void *dev)
 		}
 	}
 
-	spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags);
 
 	if (!match)
 		dev_warn(priv->dev, "No gpio line matched irq %d\n", irq);
@@ -247,13 +247,13 @@ static int grgpio_irq_map(struct irq_domain *d, unsigned int irq,
 	dev_dbg(priv->dev, "Mapping irq %d for gpio line %d\n",
 		irq, offset);
 
-	spin_lock_irqsave(&priv->gc.bgpio_lock, flags);
+	raw_spin_lock_irqsave(&priv->gc.bgpio_lock, flags);
 
 	/* Request underlying irq if not already requested */
 	lirq->irq = irq;
 	uirq = &priv->uirqs[lirq->index];
 	if (uirq->refcnt == 0) {
-		spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags);
+		raw_spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags);
 		ret = request_irq(uirq->uirq, grgpio_irq_handler, 0,
 				  dev_name(priv->dev), priv);
 		if (ret) {
@@ -262,11 +262,11 @@ static int grgpio_irq_map(struct irq_domain *d, unsigned int irq,
 				uirq->uirq);
 			return ret;
 		}
-		spin_lock_irqsave(&priv->gc.bgpio_lock, flags);
+		raw_spin_lock_irqsave(&priv->gc.bgpio_lock, flags);
 	}
 	uirq->refcnt++;
 
-	spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags);
 
 	/* Setup irq  */
 	irq_set_chip_data(irq, priv);
@@ -290,7 +290,7 @@ static void grgpio_irq_unmap(struct irq_domain *d, unsigned int irq)
 	irq_set_chip_and_handler(irq, NULL, NULL);
 	irq_set_chip_data(irq, NULL);
 
-	spin_lock_irqsave(&priv->gc.bgpio_lock, flags);
+	raw_spin_lock_irqsave(&priv->gc.bgpio_lock, flags);
 
 	/* Free underlying irq if last user unmapped */
 	index = -1;
@@ -309,13 +309,13 @@ static void grgpio_irq_unmap(struct irq_domain *d, unsigned int irq)
 		uirq = &priv->uirqs[lirq->index];
 		uirq->refcnt--;
 		if (uirq->refcnt == 0) {
-			spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags);
+			raw_spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags);
 			free_irq(uirq->uirq, priv);
 			return;
 		}
 	}
 
-	spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&priv->gc.bgpio_lock, flags);
 }
 
 static const struct irq_domain_ops grgpio_irq_domain_ops = {
drivers/gpio/gpio-hlwd.c +9 -9
index 641719a96a1a..4e13e937f832 100644
@@ -65,7 +65,7 @@ static void hlwd_gpio_irqhandler(struct irq_desc *desc)
 	int hwirq;
 	u32 emulated_pending;
 
-	spin_lock_irqsave(&hlwd->gpioc.bgpio_lock, flags);
+	raw_spin_lock_irqsave(&hlwd->gpioc.bgpio_lock, flags);
 	pending = ioread32be(hlwd->regs + HW_GPIOB_INTFLAG);
 	pending &= ioread32be(hlwd->regs + HW_GPIOB_INTMASK);
 
@@ -93,7 +93,7 @@ static void hlwd_gpio_irqhandler(struct irq_desc *desc)
 		/* Mark emulated interrupts as pending */
 		pending |= rising | falling;
 	}
-	spin_unlock_irqrestore(&hlwd->gpioc.bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&hlwd->gpioc.bgpio_lock, flags);
 
 	chained_irq_enter(chip, desc);
 
@@ -118,11 +118,11 @@ static void hlwd_gpio_irq_mask(struct irq_data *data)
 	unsigned long flags;
 	u32 mask;
 
-	spin_lock_irqsave(&hlwd->gpioc.bgpio_lock, flags);
+	raw_spin_lock_irqsave(&hlwd->gpioc.bgpio_lock, flags);
 	mask = ioread32be(hlwd->regs + HW_GPIOB_INTMASK);
 	mask &= ~BIT(data->hwirq);
 	iowrite32be(mask, hlwd->regs + HW_GPIOB_INTMASK);
-	spin_unlock_irqrestore(&hlwd->gpioc.bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&hlwd->gpioc.bgpio_lock, flags);
 }
 
 static void hlwd_gpio_irq_unmask(struct irq_data *data)
@@ -132,11 +132,11 @@ static void hlwd_gpio_irq_unmask(struct irq_data *data)
 	unsigned long flags;
 	u32 mask;
 
-	spin_lock_irqsave(&hlwd->gpioc.bgpio_lock, flags);
+	raw_spin_lock_irqsave(&hlwd->gpioc.bgpio_lock, flags);
 	mask = ioread32be(hlwd->regs + HW_GPIOB_INTMASK);
 	mask |= BIT(data->hwirq);
 	iowrite32be(mask, hlwd->regs + HW_GPIOB_INTMASK);
-	spin_unlock_irqrestore(&hlwd->gpioc.bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&hlwd->gpioc.bgpio_lock, flags);
 }
 
 static void hlwd_gpio_irq_enable(struct irq_data *data)
@@ -173,7 +173,7 @@ static int hlwd_gpio_irq_set_type(struct irq_data *data, unsigned int flow_type)
 	unsigned long flags;
 	u32 level;
 
-	spin_lock_irqsave(&hlwd->gpioc.bgpio_lock, flags);
+	raw_spin_lock_irqsave(&hlwd->gpioc.bgpio_lock, flags);
 
 	hlwd->edge_emulation &= ~BIT(data->hwirq);
 
@@ -194,11 +194,11 @@ static int hlwd_gpio_irq_set_type(struct irq_data *data, unsigned int flow_type)
 		hlwd_gpio_irq_setup_emulation(hlwd, data->hwirq, flow_type);
 		break;
 	default:
-		spin_unlock_irqrestore(&hlwd->gpioc.bgpio_lock, flags);
+		raw_spin_unlock_irqrestore(&hlwd->gpioc.bgpio_lock, flags);
 		return -EINVAL;
 	}
 
-	spin_unlock_irqrestore(&hlwd->gpioc.bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&hlwd->gpioc.bgpio_lock, flags);
 	return 0;
 }
 
drivers/gpio/gpio-idt3243x.c +6 -6
index 52b8b72ded77..1cafdf46f875 100644
@@ -57,7 +57,7 @@ static int idt_gpio_irq_set_type(struct irq_data *d, unsigned int flow_type)
 	if (sense == IRQ_TYPE_NONE || (sense & IRQ_TYPE_EDGE_BOTH))
 		return -EINVAL;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 
 	ilevel = readl(ctrl->gpio + IDT_GPIO_ILEVEL);
 	if (sense & IRQ_TYPE_LEVEL_HIGH)
@@ -68,7 +68,7 @@ static int idt_gpio_irq_set_type(struct irq_data *d, unsigned int flow_type)
 	writel(ilevel, ctrl->gpio + IDT_GPIO_ILEVEL);
 	irq_set_handler_locked(d, handle_level_irq);
 
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 	return 0;
 }
 
@@ -86,12 +86,12 @@ static void idt_gpio_mask(struct irq_data *d)
 	struct idt_gpio_ctrl *ctrl = gpiochip_get_data(gc);
 	unsigned long flags;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 
 	ctrl->mask_cache |= BIT(d->hwirq);
 	writel(ctrl->mask_cache, ctrl->pic + IDT_PIC_IRQ_MASK);
 
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 }
 
 static void idt_gpio_unmask(struct irq_data *d)
@@ -100,12 +100,12 @@ static void idt_gpio_unmask(struct irq_data *d)
 	struct idt_gpio_ctrl *ctrl = gpiochip_get_data(gc);
 	unsigned long flags;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 
 	ctrl->mask_cache &= ~BIT(d->hwirq);
 	writel(ctrl->mask_cache, ctrl->pic + IDT_PIC_IRQ_MASK);
 
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 }
 
 static int idt_gpio_irq_init_hw(struct gpio_chip *gc)
drivers/gpio/gpio-ixp4xx.c +2 -2
index b3b050604e0b..6b184502fa3f 100644
@@ -128,7 +128,7 @@ static int ixp4xx_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 		int_reg = IXP4XX_REG_GPIT1;
 	}
 
-	spin_lock_irqsave(&g->gc.bgpio_lock, flags);
+	raw_spin_lock_irqsave(&g->gc.bgpio_lock, flags);
 
 	/* Clear the style for the appropriate pin */
 	val = __raw_readl(g->base + int_reg);
@@ -147,7 +147,7 @@ static int ixp4xx_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 	val |= BIT(d->hwirq);
 	__raw_writel(val, g->base + IXP4XX_REG_GPOE);
 
-	spin_unlock_irqrestore(&g->gc.bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&g->gc.bgpio_lock, flags);
 
 	/* This parent only accept level high (asserted) */
 	return irq_chip_set_type_parent(d, IRQ_TYPE_LEVEL_HIGH);
drivers/gpio/gpio-loongson1.c +4 -4
index 1b1ee94eeab4..5d90b3bc5a25 100644
@@ -25,10 +25,10 @@ static int ls1x_gpio_request(struct gpio_chip *gc, unsigned int offset)
 {
 	unsigned long flags;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 	__raw_writel(__raw_readl(gpio_reg_base + GPIO_CFG) | BIT(offset),
 		     gpio_reg_base + GPIO_CFG);
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 
 	return 0;
 }
@@ -37,10 +37,10 @@ static void ls1x_gpio_free(struct gpio_chip *gc, unsigned int offset)
 {
 	unsigned long flags;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 	__raw_writel(__raw_readl(gpio_reg_base + GPIO_CFG) & ~BIT(offset),
 		     gpio_reg_base + GPIO_CFG);
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 }
 
 static int ls1x_gpio_probe(struct platform_device *pdev)
drivers/gpio/gpio-menz127.c +4 -4
index 1e21c661d79d..a035a9bcb57c 100644
@@ -64,7 +64,7 @@ static int men_z127_debounce(struct gpio_chip *gc, unsigned gpio,
 		debounce /= 50;
 	}
 
-	spin_lock(&gc->bgpio_lock);
+	raw_spin_lock(&gc->bgpio_lock);
 
 	db_en = readl(priv->reg_base + MEN_Z127_DBER);
 
@@ -79,7 +79,7 @@ static int men_z127_debounce(struct gpio_chip *gc, unsigned gpio,
 	writel(db_en, priv->reg_base + MEN_Z127_DBER);
 	writel(db_cnt, priv->reg_base + GPIO_TO_DBCNT_REG(gpio));
 
-	spin_unlock(&gc->bgpio_lock);
+	raw_spin_unlock(&gc->bgpio_lock);
 
 	return 0;
 }
@@ -91,7 +91,7 @@ static int men_z127_set_single_ended(struct gpio_chip *gc,
 	struct men_z127_gpio *priv = gpiochip_get_data(gc);
 	u32 od_en;
 
-	spin_lock(&gc->bgpio_lock);
+	raw_spin_lock(&gc->bgpio_lock);
 	od_en = readl(priv->reg_base + MEN_Z127_ODER);
 
 	if (param == PIN_CONFIG_DRIVE_OPEN_DRAIN)
@@ -101,7 +101,7 @@ static int men_z127_set_single_ended(struct gpio_chip *gc,
 		od_en &= ~BIT(offset);
 
 	writel(od_en, priv->reg_base + MEN_Z127_ODER);
-	spin_unlock(&gc->bgpio_lock);
+	raw_spin_unlock(&gc->bgpio_lock);
 
 	return 0;
 }
drivers/gpio/gpio-mlxbf2.c +3 -3
index 40a052bc6784..5a09070e5f78 100644
@@ -120,7 +120,7 @@ static int mlxbf2_gpio_lock_acquire(struct mlxbf2_gpio_context *gs)
 	u32 arm_gpio_lock_val;
 
 	mutex_lock(yu_arm_gpio_lock_param.lock);
-	spin_lock(&gs->gc.bgpio_lock);
+	raw_spin_lock(&gs->gc.bgpio_lock);
 
 	arm_gpio_lock_val = readl(yu_arm_gpio_lock_param.io);
 
@@ -128,7 +128,7 @@ static int mlxbf2_gpio_lock_acquire(struct mlxbf2_gpio_context *gs)
 	 * When lock active bit[31] is set, ModeX is write enabled
 	 */
 	if (YU_LOCK_ACTIVE_BIT(arm_gpio_lock_val)) {
-		spin_unlock(&gs->gc.bgpio_lock);
+		raw_spin_unlock(&gs->gc.bgpio_lock);
 		mutex_unlock(yu_arm_gpio_lock_param.lock);
 		return -EINVAL;
 	}
@@ -146,7 +146,7 @@ static void mlxbf2_gpio_lock_release(struct mlxbf2_gpio_context *gs)
 	__releases(yu_arm_gpio_lock_param.lock)
 {
 	writel(YU_ARM_GPIO_LOCK_RELEASE, yu_arm_gpio_lock_param.io);
-	spin_unlock(&gs->gc.bgpio_lock);
+	raw_spin_unlock(&gs->gc.bgpio_lock);
 	mutex_unlock(yu_arm_gpio_lock_param.lock);
 }
 
drivers/gpio/gpio-mmio.c +11 -11
index c335a0309ba3..d9dff3dc92ae 100644
@@ -220,7 +220,7 @@ static void bgpio_set(struct gpio_chip *gc, unsigned int gpio, int val)
 	unsigned long mask = bgpio_line2mask(gc, gpio);
 	unsigned long flags;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 
 	if (val)
 		gc->bgpio_data |= mask;
@@ -229,7 +229,7 @@ static void bgpio_set(struct gpio_chip *gc, unsigned int gpio, int val)
 
 	gc->write_reg(gc->reg_dat, gc->bgpio_data);
 
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 }
 
 static void bgpio_set_with_clear(struct gpio_chip *gc, unsigned int gpio,
@@ -248,7 +248,7 @@ static void bgpio_set_set(struct gpio_chip *gc, unsigned int gpio, int val)
 	unsigned long mask = bgpio_line2mask(gc, gpio);
 	unsigned long flags;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 
 	if (val)
 		gc->bgpio_data |= mask;
@@ -257,7 +257,7 @@ static void bgpio_set_set(struct gpio_chip *gc, unsigned int gpio, int val)
 
 	gc->write_reg(gc->reg_set, gc->bgpio_data);
 
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 }
 
 static void bgpio_multiple_get_masks(struct gpio_chip *gc,
@@ -286,7 +286,7 @@ static void bgpio_set_multiple_single_reg(struct gpio_chip *gc,
 	unsigned long flags;
 	unsigned long set_mask, clear_mask;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 
 	bgpio_multiple_get_masks(gc, mask, bits, &set_mask, &clear_mask);
 
@@ -295,7 +295,7 @@ static void bgpio_set_multiple_single_reg(struct gpio_chip *gc,
 
 	gc->write_reg(reg, gc->bgpio_data);
 
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 }
 
 static void bgpio_set_multiple(struct gpio_chip *gc, unsigned long *mask,
@@ -347,7 +347,7 @@ static int bgpio_dir_in(struct gpio_chip *gc, unsigned int gpio)
 {
 	unsigned long flags;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 
 	gc->bgpio_dir &= ~bgpio_line2mask(gc, gpio);
 
@@ -356,7 +356,7 @@ static int bgpio_dir_in(struct gpio_chip *gc, unsigned int gpio)
 	if (gc->reg_dir_out)
 		gc->write_reg(gc->reg_dir_out, gc->bgpio_dir);
 
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 
 	return 0;
 }
@@ -387,7 +387,7 @@ static void bgpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val)
 {
 	unsigned long flags;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 
 	gc->bgpio_dir |= bgpio_line2mask(gc, gpio);
 
@@ -396,7 +396,7 @@ static void bgpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val)
 	if (gc->reg_dir_out)
 		gc->write_reg(gc->reg_dir_out, gc->bgpio_dir);
 
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 }
 
 static int bgpio_dir_out_dir_first(struct gpio_chip *gc, unsigned int gpio,
@@ -610,7 +610,7 @@ int bgpio_init(struct gpio_chip *gc, struct device *dev,
 	if (gc->bgpio_bits > BITS_PER_LONG)
 		return -EINVAL;
 
-	spin_lock_init(&gc->bgpio_lock);
+	raw_spin_lock_init(&gc->bgpio_lock);
 	gc->parent = dev;
 	gc->label = dev_name(dev);
 	gc->base = -1;
drivers/gpio/gpio-mxc.c +14 -2
index c871602fc5ba..853d9aa6b3b1 100644
@@ -18,6 +18,7 @@
 #include <linux/module.h>
 #include <linux/platform_device.h>
 #include <linux/slab.h>
+#include <linux/spinlock.h>
 #include <linux/syscore_ops.h>
 #include <linux/gpio/driver.h>
 #include <linux/of.h>
@@ -147,6 +148,7 @@ static int gpio_set_irq_type(struct irq_data *d, u32 type)
 {
 	struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
 	struct mxc_gpio_port *port = gc->private;
+	unsigned long flags;
 	u32 bit, val;
 	u32 gpio_idx = d->hwirq;
 	int edge;
@@ -185,6 +187,8 @@ static int gpio_set_irq_type(struct irq_data *d, u32 type)
 		return -EINVAL;
 	}
 
+	raw_spin_lock_irqsave(&port->gc.bgpio_lock, flags);
+
 	if (GPIO_EDGE_SEL >= 0) {
 		val = readl(port->base + GPIO_EDGE_SEL);
 		if (edge == GPIO_INT_BOTH_EDGES)
@@ -204,15 +208,20 @@ static int gpio_set_irq_type(struct irq_data *d, u32 type)
 
 	writel(1 << gpio_idx, port->base + GPIO_ISR);
 
-	return 0;
+	raw_spin_unlock_irqrestore(&port->gc.bgpio_lock, flags);
+
+	return port->gc.direction_input(&port->gc, gpio_idx);
 }
 
 static void mxc_flip_edge(struct mxc_gpio_port *port, u32 gpio)
 {
 	void __iomem *reg = port->base;
+	unsigned long flags;
 	u32 bit, val;
 	int edge;
 
+	raw_spin_lock_irqsave(&port->gc.bgpio_lock, flags);
+
 	reg += GPIO_ICR1 + ((gpio & 0x10) >> 2); /* lower or upper register */
 	bit = gpio & 0xf;
 	val = readl(reg);
@@ -227,9 +236,12 @@ static void mxc_flip_edge(struct mxc_gpio_port *port, u32 gpio)
 	} else {
 		pr_err("mxc: invalid configuration for GPIO %d: %x\n",
 		       gpio, edge);
-		return;
+		goto unlock;
 	}
 	writel(val | (edge << (bit << 1)), reg);
+
+unlock:
+	raw_spin_unlock_irqrestore(&port->gc.bgpio_lock, flags);
 }
 
 /* handle 32 interrupts in one status register */
drivers/gpio/gpio-sifive.c +6 -6
index f50236e68e88..f41123de69c5 100644
@@ -44,7 +44,7 @@ static void sifive_gpio_set_ie(struct sifive_gpio *chip, unsigned int offset)
 	unsigned long flags;
 	unsigned int trigger;
 
-	spin_lock_irqsave(&chip->gc.bgpio_lock, flags);
+	raw_spin_lock_irqsave(&chip->gc.bgpio_lock, flags);
 	trigger = (chip->irq_state & BIT(offset)) ? chip->trigger[offset] : 0;
 	regmap_update_bits(chip->regs, SIFIVE_GPIO_RISE_IE, BIT(offset),
 			   (trigger & IRQ_TYPE_EDGE_RISING) ? BIT(offset) : 0);
@@ -54,7 +54,7 @@ static void sifive_gpio_set_ie(struct sifive_gpio *chip, unsigned int offset)
 			   (trigger & IRQ_TYPE_LEVEL_HIGH) ? BIT(offset) : 0);
 	regmap_update_bits(chip->regs, SIFIVE_GPIO_LOW_IE, BIT(offset),
 			   (trigger & IRQ_TYPE_LEVEL_LOW) ? BIT(offset) : 0);
-	spin_unlock_irqrestore(&chip->gc.bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&chip->gc.bgpio_lock, flags);
 }
 
 static int sifive_gpio_irq_set_type(struct irq_data *d, unsigned int trigger)
@@ -84,13 +84,13 @@ static void sifive_gpio_irq_enable(struct irq_data *d)
 	/* Switch to input */
 	gc->direction_input(gc, offset);
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 	/* Clear any sticky pending interrupts */
 	regmap_write(chip->regs, SIFIVE_GPIO_RISE_IP, bit);
 	regmap_write(chip->regs, SIFIVE_GPIO_FALL_IP, bit);
 	regmap_write(chip->regs, SIFIVE_GPIO_HIGH_IP, bit);
 	regmap_write(chip->regs, SIFIVE_GPIO_LOW_IP, bit);
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 
 	/* Enable interrupts */
 	assign_bit(offset, &chip->irq_state, 1);
@@ -116,13 +116,13 @@ static void sifive_gpio_irq_eoi(struct irq_data *d)
 	u32 bit = BIT(offset);
 	unsigned long flags;
 
-	spin_lock_irqsave(&gc->bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gc->bgpio_lock, flags);
 	/* Clear all pending interrupts */
 	regmap_write(chip->regs, SIFIVE_GPIO_RISE_IP, bit);
 	regmap_write(chip->regs, SIFIVE_GPIO_FALL_IP, bit);
 	regmap_write(chip->regs, SIFIVE_GPIO_HIGH_IP, bit);
 	regmap_write(chip->regs, SIFIVE_GPIO_LOW_IP, bit);
-	spin_unlock_irqrestore(&gc->bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gc->bgpio_lock, flags);
 
 	irq_chip_eoi_parent(d);
 }
drivers/gpio/gpio-tb10x.c +2 -2
index 718a508d3b2f..de6afa3f9716 100644
@@ -62,14 +62,14 @@ static inline void tb10x_set_bits(struct tb10x_gpio *gpio, unsigned int offs,
 	u32 r;
 	unsigned long flags;
 
-	spin_lock_irqsave(&gpio->gc.bgpio_lock, flags);
+	raw_spin_lock_irqsave(&gpio->gc.bgpio_lock, flags);
 
 	r = tb10x_reg_read(gpio, offs);
 	r = (r & ~mask) | (val & mask);
 
 	tb10x_reg_write(gpio, offs, r);
 
-	spin_unlock_irqrestore(&gpio->gc.bgpio_lock, flags);
+	raw_spin_unlock_irqrestore(&gpio->gc.bgpio_lock, flags);
 }
 
 static int tb10x_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +7 -3
index e7845df6cad2..5e32906f9819 100644
@@ -580,10 +580,14 @@ void amdgpu_gfx_off_ctrl(struct amdgpu_device *adev, bool enable)
 		if (adev->gfx.gfx_off_req_count == 0 &&
 		    !adev->gfx.gfx_off_state) {
 			/* If going to s2idle, no need to wait */
-			if (adev->in_s0ix)
-				delay = GFX_OFF_NO_DELAY;
-			schedule_delayed_work(&adev->gfx.gfx_off_delay_work,
+			if (adev->in_s0ix) {
+				if (!amdgpu_dpm_set_powergating_by_smu(adev,
+						AMD_IP_BLOCK_TYPE_GFX, true))
+					adev->gfx.gfx_off_state = true;
+			} else {
+				schedule_delayed_work(&adev->gfx.gfx_off_delay_work,
 					      delay);
+			}
 		}
 	} else {
 		if (adev->gfx.gfx_off_req_count == 0) {
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +0 -4
index 409739ee5ba0..a2d9e0af0654 100644
@@ -1688,10 +1688,6 @@ static void amdgpu_dm_fini(struct amdgpu_device *adev)
 	}
 #endif
 
-	for (i = 0; i < adev->dm.display_indexes_num; i++) {
-		drm_encoder_cleanup(&adev->dm.mst_encoders[i].base);
-	}
-
 	amdgpu_dm_destroy_drm_device(&adev->dm);
 
 #if defined(CONFIG_DRM_AMD_SECURE_DISPLAY)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c +0 -1
index 652cf108b3c2..bc02e3e0d17d 100644
@@ -385,7 +385,6 @@ static const struct drm_connector_helper_funcs dm_dp_mst_connector_helper_funcs
 static void amdgpu_dm_encoder_destroy(struct drm_encoder *encoder)
 {
 	drm_encoder_cleanup(encoder);
-	kfree(encoder);
 }
 
 static const struct drm_encoder_funcs amdgpu_dm_encoder_funcs = {
drivers/gpu/drm/drm_panel_orientation_quirks.c +6 -0
index ca0fefeaab20..ce739ba45c55 100644
@@ -272,6 +272,12 @@ static const struct dmi_system_id orientation_data[] = {
 		  DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad D330-10IGM"),
 		},
 		.driver_data = (void *)&lcd1200x1920_rightside_up,
+	}, {	/* Lenovo Ideapad D330-10IGL (HD) */
+		.matches = {
+		  DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+		  DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad D330-10IGL"),
+		},
+		.driver_data = (void *)&lcd800x1280_rightside_up,
 	}, {	/* Lenovo Yoga Book X90F / X91F / X91L */
 		.matches = {
 		  /* Non exact match to match all versions */
drivers/gpu/drm/i915/i915_drv.c +1 -4
index 59fb4c710c8c..41094d51fc6f 100644
@@ -986,12 +986,9 @@ static int i915_driver_open(struct drm_device *dev, struct drm_file *file)
  */
 static void i915_driver_lastclose(struct drm_device *dev)
 {
-	struct drm_i915_private *i915 = to_i915(dev);
-
 	intel_fbdev_restore_mode(dev);
 
-	if (HAS_DISPLAY(i915))
-		vga_switcheroo_process_delayed_switch();
+	vga_switcheroo_process_delayed_switch();
 }
 
 static void i915_driver_postclose(struct drm_device *dev, struct drm_file *file)
drivers/gpu/drm/i915/i915_switcheroo.c +5 -1
index de0e224b56ce..f1ce9f591efa 100644
@@ -18,6 +18,10 @@ static void i915_switcheroo_set_state(struct pci_dev *pdev,
 		dev_err(&pdev->dev, "DRM not initialized, aborting switch.\n");
 		return;
 	}
+	if (!HAS_DISPLAY(i915)) {
+		dev_err(&pdev->dev, "Device state not initialized, aborting switch.\n");
+		return;
+	}
 
 	if (state == VGA_SWITCHEROO_ON) {
 		drm_info(&i915->drm, "switched on\n");
@@ -43,7 +47,7 @@ static bool i915_switcheroo_can_switch(struct pci_dev *pdev)
 	 * locking inversion with the driver load path. And the access here is
 	 * completely racy anyway. So don't bother with locking for now.
 	 */
-	return i915 && atomic_read(&i915->drm.open_count) == 0;
+	return i915 && HAS_DISPLAY(i915) && atomic_read(&i915->drm.open_count) == 0;
 }
 
 static const struct vga_switcheroo_client_ops i915_switcheroo_ops = {
drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.c +1 -2
index 4b328346b48a..83ffd175ca89 100644
@@ -16,8 +16,7 @@
 
 int intel_selftest_modify_policy(struct intel_engine_cs *engine,
 				 struct intel_selftest_saved_policy *saved,
-				 u32 modify_type)
-
+				 enum selftest_scheduler_modify modify_type)
 {
 	int err;
 
drivers/gpu/drm/panfrost/Kconfig +2 -1
index 86cdc0ce79e6..77f4d32e5204 100644
@@ -3,7 +3,8 @@
 config DRM_PANFROST
 	tristate "Panfrost (DRM support for ARM Mali Midgard/Bifrost GPUs)"
 	depends on DRM
-	depends on ARM || ARM64 || (COMPILE_TEST && !GENERIC_ATOMIC64)
+	depends on ARM || ARM64 || COMPILE_TEST
+	depends on !GENERIC_ATOMIC64    # for IOMMU_IO_PGTABLE_LPAE
 	depends on MMU
 	select DRM_SCHED
 	select IOMMU_SUPPORT
drivers/gpu/drm/vmwgfx/vmwgfx_msg_arm64.h +0 -0
old mode 100755
new mode 100644
drivers/hid/hid-betopff.c +9 -8
index 467d789f9bc2..25ed7b9a917e 100644
@@ -60,7 +60,6 @@ static int betopff_init(struct hid_device *hid)
 	struct list_head *report_list =
 			&hid->report_enum[HID_OUTPUT_REPORT].report_list;
 	struct input_dev *dev;
-	int field_count = 0;
 	int error;
 	int i, j;
 
@@ -86,19 +85,21 @@ static int betopff_init(struct hid_device *hid)
 	 * -----------------------------------------
 	 * Do init them with default value.
 	 */
+	if (report->maxfield < 4) {
+		hid_err(hid, "not enough fields in the report: %d\n",
+				report->maxfield);
+		return -ENODEV;
+	}
 	for (i = 0; i < report->maxfield; i++) {
+		if (report->field[i]->report_count < 1) {
+			hid_err(hid, "no values in the field\n");
+			return -ENODEV;
+		}
 		for (j = 0; j < report->field[i]->report_count; j++) {
 			report->field[i]->value[j] = 0x00;
-			field_count++;
 		}
 	}
 
-	if (field_count < 4) {
-		hid_err(hid, "not enough fields in the report: %d\n",
-				field_count);
-		return -ENODEV;
-	}
-
 	betopff = kzalloc(sizeof(*betopff), GFP_KERNEL);
 	if (!betopff)
 		return -ENOMEM;
drivers/hid/hid-bigbenff.c +5 -0
index e8c5e3ac9fff..e8b16665860d 100644
@@ -344,6 +344,11 @@ static int bigben_probe(struct hid_device *hid,
 	}
 
 	report_list = &hid->report_enum[HID_OUTPUT_REPORT].report_list;
+	if (list_empty(report_list)) {
+		hid_err(hid, "no output report found\n");
+		error = -ENODEV;
+		goto error_hw_stop;
+	}
 	bigben->report = list_entry(report_list->next,
 		struct hid_report, list);
 
drivers/hid/hid-core.c +2 -2
index ef9c799fa371..2e475bd426b8 100644
@@ -988,8 +988,8 @@ struct hid_report *hid_validate_values(struct hid_device *hid,
 		 * Validating on id 0 means we should examine the first
 		 * report in the list.
 		 */
-		report = list_entry(
-				hid->report_enum[type].report_list.next,
+		report = list_first_entry_or_null(
+				&hid->report_enum[type].report_list,
 				struct hid_report, list);
 	} else {
 		report = hid->report_enum[type].report_id_hash[id];
drivers/hid/hid-ids.h +0 -1
index 8698d49edaa3..fa1aa22547ea 100644
@@ -261,7 +261,6 @@
 #define USB_DEVICE_ID_CH_AXIS_295	0x001c
 
 #define USB_VENDOR_ID_CHERRY		0x046a
-#define USB_DEVICE_ID_CHERRY_MOUSE_000C	0x000c
 #define USB_DEVICE_ID_CHERRY_CYMOTION	0x0023
 #define USB_DEVICE_ID_CHERRY_CYMOTION_SOLAR	0x0027
 
drivers/hid/hid-quirks.c +0 -1
index fc1e061900bc..184029cad014 100644
@@ -54,7 +54,6 @@ static const struct hid_device_id hid_quirks[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_FLIGHT_SIM_YOKE), HID_QUIRK_NOGET },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_PEDALS), HID_QUIRK_NOGET },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_THROTTLE), HID_QUIRK_NOGET },
-	{ HID_USB_DEVICE(USB_VENDOR_ID_CHERRY, USB_DEVICE_ID_CHERRY_MOUSE_000C), HID_QUIRK_ALWAYS_POLL },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K65RGB), HID_QUIRK_NO_INIT_REPORTS },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K65RGB_RAPIDFIRE), HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K70RGB), HID_QUIRK_NO_INIT_REPORTS },
drivers/hid/intel-ish-hid/ishtp/dma-if.c +10 -0
index 40554c8daca0..00046cbfd4ed 100644
@@ -104,6 +104,11 @@ void *ishtp_cl_get_dma_send_buf(struct ishtp_device *dev,
 	int required_slots = (size / DMA_SLOT_SIZE)
 		+ 1 * (size % DMA_SLOT_SIZE != 0);
 
+	if (!dev->ishtp_dma_tx_map) {
+		dev_err(dev->devc, "Fail to allocate Tx map\n");
+		return NULL;
+	}
+
 	spin_lock_irqsave(&dev->ishtp_dma_tx_lock, flags);
 	for (i = 0; i <= (dev->ishtp_dma_num_slots - required_slots); i++) {
 		free = 1;
@@ -150,6 +155,11 @@ void ishtp_cl_release_dma_acked_mem(struct ishtp_device *dev,
 		return;
 	}
 
+	if (!dev->ishtp_dma_tx_map) {
+		dev_err(dev->devc, "Fail to allocate Tx map\n");
+		return;
+	}
+
 	i = (msg_addr - dev->ishtp_host_dma_tx_buf) / DMA_SLOT_SIZE;
 	spin_lock_irqsave(&dev->ishtp_dma_tx_lock, flags);
 	for (j = 0; j < acked_slots; j++) {
drivers/i2c/busses/i2c-designware-common.c +6 -3
index a1100e37626e..4af65f101dac 100644
@@ -351,7 +351,8 @@ u32 i2c_dw_scl_hcnt(u32 ic_clk, u32 tSYMBOL, u32 tf, int cond, int offset)
 		 *
 		 * If your hardware is free from tHD;STA issue, try this one.
 		 */
-		return DIV_ROUND_CLOSEST(ic_clk * tSYMBOL, MICRO) - 8 + offset;
+		return DIV_ROUND_CLOSEST_ULL((u64)ic_clk * tSYMBOL, MICRO) -
+		       8 + offset;
 	else
 		/*
 		 * Conditional expression:
@@ -367,7 +368,8 @@ u32 i2c_dw_scl_hcnt(u32 ic_clk, u32 tSYMBOL, u32 tf, int cond, int offset)
 		 * The reason why we need to take into account "tf" here,
 		 * is the same as described in i2c_dw_scl_lcnt().
 		 */
-		return DIV_ROUND_CLOSEST(ic_clk * (tSYMBOL + tf), MICRO) - 3 + offset;
+		return DIV_ROUND_CLOSEST_ULL((u64)ic_clk * (tSYMBOL + tf), MICRO) -
+		       3 + offset;
 }
 
 u32 i2c_dw_scl_lcnt(u32 ic_clk, u32 tLOW, u32 tf, int offset)
@@ -383,7 +385,8 @@ u32 i2c_dw_scl_lcnt(u32 ic_clk, u32 tLOW, u32 tf, int offset)
 	 * account the fall time of SCL signal (tf).  Default tf value
 	 * should be 0.3 us, for safety.
 	 */
-	return DIV_ROUND_CLOSEST(ic_clk * (tLOW + tf), MICRO) - 1 + offset;
+	return DIV_ROUND_CLOSEST_ULL((u64)ic_clk * (tLOW + tf), MICRO) -
+	       1 + offset;
 }
 
 int i2c_dw_set_sda_hold(struct dw_i2c_dev *dev)
drivers/i2c/busses/i2c-mv64xxx.c +46 -15

129 lines not on this page · raw message

drivers/infiniband/core/verbs.c +5 -2
index b721085bb597..f0c07e4ba438 100644
@@ -2965,15 +2965,18 @@ EXPORT_SYMBOL(__rdma_block_iter_start);
 bool __rdma_block_iter_next(struct ib_block_iter *biter)
 {
 	unsigned int block_offset;
+	unsigned int sg_delta;
 
 	if (!biter->__sg_nents || !biter->__sg)
 		return false;
 
 	biter->__dma_addr = sg_dma_address(biter->__sg) + biter->__sg_advance;
 	block_offset = biter->__dma_addr & (BIT_ULL(biter->__pg_bit) - 1);
-	biter->__sg_advance += BIT_ULL(biter->__pg_bit) - block_offset;
+	sg_delta = BIT_ULL(biter->__pg_bit) - block_offset;
 
-	if (biter->__sg_advance >= sg_dma_len(biter->__sg)) {
+	if (sg_dma_len(biter->__sg) - biter->__sg_advance > sg_delta) {
+		biter->__sg_advance += sg_delta;
+	} else {
 		biter->__sg_advance = 0;
 		biter->__sg = sg_next(biter->__sg);
 		biter->__sg_nents--;
drivers/infiniband/hw/hfi1/user_exp_rcv.c +140 -60

334 lines not on this page · raw message

drivers/infiniband/hw/hfi1/user_exp_rcv.h +3 -0
index 8c53e416bf84..f8ee997d0050 100644
@@ -16,6 +16,8 @@ struct tid_pageset {
 };
 
 struct tid_user_buf {
+	struct mmu_interval_notifier notifier;
+	struct mutex cover_mutex;
 	unsigned long vaddr;
 	unsigned long length;
 	unsigned int npages;
@@ -27,6 +29,7 @@ struct tid_user_buf {
 struct tid_rb_node {
 	struct mmu_interval_notifier notifier;
 	struct hfi1_filedata *fdata;
+	struct mutex invalidate_mutex; /* covers hw removal */
 	unsigned long phys;
 	struct tid_group *grp;
 	u32 rcventry;
drivers/input/mouse/synaptics.c +0 -1
index 973a4c1d5d09..ffad142801b3 100644
@@ -191,7 +191,6 @@ static const char * const smbus_pnp_ids[] = {
 	"SYN3221", /* HP 15-ay000 */
 	"SYN323d", /* HP Spectre X360 13-w013dx */
 	"SYN3257", /* HP Envy 13-ad105ng */
-	"SYN3286", /* HP Laptop 15-da3001TU */
 	NULL
 };
 
drivers/memory/atmel-sdramc.c +2 -4
index 9c49d00c2a96..ea6e9e1eaf04 100644
@@ -47,19 +47,17 @@ static int atmel_ramc_probe(struct platform_device *pdev)
 	caps = of_device_get_match_data(&pdev->dev);
 
 	if (caps->has_ddrck) {
-		clk = devm_clk_get(&pdev->dev, "ddrck");
+		clk = devm_clk_get_enabled(&pdev->dev, "ddrck");
 		if (IS_ERR(clk))
 			return PTR_ERR(clk);
-		clk_prepare_enable(clk);
 	}
 
 	if (caps->has_mpddr_clk) {
-		clk = devm_clk_get(&pdev->dev, "mpddr");
+		clk = devm_clk_get_enabled(&pdev->dev, "mpddr");
 		if (IS_ERR(clk)) {
 			pr_err("AT91 RAMC: couldn't get mpddr clock\n");
 			return PTR_ERR(clk);
 		}
-		clk_prepare_enable(clk);
 	}
 
 	return 0;
drivers/memory/mvebu-devbus.c +1 -2
index 8450638e8670..efc6c08db2b7 100644
@@ -280,10 +280,9 @@ static int mvebu_devbus_probe(struct platform_device *pdev)
 	if (IS_ERR(devbus->base))
 		return PTR_ERR(devbus->base);
 
-	clk = devm_clk_get(&pdev->dev, NULL);
+	clk = devm_clk_get_enabled(&pdev->dev, NULL);
 	if (IS_ERR(clk))
 		return PTR_ERR(clk);
-	clk_prepare_enable(clk);
 
 	/*
 	 * Obtain clock period in picoseconds,
drivers/memory/tegra/tegra186.c +0 -36
index 3d153881abc1..4bed0e54fd45 100644
@@ -20,32 +20,6 @@
 #define MC_SID_STREAMID_SECURITY_WRITE_ACCESS_DISABLED BIT(16)
 #define MC_SID_STREAMID_SECURITY_OVERRIDE BIT(8)
 
-static void tegra186_mc_program_sid(struct tegra_mc *mc)
-{
-	unsigned int i;
-
-	for (i = 0; i < mc->soc->num_clients; i++) {
-		const struct tegra_mc_client *client = &mc->soc->clients[i];
-		u32 override, security;
-
-		override = readl(mc->regs + client->regs.sid.override);
-		security = readl(mc->regs + client->regs.sid.security);
-
-		dev_dbg(mc->dev, "client %s: override: %x security: %x\n",
-			client->name, override, security);
-
-		dev_dbg(mc->dev, "setting SID %u for %s\n", client->sid,
-			client->name);
-		writel(client->sid, mc->regs + client->regs.sid.override);
-
-		override = readl(mc->regs + client->regs.sid.override);
-		security = readl(mc->regs + client->regs.sid.security);
-
[… more lines in the raw message]

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

drivers/net/dsa/microchip/ksz9477.c +2 -2
index 379b38c5844f..bf788e17f408 100644

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

drivers/net/ethernet/amd/xgbe/xgbe-dev.c +15 -8
index d5fd49dd25f3..decc1c09a031 100644

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

drivers/net/ethernet/amd/xgbe/xgbe-mdio.c +24 -0
index 0c5c1b155683..43fdd111235a 100644

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

drivers/net/ethernet/amd/xgbe/xgbe.h +2 -0
index 3305979a9f7c..e0b8f3c4cc0b 100644

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

drivers/net/ethernet/broadcom/tg3.c +4 -4
index 8aab07419263..50f86bebbc19 100644

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

drivers/net/ethernet/cadence/macb_main.c +1 -8
index 61efb2350412..906c5bbefaac 100644

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

drivers/net/ethernet/freescale/enetc/enetc.c +2 -2
index adccb14c1644..8b7c93447770 100644

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

drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c +2 -9
index f6306eedd59b..2e225309de9c 100644

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

drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h +2 -0
index 095e5de78c0b..e685628b9294 100644

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

drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c +3 -15
index d377ddc70fc7..65c8f1f08472 100644

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

drivers/net/ethernet/mellanox/mlx5/core/main.c +4 -4
index 145e56f5eeee..9e15eea9743f 100644

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

drivers/net/ethernet/microsoft/mana/gdma.h +3 -0
index 1038bdf28ec0..f74f416a296f 100644

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

drivers/net/ethernet/microsoft/mana/gdma_main.c +8 -1
index f577507f522b..0fb42193643d 100644

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

drivers/net/ethernet/renesas/ravb.h +2 -2
index 47c5377e4f42..a475f54a6b63 100644

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

drivers/net/ethernet/renesas/ravb_main.c +21 -15
index c89bcdd15f16..c6fe1cda7b88 100644

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

drivers/net/ethernet/stmicro/stmmac/dwmac5.c +14 -0
index 9c2d40f853ed..413f66017219 100644

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

drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +4 -4
index dc31501fec8f..9e8ae4384e4f 100644

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

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +5 -0
index 15b0daf416f3..4191502d6472 100644

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

drivers/net/ipa/ipa_interrupt.c +10 -0
index b35170a93b0f..0c9ff8c055a0 100644

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

drivers/net/ipa/ipa_interrupt.h +16 -0
index 231390cea52a..16aa84ee0094 100644

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

drivers/net/ipa/ipa_power.c +17 -0
index f2989aac47a6..07fb367cfc99 100644

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

drivers/net/mdio/mdio-mux-meson-g12a.c +16 -7
index b8866bc3f2e8..917c8a10eea0 100644

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

drivers/net/phy/mdio_bus.c +6 -1
index dd7739b5f791..5f89828fd9f1 100644

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

drivers/net/usb/cdc_ether.c +6 -0
index c6b0de1b752f..3497b5a286ea 100644

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

drivers/net/usb/r8152.c +1 -0
index 109c288d8b47..cf6941b1d280 100644

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

drivers/net/usb/sr9700.c +1 -1
index 0c50f24671da..1fac6ee273c4 100644

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

drivers/net/virtio_net.c +4 -2
index 48fb7bdc0f0b..9222be208aba 100644

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

drivers/net/wan/fsl_ucc_hdlc.c +4 -2
index cda1b4ce6b21..8305df1a3008 100644

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

drivers/net/wireless/rndis_wlan.c +6 -13
index 63ce2443f136..70841d131d72 100644

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

drivers/nvme/host/core.c +1 -1
index 672f53d5651a..06750f3d5274 100644

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

drivers/nvme/host/pci.c +1 -1
index 0165e65cf548..00552cd02d73 100644

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

drivers/phy/phy-can-transceiver.c +3 -2
index c2cb93b4df71..4525d3fd903a 100644

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

drivers/phy/rockchip/phy-rockchip-inno-usb2.c +3 -1
index 4f569d9307b9..c167b8c5cc86 100644

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

drivers/phy/ti/Kconfig +2 -2
index 15a3bcf32308..b905902d5750 100644

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

drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c +4 -4
index 41136f63014a..e4a0d16b58cc 100644

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

drivers/pinctrl/pinctrl-rockchip.c +180 -135

315 lines not on this page · raw message

drivers/pinctrl/pinctrl-rockchip.h +2 -2
index 98a01a616da6..59116e13758d 100644

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

drivers/platform/x86/asus-nb-wmi.c +1 -0
index a81dc4b191b7..4d7327b67a7d 100644

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

drivers/platform/x86/touchscreen_dmi.c +25 -0
index 3d0790263fa7..93671037fd59 100644

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

drivers/reset/reset-uniphier-glue.c +15 -22
index 027990b79f61..7493e9618837 100644

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

drivers/scsi/hisi_sas/hisi_sas_main.c +1 -1
index 9515c45affa5..7d93783c09a5 100644

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

drivers/scsi/hpsa.c +1 -1
index cf7988de7b90..8aa5c22ae3ff 100644

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

drivers/scsi/scsi_transport_iscsi.c +45 -5

50 lines not on this page · raw message

drivers/scsi/ufs/ufshcd.c +14 -12
index 0b06223f5714..120831428ec6 100644

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

drivers/scsi/ufs/ufshcd.h +2 -0
index d470a52ff24c..c8513cc6c2bd 100644

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

drivers/soc/imx/soc-imx8m.c +2 -2
index 28144c699b0c..32ed9dc88e45 100644

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

drivers/soc/qcom/cpr.c +5 -1
index 84dd93472a25..e61cff3d9c8a 100644

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

drivers/spi/spidev.c +0 -2
index d233e2424ad1..922d778df064 100644

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

drivers/thermal/gov_fair_share.c +3 -7
index 1e5abf4822be..a4c30797b534 100644

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

drivers/thermal/gov_power_allocator.c +2 -2
index 13e375751d22..1d5052470967 100644

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

drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c +22 -6
index 62c0aa5d0783..0a4eaa307156 100644

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

drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.h +1 -0
index 3b4971df1b33..8f9872afd0d3 100644

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

drivers/thermal/tegra/tegra30-tsensor.c +1 -1
index 9b6b693cbcf8..05886684f429 100644

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

drivers/thermal/thermal_core.c +30 -23

53 lines not on this page · raw message

drivers/thermal/thermal_helpers.c +2 -2
index 3edd047e144f..ee7027bdcafa 100644

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

drivers/thermal/thermal_netlink.c +1 -1
index 41c8d47805c4..c70d407c2c71 100644

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

drivers/thermal/thermal_sysfs.c +16 -17
index 1e5a78131aba..de7cdec3db90 100644

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

drivers/usb/gadget/function/f_fs.c +7 -0
index adc44a2685b5..c9145ee95956 100644

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

drivers/w1/w1.c +5 -1
index f2ae2e563dc5..4a2ddf730a3a 100644

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

drivers/w1/w1_int.c +2 -3
index b3e1792d9c49..3a71c5eb2f83 100644

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

fs/affs/file.c +1 -1
index 75ebd2b576ca..25d480ea797b 100644

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

fs/cifs/dfs_cache.c +23 -19

42 lines not on this page · raw message

fs/cifs/smbdirect.c +1 -0
index 31ef64eb7fbb..cb93cccbf0c4 100644

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

fs/ksmbd/connection.c +15 -2
index 6a1d1fbe5fb2..ce0edf926c2a 100644

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

fs/ksmbd/ksmbd_netlink.h +3 -1
index 71bfb7de4472..fae859d59c79 100644

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

fs/ksmbd/ndr.c +4 -4
index 5052be9261d9..28f44f0c918c 100644

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

fs/ksmbd/server.h +1 -0
index ac9d932f8c8a..db7278181760 100644

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

fs/ksmbd/smb2pdu.c +2 -0
index 65c85ca71ebe..ac029dfd23ab 100644

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

fs/ksmbd/smb2pdu.h +3 -2
index 4f8574944ac1..ddc3cea9c905 100644

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

fs/ksmbd/transport_ipc.c +6 -0
index 3ad6881e0f7e..a8313eed4f10 100644

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

fs/ksmbd/transport_rdma.c +7 -1
index a2fd5a4d4cd5..9d67419929d6 100644

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

fs/ksmbd/transport_rdma.h +6 -0
index 0fa8adc0776f..04a7a37685c3 100644

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

fs/ksmbd/transport_tcp.c +16 -1
index 293af921f2ad..e0ca6cc04b91 100644

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

fs/nfsd/nfs4proc.c +1 -0
index 09dd70f79158..0a900b9e39ea 100644

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

fs/overlayfs/copy_up.c +4 -0
index e040970408d4..ef0bf98b620d 100644

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

fs/proc/proc_sysctl.c +33 -0
index 013fc5931bc3..0b7a00ed6c49 100644

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

fs/reiserfs/super.c +0 -6
index 58481f8d63d5..f7b05c6b3dcf 100644

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

include/linux/cpufreq.h +5 -0
index 66a1f495f01a..025391be1b19 100644

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

include/linux/gpio/driver.h +1 -1
index ad479db8f0aa..11c26ae7b4fa 100644

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

include/linux/panic.h +1 -6
index f5844908a089..8eb5897c164f 100644

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

include/linux/sched/task.h +1 -0
index caae8e045160..d351f1b362ef 100644

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

include/linux/sysctl.h +3 -0
index fa372b4c2313..47cf70c8eb93 100644

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

include/linux/thermal.h +3 -2
index c314893970b3..b94314ed0c96 100644

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

include/net/sch_generic.h +7 -0
index 891b44d80c98..6906da5c733e 100644

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

include/net/sock.h +1 -1
index e1a303e4f0f7..3e9db5146765 100644

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

include/scsi/scsi_transport_iscsi.h +9 -0
index 0f2f149ad916..304ccf153928 100644

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

include/uapi/linux/netfilter/nf_conntrack_sctp.h +1 -1
index edc6ddab0de6..2d6f80d75ae7 100644

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

include/uapi/linux/netfilter/nfnetlink_cttimeout.h +1 -1
index 6b20fb22717b..aa805e6d4e28 100644

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

kernel/bpf/verifier.c +3 -1
index 488225bb42f6..49e51fc0c2f4 100644

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

kernel/exit.c +72 -0

72 lines not on this page · raw message

kernel/kcsan/kcsan_test.c +6 -1
index dc55fd5a36fc..8b176aeab91b 100644

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

kernel/kcsan/report.c +1 -2
index 21137929d428..b88d5d5f29e4 100644

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

kernel/module.c +21 -5
index ef79f4dbda87..8a1766c69c6e 100644

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

kernel/panic.c +79 -11

90 lines not on this page · raw message

kernel/sched/core.c +1 -2
index 2bd5e235d078..c1458fa8beb3 100644

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

kernel/sysctl.c +0 -11
index 34ce5953dbb0..928798f89ca1 100644

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

kernel/trace/trace.c +2 -0
index 114d94d1e0a9..06ff4dea34d0 100644

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

kernel/trace/trace.h +1 -0
index 9fc598165f3a..66b6c8395fbc 100644

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

kernel/trace/trace_events_hist.c +2 -0
index cc1a078f7a16..aaf779ee68a6 100644

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

kernel/trace/trace_output.c +1 -2
index c2ca40e8595b..6b4d3f3abdae 100644

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

lib/lockref.c +0 -1
index 5b34bbd3eba8..81ac5f355242 100644

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

lib/nlattr.c +3 -0
index 86029ad5ead4..73635bdb0062 100644

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

lib/ubsan.c +1 -10
index bdc380ff5d5c..60c7099857a0 100644

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

mm/kasan/report.c +2 -10
index 884a950c7026..887af873733b 100644

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

mm/kfence/report.c +1 -2
index 37e140e7f201..cbd9456359b9 100644

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

net/bluetooth/hci_core.c +1 -0
index a41b4dcf1a7a..cabe8eb4c14f 100644

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

net/bluetooth/rfcomm/sock.c +6 -1
index 21e24da4847f..4397e14ff560 100644

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

net/core/net_namespace.c +1 -1
index 982d06332007..dcddc54d0840 100644

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

net/ipv4/fib_semantics.c +2 -0
index 250af6e5a892..607a4f816155 100644

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

net/ipv4/inet_hashtables.c +15 -2
index 0d378da4b1b1..410b6b7998ca 100644

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

net/ipv4/inet_timewait_sock.c +4 -4
index 437afe392e66..fe6340c363b4 100644

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

net/ipv4/metrics.c +2 -0
index 25ea6ac44db9..6a1427916c7d 100644

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

net/ipv4/tcp.c +2 -0
index fe1972aad279..51f34560a9d6 100644

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

net/ipv6/ip6_output.c +14 -1
index 675a80dd78ba..383442ded954 100644

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

net/l2tp/l2tp_core.c +61 -55

116 lines not on this page · raw message

net/mctp/af_mctp.c +1 -0
index cbbde0f73a08..a77fafbc31cf 100644

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

net/mctp/route.c +6 -0
index 6aebb4a3eded..89e67399249b 100644

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

net/netfilter/nf_conntrack_proto_sctp.c +55 -63

118 lines not on this page · raw message

net/netfilter/nf_conntrack_standalone.c +0 -8
index 4d85368203e0..338f02a12076 100644

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

net/netfilter/nft_set_rbtree.c +204 -128

332 lines not on this page · raw message

net/netlink/af_netlink.c +24 -14
index 974d32632ef4..011ec7d9a719 100644

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

net/netrom/nr_timer.c +1 -0
index a8da88db7893..4e7c968cde2d 100644

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

net/nfc/llcp_core.c +1 -0
index eaeb2b1cfa6a..fd43e75abd94 100644

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

net/sched/sch_htb.c +16 -11
index caabdaa2f30f..45b92e40082e 100644

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

net/sched/sch_taprio.c +2 -0
index bd10a8eeb82d..135ea8b3816f 100644

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

net/sctp/bind_addr.c +6 -0
index 59e653b528b1..6b95d3ba8fe1 100644

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

scripts/Makefile +2 -2
index 9adb6d247818..e2a239829556 100644

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

scripts/dtc/Makefile +3 -3
index 1cba78e1dce6..2d5f274d6efd 100644

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

scripts/kconfig/gconf-cfg.sh +6 -6
index 480ecd8b9f41..cbd90c28c05f 100755

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

scripts/kconfig/mconf-cfg.sh +8 -8
index b520e407a8eb..025b565e0b7c 100755

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

scripts/kconfig/nconf-cfg.sh +8 -8
index c212255070c0..3a10bac2adb3 100755

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

scripts/kconfig/qconf-cfg.sh +7 -7
index fa564cd795b7..9b695e5cd9b3 100755

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

scripts/tracing/ftrace-bisect.sh +26 -8
index 926701162bc8..bb4f59262bbe 100755

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

security/tomoyo/Makefile +1 -1
index cca5a3012fee..221eaadffb09 100644

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

sound/soc/fsl/fsl-asoc-card.c +4 -4
index c72a156737e6..5000d779aade 100644

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

sound/soc/fsl/fsl_micfil.c +8 -8
index d1cd104f8584..38d4d1b7cfe3 100644

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

sound/soc/fsl/fsl_ssi.c +2 -2
index ecbc1c365d5b..0c73c2e9dce0 100644

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

tools/gpio/gpio-event-mon.c +1 -0
index a2b233fdb572..667019990982 100644

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

tools/objtool/Makefile +2 -2
index 92ce4fce7bc7..549acc5859e9 100644

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

tools/objtool/check.c +2 -1
index 308c8806ad94..758c0ba8de35 100644

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

tools/testing/selftests/bpf/prog_tests/jeq_infer_not_null.c deleted +0 -9
deleted file mode 100644
index 3add34df5767..000000000000

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

tools/testing/selftests/bpf/progs/jeq_infer_not_null_fail.c deleted +0 -42

42 lines not on this page · raw message

tools/testing/selftests/net/toeplitz.c +7 -5
index c5489341cfb8..8ce96028341d 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.15.91 kernel.

All users of the 5.15 kernel series must upgrade.

The updated 5.15.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.15.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/ABI/testing/sysfs-kernel-oops_count            |    6 
 Documentation/ABI/testing/sysfs-kernel-warn_count            |    6 
 Documentation/admin-guide/sysctl/kernel.rst                  |   19 
 Makefile                                                     |    5 
 arch/alpha/kernel/traps.c                                    |    6 
 arch/alpha/mm/fault.c                                        |    2 
 arch/arm/boot/dts/imx6qdl-gw560x.dtsi                        |    1 
 arch/arm/boot/dts/imx6ul-pico-dwarf.dts                      |    2 
 arch/arm/boot/dts/imx7d-pico-dwarf.dts                       |    4 
 arch/arm/boot/dts/imx7d-pico-nymph.dts                       |    4 
 arch/arm/boot/dts/sam9x60.dtsi                               |    2 
 arch/arm/kernel/traps.c                                      |    2 
 arch/arm/mach-imx/cpu-imx25.c                                |    1 
 arch/arm/mach-imx/cpu-imx27.c                                |    1 
 arch/arm/mach-imx/cpu-imx31.c                                |    1 
 arch/arm/mach-imx/cpu-imx35.c                                |    1 
 arch/arm/mach-imx/cpu-imx5.c                                 |    1 
 arch/arm/mm/fault.c                                          |    2 
 arch/arm/mm/nommu.c                                          |    2 
 arch/arm64/boot/dts/freescale/imx8mm-beacon-baseboard.dtsi   |    4 
 arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts       |    1 
 arch/arm64/boot/dts/freescale/imx8mp-phycore-som.dtsi        |   10 
 arch/arm64/boot/dts/qcom/msm8992-xiaomi-libra.dts            |   90 ++
 arch/arm64/boot/dts/qcom/msm8992.dtsi                        |    4 
 arch/arm64/kernel/traps.c                                    |    2 
 arch/arm64/kvm/vgic/vgic-v3.c                                |   25 
 arch/arm64/kvm/vgic/vgic-v4.c                                |    8 
 arch/arm64/kvm/vgic/vgic.h                                   |    1 
 arch/arm64/mm/fault.c                                        |    2 
 arch/csky/abiv1/alignment.c                                  |    2 
 arch/csky/kernel/traps.c                                     |    2 
 arch/csky/mm/fault.c                                         |    2 
 arch/h8300/kernel/traps.c                                    |    3 
 arch/h8300/mm/fault.c                                        |    2 
 arch/hexagon/kernel/traps.c                                  |    2 
 arch/ia64/Kconfig                                            |    2 
 arch/ia64/kernel/mca_drv.c                                   |    2 
 arch/ia64/kernel/traps.c                                     |    2 
 arch/ia64/mm/fault.c                                         |    2 
 arch/m68k/kernel/traps.c                                     |    2 
 arch/m68k/mm/fault.c                                         |    2 
 arch/microblaze/kernel/exceptions.c                          |    4 
 arch/mips/kernel/traps.c                                     |    2 
 arch/nds32/kernel/fpu.c                                      |    2 
 arch/nds32/kernel/traps.c                                    |    8 
 arch/nios2/kernel/traps.c                                    |    4 
 arch/openrisc/kernel/traps.c                                 |    2 
 arch/parisc/kernel/traps.c                                   |    2 
 arch/powerpc/kernel/traps.c                                  |    8 
 arch/riscv/kernel/probes/simulate-insn.c                     |    4 
 arch/riscv/kernel/traps.c                                    |    2 
 arch/riscv/mm/fault.c                                        |    2 
 arch/s390/include/asm/debug.h                                |    6 
 arch/s390/kernel/dumpstack.c                                 |    2 
 arch/s390/kernel/nmi.c                                       |    2 
 arch/s390/kernel/vmlinux.lds.S                               |    2 
 arch/s390/kvm/interrupt.c                                    |   12 
 arch/sh/kernel/traps.c                                       |    2 
 arch/sparc/kernel/traps_32.c                                 |    4 
 arch/sparc/kernel/traps_64.c                                 |    4 
 arch/x86/entry/entry_32.S                                    |    6 
 arch/x86/entry/entry_64.S                                    |    6 
 arch/x86/events/amd/core.c                                   |    2 
 arch/x86/events/intel/uncore.c                               |    1 
 arch/x86/events/msr.c                                        |    1 
 arch/x86/kernel/acpi/cstate.c                                |   15 
 arch/x86/kernel/dumpstack.c                                  |    4 
 arch/x86/kernel/i8259.c                                      |    1 
 arch/x86/kernel/irqinit.c                                    |    4 
 arch/x86/kvm/svm/svm.c                                       |   34 -
 arch/x86/kvm/svm/svm.h                                       |    1 
 arch/x86/kvm/vmx/vmx.c                                       |   21 
 arch/xtensa/kernel/traps.c                                   |    2 
 block/blk-core.c                                             |    8 
 drivers/base/property.c                                      |   18 
 drivers/base/test/test_async_driver_probe.c                  |    2 
 drivers/cpufreq/armada-37xx-cpufreq.c                        |    2 
 drivers/cpufreq/cpufreq-dt-platdev.c                         |    2 
 drivers/cpufreq/cpufreq_governor.c                           |   20 
 drivers/cpufreq/cpufreq_governor.h                           |    1 
 drivers/cpufreq/cpufreq_governor_attr_set.c                  |    5 
 drivers/dma/dmaengine.c                                      |    7 
 drivers/dma/ptdma/ptdma-dev.c                                |    7 
 drivers/dma/ptdma/ptdma.h                                    |    2 
 drivers/dma/ti/k3-udma.c                                     |    5 
 drivers/dma/xilinx/xilinx_dma.c                              |    4 
 drivers/edac/edac_device.c                                   |   15 
 drivers/edac/highbank_mc_edac.c                              |    7 
 drivers/edac/qcom_edac.c                                     |    5 
 drivers/firmware/arm_scmi/shmem.c                            |    9 
 drivers/firmware/google/coreboot_table.c                     |    9 
 drivers/firmware/google/coreboot_table.h                     |    1 
 drivers/gpio/gpio-amdpt.c                                    |   10 
 drivers/gpio/gpio-brcmstb.c                                  |   12 
 drivers/gpio/gpio-cadence.c                                  |   12 
 drivers/gpio/gpio-dwapb.c                                    |   36 -
 drivers/gpio/gpio-grgpio.c                                   |   30 
 drivers/gpio/gpio-hlwd.c                                     |   18 
 drivers/gpio/gpio-idt3243x.c                                 |   12 
 drivers/gpio/gpio-ixp4xx.c                                   |    4 
 drivers/gpio/gpio-loongson1.c                                |    8 
 drivers/gpio/gpio-menz127.c                                  |    8 
 drivers/gpio/gpio-mlxbf2.c                                   |    6 
 drivers/gpio/gpio-mmio.c                                     |   22 
 drivers/gpio/gpio-mxc.c                                      |   16 
 drivers/gpio/gpio-sifive.c                                   |   12 
 drivers/gpio/gpio-tb10x.c                                    |    4 
 drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c                      |   10 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c            |    4 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c  |    1 
 drivers/gpu/drm/drm_panel_orientation_quirks.c               |    6 
 drivers/gpu/drm/i915/i915_drv.c                              |    5 
 drivers/gpu/drm/i915/i915_switcheroo.c                       |    6 
 drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.c     |    3 
 drivers/gpu/drm/panfrost/Kconfig                             |    3 
 drivers/hid/hid-betopff.c                                    |   17 
 drivers/hid/hid-bigbenff.c                                   |    5 
 drivers/hid/hid-core.c                                       |    4 
 drivers/hid/hid-ids.h                                        |    1 
 drivers/hid/hid-quirks.c                                     |    1 
 drivers/hid/intel-ish-hid/ishtp/dma-if.c                     |   10 
 drivers/i2c/busses/i2c-designware-common.c                   |    9 
 drivers/i2c/busses/i2c-mv64xxx.c                             |   61 +-
 drivers/infiniband/core/verbs.c                              |    7 
 drivers/infiniband/hw/hfi1/user_exp_rcv.c                    |  200 ++++--
 drivers/infiniband/hw/hfi1/user_exp_rcv.h                    |    3 
 drivers/input/mouse/synaptics.c                              |    1 
 drivers/memory/atmel-sdramc.c                                |    6 
 drivers/memory/mvebu-devbus.c                                |    3 
 drivers/memory/tegra/tegra186.c                              |   36 -
 drivers/net/dsa/microchip/ksz9477.c                          |    4 
 drivers/net/ethernet/amd/xgbe/xgbe-dev.c                     |   23 
 drivers/net/ethernet/amd/xgbe/xgbe-mdio.c                    |   24 
 drivers/net/ethernet/amd/xgbe/xgbe.h                         |    2 
 drivers/net/ethernet/broadcom/tg3.c                          |    8 
 drivers/net/ethernet/cadence/macb_main.c                     |    9 
 drivers/net/ethernet/freescale/enetc/enetc.c                 |    4 
 drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c     |   11 
 drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h     |    2 
 drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c            |   18 
 drivers/net/ethernet/mellanox/mlx5/core/main.c               |    8 
 drivers/net/ethernet/microsoft/mana/gdma.h                   |    3 
 drivers/net/ethernet/microsoft/mana/gdma_main.c              |    9 
 drivers/net/ethernet/renesas/ravb.h                          |    4 
 drivers/net/ethernet/renesas/ravb_main.c                     |   36 -
 drivers/net/ethernet/stmicro/stmmac/dwmac5.c                 |   14 
 drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c         |    8 
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c            |    5 
 drivers/net/ipa/ipa_interrupt.c                              |   10 
 drivers/net/ipa/ipa_interrupt.h                              |   16 
 drivers/net/ipa/ipa_power.c                                  |   17 
 drivers/net/mdio/mdio-mux-meson-g12a.c                       |   23 
 drivers/net/phy/mdio_bus.c                                   |    7 
 drivers/net/usb/cdc_ether.c                                  |    6 
 drivers/net/usb/r8152.c                                      |    1 
 drivers/net/usb/sr9700.c                                     |    2 
 drivers/net/virtio_net.c                                     |    6 
 drivers/net/wan/fsl_ucc_hdlc.c                               |    6 
 drivers/net/wireless/rndis_wlan.c                            |   19 
 drivers/nvme/host/core.c                                     |    2 
 drivers/nvme/host/pci.c                                      |    2 
 drivers/phy/phy-can-transceiver.c                            |    5 
 drivers/phy/rockchip/phy-rockchip-inno-usb2.c                |    4 
 drivers/phy/ti/Kconfig                                       |    4 
 drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c                    |    8 
 drivers/pinctrl/pinctrl-rockchip.c                           |  315 +++++-----
 drivers/pinctrl/pinctrl-rockchip.h                           |    4 
 drivers/platform/x86/asus-nb-wmi.c                           |    1 
 drivers/platform/x86/touchscreen_dmi.c                       |   25 
 drivers/reset/reset-uniphier-glue.c                          |   37 -
 drivers/scsi/hisi_sas/hisi_sas_main.c                        |    2 
 drivers/scsi/hpsa.c                                          |    2 
 drivers/scsi/scsi_transport_iscsi.c                          |   50 +
 drivers/scsi/ufs/ufshcd.c                                    |   26 
 drivers/scsi/ufs/ufshcd.h                                    |    2 
 drivers/soc/imx/soc-imx8m.c                                  |    4 
 drivers/soc/qcom/cpr.c                                       |    6 
 drivers/spi/spidev.c                                         |    2 
 drivers/thermal/gov_fair_share.c                             |   10 
 drivers/thermal/gov_power_allocator.c                        |    4 
 drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c |   28 
 drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.h |    1 
 drivers/thermal/tegra/tegra30-tsensor.c                      |    2 
 drivers/thermal/thermal_core.c                               |   53 -
 drivers/thermal/thermal_helpers.c                            |    4 
 drivers/thermal/thermal_netlink.c                            |    2 
 drivers/thermal/thermal_sysfs.c                              |   33 -
 drivers/usb/gadget/function/f_fs.c                           |    7 
 drivers/w1/w1.c                                              |    6 
 drivers/w1/w1_int.c                                          |    5 
 fs/affs/file.c                                               |    2 
 fs/cifs/dfs_cache.c                                          |   42 -
 fs/cifs/smbdirect.c                                          |    1 
 fs/ksmbd/connection.c                                        |   17 
 fs/ksmbd/ksmbd_netlink.h                                     |    4 
 fs/ksmbd/ndr.c                                               |    8 
 fs/ksmbd/server.h                                            |    1 
 fs/ksmbd/smb2pdu.c                                           |    2 
 fs/ksmbd/smb2pdu.h                                           |    5 
 fs/ksmbd/transport_ipc.c                                     |    6 
 fs/ksmbd/transport_rdma.c                                    |    8 
 fs/ksmbd/transport_rdma.h                                    |    6 
 fs/ksmbd/transport_tcp.c                                     |   17 
 fs/nfsd/nfs4proc.c                                           |    1 
 fs/overlayfs/copy_up.c                                       |    4 
 fs/proc/proc_sysctl.c                                        |   33 +
 fs/reiserfs/super.c                                          |    6 
 include/linux/cpufreq.h                                      |    5 
 include/linux/gpio/driver.h                                  |    2 
 include/linux/panic.h                                        |    7 
 include/linux/sched/task.h                                   |    1 
 include/linux/sysctl.h                                       |    3 
 include/linux/thermal.h                                      |    5 
 include/net/sch_generic.h                                    |    7 
 include/net/sock.h                                           |    2 
 include/scsi/scsi_transport_iscsi.h                          |    9 
 include/uapi/linux/netfilter/nf_conntrack_sctp.h             |    2 
 include/uapi/linux/netfilter/nfnetlink_cttimeout.h           |    2 
 kernel/bpf/verifier.c                                        |    4 
 kernel/exit.c                                                |   72 ++
 kernel/kcsan/kcsan_test.c                                    |    7 
 kernel/kcsan/report.c                                        |    3 
 kernel/module.c                                              |   26 
 kernel/panic.c                                               |   90 ++
 kernel/sched/core.c                                          |    3 
 kernel/sysctl.c                                              |   11 
 kernel/trace/trace.c                                         |    2 
 kernel/trace/trace.h                                         |    1 
 kernel/trace/trace_events_hist.c                             |    2 
 kernel/trace/trace_output.c                                  |    3 
 lib/lockref.c                                                |    1 
 lib/nlattr.c                                                 |    3 
 lib/ubsan.c                                                  |   11 
 mm/kasan/report.c                                            |   12 
 mm/kfence/report.c                                           |    3 
 net/bluetooth/hci_core.c                                     |    1 
 net/bluetooth/rfcomm/sock.c                                  |    7 
 net/core/net_namespace.c                                     |    2 
 net/ipv4/fib_semantics.c                                     |    2 
 net/ipv4/inet_hashtables.c                                   |   17 
 net/ipv4/inet_timewait_sock.c                                |    8 
 net/ipv4/metrics.c                                           |    2 
 net/ipv4/tcp.c                                               |    2 
 net/ipv6/ip6_output.c                                        |   15 
 net/l2tp/l2tp_core.c                                         |  116 ++-
 net/mctp/af_mctp.c                                           |    1 
 net/mctp/route.c                                             |    6 
 net/netfilter/nf_conntrack_proto_sctp.c                      |  118 +--
 net/netfilter/nf_conntrack_standalone.c                      |    8 
 net/netfilter/nft_set_rbtree.c                               |  332 ++++++-----
 net/netlink/af_netlink.c                                     |   38 -
 net/netrom/nr_timer.c                                        |    1 
 net/nfc/llcp_core.c                                          |    1 
 net/sched/sch_htb.c                                          |   27 
 net/sched/sch_taprio.c                                       |    2 
 net/sctp/bind_addr.c                                         |    6 
 scripts/Makefile                                             |    4 
 scripts/dtc/Makefile                                         |    6 
 scripts/kconfig/gconf-cfg.sh                                 |   12 
 scripts/kconfig/mconf-cfg.sh                                 |   16 
 scripts/kconfig/nconf-cfg.sh                                 |   16 
 scripts/kconfig/qconf-cfg.sh                                 |   14 
 scripts/tracing/ftrace-bisect.sh                             |   34 -
 security/tomoyo/Makefile                                     |    2 
 sound/soc/fsl/fsl-asoc-card.c                                |    8 
 sound/soc/fsl/fsl_micfil.c                                   |   16 
 sound/soc/fsl/fsl_ssi.c                                      |    4 
 tools/gpio/gpio-event-mon.c                                  |    1 
 tools/objtool/Makefile                                       |    4 
 tools/objtool/check.c                                        |    3 
 tools/testing/selftests/bpf/prog_tests/jeq_infer_not_null.c  |    9 
 tools/testing/selftests/bpf/progs/jeq_infer_not_null_fail.c  |   42 -
 tools/testing/selftests/net/toeplitz.c                       |   12 
 273 files changed, 2172 insertions(+), 1319 deletions(-)

Adam Ford (1):
arm64: dts: imx8mm-beacon: Fix ecspi2 pinmux

Alexander Gordeev (1):
s390: expicitly align _edata and _end symbols on page boundary

Alexander Potapenko (1):
affs: initialize fsdata in affs_truncate()

Alexey V. Vissarionov (1):
scsi: hpsa: Fix allocation size for scsi_host_alloc()

Andre Przywara (1):
r8152: add vendor/device ID pair for Microsoft Devkit

Andrew Halaney (1):
net: stmmac: enable all safety features by default

Andy Shevchenko (1):
pinctrl/rockchip: Use temporary variable for struct device

Archie Pusaka (1):
Bluetooth: hci_sync: cancel cmd_timer if hci_open failed

Arnd Bergmann (2):
drm/panfrost: fix GENERIC_ATOMIC64 dependency drm/i915/selftest: fix intel_selftest_modify_policy argument types

Ashish Mhetre (1):
memory: tegra: Remove clients SID override programming

Bartosz Golaszewski (1):

      spi: spidev: remove debug messages that access spidev->spi without locking

Biju Das (1):
ravb: Rename "no_ptp_cfg_active" and "ptp_cfg_active" variables

Caleb Connolly (1):
net: ipa: disable ipa interrupt during suspend

Chancel Liu (1):
ASoC: fsl_micfil: Correct the number of steps on SX controls

Chen Zhongjin (1):
driver core: Fix test_async_probe_init saves device in wrong array

Chris Morgan (2):
i2c: mv64xxx: Remove shutdown method from driver
i2c: mv64xxx: Add atomic_xfer method to driver

Christoph Hellwig (1):
block: fix and cleanup bio_check_ro

Christophe JAILLET (1):
PM: AVS: qcom-cpr: Fix an error handling path in cpr_probe()

Chun-Tse Shao (1):
kbuild: Allow kernel installation packaging to override pkg-config

Claudiu Beznea (1):
ARM: dts: at91: sam9x60: fix the ddr clock for sam9x60

Colin Ian King (1):
perf/x86/amd: fix potential integer overflow on shift of a int

Cong Wang (2):
l2tp: convert l2tp_tunnel_list to idr
l2tp: close all race conditions in l2tp_tunnel_register()

Cristian Marussi (2):
firmware: arm_scmi: Harden shared memory access in fetch_response
firmware: arm_scmi: Harden shared memory access in fetch_notification

Dan Carpenter (2):
thermal/core: fix error code in __thermal_cooling_device_register()
gpio: mxc: Unlock on error path in mxc_flip_edge()

Daniel Lezcano (2):
thermal/core: Remove duplicate information when an error occurs thermal/core: Rename 'trips' to 'num_trips'

Dario Binacchi (1):
ARM: imx: add missing of_node_put()

David Christensen (1):
net/tg3: resolve deadlock in tg3_reset_task() during EEH

David Howells (1):

      cifs: Fix oops due to uncleared server->smbd_conn in reconnect

David Morley (1):
tcp: fix rate_app_limited to default to 1

Dean Luick (5):
IB/hfi1: Reject a zero-length user expected buffer IB/hfi1: Reserve user expected TIDs
IB/hfi1: Fix expected receive setup error exit issues IB/hfi1: Immediately remove invalid memory from hardware IB/hfi1: Remove user expected buffer invalidate race

Deepak Sharma (1):
x86: ACPI: cstate: Optimize C3 entry on AMD CPUs

Dmitry Torokhov (1):
Revert "Input: synaptics - switch touchpad on HP Laptop 15-da3001TU to RMI mode"

Dongliang Mu (1):
fs: reiserfs: remove useless new_opts in reiserfs_remount

Eric Dumazet (9):
net/sched: sch_taprio: fix possible use-after-free
l2tp: prevent lockdep issue in l2tp_tunnel_register()
netlink: prevent potential spectre v1 gadgets
netlink: annotate data races around nlk->portid
netlink: annotate data races around dst_portid and dst_group
netlink: annotate data races around sk_state
ipv4: prevent potential spectre v1 gadget in ip_metrics_convert()
ipv4: prevent potential spectre v1 gadget in fib_metrics_match() net/sched: sch_taprio: do not schedule in taprio_reset()

Eric Pilmore (1):
ptdma: pt_core_execute_cmd() should use spinlock

Eric W. Biederman (2):
exit: Add and use make_task_dead.
objtool: Add a missing comma to avoid string concatenation

Esina Ekaterina (1):
net: wan: Add checks for NULL for utdm in undo_uhdlc_init and unmap_si_regs

Fabio Estevam (4):
arm64: dts: imx8mp-phycore-som: Remove invalid PMIC property
ARM: dts: imx6ul-pico-dwarf: Use 'clock-frequency'
ARM: dts: imx7d-pico: Use 'clock-frequency'
ARM: dts: imx6qdl-gw560x: Remove incorrect 'uart-has-rtscts'

Gaosheng Cui (2):
memory: atmel-sdramc: Fix missing clk_disable_unprepare in atmel_ramc_probe()
memory: mvebu-devbus: Fix missing clk_disable_unprepare in mvebu_devbus_probe()

Geert Uytterhoeven (1):
phy: phy-can-transceiver: Skip warning if no "max-bitrate"

Geetha sowjanya (1):
octeontx2-pf: Avoid use of GFP_KERNEL in atomic context

Gergely Risko (1):
ipv6: fix reachability confirmation with proxy_ndp

Giulio Benetti (1):
ARM: 9280/1: mm: fix warning on phys_addr_t to void pointer assignment

Greg Kroah-Hartman (1):

      Linux 5.15.91

Haiyang Zhang (1):
net: mana: Fix IRQ name - add PCI and queue number

Hamza Mahfooz (1):
drm/amd/display: fix issues with driver unload

Hans de Goede (1):
platform/x86: asus-nb-wmi: Add alternate mapping for KEY_SCREENLOCK

Harsh Jain (1):
drm/amdgpu: complete gfxoff allow signal during suspend without delay

Heiko Carstens (1):
KVM: s390: interrupt: use READ_ONCE() before cmpxchg()

Heiner Kallweit (2):
net: mdio: validate parameter addr in mdiobus_get_phy()
net: stmmac: fix invalid call to mdiobus_get_phy()

Hendrik Borghorst (1):
KVM: x86/vmx: Do not skip segment attributes if unusable bit is set

Hui Tang (1):
reset: uniphier-glue: Fix possible null-ptr-deref

Hui Wang (1):
net: usb: cdc_ether: add support for Thales Cinterion PLS62-W modem

Ivo Borisov Shopov (1):
tools: gpio: fix -c option of gpio-event-mon

Jakub Sitnicki (2):
l2tp: Serialize access to sk_user_data with sk_callback_lock
l2tp: Don't sleep and disable BH under writer-side sk_callback_lock

Jann Horn (1):
exit: Put an upper limit on how often we can oops

Jason Wang (1):
virtio-net: correctly enable callback during start_xmit

Jason Xing (1):
tcp: avoid the lookup process failing to get sk in ehash table

Jayesh Choudhary (1):
dmaengine: ti: k3-udma: Do conditional decrement of UDMA_CHAN_RT_PEER_BCNT_REG

Jeremy Kerr (1):
net: mctp: mark socks as dead on unhash, prevent re-add

Jerome Brunet (1):
net: mdio-mux-meson-g12a: force internal PHY off on mux switch

Jiasheng Jiang (1):
HID: intel_ish-hid: Add check for ishtp_dma_tx_map

Jiri Kosina (1):
HID: revert CHERRY_MOUSE_000C quirk

Jisoo Jang (1):
net: nfc: Fix use-after-free in local_cleanup()

Johan Hovold (1):
scsi: ufs: core: Fix devfreq deadlocks

Jonas Karlman (2):
pinctrl: rockchip: fix reading pull type on rk3568
pinctrl: rockchip: fix mux route data for rk3568

Kan Liang (2):
perf/x86/msr: Add Emerald Rapids
perf/x86/intel/uncore: Add Emerald Rapids

Kees Cook (9):
firmware: coreboot: Check size of table entry and use flex-array
panic: Separate sysctl logic from CONFIG_SMP
exit: Expose "oops_count" to sysfs
exit: Allow oops_limit to be disabled
panic: Consolidate open-coded panic_on_warn checks
panic: Introduce warn_limit
panic: Expose "warn_count" to sysfs
docs: Fix path paste-o for /sys/kernel/warn_count
exit: Use READ_ONCE() for all oops/warn limit reads

Keith Busch (2):
nvme-pci: fix timeout request state check
nvme: fix passthrough csi check

Kevin Hao (3):
octeontx2-pf: Fix the use of GFP_KERNEL in atomic context on rt
cpufreq: Move to_gov_attr_set() to cpufreq.h
cpufreq: governor: Use kobject release() method to free dbs_data

Koba Ko (1):
dmaengine: Fix double increment of client_count in dma_chan_get()

Konrad Dybcio (4):
arm64: dts: qcom: msm8992: Don't use sfpb mutex
arm64: dts: qcom: msm8992-libra: Add CPU regulators
arm64: dts: qcom: msm8992-libra: Fix the memory map
cpufreq: Add SM6375 to cpufreq-dt-platdev blocklist

Kuniyuki Iwashima (1):
netrom: Fix use-after-free of a listening socket.

Kurt Kanzenbach (1):
net: stmmac: Fix queue statistics reading

Lareine Khawaly (1):
i2c: designware: use casting of u64 in clock multiplication to avoid overflow

Liao Chang (1):
riscv/kprobe: Fix instruction simulation of JALR

Linus Torvalds (1):
treewide: fix up files incorrectly marked executable

Liu Shixin (1):
dmaengine: xilinx_dma: call of_node_put() when breaking out of for_each_child_of_node()

Luis Gerhorst (1):
bpf: Fix pointer-leak due to insufficient speculative store bypass mitigation

Manivannan Sadhasivam (2):
EDAC/device: Respect any driver-supplied workqueue polling value EDAC/qcom: Do not pass llcc_driv_data as edac_device_ctl_info's pvt_info

Maor Dickman (1):
net/mlx5: E-switch, Fix setting of reserved fields on MODIFY_SCHEDULING_ELEMENT

Marc Zyngier (1):
KVM: arm64: GICv4.1: Fix race with doorbell on VPE activation/deactivation

Marcelo Ricardo Leitner (1):
sctp: fail if no bound addresses can be used for a given scope

Marek Vasut (2):
gpio: mxc: Protect GPIO irqchip RMW with bgpio spinlock
gpio: mxc: Always set GPIOs used as interrupt source to INPUT mode

Marios Makassikis (1):
ksmbd: do not sign response to session request for guest login

Mark Brown (2):
ASoC: fsl_ssi: Rename AC'97 streams to avoid collisions with AC'97 CODEC
ASoC: fsl-asoc-card: Fix naming of AC'97 CODEC widgets

Masahiro Yamada (1):
tomoyo: fix broken dependency on *.conf.default

Mateusz Guzik (1):
lockref: stop doing cpu_relax in the cmpxchg loop

Max Filippov (1):
kcsan: test: don't put the expect array on the stack

Maxim Levitsky (1):
KVM: SVM: fix tsc scaling cache logic

Miaoqian Lin (2):
soc: imx8m: Fix incorrect check for of_clk_get_by_name() EDAC/highbank: Fix memory leak in highbank_mc_probe()

Michael Klein (1):
platform/x86: touchscreen_dmi: Add info for the CSL Panther Tab HD

Miklos Szeredi (1):
ovl: fail on invalid uid/gid mapping at copy up

Miles Chen (1):
cpufreq: armada-37xx: stop using 0 as NULL pointer

Namjae Jeon (4):
ksmbd: add smbd max io size parameter
ksmbd: add max connections parameter
ksmbd: downgrade ndr version error message to debug
ksmbd: limit pdu length size according to connection status

Natalia Petrova (1):
trace_events_hist: add check for return value of 'create_hist_field'

Nathan Chancellor (3):
hexagon: Fix function name in die()
h8300: Fix build errors from do_exit() to make_task_dead() transition
csky: Fix function name in csky_alignment() and die()

Niklas Schnelle (1):
s390/debug: add _ASM_S390_ prefix to header guard

Nirmoy Das (1):
drm/i915: Remove unused variable

Pablo Neira Ayuso (2):
netfilter: nft_set_rbtree: Switch to node list walk for overlap detection
netfilter: nft_set_rbtree: skip elements in transaction from garbage collection

Paolo Abeni (1):
net: fix UaF in netns ops registration error path

Patrick Thompson (1):
drm: Add orientation quirk for Lenovo ideapad D330-10IGL

Paulo Alcantara (1):
cifs: fix potential deadlock in cache_refresh_path()

Petr Pavlu (1):
module: Don't wait for GOING modules

Philipp Zabel (1):
reset: uniphier-glue: Use reset_control_bulk API

Pietro Borrello (3):
HID: check empty report_list in hid_validate_values()
HID: check empty report_list in bigben_probe()
HID: betop: check shape of output reports

Rafael J. Wysocki (1):

      thermal: intel: int340x: Add locking to int340x_thermal_get_trip_type()

Rahul Rameshbabu (1):
sch_htb: Avoid grafting on htb_destroy_class_offload when destroying htb

Raju Rangoju (2):
amd-xgbe: TX Flow Ctrl Registers are h/w ver dependent
amd-xgbe: Delay AN timeout during KR training

Rakesh Sankaranarayanan (1):
net: dsa: microchip: ksz9477: port map correction in ALU table entry register

Randy Dunlap (3):
phy: ti: fix Kconfig warning and operator precedence
net: mlx5: eliminate anonymous module_init & module_exit
ia64: make IA64_MCA_RECOVERY bool instead of tristate

Robert Hancock (1):
net: macb: fix PTP TX timestamp failure due to packet padding

Sasha Levin (1):
Revert "selftests/bpf: check null propagation only neither reg is PTR_TO_BTF_ID"

Schspa Shi (1):
gpio: use raw spinlock for gpio chip shadowed data

Sebastian Reichel (1):
pinctrl/rockchip: add error handling for pull/drive register getters

Shang XiaoJing (1):
phy: rockchip-inno-usb2: Fix missing clk_disable_unprepare() in rockchip_usb2phy_power_on()

Srinivas Pandruvada (1):

      thermal: intel: int340x: Protect trip temperature from concurrent updates

Sriram Yagnaraman (2):
netfilter: conntrack: fix vtag checks for ABORT/SHUTDOWN_COMPLETE
netfilter: conntrack: unify established states for SCTP paths

Steven Rostedt (Google) (2):
tracing: Make sure trace_printk() can output as soon as it can be used ftrace/scripts: Update the instructions for ftrace-bisect.sh

Sumit Gupta (1):
cpufreq: Add Tegra234 to cpufreq-dt-platdev blocklist

Szymon Heidrich (2):
wifi: rndis_wlan: Prevent buffer overflow in rndis_query_oid
net: usb: sr9700: Handle negative len

Thomas Gleixner (1):
x86/i8259: Mark legacy PIC interrupts with IRQ_LEVEL

Thomas Zimmermann (1):
drm/i915: Allow switching away via vga-switcheroo if uninitialized

Tiezhu Yang (3):
panic: unset panic_on_warn inside panic()
ubsan: no need to unset panic_on_warn in ubsan_epilogue()
kasan: no need to unset panic_on_warn in end_report()

Tim Harvey (1):
arm64: dts: imx8mm-venice-gw7901: fix USB2 controller OC polarity

Udipto Goswami (2):
usb: gadget: f_fs: Prevent race during ffs_ep0_queue_wait
usb: gadget: f_fs: Ensure ep0req is dequeued before free_request

Viresh Kumar (2):
thermal: Validate new state in cur_state_store()
thermal: core: call put_device() only after device_register() fails

Vladimir Oltean (1):
net: enetc: avoid deadlock in enetc_tx_onestep_tstamp()

Wenchao Hao (1):
scsi: iscsi: Fix multiple iSCSI session unbind events sent to userspace

Willem de Bruijn (1):
selftests/net: toeplitz: fix race on tpacket_v3 block close

Xiaoming Ni (1):
sysctl: add a new register_sysctl_init() interface

Xingyuan Mo (1):
NFSD: fix use-after-free in nfsd4_ssc_setup_dul()

Yang Yingliang (3):
device property: fix of node refcount leak in fwnode_graph_get_next_endpoint()
w1: fix deadloop in __w1_remove_master_device()
w1: fix WARNING after calling w1_process()

Yihang Li (1):
scsi: hisi_sas: Set a port invalid only if there are no devices attached when refreshing port id

Ying Hsu (1):
Bluetooth: Fix possible deadlock in rfcomm_sk_state_change

Yonatan Nachum (1):
RDMA/core: Fix ib block iterator counter overflow

Yoshihiro Shimoda (2):
net: ravb: Fix lack of register setting after system resumed for Gen3
net: ravb: Fix possible hang if RIS2_QFF1 happen

tangmeng (1):
kernel/panic: move panic sysctls to its own file