Linux 5.15.69
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.15.69 kernel.
All users of the 5.15 kernel series must upgrade.
The updated 5.15.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.15.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/devicetree/bindings/iio/gyroscope/bosch,bmg160.yaml | 2 Documentation/input/joydev/joystick.rst | 1 Makefile | 2 arch/arm/boot/dts/at91-sama7g5ek.dts | 20 +- arch/arm/boot/dts/imx28-evk.dts | 2 arch/arm/boot/dts/imx28-m28evk.dts | 2 arch/arm/boot/dts/imx28-sps1.dts | 2 arch/arm/boot/dts/imx6dl-rex-basic.dts | 2 arch/arm/boot/dts/imx6q-ba16.dtsi | 2 arch/arm/boot/dts/imx6q-bx50v3.dtsi | 2 arch/arm/boot/dts/imx6q-cm-fx6.dts | 2 arch/arm/boot/dts/imx6q-dmo-edmqmx6.dts | 2 arch/arm/boot/dts/imx6q-dms-ba16.dts | 2 arch/arm/boot/dts/imx6q-gw5400-a.dts | 2 arch/arm/boot/dts/imx6q-marsboard.dts | 2 arch/arm/boot/dts/imx6q-rex-pro.dts | 2 arch/arm/boot/dts/imx6qdl-aristainetos.dtsi | 2 arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi | 2 arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi | 2 arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi | 4 arch/arm/boot/dts/imx6qdl-nit6xlite.dtsi | 2 arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi | 2 arch/arm/boot/dts/imx6qdl-nitrogen6_som2.dtsi | 2 arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi | 2 arch/arm/boot/dts/imx6qdl-sabreauto.dtsi | 2 arch/arm/boot/dts/imx6qdl-sabrelite.dtsi | 2 arch/arm/boot/dts/imx6qdl-sabresd.dtsi | 2 arch/arm/boot/dts/imx6sl-evk.dts | 2 arch/arm/boot/dts/imx6sx-nitrogen6sx.dts | 2 arch/arm/boot/dts/imx6sx-sdb-reva.dts | 4 arch/arm/boot/dts/imx6sx-sdb.dts | 4 arch/arm/boot/dts/imx6ul-14x14-evk.dtsi | 2 arch/arm/boot/dts/imx6ul-kontron-n6310-som.dtsi | 2 arch/arm/boot/dts/imx6ul-kontron-n6311-som.dtsi | 2 arch/arm/boot/dts/imx6ul-kontron-n6x1x-som-common.dtsi | 2 arch/arm/boot/dts/imx6ull-kontron-n6411-som.dtsi | 2 arch/arm64/kernel/entry-common.c | 8 arch/x86/include/asm/cpu_entry_area.h | 2 arch/x86/include/asm/page_64.h | 2 arch/x86/kvm/x86.h | 2 drivers/acpi/resource.c | 10 + drivers/gpio/gpio-mockup.c | 9 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 2 drivers/gpu/drm/msm/msm_rd.c | 3 drivers/hid/intel-ish-hid/ishtp-hid.h | 2 drivers/hid/intel-ish-hid/ishtp/client.c | 68 +++--- drivers/infiniband/hw/irdma/uk.c | 3 drivers/input/joystick/iforce/iforce-main.c | 1 drivers/input/touchscreen/goodix.c | 2 drivers/iommu/intel/iommu.c | 100 ++++------ drivers/net/ethernet/broadcom/tg3.c | 8 drivers/net/ieee802154/cc2520.c | 1 drivers/nvme/target/tcp.c | 3 drivers/perf/arm_pmu_platform.c | 2 drivers/platform/surface/surface_aggregator_registry.c | 3 drivers/platform/x86/acer-wmi.c | 9 drivers/soc/fsl/Kconfig | 1 drivers/usb/gadget/function/f_uac2.c | 30 ++- drivers/usb/storage/unusual_uas.h | 7 fs/tracefs/inode.c | 31 ++- include/linux/intel-iommu.h | 9 include/linux/irqflags.h | 4 include/linux/kvm_host.h | 2 include/linux/nfs_fs.h | 4 include/linux/sched/task_stack.h | 2 kernel/entry/common.c | 6 kernel/locking/lockdep.c | 22 -- kernel/sched/idle.c | 2 kernel/trace/trace_preemptirq.c | 8 mm/mmap.c | 9 net/dsa/tag_hellcreek.c | 2 71 files changed, 278 insertions(+), 196 deletions(-)
Borislav Petkov (2):
x86/mm: Force-inline __phys_addr_nodebug() task_stack, x86/cea: Force-inline stack helpers
Brian Norris (1):
tracefs: Only clobber mode/uid/gid on remount if asked
Chengming Gui (1):
drm/amd/amdgpu: skip ucode loading if ucode_size == 0
Chuanhong Guo (1):
ACPI: resource: skip IRQ override on AMD Zen platforms
Claudiu Beznea (2):
ARM: dts: at91: fix low limit for CPU regulator
ARM: dts: at91: sama7g5ek: specify proper regulator output ranges
Colin Ian King (1):
usb: gadget: f_uac2: clean up some inconsistent indenting
Dave Wysochanski (1):
NFS: Fix WARN_ON due to unionization of nfs_inode.nrequests
Even Xu (1):
hid: intel-ish-hid: ishtp: Fix ishtp client sending disordered message
Greg Kroah-Hartman (1):
Linux 5.15.69
Greg Tulli (1):
Input: iforce - add support for Boeder Force Feedback Wheel
Hans de Goede (1):
platform/x86: acer-wmi: Acer Aspire One AOD270/Packard Bell Dot keymap fixes
Hu Xiaoying (1):
usb: storage: Add ASUS <0x0b05:0x1932> to IGNORE_UAS
Jann Horn (1):
mm: Fix TLB flush for not-first PFNMAP mappings in unmap_region()
Jarrah Gosbell (1):
Input: goodix - add compatible string for GT1158
Jason Wang (1):
HID: ishtp-hid-clientHID: ishtp-hid-client: Fix comment typo
Jing Leng (1):
usb: gadget: f_uac2: fix superspeed transfer
Kai-Heng Feng (1):
tg3: Disable tg3 device on system reboot to avoid triggering AER
Krzysztof Kozlowski (2):
ARM: dts: imx: align SPI NOR node name with dtschema
dt-bindings: iio: gyroscope: bosch,bmg160: correct number of pins
Kurt Kanzenbach (1):
net: dsa: hellcreek: Print warning only once
Li Qiong (1):
ieee802154: cc2520: add rc code in cc2520_tx()
Lu Baolu (1):
iommu/vt-d: Fix kdump kernels boot failure with scalable mode
Marco Felsch (1):
ARM: dts: imx6qdl-kontron-samx6i: fix spi-flash compatible
Mathew McBride (1):
soc: fsl: select FSL_GUTS driver for DPIO
Maurizio Lombardi (1):
nvmet-tcp: fix unhandled tcp states in nvmet_tcp_state_change()
Maximilian Luz (1):
platform/surface: aggregator_registry: Add support for Surface Laptop Go 2
Nick Desaulniers (1):
lockdep: Fix -Wunused-parameter for _THIS_IP_
Ondrej Jirman (1):
Input: goodix - add support for GT1158
Rob Clark (1):
drm/msm/rd: Fix FIFO-full deadlock
Sindhu-Devale (1):
RDMA/irdma: Use s/g array in post send only when its valid
Wei Yongjun (1):
gpio: mockup: remove gpio debugfs when remove device
Yipeng Zou (1):
tracing: hold caller_addr to hardirq_{enable,disable}_ip
Yu Zhe (1):
perf/arm_pmu_platform: fix tests for platform_get_irq() failure
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/iio/gyroscope/bosch,bmg160.yaml +2 -0
@@ -24,8 +24,10 @@ properties: interrupts: minItems: 1 + maxItems: 2 description: Should be configured with type IRQ_TYPE_EDGE_RISING. + If two interrupts are provided, expected order is INT1 and INT2. required: - compatible
Documentation/input/joydev/joystick.rst +1 -0
@@ -517,6 +517,7 @@ All I-Force devices are supported by the iforce module. This includes: * AVB Mag Turbo Force * AVB Top Shot Pegasus * AVB Top Shot Force Feedback Racing Wheel +* Boeder Force Feedback Wheel * Logitech WingMan Force * Logitech WingMan Force Wheel * Guillemot Race Leader Force Feedback
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 15 -SUBLEVEL = 68 +SUBLEVEL = 69 EXTRAVERSION = NAME = Trick or Treat
arch/arm/boot/dts/at91-sama7g5ek.dts +10 -10
@@ -169,8 +169,8 @@ mcp16502@5b { regulators { vdd_3v3: VDD_IO { regulator-name = "VDD_IO"; - regulator-min-microvolt = <1200000>; - regulator-max-microvolt = <3700000>; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; regulator-initial-mode = <2>; regulator-allowed-modes = <2>, <4>; regulator-always-on;
@@ -188,8 +188,8 @@ regulator-state-mem { vddioddr: VDD_DDR { regulator-name = "VDD_DDR"; - regulator-min-microvolt = <1300000>; - regulator-max-microvolt = <1450000>; + regulator-min-microvolt = <1350000>; + regulator-max-microvolt = <1350000>; regulator-initial-mode = <2>; regulator-allowed-modes = <2>, <4>; regulator-always-on;
@@ -209,8 +209,8 @@ regulator-state-mem { vddcore: VDD_CORE { regulator-name = "VDD_CORE"; - regulator-min-microvolt = <1100000>; - regulator-max-microvolt = <1850000>; + regulator-min-microvolt = <1150000>; + regulator-max-microvolt = <1150000>; regulator-initial-mode = <2>; regulator-allowed-modes = <2>, <4>; regulator-always-on;
@@ -228,8 +228,8 @@ regulator-state-mem { vddcpu: VDD_OTHER { regulator-name = "VDD_OTHER"; - regulator-min-microvolt = <1125000>; - regulator-max-microvolt = <1850000>; + regulator-min-microvolt = <1050000>; + regulator-max-microvolt = <1250000>; regulator-initial-mode = <2>; regulator-allowed-modes = <2>, <4>; regulator-ramp-delay = <3125>;
@@ -248,8 +248,8 @@ regulator-state-mem { vldo1: LDO1 { regulator-name = "LDO1"; - regulator-min-microvolt = <1200000>; - regulator-max-microvolt = <3700000>; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; regulator-always-on; regulator-state-standby {
arch/arm/boot/dts/imx28-evk.dts +1 -1
@@ -129,7 +129,7 @@ ssp2: spi@80014000 { pinctrl-0 = <&spi2_pins_a>; status = "okay"; - flash: m25p80@0 { + flash: flash@0 { #address-cells = <1>; #size-cells = <1>; compatible = "sst,sst25vf016b", "jedec,spi-nor";
arch/arm/boot/dts/imx28-m28evk.dts +1 -1
@@ -33,7 +33,7 @@ ssp2: spi@80014000 { pinctrl-0 = <&spi2_pins_a>; status = "okay"; - flash: m25p80@0 { + flash: flash@0 { #address-cells = <1>; #size-cells = <1>; compatible = "m25p80", "jedec,spi-nor";
arch/arm/boot/dts/imx28-sps1.dts +1 -1
@@ -51,7 +51,7 @@ ssp2: spi@80014000 { pinctrl-0 = <&spi2_pins_a>; status = "okay"; - flash: m25p80@0 { + flash: flash@0 { #address-cells = <1>; #size-cells = <1>; compatible = "everspin,mr25h256", "mr25h256";
arch/arm/boot/dts/imx6dl-rex-basic.dts +1 -1
@@ -19,7 +19,7 @@ memory@10000000 { }; &ecspi3 { - flash: m25p80@0 { + flash: flash@0 { compatible = "sst,sst25vf016b", "jedec,spi-nor"; spi-max-frequency = <20000000>; reg = <0>;
arch/arm/boot/dts/imx6q-ba16.dtsi +1 -1
@@ -142,7 +142,7 @@ &ecspi1 { pinctrl-0 = <&pinctrl_ecspi1>; status = "okay"; - flash: n25q032@0 { + flash: flash@0 { compatible = "jedec,spi-nor"; #address-cells = <1>; #size-cells = <1>;
arch/arm/boot/dts/imx6q-bx50v3.dtsi +1 -1
@@ -160,7 +160,7 @@ &ecspi5 { pinctrl-0 = <&pinctrl_ecspi5>; status = "okay"; - m25_eeprom: m25p80@0 { + m25_eeprom: flash@0 { compatible = "atmel,at25"; spi-max-frequency = <10000000>; size = <0x8000>;
arch/arm/boot/dts/imx6q-cm-fx6.dts +1 -1
@@ -260,7 +260,7 @@ &ecspi1 { pinctrl-0 = <&pinctrl_ecspi1>; status = "okay"; - m25p80@0 { + flash@0 { #address-cells = <1>; #size-cells = <1>; compatible = "st,m25p", "jedec,spi-nor";
arch/arm/boot/dts/imx6q-dmo-edmqmx6.dts +1 -1
@@ -102,7 +102,7 @@ &ecspi5 { cs-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>; status = "okay"; - flash: m25p80@0 { + flash: flash@0 { compatible = "m25p80", "jedec,spi-nor"; spi-max-frequency = <40000000>; reg = <0>;
arch/arm/boot/dts/imx6q-dms-ba16.dts +1 -1
@@ -47,7 +47,7 @@ &ecspi5 { pinctrl-0 = <&pinctrl_ecspi5>; status = "okay"; - m25_eeprom: m25p80@0 { + m25_eeprom: flash@0 { compatible = "atmel,at25256B", "atmel,at25"; spi-max-frequency = <20000000>; size = <0x8000>;
arch/arm/boot/dts/imx6q-gw5400-a.dts +1 -1
@@ -137,7 +137,7 @@ &ecspi1 { pinctrl-0 = <&pinctrl_ecspi1>; status = "okay"; - flash: m25p80@0 { + flash: flash@0 { compatible = "sst,w25q256", "jedec,spi-nor"; spi-max-frequency = <30000000>; reg = <0>;
arch/arm/boot/dts/imx6q-marsboard.dts +1 -1
@@ -100,7 +100,7 @@ &ecspi1 { cs-gpios = <&gpio2 30 GPIO_ACTIVE_LOW>; status = "okay"; - m25p80@0 { + flash@0 { compatible = "microchip,sst25vf016b"; spi-max-frequency = <20000000>; reg = <0>;
arch/arm/boot/dts/imx6q-rex-pro.dts +1 -1
@@ -19,7 +19,7 @@ memory@10000000 { }; &ecspi3 { - flash: m25p80@0 { + flash: flash@0 { compatible = "sst,sst25vf032b", "jedec,spi-nor"; spi-max-frequency = <20000000>; reg = <0>;
arch/arm/boot/dts/imx6qdl-aristainetos.dtsi +1 -1
@@ -96,7 +96,7 @@ &ecspi4 { pinctrl-0 = <&pinctrl_ecspi4>; status = "okay"; - flash: m25p80@0 { + flash: flash@0 { #address-cells = <1>; #size-cells = <1>; compatible = "micron,n25q128a11", "jedec,spi-nor";
arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi +1 -1
@@ -131,7 +131,7 @@ &ecspi4 { pinctrl-0 = <&pinctrl_ecspi4>; status = "okay"; - flash: m25p80@1 { + flash: flash@1 { #address-cells = <1>; #size-cells = <1>; compatible = "micron,n25q128a11", "jedec,spi-nor";
arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi +1 -1
@@ -35,7 +35,7 @@ &ecspi3 { pinctrl-0 = <&pinctrl_ecspi3>; status = "okay"; - flash: m25p80@0 { + flash: flash@0 { #address-cells = <1>; #size-cells = <1>; compatible = "sst,sst25vf040b", "jedec,spi-nor";
arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi +2 -2
@@ -248,8 +248,8 @@ &ecspi4 { status = "okay"; /* default boot source: workaround #1 for errata ERR006282 */ - smarc_flash: spi-flash@0 { - compatible = "winbond,w25q16dw", "jedec,spi-nor"; + smarc_flash: flash@0 { + compatible = "jedec,spi-nor"; reg = <0>; spi-max-frequency = <20000000>; };
arch/arm/boot/dts/imx6qdl-nit6xlite.dtsi +1 -1
@@ -179,7 +179,7 @@ &ecspi1 { pinctrl-0 = <&pinctrl_ecspi1>; status = "okay"; - flash: m25p80@0 { + flash: flash@0 { compatible = "microchip,sst25vf016b"; spi-max-frequency = <20000000>; reg = <0>;
arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi +1 -1
@@ -321,7 +321,7 @@ &ecspi1 { pinctrl-0 = <&pinctrl_ecspi1>; status = "okay"; - flash: m25p80@0 { + flash: flash@0 { compatible = "microchip,sst25vf016b"; spi-max-frequency = <20000000>; reg = <0>;
arch/arm/boot/dts/imx6qdl-nitrogen6_som2.dtsi +1 -1
@@ -252,7 +252,7 @@ &ecspi1 { pinctrl-0 = <&pinctrl_ecspi1>; status = "okay"; - flash: m25p80@0 { + flash: flash@0 { compatible = "microchip,sst25vf016b"; spi-max-frequency = <20000000>; reg = <0>;
arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi +1 -1
@@ -237,7 +237,7 @@ &ecspi1 { pinctrl-0 = <&pinctrl_ecspi1>; status = "okay"; - flash: m25p80@0 { + flash: flash@0 { compatible = "sst,sst25vf016b", "jedec,spi-nor"; spi-max-frequency = <20000000>; reg = <0>;
arch/arm/boot/dts/imx6qdl-sabreauto.dtsi +1 -1
@@ -272,7 +272,7 @@ &ecspi1 { pinctrl-0 = <&pinctrl_ecspi1 &pinctrl_ecspi1_cs>; status = "disabled"; /* pin conflict with WEIM NOR */ - flash: m25p80@0 { + flash: flash@0 { #address-cells = <1>; #size-cells = <1>; compatible = "st,m25p32", "jedec,spi-nor";
arch/arm/boot/dts/imx6qdl-sabrelite.dtsi +1 -1
@@ -313,7 +313,7 @@ &ecspi1 { pinctrl-0 = <&pinctrl_ecspi1>; status = "okay"; - flash: m25p80@0 { + flash: flash@0 { compatible = "sst,sst25vf016b", "jedec,spi-nor"; spi-max-frequency = <20000000>; reg = <0>;
arch/arm/boot/dts/imx6qdl-sabresd.dtsi +1 -1
@@ -197,7 +197,7 @@ &ecspi1 { pinctrl-0 = <&pinctrl_ecspi1>; status = "okay"; - flash: m25p80@0 { + flash: flash@0 { #address-cells = <1>; #size-cells = <1>; compatible = "st,m25p32", "jedec,spi-nor";
arch/arm/boot/dts/imx6sl-evk.dts +1 -1
@@ -137,7 +137,7 @@ &ecspi1 { pinctrl-0 = <&pinctrl_ecspi1>; status = "okay"; - flash: m25p80@0 { + flash: flash@0 { #address-cells = <1>; #size-cells = <1>; compatible = "st,m25p32", "jedec,spi-nor";
arch/arm/boot/dts/imx6sx-nitrogen6sx.dts +1 -1
@@ -107,7 +107,7 @@ &ecspi1 { pinctrl-0 = <&pinctrl_ecspi1>; status = "okay"; - flash: m25p80@0 { + flash: flash@0 { compatible = "microchip,sst25vf016b"; spi-max-frequency = <20000000>; reg = <0>;
arch/arm/boot/dts/imx6sx-sdb-reva.dts +2 -2
@@ -123,7 +123,7 @@ &qspi2 { pinctrl-0 = <&pinctrl_qspi2>; status = "okay"; - flash0: s25fl128s@0 { + flash0: flash@0 { reg = <0>; #address-cells = <1>; #size-cells = <1>;
@@ -133,7 +133,7 @@ flash0: s25fl128s@0 { spi-tx-bus-width = <4>; }; - flash1: s25fl128s@2 { + flash1: flash@2 { reg = <2>; #address-cells = <1>; #size-cells = <1>;
arch/arm/boot/dts/imx6sx-sdb.dts +2 -2
@@ -108,7 +108,7 @@ &qspi2 { pinctrl-0 = <&pinctrl_qspi2>; status = "okay"; - flash0: n25q256a@0 { + flash0: flash@0 { #address-cells = <1>; #size-cells = <1>; compatible = "micron,n25q256a", "jedec,spi-nor";
@@ -118,7 +118,7 @@ flash0: n25q256a@0 { reg = <0>; }; - flash1: n25q256a@2 { + flash1: flash@2 { #address-cells = <1>; #size-cells = <1>; compatible = "micron,n25q256a", "jedec,spi-nor";
arch/arm/boot/dts/imx6ul-14x14-evk.dtsi +1 -1
@@ -286,7 +286,7 @@ &qspi { pinctrl-0 = <&pinctrl_qspi>; status = "okay"; - flash0: n25q256a@0 { + flash0: flash@0 { #address-cells = <1>; #size-cells = <1>; compatible = "micron,n25q256a", "jedec,spi-nor";
arch/arm/boot/dts/imx6ul-kontron-n6310-som.dtsi +1 -1
@@ -19,7 +19,7 @@ memory@80000000 { }; &qspi { - spi-flash@0 { + flash@0 { #address-cells = <1>; #size-cells = <1>; compatible = "spi-nand";
arch/arm/boot/dts/imx6ul-kontron-n6311-som.dtsi +1 -1
@@ -18,7 +18,7 @@ memory@80000000 { }; &qspi { - spi-flash@0 { + flash@0 { #address-cells = <1>; #size-cells = <1>; compatible = "spi-nand";
arch/arm/boot/dts/imx6ul-kontron-n6x1x-som-common.dtsi +1 -1
@@ -19,7 +19,7 @@ &ecspi2 { pinctrl-0 = <&pinctrl_ecspi2>; status = "okay"; - spi-flash@0 { + flash@0 { compatible = "mxicy,mx25v8035f", "jedec,spi-nor"; spi-max-frequency = <50000000>; reg = <0>;
arch/arm/boot/dts/imx6ull-kontron-n6411-som.dtsi +1 -1
@@ -18,7 +18,7 @@ memory@80000000 { }; &qspi { - spi-flash@0 { + flash@0 { #address-cells = <1>; #size-cells = <1>; compatible = "spi-nand";
arch/arm64/kernel/entry-common.c +4 -4
@@ -72,7 +72,7 @@ static __always_inline void __exit_to_kernel_mode(struct pt_regs *regs)if (interrupts_enabled (regs)) {if (regs->exit_rcu) {trace_hardirqs_on_prepare (); -lockdep_hardirqs_on_prepare (CALLER_ADDR0 ); +lockdep_hardirqs_on_prepare ();rcu_irq_exit ();lockdep_hardirqs_on (CALLER_ADDR0 );return ;
@@ -117,7 +117,7 @@ static __always_inline void enter_from_user_mode(struct pt_regs *regs) static __always_inline void __exit_to_user_mode(void) {trace_hardirqs_on_prepare (); -lockdep_hardirqs_on_prepare (CALLER_ADDR0 ); +lockdep_hardirqs_on_prepare ();user_enter_irqoff ();lockdep_hardirqs_on (CALLER_ADDR0 ); }
@@ -175,7 +175,7 @@ static void noinstr arm64_exit_nmi(struct pt_regs *regs)ftrace_nmi_exit ();if (restore) {trace_hardirqs_on_prepare (); -lockdep_hardirqs_on_prepare (CALLER_ADDR0 ); +lockdep_hardirqs_on_prepare (); }rcu_nmi_exit ();
@@ -211,7 +211,7 @@ static void noinstr arm64_exit_el1_dbg(struct pt_regs *regs)if (restore) {trace_hardirqs_on_prepare (); -lockdep_hardirqs_on_prepare (CALLER_ADDR0 ); +lockdep_hardirqs_on_prepare (); }rcu_nmi_exit ();
arch/x86/include/asm/cpu_entry_area.h +1 -1
@@ -143,7 +143,7 @@ extern void cea_set_pte(void *cea_vaddr, phys_addr_t pa, pgprot_t flags);extern struct cpu_entry_area *get_cpu_entry_area (int cpu); -static inline struct entry_stack *cpu_entry_stack (int cpu) +static __always_inline struct entry_stack *cpu_entry_stack(int cpu) {return &get_cpu_entry_area (cpu)->entry_stack_page.stack; }
arch/x86/include/asm/page_64.h +1 -1
@@ -15,7 +15,7 @@ extern unsigned long page_offset_base;extern unsigned long vmalloc_base;extern unsigned long vmemmap_base; -static inline unsigned long __phys_addr_nodebug (unsigned long x) +static __always_inline unsigned long __phys_addr_nodebug (unsigned long x) {unsigned long y = x - __START_KERNEL_map;
arch/x86/kvm/x86.h +1 -1
@@ -26,7 +26,7 @@ static __always_inline void kvm_guest_enter_irqoff(void)*/ instrumentation_begin ();trace_hardirqs_on_prepare (); -lockdep_hardirqs_on_prepare (CALLER_ADDR0 ); +lockdep_hardirqs_on_prepare ();instrumentation_end ();guest_enter_irqoff ();
drivers/acpi/resource.c +10 -0
@@ -416,6 +416,16 @@ static bool acpi_dev_irq_override(u32 gsi, u8 triggering, u8 polarity, {int i; +#ifdef CONFIG_X86 +/* +* IRQ override isn't needed on modern AMD Zen systems and +* this override breaks active low IRQs on AMD Ryzen 6000 and +* newer systems. Skip it. +*/ +if (boot_cpu_has (X86_FEATURE_ZEN )) +return false; +#endif +for (i =0 ; i <ARRAY_SIZE (skip_override_table); i++) {const struct irq_override_cmp *entry = &skip_override_table[i];
drivers/gpio/gpio-mockup.c +8 -1
@@ -373,6 +373,13 @@ static void gpio_mockup_debugfs_setup(struct device *dev, } } +static void gpio_mockup_debugfs_cleanup (void *data) +{ +struct gpio_mockup_chip *chip = data; + +debugfs_remove_recursive (chip->dbg_dir); +} +static void gpio_mockup_dispose_mappings (void *data) {struct gpio_mockup_chip *chip = data;
@@ -455,7 +462,7 @@ static int gpio_mockup_probe(struct platform_device *pdev)gpio_mockup_debugfs_setup (dev, chip); -return 0 ; +return devm_add_action_or_reset (dev, gpio_mockup_debugfs_cleanup, chip); }static const struct of_device_id gpio_mockup_of_match[] = {
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +1 -1
@@ -2505,7 +2505,7 @@ static int psp_load_smu_fw(struct psp_context *psp)static bool fw_load_skip_check (struct psp_context *psp,struct amdgpu_firmware_info *ucode) { -if (!ucode->fw) +if (!ucode->fw || !ucode->ucode_size)return true; if (ucode->ucode_id == AMDGPU_UCODE_ID_SMC &&
drivers/gpu/drm/msm/msm_rd.c +3 -0
@@ -191,6 +191,9 @@ static int rd_open(struct inode *inode, struct file *file) file->private_data = rd; rd->open = true; +/* Reset fifo to clear any previously unread data: */ + rd->fifo.head = rd->fifo.tail =0 ; +/* the parsing tools need to know gpu-id to know which * register database to load. */
drivers/hid/intel-ish-hid/ishtp-hid.h +1 -1
@@ -105,7 +105,7 @@ struct report_list {* @multi_packet_cnt: Count of fragmented packet count * * This structure is used to store completion flags and per client data like -* like report description, number of HID devices etc. +* report description, number of HID devices etc. */ struct ishtp_cl_data {/* completion flags */
drivers/hid/intel-ish-hid/ishtp/client.c +39 -29
91 lines not on this page · raw message
drivers/infiniband/hw/irdma/uk.c +2 -1
@@ -501,7 +501,8 @@ enum irdma_status_code irdma_uk_send(struct irdma_qp_uk *qp, FIELD_PREP(IRDMAQPSQ_IMMDATA, info->imm_data)); i =0 ; }else { - qp->wqe_ops.iw_set_fragment (wqe,0 , op_info->sg_list, + qp->wqe_ops.iw_set_fragment (wqe,0 , + frag_cnt ? op_info->sg_list :NULL , qp->swqe_polarity); i =1 ; }
drivers/input/joystick/iforce/iforce-main.c +1 -0
@@ -50,6 +50,7 @@ static struct iforce_device iforce_device[] = { { 0x046d, 0xc291, "Logitech WingMan Formula Force", btn_wheel, abs_wheel, ff_iforce }, { 0x05ef, 0x020a, "AVB Top Shot Pegasus", btn_joystick_avb, abs_avb_pegasus, ff_iforce }, { 0x05ef, 0x8884, "AVB Mag Turbo Force", btn_wheel, abs_wheel, ff_iforce }, + { 0x05ef, 0x8886, "Boeder Force Feedback Wheel", btn_wheel, abs_wheel, ff_iforce }, { 0x05ef, 0x8888, "AVB Top Shot Force Feedback Racing Wheel", btn_wheel, abs_wheel, ff_iforce }, //? { 0x061c, 0xc0a4, "ACT LABS Force RS", btn_wheel, abs_wheel, ff_iforce }, //? { 0x061c, 0xc084, "ACT LABS Force RS", btn_wheel, abs_wheel, ff_iforce },
drivers/input/touchscreen/goodix.c +2 -0
@@ -94,6 +94,7 @@ static const struct goodix_chip_data gt9x_chip_data = {static const struct goodix_chip_id goodix_chip_ids[] = { { .id ="1151" , .data = >1x_chip_data }, + { .id ="1158" , .data = >1x_chip_data }, { .id ="5663" , .data = >1x_chip_data }, { .id ="5688" , .data = >1x_chip_data }, { .id ="917S" , .data = >1x_chip_data },
@@ -1362,6 +1363,7 @@ MODULE_DEVICE_TABLE(acpi, goodix_acpi_match);#ifdef CONFIG_OF static const struct of_device_id goodix_of_match[] = { { .compatible ="goodix,gt1151" }, + { .compatible ="goodix,gt1158" }, { .compatible ="goodix,gt5663" }, { .compatible ="goodix,gt5688" }, { .compatible = "goodix,gt911" },
drivers/iommu/intel/iommu.c +44 -56
166 lines not on this page · raw message
drivers/net/ethernet/broadcom/tg3.c +6 -2
@@ -18078,16 +18078,20 @@ static void tg3_shutdown(struct pci_dev *pdev)struct net_device *dev =pci_get_drvdata (pdev);struct tg3 *tp =netdev_priv (dev); +tg3_reset_task_cancel (tp); +rtnl_lock (); +netif_device_detach (dev);if (netif_running (dev))dev_close (dev); -if (system_state ==SYSTEM_POWER_OFF ) -tg3_power_down (tp); +tg3_power_down (tp);rtnl_unlock (); + +pci_disable_device (pdev); }/**
drivers/net/ieee802154/cc2520.c +1 -0
@@ -504,6 +504,7 @@ cc2520_tx(struct ieee802154_hw *hw, struct sk_buff *skb) goto err_tx;if (status &CC2520_STATUS_TX_UNDERFLOW ) { + rc = -EINVAL ;dev_err (&priv->spi->dev,"cc2520 tx underflow exception\n" ); goto err_tx; }
drivers/nvme/target/tcp.c +3 -0
@@ -1501,6 +1501,9 @@ static void nvmet_tcp_state_change(struct sock *sk) goto done;switch (sk->sk_state) { +case TCP_FIN_WAIT2 : +case TCP_LAST_ACK : +break ;case TCP_FIN_WAIT1 :case TCP_CLOSE_WAIT :case TCP_CLOSE :
drivers/perf/arm_pmu_platform.c +1 -1
@@ -117,7 +117,7 @@ static int pmu_parse_irqs(struct arm_pmu *pmu)if (num_irqs ==1 ) {int irq =platform_get_irq (pdev,0 ); -if (irq &&irq_is_percpu_devid (irq)) +if ((irq >0 ) &&irq_is_percpu_devid (irq))return pmu_parse_percpu_irq (pmu, irq); }
drivers/platform/surface/surface_aggregator_registry.c +3 -0
@@ -558,6 +558,9 @@ static const struct acpi_device_id ssam_platform_hub_match[] = {/* Surface Laptop Go 1 */ { "MSHW0118", (unsigned long)ssam_node_group_slg1 }, +/* Surface Laptop Go 2 */ + { "MSHW0290", (unsigned long)ssam_node_group_slg1 }, +/* Surface Laptop Studio */ { "MSHW0123", (unsigned long)ssam_node_group_sls },
drivers/platform/x86/acer-wmi.c +8 -1
@@ -99,6 +99,7 @@ static const struct key_entry acer_wmi_keymap[] __initconst = { {KE_KEY, 0x22, {KEY_PROG2} }, /* Arcade */ {KE_KEY, 0x23, {KEY_PROG3} }, /* P_Key */ {KE_KEY, 0x24, {KEY_PROG4} }, /* Social networking_Key */ + {KE_KEY, 0x27, {KEY_HELP} }, {KE_KEY, 0x29, {KEY_PROG3} }, /* P_Key for TM8372 */ {KE_IGNORE, 0x41, {KEY_MUTE} }, {KE_IGNORE, 0x42, {KEY_PREVIOUSSONG} },
@@ -112,7 +113,13 @@ static const struct key_entry acer_wmi_keymap[] __initconst = { {KE_IGNORE, 0x48, {KEY_VOLUMEUP} }, {KE_IGNORE, 0x49, {KEY_VOLUMEDOWN} }, {KE_IGNORE, 0x4a, {KEY_VOLUMEDOWN} }, - {KE_IGNORE, 0x61, {KEY_SWITCHVIDEOMODE} }, +/* +* 0x61 is KEY_SWITCHVIDEOMODE. Usually this is a duplicate input event +* with the "Video Bus" input device events. But sometimes it is not +* a dup. Map it to KEY_UNKNOWN instead of using KE_IGNORE so that +* udev/hwdb can override it on systems where it is not a dup. +*/ + {KE_KEY, 0x61, {KEY_UNKNOWN} }, {KE_IGNORE, 0x62, {KEY_BRIGHTNESSUP} }, {KE_IGNORE, 0x63, {KEY_BRIGHTNESSDOWN} }, {KE_KEY, 0x64, {KEY_SWITCHVIDEOMODE} }, /* Display Switch */
drivers/soc/fsl/Kconfig +1 -0
@@ -24,6 +24,7 @@ config FSL_MC_DPIO tristate "QorIQ DPAA2 DPIO driver" depends on FSL_MC_BUS select SOC_BUS + select FSL_GUTS help Driver for the DPAA2 DPIO object. A DPIO provides queue and buffer management facilities for software to interact with
drivers/usb/gadget/function/f_uac2.c +21 -9
@@ -281,6 +281,12 @@ static struct usb_endpoint_descriptor ss_ep_int_desc = { .bInterval = 4, }; +static struct usb_ss_ep_comp_descriptor ss_ep_int_desc_comp = { + .bLength =sizeof (ss_ep_int_desc_comp), + .bDescriptorType =USB_DT_SS_ENDPOINT_COMP , + .wBytesPerInterval =cpu_to_le16 (6 ), +}; +/* Audio Streaming OUT Interface - Alt0 */ static struct usb_interface_descriptor std_as_out_if0_desc = { .bLength =sizeof std_as_out_if0_desc,
@@ -594,7 +600,8 @@ static struct usb_descriptor_header *ss_audio_desc[] = { (struct usb_descriptor_header *)&in_feature_unit_desc, (struct usb_descriptor_header *)&io_out_ot_desc, - (struct usb_descriptor_header *)&ss_ep_int_desc, + (struct usb_descriptor_header *)&ss_ep_int_desc, + (struct usb_descriptor_header *)&ss_ep_int_desc_comp, (struct usb_descriptor_header *)&std_as_out_if0_desc, (struct usb_descriptor_header *)&std_as_out_if1_desc,
@@ -721,6 +728,7 @@ static void setup_headers(struct f_uac2_opts *opts,struct usb_ss_ep_comp_descriptor *epout_desc_comp =NULL ;struct usb_ss_ep_comp_descriptor *epin_desc_comp =NULL ;struct usb_ss_ep_comp_descriptor *epin_fback_desc_comp =NULL ; +struct usb_ss_ep_comp_descriptor *ep_int_desc_comp =NULL ;struct usb_endpoint_descriptor *epout_desc;struct usb_endpoint_descriptor *epin_desc;struct usb_endpoint_descriptor *epin_fback_desc;
@@ -748,6 +756,7 @@ static void setup_headers(struct f_uac2_opts *opts, epin_fback_desc = &ss_epin_fback_desc; epin_fback_desc_comp = &ss_epin_fback_desc_comp; ep_int_desc = &ss_ep_int_desc; + ep_int_desc_comp = &ss_ep_int_desc_comp; } i =0 ;
@@ -760,15 +769,15 @@ static void setup_headers(struct f_uac2_opts *opts, headers[i++] =USBDHDR (&out_clk_src_desc); headers[i++] =USBDHDR (&usb_out_it_desc); -if (FUOUT_EN (opts)) - headers[i++] =USBDHDR (out_feature_unit_desc); - } +if (FUOUT_EN (opts)) + headers[i++] =USBDHDR (out_feature_unit_desc); + }if (EPIN_EN (opts)) { headers[i++] =USBDHDR (&io_in_it_desc); -if (FUIN_EN (opts)) - headers[i++] =USBDHDR (in_feature_unit_desc); +if (FUIN_EN (opts)) + headers[i++] =USBDHDR (in_feature_unit_desc); headers[i++] =USBDHDR (&usb_in_ot_desc); }
@@ -776,10 +785,13 @@ static void setup_headers(struct f_uac2_opts *opts,if (EPOUT_EN (opts)) headers[i++] =USBDHDR (&io_out_ot_desc); -if (FUOUT_EN (opts) ||FUIN_EN (opts)) - headers[i++] =USBDHDR (ep_int_desc); +if (FUOUT_EN (opts) ||FUIN_EN (opts)) { + headers[i++] =USBDHDR (ep_int_desc); +if (ep_int_desc_comp) + headers[i++] =USBDHDR (ep_int_desc_comp); + } -if (EPOUT_EN (opts)) { +if (EPOUT_EN (opts)) { headers[i++] =USBDHDR (&std_as_out_if0_desc); headers[i++] =USBDHDR (&std_as_out_if1_desc); headers[i++] =USBDHDR (&as_out_hdr_desc);
drivers/usb/storage/unusual_uas.h +7 -0
@@ -62,6 +62,13 @@ UNUSUAL_DEV(0x0984, 0x0301, 0x0128, 0x0128, USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_IGNORE_UAS), +/* Reported-by: Tom Hu <[email protected]> */ +UNUSUAL_DEV (0x0b05 ,0x1932 ,0x0000 ,0x9999 , +"ASUS" , +"External HDD" , +USB_SC_DEVICE ,USB_PR_DEVICE ,NULL , +US_FL_IGNORE_UAS ), +/* Reported-by: David Webb <[email protected]> */ UNUSUAL_DEV(0x0bc2, 0x331a, 0x0000, 0x9999, "Seagate",
fs/tracefs/inode.c +23 -8
@@ -141,6 +141,8 @@ struct tracefs_mount_opts {kuid_t uid;kgid_t gid;umode_t mode; +/* Opt_* bitfield. */ +unsigned int opts; };enum {
@@ -241,6 +243,7 @@ static int tracefs_parse_options(char *data, struct tracefs_mount_opts *opts)kgid_t gid;char *p; + opts->opts =0 ; opts->mode =TRACEFS_DEFAULT_MODE ;while ((p =strsep (&data,"," )) !=NULL ) {
@@ -275,24 +278,36 @@ static int tracefs_parse_options(char *data, struct tracefs_mount_opts *opts)* but traditionally tracefs has ignored all mount options */ } + + opts->opts |=BIT (token); }return 0 ; } -static int tracefs_apply_options (struct super_block *sb) +static int tracefs_apply_options (struct super_block *sb,bool remount) {struct tracefs_fs_info *fsi = sb->s_fs_info;struct inode *inode = sb->s_root->d_inode;struct tracefs_mount_opts *opts = &fsi->mount_opts; - inode->i_mode &= ~S_IALLUGO ; - inode->i_mode |= opts->mode; +/* +* On remount, only reset mode/uid/gid if they were provided as mount +* options. +*/ + +if (!remount || opts->opts &BIT (Opt_mode)) { + inode->i_mode &= ~S_IALLUGO ; + inode->i_mode |= opts->mode; + } - inode->i_uid = opts->uid; +if (!remount || opts->opts &BIT (Opt_uid)) + inode->i_uid = opts->uid; -/* Set all the group ids to the mount option */ -set_gid (sb->s_root, opts->gid); +if (!remount || opts->opts &BIT (Opt_gid)) { +/* Set all the group ids to the mount option */ +set_gid (sb->s_root, opts->gid); + }return 0 ; }
@@ -307,7 +322,7 @@ static int tracefs_remount(struct super_block *sb, int *flags, char *data)if (err) goto fail; -tracefs_apply_options (sb); +tracefs_apply_options (sb, true); fail:return err;
@@ -359,7 +374,7 @@ static int trace_fill_super(struct super_block *sb, void *data, int silent) sb->s_op = &tracefs_super_operations; -tracefs_apply_options (sb); +tracefs_apply_options (sb, false);return 0 ;
include/linux/intel-iommu.h +6 -3
@@ -196,7 +196,6 @@#define ecap_dis (e) (((e) >> 27) & 0x1)#define ecap_nest (e) (((e) >> 26) & 0x1)#define ecap_mts (e) (((e) >> 25) & 0x1) -#define ecap_ecs (e) (((e) >> 24) & 0x1)#define ecap_iotlb_offset (e) ((((e) >> 8) & 0x3ff) * 16)#define ecap_max_iotlb_offset (e) (ecap_iotlb_offset(e) + 16)#define ecap_coherent (e) ((e) & 0x1)
@@ -264,7 +263,6 @@#define DMA_GSTS_CFIS (((u32)1) << 23)/* DMA_RTADDR_REG */ -#define DMA_RTADDR_RTT (((u64)1) << 11)#define DMA_RTADDR_SMT (((u64)1) << 10)/* CCMD_REG */
@@ -594,6 +592,7 @@ struct intel_iommu {#ifdef CONFIG_INTEL_IOMMU unsigned long *domain_ids;/* bitmap of domains */ struct dmar_domain ***domains;/* ptr to domains */ +unsigned long *copied_tables;/* bitmap of copied tables */ spinlock_t lock;/* protect context, domain ids */ struct root_entry *root_entry;/* virtual address */
@@ -713,6 +712,11 @@ static inline int first_pte_in_page(struct dma_pte *pte)return !((unsigned long )pte & ~VTD_PAGE_MASK ); } +static inline bool context_present (struct context_entry *context) +{ +return (context->lo &1 ); +} +extern struct dmar_drhd_unit *dmar_find_matched_drhd_unit (struct pci_dev *dev);extern int dmar_find_matched_atsr_unit (struct pci_dev *dev);
@@ -806,7 +810,6 @@ static inline void intel_iommu_debugfs_init(void) {}#endif /* CONFIG_INTEL_IOMMU_DEBUGFS */ extern const struct attribute_group *intel_iommu_groups[]; -bool context_present (struct context_entry *context);struct context_entry *iommu_context_addr (struct intel_iommu *iommu,u8 bus,u8 devfn,int alloc);
include/linux/irqflags.h +2 -2
@@ -20,13 +20,13 @@#ifdef CONFIG_PROVE_LOCKING extern void lockdep_softirqs_on (unsigned long ip);extern void lockdep_softirqs_off (unsigned long ip); -extern void lockdep_hardirqs_on_prepare (unsigned long ip); +extern void lockdep_hardirqs_on_prepare (void );extern void lockdep_hardirqs_on (unsigned long ip);extern void lockdep_hardirqs_off (unsigned long ip);#else static inline void lockdep_softirqs_on (unsigned long ip) { }static inline void lockdep_softirqs_off (unsigned long ip) { } -static inline void lockdep_hardirqs_on_prepare (unsigned long ip) { } +static inline void lockdep_hardirqs_on_prepare (void ) { }static inline void lockdep_hardirqs_on (unsigned long ip) { }static inline void lockdep_hardirqs_off (unsigned long ip) { }#endif
include/linux/kvm_host.h +1 -1
@@ -436,7 +436,7 @@ static __always_inline void guest_state_enter_irqoff(void) {instrumentation_begin ();trace_hardirqs_on_prepare (); -lockdep_hardirqs_on_prepare (CALLER_ADDR0 ); +lockdep_hardirqs_on_prepare ();instrumentation_end ();guest_context_enter_irqoff ();
include/linux/nfs_fs.h +3 -1
@@ -593,7 +593,9 @@ bool nfs_commit_end(struct nfs_mds_commit_info *cinfo);static inline int nfs_have_writebacks (struct inode *inode) { -return atomic_long_read (&NFS_I (inode)->nrequests) !=0 ; +if (S_ISREG (inode->i_mode)) +return atomic_long_read (&NFS_I (inode)->nrequests) !=0 ; +return 0 ; }/*
include/linux/sched/task_stack.h +1 -1
@@ -16,7 +16,7 @@* try_get_task_stack() instead. task_stack_page will return a pointer * that could get freed out from under you. */ -static inline void *task_stack_page (const struct task_struct *task) +static __always_inline void *task_stack_page(const struct task_struct *task) {return task->stack; }
kernel/entry/common.c +3 -3
@@ -124,7 +124,7 @@ static __always_inline void __exit_to_user_mode(void) {instrumentation_begin ();trace_hardirqs_on_prepare (); -lockdep_hardirqs_on_prepare (CALLER_ADDR0 ); +lockdep_hardirqs_on_prepare ();instrumentation_end ();user_enter_irqoff ();
@@ -412,7 +412,7 @@ noinstr void irqentry_exit(struct pt_regs *regs, irqentry_state_t state)instrumentation_begin ();/* Tell the tracer that IRET will enable interrupts */ trace_hardirqs_on_prepare (); -lockdep_hardirqs_on_prepare (CALLER_ADDR0 ); +lockdep_hardirqs_on_prepare ();instrumentation_end ();rcu_irq_exit ();lockdep_hardirqs_on (CALLER_ADDR0 );
@@ -465,7 +465,7 @@ void noinstr irqentry_nmi_exit(struct pt_regs *regs, irqentry_state_t irq_state)ftrace_nmi_exit ();if (irq_state.lockdep) {trace_hardirqs_on_prepare (); -lockdep_hardirqs_on_prepare (CALLER_ADDR0 ); +lockdep_hardirqs_on_prepare (); }instrumentation_end ();
kernel/locking/lockdep.c +8 -14
@@ -1368,7 +1368,7 @@ static struct lock_list *alloc_list_entry(void)*/ static int add_lock_to_list (struct lock_class *this,struct lock_class *links_to,struct list_head *head, -unsigned long ip,u16 distance,u8 dep, +u16 distance,u8 dep,const struct lock_trace *trace) {struct lock_list *entry;
@@ -3121,19 +3121,15 @@ check_prev_add(struct task_struct *curr, struct held_lock *prev,* to the previous lock's dependency list: */ ret =add_lock_to_list (hlock_class (next),hlock_class (prev), - &hlock_class (prev)->locks_after, - next->acquire_ip, distance, -calc_dep (prev, next), - *trace); + &hlock_class (prev)->locks_after, distance, +calc_dep (prev, next), *trace);if (!ret)return 0 ; ret =add_lock_to_list (hlock_class (prev),hlock_class (next), - &hlock_class (next)->locks_before, - next->acquire_ip, distance, -calc_depb (prev, next), - *trace); + &hlock_class (next)->locks_before, distance, +calc_depb (prev, next), *trace);if (!ret)return 0 ;
@@ -4224,14 +4220,13 @@ static void __trace_hardirqs_on_caller(void)/** * lockdep_hardirqs_on_prepare - Prepare for enabling interrupts -* @ip: Caller address * * Invoked before a possible transition to RCU idle from exit to user or * guest mode. This ensures that all RCU operations are done before RCU * stops watching. After the RCU transition lockdep_hardirqs_on() has to be * invoked to set the final state. */ -void lockdep_hardirqs_on_prepare (unsigned long ip) +void lockdep_hardirqs_on_prepare (void ) {if (unlikely (!debug_locks))return ;
@@ -4828,8 +4823,7 @@ EXPORT_SYMBOL_GPL(__lockdep_no_validate__);static void print_lock_nested_lock_not_held (struct task_struct *curr, -struct held_lock *hlock, -unsigned long ip) +struct held_lock *hlock) {if (!debug_locks_off ())return ;
@@ -5005,7 +4999,7 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass, chain_key =iterate_chain_key (chain_key,hlock_id (hlock));if (nest_lock && !__lock_is_held (nest_lock,-1 )) { -print_lock_nested_lock_not_held (curr, hlock, ip); +print_lock_nested_lock_not_held (curr, hlock);return 0 ; }
kernel/sched/idle.c +1 -1
@@ -105,7 +105,7 @@ void __cpuidle default_idle_call(void)* last -- this is very similar to the entry code. */ trace_hardirqs_on_prepare (); -lockdep_hardirqs_on_prepare (_THIS_IP_); +lockdep_hardirqs_on_prepare ();rcu_idle_enter ();lockdep_hardirqs_on (_THIS_IP_);
kernel/trace/trace_preemptirq.c +4 -4
@@ -46,7 +46,7 @@ void trace_hardirqs_on(void)this_cpu_write (tracing_irq_cpu,0 ); } -lockdep_hardirqs_on_prepare (CALLER_ADDR0 ); +lockdep_hardirqs_on_prepare ();lockdep_hardirqs_on (CALLER_ADDR0 ); }EXPORT_SYMBOL (trace_hardirqs_on);
@@ -94,15 +94,15 @@ __visible void trace_hardirqs_on_caller(unsigned long caller_addr)this_cpu_write (tracing_irq_cpu,0 ); } -lockdep_hardirqs_on_prepare (CALLER_ADDR0 ); -lockdep_hardirqs_on (CALLER_ADDR0 ); +lockdep_hardirqs_on_prepare (); +lockdep_hardirqs_on (caller_addr); }EXPORT_SYMBOL (trace_hardirqs_on_caller);NOKPROBE_SYMBOL (trace_hardirqs_on_caller); __visible void trace_hardirqs_off_caller(unsigned long caller_addr) { -lockdep_hardirqs_off (CALLER_ADDR0 ); +lockdep_hardirqs_off (caller_addr);if (!this_cpu_read (tracing_irq_cpu)) {this_cpu_write (tracing_irq_cpu,1 );
mm/mmap.c +7 -2
@@ -2638,6 +2638,7 @@ static void unmap_region(struct mm_struct *mm, {struct vm_area_struct *next =vma_next (mm, prev);struct mmu_gather tlb; +struct vm_area_struct *cur_vma;lru_add_drain ();tlb_gather_mmu (&tlb, mm);
@@ -2652,8 +2653,12 @@ static void unmap_region(struct mm_struct *mm,* concurrent flush in this region has to be coming through the rmap, * and we synchronize against that using the rmap lock. */ -if ((vma->vm_flags & (VM_PFNMAP |VM_MIXEDMAP )) !=0 ) -tlb_flush_mmu (&tlb); +for (cur_vma = vma; cur_vma; cur_vma = cur_vma->vm_next) { +if ((cur_vma->vm_flags & (VM_PFNMAP |VM_MIXEDMAP )) !=0 ) { +tlb_flush_mmu (&tlb); +break ; + } + }free_pgtables (&tlb, vma, prev ? prev->vm_end :FIRST_USER_ADDRESS , next ? next->vm_start :USER_PGTABLES_CEILING );
net/dsa/tag_hellcreek.c +1 -1
@@ -45,7 +45,7 @@ static struct sk_buff *hellcreek_rcv(struct sk_buff *skb, skb->dev =dsa_master_find_slave (dev,0 , port);if (!skb->dev) { -netdev_warn (dev,"Failed to get source port: %d\n" , port); +netdev_warn_once (dev,"Failed to get source port: %d\n" , port);return NULL ; }