5.15.69-rc1 review
Greg Kroah-Hartman
maintainercover 5.15.69-rc1 review
This is the start of the stable review cycle for the 5.15.69 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 18 Sep 2022 10:04:31 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.15.69-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.15.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 5.15.69-rc1
Jarrah Gosbell <[email protected]>
Input: goodix - add compatible string for GT1158
Sindhu-Devale <[email protected]>
RDMA/irdma: Use s/g array in post send only when its valid
Jing Leng <[email protected]>
usb: gadget: f_uac2: fix superspeed transfer
Colin Ian King <[email protected]>
usb: gadget: f_uac2: clean up some inconsistent indenting
Mathew McBride <[email protected]>
soc: fsl: select FSL_GUTS driver for DPIO
Jann Horn <[email protected]>
mm: Fix TLB flush for not-first PFNMAP mappings in unmap_region()
Hu Xiaoying <[email protected]>
usb: storage: Add ASUS <0x0b05:0x1932> to IGNORE_UAS
Hans de Goede <[email protected]>
platform/x86: acer-wmi: Acer Aspire One AOD270/Packard Bell Dot keymap fixes
Yu Zhe <[email protected]>
perf/arm_pmu_platform: fix tests for platform_get_irq() failure
Kurt Kanzenbach <[email protected]>
net: dsa: hellcreek: Print warning only once
Chengming Gui <[email protected]>
drm/amd/amdgpu: skip ucode loading if ucode_size == 0
Maurizio Lombardi <[email protected]>
nvmet-tcp: fix unhandled tcp states in nvmet_tcp_state_change()
Greg Tulli <[email protected]>
Input: iforce - add support for Boeder Force Feedback Wheel
Li Qiong <[email protected]>
ieee802154: cc2520: add rc code in cc2520_tx()
Wei Yongjun <[email protected]>
gpio: mockup: remove gpio debugfs when remove device
Kai-Heng Feng <[email protected]>
tg3: Disable tg3 device on system reboot to avoid triggering AER
Even Xu <[email protected]>
hid: intel-ish-hid: ishtp: Fix ishtp client sending disordered message
Jason Wang <[email protected]>
HID: ishtp-hid-clientHID: ishtp-hid-client: Fix comment typo
Krzysztof Kozlowski <[email protected]>
dt-bindings: iio: gyroscope: bosch,bmg160: correct number of pins
Christophe JAILLET <[email protected]>
hwmon: (pmbus) Use dev_err_probe() to filter -EPROBE_DEFER error messages
Rob Clark <[email protected]>
drm/msm/rd: Fix FIFO-full deadlock
Maximilian Luz <[email protected]>
platform/surface: aggregator_registry: Add support for Surface Laptop Go 2
Ondrej Jirman <[email protected]>
Input: goodix - add support for GT1158
Lu Baolu <[email protected]>
iommu/vt-d: Fix kdump kernels boot failure with scalable mode
Brian Norris <[email protected]>
tracefs: Only clobber mode/uid/gid on remount if asked
Yipeng Zou <[email protected]>
tracing: hold caller_addr to hardirq_{enable,disable}_ip
Borislav Petkov <[email protected]>
task_stack, x86/cea: Force-inline stack helpers
Borislav Petkov <[email protected]>
x86/mm: Force-inline __phys_addr_nodebug()
Nick Desaulniers <[email protected]>
lockdep: Fix -Wunused-parameter for _THIS_IP_
Claudiu Beznea <[email protected]>
ARM: dts: at91: sama7g5ek: specify proper regulator output ranges
Claudiu Beznea <[email protected]>
ARM: dts: at91: fix low limit for CPU regulator
Marco Felsch <[email protected]>
ARM: dts: imx6qdl-kontron-samx6i: fix spi-flash compatible
Krzysztof Kozlowski <[email protected]>
ARM: dts: imx: align SPI NOR node name with dtschema
Chuanhong Guo <[email protected]>
ACPI: resource: skip IRQ override on AMD Zen platforms
Dave Wysochanski <[email protected]>
NFS: Fix WARN_ON due to unionization of nfs_inode.nrequests
-------------
Diffstat:
.../bindings/iio/gyroscope/bosch,bmg160.yaml | 2 + Documentation/input/joydev/joystick.rst | 1 + Makefile | 4 +- 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 +- .../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/hwmon/pmbus/pmbus_core.c | 9 +- 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 +- .../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 +- 72 files changed, 283 insertions(+), 202 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/35 NFS: Fix WARN_ON due to unionization of nfs_inode.nrequests
From: Dave Wysochanski <[email protected]>
commit 0ebeebcf59601bcfa0284f4bb7abdec051eb856d upstream.
Fixes the following WARN_ON
WARNING: CPU: 2 PID: 18678 at fs/nfs/inode.c:123 nfs_clear_inode+0x3b/0x50 [nfs] ... Call Trace: nfs4_evict_inode+0x57/0x70 [nfsv4] evict+0xd1/0x180 dispose_list+0x48/0x60 evict_inodes+0x156/0x190 generic_shutdown_super+0x37/0x110 nfs_kill_super+0x1d/0x40 [nfs] deactivate_locked_super+0x36/0xa0
--- include/linux/nfs_fs.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
include/linux/nfs_fs.h +3 -1
@@ -593,7 +593,9 @@ bool nfs_commit_end(struct nfs_mds_commistatic 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 ; }/*
Greg Kroah-Hartman
maintainerPATCH 2/35 ACPI: resource: skip IRQ override on AMD Zen platforms
In reply to Greg Kroah-HartmanFrom: Chuanhong Guo <[email protected]>
commit 9946e39fe8d0a5da9eb947d8e40a7ef204ba016e upstream.
IRQ override isn't needed on modern AMD Zen systems. There's an active low keyboard IRQ on AMD Ryzen 6000 and it will stay this way on newer platforms. This IRQ override breaks keyboards for almost all Ryzen 6000 laptops currently on the market.
Skip this IRQ override for all AMD Zen platforms because this IRQ override is supposed to be a workaround for buggy ACPI DSDT and we can't have a long list of all future AMD CPUs/Laptops in the kernel code. If a device with buggy ACPI DSDT shows up, a separated list containing just them should be created.
--- drivers/acpi/resource.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
drivers/acpi/resource.c +10 -0
@@ -416,6 +416,16 @@ static bool acpi_dev_irq_override(u32 gs {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];
Greg Kroah-Hartman
maintainerPATCH 3/35 ARM: dts: imx: align SPI NOR node name with dtschema
In reply to Greg Kroah-HartmanFrom: Krzysztof Kozlowski <[email protected]>
[ Upstream commit ba9fe460dc2cfe90dc115b22af14dd3f13cffa0f ]
The node names should be generic and SPI NOR dtschema expects "flash".
Stable-dep-of: af7d78c95701 ("ARM: dts: imx6qdl-kontron-samx6i: fix spi-flash compatible")
--- 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 | 2 +- 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 +- 32 files changed, 34 insertions(+), 34 deletions(-)
arch/arm/boot/dts/imx28-evk.dts +1 -1
@@ -129,7 +129,7 @@ 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 @@ 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 @@ 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 @@ }; &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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ }; &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 @@ 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 @@ 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 @@ 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 +1 -1
@@ -248,7 +248,7 @@ status = "okay"; /* default boot source: workaround #1 for errata ERR006282 */ - smarc_flash: spi-flash@0 { + smarc_flash: flash@0 { compatible = "winbond,w25q16dw", "jedec,spi-nor"; reg = <0>; spi-max-frequency = <20000000>;
arch/arm/boot/dts/imx6qdl-nit6xlite.dtsi +1 -1
@@ -179,7 +179,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ pinctrl-0 = <&pinctrl_qspi2>; status = "okay"; - flash0: s25fl128s@0 { + flash0: flash@0 { reg = <0>; #address-cells = <1>; #size-cells = <1>;
@@ -133,7 +133,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ }; &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 @@ }; &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 @@ 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 @@ }; &qspi { - spi-flash@0 { + flash@0 { #address-cells = <1>; #size-cells = <1>; compatible = "spi-nand";
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 4/35 ARM: dts: imx6qdl-kontron-samx6i: fix spi-flash compatible
In reply to Greg Kroah-HartmanFrom: Marco Felsch <[email protected]>
[ Upstream commit af7d78c957017f8b3a0986769f6f18e57f9362ea ]
Drop the "winbond,w25q16dw" compatible since it causes to set the MODALIAS to w25q16dw which is not specified within spi-nor id table. Fix this by use the common "jedec,spi-nor" compatible.
--- arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi +1 -1
@@ -249,7 +249,7 @@ /* default boot source: workaround #1 for errata ERR006282 */ smarc_flash: flash@0 { - compatible = "winbond,w25q16dw", "jedec,spi-nor"; + compatible = "jedec,spi-nor"; reg = <0>; spi-max-frequency = <20000000>; };
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 5/35 ARM: dts: at91: fix low limit for CPU regulator
In reply to Greg Kroah-HartmanFrom: Claudiu Beznea <[email protected]>
[ Upstream commit 279d626d737486363233b9b99c30b5696c389b41 ]
Fix low limit for CPU regulator. Otherwise setting voltages lower than 1.125V will not be allowed (CPUFreq will not be allowed to set proper voltages on proper frequencies).
Stable-dep-of: 7f41d52ced9e ("ARM: dts: at91: sama7g5ek: specify proper regulator output ranges")
--- arch/arm/boot/dts/at91-sama7g5ek.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/at91-sama7g5ek.dts +1 -1
@@ -228,7 +228,7 @@ vddcpu: VDD_OTHER { regulator-name = "VDD_OTHER"; - regulator-min-microvolt = <1125000>; + regulator-min-microvolt = <1050000>; regulator-max-microvolt = <1850000>; regulator-initial-mode = <2>; regulator-allowed-modes = <2>, <4>;
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 6/35 ARM: dts: at91: sama7g5ek: specify proper regulator output ranges
In reply to Greg Kroah-HartmanFrom: Claudiu Beznea <[email protected]>
[ Upstream commit 7f41d52ced9e1b7ed4ff8e1ae9cacbf46b64e6db ]
Min and max output ranges of regulators need to satisfy board requirements not PMIC requirements. Thus adjust device tree to cope with this.
--- arch/arm/boot/dts/at91-sama7g5ek.dts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
arch/arm/boot/dts/at91-sama7g5ek.dts +9 -9
@@ -169,8 +169,8 @@ 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 @@ 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 @@ 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;
@@ -229,7 +229,7 @@ vddcpu: VDD_OTHER { regulator-name = "VDD_OTHER"; regulator-min-microvolt = <1050000>; - regulator-max-microvolt = <1850000>; + regulator-max-microvolt = <1250000>; regulator-initial-mode = <2>; regulator-allowed-modes = <2>, <4>; regulator-ramp-delay = <3125>;
@@ -248,8 +248,8 @@ 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 {
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 7/35 lockdep: Fix -Wunused-parameter for _THIS_IP_
In reply to Greg Kroah-HartmanFrom: Nick Desaulniers <[email protected]>
[ Upstream commit 8b023accc8df70e72f7704d29fead7ca914d6837 ]
While looking into a bug related to the compiler's handling of addresses of labels, I noticed some uses of _THIS_IP_ seemed unused in lockdep. Drive by cleanup.
-Wunused-parameter:kernel/locking/lockdep.c:1383:22: warning: unused parameter 'ip' kernel/locking/lockdep.c:4246:48: warning: unused parameter 'ip' kernel/locking/lockdep.c:4844:19: warning: unused parameter 'ip'
Stable-dep-of: 54c3931957f6 ("tracing: hold caller_addr to hardirq_{enable,disable}_ip")
--- arch/arm64/kernel/entry-common.c | 8 ++++---- arch/x86/kvm/x86.h | 2 +- include/linux/irqflags.h | 4 ++-- include/linux/kvm_host.h | 2 +- kernel/entry/common.c | 6 +++--- kernel/locking/lockdep.c | 22 ++++++++-------------- kernel/sched/idle.c | 2 +- kernel/trace/trace_preemptirq.c | 4 ++-- 8 files changed, 22 insertions(+), 28 deletions(-)
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/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 ();
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 ();
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 +2 -2
@@ -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,7 +94,7 @@ __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_prepare ();lockdep_hardirqs_on (CALLER_ADDR0 ); }EXPORT_SYMBOL (trace_hardirqs_on_caller);
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 8/35 x86/mm: Force-inline __phys_addr_nodebug()
In reply to Greg Kroah-HartmanFrom: Borislav Petkov <[email protected]>
[ Upstream commit ace1a98519270c586c0d4179419292df67441cd1 ]
Fix:
vmlinux.o: warning: objtool: __sev_es_nmi_complete()+0x8b: call to __phys_addr_nodebug() leaves .noinstr.text section
Stable-dep-of: 54c3931957f6 ("tracing: hold caller_addr to hardirq_{enable,disable}_ip")
--- arch/x86/include/asm/page_64.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
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;
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 9/35 task_stack, x86/cea: Force-inline stack helpers
In reply to Greg Kroah-HartmanFrom: Borislav Petkov <[email protected]>
[ Upstream commit e87f4152e542610d0b4c6c8548964a68a59d2040 ]
Force-inline two stack helpers to fix the following objtool warnings:
vmlinux.o: warning: objtool: in_task_stack()+0xc: call to task_stack_page() leaves .noinstr.text section vmlinux.o: warning: objtool: in_entry_stack()+0x10: call to cpu_entry_stack() leaves .noinstr.text section
Stable-dep-of: 54c3931957f6 ("tracing: hold caller_addr to hardirq_{enable,disable}_ip")
--- arch/x86/include/asm/cpu_entry_area.h | 2 +- include/linux/sched/task_stack.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
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; }
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; }
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 10/35 tracing: hold caller_addr to hardirq_{enable,disable}_ip
In reply to Greg Kroah-HartmanFrom: Yipeng Zou <[email protected]>
[ Upstream commit 54c3931957f6a6194d5972eccc36d052964b2abe ]
Currently, The arguments passing to lockdep_hardirqs_{on,off} was fixed in CALLER_ADDR0.
The function trace_hardirqs_on_caller should have been intended to use caller_addr to represent the address that caller wants to be traced.
For example, lockdep log in riscv showing the last {enabled,disabled} at __trace_hardirqs_{on,off} all the time(if called by):
[ 57.853175] hardirqs last enabled at (2519): __trace_hardirqs_on+0xc/0x14 [ 57.853848] hardirqs last disabled at (2520): __trace_hardirqs_off+0xc/0x14
After use trace_hardirqs_xx_caller, we can get more effective information:
[ 53.781428] hardirqs last enabled at (2595): restore_all+0xe/0x66 [ 53.782185] hardirqs last disabled at (2596): ret_from_exception+0xa/0x10
--- kernel/trace/trace_preemptirq.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
kernel/trace/trace_preemptirq.c +2 -2
@@ -95,14 +95,14 @@ __visible void trace_hardirqs_on_caller(unsigned long caller_addr) }lockdep_hardirqs_on_prepare (); -lockdep_hardirqs_on (CALLER_ADDR0 ); +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 );
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 11/35 tracefs: Only clobber mode/uid/gid on remount if asked
In reply to Greg Kroah-HartmanFrom: Brian Norris <[email protected]>
[ Upstream commit 47311db8e8f33011d90dee76b39c8886120cdda4 ]
Users may have explicitly configured their tracefs permissions; we shouldn't overwrite those just because a second mount appeared.
Only clobber if the options were provided at mount time.
Note: the previous behavior was especially surprising in the presence of automounted /sys/kernel/debug/tracing/.
Existing behavior:
## Pre-existing status: tracefs is 0755.
# stat -c '%A' /sys/kernel/tracing/ drwxr-xr-x
## (Re)trigger the automount.
# umount /sys/kernel/debug/tracing # stat -c '%A' /sys/kernel/debug/tracing/. drwx------
## Unexpected: the automount changed mode for other mount instances.
# stat -c '%A' /sys/kernel/tracing/ drwx------
New behavior (after this change):
## Pre-existing status: tracefs is 0755.
# stat -c '%A' /sys/kernel/tracing/ drwxr-xr-x
## (Re)trigger the automount.
# umount /sys/kernel/debug/tracing # stat -c '%A' /sys/kernel/debug/tracing/. drwxr-xr-x
## Expected: the automount does not change other mount instances.
# stat -c '%A' /sys/kernel/tracing/ drwxr-xr-x
--- fs/tracefs/inode.c | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-)
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 ;
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 12/35 iommu/vt-d: Fix kdump kernels boot failure with scalable mode
In reply to Greg Kroah-HartmanFrom: Lu Baolu <[email protected]>
[ Upstream commit 0c5f6c0d8201a809a6585b07b6263e9db2c874a3 ]
The translation table copying code for kdump kernels is currently based on the extended root/context entry formats of ECS mode defined in older VT-d v2.5, and doesn't handle the scalable mode formats. This causes the kexec capture kernel boot failure with DMAR faults if the IOMMU was enabled in scalable mode by the previous kernel.
The ECS mode has already been deprecated by the VT-d spec since v3.0 and Intel IOMMU driver doesn't support this mode as there's no real hardware implementation. Hence this converts ECS checking in copying table code into scalable mode.
The existing copying code consumes a bit in the context entry as a mark of copied entry. It needs to work for the old format as well as for the extended context entries. As it's hard to find such a common bit for both legacy and scalable mode context entries. This replaces it with a per- IOMMU bitmap.
--- drivers/iommu/intel/iommu.c | 100 ++++++++++++++++-------------------- include/linux/intel-iommu.h | 9 ++-- 2 files changed, 50 insertions(+), 59 deletions(-)
drivers/iommu/intel/iommu.c +44 -56
@@ -191,38 +191,6 @@ static phys_addr_t root_entry_uctp(struct root_entry *re)return re->hi &VTD_PAGE_MASK ; } -static inline void context_clear_pasid_enable (struct context_entry *context) -{ - context->lo &= ~(1ULL <<11 ); -} - -static inline bool context_pasid_enabled (struct context_entry *context) -{ -return !!(context->lo & (1ULL <<11 )); -} - -static inline void context_set_copied (struct context_entry *context) -{ - context->hi |= (1ull <<3 ); -} - -static inline bool context_copied (struct context_entry *context) -{ -return !!(context->hi & (1ULL <<3 )); -} - -static inline bool __context_present (struct context_entry *context) -{ -return (context->lo &1 ); -} - -bool context_present (struct context_entry *context) -{ -return context_pasid_enabled (context) ? -__context_present (context) : -__context_present (context) && !context_copied (context); -} -static inline void context_set_present (struct context_entry *context) { context->lo |=1 ;
@@ -270,6 +238,26 @@ static inline void context_clear_entry(struct context_entry *context) context->hi =0 ; } +static inline bool context_copied (struct intel_iommu *iommu,u8 bus,u8 devfn) +{ +if (!iommu->copied_tables) +return false; + +return test_bit (((long )bus <<8 ) | devfn, iommu->copied_tables); +} + +static inline void +set_context_copied (struct intel_iommu *iommu,u8 bus,u8 devfn) +{ +set_bit (((long )bus <<8 ) | devfn, iommu->copied_tables); +} + +static inline void +clear_context_copied (struct intel_iommu *iommu,u8 bus,u8 devfn) +{ +clear_bit (((long )bus <<8 ) | devfn, iommu->copied_tables); +} +/* * This domain is a statically identity mapping domain. * 1. This domain creats a static 1:1 mapping to all usable memory.
@@ -792,6 +780,13 @@ struct context_entry *iommu_context_addr(struct intel_iommu *iommu, u8 bus,struct context_entry *context;u64 *entry; +/* +* Except that the caller requested to allocate a new entry, +* returning a copied context entry makes no sense. +*/ +if (!alloc &&context_copied (iommu, bus, devfn)) +return NULL ; + entry = &root->lo;if (sm_supported (iommu)) {if (devfn >=0x80 ) {
@@ -1899,6 +1894,11 @@ static void free_dmar_iommu(struct intel_iommu *iommu) iommu->domain_ids =NULL ; } +if (iommu->copied_tables) { +bitmap_free (iommu->copied_tables); + iommu->copied_tables =NULL ; + } + g_iommus[iommu->seq_id] =NULL ;/* free context mapping */
@@ -2107,7 +2107,7 @@ static int domain_context_mapping_one(struct dmar_domain *domain, goto out_unlock; ret =0 ; -if (context_present (context)) +if (context_present (context) && !context_copied (iommu, bus, devfn)) goto out_unlock;/*
@@ -2119,7 +2119,7 @@ static int domain_context_mapping_one(struct dmar_domain *domain,* in-flight DMA will exist, and we don't need to worry anymore * hereafter. */ -if (context_copied (context)) { +if (context_copied (iommu, bus, devfn)) {u16 did_old =context_domain_id (context);if (did_old <cap_ndoms (iommu->cap)) {
@@ -2130,6 +2130,8 @@ static int domain_context_mapping_one(struct dmar_domain *domain, iommu->flush.flush_iotlb (iommu, did_old,0 ,0 ,DMA_TLB_DSI_FLUSH ); } + +clear_context_copied (iommu, bus, devfn); }context_clear_entry (context);
@@ -3024,32 +3026,14 @@ static int copy_context_table(struct intel_iommu *iommu,/* Now copy the context entry */ memcpy (&ce, old_ce + idx,sizeof (ce)); -if (!__context_present (&ce)) +if (!context_present (&ce))continue ; did =context_domain_id (&ce);if (did >=0 && did <cap_ndoms (iommu->cap))set_bit (did, iommu->domain_ids); -/* -* We need a marker for copied context entries. This -* marker needs to work for the old format as well as -* for extended context entries. -* -* Bit 67 of the context entry is used. In the old -* format this bit is available to software, in the -* extended format it is the PGE bit, but PGE is ignored -* by HW if PASIDs are disabled (and thus still -* available). -* -* So disable PASIDs first and then mark the entry -* copied. This means that we don't copy PASID -* translations from the old kernel, but this is fine as -* faults there are not fatal. -*/ -context_clear_pasid_enable (&ce); -context_set_copied (&ce); - +set_context_copied (iommu, bus, devfn); new_ce[idx] = ce; }
@@ -3076,8 +3060,8 @@ static int copy_translation_tables(struct intel_iommu *iommu)bool new_ext, ext; rtaddr_reg =dmar_readq (iommu->reg +DMAR_RTADDR_REG ); - ext = !!(rtaddr_reg &DMA_RTADDR_RTT ); - new_ext = !!ecap_ecs (iommu->ecap); + ext = !!(rtaddr_reg &DMA_RTADDR_SMT ); + new_ext = !!sm_supported (iommu);/* * The RTT bit can only be changed when translation is disabled,
@@ -3088,6 +3072,10 @@ static int copy_translation_tables(struct intel_iommu *iommu)if (new_ext != ext)return -EINVAL ; + iommu->copied_tables =bitmap_zalloc (BIT_ULL (16 ),GFP_KERNEL ); +if (!iommu->copied_tables) +return -ENOMEM ; + old_rt_phys = rtaddr_reg &VTD_PAGE_MASK ;if (!old_rt_phys)return -EINVAL ;
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);
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 13/35 Input: goodix - add support for GT1158
In reply to Greg Kroah-HartmanFrom: Ondrej Jirman <[email protected]>
[ Upstream commit 425fe4709c76e35f93f4c0e50240f0b61b2a2e54 ]
This controller is used by PinePhone and PinePhone Pro. Support for the PinePhone Pro will be added in a later patch set.
--- drivers/input/touchscreen/goodix.c | 1 + 1 file changed, 1 insertion(+)
drivers/input/touchscreen/goodix.c +1 -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 },
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 14/35 platform/surface: aggregator_registry: Add support for Surface Laptop Go 2
In reply to Greg Kroah-HartmanFrom: Maximilian Luz <[email protected]>
[ Upstream commit 84b8e403435c8fb94b872309673764a447961e00 ]
The Surface Laptop Go 2 seems to have the same SAM client devices as the Surface Laptop Go 1, so re-use its node group.
--- drivers/platform/surface/surface_aggregator_registry.c | 3 +++ 1 file changed, 3 insertions(+)
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 },
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 15/35 drm/msm/rd: Fix FIFO-full deadlock
In reply to Greg Kroah-HartmanFrom: Rob Clark <[email protected]>
[ Upstream commit 174974d8463b77c2b4065e98513adb204e64de7d ]
If the previous thing cat'ing $debugfs/rd left the FIFO full, then subsequent open could deadlock in rd_write() (because open is blocked, not giving a chance for read() to consume any data in the FIFO). Also it is generally a good idea to clear out old data from the FIFO.
Patchwork: https://patchwork.freedesktop.org/patch/496706/
--- drivers/gpu/drm/msm/msm_rd.c | 3 +++ 1 file changed, 3 insertions(+)
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. */
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 16/35 hwmon: (pmbus) Use dev_err_probe() to filter -EPROBE_DEFER error messages
In reply to Greg Kroah-HartmanFrom: Christophe JAILLET <[email protected]>
[ Upstream commit 09e52d17b72d3a4bf6951a90ccd8c97fae04e5cf ]
devm_regulator_register() can return -EPROBE_DEFER, so better use dev_err_probe() instead of dev_err(), it is less verbose in such a case.
It is also more informative, which can't hurt.
--- drivers/hwmon/pmbus/pmbus_core.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
drivers/hwmon/pmbus/pmbus_core.c +4 -5
@@ -2463,11 +2463,10 @@ static int pmbus_regulator_register(struct pmbus_data *data) rdev =devm_regulator_register (dev, &info->reg_desc[i], &config); -if (IS_ERR (rdev)) { -dev_err (dev,"Failed to register %s regulator\n" , - info->reg_desc[i].name); -return PTR_ERR (rdev); - } +if (IS_ERR (rdev)) +return dev_err_probe (dev,PTR_ERR (rdev), +"Failed to register %s regulator\n" , + info->reg_desc[i].name); }return 0 ;
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 17/35 dt-bindings: iio: gyroscope: bosch,bmg160: correct number of pins
In reply to Greg Kroah-HartmanFrom: Krzysztof Kozlowski <[email protected]>
[ Upstream commit 767470209cedbe2cc72ba38d77c9f096d2c7694c ]
BMG160 has two interrupt pins to which interrupts can be freely mapped. Correct the schema to express such case and fix warnings like:
qcom/msm8916-alcatel-idol347.dtb: gyroscope@68: interrupts: [[97, 1], [98, 1]] is too long
However the basic issue still persists - the interrupts should come in a defined order.
--- .../devicetree/bindings/iio/gyroscope/bosch,bmg160.yaml | 2 ++ 1 file changed, 2 insertions(+)
Documentation/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
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 18/35 HID: ishtp-hid-clientHID: ishtp-hid-client: Fix comment typo
In reply to Greg Kroah-HartmanFrom: Jason Wang <[email protected]>
[ Upstream commit 94553f8a218540d676efbf3f7827ed493d1057cf ]
The double `like' is duplicated in the comment, remove one.
--- drivers/hid/intel-ish-hid/ishtp-hid.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
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 */
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 19/35 hid: intel-ish-hid: ishtp: Fix ishtp client sending disordered message
In reply to Greg Kroah-HartmanFrom: Even Xu <[email protected]>
[ Upstream commit e1fa076706209cc447d7a2abd0843a18277e5ef7 ]
There is a timing issue captured during ishtp client sending stress tests. It was observed during stress tests that ISH firmware is getting out of ordered messages. This is a rare scenario as the current set of ISH client drivers don't send much data to firmware. But this may not be the case going forward.
When message size is bigger than IPC MTU, ishtp splits the message into fragments and uses serialized async method to send message fragments. The call stack:ishtp_cl_send_msg_ipc->ipc_tx_callback(first fregment)-> ishtp_send_msg(with callback)->write_ipc_to_queue-> write_ipc_from_queue->callback->ipc_tx_callback(next fregment)......
When an ipc write complete interrupt is received, driver also calls write_ipc_from_queue->ipc_tx_callback in ISR to start sending of next fragment.
Through ipc_tx_callback uses spin_lock to protect message splitting, as the serialized sending method will call back to ipc_tx_callback again, so it doesn't put sending under spin_lock, it causes driver cannot guarantee all fragments be sent in order.
Considering this scenario:ipc_tx_callback just finished a fragment splitting, and not call ishtp_send_msg yet, there is a write complete interrupt happens, then ISR->write_ipc_from_queue ->ipc_tx_callback->ishtp_send_msg->write_ipc_to_queue......
Because ISR has higher exec priority than normal thread, this causes the new fragment be sent out before previous fragment. This disordered message causes invalid message to firmware.
The solution is, to send fragments synchronously:
Use ishtp_write_message writing fragments into tx queue directly one by one, instead of ishtp_send_msg only writing one fragment with completion callback. As no completion callback be used, so change ipc_tx_callback to ipc_tx_send.
--- drivers/hid/intel-ish-hid/ishtp/client.c | 68 ++++++++++++++---------- 1 file changed, 39 insertions(+), 29 deletions(-)
drivers/hid/intel-ish-hid/ishtp/client.c +39 -29
@@ -626,13 +626,14 @@ static void ishtp_cl_read_complete(struct ishtp_cl_rb *rb) }/** -* ipc_tx_callback() - IPC tx callback function +* ipc_tx_send() - IPC tx send function * @prm: Pointer to client device instance * -* Send message over IPC either first time or on callback on previous message -* completion +* Send message over IPC. Message will be split into fragments +* if message size is bigger than IPC FIFO size, and all +* fragments will be sent one by one. */ -static void ipc_tx_callback (void *prm) +static void ipc_tx_send (void *prm) {struct ishtp_cl *cl = prm;struct ishtp_cl_tx_ring *cl_msg;
@@ -677,32 +678,41 @@ static void ipc_tx_callback(void *prm) list); rem = cl_msg->send_buf.size - cl->tx_offs; - ishtp_hdr.host_addr = cl->host_client_id; - ishtp_hdr.fw_addr = cl->fw_client_id; - ishtp_hdr.reserved =0 ; - pmsg = cl_msg->send_buf.data + cl->tx_offs; +while (rem >0 ) { + ishtp_hdr.host_addr = cl->host_client_id; + ishtp_hdr.fw_addr = cl->fw_client_id; + ishtp_hdr.reserved =0 ; + pmsg = cl_msg->send_buf.data + cl->tx_offs; + +if (rem <= dev->mtu) { +/* Last fragment or only one packet */ + ishtp_hdr.length = rem; + ishtp_hdr.msg_complete =1 ; +/* Submit to IPC queue with no callback */ +ishtp_write_message (dev, &ishtp_hdr, pmsg); + cl->tx_offs =0 ; + cl->sending =0 ; -if (rem <= dev->mtu) { - ishtp_hdr.length = rem; - ishtp_hdr.msg_complete =1 ; - cl->sending =0 ; -list_del_init (&cl_msg->list);/* Must be before write */ -spin_unlock_irqrestore (&cl->tx_list_spinlock, tx_flags); -/* Submit to IPC queue with no callback */ -ishtp_write_message (dev, &ishtp_hdr, pmsg); -spin_lock_irqsave (&cl->tx_free_list_spinlock, tx_free_flags); -list_add_tail (&cl_msg->list, &cl->tx_free_list.list); - ++cl->tx_ring_free_size; -spin_unlock_irqrestore (&cl->tx_free_list_spinlock, - tx_free_flags); - }else { -/* Send IPC fragment */ -spin_unlock_irqrestore (&cl->tx_list_spinlock, tx_flags); - cl->tx_offs += dev->mtu; - ishtp_hdr.length = dev->mtu; - ishtp_hdr.msg_complete =0 ; -ishtp_send_msg (dev, &ishtp_hdr, pmsg, ipc_tx_callback, cl); +break ; + }else { +/* Send ipc fragment */ + ishtp_hdr.length = dev->mtu; + ishtp_hdr.msg_complete =0 ; +/* All fregments submitted to IPC queue with no callback */ +ishtp_write_message (dev, &ishtp_hdr, pmsg); + cl->tx_offs += dev->mtu; + rem = cl_msg->send_buf.size - cl->tx_offs; + } } + +list_del_init (&cl_msg->list); +spin_unlock_irqrestore (&cl->tx_list_spinlock, tx_flags); + +spin_lock_irqsave (&cl->tx_free_list_spinlock, tx_free_flags); +list_add_tail (&cl_msg->list, &cl->tx_free_list.list); + ++cl->tx_ring_free_size; +spin_unlock_irqrestore (&cl->tx_free_list_spinlock, + tx_free_flags); }/**
@@ -720,7 +730,7 @@ static void ishtp_cl_send_msg_ipc(struct ishtp_device *dev,return ; cl->tx_offs =0 ; -ipc_tx_callback (cl); +ipc_tx_send (cl); ++cl->send_msg_cnt_ipc; }
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 20/35 tg3: Disable tg3 device on system reboot to avoid triggering AER
In reply to Greg Kroah-HartmanFrom: Kai-Heng Feng <[email protected]>
[ Upstream commit 2ca1c94ce0b65a2ce7512b718f3d8a0fe6224bca ]
Commit d60cd06331a3 ("PM: ACPI: reboot: Use S5 for reboot") caused a reboot hang on one Dell servers so the commit was reverted.
Someone managed to collect the AER log and it's caused by MSI:
[ 148.762067] ACPI: Preparing to enter system sleep state S5
[ 148.794638] {1}[Hardware Error]: Hardware error from APEI Generic Hardware Error Source: 5
[ 148.803731] {1}[Hardware Error]: event severity: recoverable
[ 148.810191] {1}[Hardware Error]: Error 0, type: fatal
[ 148.816088] {1}[Hardware Error]: section_type: PCIe error
[ 148.822391] {1}[Hardware Error]: port_type: 0, PCIe end point
[ 148.829026] {1}[Hardware Error]: version: 3.0
[ 148.834266] {1}[Hardware Error]: command: 0x0006, status: 0x0010
[ 148.841140] {1}[Hardware Error]: device_id: 0000:04:00.0
[ 148.847309] {1}[Hardware Error]: slot: 0
[ 148.852077] {1}[Hardware Error]: secondary_bus: 0x00
[ 148.857876] {1}[Hardware Error]: vendor_id: 0x14e4, device_id: 0x165f
[ 148.865145] {1}[Hardware Error]: class_code: 020000
[ 148.870845] {1}[Hardware Error]: aer_uncor_status: 0x00100000, aer_uncor_mask: 0x00010000
[ 148.879842] {1}[Hardware Error]: aer_uncor_severity: 0x000ef030
[ 148.886575] {1}[Hardware Error]: TLP Header: 40000001 0000030f 90028090 00000000
[ 148.894823] tg3 0000:04:00.0: AER: aer_status: 0x00100000, aer_mask: 0x00010000
[ 148.902795] tg3 0000:04:00.0: AER: [20] UnsupReq (First)
[ 148.910234] tg3 0000:04:00.0: AER: aer_layer=Transaction Layer, aer_agent=Requester ID
[ 148.918806] tg3 0000:04:00.0: AER: aer_uncor_severity: 0x000ef030
[ 148.925558] tg3 0000:04:00.0: AER: TLP Header: 40000001 0000030f 90028090 00000000The MSI is probably raised by incoming packets, so power down the device and disable bus mastering to stop the traffic, as user confirmed this approach works.
In addition to that, be extra safe and cancel reset task if it's running.
--- drivers/net/ethernet/broadcom/tg3.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
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); }/**
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 21/35 gpio: mockup: remove gpio debugfs when remove device
In reply to Greg Kroah-HartmanFrom: Wei Yongjun <[email protected]>
[ Upstream commit 303e6da99429510b1e4edf833afe90ac8542e747 ]
GPIO mockup debugfs is created in gpio_mockup_probe() but forgot to remove when remove device. This patch add a devm managed callback for removing them.
--- drivers/gpio/gpio-mockup.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
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[] = {
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 22/35 ieee802154: cc2520: add rc code in cc2520_tx()
In reply to Greg Kroah-HartmanFrom: Li Qiong <[email protected]>
[ Upstream commit ffd7bdddaab193c38416fd5dd416d065517d266e ]
The rc code is 0 at the error path "status & CC2520_STATUS_TX_UNDERFLOW". Assign rc code with '-EINVAL' at this error path to fix it.
--- drivers/net/ieee802154/cc2520.c | 1 + 1 file changed, 1 insertion(+)
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; }
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 23/35 Input: iforce - add support for Boeder Force Feedback Wheel
In reply to Greg Kroah-HartmanFrom: Greg Tulli <[email protected]>
[ Upstream commit 9c9c71168f7979f3798b61c65b4530fbfbcf19d1 ]
Add a new iforce_device entry to support the Boeder Force Feedback Wheel device.
--- Documentation/input/joydev/joystick.rst | 1 + drivers/input/joystick/iforce/iforce-main.c | 1 + 2 files changed, 2 insertions(+)
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
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 },
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 24/35 nvmet-tcp: fix unhandled tcp states in nvmet_tcp_state_change()
In reply to Greg Kroah-HartmanFrom: Maurizio Lombardi <[email protected]>
[ Upstream commit 478814a5584197fa1fb18377653626e3416e7cd6 ]
TCP_FIN_WAIT2 and TCP_LAST_ACK were not handled, the connection is closing so we can ignore them and avoid printing the "unhandled state" warning message.
[ 1298.852386] nvmet_tcp: queue 2 unhandled state 5 [ 1298.879112] nvmet_tcp: queue 7 unhandled state 5 [ 1298.884253] nvmet_tcp: queue 8 unhandled state 5 [ 1298.889475] nvmet_tcp: queue 9 unhandled state 5
v2: Do not call nvmet_tcp_schedule_release_queue(), just ignore the fin_wait2 and last_ack states.
--- drivers/nvme/target/tcp.c | 3 +++ 1 file changed, 3 insertions(+)
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 :
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 25/35 drm/amd/amdgpu: skip ucode loading if ucode_size == 0
In reply to Greg Kroah-HartmanFrom: Chengming Gui <[email protected]>
[ Upstream commit 39c84b8e929dbd4f63be7e04bf1a2bcd92b44177 ]
Restrict the ucode loading check to avoid frontdoor loading error.
--- drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
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 &&
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 26/35 net: dsa: hellcreek: Print warning only once
In reply to Greg Kroah-HartmanFrom: Kurt Kanzenbach <[email protected]>
[ Upstream commit 52267ce25f60f37ae40ccbca0b21328ebae5ae75 ]
In case the source port cannot be decoded, print the warning only once. This still brings attention to the user and does not spam the logs at the same time.
--- net/dsa/tag_hellcreek.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
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 ; }
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 27/35 perf/arm_pmu_platform: fix tests for platform_get_irq() failure
In reply to Greg Kroah-HartmanFrom: Yu Zhe <[email protected]>
[ Upstream commit 6bb0d64c100091e131cd16710b62fda3319cd0af ]
The platform_get_irq() returns negative error codes. It can't actually return zero.
--- drivers/perf/arm_pmu_platform.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
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); }
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 28/35 platform/x86: acer-wmi: Acer Aspire One AOD270/Packard Bell Dot keymap fixes
In reply to Greg Kroah-HartmanFrom: Hans de Goede <[email protected]>
[ Upstream commit c3b82d26bc85f5fc2fef5ec8cce17c89633a55a8 ]
2 keymap fixes for the Acer Aspire One AOD270 and the same hardware rebranded as Packard Bell Dot SC:
1. The F2 key is marked with a big '?' symbol on the Packard Bell Dot SC, this sends WMID_HOTKEY_EVENTs with a scancode of 0x27 add a mapping for this.
2. Scancode 0x61 is KEY_SWITCHVIDEOMODE. Usually this is a duplicate input event with the "Video Bus" input device events. But on these devices the "Video Bus" does not send events for this key. Map 0x61 to KEY_UNKNOWN instead of using KE_IGNORE so that udev/hwdb can override it on these devs.
--- drivers/platform/x86/acer-wmi.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
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 */
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 29/35 usb: storage: Add ASUS <0x0b05:0x1932> to IGNORE_UAS
In reply to Greg Kroah-HartmanFrom: Hu Xiaoying <[email protected]>
[ Upstream commit c61feaee68b9735be06f162bc046c7f1959efb0c ]
USB external storage device(0x0b05:1932), use gnome-disk-utility tools to test usb write < 30MB/s.
if does not to load module of uas for this device, can increase the write speed from 20MB/s to >40MB/s.
--- drivers/usb/storage/unusual_uas.h | 7 +++++++ 1 file changed, 7 insertions(+)
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",
Signature · 1 line
2.35.1
Greg Kroah-Hartman
maintainerPATCH 30/35 mm: Fix TLB flush for not-first PFNMAP mappings in unmap_region()
In reply to Greg Kroah-HartmanFrom: Jann Horn <[email protected]>
This is a stable-specific patch.
I botched the stable-specific rewrite of
commit b67fbebd4cf98 ("mmu_gather: Force tlb-flush VM_PFNMAP vmas"):
As Hugh pointed out, unmap_region() actually operates on a list of VMAs, and the variable "vma" merely points to the first VMA in that list. So if we want to check whether any of the VMAs we're operating on is PFNMAP or MIXEDMAP, we have to iterate through the list and check each VMA.
--- mm/mmap.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
mm/mmap.c +7 -2
@@ -2638,6 +2638,7 @@ static void unmap_region(struct mm_struc {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_struc* 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 );
Greg Kroah-Hartman
maintainerPATCH 31/35 soc: fsl: select FSL_GUTS driver for DPIO
In reply to Greg Kroah-HartmanFrom: Mathew McBride <[email protected]>
commit 9a472613f5bccf1b36837423495ae592a9c5182f upstream.
The soc/fsl/dpio driver will perform a soc_device_match() to determine the optimal cache settings for a given CPU core.
If FSL_GUTS is not enabled, this search will fail and the driver will not configure cache stashing for the given DPIO, and a string of "unknown SoC" messages will appear:
fsl_mc_dpio dpio.7: unknown SoC versionfsl_mc_dpio dpio.6: unknown SoC versionfsl_mc_dpio dpio.5: unknown SoC version
--- drivers/soc/fsl/Kconfig | 1 + 1 file changed, 1 insertion(+)
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
Greg Kroah-Hartman
maintainerPATCH 32/35 usb: gadget: f_uac2: clean up some inconsistent indenting
In reply to Greg Kroah-HartmanFrom: Colin Ian King <[email protected]>
commit 18d6b39ee8959c6e513750879b52fd215533cc87 upstream.
There are bunch of statements where the indentation is not correct, clean these up.
--- drivers/usb/gadget/function/f_uac2.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
drivers/usb/gadget/function/f_uac2.c +8 -8
@@ -760,15 +760,15 @@ static void setup_headers(struct f_uac2_ 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 +776,10 @@ static void setup_headers(struct f_uac2_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 (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);
Greg Kroah-Hartman
maintainerPATCH 33/35 usb: gadget: f_uac2: fix superspeed transfer
In reply to Greg Kroah-HartmanFrom: Jing Leng <[email protected]>
commit f511aef2ebe5377d4c263842f2e0c0b8e274e8e5 upstream.
On page 362 of the USB3.2 specification (
https://usb.org/sites/default/files/usb_32_20210125.zip),
The 'SuperSpeed Endpoint Companion Descriptor' shall only be returned by Enhanced SuperSpeed devices that are operating at Gen X speed. Each endpoint described in an interface is followed by a 'SuperSpeed Endpoint Companion Descriptor'.
If users use SuperSpeed UDC, host can't recognize the device if endpoint doesn't have 'SuperSpeed Endpoint Companion Descriptor' followed.
Currently in the uac2 driver code:
1. ss_epout_desc_comp follows ss_epout_desc;
2. ss_epin_fback_desc_comp follows ss_epin_fback_desc;
3. ss_epin_desc_comp follows ss_epin_desc;
4. Only ss_ep_int_desc endpoint doesn't have 'SuperSpeed Endpoint Companion Descriptor' followed, so we should add it.
--- drivers/usb/gadget/function/f_uac2.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-)
drivers/usb/gadget/function/f_uac2.c +14 -2
@@ -281,6 +281,12 @@ static struct usb_endpoint_descriptor ss .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_ (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_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_ 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 ;
@@ -776,8 +785,11 @@ static void setup_headers(struct f_uac2_if (EPOUT_EN (opts)) headers[i++] =USBDHDR (&io_out_ot_desc); -if (FUOUT_EN (opts) ||FUIN_EN (opts)) +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)) { headers[i++] =USBDHDR (&std_as_out_if0_desc);
Greg Kroah-Hartman
maintainerPATCH 34/35 RDMA/irdma: Use s/g array in post send only when its valid
In reply to Greg Kroah-HartmanFrom: Sindhu-Devale <[email protected]>
commit 2c8844431d065ae15a6b442f5769b60aeaaa07af upstream.
Send with invalidate verb call can pass in an uninitialized s/g array with 0 sge's which is filled into irdma WQE and causes a HW asynchronous event.
Fix this by using the s/g array in irdma post send only when its valid.
--- drivers/infiniband/hw/irdma/uk.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/infiniband/hw/irdma/uk.c +2 -1
@@ -501,7 +501,8 @@ enum irdma_status_code irdma_uk_send(str 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 ; }
Greg Kroah-Hartman
maintainerPATCH 35/35 Input: goodix - add compatible string for GT1158
In reply to Greg Kroah-HartmanFrom: Jarrah Gosbell <[email protected]>
commit 80b9ebd3e478cd41526cbf84f80c3e0eb885d1d3 upstream.
Add compatible string for GT1158 missing from the previous patch.
--- drivers/input/touchscreen/goodix.c | 1 + 1 file changed, 1 insertion(+)
drivers/input/touchscreen/goodix.c +1 -0
@@ -1363,6 +1363,7 @@ MODULE_DEVICE_TABLE(acpi, goodix_acpi_ma#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" },
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.15.69 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 18 Sep 2022 10:04:31 +0000. Anything received after that time might be too late.
Build results:
total: 159 pass: 159 fail: 0 Qemu test results: total: 486 pass: 486 fail: 0
Guenter
Quoted 5 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.15.69 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Successfully cross-compiled for arm64 (bcm2711_defconfig, GCC 10.2.0) and powerpc (ps3_defconfig, GCC 12.1.0).
Signature · 1 line
An old man doll... just what I always wanted! - Clara
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.15.69 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 18 Sep 2022 10:04:31 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.15.69-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.15.y
and the diffstat can be found below.thanks,
greg k-h
Built and booted successfully on RISC-V RV64 (HiFive Unmatched).
Hi Greg,
Quoted 7 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.15.69 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 18 Sep 2022 10:04:31 +0000. Anything received after that time might be too late.
Build test (gcc version 12.2.1 20220819):
mips: 62 configs -> no failure
arm: 99 configs -> no failure
arm64: 3 configs -> no failurex86_64: 4 configs -> no failure
alpha allmodconfig -> no failure
csky allmodconfig -> no failure
powerpc allmodconfig -> no failure
riscv allmodconfig -> no failure
s390 allmodconfig -> no failure
xtensa allmodconfig -> no failure
Boot test:x86_64: Booted on my test laptop. No regression.x86_64: Booted on qemu. No regression. [1]
arm64: Booted on rpi4b (4GB model). No regression. [2]
mips: Booted on ci20 board. No regression. [3]
[1]. https://openqa.qa.codethink.co.uk/tests/1845
[2]. https://openqa.qa.codethink.co.uk/tests/1848
[3]. https://openqa.qa.codethink.co.uk/tests/1850
--
Regards
Sudip
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.15.69 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 18 Sep 2022 10:04:31 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.15.69-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.15.y
and the diffstat can be found below.thanks,
greg k-h
Results from Linaro's test farm. Regressions on x86_64 while running libgpiod tests.
Regressions on x86_64 while running libgpiod tests. This reported regression also noticed on mainline, stable-rc 5.19, stable-rc 5.15 and stable-rc 5.10 branches
I have not bisected this reported crash yet.
+ cd ./automated/linux/gpiod
+ ./gpiod.sh /opt/libgpiod/bin/
[INFO] libgpiod test suite [INFO] 117 tests registered [INFO] checking the linux kernel version [INFO] kernel release is v5.15.69 - ok to run tests [INFO] using gpio-tools from '/usr/bin' [ 109.045516] BUG: kernel NULL pointer dereference, address: 00000000000000a0 [ 109.046035] #PF: supervisor write access in kernel mode [ 109.046035] #PF: error_code(0x0002) - not-present page [ 109.046035] PGD 1079dd067 P4D 1079dd067 PUD 101ff2067 PMD 0 [ 109.046035] Oops: 0002 [#1] SMP NOPTI [ 109.046035] CPU: 3 PID: 459 Comm: gpiod-test Not tainted 5.15.69-rc1 #1 [ 109.046035] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014 [ 109.046035] RIP: 0010:down_write+0x1a/0x60 [ 109.046035] Code: 01 f0 ff ff 19 c0 f7 d0 83 e0 fc e9 20 69 3e 00 0f 1f 44 00 00 55 48 89 e5 41 54 49 89 fc e8 1d d6 ff ff 31 c0 ba 01 00 00 00 <f0> 49 0f b1 14 24 75 18 65 48 8b 04 25 40 ad 01 00 49 89 44 24 08 [ 109.046035] RSP: 0018:ffffa74e405abd18 EFLAGS: 00010246 [ 109.046035] RAX: 0000000000000000 RBX: ffff9ffbc32b8c00 RCX: ffffff8100000000 [ 109.046035] RDX: 0000000000000001 RSI: ffffff8100000000 RDI: 00000000000000a0 [ 109.046035] RBP: ffffa74e405abd20 R08: ffffa74e405abdc8 R09: ffff9ffbc32b8c58 [ 109.046035] R10: ffff9ffbc39276a8 R11: 000000000000000e R12: 00000000000000a0 [ 109.046035] R13: ffff9ffbc4e83200 R14: 00000000000000a0 R15: 000000000000000e [ 109.046035] FS: 00007f3109509740(0000) GS:ffff9ffbfbd80000(0000) knlGS:0000000000000000 [ 109.046035] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 109.046035] CR2: 00000000000000a0 CR3: 0000000104d36000 CR4: 00000000003506e0 [ 109.046035] Call Trace: [ 109.046035] <TASK> [ 109.046035] simple_recursive_removal+0x55/0x2c0 [ 109.046035] ? debugfs_remove+0x70/0x70 [ 109.046035] debugfs_remove+0x45/0x70 [ 109.046035] gpio_mockup_debugfs_cleanup+0x15/0x20 [gpio_mockup] [ 109.046035] devm_action_release+0x15/0x20 [ 109.046035] devres_release_all+0xc1/0x110 [ 109.046035] __device_release_driver+0x195/0x270 [ 109.046035] driver_detach+0xce/0x110 [ 109.046035] bus_remove_driver+0x59/0xe0 [ 109.046035] driver_unregister+0x31/0x60 [ 109.046035] platform_driver_unregister+0x12/0x20 [ 109.046035] gpio_mockup_exit+0x1c/0x485 [gpio_mockup] [ 109.046035] __do_sys_delete_module+0x1b2/0x290 [ 109.046035] ? syscall_trace_enter.constprop.0+0x151/0x1c0 [ 109.046035] __x64_sys_delete_module+0x18/0x20 [ 109.046035] do_syscall_64+0x3b/0x90 [ 109.046035] entry_SYSCALL_64_after_hwframe+0x61/0xcb [ 109.046035] RIP: 0033:0x7f31096ae95b [ 109.046035] Code: 73 01 c3 48 8b 0d c5 34 0e 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa b8 b0 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 95 34 0e 00 f7 d8 64 89 01 48 [ 109.046035] RSP: 002b:00007ffe1319d968 EFLAGS: 00000202 ORIG_RAX: 00000000000000b0 [ 109.046035] RAX: ffffffffffffffda RBX: 0000000001f89370 RCX: 00007f31096ae95b [ 109.046035] RDX: 0000000001f88591 RSI: 0000000000000800 RDI: 0000000001f89938 [ 109.046035] RBP: 0000000001f89370 R08: 0000000000000007 R09: 0000000001f915c0 [ 109.046035] R10: 00007f31095b8b88 R11: 0000000000000202 R12: 0000000001f89420 [ 109.046035] R13: 00007f3109755b00 R14: 0000000000418df8 R15: 00007f31097ee000 [ 109.046035] </TASK> [ 109.046035] Modules linked in: gpio_mockup(-) [ 109.046035] CR2: 00000000000000a0 [ 109.046035] ---[ end trace 0ecf9a9cb4176b72 ]--- [ 109.046035] RIP: 0010:down_write+0x1a/0x60 [ 109.046035] Code: 01 f0 ff ff 19 c0 f7 d0 83 e0 fc e9 20 69 3e 00 0f 1f 44 00 00 55 48 89 e5 41 54 49 89 fc e8 1d d6 ff ff 31 c0 ba 01 00 00 00 <f0> 49 0f b1 14 24 75 18 65 48 8b 04 25 40 ad 01 00 49 89 44 24 08 [ 109.046035] RSP: 0018:ffffa74e405abd18 EFLAGS: 00010246 [ 109.046035] RAX: 0000000000000000 RBX: ffff9ffbc32b8c00 RCX: ffffff8100000000 [ 109.046035] RDX: 0000000000000001 RSI: ffffff8100000000 RDI: 00000000000000a0 [ 109.046035] RBP: ffffa74e405abd20 R08: ffffa74e405abdc8 R09: ffff9ffbc32b8c58 [ 109.046035] R10: ffff9ffbc39276a8 R11: 000000000000000e R12: 00000000000000a0 [ 109.046035] R13: ffff9ffbc4e83200 R14: 00000000000000a0 R15: 000000000000000e [ 109.046035] FS: 00007f3109509740(0000) GS:ffff9ffbfbd80000(0000) knlGS:0000000000000000 [ 109.046035] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 109.046035] CR2: 00000000000000a0 CR3: 0000000104d36000 CR4: 00000000003506e0
+ ../../utils/send-to-lava.sh result.txt
https://lkft.validation.linaro.org/scheduler/job/5549097#L1040
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.15.y/build/v5.15.68-36-gd766f744e482/testrun/11953397/suite/log-parser-test/tests/
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.15.y/build/v5.15.68-36-gd766f744e482/testrun/11951679/suite/log-parser-test/tests/
## Build
* kernel: 5.15.69-rc1
* git: https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc
* git branch: linux-5.15.y
* git commit: d766f744e4827dc41ef6c01403a96b7bb3938132
* git describe: v5.15.68-36-gd766f744e482
* test details:
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.15.y/build/v5.15.68-36-gd766f744e482
## Test Regressions (compared to v5.15.68)
- Kernel BUG while running libgpiod on x86_64.
## No metric Regressions (compared to v5.15.68)
## No test Fixes (compared to v5.15.68)
## No Metric Fixes (compared to v5.15.68)
## Test result summary
total: 105940, pass: 93319, fail: 676, skip: 11638, xfail: 307
## Build Summary
* arc: 10 total, 10 passed, 0 failed
* arm: 339 total, 336 passed, 3 failed
* arm64: 72 total, 70 passed, 2 failed
* i386: 61 total, 55 passed, 6 failed
* mips: 62 total, 59 passed, 3 failed
* parisc: 14 total, 14 passed, 0 failed
* powerpc: 69 total, 66 passed, 3 failed
* riscv: 27 total, 27 passed, 0 failed
* s390: 30 total, 27 passed, 3 failed
* sh: 26 total, 24 passed, 2 failed
* sparc: 14 total, 14 passed, 0 failed
* x86_64: 65 total, 63 passed, 2 failed
## Test suites summary
* fwts
* igt-gpu-tools
* kunit
* kvm-unit-tests
* libhugetlbfs
* log-parser-boot
* log-parser-test
* ltp-cap_bounds
* ltp-commands
* ltp-containers
* ltp-controllers
* ltp-cpuhotplug
* ltp-crypto
* ltp-cve
* ltp-dio
* ltp-fcntl-locktests
* ltp-filecaps
* ltp-fs
* ltp-fs_bind
* ltp-fs_perms_simple
* ltp-fsx
* ltp-hugetlb
* ltp-io
* ltp-ipc
* ltp-math
* ltp-mm
* ltp-nptl
* ltp-open-posix-tests
* ltp-pty
* ltp-sched
* ltp-securebits
* ltp-syscalls
* ltp-tracing
* network-basic-tests
* packetdrill
* rcutorture
* v4l2-compliance
* vdso
--
Linaro LKFT
https://lkft.linaro.org
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.15.69 release. There are 35 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 18 Sep 2022 10:04:31 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.15.69-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.15.y
and the diffstat can be found below.thanks,
greg k-h
On ARCH_BRCMSTB using 32-bit and 64-bit ARM kernels, build tested on BMIPS_GENERIC:
Signature · 1 line
Florian