Linux 6.1.9
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/i2c/renesas,rzv2m.yaml +2 -2
@@ -16,7 +16,7 @@ properties: compatible: items: - enum: - - renesas,i2c-r9a09g011 # RZ/V2M + - renesas,r9a09g011-i2c # RZ/V2M - const: renesas,rzv2m-i2c reg:
@@ -66,7 +66,7 @@ examples: #include <dt-bindings/interrupt-controller/arm-gic.h> i2c0: i2c@a4030000 { - compatible = "renesas,i2c-r9a09g011", "renesas,rzv2m-i2c"; + compatible = "renesas,r9a09g011-i2c", "renesas,rzv2m-i2c"; reg = <0xa4030000 0x80>; interrupts = <GIC_SPI 232 IRQ_TYPE_EDGE_RISING>, <GIC_SPI 236 IRQ_TYPE_EDGE_RISING>;
Documentation/devicetree/bindings/regulator/samsung,s2mps14.yaml +19 -2
@@ -19,8 +19,8 @@ description: | additional information and example. patternProperties: - # 25 LDOs - "^LDO([1-9]|[1][0-9]|2[0-5])$": + # 25 LDOs, without LDO10-12 + "^LDO([1-9]|1[3-9]|2[0-5])$": type: object $ref: regulator.yaml# unevaluatedProperties: false
@@ -30,6 +30,23 @@ patternProperties: required: - regulator-name + "^LDO(1[0-2])$": + type: object + $ref: regulator.yaml# + unevaluatedProperties: false + description: + Properties for single LDO regulator. + + properties: + samsung,ext-control-gpios: + maxItems: 1 + description: + LDO10, LDO11 and LDO12 can be configured to external control over + GPIO. + + required: + - regulator-name + # 5 bucks "^BUCK[1-5]$": type: object
Documentation/devicetree/bindings/riscv/cpus.yaml +1 -1
@@ -80,7 +80,7 @@ properties: insensitive, letters in the riscv,isa string must be all lowercase to simplify parsing. $ref: "/schemas/types.yaml#/definitions/string" - pattern: ^rv(?:64|32)imaf?d?q?c?b?v?k?h?(?:_[hsxz](?:[a-z])+)*$ + pattern: ^rv(?:64|32)imaf?d?q?c?b?k?j?p?v?h?(?:[hsxz](?:[a-z])+)?(?:_[hsxz](?:[a-z])+)*$ # RISC-V requires 'timebase-frequency' in /cpus, so disallow it here timebase-frequency: false
Documentation/devicetree/bindings/sound/everest,es8326.yaml +0 -0
Documentation/x86/amd-memory-encryption.rst +36 -0
@@ -95,3 +95,39 @@ by supplying mem_encrypt=on on the kernel command line. However, if BIOS does not enable SME, then Linux will not be able to activate memory encryption, even if configured to do so by default or the mem_encrypt=on command line parameter is specified. + +Secure Nested Paging (SNP) +========================== + +SEV-SNP introduces new features (SEV_FEATURES[1:63]) which can be enabled +by the hypervisor for security enhancements. Some of these features need +guest side implementation to function correctly. The below table lists the +expected guest behavior with various possible scenarios of guest/hypervisor +SNP feature support. + ++-----------------+---------------+---------------+------------------+ +| Feature Enabled | Guest needs | Guest has | Guest boot | +| by the HV | implementation| implementation| behaviour | ++=================+===============+===============+==================+ +| No | No | No | Boot | +| | | | | ++-----------------+---------------+---------------+------------------+ +| No | Yes | No | Boot | +| | | | | ++-----------------+---------------+---------------+------------------+ +| No | Yes | Yes | Boot | +| | | | | ++-----------------+---------------+---------------+------------------+ +| Yes | No | No | Boot with | +| | | | feature enabled | ++-----------------+---------------+---------------+------------------+ +| Yes | Yes | No | Graceful boot | +| | | | failure | ++-----------------+---------------+---------------+------------------+ +| Yes | Yes | Yes | Boot with | +| | | | feature enabled | ++-----------------+---------------+---------------+------------------+ + +More details in AMD64 APM[1] Vol 2: 15.34.10 SEV_STATUS MSR + +[1] https://www.amd.com/system/files/TechDocs/40332.pdf
Makefile +15 -2
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 1 -SUBLEVEL = 8 +SUBLEVEL = 9 EXTRAVERSION = NAME = Hurr durr I'ma ninja sloth
@@ -538,7 +538,7 @@ LDFLAGS_MODULE = CFLAGS_KERNEL = RUSTFLAGS_KERNEL = AFLAGS_KERNEL = -export LDFLAGS_vmlinux = +LDFLAGS_vmlinux = # Use USERINCLUDE when you must reference the UAPI directories only. USERINCLUDE := \
@@ -1232,6 +1232,18 @@ vmlinux.o modules.builtin.modinfo modules.builtin: vmlinux_o @: PHONY += vmlinux +# LDFLAGS_vmlinux in the top Makefile defines linker flags for the top vmlinux, +# not for decompressors. LDFLAGS_vmlinux in arch/*/boot/compressed/Makefile is +# unrelated; the decompressors just happen to have the same base name, +# arch/*/boot/compressed/vmlinux. +# Export LDFLAGS_vmlinux only to scripts/Makefile.vmlinux. +# +# _LDFLAGS_vmlinux is a workaround for the 'private export' bug: +# https://savannah.gnu.org/bugs/?61463 +# For Make > 4.4, the following simple code will work: +# vmlinux: private export LDFLAGS_vmlinux := $(LDFLAGS_vmlinux) +vmlinux: private _LDFLAGS_vmlinux := $(LDFLAGS_vmlinux) +vmlinux: export LDFLAGS_vmlinux = $(_LDFLAGS_vmlinux) vmlinux: vmlinux.o $(KBUILD_LDS) modpost $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.vmlinux
@@ -1517,6 +1529,7 @@ endif # *.ko are usually independent of vmlinux, but CONFIG_DEBUG_INFOBTF_MODULES # is an exception. ifdef CONFIG_DEBUG_INFO_BTF_MODULES +KBUILD_BUILTIN := 1 modules: vmlinux endif
arch/arm/boot/dts/imx6qdl-gw560x.dtsi +0 -1
@@ -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
@@ -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
@@ -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
@@ -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
@@ -564,7 +564,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/boot/dts/stm32mp151a-prtt1l.dtsi +6 -2
@@ -101,8 +101,12 @@ &iwdg2 { &qspi { pinctrl-names = "default", "sleep"; - pinctrl-0 = <&qspi_clk_pins_a &qspi_bk1_pins_a>; - pinctrl-1 = <&qspi_clk_sleep_pins_a &qspi_bk1_sleep_pins_a>; + pinctrl-0 = <&qspi_clk_pins_a + &qspi_bk1_pins_a + &qspi_cs1_pins_a>; + pinctrl-1 = <&qspi_clk_sleep_pins_a + &qspi_bk1_sleep_pins_a + &qspi_cs1_sleep_pins_a>; reg = <0x58003000 0x1000>, <0x70000000 0x4000000>; #address-cells = <1>; #size-cells = <0>;
arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi +6 -2
@@ -391,8 +391,12 @@ &pwr_regulators { &qspi { pinctrl-names = "default", "sleep"; - pinctrl-0 = <&qspi_clk_pins_a &qspi_bk1_pins_a>; - pinctrl-1 = <&qspi_clk_sleep_pins_a &qspi_bk1_sleep_pins_a>; + pinctrl-0 = <&qspi_clk_pins_a + &qspi_bk1_pins_a + &qspi_cs1_pins_a>; + pinctrl-1 = <&qspi_clk_sleep_pins_a + &qspi_bk1_sleep_pins_a + &qspi_cs1_sleep_pins_a>; reg = <0x58003000 0x1000>, <0x70000000 0x4000000>; #address-cells = <1>; #size-cells = <0>;
arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi +6 -2
@@ -428,8 +428,12 @@ &pwr_regulators { &qspi { pinctrl-names = "default", "sleep"; - pinctrl-0 = <&qspi_clk_pins_a &qspi_bk1_pins_a>; - pinctrl-1 = <&qspi_clk_sleep_pins_a &qspi_bk1_sleep_pins_a>; + pinctrl-0 = <&qspi_clk_pins_a + &qspi_bk1_pins_a + &qspi_cs1_pins_a>; + pinctrl-1 = <&qspi_clk_sleep_pins_a + &qspi_bk1_sleep_pins_a + &qspi_cs1_sleep_pins_a>; reg = <0x58003000 0x1000>, <0x70000000 0x4000000>; #address-cells = <1>; #size-cells = <0>;
arch/arm/boot/dts/stm32mp15xx-dhcor-som.dtsi +6 -2
@@ -247,8 +247,12 @@ &pwr_regulators { &qspi { pinctrl-names = "default", "sleep"; - pinctrl-0 = <&qspi_clk_pins_a &qspi_bk1_pins_a>; - pinctrl-1 = <&qspi_clk_sleep_pins_a &qspi_bk1_sleep_pins_a>; + pinctrl-0 = <&qspi_clk_pins_a + &qspi_bk1_pins_a + &qspi_cs1_pins_a>; + pinctrl-1 = <&qspi_clk_sleep_pins_a + &qspi_bk1_sleep_pins_a + &qspi_cs1_sleep_pins_a>; reg = <0x58003000 0x1000>, <0x70000000 0x200000>; #address-cells = <1>; #size-cells = <0>;
arch/arm/mach-imx/cpu-imx25.c +1 -0
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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/nommu.c +1 -1
@@ -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
@@ -120,7 +120,7 @@ &csi { &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 {
@@ -316,7 +316,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
@@ -759,6 +759,7 @@ &usbotg1 { &usbotg2 { dr_mode = "host"; vbus-supply = <®_usb2_vbus>; + over-current-active-low; status = "okay"; };
arch/arm64/boot/dts/freescale/imx8mm-verdin-dahlia.dtsi +1 -0
@@ -9,6 +9,7 @@ sound_card: sound-card { simple-audio-card,bitclock-master = <&dailink_master>; simple-audio-card,format = "i2s"; simple-audio-card,frame-master = <&dailink_master>; + simple-audio-card,mclk-fs = <256>; simple-audio-card,name = "imx8mm-wm8904"; simple-audio-card,routing = "Headphone Jack", "HPOUTL",
arch/arm64/boot/dts/freescale/imx8mm-verdin-dev.dtsi +1 -0
@@ -11,6 +11,7 @@ sound_card: sound-card { simple-audio-card,bitclock-master = <&dailink_master>; simple-audio-card,format = "i2s"; simple-audio-card,frame-master = <&dailink_master>; + simple-audio-card,mclk-fs = <256>; simple-audio-card,name = "imx8mm-nau8822"; simple-audio-card,routing = "Headphones", "LHP",
arch/arm64/boot/dts/freescale/imx8mp-evk.dts +2 -2
@@ -36,8 +36,8 @@ memory@40000000 { pcie0_refclk: pcie0-refclk { compatible = "fixed-clock"; - #clock-cells = <0>; - clock-frequency = <100000000>; + #clock-cells = <0>; + clock-frequency = <100000000>; }; reg_can1_stby: regulator-can1-stby {
arch/arm64/boot/dts/freescale/imx8mp-phycore-som.dtsi +0 -10
@@ -99,7 +99,6 @@ pmic: pmic@25 { regulators { buck1: BUCK1 { - regulator-compatible = "BUCK1"; regulator-min-microvolt = <600000>; regulator-max-microvolt = <2187500>; regulator-boot-on;
@@ -108,7 +107,6 @@ buck1: BUCK1 { }; buck2: BUCK2 { - regulator-compatible = "BUCK2"; regulator-min-microvolt = <600000>; regulator-max-microvolt = <2187500>; regulator-boot-on;
@@ -119,7 +117,6 @@ buck2: BUCK2 { }; buck4: BUCK4 { - regulator-compatible = "BUCK4"; regulator-min-microvolt = <600000>; regulator-max-microvolt = <3400000>; regulator-boot-on;
@@ -127,7 +124,6 @@ buck4: BUCK4 { }; buck5: BUCK5 { - regulator-compatible = "BUCK5"; regulator-min-microvolt = <600000>; regulator-max-microvolt = <3400000>; regulator-boot-on;
@@ -135,7 +131,6 @@ buck5: BUCK5 { }; buck6: BUCK6 { - regulator-compatible = "BUCK6"; regulator-min-microvolt = <600000>; regulator-max-microvolt = <3400000>; regulator-boot-on;
@@ -143,7 +138,6 @@ buck6: BUCK6 { }; ldo1: LDO1 { - regulator-compatible = "LDO1"; regulator-min-microvolt = <1600000>; regulator-max-microvolt = <3300000>; regulator-boot-on;
@@ -151,7 +145,6 @@ ldo1: LDO1 { }; ldo2: LDO2 { - regulator-compatible = "LDO2"; regulator-min-microvolt = <800000>; regulator-max-microvolt = <1150000>; regulator-boot-on;
@@ -159,7 +152,6 @@ ldo2: LDO2 { }; ldo3: LDO3 { - regulator-compatible = "LDO3"; regulator-min-microvolt = <800000>; regulator-max-microvolt = <3300000>; regulator-boot-on;
@@ -167,13 +159,11 @@ ldo3: LDO3 { }; ldo4: LDO4 { - regulator-compatible = "LDO4"; regulator-min-microvolt = <800000>; regulator-max-microvolt = <3300000>; }; ldo5: LDO5 { - regulator-compatible = "LDO5"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <3300000>; regulator-boot-on;
arch/arm64/boot/dts/freescale/imx8mp.dtsi +2 -1
@@ -523,6 +523,7 @@ gpc: gpc@303a0000 { compatible = "fsl,imx8mp-gpc"; reg = <0x303a0000 0x1000>; interrupt-parent = <&gic>; + interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>; interrupt-controller; #interrupt-cells = <3>;
@@ -589,7 +590,7 @@ pgc_mipi_phy2: power-domain@16 { reg = <IMX8MP_POWER_DOMAIN_MIPI_PHY2>; }; - pgc_hsiomix: power-domains@17 { + pgc_hsiomix: power-domain@17 { #power-domain-cells = <0>; reg = <IMX8MP_POWER_DOMAIN_HSIOMIX>; clocks = <&clk IMX8MP_CLK_HSIO_AXI>,
arch/arm64/boot/dts/freescale/imx93-11x11-evk.dts +3 -3
@@ -74,7 +74,7 @@ MX93_PAD_UART1_TXD__LPUART1_TX 0x31e pinctrl_usdhc1: usdhc1grp { fsl,pins = < - MX93_PAD_SD1_CLK__USDHC1_CLK 0x17fe + MX93_PAD_SD1_CLK__USDHC1_CLK 0x15fe MX93_PAD_SD1_CMD__USDHC1_CMD 0x13fe MX93_PAD_SD1_DATA0__USDHC1_DATA0 0x13fe MX93_PAD_SD1_DATA1__USDHC1_DATA1 0x13fe
@@ -84,7 +84,7 @@ MX93_PAD_SD1_DATA4__USDHC1_DATA4 0x13fe MX93_PAD_SD1_DATA5__USDHC1_DATA5 0x13fe MX93_PAD_SD1_DATA6__USDHC1_DATA6 0x13fe MX93_PAD_SD1_DATA7__USDHC1_DATA7 0x13fe - MX93_PAD_SD1_STROBE__USDHC1_STROBE 0x17fe + MX93_PAD_SD1_STROBE__USDHC1_STROBE 0x15fe >; };
@@ -102,7 +102,7 @@ MX93_PAD_SD2_CD_B__GPIO3_IO00 0x31e pinctrl_usdhc2: usdhc2grp { fsl,pins = < - MX93_PAD_SD2_CLK__USDHC2_CLK 0x17fe + MX93_PAD_SD2_CLK__USDHC2_CLK 0x15fe MX93_PAD_SD2_CMD__USDHC2_CMD 0x13fe MX93_PAD_SD2_DATA0__USDHC2_DATA0 0x13fe MX93_PAD_SD2_DATA1__USDHC2_DATA1 0x13fe
arch/arm64/boot/dts/marvell/ac5-98dx25xx.dtsi +1 -1
@@ -97,7 +97,7 @@ uart0: serial@12000 { uart1: serial@12100 { compatible = "snps,dw-apb-uart"; - reg = <0x11000 0x100>; + reg = <0x12100 0x100>; reg-shift = <2>; interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>; reg-io-width = <1>;
arch/arm64/boot/dts/qcom/msm8992-xiaomi-libra.dts +60 -17
102 lines not on this page · raw message
arch/arm64/boot/dts/qcom/msm8992.dtsi +0 -4
@@ -36,10 +36,6 @@ &rpmcc { compatible = "qcom,rpmcc-msm8992", "qcom,rpmcc"; }; -&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/boot/dts/qcom/sc8280xp.dtsi +1 -1
@@ -1173,7 +1173,7 @@ usb_0_qmpphy: phy-wrapper@88ec000 { clock-names = "aux", "ref_clk_src", "ref", "com_aux"; resets = <&gcc GCC_USB3_PHY_PRIM_BCR>, - <&gcc GCC_USB3_DP_PHY_PRIM_BCR>; + <&gcc GCC_USB4_DP_PHY_PRIM_BCR>; reset-names = "phy", "common"; power-domains = <&gcc USB30_PRIM_GDSC>;
arch/arm64/include/asm/efi.h +17 -0
@@ -14,8 +14,16 @@#ifdef CONFIG_EFI extern void efi_init (void ); + +bool efi_runtime_fixup_exception (struct pt_regs *regs,const char *msg);#else #define efi_init () + +static inline +bool efi_runtime_fixup_exception (struct pt_regs *regs,const char *msg) +{ +return false; +}#endif int efi_create_mapping (struct mm_struct *mm,efi_memory_desc_t *md);
@@ -40,8 +48,17 @@ int efi_set_mapping_permissions(struct mm_struct *mm, efi_memory_desc_t *md); })extern spinlock_t efi_rt_lock; +extern u64 *efi_rt_stack_top;efi_status_t __efi_rt_asm_wrapper (void *,const char *, ...); +/* +* efi_rt_stack_top[-1] contains the value the stack pointer had before +* switching to the EFI runtime stack. +*/ +#define current_in_efi () \ + (!preemptible() && efi_rt_stack_top != NULL && \ + on_task_stack(current, READ_ONCE(efi_rt_stack_top[-1]), 1)) +#define ARCH_EFI_IRQ_FLAGS_MASK (PSR_D_BIT | PSR_A_BIT | PSR_I_BIT | PSR_F_BIT)/*
arch/arm64/include/asm/stacktrace.h +15 -0
@@ -104,4 +104,19 @@ static inline struct stack_info stackinfo_get_sdei_critical(void)#define stackinfo_get_sdei_critical () stackinfo_get_unknown()#endif +#ifdef CONFIG_EFI +extern u64 *efi_rt_stack_top; + +static inline struct stack_info stackinfo_get_efi (void ) +{ +unsigned long high = (u64 )efi_rt_stack_top; +unsigned long low = high -THREAD_SIZE ; + +return (struct stack_info ) { + .low = low, + .high = high, + }; +} +#endif +#endif /* __ASM_STACKTRACE_H */
arch/arm64/kernel/efi-rt-wrapper.S +33 -5
@@ -7,7 +7,7 @@ #include <asm/assembler.h> SYM_FUNC_START(__efi_rt_asm_wrapper) - stp x29, x30, [sp, #-32]! + stp x29, x30, [sp, #-112]! mov x29, sp /*
@@ -17,11 +17,21 @@ SYM_FUNC_START(__efi_rt_asm_wrapper) */ stp x1, x18, [sp, #16] + /* + * Preserve all callee saved registers and preserve the stack pointer + * value at the base of the EFI runtime stack so we can recover from + * synchronous exceptions occurring while executing the firmware + * routines. + */ + stp x19, x20, [sp, #32] + stp x21, x22, [sp, #48] + stp x23, x24, [sp, #64] + stp x25, x26, [sp, #80] + stp x27, x28, [sp, #96] + ldr_l x16, efi_rt_stack_top mov sp, x16 -#ifdef CONFIG_SHADOW_CALL_STACK - str x18, [sp, #-16]! -#endif + stp x18, x29, [sp, #-16]! /* * We are lucky enough that no EFI runtime services take more than
@@ -36,10 +46,13 @@ SYM_FUNC_START(__efi_rt_asm_wrapper) mov x4, x6 blr x8 + mov x16, sp mov sp, x29 + str xzr, [x16, #8] // clear recorded task SP value + ldp x1, x2, [sp, #16] cmp x2, x18 - ldp x29, x30, [sp], #32 + ldp x29, x30, [sp], #112 b.ne 0f ret 0:
@@ -57,3 +70,18 @@ SYM_FUNC_START(__efi_rt_asm_wrapper) b efi_handle_corrupted_x18 // tail call SYM_FUNC_END(__efi_rt_asm_wrapper) + +SYM_CODE_START(__efi_rt_asm_recover) + mov sp, x30 + + ldr_l x16, efi_rt_stack_top // clear recorded task SP value + str xzr, [x16, #-8] + + ldp x19, x20, [sp, #32] + ldp x21, x22, [sp, #48] + ldp x23, x24, [sp, #64] + ldp x25, x26, [sp, #80] + ldp x27, x28, [sp, #96] + ldp x29, x30, [sp], #112 + ret +SYM_CODE_END(__efi_rt_asm_recover)
arch/arm64/kernel/efi.c +23 -0
@@ -11,6 +11,7 @@#include <linux/init.h> #include <asm/efi.h> +#include <asm/stacktrace.h> static bool region_is_misaligned (const efi_memory_desc_t *md) {
@@ -149,6 +150,28 @@ DEFINE_SPINLOCK(efi_rt_lock); asmlinkage u64 *efi_rt_stack_top __ro_after_init; +asmlinkage efi_status_t __efi_rt_asm_recover(void); + +bool efi_runtime_fixup_exception (struct pt_regs *regs,const char *msg) +{ +/* Check whether the exception occurred while running the firmware */ +if (!current_in_efi () || regs->pc >=TASK_SIZE_64 ) +return false; + +pr_err (FW_BUG "Unable to handle %s in EFI runtime service\n" , msg); +add_taint (TAINT_FIRMWARE_WORKAROUND ,LOCKDEP_STILL_OK ); +clear_bit (EFI_RUNTIME_SERVICES , &efi.flags); + + regs->regs[0 ] =EFI_ABORTED ; + regs->regs[30 ] = efi_rt_stack_top[-1 ]; + regs->pc = (u64 )__efi_rt_asm_recover; + +if (IS_ENABLED (CONFIG_SHADOW_CALL_STACK )) + regs->regs[18 ] = efi_rt_stack_top[-2 ]; + +return true; +} +/* EFI requires 8 KiB of stack space for runtime services */ static_assert (THREAD_SIZE >=SZ_8K );
arch/arm64/kernel/stacktrace.c +12 -0
@@ -5,6 +5,7 @@* Copyright (C) 2012 ARM Ltd. */ #include <linux/kernel.h> +#include <linux/efi.h> #include <linux/export.h> #include <linux/ftrace.h> #include <linux/sched.h>
@@ -12,6 +13,7 @@#include <linux/sched/task_stack.h> #include <linux/stacktrace.h> +#include <asm/efi.h> #include <asm/irq.h> #include <asm/stack_pointer.h> #include <asm/stacktrace.h>
@@ -186,6 +188,13 @@ void show_stack(struct task_struct *tsk, unsigned long *sp, const char *loglvl) : stackinfo_get_unknown(); \ }) +#define STACKINFO_EFI \ + ({ \ + ((task == current) && current_in_efi()) \ + ? stackinfo_get_efi() \ + : stackinfo_get_unknown(); \ + }) + noinline noinstr void arch_stack_walk(stack_trace_consume_fn consume_entry,void *cookie,struct task_struct *task,struct pt_regs *regs)
@@ -199,6 +208,9 @@ noinline noinstr void arch_stack_walk(stack_trace_consume_fn consume_entry,#if defined(CONFIG_VMAP_STACK ) && defined(CONFIG_ARM_SDE_INTERFACE ) STACKINFO_SDEI(normal), STACKINFO_SDEI(critical), +#endif +#ifdef CONFIG_EFI + STACKINFO_EFI,#endif };struct unwind_state state = {
arch/arm64/kvm/vgic/vgic-v3.c +11 -14
@@ -350,26 +350,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)); }/**
@@ -394,7 +391,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; }
@@ -444,7 +441,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
@@ -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
@@ -283,8 +288,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
@@ -331,5 +331,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 +4 -0
@@ -30,6 +30,7 @@#include <asm/bug.h> #include <asm/cmpxchg.h> #include <asm/cpufeature.h> +#include <asm/efi.h> #include <asm/exception.h> #include <asm/daifflags.h> #include <asm/debug-monitors.h>
@@ -397,6 +398,9 @@ static void __do_kernel_fault(unsigned long addr, unsigned long esr, msg ="paging request" ; } +if (efi_runtime_fixup_exception (regs, msg)) +return ; +die_kernel_fault (msg, addr, esr, regs); }
arch/riscv/kernel/head.S +1 -1
@@ -326,7 +326,7 @@ clear_bss_done: call soc_early_init tail start_kernel -#if CONFIG_RISCV_BOOT_SPINWAIT +#ifdef CONFIG_RISCV_BOOT_SPINWAIT .Lsecondary_start: /* Set trap vector to spin forever to help debug */ la a3, .Lsecondary_park
arch/riscv/kernel/probes/simulate-insn.c +2 -2
@@ -71,11 +71,11 @@ bool __kprobes simulate_jalr(u32 opcode, unsigned long addr, struct pt_regs *regu32 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/smpboot.c +2 -1
@@ -39,7 +39,6 @@ static DECLARE_COMPLETION(cpu_running);void __init smp_prepare_boot_cpu (void ) { -init_cpu_topology (); }void __init smp_prepare_cpus (unsigned int max_cpus)
@@ -48,6 +47,8 @@ void __init smp_prepare_cpus(unsigned int max_cpus)int ret;unsigned int curr_cpuid; +init_cpu_topology (); + curr_cpuid =smp_processor_id ();store_cpu_topology (curr_cpuid);numa_store_cpu_info (curr_cpuid);
arch/s390/include/asm/debug.h +3 -3
@@ -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/vmlinux.lds.S +2 -0
@@ -79,6 +79,7 @@ SECTIONS _end_amode31_refs = .; } + . = ALIGN(PAGE_SIZE); _edata = .; /* End of data section */ /* will be freed after init */
@@ -193,6 +194,7 @@ SECTIONS BSS_SECTION(PAGE_SIZE, 4 * PAGE_SIZE, PAGE_SIZE) + . = ALIGN(PAGE_SIZE); _end = . ; /*
arch/s390/kvm/interrupt.c +8 -4
@@ -83,8 +83,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 ;
@@ -95,8 +96,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 ;
@@ -126,16 +128,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/x86/boot/compressed/ident_map_64.c +6 -0
@@ -180,6 +180,12 @@ void initialize_identity_maps(void *rmode)/* Load the new page-table. */ write_cr3 (top_level_pgt); + +/* +* Now that the required page table mappings are established and a +* GHCB can be used, check for SNP guest/HV feature compatibility. +*/ +snp_check_features (); } static pte_t *split_large_pmd(struct x86_mapping_info *info,
arch/x86/boot/compressed/misc.h +2 -0
@@ -126,6 +126,7 @@ static inline void console_init(void)#ifdef CONFIG_AMD_MEM_ENCRYPT void sev_enable (struct boot_params *bp); +void snp_check_features (void );void sev_es_shutdown_ghcb (void );extern bool sev_es_check_ghcb_fault (unsigned long address);void snp_set_page_private (unsigned long paddr);
@@ -143,6 +144,7 @@ static inline void sev_enable(struct boot_params *bp)if (bp) bp->cc_blob_address =0 ; } +static inline void snp_check_features (void ) { }static inline void sev_es_shutdown_ghcb (void ) { }static inline bool sev_es_check_ghcb_fault (unsigned long address) {
arch/x86/boot/compressed/sev.c +70 -0
82 lines not on this page · raw message
arch/x86/events/amd/core.c +1 -1
@@ -1387,7 +1387,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/cstate.c +12 -9
@@ -41,6 +41,7 @@* MSR_CORE_C1_RES: CORE C1 Residency Counter * perf code: 0x00 * Available model: SLM,AMT,GLM,CNL,ICX,TNT,ADL,RPL +* MTL * Scope: Core (each processor core has a MSR) * MSR_CORE_C3_RESIDENCY: CORE C3 Residency Counter * perf code: 0x01
@@ -51,50 +52,50 @@* perf code: 0x02 * Available model: SLM,AMT,NHM,WSM,SNB,IVB,HSW,BDW, * SKL,KNL,GLM,CNL,KBL,CML,ICL,ICX, -* TGL,TNT,RKL,ADL,RPL,SPR +* TGL,TNT,RKL,ADL,RPL,SPR,MTL * Scope: Core * MSR_CORE_C7_RESIDENCY: CORE C7 Residency Counter * perf code: 0x03 * Available model: SNB,IVB,HSW,BDW,SKL,CNL,KBL,CML, -* ICL,TGL,RKL,ADL,RPL +* ICL,TGL,RKL,ADL,RPL,MTL * Scope: Core * MSR_PKG_C2_RESIDENCY: Package C2 Residency Counter. * perf code: 0x00 * Available model: SNB,IVB,HSW,BDW,SKL,KNL,GLM,CNL, * KBL,CML,ICL,ICX,TGL,TNT,RKL,ADL, -* RPL,SPR +* RPL,SPR,MTL * Scope: Package (physical package) * MSR_PKG_C3_RESIDENCY: Package C3 Residency Counter. * perf code: 0x01 * Available model: NHM,WSM,SNB,IVB,HSW,BDW,SKL,KNL, * GLM,CNL,KBL,CML,ICL,TGL,TNT,RKL, -* ADL,RPL +* ADL,RPL,MTL * Scope: Package (physical package) * MSR_PKG_C6_RESIDENCY: Package C6 Residency Counter. * perf code: 0x02 * Available model: SLM,AMT,NHM,WSM,SNB,IVB,HSW,BDW, * SKL,KNL,GLM,CNL,KBL,CML,ICL,ICX, -* TGL,TNT,RKL,ADL,RPL,SPR +* TGL,TNT,RKL,ADL,RPL,SPR,MTL * Scope: Package (physical package) * MSR_PKG_C7_RESIDENCY: Package C7 Residency Counter. * perf code: 0x03 * Available model: NHM,WSM,SNB,IVB,HSW,BDW,SKL,CNL, -* KBL,CML,ICL,TGL,RKL,ADL,RPL +* KBL,CML,ICL,TGL,RKL,ADL,RPL,MTL * Scope: Package (physical package) * MSR_PKG_C8_RESIDENCY: Package C8 Residency Counter. * perf code: 0x04 * Available model: HSW ULT,KBL,CNL,CML,ICL,TGL,RKL, -* ADL,RPL +* ADL,RPL,MTL * Scope: Package (physical package) * MSR_PKG_C9_RESIDENCY: Package C9 Residency Counter. * perf code: 0x05 * Available model: HSW ULT,KBL,CNL,CML,ICL,TGL,RKL, -* ADL,RPL +* ADL,RPL,MTL * Scope: Package (physical package) * MSR_PKG_C10_RESIDENCY: Package C10 Residency Counter. * perf code: 0x06 * Available model: HSW ULT,KBL,GLM,CNL,CML,ICL,TGL, -* TNT,RKL,ADL,RPL +* TNT,RKL,ADL,RPL,MTL * Scope: Package (physical package) * */
@@ -686,6 +687,8 @@ static const struct x86_cpu_id intel_cstates_match[] __initconst = {X86_MATCH_INTEL_FAM6_MODEL (RAPTORLAKE , &adl_cstates),X86_MATCH_INTEL_FAM6_MODEL (RAPTORLAKE_P , &adl_cstates),X86_MATCH_INTEL_FAM6_MODEL (RAPTORLAKE_S , &adl_cstates), +X86_MATCH_INTEL_FAM6_MODEL (METEORLAKE , &adl_cstates), +X86_MATCH_INTEL_FAM6_MODEL (METEORLAKE_L , &adl_cstates), { }, };MODULE_DEVICE_TABLE (x86cpu, intel_cstates_match);
arch/x86/events/intel/uncore.c +1 -0
@@ -1833,6 +1833,7 @@ static const struct x86_cpu_id intel_uncore_match[] __initconst = {X86_MATCH_INTEL_FAM6_MODEL (RAPTORLAKE_P , &adl_uncore_init),X86_MATCH_INTEL_FAM6_MODEL (RAPTORLAKE_S , &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 +3 -0
@@ -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 :
@@ -107,6 +108,8 @@ static bool test_intel(int idx, void *data)case INTEL_FAM6_RAPTORLAKE :case INTEL_FAM6_RAPTORLAKE_P :case INTEL_FAM6_RAPTORLAKE_S : +case INTEL_FAM6_METEORLAKE : +case INTEL_FAM6_METEORLAKE_L :if (idx ==PERF_MSR_SMI || idx ==PERF_MSR_PPERF )return true;break ;
arch/x86/include/asm/acpi.h +8 -0
@@ -14,6 +14,7 @@#include <asm/mmu.h> #include <asm/mpspec.h> #include <asm/x86_init.h> +#include <asm/cpufeature.h> #ifdef CONFIG_ACPI_APEI # include <asm/pgtable_types.h>
@@ -63,6 +64,13 @@ extern int (*acpi_suspend_lowlevel)(void);/* Physical address to resume after wakeup */ unsigned long acpi_get_wakeup_address (void ); +static inline bool acpi_skip_set_wakeup_address (void ) +{ +return cpu_feature_enabled (X86_FEATURE_XENPV ); +} + +#define acpi_skip_set_wakeup_address acpi_skip_set_wakeup_address +/* * Check if the CPU can handle C2 and deeper */
arch/x86/include/asm/msr-index.h +20 -0
@@ -571,6 +571,26 @@#define MSR_AMD64_SEV_ES_ENABLED BIT_ULL(MSR_AMD64_SEV_ES_ENABLED_BIT)#define MSR_AMD64_SEV_SNP_ENABLED BIT_ULL(MSR_AMD64_SEV_SNP_ENABLED_BIT) +/* SNP feature bits enabled by the hypervisor */ +#define MSR_AMD64_SNP_VTOM BIT_ULL(3) +#define MSR_AMD64_SNP_REFLECT_VC BIT_ULL(4) +#define MSR_AMD64_SNP_RESTRICTED_INJ BIT_ULL(5) +#define MSR_AMD64_SNP_ALT_INJ BIT_ULL(6) +#define MSR_AMD64_SNP_DEBUG_SWAP BIT_ULL(7) +#define MSR_AMD64_SNP_PREVENT_HOST_IBS BIT_ULL(8) +#define MSR_AMD64_SNP_BTB_ISOLATION BIT_ULL(9) +#define MSR_AMD64_SNP_VMPL_SSS BIT_ULL(10) +#define MSR_AMD64_SNP_SECURE_TSC BIT_ULL(11) +#define MSR_AMD64_SNP_VMGEXIT_PARAM BIT_ULL(12) +#define MSR_AMD64_SNP_IBS_VIRT BIT_ULL(14) +#define MSR_AMD64_SNP_VMSA_REG_PROTECTION BIT_ULL(16) +#define MSR_AMD64_SNP_SMT_PROTECTION BIT_ULL(17) + +/* SNP feature bits reserved for future use. */ +#define MSR_AMD64_SNP_RESERVED_BIT13 BIT_ULL(13) +#define MSR_AMD64_SNP_RESERVED_BIT15 BIT_ULL(15) +#define MSR_AMD64_SNP_RESERVED_MASK GENMASK_ULL(63, 18) +#define MSR_AMD64_VIRT_SPEC_CTRL 0xc001011f/* AMD Collaborative Processor Performance Control MSRs */
arch/x86/include/uapi/asm/svm.h +6 -0
@@ -116,6 +116,12 @@#define SVM_VMGEXIT_AP_CREATE 1#define SVM_VMGEXIT_AP_DESTROY 2#define SVM_VMGEXIT_HV_FEATURES 0x8000fffd +#define SVM_VMGEXIT_TERM_REQUEST 0x8000fffe +#define SVM_VMGEXIT_TERM_REASON (reason_set, reason_code) \ +/* SW_EXITINFO1[3:0] */ \ + (((((u64)reason_set) & 0xf)) | \ +/* SW_EXITINFO1[11:4] */ \ + ((((u64)reason_code) & 0xff) << 4))#define SVM_VMGEXIT_UNSUPPORTED_EVENT 0x8000ffff/* Exit code reserved for hypervisor/software use */
arch/x86/kernel/i8259.c +1 -0
@@ -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
@@ -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/vmx/vmx.c +9 -12
@@ -3412,18 +3412,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; }
drivers/acpi/resource.c +7 -0
@@ -432,6 +432,13 @@ static const struct dmi_system_id asus_laptop[] = { DMI_MATCH(DMI_BOARD_NAME, "S5602ZA"), }, }, + { + .ident = "Asus ExpertBook B2402CBA", + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ), + DMI_MATCH(DMI_BOARD_NAME, "B2402CBA"), + }, + }, { .ident ="Asus ExpertBook B2502" , .matches = {
drivers/acpi/sleep.c +5 -1
@@ -60,13 +60,17 @@ static struct notifier_block tts_notifier = { .priority = 0, }; +#ifndef acpi_skip_set_wakeup_address +#define acpi_skip_set_wakeup_address () false +#endif +static int acpi_sleep_prepare (u32 acpi_state) {#ifdef CONFIG_ACPI_SLEEP unsigned long acpi_wakeup_address;/* do we have a wakeup address for S2 and S3? */ -if (acpi_state ==ACPI_STATE_S3 ) { +if (acpi_state ==ACPI_STATE_S3 && !acpi_skip_set_wakeup_address ()) { acpi_wakeup_address =acpi_get_wakeup_address ();if (!acpi_wakeup_address)return -EFAULT ;
drivers/acpi/video_detect.c +28 -21
85 lines not on this page · raw message
drivers/ata/Kconfig +1 -0
@@ -650,6 +650,7 @@ config PATA_CS5530 config PATA_CS5535 tristate "CS5535 PATA support (Experimental)" depends on PCI && (X86_32 || (X86_64 && COMPILE_TEST)) + depends on !UML help This option enables support for the NatSemi/AMD CS5535 companion chip used with the Geode processor family.
drivers/base/property.c +12 -6
@@ -989,26 +989,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
@@ -145,7 +145,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/block/rnbd/rnbd-clt.c +1 -1
@@ -1440,7 +1440,7 @@ static struct rnbd_clt_dev *init_dev(struct rnbd_clt_session *sess, goto out_alloc; } - ret =ida_alloc_max (&index_ida,1 << (MINORBITS -RNBD_PART_BITS ), + ret =ida_alloc_max (&index_ida, (1 << (MINORBITS -RNBD_PART_BITS )) -1 ,GFP_KERNEL );if (ret <0 ) { pr_err("Failed to initialize device '%s' from session %s, allocating idr failed, err: %d\n",
drivers/block/ublk_drv.c +3 -4
@@ -2092,13 +2092,12 @@ static void __exit ublk_exit(void)struct ublk_device *ub;int id; -class_destroy (ublk_chr_class); - -misc_deregister (&ublk_misc); -idr_for_each_entry (&ublk_index_idr, ub, id)ublk_remove (ub); +class_destroy (ublk_chr_class); +misc_deregister (&ublk_misc); +idr_destroy (&ublk_index_idr);unregister_chrdev_region (ublk_chr_devt,UBLK_MINORS ); }
drivers/cpufreq/armada-37xx-cpufreq.c +1 -1
@@ -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/cppc_cpufreq.c +6 -5
@@ -487,7 +487,8 @@ static unsigned int get_perf_level_count(struct cpufreq_policy *policy) cpu_data = policy->driver_data; perf_caps = &cpu_data->perf_caps; max_cap =arch_scale_cpu_capacity (cpu); - min_cap =div_u64 (max_cap * perf_caps->lowest_perf, perf_caps->highest_perf); + min_cap =div_u64 ((u64 )max_cap * perf_caps->lowest_perf, + perf_caps->highest_perf);if ((min_cap ==0 ) || (max_cap < min_cap))return 0 ;return 1 + max_cap /CPPC_EM_CAP_STEP - min_cap /CPPC_EM_CAP_STEP ;
@@ -519,10 +520,10 @@ static int cppc_get_cpu_power(struct device *cpu_dev, cpu_data = policy->driver_data; perf_caps = &cpu_data->perf_caps; max_cap =arch_scale_cpu_capacity (cpu_dev->id); - min_cap =div_u64 (max_cap * perf_caps->lowest_perf, - perf_caps->highest_perf); - - perf_step =CPPC_EM_CAP_STEP * perf_caps->highest_perf / max_cap; + min_cap =div_u64 ((u64 )max_cap * perf_caps->lowest_perf, + perf_caps->highest_perf); + perf_step =div_u64 ((u64 )CPPC_EM_CAP_STEP * perf_caps->highest_perf, + max_cap); min_step = min_cap /CPPC_EM_CAP_STEP ; max_step = max_cap /CPPC_EM_CAP_STEP ;
drivers/cpufreq/cpufreq-dt-platdev.c +2 -0
@@ -135,6 +135,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", },
@@ -148,6 +149,7 @@ static const struct of_device_id blocklist[] __initconst = { { .compatible = "qcom,sdm845", }, { .compatible = "qcom,sm6115", }, { .compatible = "qcom,sm6350", }, + { .compatible = "qcom,sm6375", }, { .compatible = "qcom,sm8150", }, { .compatible = "qcom,sm8250", }, { .compatible = "qcom,sm8350", },
drivers/dma/dmaengine.c +4 -3
@@ -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
@@ -71,12 +71,13 @@ static int pt_core_execute_cmd(struct ptdma_desc *desc, struct pt_cmd_queue *cmdbool 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 ; }
@@ -199,7 +200,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
@@ -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/qcom/gpi.c +1 -0
@@ -1756,6 +1756,7 @@ static int gpi_create_spi_tre(struct gchan *chan, struct gpi_desc *desc, tre->dword[3 ] =u32_encode_bits (TRE_TYPE_GO ,TRE_FLAGS_TYPE );if (spi->cmd ==SPI_RX ) { tre->dword[3 ] |=u32_encode_bits (1 ,TRE_FLAGS_IEOB ); + tre->dword[3 ] |=u32_encode_bits (1 ,TRE_FLAGS_LINK ); }else if (spi->cmd ==SPI_TX ) { tre->dword[3 ] |=u32_encode_bits (1 ,TRE_FLAGS_CHAIN ); }else {/* SPI_DUPLEX */
drivers/dma/tegra186-gpc-dma.c +1 -0
@@ -707,6 +707,7 @@ static int tegra_dma_terminate_all(struct dma_chan *dc)return err; } +vchan_terminate_vdesc (&tdc->dma_desc->vd);tegra_dma_disable (tdc); tdc->dma_desc =NULL ; }
drivers/dma/ti/k3-udma.c +3 -2
@@ -761,11 +761,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
@@ -3141,8 +3141,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
@@ -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) {
@@ -336,7 +339,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);
@@ -366,7 +369,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);
@@ -400,7 +403,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);
@@ -442,11 +445,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
@@ -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
@@ -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
@@ -81,10 +81,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);
@@ -93,8 +94,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/arm_scmi/virtio.c +6 -1
@@ -160,7 +160,6 @@ static void scmi_vio_channel_cleanup_sync(struct scmi_vio_channel *vioch) } vioch->shutdown_done = &vioch_shutdown_done; -virtio_break_device (vioch->vqueue->vdev);if (!vioch->is_rx && vioch->deferred_tx_wq)/* Cannot be kicked anymore after this...*/ vioch->deferred_tx_wq =NULL ;
@@ -482,6 +481,12 @@ static int virtio_chan_free(int id, void *p, void *data)struct scmi_chan_info *cinfo = p;struct scmi_vio_channel *vioch = cinfo->transport_info; +/* +* Break device to inhibit further traffic flowing while shutting down +* the channels: doing it later holding vioch->lock creates unsafe +* locking dependency chains as reported by LOCKDEP. +*/ +virtio_break_device (vioch->vqueue->vdev);scmi_vio_channel_cleanup_sync (vioch);scmi_free_channel (cinfo, data, id);
drivers/firmware/efi/runtime-wrappers.c +1 -0
@@ -84,6 +84,7 @@ struct efi_runtime_work efi_rts_work; else \ pr_err("Failed to queue work to efi_rts_wq.\n"); \ \ +WARN_ON_ONCE (efi_rts_work.status ==EFI_ABORTED ); \ exit: \ efi_rts_work.efi_rts_id =EFI_NONE ; \ efi_rts_work.status; \
drivers/firmware/google/coreboot_table.c +7 -2
@@ -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
@@ -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-ep93xx.c +1 -1
@@ -148,7 +148,7 @@ static void ep93xx_gpio_f_irq_handler(struct irq_desc *desc)*/ struct irq_chip *irqchip =irq_desc_get_chip (desc);unsigned int irq =irq_desc_get_irq (desc); -int port_f_idx = ((irq +1 ) &7 ) ^4 ;/* {19..22,47..50} -> {0..7} */ +int port_f_idx = (irq &7 ) ^4 ;/* {20..23,48..51} -> {0..7} */ int gpio_irq =EP93XX_GPIO_F_IRQ_BASE + port_f_idx;chained_irq_enter (irqchip, desc);
drivers/gpio/gpio-mxc.c +14 -2
@@ -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/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +1 -1
@@ -2130,7 +2130,7 @@ int amdgpu_amdkfd_map_gtt_bo_to_gart(struct amdgpu_device *adev, struct amdgpu_b }amdgpu_amdkfd_remove_eviction_fence ( - bo, bo->kfd_bo->process_info->eviction_fence); + bo, bo->vm_bo->vm->process_info->eviction_fence);amdgpu_bo_unreserve (bo);
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +7 -3
@@ -586,10 +586,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/amdgpu/mes_v11_0.c +0 -1
@@ -192,7 +192,6 @@ static int mes_v11_0_add_hw_queue(struct amdgpu_mes *mes, mes_add_queue_pkt.trap_handler_addr = input->tba_addr; mes_add_queue_pkt.tma_addr = input->tma_addr; mes_add_queue_pkt.is_kfd_process = input->is_kfd_process; - mes_add_queue_pkt.trap_en =1 ;/* For KFD, gds_size is re-used for queue size (needed in MES for AQL queues) */ mes_add_queue_pkt.is_aql_queue = input->is_aql_queue;
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +1 -1
@@ -200,7 +200,7 @@ static int add_queue_mes(struct device_queue_manager *dqm, struct queue *q, queue_input.wptr_addr = (uint64_t )q->properties.write_ptr;if (q->wptr_bo) { - wptr_addr_off = (uint64_t )q->properties.write_ptr - (uint64_t )q->wptr_bo->kfd_bo->va; + wptr_addr_off = (uint64_t )q->properties.write_ptr & (PAGE_SIZE -1 ); queue_input.wptr_mc_addr = ((uint64_t )q->wptr_bo->tbo.resource->start <<PAGE_SHIFT ) + wptr_addr_off; }
drivers/gpu/drm/amd/amdkfd/kfd_svm.c +9 -0
@@ -570,6 +570,15 @@ svm_range_vram_node_new(struct amdgpu_device *adev, struct svm_range *prange, goto reserve_bo_failed; } +if (clear) { + r =amdgpu_bo_sync_wait (bo,AMDGPU_FENCE_OWNER_KFD , false); +if (r) { +pr_debug ("failed %d to sync bo\n" , r); +amdgpu_bo_unreserve (bo); + goto reserve_bo_failed; + } + } + r =dma_resv_reserve_fences (bo->tbo.base.resv,1 );if (r) {pr_debug ("failed %d to reserve bo\n" , r);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +24 -4
@@ -1737,10 +1737,6 @@ static void amdgpu_dm_fini(struct amdgpu_device *adev) adev->dm.vblank_control_workqueue =NULL ; } -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 )
@@ -9404,6 +9400,8 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev,bool lock_and_validation_needed = false;struct dm_crtc_state *dm_old_crtc_state, *dm_new_crtc_state;#if defined(CONFIG_DRM_AMD_DC_DCN ) +struct drm_dp_mst_topology_mgr *mgr; +struct drm_dp_mst_topology_state *mst_state;struct dsc_mst_fairness_vars vars[MAX_PIPES ];#endif
@@ -9652,6 +9650,28 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev, lock_and_validation_needed = true; } +#if defined(CONFIG_DRM_AMD_DC_DCN ) +/* set the slot info for each mst_state based on the link encoding format */ +for_each_new_mst_mgr_in_state (state, mgr, mst_state, i) { +struct amdgpu_dm_connector *aconnector; +struct drm_connector *connector; +struct drm_connector_list_iter iter; +u8 link_coding_cap; + +drm_connector_list_iter_begin (dev, &iter); +drm_for_each_connector_iter (connector, &iter) { +if (connector->index == mst_state->mgr->conn_base_id) { + aconnector =to_amdgpu_dm_connector (connector); + link_coding_cap =dc_link_dp_mst_decide_link_encoding_format (aconnector->dc_link); +drm_dp_mst_update_slots (mst_state, link_coding_cap); + +break ; + } + } +drm_connector_list_iter_end (&iter); + } +#endif +/** * Streams and planes are reset when there are changes that affect * bandwidth. Anything that affects bandwidth needs to go through
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c +39 -12
69 lines not on this page · raw message
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c +0 -6
@@ -468,7 +468,6 @@ static const struct drm_connector_helper_funcs dm_dp_mst_connector_helper_funcsstatic 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 = {
@@ -897,11 +896,6 @@ static int compute_mst_dsc_configs_for_link(struct drm_atomic_state *state,if (IS_ERR (mst_state))return PTR_ERR (mst_state); - mst_state->pbn_div =dm_mst_get_pbn_divider (dc_link); -#if defined(CONFIG_DRM_AMD_DC_DCN ) -drm_dp_mst_update_slots (mst_state,dc_link_dp_mst_decide_link_encoding_format (dc_link)); -#endif -/* Set up params */ for (i =0 ; i < dc_state->stream_count; i++) {struct dc_dsc_policy dsc_policy = {0 };
drivers/gpu/drm/amd/display/dc/core/dc_link.c +12 -2
@@ -3995,10 +3995,13 @@ static enum dc_status deallocate_mst_payload(struct pipe_ctx *pipe_ctx)struct fixed31_32 avg_time_slots_per_mtp =dc_fixpt_from_int (0 );int i;bool mst_mode = (link->type == dc_connection_mst_branch); +/* adjust for drm changes*/ +bool update_drm_mst_state = true;const struct link_hwss *link_hwss =get_link_hwss (link, &pipe_ctx->link_res);const struct dc_link_settings empty_link_settings = {0 };DC_LOGGER_INIT (link->ctx->logger); +/* deallocate_mst_payload is called before disable link. When mode or * disable/enable monitor, new stream is created which is not in link * stream[] yet. For this, payload is not allocated yet, so de-alloc
@@ -4014,7 +4017,7 @@ static enum dc_status deallocate_mst_payload(struct pipe_ctx *pipe_ctx) &empty_link_settings, avg_time_slots_per_mtp); -if (mst_mode) { +if (mst_mode || update_drm_mst_state) {/* when link is in mst mode, reply on mst manager to remove * payload */
@@ -4077,11 +4080,18 @@ static enum dc_status deallocate_mst_payload(struct pipe_ctx *pipe_ctx) stream->ctx, stream); +if (!update_drm_mst_state) +dm_helpers_dp_mst_send_payload_allocation ( + stream->ctx, + stream, + false); + } + +if (update_drm_mst_state)dm_helpers_dp_mst_send_payload_allocation ( stream->ctx, stream, false); - }return DC_OK ; }
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c +1 -0
@@ -145,6 +145,7 @@ static struct cmn2asic_msg_mapping smu_v13_0_0_message_map[SMU_MSG_MAX_COUNT] =MSG_MAP (SetBadMemoryPagesRetiredFlagsPerChannel, PPSMC_MSG_SetBadMemoryPagesRetiredFlagsPerChannel,0 ),MSG_MAP (AllowGpo, PPSMC_MSG_SetGpoAllow,0 ), + MSG_MAP(AllowIHHostInterrupt, PPSMC_MSG_AllowIHHostInterrupt, 0), }; static struct cmn2asic_mapping smu_v13_0_0_clk_map[SMU_CLK_COUNT] = {
drivers/gpu/drm/display/drm_dp_mst_topology.c +3 -1
@@ -3372,6 +3372,9 @@ void drm_dp_remove_payload(struct drm_dp_mst_topology_mgr *mgr, mgr->payload_count--; mgr->next_start_slot -= payload->time_slots; + +if (payload->delete) +drm_dp_mst_put_port_malloc (payload->port); }EXPORT_SYMBOL (drm_dp_remove_payload);
@@ -4327,7 +4330,6 @@ int drm_dp_atomic_release_time_slots(struct drm_atomic_state *state,drm_dbg_atomic (mgr->dev,"[MST PORT:%p] TU %d -> 0\n" , port, payload->time_slots);if (!payload->delete) { -drm_dp_mst_put_port_malloc (port); payload->pbn =0 ; payload->delete = true; topology_state->payload_mask &= ~BIT (payload->vcpi -1 );
drivers/gpu/drm/drm_panel_orientation_quirks.c +6 -0
@@ -304,6 +304,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/drm_vma_manager.c +54 -22
96 lines not on this page · raw message
drivers/gpu/drm/i915/display/intel_dp.c +1 -3
@@ -5216,9 +5216,7 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,intel_bios_init_panel (dev_priv, &intel_connector->panel, encoder->devdata,IS_ERR (edid) ?NULL : edid); -intel_panel_add_edid_fixed_modes (intel_connector, - intel_connector->panel.vbt.drrs_type !=DRRS_TYPE_NONE || -intel_vrr_is_capable (intel_connector)); +intel_panel_add_edid_fixed_modes (intel_connector, true);/* MSO requires information from the EDID */ intel_edp_mso_init (intel_dp);
drivers/gpu/drm/i915/display/intel_panel.c +4 -3
@@ -85,9 +85,10 @@ static bool is_alt_drrs_mode(const struct drm_display_mode *mode,static bool is_alt_fixed_mode (const struct drm_display_mode *mode,const struct drm_display_mode *preferred_mode) { -return drm_mode_match (mode, preferred_mode, -DRM_MODE_MATCH_FLAGS | -DRM_MODE_MATCH_3D_FLAGS ) && +u32 sync_flags =DRM_MODE_FLAG_PHSYNC |DRM_MODE_FLAG_NHSYNC | +DRM_MODE_FLAG_PVSYNC |DRM_MODE_FLAG_NVSYNC ; + +return (mode->flags & ~sync_flags) == (preferred_mode->flags & ~sync_flags) && mode->hdisplay == preferred_mode->hdisplay && mode->vdisplay == preferred_mode->vdisplay; }
drivers/gpu/drm/i915/gem/i915_gem_mman.c +1 -1
@@ -697,7 +697,7 @@ mmap_offset_attach(struct drm_i915_gem_object *obj,GEM_BUG_ON (lookup_mmo (obj, mmap_type) != mmo); out:if (file) -drm_vma_node_allow (&mmo->vma_node, file); +drm_vma_node_allow_once (&mmo->vma_node, file);return mmo; err:
drivers/gpu/drm/i915/gem/selftests/huge_pages.c +4 -4
@@ -1697,7 +1697,7 @@ static int igt_shrink_thp(void *arg) I915_SHRINK_ACTIVE);i915_vma_unpin (vma);if (err) - goto out_put; + goto out_wf;/* * Now that the pages are *unpinned* shrinking should invoke
@@ -1713,19 +1713,19 @@ static int igt_shrink_thp(void *arg)pr_err ("unexpected pages mismatch, should_swap=%s\n" ,str_yes_no (should_swap)); err = -EINVAL ; - goto out_put; + goto out_wf; }if (should_swap == (obj->mm.page_sizes.sg || obj->mm.page_sizes.phys)) {pr_err ("unexpected residual page-size bits, should_swap=%s\n" ,str_yes_no (should_swap)); err = -EINVAL ; - goto out_put; + goto out_wf; } err =i915_vma_pin (vma,0 ,0 , flags);if (err) - goto out_put; + goto out_wf;while (n--) { err =cpu_check (obj, n,0xdeadbeaf );
drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.c +1 -2
@@ -28,8 +28,7 @@ struct intel_engine_cs *intel_selftest_find_any_engine(struct intel_gt *gt)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/msm/adreno/a6xx_gmu.c +9 -6
@@ -876,7 +876,8 @@ static void a6xx_gmu_rpmh_off(struct a6xx_gmu *gmu)#define GBIF_CLIENT_HALT_MASK BIT(0)#define GBIF_ARB_HALT_MASK BIT(1) -static void a6xx_bus_clear_pending_transactions (struct adreno_gpu *adreno_gpu) +static void a6xx_bus_clear_pending_transactions (struct adreno_gpu *adreno_gpu, +bool gx_off) {struct msm_gpu *gpu = &adreno_gpu->base;
@@ -889,9 +890,11 @@ static void a6xx_bus_clear_pending_transactions(struct adreno_gpu *adreno_gpu)return ; } -/* Halt the gx side of GBIF */ -gpu_write (gpu,REG_A6XX_RBBM_GBIF_HALT ,1 ); -spin_until (gpu_read (gpu,REG_A6XX_RBBM_GBIF_HALT_ACK ) &1 ); +if (gx_off) { +/* Halt the gx side of GBIF */ +gpu_write (gpu,REG_A6XX_RBBM_GBIF_HALT ,1 ); +spin_until (gpu_read (gpu,REG_A6XX_RBBM_GBIF_HALT_ACK ) &1 ); + }/* Halt new client requests on GBIF */ gpu_write (gpu,REG_A6XX_GBIF_HALT ,GBIF_CLIENT_HALT_MASK );
@@ -929,7 +932,7 @@ static void a6xx_gmu_force_off(struct a6xx_gmu *gmu)/* Halt the gmu cm3 core */ gmu_write (gmu,REG_A6XX_GMU_CM3_SYSRESET ,1 ); -a6xx_bus_clear_pending_transactions (adreno_gpu); +a6xx_bus_clear_pending_transactions (adreno_gpu, true);/* Reset GPU core blocks */ gpu_write (gpu,REG_A6XX_RBBM_SW_RESET_CMD ,1 );
@@ -1083,7 +1086,7 @@ static void a6xx_gmu_shutdown(struct a6xx_gmu *gmu)return ; } -a6xx_bus_clear_pending_transactions (adreno_gpu); +a6xx_bus_clear_pending_transactions (adreno_gpu, a6xx_gpu->hung);/* tell the GMU we want to slumber */ ret =a6xx_gmu_notify_slumber (gmu);
drivers/gpu/drm/msm/adreno/a6xx_gpu.c +7 -0
@@ -1277,6 +1277,12 @@ static void a6xx_recover(struct msm_gpu *gpu)if (hang_debug)a6xx_dump (gpu); +/* +* To handle recovery specific sequences during the rpm suspend we are +* about to trigger +*/ + a6xx_gpu->hung = true; +/* Halt SQE first */ gpu_write (gpu,REG_A6XX_CP_SQE_CNTL ,3 );
@@ -1319,6 +1325,7 @@ static void a6xx_recover(struct msm_gpu *gpu)mutex_unlock (&gpu->active_lock);msm_gpu_hw_init (gpu); + a6xx_gpu->hung = false; }static const char *a6xx_uche_fault_block (struct msm_gpu *gpu,u32 mid)
drivers/gpu/drm/msm/adreno/a6xx_gpu.h +1 -0
@@ -32,6 +32,7 @@ struct a6xx_gpu {void *llc_slice;void *htw_llc_slice;bool have_mmu500; +bool hung; };#define to_a6xx_gpu (x) container_of(x, struct a6xx_gpu, base)
drivers/gpu/drm/msm/adreno/adreno_gpu.c +4 -0
@@ -351,6 +351,8 @@ int adreno_set_param(struct msm_gpu *gpu, struct msm_file_private *ctx,/* Ensure string is null terminated: */ str[len] ='\0' ; +mutex_lock (&gpu->lock); +if (param ==MSM_PARAM_COMM ) { paramp = &ctx->comm; }else {
@@ -360,6 +362,8 @@ int adreno_set_param(struct msm_gpu *gpu, struct msm_file_private *ctx,kfree (*paramp); *paramp = str; +mutex_unlock (&gpu->lock); +return 0 ; }case MSM_PARAM_SYSPROF :
drivers/gpu/drm/msm/msm_gpu.c +2 -0
@@ -335,6 +335,8 @@ static void get_comm_cmdline(struct msm_gem_submit *submit, char **comm, char **struct msm_file_private *ctx = submit->queue->ctx;struct task_struct *task; +WARN_ON (!mutex_is_locked (&submit->gpu->lock)); +/* Note that kstrdup will return NULL if argument is NULL: */ *comm =kstrdup (ctx->comm,GFP_KERNEL ); *cmd =kstrdup (ctx->cmdline,GFP_KERNEL );
drivers/gpu/drm/msm/msm_gpu.h +10 -2
@@ -366,10 +366,18 @@ struct msm_file_private {*/ int sysprof; -/** comm: Overridden task comm, see MSM_PARAM_COMM */ +/** +* comm: Overridden task comm, see MSM_PARAM_COMM +* +* Accessed under msm_gpu::lock +*/ char *comm; -/** cmdline: Overridden task cmdline, see MSM_PARAM_CMDLINE */ +/** +* cmdline: Overridden task cmdline, see MSM_PARAM_CMDLINE +* +* Accessed under msm_gpu::lock +*/ char *cmdline;/**
drivers/gpu/drm/panfrost/Kconfig +2 -1
@@ -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/vc4/vc4_bo.c +2 -4
@@ -179,6 +179,7 @@ static void vc4_bo_destroy(struct vc4_bo *bo) bo->validated_shader =NULL ; } +mutex_destroy (&bo->madv_lock);drm_gem_dma_free (&bo->base); }
@@ -394,7 +395,6 @@ struct drm_gem_object *vc4_create_object(struct drm_device *dev, size_t size) {struct vc4_dev *vc4 =to_vc4_dev (dev);struct vc4_bo *bo; -int ret;if (WARN_ON_ONCE (vc4->is_vc5))return ERR_PTR (-ENODEV );
@@ -406,9 +406,7 @@ struct drm_gem_object *vc4_create_object(struct drm_device *dev, size_t size) bo->madv =VC4_MADV_WILLNEED ;refcount_set (&bo->usecnt,0 ); - ret =drmm_mutex_init (dev, &bo->madv_lock); -if (ret) -return ERR_PTR (ret); +mutex_init (&bo->madv_lock);mutex_lock (&vc4->bo_lock); bo->label =VC4_BO_TYPE_KERNEL ;
drivers/gpu/drm/vmwgfx/vmwgfx_msg_arm64.h +0 -0
drivers/hid/amd-sfh-hid/amd_sfh_client.c +1 -1
@@ -282,7 +282,7 @@ int amd_sfh_hid_client_init(struct amd_mp2_dev *privdata) } rc = mp2_ops->get_rep_desc (cl_idx, cl_data->report_descr[i]);if (rc) -return rc; + goto cleanup; mp2_ops->start (privdata, info); status =amd_sfh_wait_for_response (privdata, cl_data->sensor_idx[i],SENSOR_ENABLED );
drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c +1 -1
@@ -160,7 +160,7 @@ static int amd_sfh1_1_hid_client_init(struct amd_mp2_dev *privdata) } rc = mp2_ops->get_rep_desc (cl_idx, cl_data->report_descr[i]);if (rc) -return rc; + goto cleanup;writel (0 , privdata->mmio +AMD_P2C_MSG (0 )); mp2_ops->start (privdata, info);
drivers/hid/hid-betopff.c +9 -8
@@ -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
@@ -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
@@ -993,8 +993,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
@@ -274,7 +274,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
@@ -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
@@ -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
@@ -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-designware-platdrv.c +2 -18
@@ -351,13 +351,11 @@ static int dw_i2c_plat_probe(struct platform_device *pdev)if (dev->flags &ACCESS_NO_IRQ_SUSPEND ) {dev_pm_set_driver_flags (&pdev->dev, -DPM_FLAG_SMART_PREPARE | -DPM_FLAG_MAY_SKIP_RESUME ); +DPM_FLAG_SMART_PREPARE ); }else {dev_pm_set_driver_flags (&pdev->dev,DPM_FLAG_SMART_PREPARE | -DPM_FLAG_SMART_SUSPEND | -DPM_FLAG_MAY_SKIP_RESUME ); +DPM_FLAG_SMART_SUSPEND ); }device_enable_async_suspend (&pdev->dev);
@@ -419,21 +417,8 @@ static int dw_i2c_plat_prepare(struct device *dev)*/ return !has_acpi_companion(dev); } - -static void dw_i2c_plat_complete (struct device *dev) -{ -/* -* The device can only be in runtime suspend at this point if it has not -* been resumed throughout the ending system suspend/resume cycle, so if -* the platform firmware might mess up with it, request the runtime PM -* framework to resume it. -*/ -if (pm_runtime_suspended (dev) &&pm_resume_via_firmware ()) -pm_request_resume (dev); -}#else #define dw_i2c_plat_prepare NULL -#define dw_i2c_plat_complete NULL#endif #ifdef CONFIG_PM
@@ -483,7 +468,6 @@ static int __maybe_unused dw_i2c_plat_resume(struct device *dev)static const struct dev_pm_ops dw_i2c_dev_pm_ops = { .prepare = dw_i2c_plat_prepare, - .complete = dw_i2c_plat_complete, SET_LATE_SYSTEM_SLEEP_PM_OPS(dw_i2c_plat_suspend, dw_i2c_plat_resume)SET_RUNTIME_PM_OPS (dw_i2c_plat_runtime_suspend, dw_i2c_plat_runtime_resume,NULL ) };
drivers/infiniband/core/verbs.c +5 -2
@@ -2957,15 +2957,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
@@ -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/infiniband/sw/rxe/rxe_param.h +5 -5
@@ -91,11 +91,11 @@ enum rxe_device_param {RXE_MAX_SRQ =DEFAULT_MAX_VALUE -RXE_MIN_SRQ_INDEX ,RXE_MIN_MR_INDEX =0x00000001 , -RXE_MAX_MR_INDEX =DEFAULT_MAX_VALUE , -RXE_MAX_MR =DEFAULT_MAX_VALUE -RXE_MIN_MR_INDEX , -RXE_MIN_MW_INDEX =0x00010001 , -RXE_MAX_MW_INDEX =0x00020000 , -RXE_MAX_MW =0x00001000 , +RXE_MAX_MR_INDEX =DEFAULT_MAX_VALUE >>1 , +RXE_MAX_MR =RXE_MAX_MR_INDEX -RXE_MIN_MR_INDEX , +RXE_MIN_MW_INDEX =RXE_MAX_MR_INDEX +1 , +RXE_MAX_MW_INDEX =DEFAULT_MAX_VALUE , +RXE_MAX_MW =RXE_MAX_MW_INDEX -RXE_MIN_MW_INDEX , RXE_MAX_PKT_PER_ACK = 64,
drivers/infiniband/sw/rxe/rxe_pool.c +11 -11
@@ -23,16 +23,16 @@ static const struct rxe_type_info { .size = sizeof(struct rxe_ucontext), .elem_offset = offsetof(struct rxe_ucontext, elem), .min_index = 1, - .max_index = UINT_MAX, - .max_elem = UINT_MAX, + .max_index = RXE_MAX_UCONTEXT, + .max_elem = RXE_MAX_UCONTEXT, }, [RXE_TYPE_PD] = { .name = "pd", .size = sizeof(struct rxe_pd), .elem_offset = offsetof(struct rxe_pd, elem), .min_index = 1, - .max_index = UINT_MAX, - .max_elem = UINT_MAX, + .max_index = RXE_MAX_PD, + .max_elem = RXE_MAX_PD, }, [RXE_TYPE_AH] = { .name = "ah",
@@ -40,7 +40,7 @@ static const struct rxe_type_info { .elem_offset = offsetof(struct rxe_ah, elem), .min_index = RXE_MIN_AH_INDEX, .max_index = RXE_MAX_AH_INDEX, - .max_elem = RXE_MAX_AH_INDEX - RXE_MIN_AH_INDEX + 1, + .max_elem = RXE_MAX_AH, },
Lines of this file are not shown. View the raw message.
drivers/net/dsa/microchip/ksz9477_i2c.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amd/xgbe/xgbe-dev.c +15 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amd/xgbe/xgbe-mdio.c +24 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +4 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h +1 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/cadence/macb_main.c +1 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/engleder/tsnep_main.c +9 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/enetc/enetc.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/fec_main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/iavf/iavf_ethtool.c +5 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/iavf/iavf_main.c +42 -44
86 lines not on this page · raw message
drivers/net/ethernet/intel/iavf/iavf_virtchnl.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/htb.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/tc/sample.c +2 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c +3 -15
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/main.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/qos.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/qos.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/lan966x/lan966x_main.c +8 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microsoft/mana/gdma.h +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microsoft/mana/gdma_main.c +8 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/renesas/ravb_main.c +8 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac5.c +14 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/mdio/mdio-mux-meson-g12a.c +16 -7
Lines of this file are not shown. View the raw message.
drivers/phy/rockchip/phy-rockchip-inno-usb2.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/platform/x86/apple-gmux.c +18 -75
93 lines not on this page · raw message
drivers/platform/x86/touchscreen_dmi.c +25 -0
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/thermal/intel/int340x_thermal/int340x_thermal_zone.c +22 -6
Lines of this file are not shown. View the raw message.
drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.h +1 -0
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/nfsd/filecache.c +36 -25
61 lines not on this page · raw message
include/linux/apple-gmux.h +107 -2
109 lines not on this page · raw message
include/linux/platform_data/x86/simatic-ipc.h +2 -1
Lines of this file are not shown. View the raw message.
include/uapi/linux/netfilter/nf_conntrack_sctp.h +1 -1
Lines of this file are not shown. View the raw message.
include/uapi/linux/netfilter/nfnetlink_cttimeout.h +1 -1
Lines of this file are not shown. View the raw message.
io_uring/io_uring.c +21 -47
68 lines not on this page · raw message
kernel/sched/fair.c +23 -25
48 lines not on this page · raw message
net/bluetooth/iso.c +58 -52
110 lines not on this page · raw message
net/l2tp/l2tp_core.c +50 -52
102 lines not on this page · raw message
net/netfilter/nf_conntrack_proto_sctp.c +55 -63
118 lines not on this page · raw message
net/netfilter/nf_conntrack_proto_tcp.c +15 -0
Lines of this file are not shown. View the raw message.
net/netfilter/nf_conntrack_standalone.c +0 -8
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
samples/ftrace/ftrace-direct-multi-modify.c +1 -0
Lines of this file are not shown. View the raw message.
scripts/atomic/atomics.tbl +0 -0
sound/soc/codecs/es8326.c +0 -0
sound/soc/codecs/es8326.h +0 -0
sound/soc/mediatek/mt8186/mt8186-mt6366-rt1019-rt5682s.c +21 -1
Lines of this file are not shown. View the raw message.
tools/include/nolibc/types.h +40 -30
70 lines not on this page · raw message
tools/testing/selftests/bpf/prog_tests/jeq_infer_not_null.c deleted +0 -9
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
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
maintainerI'm announcing the release of the 6.1.9 kernel.
All users of the 6.1 kernel series must upgrade.
The updated 6.1.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.1.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/devicetree/bindings/i2c/renesas,rzv2m.yaml | 4 Documentation/devicetree/bindings/regulator/samsung,s2mps14.yaml | 21 Documentation/devicetree/bindings/riscv/cpus.yaml | 2 Documentation/x86/amd-memory-encryption.rst | 36 + Makefile | 17 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/boot/dts/stm32mp151a-prtt1l.dtsi | 8 arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi | 8 arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi | 8 arch/arm/boot/dts/stm32mp15xx-dhcor-som.dtsi | 8 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/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/imx8mm-verdin-dahlia.dtsi | 1 arch/arm64/boot/dts/freescale/imx8mm-verdin-dev.dtsi | 1 arch/arm64/boot/dts/freescale/imx8mp-evk.dts | 4 arch/arm64/boot/dts/freescale/imx8mp-phycore-som.dtsi | 10 arch/arm64/boot/dts/freescale/imx8mp.dtsi | 3 arch/arm64/boot/dts/freescale/imx93-11x11-evk.dts | 6 arch/arm64/boot/dts/marvell/ac5-98dx25xx.dtsi | 2 arch/arm64/boot/dts/qcom/msm8992-xiaomi-libra.dts | 77 +- arch/arm64/boot/dts/qcom/msm8992.dtsi | 4 arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 2 arch/arm64/include/asm/efi.h | 17 arch/arm64/include/asm/stacktrace.h | 15 arch/arm64/kernel/efi-rt-wrapper.S | 38 - arch/arm64/kernel/efi.c | 23 arch/arm64/kernel/stacktrace.c | 12 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 | 4 arch/riscv/kernel/head.S | 2 arch/riscv/kernel/probes/simulate-insn.c | 4 arch/riscv/kernel/smpboot.c | 3 arch/s390/include/asm/debug.h | 6 arch/s390/kernel/vmlinux.lds.S | 2 arch/s390/kvm/interrupt.c | 12 arch/x86/boot/compressed/ident_map_64.c | 6 arch/x86/boot/compressed/misc.h | 2 arch/x86/boot/compressed/sev.c | 70 ++ arch/x86/events/amd/core.c | 2 arch/x86/events/intel/cstate.c | 21 arch/x86/events/intel/uncore.c | 1 arch/x86/events/msr.c | 3 arch/x86/include/asm/acpi.h | 8 arch/x86/include/asm/msr-index.h | 20 arch/x86/include/uapi/asm/svm.h | 6 arch/x86/kernel/i8259.c | 1 arch/x86/kernel/irqinit.c | 4 arch/x86/kvm/vmx/vmx.c | 21 drivers/acpi/resource.c | 7 drivers/acpi/sleep.c | 6 drivers/acpi/video_detect.c | 49 - drivers/ata/Kconfig | 1 drivers/base/property.c | 18 drivers/base/test/test_async_driver_probe.c | 2 drivers/block/rnbd/rnbd-clt.c | 2 drivers/block/ublk_drv.c | 7 drivers/cpufreq/armada-37xx-cpufreq.c | 2 drivers/cpufreq/cppc_cpufreq.c | 11 drivers/cpufreq/cpufreq-dt-platdev.c | 2 drivers/dma/dmaengine.c | 7 drivers/dma/ptdma/ptdma-dev.c | 7 drivers/dma/ptdma/ptdma.h | 2 drivers/dma/qcom/gpi.c | 1 drivers/dma/tegra186-gpc-dma.c | 1 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/arm_scmi/virtio.c | 7 drivers/firmware/efi/runtime-wrappers.c | 1 drivers/firmware/google/coreboot_table.c | 9 drivers/firmware/google/coreboot_table.h | 1 drivers/gpio/gpio-ep93xx.c | 2 drivers/gpio/gpio-mxc.c | 16 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 10 drivers/gpu/drm/amd/amdgpu/mes_v11_0.c | 1 drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 2 drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 9 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 28 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 51 + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 6 drivers/gpu/drm/amd/display/dc/core/dc_link.c | 14 drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 1 drivers/gpu/drm/display/drm_dp_mst_topology.c | 4 drivers/gpu/drm/drm_panel_orientation_quirks.c | 6 drivers/gpu/drm/drm_vma_manager.c | 76 +- drivers/gpu/drm/i915/display/intel_dp.c | 4 drivers/gpu/drm/i915/display/intel_panel.c | 7 drivers/gpu/drm/i915/gem/i915_gem_mman.c | 2 drivers/gpu/drm/i915/gem/selftests/huge_pages.c | 8 drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.c | 3 drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 15 drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 7 drivers/gpu/drm/msm/adreno/a6xx_gpu.h | 1 drivers/gpu/drm/msm/adreno/adreno_gpu.c | 4 drivers/gpu/drm/msm/msm_gpu.c | 2 drivers/gpu/drm/msm/msm_gpu.h | 12 drivers/gpu/drm/panfrost/Kconfig | 3 drivers/gpu/drm/vc4/vc4_bo.c | 6 drivers/hid/amd-sfh-hid/amd_sfh_client.c | 2 drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c | 2 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-designware-platdrv.c | 20 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/infiniband/sw/rxe/rxe_param.h | 10 drivers/infiniband/sw/rxe/rxe_pool.c | 22 drivers/input/mouse/synaptics.c | 1 drivers/input/serio/i8042-acpipnpio.h | 7 drivers/interconnect/qcom/msm8996.c | 19 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/dsa/microchip/ksz9477_i2c.c | 2 drivers/net/ethernet/adi/adin1110.c | 2 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/bnxt/bnxt_ethtool.c | 13 drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h | 9 drivers/net/ethernet/broadcom/tg3.c | 8 drivers/net/ethernet/cadence/macb_main.c | 9 drivers/net/ethernet/engleder/tsnep_main.c | 15 drivers/net/ethernet/freescale/enetc/enetc.c | 4 drivers/net/ethernet/freescale/fec_main.c | 2 drivers/net/ethernet/intel/iavf/iavf.h | 2 drivers/net/ethernet/intel/iavf/iavf_ethtool.c | 10 drivers/net/ethernet/intel/iavf/iavf_main.c | 86 +- drivers/net/ethernet/intel/iavf/iavf_virtchnl.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en/htb.c | 4 drivers/net/ethernet/mellanox/mlx5/core/en/tc/sample.c | 5 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 3 drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c | 18 drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 1 drivers/net/ethernet/mellanox/mlx5/core/main.c | 8 drivers/net/ethernet/mellanox/mlx5/core/qos.c | 3 drivers/net/ethernet/mellanox/mlx5/core/qos.h | 2 drivers/net/ethernet/microchip/lan966x/lan966x_main.c | 13 drivers/net/ethernet/microsoft/mana/gdma.h | 3 drivers/net/ethernet/microsoft/mana/gdma_main.c | 9 drivers/net/ethernet/renesas/ravb_main.c | 10 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 | 25 drivers/nvme/host/fc.c | 20 drivers/nvme/host/nvme.h | 11 drivers/nvme/host/pci.c | 25 drivers/nvme/host/rdma.c | 3 drivers/nvme/host/tcp.c | 5 drivers/nvme/target/loop.c | 4 drivers/perf/arm-cmn.c | 7 drivers/phy/phy-can-transceiver.c | 5 drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 4 drivers/phy/sunplus/phy-sunplus-usb2.c | 3 drivers/phy/ti/Kconfig | 4 drivers/pinctrl/pinctrl-rockchip.c | 31 drivers/platform/x86/apple-gmux.c | 93 -- drivers/platform/x86/asus-nb-wmi.c | 15 drivers/platform/x86/asus-wmi.c | 21 drivers/platform/x86/asus-wmi.h | 1 drivers/platform/x86/simatic-ipc.c | 3 drivers/platform/x86/thinkpad_acpi.c | 11 drivers/platform/x86/touchscreen_dmi.c | 25 drivers/reset/Kconfig | 2 drivers/reset/reset-uniphier-glue.c | 4 drivers/scsi/hisi_sas/hisi_sas_main.c | 4 drivers/scsi/hpsa.c | 2 drivers/scsi/scsi_transport_iscsi.c | 50 + drivers/soc/imx/imx8mp-blk-ctrl.c | 7 drivers/soc/imx/soc-imx8m.c | 4 drivers/soc/qcom/cpr.c | 6 drivers/spi/spi-cadence-xspi.c | 5 drivers/spi/spidev.c | 2 drivers/thermal/gov_fair_share.c | 6 drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c | 28 drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.h | 1 drivers/thermal/thermal_core.c | 25 drivers/thermal/thermal_sysfs.c | 11 drivers/ufs/core/ufshcd.c | 29 drivers/usb/dwc3/Kconfig | 2 drivers/usb/gadget/function/f_fs.c | 7 drivers/usb/typec/ucsi/ucsi.c | 24 drivers/usb/typec/ucsi/ucsi.h | 1 drivers/vfio/vfio_iommu_type1.c | 31 drivers/w1/w1.c | 6 drivers/w1/w1_int.c | 5 drivers/xen/pvcalls-front.c | 4 fs/affs/file.c | 2 fs/btrfs/ctree.h | 6 fs/btrfs/space-info.c | 3 fs/btrfs/zoned.c | 2 fs/cifs/cifsencrypt.c | 1 fs/cifs/dfs_cache.c | 42 - fs/cifs/sess.c | 2 fs/cifs/smb2pdu.c | 1 fs/cifs/smbdirect.c | 1 fs/erofs/zdata.c | 12 fs/ksmbd/connection.c | 17 fs/ksmbd/ksmbd_netlink.h | 3 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 | 3 fs/ksmbd/transport_tcp.c | 17 fs/nfsd/filecache.c | 61 + fs/nfsd/nfs4proc.c | 1 fs/overlayfs/copy_up.c | 6 include/drm/drm_vma_manager.h | 1 include/linux/apple-gmux.h | 109 +++ include/linux/platform_data/x86/simatic-ipc.h | 3 include/linux/thermal.h | 1 include/net/mac80211.h | 4 include/net/sch_generic.h | 7 include/scsi/scsi_transport_iscsi.h | 9 include/uapi/linux/netfilter/nf_conntrack_sctp.h | 2 include/uapi/linux/netfilter/nfnetlink_cttimeout.h | 2 include/ufs/ufshcd.h | 2 io_uring/io_uring.c | 68 -- io_uring/io_uring.h | 16 io_uring/msg_ring.c | 4 io_uring/net.c | 11 io_uring/timeout.c | 10 kernel/bpf/hashtab.c | 4 kernel/bpf/verifier.c | 4 kernel/kcsan/kcsan_test.c | 7 kernel/module/main.c | 26 kernel/sched/fair.c | 48 - kernel/trace/ftrace.c | 23 kernel/trace/trace.c | 2 kernel/trace/trace.h | 1 kernel/trace/trace_events_hist.c | 2 kernel/trace/trace_osnoise.c | 5 kernel/trace/trace_output.c | 3 lib/lockref.c | 1 lib/nlattr.c | 3 mm/compaction.c | 1 net/bluetooth/hci_conn.c | 18 net/bluetooth/hci_event.c | 5 net/bluetooth/hci_sync.c | 14 net/bluetooth/iso.c | 110 +-- net/bluetooth/mgmt_util.h | 2 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 | 102 +-- net/mac80211/agg-tx.c | 2 net/mac80211/debugfs_sta.c | 5 net/mac80211/driver-ops.h | 2 net/mac80211/ht.c | 37 + net/mac80211/ieee80211_i.h | 2 net/mac80211/tx.c | 30 net/mac80211/util.c | 20 net/mctp/af_mctp.c | 10 net/mctp/route.c | 34 - net/netfilter/nf_conntrack_proto_sctp.c | 118 +-- net/netfilter/nf_conntrack_proto_tcp.c | 15 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_gred.c | 2 net/sched/sch_htb.c | 27 net/sched/sch_taprio.c | 2 net/sctp/bind_addr.c | 6 samples/ftrace/ftrace-direct-multi-modify.c | 1 samples/ftrace/ftrace-direct-multi.c | 1 scripts/tracing/ftrace-bisect.sh | 34 - security/tomoyo/Makefile | 2 sound/soc/amd/yc/acp6x-mach.c | 14 sound/soc/fsl/fsl-asoc-card.c | 8 sound/soc/fsl/fsl_micfil.c | 16 sound/soc/fsl/fsl_ssi.c | 4 sound/soc/mediatek/Kconfig | 4 sound/soc/mediatek/mt8186/mt8186-mt6366-rt1019-rt5682s.c | 22 sound/soc/sof/debug.c | 4 sound/soc/sof/pm.c | 9 tools/gpio/gpio-event-mon.c | 1 tools/include/nolibc/ctype.h | 3 tools/include/nolibc/errno.h | 3 tools/include/nolibc/signal.h | 3 tools/include/nolibc/stdio.h | 3 tools/include/nolibc/stdlib.h | 3 tools/include/nolibc/string.h | 8 tools/include/nolibc/sys.h | 2 tools/include/nolibc/time.h | 3 tools/include/nolibc/types.h | 70 +- tools/include/nolibc/unistd.h | 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 virt/kvm/vfio.c | 6 333 files changed, 2822 insertions(+), 1518 deletions(-)
Adam Ford (3):
arm64: dts: imx8mm-beacon: Fix ecspi2 pinmux
arm64: dts: imx8mp: Fix missing GPC Interrupt
arm64: dts: imx8mp: Fix power-domain typo
Ahmad Fatoum (1):
net: dsa: microchip: fix probe of I2C-connected KSZ8563
Akhil P Oommen (1):
drm/msm/a6xx: Avoid gx gbit halt during rpm suspend
Akhil R (1):
dmaengine: tegra: Fix memory leak in terminate_all()
Alexander Gordeev (1):
s390: expicitly align _edata and _end symbols on page boundary
Alexander Potapenko (1):
affs: initialize fsdata in affs_truncate()
Alexander Wetzel (2):
wifi: mac80211: Proper mark iTXQs for resumption
wifi: mac80211: Fix iTXQ AMPDU fragmentation handling
Alexandru Tachici (1):
net: ethernet: adi: adin1110: Fix multicast offloading
Alexey V. Vissarionov (1):
scsi: hpsa: Fix allocation size for scsi_host_alloc()
Allen-KH Cheng (1):
ASoC: mediatek: mt8186: Add machine support for max98357a
Andre Przywara (1):
r8152: add vendor/device ID pair for Microsoft Devkit
Andrew Halaney (1):
net: stmmac: enable all safety features by default
Aniol Martí (1):
ASoC: amd: yc: Add ASUS M5402RA into DMI table
Archie Pusaka (1):
Bluetooth: hci_sync: cancel cmd_timer if hci_open failed
Ard Biesheuvel (3):
arm64: efi: Recover from synchronous exceptions occurring in firmware
arm64: efi: Avoid workqueue to check whether EFI runtime is live
arm64: efi: Account for the EFI runtime stack in stack unwinder
Arnd Bergmann (3):
drm/panfrost: fix GENERIC_ATOMIC64 dependency
usb: dwc3: fix extcon 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
Basavaraj Natikar (1):
HID: amd_sfh: Fix warning unwind goto
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 Mi (2):
net/mlx5e: Set decap action based on attr for sample net/mlx5: E-switch, Fix switchdev mode after devlink reload
Chris Packham (1):
arm64: dts: marvell: AC5/AC5X: Fix address for UART1
Chris Wilson (1):
drm/i915/selftests: Unwind hugepages to drop wakeref on error
Christoph Hellwig (2):
nvme: simplify transport specific device attribute handling
nvme: consolidate setting the tagset flags
Christophe JAILLET (1):
PM: AVS: qcom-cpr: Fix an error handling path in cpr_probe()
Chuang Wang (1):
tracing/osnoise: Use built-in RCU list checking
Claudiu Beznea (1):
ARM: dts: at91: sam9x60: fix the ddr clock for sam9x60
Clément Léger (1):
net: lan966x: add missing fwnode_handle_put() for ports node
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()
Conor Dooley (2):
dt-bindings: riscv: fix underscore requirement for multi-letter extensions
dt-bindings: riscv: fix single letter canonical order
Cristian Marussi (3):
firmware: arm_scmi: Harden shared memory access in fetch_response
firmware: arm_scmi: Harden shared memory access in fetch_notification
firmware: arm_scmi: Fix virtio channels cleanup on shutdown
Curtis Malainey (1):
ASoC: SOF: Add FW state to debugfs
Daisuke Matsuda (2):
RDMA/rxe: Fix inaccurate constants in rxe_type_info RDMA/rxe: Prevent faulty rkey generation
Dan Carpenter (2):
thermal/core: fix error code in __thermal_cooling_device_register()
gpio: mxc: Unlock on error path in mxc_flip_edge()
Dario Binacchi (1):
ARM: imx: add missing of_node_put()
Dave Airlie (1):
amdgpu: fix build on non-DCN platforms.
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
Dmitry Torokhov (1):
Revert "Input: synaptics - switch touchpad on HP Laptop 15-da3001TU to RMI mode"
Dylan Yudaken (1):
io_uring: always prep_async for drain requests
Emanuele Ghidoli (2):
arm64: dts: verdin-imx8mm: fix dahlia audio playback
arm64: dts: verdin-imx8mm: fix dev board audio playback
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 Huang (2):
drm/amdkfd: Add sync after creating vram bo drm/amdkfd: Fix NULL pointer error for GC 11.0.1 on mGPU
Eric Pilmore (1):
ptdma: pt_core_execute_cmd() should use spinlock
Esina Ekaterina (1):
net: wan: Add checks for NULL for utdm in undo_uhdlc_init and unmap_si_regs
Evan Quan (1):
drm/amd/pm: add missing AllowIHInterrupt message mapping for SMU13.0.0
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'
Fabrizio Castro (1):
dt-bindings: i2c: renesas,rzv2m: Fix SoC specific string
Florian Westphal (1):
netfilter: conntrack: handle tcp challenge acks during connection reuse
Gao Xiang (1):
erofs: fix kvcalloc() misuse with __GFP_NOFAIL
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"
Gergely Risko (1):
ipv6: fix reachability confirmation with proxy_ndp
Gerhard Engleder (1):
tsnep: Fix TX queue stop/wake for multiple queues
Giulio Benetti (1):
ARM: 9280/1: mm: fix warning on phys_addr_t to void pointer assignment
Greg Kroah-Hartman (1):
Linux 6.1.9
Guoqing Jiang (1):
block/rnbd-clt: fix wrong max ID in ida_alloc_max
Haibo Chen (1):
arm64: dts: imx93-11x11-evk: correct clock and strobe pad setting
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 (8):
platform/x86: asus-nb-wmi: Add alternate mapping for KEY_SCREENLOCK
ACPI: video: Add backlight=native DMI quirk for HP Pavilion g6-1d80nr
ACPI: video: Add backlight=native DMI quirk for HP EliteBook 8460p
ACPI: video: Add backlight=native DMI quirk for Asus U46E platform/x86: asus-wmi: Fix kbd_dock_devid tablet-switch reporting platform/x86: apple-gmux: Move port defines to apple-gmux.h platform/x86: apple-gmux: Add apple_gmux_detect() helper
ACPI: video: Fix apple gmux detection
Harsh Jain (1):
drm/amdgpu: complete gfxoff allow signal during suspend without delay
Harshit Mogalapalli (1):
Bluetooth: Fix a buffer overflow in mgmt_mesh_add()
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
Henning Schild (2):
platform/x86: simatic-ipc: correct name of a model platform/x86: simatic-ipc: add another model
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
Jack Pham (1):
usb: ucsi: Ensure connector delayed work items are flushed
Jakub Kicinski (1):
net: sched: gred: prevent races when adding offloads to stats
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
Jeff Layton (1):
nfsd: don't free files unconditionally in __nfsd_file_cache_purge
Jens Axboe (1):
io_uring/net: cache provided buffer group value for multishot receives
Jeremy Kerr (3):
net: mctp: add an explicit reference from a mctp_sk_key to sock
net: mctp: move expiry timer delete to unhash
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 (2):
arm64: dts: qcom: sc8280xp: fix primary USB-DP PHY reset
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
Jonathan Kim (1):
drm/amdgpu: remove unconditional trap enable on add gfx11 queues
Juergen Gross (1):
acpi: Fix suspend with Xen PV
Kan Liang (4):
perf/x86/cstate: Add Meteor Lake support
perf/x86/msr: Add Meteor Lake support
perf/x86/msr: Add Emerald Rapids
perf/x86/intel/uncore: Add Emerald Rapids
Kees Cook (2):
bnxt: Do not read past the end of test names
firmware: coreboot: Check size of table entry and use flex-array
Keith Busch (2):
nvme-pci: fix timeout request state check
nvme: fix passthrough csi check
Koba Ko (1):
dmaengine: Fix double increment of client_count in dma_chan_get()
Konrad Dybcio (5):
interconnect: qcom: msm8996: Provide UFS clocks to A2NoC
interconnect: qcom: msm8996: Fix regmap max_register values
arm64: dts: qcom: msm8992: Don't use sfpb mutex
arm64: dts: qcom: msm8992-libra: Fix the memory map
cpufreq: Add SM6375 to cpufreq-dt-platdev blocklist
Krzysztof Kozlowski (1):
regulator: dt-bindings: samsung,s2mps14: add lost samsung,ext-control-gpios
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
Ley Foon Tan (1):
riscv: Move call to init_cpu_topology() to later initialization stage
Liao Chang (1):
riscv/kprobe: Fix instruction simulation of JALR
Linus Torvalds (2):
treewide: fix up files incorrectly marked executable Fix up more non-executable files marked executable
Liu Shixin (1):
dmaengine: xilinx_dma: call of_node_put() when breaking out of for_each_child_of_node()
Lucas Stach (2):
soc: imx: imx8mp-blk-ctrl: enable global pixclk with HDMI_TX_PHY PD
soc: imx: imx8mp-blk-ctrl: don't set power device name
Luis Gerhorst (1):
bpf: Fix pointer-leak due to insufficient speculative store bypass mitigation
Luiz Augusto von Dentz (3):
Bluetooth: ISO: Avoid circular locking dependency
Bluetooth: ISO: Fix possible circular locking dependency
Bluetooth: hci_event: Fix Invalid wait context
Lyude Paul (1):
drm/amdgpu/display/mst: Fix mst_state->pbn_div and slot count assignments
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 (2):
net/mlx5: E-switch, Fix setting of reserved fields on MODIFY_SCHEDULING_ELEMENT net/mlx5e: QoS, Fix wrongfully setting parent_element_id 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
Marco Felsch (1):
arm64: dts: imx8mp-evk: pcie0-refclk cosmetic cleanup
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
Mark Pearson (1):
platform/x86: thinkpad_acpi: Fix profile modes on Intel platforms
Mark Rutland (1):
ftrace: Export ftrace_free_filter() to modules
Mars Chen (1):
ASoC: support machine driver with max98360
Masahiro Yamada (4):
tomoyo: fix broken dependency on *.conf.default
kbuild: export top-level LDFLAGS_vmlinux only to scripts/Makefile.vmlinux
kbuild: fix 'make modules' error when CONFIG_DEBUG_INFO_BTF_MODULES=y
riscv: fix -Wundef warning for CONFIG_RISCV_BOOT_SPINWAIT
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
Maxime Ripard (2):
drm/vc4: bo: Fix drmm_mutex_init memory hog
drm/vc4: bo: Fix unused variable warning
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
Michal Schmidt (1):
iavf: fix temporary deadlock and failure to set MAC address
Miklos Szeredi (2):
ovl: fix tmpfile leak
ovl: fail on invalid uid/gid mapping at copy up
Miles Chen (1):
cpufreq: armada-37xx: stop using 0 as NULL pointer
Ming Lei (1):
block: ublk: move ublk_chr_class destroying after devices are removed
Namjae Jeon (3):
ksmbd: add max connections parameter
ksmbd: downgrade ndr version error message to debug
ksmbd: limit pdu length size according to connection status
Naohiro Aota (1):
btrfs: zoned: enable metadata over-commit for non-ZNS setup
Natalia Petrova (1):
trace_events_hist: add check for return value of 'create_hist_field'
Nikita Shubin (1):
gpio: ep93xx: Fix port F hwirq numbers in handler
Niklas Schnelle (2):
s390/debug: add _ASM_S390_ prefix to header guard vfio/type1: Respect IOMMU reserved regions in vfio_test_domain_fgsp()
Nikunj A Dadhania (1):
x86/sev: Add SEV-SNP guest feature negotiation support
Nirmoy Das (2):
drm/drm_vma_manager: Add drm_vma_node_allow_once() drm/i915: Fix a memory leak with reused mmap_offset
Oleksii Moisieiev (1):
xen/pvcalls: free active map buffer on pvcalls_front_free_map
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 (2):
net: fix UaF in netns ops registration error path
net: mctp: hold key reference when looking up a general key
Patrice Chotard (4):
ARM: dts: stm32: Fix qspi pinctrl phandle for stm32mp15xx-dhcor-som
ARM: dts: stm32: Fix qspi pinctrl phandle for stm32mp15xx-dhcom-som
ARM: dts: stm32: Fix qspi pinctrl phandle for stm32mp157c-emstamp-argon
ARM: dts: stm32: Fix qspi pinctrl phandle for stm32mp151a-prtt1l
Patrick Thompson (1):
drm: Add orientation quirk for Lenovo ideapad D330-10IGL
Paulo Alcantara (2):
cifs: fix potential deadlock in cache_refresh_path()
cifs: fix potential memory leaks in session setup
Pavel Begunkov (7):
io_uring/msg_ring: fix remote queue to disabled ring
io_uring: inline io_req_task_work_add()
io_uring: inline __io_req_complete_post()
io_uring: hold locks for io_req_complete_failed
io_uring: use io_req_task_complete() in timeout
io_uring: remove io_req_tw_post_queue
io_uring: inline __io_req_complete_put()
Peter Foley (1):
ata: pata_cs5535: Don't build on UML
Petr Pavlu (1):
module: Don't wait for GOING modules
Pierre Gondois (2):
cpufreq: CPPC: Add u64 casts to avoid overflowing sched/fair: Check if prev_cpu has highest spare cap in feec()
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
Qais Yousef (1):
sched/uclamp: Fix a uninitialized variable warnings
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):
reset: ti-sci: honor TI_SCI_PROTOCOL setting when not COMPILE_TEST
phy: ti: fix Kconfig warning and operator precedence
net: mlx5: eliminate anonymous module_init & module_exit
Ranjani Sridharan (2):
ASoC: SOF: pm: Set target state earlier
ASoC: SOF: pm: Always tear down pipelines before DSP suspend
Richard Fitzgerald (1):
i2c: designware: Fix unbalanced suspended flag
Rob Clark (1):
drm/msm/gpu: Fix potential double-free
Robert Hancock (1):
net: macb: fix PTP TX timestamp failure due to packet padding
Robin Murphy (1):
Partially revert "perf/arm-cmn: Optimise DTC counter accesses"
Ross Lagerwall (1):
nvme-fc: fix initialization order
Sasha Levin (1):
Revert "selftests/bpf: check null propagation only neither reg is PTR_TO_BTF_ID"
Shang XiaoJing (2):
phy: usb: sunplus: Fix potential null-ptr-deref in sp_usb_phy_probe()
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
Stefan Assmann (1):
iavf: schedule watchdog immediately when changing primary MAC
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
Sven Schnelle (1):
nolibc: fix fd_set type
Szymon Heidrich (2):
wifi: rndis_wlan: Prevent buffer overflow in rndis_query_oid
net: usb: sr9700: Handle negative len
Tamim Khan (1):
ACPI: resource: Skip IRQ override on Asus Expertbook B2402CBA
Thomas Gleixner (1):
x86/i8259: Mark legacy PIC interrupts with IRQ_LEVEL
Thomas Weißschuh (3):
platform/x86: asus-nb-wmi: Add alternate mapping for KEY_CAMERA platform/x86: asus-wmi: Add quirk wmi_ignore_fan platform/x86: asus-wmi: Ignore fan on E410MA
Tim Harvey (1):
arm64: dts: imx8mm-venice-gw7901: fix USB2 controller OC polarity
Tonghao Zhang (1):
bpf: hash map, avoid deadlock with suitable hash mask
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
Vijaya Krishna Nivarthi (1):
dmaengine: qcom: gpi: Set link_rx bit on GO TRE for rx operation
Ville Syrjälä (2):
drm/i915: Allow panel fixed modes to have differing sync polarities drm/i915: Allow alternate fixed modes always for eDP
Viresh Kumar (2):
thermal: Validate new state in cur_state_store()
thermal: core: call put_device() only after device_register() fails
Vlad Buslov (1):
net/mlx5e: Avoid false lock dependency warning on tc_ht even more
Vladimir Oltean (1):
net: enetc: avoid deadlock in enetc_tx_onestep_tstamp()
Vlastimil Babka (1):
Revert "mm/compaction: fix set skip in fast_find_migrateblock"
Warner Losh (1):
tools/nolibc: Fix S_ISxxx macros
Wayne Lin (3):
drm/display/dp_mst: Correct the kref of port. drm/amdgpu/display/mst: limit payload to be updated one by one drm/amdgpu/display/mst: update mst_mgr relevant variable when long HPD
Wei Fang (1):
net: fec: Use page_pool_put_full_page when freeing rx buffers
Wenchao Hao (1):
scsi: iscsi: Fix multiple iSCSI session unbind events sent to userspace
Werner Sembach (1):
Input: i8042 - add Clevo PCX0DX to i8042 quirk table
Willem de Bruijn (1):
selftests/net: toeplitz: fix race on tpacket_v3 block close
Willy Tarreau (2):
tools/nolibc: fix missing includes causing build issues at -O0 tools/nolibc: prevent gcc from making memset() loop over itself
Wim Van Boven (1):
ASoC: amd: yc: Add Razer Blade 14 2022 into DMI table
Witold Sadowski (1):
spi: cadence: Fix busy cycles calculation
Xingui Yang (1):
scsi: hisi_sas: Use abort task set to reset SAS disks when discovered
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()
Yi Liu (1):
kvm/vfio: Fix potential deadlock on vfio group_lock
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
Zhengchao Shao (2):
Bluetooth: hci_conn: Fix memory leaks
Bluetooth: hci_sync: fix memory leak in hci_update_adv_data()
tongjian (1):
ASoC: mediatek: mt8186: support rt5682s_max98360