Return-Path: <owner-linux-mm@kvack.org>
Date: Wed, 10 Jul 2024 06:31:26 +0800
From: kernel test robot <lkp@intel.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Linux Memory Management List <linux-mm@kvack.org>
Subject: [linux-next:master] BUILD REGRESSION
 82d01fe6ee52086035b201cfa1410a3b04384257
Message-ID: <202407100620.ilbtzoqZ-lkp@intel.com>
Sender: owner-linux-mm@kvack.org
X-Loop: owner-majordomo@kvack.org
List-ID: <linux-mm.kvack.org>
List-Subscribe: <mailto:majordomo@kvack.org>
List-Unsubscribe: <mailto:majordomo@kvack.org>
Xref: photonic.trudheim.com org.kvack.linux-mm:203167
Newsgroups: org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

2024-07-10 06:31:25 +0800 INFO s-nail: Obsoletion warning: please use *mta* instead of *sendmail*

tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
branch HEAD: 82d01fe6ee52086035b201cfa1410a3b04384257  Add linux-next specific files for 20240709

Error/Warning reports:

https://lore.kernel.org/oe-kbuild-all/202407091928.AH0aGZnx-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202407092123.7s5ilvsu-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202407092131.SBGStBhZ-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202407092247.AqsPQFKg-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202407100406.8WLNVVOS-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202407100540.VWczFcnh-lkp@intel.com

Error/Warning: (recently discovered and may have been fixed)

WARNING: modpost: vmlinux: section mismatch in reference: remove_device+0x4e (section: .text) -> .L604 (section: .init.text)
arch/arm64/boot/dts/qcom/msm8916-lg-c50.dtb: /soc@0/audio-codec@771c000: failed to match any schema with compatible: ['qcom,msm8916-wcd-digital-codec']
arch/arm64/boot/dts/qcom/msm8916-lg-c50.dtb: /soc@0/power-manager@b088000: failed to match any schema with compatible: ['qcom,msm8916-acc']
arch/arm64/boot/dts/qcom/msm8916-lg-c50.dtb: /soc@0/power-manager@b098000: failed to match any schema with compatible: ['qcom,msm8916-acc']
arch/arm64/boot/dts/qcom/msm8916-lg-c50.dtb: /soc@0/power-manager@b0a8000: failed to match any schema with compatible: ['qcom,msm8916-acc']
arch/arm64/boot/dts/qcom/msm8916-lg-c50.dtb: /soc@0/power-manager@b0b8000: failed to match any schema with compatible: ['qcom,msm8916-acc']
arch/arm64/boot/dts/qcom/msm8916-lg-c50.dtb: smsm: 'anyOf' conditional failed, one must be fixed:
arch/arm64/boot/dts/qcom/msm8916-lg-c50.dtb: smsm: 'mboxes' does not match any of the regexes: '@[0-9a-f]$', '^qcom,ipc-[1-4]$', 'pinctrl-[0-9]+'
arch/arm64/boot/dts/qcom/msm8916-lg-m216.dtb: /soc@0/audio-codec@771c000: failed to match any schema with compatible: ['qcom,msm8916-wcd-digital-codec']
arch/arm64/boot/dts/qcom/msm8916-lg-m216.dtb: /soc@0/i2c@78b9000/touchscreen@34: failed to match any schema with compatible: ['melfas,mip4_ts']
arch/arm64/boot/dts/qcom/msm8916-lg-m216.dtb: /soc@0/power-manager@b088000: failed to match any schema with compatible: ['qcom,msm8916-acc']
arch/arm64/boot/dts/qcom/msm8916-lg-m216.dtb: /soc@0/power-manager@b098000: failed to match any schema with compatible: ['qcom,msm8916-acc']
arch/arm64/boot/dts/qcom/msm8916-lg-m216.dtb: /soc@0/power-manager@b0a8000: failed to match any schema with compatible: ['qcom,msm8916-acc']
arch/arm64/boot/dts/qcom/msm8916-lg-m216.dtb: /soc@0/power-manager@b0b8000: failed to match any schema with compatible: ['qcom,msm8916-acc']
arch/arm64/boot/dts/qcom/msm8916-lg-m216.dtb: smsm: 'anyOf' conditional failed, one must be fixed:
arch/arm64/boot/dts/qcom/msm8916-lg-m216.dtb: smsm: 'mboxes' does not match any of the regexes: '@[0-9a-f]$', '^qcom,ipc-[1-4]$', 'pinctrl-[0-9]+'
btmtk.c:(.text+0x8a8): relocation truncated to fit: R_NIOS2_CALL26 against `usb_alloc_urb'
btmtk.c:(.text+0x8f8): relocation truncated to fit: R_NIOS2_CALL26 against `usb_free_urb'
btmtk.c:(.text+0x9b4): relocation truncated to fit: R_NIOS2_CALL26 against `usb_anchor_urb'
btmtk.c:(.text+0x9c0): relocation truncated to fit: R_NIOS2_CALL26 against `usb_submit_urb'
btmtk.c:(.text+0xa08): relocation truncated to fit: R_NIOS2_CALL26 against `usb_unanchor_urb'
drivers/net/wireless/virtual/virt_wifi.c:151:24: error: initializer element is not constant
drivers/watchdog/bd96801_wdt.c:221:18: error: implicit declaration of function 'FIELD_PREP' [-Werror=implicit-function-declaration]
drivers/watchdog/bd96801_wdt.c:256:15: error: implicit declaration of function 'FIELD_GET' [-Werror=implicit-function-declaration]
nios2-linux-ld: btmtk.c:(.text+0x13a4): undefined reference to `usb_kill_anchored_urbs'
nios2-linux-ld: btmtk.c:(.text+0x8f8): undefined reference to `usb_free_urb'
nios2-linux-ld: btmtk.c:(.text+0x9b4): undefined reference to `usb_anchor_urb'
nios2-linux-ld: btmtk.c:(.text+0x9c0): undefined reference to `usb_submit_urb'
nios2-linux-ld: btmtk.c:(.text+0xa08): undefined reference to `usb_unanchor_urb'
sh4-linux-ld: drivers/bluetooth/btmtk.c:568:(.text+0x760): undefined reference to `usb_free_urb'
sh4-linux-ld: drivers/bluetooth/btmtk.c:568:(.text+0x778): undefined reference to `usb_anchor_urb'
sh4-linux-ld: drivers/bluetooth/btmtk.c:568:(.text+0x77c): undefined reference to `usb_submit_urb'
sh4-linux-ld: drivers/bluetooth/btmtk.c:568:(.text+0x78c): undefined reference to `usb_unanchor_urb'
sh4-linux-ld: drivers/bluetooth/btmtk.c:666:(.text+0xbd8): undefined reference to `usb_autopm_put_interface'

Unverified Error/Warning (likely false positive, please contact us if interested):

arch/powerpc/boot/dts/canyonlands.dtb: usbotg@bff80000: Unevaluated properties are not allowed ('#address-cells', '#interrupt-cells', '#size-cells', 'interrupt-map', 'interrupts' were unexpected)
drivers/dio/dio-driver.c:128:19: error: initialization of 'int (*)(struct device *, const struct device_driver *)' from incompatible pointer type 'int (*)(struct device *, struct device_driver *)' [-Werror=incompatible-pointer-types]
drivers/zorro/zorro-driver.c:157:27: error: initialization of 'int (*)(struct device *, const struct device_driver *)' from incompatible pointer type 'int (*)(struct device *, struct device_driver *)' [-Werror=incompatible-pointer-types]
{standard input}:1845: Error: unknown pseudo-op: `.cfi_sta'

Error/Warning ids grouped by kconfigs:

recent_errors
|-- arm-allmodconfig
|   |-- arch-arm-boot-dts-arm-vexpress-v2m.dtsi.-.:Warning-(simple_bus_reg):bus-motherboard-bus-clock:missing-or-empty-reg-ranges-property
|   `-- arch-arm-boot-dts-arm-vexpress-v2m.dtsi.-.:Warning-(simple_bus_reg):bus-motherboard-bus-regulator-3v3:missing-or-empty-reg-ranges-property
|-- arm-allyesconfig
|   |-- arch-arm-boot-dts-arm-vexpress-v2m.dtsi.-.:Warning-(simple_bus_reg):bus-motherboard-bus-clock:missing-or-empty-reg-ranges-property
|   `-- arch-arm-boot-dts-arm-vexpress-v2m.dtsi.-.:Warning-(simple_bus_reg):bus-motherboard-bus-regulator-3v3:missing-or-empty-reg-ranges-property
|-- arm-defconfig
|   |-- arch-arm-boot-dts-arm-vexpress-v2m.dtsi.-.:Warning-(simple_bus_reg):bus-motherboard-bus-clock:missing-or-empty-reg-ranges-property
|   `-- arch-arm-boot-dts-arm-vexpress-v2m.dtsi.-.:Warning-(simple_bus_reg):bus-motherboard-bus-regulator-3v3:missing-or-empty-reg-ranges-property
|-- arm-randconfig-002-20240709
|   |-- arch-arm-boot-dts-arm-vexpress-v2m.dtsi.-.:Warning-(simple_bus_reg):bus-motherboard-bus-clock:missing-or-empty-reg-ranges-property
|   `-- arch-arm-boot-dts-arm-vexpress-v2m.dtsi.-.:Warning-(simple_bus_reg):bus-motherboard-bus-regulator-3v3:missing-or-empty-reg-ranges-property
|-- arm-randconfig-003-20240709
|   |-- arch-arm-boot-dts-arm-vexpress-v2m.dtsi.-.:Warning-(simple_bus_reg):bus-motherboard-bus-clock:missing-or-empty-reg-ranges-property
|   `-- arch-arm-boot-dts-arm-vexpress-v2m.dtsi.-.:Warning-(simple_bus_reg):bus-motherboard-bus-regulator-3v3:missing-or-empty-reg-ranges-property
|-- arm-randconfig-051-20240709
|   `-- arch-arm-boot-dts-qcom-qcom-msm8974pro-sony-xperia-shinano-aries.dtb:l2-cache:Unevaluated-properties-are-not-allowed-(-qcom-saw-was-unexpected)
|-- arm64-allmodconfig
|   |-- ERROR:icssg_queue_pop-drivers-net-ethernet-ti-icssg-prueth-sr1.ko-undefined
|   `-- ERROR:icssg_queue_push-drivers-net-ethernet-ti-icssg-prueth-sr1.ko-undefined
|-- arm64-randconfig-051-20240707
|   |-- arch-arm64-boot-dts-qcom-msm8916-lg-c50.dtb:smsm:anyOf-conditional-failed-one-must-be-fixed:
|   |-- arch-arm64-boot-dts-qcom-msm8916-lg-c50.dtb:smsm:mboxes-does-not-match-any-of-the-regexes:9a-f-qcom-ipc-pinctrl
|   |-- arch-arm64-boot-dts-qcom-msm8916-lg-c50.dtb:soc-audio-codec-771c000:failed-to-match-any-schema-with-compatible:qcom-msm8916-wcd-digital-codec
|   |-- arch-arm64-boot-dts-qcom-msm8916-lg-c50.dtb:soc-power-manager-b088000:failed-to-match-any-schema-with-compatible:qcom-msm8916-acc
|   |-- arch-arm64-boot-dts-qcom-msm8916-lg-c50.dtb:soc-power-manager-b098000:failed-to-match-any-schema-with-compatible:qcom-msm8916-acc
|   |-- arch-arm64-boot-dts-qcom-msm8916-lg-c50.dtb:soc-power-manager-b0a8000:failed-to-match-any-schema-with-compatible:qcom-msm8916-acc
|   |-- arch-arm64-boot-dts-qcom-msm8916-lg-c50.dtb:soc-power-manager-b0b8000:failed-to-match-any-schema-with-compatible:qcom-msm8916-acc
|   |-- arch-arm64-boot-dts-qcom-msm8916-lg-m216.dtb:smsm:anyOf-conditional-failed-one-must-be-fixed:
|   |-- arch-arm64-boot-dts-qcom-msm8916-lg-m216.dtb:smsm:mboxes-does-not-match-any-of-the-regexes:9a-f-qcom-ipc-pinctrl
|   |-- arch-arm64-boot-dts-qcom-msm8916-lg-m216.dtb:soc-audio-codec-771c000:failed-to-match-any-schema-with-compatible:qcom-msm8916-wcd-digital-codec
|   |-- arch-arm64-boot-dts-qcom-msm8916-lg-m216.dtb:soc-i2c-78b9000-touchscreen:failed-to-match-any-schema-with-compatible:melfas-mip4_ts
|   |-- arch-arm64-boot-dts-qcom-msm8916-lg-m216.dtb:soc-power-manager-b088000:failed-to-match-any-schema-with-compatible:qcom-msm8916-acc
|   |-- arch-arm64-boot-dts-qcom-msm8916-lg-m216.dtb:soc-power-manager-b098000:failed-to-match-any-schema-with-compatible:qcom-msm8916-acc
|   |-- arch-arm64-boot-dts-qcom-msm8916-lg-m216.dtb:soc-power-manager-b0a8000:failed-to-match-any-schema-with-compatible:qcom-msm8916-acc
|   `-- arch-arm64-boot-dts-qcom-msm8916-lg-m216.dtb:soc-power-manager-b0b8000:failed-to-match-any-schema-with-compatible:qcom-msm8916-acc
|-- arm64-randconfig-051-20240709
|   |-- arch-arm64-boot-dts-amlogic-meson-g12b-dreambox-one.dtb:sound:Unevaluated-properties-are-not-allowed-(-assigned-clock-parents-assigned-clock-rates-assigned-clocks-were-unexpected)
|   |-- arch-arm64-boot-dts-amlogic-meson-g12b-dreambox-one.dtb:sound:anyOf-conditional-failed-one-must-be-fixed:
|   |-- arch-arm64-boot-dts-amlogic-meson-g12b-dreambox-two.dtb:sound:Unevaluated-properties-are-not-allowed-(-assigned-clock-parents-assigned-clock-rates-assigned-clocks-were-unexpected)
|   |-- arch-arm64-boot-dts-amlogic-meson-g12b-dreambox-two.dtb:sound:anyOf-conditional-failed-one-must-be-fixed:
|   |-- arch-arm64-boot-dts-amlogic-meson-gxl-s905x-vero4k.dtb:sound:Unevaluated-properties-are-not-allowed-(-assigned-clock-parents-assigned-clock-rates-assigned-clocks-were-unexpected)
|   |-- arch-arm64-boot-dts-amlogic-meson-gxl-s905x-vero4k.dtb:sound:anyOf-conditional-failed-one-must-be-fixed:
|   |-- arch-arm64-boot-dts-broadcom-bcm2712-rpi-b.dtb:soc-107c000000-local-intc-7cd00000:failed-to-match-any-schema-with-compatible:brcm-bcm2836-l1-intc
|   |-- arch-arm64-boot-dts-broadcom-bcm2712-rpi-b.dtb:soc-107c000000-timer-7c003000:failed-to-match-any-schema-with-compatible:brcm-bcm2835-system-timer
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-kbox-a-ls.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-kbox-a-ls.dtb:dma-controller:compatible:fsl-ls1028a-qdma-fsl-ls1021a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-kbox-a-ls.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-kbox-a-ls.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-kbox-a-ls.dtb:ethernet:compatible:pci1957-ee02-fsl-enetc-ptp-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-kbox-a-ls.dtb:ethernet:compatible:pci1957-ee02-is-not-one-of-fsl-etsec-ptp-fsl-fman-ptp-timer-fsl-dpaa2-ptp-fsl-enetc-ptp
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var1.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var1.dtb:dma-controller:compatible:fsl-ls1028a-qdma-fsl-ls1021a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var1.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var1.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var1.dtb:ethernet:compatible:pci1957-ee02-fsl-enetc-ptp-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var1.dtb:ethernet:compatible:pci1957-ee02-is-not-one-of-fsl-etsec-ptp-fsl-fman-ptp-timer-fsl-dpaa2-ptp-fsl-enetc-ptp
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var2.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var2.dtb:dma-controller:compatible:fsl-ls1028a-qdma-fsl-ls1021a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var2.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var2.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var2.dtb:ethernet:compatible:pci1957-ee02-fsl-enetc-ptp-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var2.dtb:ethernet:compatible:pci1957-ee02-is-not-one-of-fsl-etsec-ptp-fsl-fman-ptp-timer-fsl-dpaa2-ptp-fsl-enetc-ptp
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var3-ads2.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var3-ads2.dtb:dma-controller:compatible:fsl-ls1028a-qdma-fsl-ls1021a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var3-ads2.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var3-ads2.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var3-ads2.dtb:ethernet:compatible:pci1957-ee02-fsl-enetc-ptp-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var3-ads2.dtb:ethernet:compatible:pci1957-ee02-is-not-one-of-fsl-etsec-ptp-fsl-fman-ptp-timer-fsl-dpaa2-ptp-fsl-enetc-ptp
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var3.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var3.dtb:dma-controller:compatible:fsl-ls1028a-qdma-fsl-ls1021a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var3.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var3.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var3.dtb:ethernet:compatible:pci1957-ee02-fsl-enetc-ptp-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var3.dtb:ethernet:compatible:pci1957-ee02-is-not-one-of-fsl-etsec-ptp-fsl-fman-ptp-timer-fsl-dpaa2-ptp-fsl-enetc-ptp
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var4.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var4.dtb:dma-controller:compatible:fsl-ls1028a-qdma-fsl-ls1021a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var4.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var4.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var4.dtb:ethernet:compatible:pci1957-ee02-fsl-enetc-ptp-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28-var4.dtb:ethernet:compatible:pci1957-ee02-is-not-one-of-fsl-etsec-ptp-fsl-fman-ptp-timer-fsl-dpaa2-ptp-fsl-enetc-ptp
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28.dtb:dma-controller:compatible:fsl-ls1028a-qdma-fsl-ls1021a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28.dtb:ethernet:compatible:pci1957-ee02-fsl-enetc-ptp-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-kontron-sl28.dtb:ethernet:compatible:pci1957-ee02-is-not-one-of-fsl-etsec-ptp-fsl-fman-ptp-timer-fsl-dpaa2-ptp-fsl-enetc-ptp
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-.dtb:dma-controller:compatible:fsl-ls1028a-qdma-fsl-ls1021a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-.dtb:efuse-1e80000:Unevaluated-properties-are-not-allowed-(-unique-id-1c-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-.dtb:ethernet:compatible:pci1957-ee02-fsl-enetc-ptp-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-.dtb:ethernet:compatible:pci1957-ee02-is-not-one-of-fsl-etsec-ptp-fsl-fman-ptp-timer-fsl-dpaa2-ptp-fsl-enetc-ptp
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-.dtb:interrupt-controller:msi-controller:msi-cells-is-a-required-property
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-.dtb:pcie-1f0000000:ranges:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-.dtb:power-controller-1e34040:power-domain-cells-is-a-required-property
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-.dtb:soc-i2c-fpga:failed-to-match-any-schema-with-compatible:fsl-ls1028aqds-fpga-fsl-fpga-qixis-i2c-simple-mfd
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-.dtb:soc-ierb-1f0800000:failed-to-match-any-schema-with-compatible:fsl-ls1028a-enetc-ierb
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-.dtb:soc-pcie-1f0000000-ethernet:failed-to-match-any-schema-with-compatible:pci1957-e100-fsl-enetc
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-.dtb:soc-pcie-1f0000000-mdio:failed-to-match-any-schema-with-compatible:pci1957-ee01-fsl-enetc-mdio
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-.dtb:soc-power-controller-1e34040:failed-to-match-any-schema-with-compatible:fsl-ls1028a-rcpm-fsl-qoriq-rcpm-.
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-.dtb:soc-usb:failed-to-match-any-schema-with-compatible:fsl-ls1028a-dwc3-snps-dwc3
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-.dtb:syscon-1e60000:compatible:syscon-is-too-short
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-13bb.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-13bb.dtb:dma-controller:compatible:fsl-ls1028a-qdma-fsl-ls1021a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-13bb.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-13bb.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-13bb.dtb:efuse-1e80000:Unevaluated-properties-are-not-allowed-(-unique-id-1c-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-13bb.dtb:ethernet:compatible:pci1957-ee02-fsl-enetc-ptp-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-13bb.dtb:ethernet:compatible:pci1957-ee02-is-not-one-of-fsl-etsec-ptp-fsl-fman-ptp-timer-fsl-dpaa2-ptp-fsl-enetc-ptp
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-13bb.dtb:interrupt-controller:msi-controller:msi-cells-is-a-required-property
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-13bb.dtb:pcie-1f0000000:ranges:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-13bb.dtb:power-controller-1e34040:power-domain-cells-is-a-required-property
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-13bb.dtb:soc-i2c-fpga:failed-to-match-any-schema-with-compatible:fsl-ls1028aqds-fpga-fsl-fpga-qixis-i2c-simple-mfd
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-13bb.dtb:soc-ierb-1f0800000:failed-to-match-any-schema-with-compatible:fsl-ls1028a-enetc-ierb
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-13bb.dtb:soc-pcie-1f0000000-ethernet:failed-to-match-any-schema-with-compatible:pci1957-e100-fsl-enetc
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-13bb.dtb:soc-pcie-1f0000000-mdio:failed-to-match-any-schema-with-compatible:pci1957-ee01-fsl-enetc-mdio
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-13bb.dtb:soc-power-controller-1e34040:failed-to-match-any-schema-with-compatible:fsl-ls1028a-rcpm-fsl-qoriq-rcpm-.
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-13bb.dtb:soc-usb:failed-to-match-any-schema-with-compatible:fsl-ls1028a-dwc3-snps-dwc3
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-13bb.dtb:syscon-1e60000:compatible:syscon-is-too-short
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-65bb.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-65bb.dtb:dma-controller:compatible:fsl-ls1028a-qdma-fsl-ls1021a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-65bb.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-65bb.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-65bb.dtb:efuse-1e80000:Unevaluated-properties-are-not-allowed-(-unique-id-1c-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-65bb.dtb:ethernet:compatible:pci1957-ee02-fsl-enetc-ptp-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-65bb.dtb:ethernet:compatible:pci1957-ee02-is-not-one-of-fsl-etsec-ptp-fsl-fman-ptp-timer-fsl-dpaa2-ptp-fsl-enetc-ptp
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-65bb.dtb:interrupt-controller:msi-controller:msi-cells-is-a-required-property
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-65bb.dtb:pcie-1f0000000:ranges:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-65bb.dtb:power-controller-1e34040:power-domain-cells-is-a-required-property
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-65bb.dtb:soc-i2c-fpga:failed-to-match-any-schema-with-compatible:fsl-ls1028aqds-fpga-fsl-fpga-qixis-i2c-simple-mfd
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-65bb.dtb:soc-ierb-1f0800000:failed-to-match-any-schema-with-compatible:fsl-ls1028a-enetc-ierb
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-65bb.dtb:soc-pcie-1f0000000-ethernet:failed-to-match-any-schema-with-compatible:pci1957-e100-fsl-enetc
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-65bb.dtb:soc-pcie-1f0000000-mdio:failed-to-match-any-schema-with-compatible:pci1957-ee01-fsl-enetc-mdio
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-65bb.dtb:soc-power-controller-1e34040:failed-to-match-any-schema-with-compatible:fsl-ls1028a-rcpm-fsl-qoriq-rcpm-.
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-65bb.dtb:soc-usb:failed-to-match-any-schema-with-compatible:fsl-ls1028a-dwc3-snps-dwc3
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-65bb.dtb:syscon-1e60000:compatible:syscon-is-too-short
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-85bb.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-85bb.dtb:dma-controller:compatible:fsl-ls1028a-qdma-fsl-ls1021a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-85bb.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-85bb.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-85bb.dtb:efuse-1e80000:Unevaluated-properties-are-not-allowed-(-unique-id-1c-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-85bb.dtb:ethernet:compatible:pci1957-ee02-fsl-enetc-ptp-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-85bb.dtb:ethernet:compatible:pci1957-ee02-is-not-one-of-fsl-etsec-ptp-fsl-fman-ptp-timer-fsl-dpaa2-ptp-fsl-enetc-ptp
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-85bb.dtb:interrupt-controller:msi-controller:msi-cells-is-a-required-property
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-85bb.dtb:pcie-1f0000000:ranges:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-85bb.dtb:power-controller-1e34040:power-domain-cells-is-a-required-property
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-85bb.dtb:soc-i2c-fpga:failed-to-match-any-schema-with-compatible:fsl-ls1028aqds-fpga-fsl-fpga-qixis-i2c-simple-mfd
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-85bb.dtb:soc-ierb-1f0800000:failed-to-match-any-schema-with-compatible:fsl-ls1028a-enetc-ierb
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-85bb.dtb:soc-pcie-1f0000000-ethernet:failed-to-match-any-schema-with-compatible:pci1957-e100-fsl-enetc
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-85bb.dtb:soc-pcie-1f0000000-mdio:failed-to-match-any-schema-with-compatible:pci1957-ee01-fsl-enetc-mdio
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-85bb.dtb:soc-power-controller-1e34040:failed-to-match-any-schema-with-compatible:fsl-ls1028a-rcpm-fsl-qoriq-rcpm-.
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-85bb.dtb:soc-usb:failed-to-match-any-schema-with-compatible:fsl-ls1028a-dwc3-snps-dwc3
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-85bb.dtb:syscon-1e60000:compatible:syscon-is-too-short
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-899b.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-899b.dtb:dma-controller:compatible:fsl-ls1028a-qdma-fsl-ls1021a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-899b.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-899b.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-899b.dtb:efuse-1e80000:Unevaluated-properties-are-not-allowed-(-unique-id-1c-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-899b.dtb:ethernet:compatible:pci1957-ee02-fsl-enetc-ptp-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-899b.dtb:ethernet:compatible:pci1957-ee02-is-not-one-of-fsl-etsec-ptp-fsl-fman-ptp-timer-fsl-dpaa2-ptp-fsl-enetc-ptp
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-899b.dtb:interrupt-controller:msi-controller:msi-cells-is-a-required-property
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-899b.dtb:pcie-1f0000000:ranges:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-899b.dtb:power-controller-1e34040:power-domain-cells-is-a-required-property
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-899b.dtb:soc-i2c-fpga:failed-to-match-any-schema-with-compatible:fsl-ls1028aqds-fpga-fsl-fpga-qixis-i2c-simple-mfd
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-899b.dtb:soc-ierb-1f0800000:failed-to-match-any-schema-with-compatible:fsl-ls1028a-enetc-ierb
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-899b.dtb:soc-pcie-1f0000000-ethernet:failed-to-match-any-schema-with-compatible:pci1957-e100-fsl-enetc
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-899b.dtb:soc-pcie-1f0000000-mdio:failed-to-match-any-schema-with-compatible:pci1957-ee01-fsl-enetc-mdio
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-899b.dtb:soc-power-controller-1e34040:failed-to-match-any-schema-with-compatible:fsl-ls1028a-rcpm-fsl-qoriq-rcpm-.
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-899b.dtb:soc-usb:failed-to-match-any-schema-with-compatible:fsl-ls1028a-dwc3-snps-dwc3
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds-899b.dtb:syscon-1e60000:compatible:syscon-is-too-short
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds.dtb:dma-controller:compatible:fsl-ls1028a-qdma-fsl-ls1021a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds.dtb:ethernet:compatible:pci1957-ee02-fsl-enetc-ptp-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-qds.dtb:ethernet:compatible:pci1957-ee02-is-not-one-of-fsl-etsec-ptp-fsl-fman-ptp-timer-fsl-dpaa2-ptp-fsl-enetc-ptp
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-rdb.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-rdb.dtb:dma-controller:compatible:fsl-ls1028a-qdma-fsl-ls1021a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-rdb.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-rdb.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-rdb.dtb:ethernet:compatible:pci1957-ee02-fsl-enetc-ptp-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1028a-rdb.dtb:ethernet:compatible:pci1957-ee02-is-not-one-of-fsl-etsec-ptp-fsl-fman-ptp-timer-fsl-dpaa2-ptp-fsl-enetc-ptp
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-qds.dtb:aux-bus:address-cells-size-cells-compatible-dma-ranges-ranges-sata-usb-2f00000-usb-usb-do-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-qds.dtb:aux-bus:panel-is-a-required-property
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-qds.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-qds.dtb:dma-controller:compatible:fsl-ls1021a-qdma-fsl-ls1043a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-qds.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-qds.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-qds.dtb:fman-1a00000:dma-coherent-ptimer-handle-do-not-match-any-of-the-regexes:ethernet-a-f0-mdio-a-f0-muram-a-f0-phc-a-f0-port-a-f0-pinctrl
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-qds.dtb:fman-1a00000:ethernet-e0000:Unevaluated-properties-are-not-allowed-(-phy-connection-type-phy-handle-were-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-qds.dtb:fman-1a00000:ethernet-e0000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-qds.dtb:fman-1a00000:ethernet-e2000:Unevaluated-properties-are-not-allowed-(-phy-connection-type-phy-handle-were-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-qds.dtb:fman-1a00000:ethernet-e2000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-qds.dtb:fman-1a00000:ethernet-e8000:Unevaluated-properties-are-not-allowed-(-phy-connection-type-phy-handle-were-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-qds.dtb:fman-1a00000:ethernet-e8000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-qds.dtb:fman-1a00000:ethernet-ea000:Unevaluated-properties-are-not-allowed-(-phy-connection-type-phy-handle-were-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-qds.dtb:fman-1a00000:ethernet-ea000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-qds.dtb:watchdog-2ad0000:Unevaluated-properties-are-not-allowed-(-big-endian-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-rdb.dtb:aux-bus:address-cells-size-cells-compatible-dma-ranges-ranges-sata-usb-2f00000-usb-usb-do-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-rdb.dtb:aux-bus:panel-is-a-required-property
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-rdb.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-rdb.dtb:dma-controller:compatible:fsl-ls1021a-qdma-fsl-ls1043a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-rdb.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-rdb.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-rdb.dtb:fman-1a00000:dma-coherent-ptimer-handle-do-not-match-any-of-the-regexes:ethernet-a-f0-mdio-a-f0-muram-a-f0-phc-a-f0-port-a-f0-pinctrl
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-rdb.dtb:fman-1a00000:ethernet-e0000:Unevaluated-properties-are-not-allowed-(-phy-connection-type-phy-handle-were-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-rdb.dtb:fman-1a00000:ethernet-e0000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-rdb.dtb:fman-1a00000:ethernet-e2000:Unevaluated-properties-are-not-allowed-(-phy-connection-type-phy-handle-were-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-rdb.dtb:fman-1a00000:ethernet-e2000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-rdb.dtb:fman-1a00000:ethernet-e8000:Unevaluated-properties-are-not-allowed-(-phy-connection-type-phy-handle-were-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-rdb.dtb:fman-1a00000:ethernet-e8000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-rdb.dtb:fman-1a00000:ethernet-ea000:Unevaluated-properties-are-not-allowed-(-phy-connection-type-phy-handle-were-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-rdb.dtb:fman-1a00000:ethernet-ea000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-rdb.dtb:watchdog-2ad0000:Unevaluated-properties-are-not-allowed-(-big-endian-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-tqmls1043a-mbls1xa.dtb:aux-bus:address-cells-size-cells-compatible-dma-ranges-ranges-sata-usb-2f00000-usb-usb-do-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-tqmls1043a-mbls1xa.dtb:aux-bus:panel-is-a-required-property
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-tqmls1043a-mbls1xa.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-tqmls1043a-mbls1xa.dtb:dma-controller:compatible:fsl-ls1021a-qdma-fsl-ls1043a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-tqmls1043a-mbls1xa.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-tqmls1043a-mbls1xa.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-tqmls1043a-mbls1xa.dtb:fman-1a00000:dma-coherent-ptimer-handle-do-not-match-any-of-the-regexes:ethernet-a-f0-mdio-a-f0-muram-a-f0-phc-a-f0-port-a-f0-pinctrl
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-tqmls1043a-mbls1xa.dtb:fman-1a00000:ethernet-e0000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-tqmls1043a-mbls1xa.dtb:fman-1a00000:ethernet-e2000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-tqmls1043a-mbls1xa.dtb:fman-1a00000:ethernet-e8000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-tqmls1043a-mbls1xa.dtb:fman-1a00000:ethernet-ea000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1043a-tqmls1043a-mbls1xa.dtb:watchdog-2ad0000:Unevaluated-properties-are-not-allowed-(-big-endian-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-frwy.dtb:aux-bus:address-cells-size-cells-compatible-dma-ranges-ranges-sata-usb-2f00000-usb-usb-do-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-frwy.dtb:aux-bus:panel-is-a-required-property
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-frwy.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-frwy.dtb:dma-controller:compatible:fsl-ls1046a-qdma-fsl-ls1021a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-frwy.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-frwy.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-frwy.dtb:fman-1a00000:dma-coherent-ptimer-handle-do-not-match-any-of-the-regexes:ethernet-a-f0-mdio-a-f0-muram-a-f0-phc-a-f0-port-a-f0-pinctrl
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-frwy.dtb:fman-1a00000:ethernet-e0000:Unevaluated-properties-are-not-allowed-(-phy-connection-type-phy-handle-were-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-frwy.dtb:fman-1a00000:ethernet-e0000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-frwy.dtb:fman-1a00000:ethernet-e8000:Unevaluated-properties-are-not-allowed-(-phy-connection-type-phy-handle-were-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-frwy.dtb:fman-1a00000:ethernet-e8000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-frwy.dtb:fman-1a00000:ethernet-ea000:Unevaluated-properties-are-not-allowed-(-phy-connection-type-phy-handle-were-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-frwy.dtb:fman-1a00000:ethernet-ea000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-frwy.dtb:fman-1a00000:ethernet-f2000:Unevaluated-properties-are-not-allowed-(-phy-connection-type-phy-handle-were-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-frwy.dtb:fman-1a00000:ethernet-f2000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-frwy.dtb:soc-aux-bus-sata:failed-to-match-any-schema-with-compatible:fsl-ls1046a-ahci
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-qds.dtb:aux-bus:address-cells-size-cells-compatible-dma-ranges-ranges-sata-usb-2f00000-usb-usb-do-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-qds.dtb:aux-bus:panel-is-a-required-property
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-qds.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-qds.dtb:dma-controller:compatible:fsl-ls1046a-qdma-fsl-ls1021a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-qds.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-qds.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-qds.dtb:fman-1a00000:dma-coherent-ptimer-handle-do-not-match-any-of-the-regexes:ethernet-a-f0-mdio-a-f0-muram-a-f0-phc-a-f0-port-a-f0-pinctrl
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-qds.dtb:fman-1a00000:ethernet-e0000:Unevaluated-properties-are-not-allowed-(-phy-connection-type-phy-handle-were-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-qds.dtb:fman-1a00000:ethernet-e0000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-qds.dtb:fman-1a00000:ethernet-e8000:Unevaluated-properties-are-not-allowed-(-phy-connection-type-phy-handle-were-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-qds.dtb:fman-1a00000:ethernet-e8000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-qds.dtb:fman-1a00000:ethernet-ea000:Unevaluated-properties-are-not-allowed-(-phy-connection-type-phy-handle-were-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-qds.dtb:fman-1a00000:ethernet-ea000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-qds.dtb:fman-1a00000:ethernet-f2000:Unevaluated-properties-are-not-allowed-(-phy-connection-type-phy-handle-were-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-qds.dtb:fman-1a00000:ethernet-f2000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-qds.dtb:soc-aux-bus-sata:failed-to-match-any-schema-with-compatible:fsl-ls1046a-ahci
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-rdb.dtb:aux-bus:address-cells-size-cells-compatible-dma-ranges-ranges-sata-usb-2f00000-usb-usb-do-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-rdb.dtb:aux-bus:panel-is-a-required-property
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-rdb.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-rdb.dtb:dma-controller:compatible:fsl-ls1046a-qdma-fsl-ls1021a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-rdb.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-rdb.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-rdb.dtb:fman-1a00000:dma-coherent-ptimer-handle-do-not-match-any-of-the-regexes:ethernet-a-f0-mdio-a-f0-muram-a-f0-phc-a-f0-port-a-f0-pinctrl
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-rdb.dtb:fman-1a00000:ethernet-e0000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-rdb.dtb:fman-1a00000:ethernet-e8000:Unevaluated-properties-are-not-allowed-(-phy-connection-type-phy-handle-were-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-rdb.dtb:fman-1a00000:ethernet-e8000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-rdb.dtb:fman-1a00000:ethernet-ea000:Unevaluated-properties-are-not-allowed-(-phy-connection-type-phy-handle-were-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-rdb.dtb:fman-1a00000:ethernet-ea000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-rdb.dtb:fman-1a00000:ethernet-f2000:Unevaluated-properties-are-not-allowed-(-managed-phy-connection-type-were-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-rdb.dtb:fman-1a00000:ethernet-f2000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-rdb.dtb:soc-aux-bus-sata:failed-to-match-any-schema-with-compatible:fsl-ls1046a-ahci
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-tqmls1046a-mbls1xa.dtb:aux-bus:address-cells-size-cells-compatible-dma-ranges-ranges-sata-usb-2f00000-usb-usb-do-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-tqmls1046a-mbls1xa.dtb:aux-bus:panel-is-a-required-property
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-tqmls1046a-mbls1xa.dtb:dma-controller:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-tqmls1046a-mbls1xa.dtb:dma-controller:compatible:fsl-ls1046a-qdma-fsl-ls1021a-qdma-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-tqmls1046a-mbls1xa.dtb:dma-controller:interrupt-names:qdma-error-qdma-queue0-qdma-queue1-qdma-queue2-qdma-queue3-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-tqmls1046a-mbls1xa.dtb:dma-controller:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-tqmls1046a-mbls1xa.dtb:fman-1a00000:dma-coherent-ptimer-handle-do-not-match-any-of-the-regexes:ethernet-a-f0-mdio-a-f0-muram-a-f0-phc-a-f0-port-a-f0-pinctrl
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-tqmls1046a-mbls1xa.dtb:fman-1a00000:ethernet-e0000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-tqmls1046a-mbls1xa.dtb:fman-1a00000:ethernet-e8000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-tqmls1046a-mbls1xa.dtb:fman-1a00000:ethernet-ea000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-tqmls1046a-mbls1xa.dtb:fman-1a00000:ethernet-f2000:pcs-handle-is-a-dependency-of-pcs-handle-names
|   |-- arch-arm64-boot-dts-freescale-fsl-ls1046a-tqmls1046a-mbls1xa.dtb:soc-aux-bus-sata:failed-to-match-any-schema-with-compatible:fsl-ls1046a-ahci
|   |-- arch-arm64-boot-dts-freescale-fsl-lx2160a-tqmlx2160a-mblx2160a-x.dtb:ethernet-d:sfp-does-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-freescale-fsl-lx2160a-tqmlx2160a-mblx2160a-x.dtb:ethernet-e:sfp-does-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-freescale-fsl-lx2160a-tqmlx2160a-mblx2160a-x.dtb:hub:vcc-supply-does-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-freescale-fsl-lx2160a-tqmlx2160a-mblx2160a-x.dtb:interrupt-controller:interrupt-map:is-too-short
|   |-- arch-arm64-boot-dts-freescale-fsl-lx2160a-tqmlx2160a-mblx2160a-x.dtb:interrupt-controller:msi-controller:msi-cells-is-a-required-property
|   |-- arch-arm64-boot-dts-freescale-fsl-lx2160a-tqmlx2160a-mblx2160a-x.dtb:pcie:interrupt-names:aer-pme-intr-is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-lx2160a-tqmlx2160a-mblx2160a-x.dtb:pcie:interrupts:is-too-long
|   |-- arch-arm64-boot-dts-freescale-fsl-lx2160a-tqmlx2160a-mblx2160a-x.dtb:pcie:reg-names:config-was-expected
|   |-- arch-arm64-boot-dts-freescale-fsl-lx2160a-tqmlx2160a-mblx2160a-x.dtb:pcie:reg-names:regs-was-expected
|   |-- arch-arm64-boot-dts-freescale-fsl-lx2160a-tqmlx2160a-mblx2160a-x.dtb:power-controller-1e34040:power-domain-cells-is-a-required-property
|   |-- arch-arm64-boot-dts-freescale-fsl-lx2160a-tqmlx2160a-mblx2160a-x.dtb:soc-power-controller-1e34040:failed-to-match-any-schema-with-compatible:fsl-lx2160a-rcpm-fsl-qoriq-rcpm-.
|   |-- arch-arm64-boot-dts-freescale-fsl-lx2160a-tqmlx2160a-mblx2160a-x.dtb:soc-syscon-1f70000:failed-to-match-any-schema-with-compatible:fsl-lx2160a-isc-syscon
|   |-- arch-arm64-boot-dts-freescale-imx8mm-phygate-tauri-l-rs232-cts-rts.dtb::compatible:oneOf-conditional-failed-one-must-be-fixed:
|   |-- arch-arm64-boot-dts-freescale-imx8mm-phygate-tauri-l-rs232-rs232.dtb::compatible:oneOf-conditional-failed-one-must-be-fixed:
|   |-- arch-arm64-boot-dts-freescale-imx8mm-phygate-tauri-l-rs232-rs232.dtb:gpio:pinctrcl-uart4_rs485_en-do-not-match-any-of-the-regexes:(hog-.-hog(-)-)-pinctrl
|   |-- arch-arm64-boot-dts-freescale-imx8mm-phygate-tauri-l-rs232-rs232.dtb:gpio:pinctrl-is-a-dependency-of-pinctrl-names
|   |-- arch-arm64-boot-dts-freescale-imx8mm-phygate-tauri-l-rs232-rs232.dtb:uart4_rs485_en:nodename:uart4_rs485_en-does-not-match-(hog-.-hog(-)-)
|   |-- arch-arm64-boot-dts-freescale-imx8mm-phygate-tauri-l-rs232-rs485.dtb::compatible:oneOf-conditional-failed-one-must-be-fixed:
|   |-- arch-arm64-boot-dts-freescale-imx8mm-phygate-tauri-l-rs232-rs485.dtb:gpio:pinctrcl-uart4_rs485_en-do-not-match-any-of-the-regexes:(hog-.-hog(-)-)-pinctrl
|   |-- arch-arm64-boot-dts-freescale-imx8mm-phygate-tauri-l-rs232-rs485.dtb:gpio:pinctrl-is-a-dependency-of-pinctrl-names
|   |-- arch-arm64-boot-dts-freescale-imx8mm-phygate-tauri-l-rs232-rs485.dtb:uart4_rs485_en:nodename:uart4_rs485_en-does-not-match-(hog-.-hog(-)-)
|   |-- arch-arm64-boot-dts-freescale-imx8mp-evk-mx8-dlvds-lcd1.dtb:panel-lvds:panel-timing-does-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-freescale-imx8mp-venice-gw74xx-imx219.dtb::compatible:oneOf-conditional-failed-one-must-be-fixed:
|   |-- arch-arm64-boot-dts-mediatek-mt7622-bananapi-bpi-r64.dtb:switch-1f:interrupts-is-a-dependency-of-interrupt-controller
|   |-- arch-arm64-boot-dts-mediatek-mt8186-corsola-voltorb-sku589824.dtb:dp-bridge-5c:extcon-is-a-required-property
|   |-- arch-arm64-boot-dts-mediatek-mt8186-corsola-voltorb-sku589824.dtb:soc-pwrap-1000d000-pmic-codec:failed-to-match-any-schema-with-compatible:mediatek-mt6366-sound-mediatek-mt6358-sound
|   |-- arch-arm64-boot-dts-mediatek-mt8186-corsola-voltorb-sku589824.dtb:soc-pwrap-1000d000-pmic-rtc:failed-to-match-any-schema-with-compatible:mediatek-mt6366-rtc-mediatek-mt6358-rtc
|   |-- arch-arm64-boot-dts-mediatek-mt8186-corsola-voltorb-sku589824.dtb:soc-pwrap-1000d000-pmic:failed-to-match-any-schema-with-compatible:mediatek-mt6366-mediatek-mt6358
|   |-- arch-arm64-boot-dts-mediatek-mt8186-corsola-voltorb-sku589824.dtb:sound:model-is-a-required-property
|   |-- arch-arm64-boot-dts-mediatek-mt8186-corsola-voltorb-sku589825.dtb:dp-bridge-5c:extcon-is-a-required-property
|   |-- arch-arm64-boot-dts-mediatek-mt8186-corsola-voltorb-sku589825.dtb:soc-pwrap-1000d000-pmic-codec:failed-to-match-any-schema-with-compatible:mediatek-mt6366-sound-mediatek-mt6358-sound
|   |-- arch-arm64-boot-dts-mediatek-mt8186-corsola-voltorb-sku589825.dtb:soc-pwrap-1000d000-pmic-rtc:failed-to-match-any-schema-with-compatible:mediatek-mt6366-rtc-mediatek-mt6358-rtc
|   |-- arch-arm64-boot-dts-mediatek-mt8186-corsola-voltorb-sku589825.dtb:soc-pwrap-1000d000-pmic:failed-to-match-any-schema-with-compatible:mediatek-mt6366-mediatek-mt6358
|   |-- arch-arm64-boot-dts-mediatek-mt8186-corsola-voltorb-sku589825.dtb:sound:model-is-a-required-property
|   |-- arch-arm64-boot-dts-mediatek-mt8188-evb.dtb:power-controller:power-domain:power-domain:power-domain:power-domain:Unevaluated-properties-are-not-allowed-(-power-domain-power-domain-were-unexpected)
|   |-- arch-arm64-boot-dts-mediatek-mt8390-genio-evk.dtb:mailbox:clock-names-is-a-required-property
|   |-- arch-arm64-boot-dts-mediatek-mt8390-genio-evk.dtb:power-controller:power-domain:power-domain:power-domain:power-domain:Unevaluated-properties-are-not-allowed-(-power-domain-power-domain-were-unexpecte
|   |-- arch-arm64-boot-dts-qcom-ipq5018-tplink-archer-ax55-v1.dtb:usb-8af8800:interrupt-names:hs_phy_irq-is-too-short
|   |-- arch-arm64-boot-dts-qcom-ipq5018-tplink-archer-ax55-v1.dtb:usb-8af8800:interrupt-names:pwr_event-was-expected
|   |-- arch-arm64-boot-dts-qcom-ipq5018-tplink-archer-ax55-v1.dtb:usb-8af8800:interrupts:is-too-short
|   |-- arch-arm64-boot-dts-qcom-msm8953-motorola-potter.dtb:gpu-1c00000:clock-names:alwayson-is-not-one-of-core-iface-mem-mem_iface-alt_mem_iface-gfx3d-rbbmtimer-rbcpr
|   |-- arch-arm64-boot-dts-qcom-msm8953-xiaomi-daisy.dtb:gpu-1c00000:clock-names:alwayson-is-not-one-of-core-iface-mem-mem_iface-alt_mem_iface-gfx3d-rbbmtimer-rbcpr
|   |-- arch-arm64-boot-dts-qcom-msm8953-xiaomi-mido.dtb:gpu-1c00000:clock-names:alwayson-is-not-one-of-core-iface-mem-mem_iface-alt_mem_iface-gfx3d-rbbmtimer-rbcpr
|   |-- arch-arm64-boot-dts-qcom-msm8953-xiaomi-tissot.dtb:gpu-1c00000:clock-names:alwayson-is-not-one-of-core-iface-mem-mem_iface-alt_mem_iface-gfx3d-rbbmtimer-rbcpr
|   |-- arch-arm64-boot-dts-qcom-msm8953-xiaomi-vince.dtb:gpu-1c00000:clock-names:alwayson-is-not-one-of-core-iface-mem-mem_iface-alt_mem_iface-gfx3d-rbbmtimer-rbcpr
|   |-- arch-arm64-boot-dts-qcom-msm8956-sony-xperia-loire-kugo.dtb:gpu-1c00000:clock-names:alwayson-is-not-one-of-core-iface-mem-mem_iface-alt_mem_iface-gfx3d-rbbmtimer-rbcpr
|   |-- arch-arm64-boot-dts-qcom-msm8956-sony-xperia-loire-suzu.dtb:gpu-1c00000:clock-names:alwayson-is-not-one-of-core-iface-mem-mem_iface-alt_mem_iface-gfx3d-rbbmtimer-rbcpr
|   |-- arch-arm64-boot-dts-qcom-sdm450-lenovo-tbx605f.dtb:gpu-1c00000:clock-names:alwayson-is-not-one-of-core-iface-mem-mem_iface-alt_mem_iface-gfx3d-rbbmtimer-rbcpr
|   |-- arch-arm64-boot-dts-qcom-sdm450-motorola-ali.dtb:gpu-1c00000:clock-names:alwayson-is-not-one-of-core-iface-mem-mem_iface-alt_mem_iface-gfx3d-rbbmtimer-rbcpr
|   |-- arch-arm64-boot-dts-qcom-sdm632-fairphone-fp3.dtb:gpu-1c00000:clock-names:alwayson-is-not-one-of-core-iface-mem-mem_iface-alt_mem_iface-gfx3d-rbbmtimer-rbcpr
|   |-- arch-arm64-boot-dts-qcom-sdm632-motorola-ocean.dtb:gpu-1c00000:clock-names:alwayson-is-not-one-of-core-iface-mem-mem_iface-alt_mem_iface-gfx3d-rbbmtimer-rbcpr
|   |-- arch-arm64-boot-dts-qcom-sm8650-hdk.dtb:clock-controller-aaf0000:required-opps-is-a-required-property
|   |-- arch-arm64-boot-dts-qcom-sm8650-hdk.dtb:clock-controller-ade0000:required-opps-is-a-required-property
|   |-- arch-arm64-boot-dts-qcom-sm8650-mtp.dtb:clock-controller-aaf0000:required-opps-is-a-required-property
|   |-- arch-arm64-boot-dts-qcom-sm8650-mtp.dtb:clock-controller-ade0000:required-opps-is-a-required-property
|   |-- arch-arm64-boot-dts-qcom-sm8650-qrd.dtb:clock-controller-aaf0000:required-opps-is-a-required-property
|   |-- arch-arm64-boot-dts-qcom-sm8650-qrd.dtb:clock-controller-ade0000:required-opps-is-a-required-property
|   |-- arch-arm64-boot-dts-qcom-x1e80100-crd.dtb:soc-thermal-sensor-c271000:failed-to-match-any-schema-with-compatible:qcom-x1e80100-tsens-qcom-tsens-v2
|   |-- arch-arm64-boot-dts-qcom-x1e80100-crd.dtb:soc-thermal-sensor-c272000:failed-to-match-any-schema-with-compatible:qcom-x1e80100-tsens-qcom-tsens-v2
|   |-- arch-arm64-boot-dts-qcom-x1e80100-crd.dtb:soc-thermal-sensor-c273000:failed-to-match-any-schema-with-compatible:qcom-x1e80100-tsens-qcom-tsens-v2
|   |-- arch-arm64-boot-dts-qcom-x1e80100-crd.dtb:soc-thermal-sensor-c274000:failed-to-match-any-schema-with-compatible:qcom-x1e80100-tsens-qcom-tsens-v2
|   |-- arch-arm64-boot-dts-qcom-x1e80100-qcp.dtb:soc-thermal-sensor-c271000:failed-to-match-any-schema-with-compatible:qcom-x1e80100-tsens-qcom-tsens-v2
|   |-- arch-arm64-boot-dts-qcom-x1e80100-qcp.dtb:soc-thermal-sensor-c272000:failed-to-match-any-schema-with-compatible:qcom-x1e80100-tsens-qcom-tsens-v2
|   |-- arch-arm64-boot-dts-qcom-x1e80100-qcp.dtb:soc-thermal-sensor-c273000:failed-to-match-any-schema-with-compatible:qcom-x1e80100-tsens-qcom-tsens-v2
|   |-- arch-arm64-boot-dts-qcom-x1e80100-qcp.dtb:soc-thermal-sensor-c274000:failed-to-match-any-schema-with-compatible:qcom-x1e80100-tsens-qcom-tsens-v2
|   |-- arch-arm64-boot-dts-renesas-r8a774a1-hihope-rzg2m-ex-idk-1110wr.dtb:ethernet-phy:compatible:ethernet-phy-id001c.c915-ethernet-phy-ieee802.-c22-is-too-long
|   |-- arch-arm64-boot-dts-renesas-r8a774a1-hihope-rzg2m-ex-mipi-..dtb:ethernet-phy:compatible:ethernet-phy-id001c.c915-ethernet-phy-ieee802.-c22-is-too-long
|   |-- arch-arm64-boot-dts-renesas-r8a774a1-hihope-rzg2m-ex.dtb:ethernet-phy:compatible:ethernet-phy-id001c.c915-ethernet-phy-ieee802.-c22-is-too-long
|   |-- arch-arm64-boot-dts-renesas-r8a774a1-hihope-rzg2m-rev2-ex-idk-1110wr.dtb:ethernet-phy:compatible:ethernet-phy-id001c.c915-ethernet-phy-ieee802.-c22-is-too-long
|   |-- arch-arm64-boot-dts-renesas-r8a774a1-hihope-rzg2m-rev2-ex.dtb:ethernet-phy:compatible:ethernet-phy-id001c.c915-ethernet-phy-ieee802.-c22-is-too-long
|   |-- arch-arm64-boot-dts-renesas-r8a774c0-ek874-idk-2121wr.dtb:ethernet-phy:compatible:ethernet-phy-id001c.c915-ethernet-phy-ieee802.-c22-is-too-long
|   |-- arch-arm64-boot-dts-renesas-r8a774c0-ek874-mipi-..dtb:ethernet-phy:compatible:ethernet-phy-id001c.c915-ethernet-phy-ieee802.-c22-is-too-long
|   |-- arch-arm64-boot-dts-renesas-r8a774c0-ek874.dtb:ethernet-phy:compatible:ethernet-phy-id001c.c915-ethernet-phy-ieee802.-c22-is-too-long
|   |-- arch-arm64-boot-dts-renesas-r8a77951-salvator-x-panel-aa104xd12.dtb:clock-generator-6a:idt-output-enable-active-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77951-salvator-x-panel-aa104xd12.dtb:clock-generator-6a:idt-shutdown-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77951-salvator-x-panel-aa104xd12.dtb:panel:backlight-does-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-renesas-r8a77951-salvator-x-panel-aa104xd12.dtb:panel:data-mapping:jeida-was-expected
|   |-- arch-arm64-boot-dts-renesas-r8a77951-salvator-x-panel-aa104xd12.dtb:panel:vcc-supply-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77951-salvator-xs-panel-aa104xd12.dtb:clock-generator-6a:idt-output-enable-active-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77951-salvator-xs-panel-aa104xd12.dtb:clock-generator-6a:idt-shutdown-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77951-salvator-xs-panel-aa104xd12.dtb:panel:backlight-does-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-renesas-r8a77951-salvator-xs-panel-aa104xd12.dtb:panel:data-mapping:jeida-was-expected
|   |-- arch-arm64-boot-dts-renesas-r8a77951-salvator-xs-panel-aa104xd12.dtb:panel:vcc-supply-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77960-salvator-x-panel-aa104xd12.dtb:clock-generator-6a:idt-output-enable-active-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77960-salvator-x-panel-aa104xd12.dtb:clock-generator-6a:idt-shutdown-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77960-salvator-x-panel-aa104xd12.dtb:panel:backlight-does-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-renesas-r8a77960-salvator-x-panel-aa104xd12.dtb:panel:data-mapping:jeida-was-expected
|   |-- arch-arm64-boot-dts-renesas-r8a77960-salvator-x-panel-aa104xd12.dtb:panel:vcc-supply-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77960-salvator-xs-panel-aa104xd12.dtb:clock-generator-6a:idt-output-enable-active-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77960-salvator-xs-panel-aa104xd12.dtb:clock-generator-6a:idt-shutdown-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77960-salvator-xs-panel-aa104xd12.dtb:panel:backlight-does-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-renesas-r8a77960-salvator-xs-panel-aa104xd12.dtb:panel:data-mapping:jeida-was-expected
|   |-- arch-arm64-boot-dts-renesas-r8a77960-salvator-xs-panel-aa104xd12.dtb:panel:vcc-supply-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77961-salvator-xs-panel-aa104xd12.dtb:clock-generator-6a:idt-output-enable-active-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77961-salvator-xs-panel-aa104xd12.dtb:clock-generator-6a:idt-shutdown-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77961-salvator-xs-panel-aa104xd12.dtb:panel:backlight-does-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-renesas-r8a77961-salvator-xs-panel-aa104xd12.dtb:panel:data-mapping:jeida-was-expected
|   |-- arch-arm64-boot-dts-renesas-r8a77961-salvator-xs-panel-aa104xd12.dtb:panel:vcc-supply-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77965-salvator-x-panel-aa104xd12.dtb:clock-generator-6a:idt-output-enable-active-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77965-salvator-x-panel-aa104xd12.dtb:clock-generator-6a:idt-shutdown-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77965-salvator-x-panel-aa104xd12.dtb:panel:backlight-does-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-renesas-r8a77965-salvator-x-panel-aa104xd12.dtb:panel:data-mapping:jeida-was-expected
|   |-- arch-arm64-boot-dts-renesas-r8a77965-salvator-x-panel-aa104xd12.dtb:panel:vcc-supply-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77965-salvator-xs-panel-aa104xd12.dtb:clock-generator-6a:idt-output-enable-active-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77965-salvator-xs-panel-aa104xd12.dtb:clock-generator-6a:idt-shutdown-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77965-salvator-xs-panel-aa104xd12.dtb:panel:backlight-does-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-renesas-r8a77965-salvator-xs-panel-aa104xd12.dtb:panel:data-mapping:jeida-was-expected
|   |-- arch-arm64-boot-dts-renesas-r8a77965-salvator-xs-panel-aa104xd12.dtb:panel:vcc-supply-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77970-eagle-function-expansion.dtb:gpio:vin0_adv7612_en-does-not-match-any-of-the-regexes:(hog-.-hog(-)-)-pinctrl
|   |-- arch-arm64-boot-dts-renesas-r8a77970-eagle-function-expansion.dtb:vin0_adv7612_en:nodename:vin0_adv7612_en-does-not-match-(hog-.-hog(-)-)
|   |-- arch-arm64-boot-dts-renesas-r8a77990-ebisu-panel-aa104xd12.dtb:panel:backlight-does-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-renesas-r8a77990-ebisu-panel-aa104xd12.dtb:panel:data-mapping:jeida-was-expected
|   |-- arch-arm64-boot-dts-renesas-r8a77990-ebisu-panel-aa104xd12.dtb:panel:vcc-supply-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a77995-draak-panel-aa104xd12.dtb:panel:backlight-does-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-renesas-r8a77995-draak-panel-aa104xd12.dtb:panel:data-mapping:jeida-was-expected
|   |-- arch-arm64-boot-dts-renesas-r8a77995-draak-panel-aa104xd12.dtb:panel:vcc-supply-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a779g0-white-hawk-ard-audio-da7212.dtb:soc-i2c-e6500000-codec-1a:failed-to-match-any-schema-with-compatible:dlg-da7212
|   |-- arch-arm64-boot-dts-renesas-r8a779m1-salvator-xs-panel-aa104xd12.dtb:clock-generator-6a:idt-output-enable-active-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a779m1-salvator-xs-panel-aa104xd12.dtb:clock-generator-6a:idt-shutdown-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a779m1-salvator-xs-panel-aa104xd12.dtb:panel:backlight-does-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-renesas-r8a779m1-salvator-xs-panel-aa104xd12.dtb:panel:data-mapping:jeida-was-expected
|   |-- arch-arm64-boot-dts-renesas-r8a779m1-salvator-xs-panel-aa104xd12.dtb:panel:vcc-supply-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a779m3-salvator-xs-panel-aa104xd12.dtb:clock-generator-6a:idt-output-enable-active-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a779m3-salvator-xs-panel-aa104xd12.dtb:clock-generator-6a:idt-shutdown-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a779m3-salvator-xs-panel-aa104xd12.dtb:panel:backlight-does-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-renesas-r8a779m3-salvator-xs-panel-aa104xd12.dtb:panel:data-mapping:jeida-was-expected
|   |-- arch-arm64-boot-dts-renesas-r8a779m3-salvator-xs-panel-aa104xd12.dtb:panel:vcc-supply-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a779m5-salvator-xs-panel-aa104xd12.dtb:clock-generator-6a:idt-output-enable-active-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a779m5-salvator-xs-panel-aa104xd12.dtb:clock-generator-6a:idt-shutdown-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r8a779m5-salvator-xs-panel-aa104xd12.dtb:panel:backlight-does-not-match-any-of-the-regexes:pinctrl
|   |-- arch-arm64-boot-dts-renesas-r8a779m5-salvator-xs-panel-aa104xd12.dtb:panel:data-mapping:jeida-was-expected
|   |-- arch-arm64-boot-dts-renesas-r8a779m5-salvator-xs-panel-aa104xd12.dtb:panel:vcc-supply-is-a-required-property
|   |-- arch-arm64-boot-dts-renesas-r9a07g054l2-smarc-cru-csi-ov5645.dtb:flash:Unevaluated-properties-are-not-allowed-(-compatible-was-unexpected)
|   |-- arch-arm64-boot-dts-renesas-r9a07g054l2-smarc-cru-csi-ov5645.dtb:flash:compatible:oneOf-conditional-failed-one-must-be-fixed:
|   |-- arch-arm64-boot-dts-renesas-r9a07g054l2-smarc-cru-csi-ov5645.dtb:soc-spi-flash:failed-to-match-any-schema-with-compatible:micron-mt25qu512a-jedec-spi-nor
|   |-- arch-arm64-boot-dts-renesas-r9a09g011-v2mevk2.dtb:ethernet-phy:compatible:ethernet-phy-id001c.c916-ethernet-phy-ieee802.-c22-is-too-long
|   |-- arch-arm64-boot-dts-rockchip-rk3368-lba3368.dtb:i2c-ff660000-codec-1c:failed-to-match-any-schema-with-compatible:realtek-rt5640
|   |-- arch-arm64-boot-dts-rockchip-rk3368-lba3368.dtb:mbox-ff6b0000:failed-to-match-any-schema-with-compatible:rockchip-rk3368-mailbox
|   |-- arch-arm64-boot-dts-ti-k3-am642-evm-nand.dtb:adc:ti-adc-channels-is-a-required-property
|   |-- arch-arm64-boot-dts-ti-k3-am642-evm-nand.dtb:gpio0:nodename:gpio0-does-not-match-(hog-.-hog(-)-)
|   |-- arch-arm64-boot-dts-ti-k3-am642-evm-nand.dtb:gpio:gpio0-does-not-match-any-of-the-regexes:(.-hog(-)-)-pinctrl
|   |-- arch-arm64-boot-dts-ti-k3-am642-evm-nand.dtb:nand:Unevaluated-properties-are-not-allowed-(-partitions-was-unexpected)
|   `-- arch-arm64-boot-dts-ti-k3-am642-evm-nand.dtb:pinctrl-f4000:gpmc0-pins-default-does-not-match-any-of-the-regexes:pins(-)-pin-pinctrl
|-- m68k-allmodconfig
|   |-- drivers-dio-dio-driver.c:error:initialization-of-int-(-)(struct-device-const-struct-device_driver-)-from-incompatible-pointer-type-int-(-)(struct-device-struct-device_driver-)
|   `-- drivers-zorro-zorro-driver.c:error:initialization-of-int-(-)(struct-device-const-struct-device_driver-)-from-incompatible-pointer-type-int-(-)(struct-device-struct-device_driver-)
|-- nios2-randconfig-001-20240709
|   |-- btmtk.c:(.text):relocation-truncated-to-fit:R_NIOS2_CALL26-against-usb_alloc_urb
|   |-- btmtk.c:(.text):relocation-truncated-to-fit:R_NIOS2_CALL26-against-usb_anchor_urb
|   |-- btmtk.c:(.text):relocation-truncated-to-fit:R_NIOS2_CALL26-against-usb_free_urb
|   |-- btmtk.c:(.text):relocation-truncated-to-fit:R_NIOS2_CALL26-against-usb_submit_urb
|   |-- btmtk.c:(.text):relocation-truncated-to-fit:R_NIOS2_CALL26-against-usb_unanchor_urb
|   |-- nios2-linux-ld:btmtk.c:(.text):undefined-reference-to-usb_anchor_urb
|   |-- nios2-linux-ld:btmtk.c:(.text):undefined-reference-to-usb_free_urb
|   |-- nios2-linux-ld:btmtk.c:(.text):undefined-reference-to-usb_kill_anchored_urbs
|   |-- nios2-linux-ld:btmtk.c:(.text):undefined-reference-to-usb_submit_urb
|   `-- nios2-linux-ld:btmtk.c:(.text):undefined-reference-to-usb_unanchor_urb
|-- powerpc-randconfig-051-20240708
|   `-- arch-powerpc-boot-dts-canyonlands.dtb:usbotg-bff80000:Unevaluated-properties-are-not-allowed-(-address-cells-interrupt-cells-size-cells-interrupt-map-interrupts-were-unexpected)
|-- riscv-randconfig-r033-20230517
|   `-- WARNING:modpost:vmlinux:section-mismatch-in-reference:remove_device-(section:.text)-.-(section:.init.text)
|-- sh-allmodconfig
|   `-- drivers-net-wireless-virtual-virt_wifi.c:error:initializer-element-is-not-constant
|-- sh-allyesconfig
|   |-- drivers-watchdog-bd96801_wdt.c:error:implicit-declaration-of-function-FIELD_GET
|   `-- drivers-watchdog-bd96801_wdt.c:error:implicit-declaration-of-function-FIELD_PREP
|-- sh-buildonly-randconfig-r006-20220515
|   |-- sh4-linux-ld:drivers-bluetooth-btmtk.c:(.text):undefined-reference-to-usb_anchor_urb
|   |-- sh4-linux-ld:drivers-bluetooth-btmtk.c:(.text):undefined-reference-to-usb_autopm_put_interface
|   |-- sh4-linux-ld:drivers-bluetooth-btmtk.c:(.text):undefined-reference-to-usb_free_urb
|   |-- sh4-linux-ld:drivers-bluetooth-btmtk.c:(.text):undefined-reference-to-usb_submit_urb
|   `-- sh4-linux-ld:drivers-bluetooth-btmtk.c:(.text):undefined-reference-to-usb_unanchor_urb
|-- sh-randconfig-r003-20221211
|   `-- standard-input:Error:unknown-pseudo-op:cfi_sta
|-- sparc-randconfig-001-20240709
|   `-- (.head.text):relocation-truncated-to-fit:R_SPARC_WDISP22-against-init.text
|-- sparc-randconfig-002-20240709
|   `-- (.head.text):relocation-truncated-to-fit:R_SPARC_WDISP22-against-init.text
`-- x86_64-randconfig-003-20240709
    `-- drivers-iio-gyro-adis16260.o:warning:objtool:adis16260_write_raw:can-t-find-jump-dest-instruction-at-.text

elapsed time: 727m

configs tested: 169
configs skipped: 5

tested configs:
alpha                             allnoconfig   gcc-13.2.0
alpha                            allyesconfig   gcc-13.2.0
alpha                               defconfig   gcc-13.2.0
arc                              allmodconfig   gcc-13.2.0
arc                               allnoconfig   gcc-13.2.0
arc                              allyesconfig   gcc-13.2.0
arc                                 defconfig   gcc-13.2.0
arc                   randconfig-001-20240709   gcc-13.2.0
arc                   randconfig-002-20240709   gcc-13.2.0
arm                              allmodconfig   gcc-13.2.0
arm                               allnoconfig   clang-19
arm                              allyesconfig   gcc-13.2.0
arm                                 defconfig   clang-14
arm                          ixp4xx_defconfig   gcc-13.2.0
arm                         nhk8815_defconfig   clang-19
arm                   randconfig-001-20240709   gcc-13.2.0
arm                   randconfig-002-20240709   clang-19
arm                   randconfig-003-20240709   clang-19
arm                   randconfig-004-20240709   gcc-13.2.0
arm64                            allmodconfig   clang-19
arm64                             allnoconfig   gcc-13.2.0
arm64                               defconfig   gcc-13.2.0
arm64                 randconfig-001-20240709   clang-19
arm64                 randconfig-002-20240709   clang-17
arm64                 randconfig-003-20240709   clang-19
arm64                 randconfig-004-20240709   clang-19
csky                              allnoconfig   gcc-13.2.0
csky                                defconfig   gcc-13.2.0
csky                  randconfig-001-20240709   gcc-13.2.0
csky                  randconfig-002-20240709   gcc-13.2.0
hexagon                          allmodconfig   clang-19
hexagon                           allnoconfig   clang-19
hexagon                          allyesconfig   clang-19
hexagon                             defconfig   clang-19
hexagon               randconfig-001-20240709   clang-19
hexagon               randconfig-002-20240709   clang-19
i386                             allmodconfig   gcc-13
i386                              allnoconfig   gcc-13
i386                             allyesconfig   gcc-13
i386         buildonly-randconfig-001-20240709   gcc-11
i386         buildonly-randconfig-002-20240709   gcc-13
i386         buildonly-randconfig-003-20240709   clang-18
i386         buildonly-randconfig-004-20240709   clang-18
i386         buildonly-randconfig-005-20240709   clang-18
i386         buildonly-randconfig-006-20240709   clang-18
i386                                defconfig   clang-18
i386                  randconfig-001-20240709   gcc-13
i386                  randconfig-002-20240709   clang-18
i386                  randconfig-003-20240709   gcc-11
i386                  randconfig-004-20240709   gcc-13
i386                  randconfig-005-20240709   gcc-13
i386                  randconfig-006-20240709   gcc-13
i386                  randconfig-011-20240709   clang-18
i386                  randconfig-012-20240709   gcc-13
i386                  randconfig-013-20240709   gcc-12
i386                  randconfig-014-20240709   clang-18
i386                  randconfig-015-20240709   clang-18
i386                  randconfig-016-20240709   gcc-10
loongarch                        allmodconfig   gcc-13.2.0
loongarch                         allnoconfig   gcc-13.2.0
loongarch                           defconfig   gcc-13.2.0
loongarch             randconfig-001-20240709   gcc-13.2.0
loongarch             randconfig-002-20240709   gcc-13.2.0
m68k                             allmodconfig   gcc-13.2.0
m68k                              allnoconfig   gcc-13.2.0
m68k                             allyesconfig   gcc-13.2.0
m68k                                defconfig   gcc-13.2.0
microblaze                       allmodconfig   gcc-13.2.0
microblaze                        allnoconfig   gcc-13.2.0
microblaze                       allyesconfig   gcc-13.2.0
microblaze                          defconfig   gcc-13.2.0
mips                              allnoconfig   gcc-13.2.0
mips                      malta_kvm_defconfig   gcc-13.2.0
mips                    maltaup_xpa_defconfig   gcc-13.2.0
nios2                         3c120_defconfig   gcc-13.2.0
nios2                             allnoconfig   gcc-13.2.0
nios2                               defconfig   gcc-13.2.0
nios2                 randconfig-001-20240709   gcc-13.2.0
nios2                 randconfig-002-20240709   gcc-13.2.0
openrisc                          allnoconfig   gcc-13.2.0
openrisc                         allyesconfig   gcc-13.2.0
openrisc                            defconfig   gcc-13.2.0
parisc                           allmodconfig   gcc-13.2.0
parisc                            allnoconfig   gcc-13.2.0
parisc                           allyesconfig   gcc-13.2.0
parisc                              defconfig   gcc-13.2.0
parisc                randconfig-001-20240709   gcc-13.2.0
parisc                randconfig-002-20240709   gcc-13.2.0
parisc64                            defconfig   gcc-13.2.0
powerpc                          allmodconfig   gcc-13.2.0
powerpc                           allnoconfig   gcc-13.2.0
powerpc                          allyesconfig   clang-19
powerpc                   lite5200b_defconfig   clang-14
powerpc                    mvme5100_defconfig   gcc-13.2.0
powerpc                      pcm030_defconfig   clang-19
powerpc                     powernv_defconfig   gcc-13.2.0
powerpc                         ps3_defconfig   gcc-13.2.0
powerpc               randconfig-001-20240709   clang-19
powerpc                     redwood_defconfig   clang-19
powerpc                      tqm8xx_defconfig   clang-19
powerpc64             randconfig-001-20240709   gcc-13.2.0
powerpc64             randconfig-002-20240709   gcc-13.2.0
powerpc64             randconfig-003-20240709   clang-19
riscv                            allmodconfig   clang-19
riscv                             allnoconfig   gcc-13.2.0
riscv                            allyesconfig   clang-19
riscv                               defconfig   clang-19
riscv                 randconfig-001-20240709   clang-17
riscv                 randconfig-002-20240709   gcc-13.2.0
s390                             allmodconfig   clang-19
s390                              allnoconfig   clang-19
s390                             allyesconfig   gcc-13.2.0
s390                                defconfig   clang-19
s390                  randconfig-001-20240709   gcc-13.2.0
s390                  randconfig-002-20240709   clang-19
sh                               allmodconfig   gcc-13.2.0
sh                                allnoconfig   gcc-13.2.0
sh                               allyesconfig   gcc-13.2.0
sh                                  defconfig   gcc-13.2.0
sh                ecovec24-romimage_defconfig   gcc-13.2.0
sh                    randconfig-001-20240709   gcc-13.2.0
sh                    randconfig-002-20240709   gcc-13.2.0
sh                           se7206_defconfig   gcc-13.2.0
sh                           se7619_defconfig   gcc-13.2.0
sparc                            allmodconfig   gcc-13.2.0
sparc64                          alldefconfig   gcc-13.2.0
sparc64                             defconfig   gcc-13.2.0
sparc64               randconfig-001-20240709   gcc-13.2.0
sparc64               randconfig-002-20240709   gcc-13.2.0
um                               allmodconfig   clang-19
um                                allnoconfig   clang-17
um                               allyesconfig   gcc-13
um                                  defconfig   clang-19
um                             i386_defconfig   gcc-13
um                    randconfig-001-20240709   gcc-13
um                    randconfig-002-20240709   gcc-11
um                           x86_64_defconfig   clang-15
x86_64                            allnoconfig   clang-18
x86_64                           allyesconfig   clang-18
x86_64       buildonly-randconfig-001-20240709   gcc-11
x86_64       buildonly-randconfig-002-20240709   clang-18
x86_64       buildonly-randconfig-003-20240709   clang-18
x86_64       buildonly-randconfig-004-20240709   gcc-9
x86_64       buildonly-randconfig-005-20240709   gcc-13
x86_64       buildonly-randconfig-006-20240709   clang-18
x86_64                              defconfig   gcc-13
x86_64                randconfig-001-20240709   clang-18
x86_64                randconfig-002-20240709   gcc-10
x86_64                randconfig-003-20240709   clang-18
x86_64                randconfig-004-20240709   gcc-12
x86_64                randconfig-005-20240709   gcc-13
x86_64                randconfig-006-20240709   gcc-8
x86_64                randconfig-011-20240709   clang-18
x86_64                randconfig-012-20240709   clang-18
x86_64                randconfig-013-20240709   clang-18
x86_64                randconfig-014-20240709   clang-18
x86_64                randconfig-015-20240709   clang-18
x86_64                randconfig-016-20240709   clang-18
x86_64                randconfig-071-20240709   gcc-7
x86_64                randconfig-072-20240709   clang-18
x86_64                randconfig-073-20240709   gcc-13
x86_64                randconfig-074-20240709   gcc-13
x86_64                randconfig-075-20240709   gcc-11
x86_64                randconfig-076-20240709   gcc-13
x86_64                          rhel-8.3-rust   clang-18
xtensa                            allnoconfig   gcc-13.2.0
xtensa                randconfig-001-20240709   gcc-13.2.0
xtensa                randconfig-002-20240709   gcc-13.2.0
xtensa                    xip_kc705_defconfig   gcc-13.2.0

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

.

Return-Path: <owner-linux-mm@kvack.org>
Date: Wed, 10 Jul 2024 07:30:53 +0800
From: kernel test robot <lkp@intel.com>
To: Mohan Kumar <mkumard@nvidia.com>
Cc: oe-kbuild-all@lists.linux.dev,
	Linux Memory Management List <linux-mm@kvack.org>,
	Mark Brown <broonie@kernel.org>, Sameer Pujar <spujar@nvidia.com>
Subject: [linux-next:master 1675/11980] arm-linux-gnueabi-ld:
 tegra210_i2s.c:undefined reference to `simple_util_get_sample_fmt'
Message-ID: <202407100702.G3amP5te-lkp@intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Sender: owner-linux-mm@kvack.org
X-Loop: owner-majordomo@kvack.org
List-ID: <linux-mm.kvack.org>
List-Subscribe: <mailto:majordomo@kvack.org>
List-Unsubscribe: <mailto:majordomo@kvack.org>
Xref: photonic.trudheim.com org.kvack.linux-mm:203170
Newsgroups: org.kvack.linux-mm,dev.linux.lists.oe-kbuild-all
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   82d01fe6ee52086035b201cfa1410a3b04384257
commit: 2502f8dd8c30edbca9253d5999294f58211039b1 [1675/11980] ASoC: tegra: I2S client convert formats handling
config: arm-randconfig-r034-20230422 (https://download.01.org/0day-ci/archive/20240710/202407100702.G3amP5te-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240710/202407100702.G3amP5te-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407100702.G3amP5te-lkp@intel.com/

All errors (new ones prefixed by >>):

   arm-linux-gnueabi-ld: sound/soc/tegra/tegra210_i2s.o: in function `tegra210_i2s_probe':
   tegra210_i2s.c:(.text+0xc80): undefined reference to `simple_util_parse_convert'
>> arm-linux-gnueabi-ld: tegra210_i2s.c:(.text+0xcb0): undefined reference to `simple_util_get_sample_fmt'

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

.

From: Ram Tummala <rtummala@nvidia.com>
To: akpm@linux-foundation.org,
	fengwei.yin@intel.com
Cc: willy@infradead.org,
	linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	apopple@nvidia.com,
	rtummala@nvidia.com,
	stable@vger.kernel.org
Subject: [PATCH] mm: Fix PTE_AF handling in fault path on architectures with HW AF support
Date: Tue,  9 Jul 2024 17:09:42 -0700
Message-Id: <20240710000942.623704-1-rtummala@nvidia.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272926 org.kvack.linux-mm:203171
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.stable,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Commit 3bd786f76de2 ("mm: convert do_set_pte() to set_pte_range()")
replaced do_set_pte() with set_pte_range() and that introduced a regression
in the following faulting path of non-anonymous vmas on CPUs with HW AF
support.

handle_pte_fault()
  do_pte_missing()
    do_fault()
      do_read_fault() || do_cow_fault() || do_shared_fault()
        finish_fault()
          set_pte_range()

The polarity of prefault calculation is incorrect. This leads to prefault
being incorrectly set for the faulting address. The following if check will
incorrectly clear the PTE_AF bit instead of setting it and the access will
fault again on the same address due to the missing PTE_AF bit.

    if (prefault && arch_wants_old_prefaulted_pte())
        entry = pte_mkold(entry);

On a subsequent fault on the same address, the faulting path will see a non
NULL vmf->pte and instead of reaching the do_pte_missing() path, PTE_AF
will be correctly set in handle_pte_fault() itself.

Due to this bug, performance degradation in the fault handling path will be
observed due to unnecessary double faulting.

Cc: stable@vger.kernel.org
Fixes: 3bd786f76de2 ("mm: convert do_set_pte() to set_pte_range()")
Signed-off-by: Ram Tummala <rtummala@nvidia.com>
---
 mm/memory.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/memory.c b/mm/memory.c
index 0a769f34bbb2..03263034a040 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -4781,7 +4781,7 @@ void set_pte_range(struct vm_fault *vmf, struct folio *folio,
 {
 	struct vm_area_struct *vma = vmf->vma;
 	bool write = vmf->flags & FAULT_FLAG_WRITE;
-	bool prefault = in_range(vmf->address, addr, nr * PAGE_SIZE);
+	bool prefault = !in_range(vmf->address, addr, nr * PAGE_SIZE);
 	pte_t entry;
 
 	flush_icache_pages(vma, page, nr);
-- 
2.34.1

.

From: Kees Cook <kees@kernel.org>
To: Catalin Marinas <catalin.marinas@arm.com>
Cc: Kees Cook <kees@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	linux-hardening@vger.kernel.org
Subject: [PATCH] mm/kmemleak: Replace strncpy() with strscpy()
Date: Tue,  9 Jul 2024 17:13:08 -0700
Message-Id: <20240710001300.work.004-kees@kernel.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272928 org.kvack.linux-mm:203172
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-hardening,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Replace the depreciated[1] strncpy() calls with strscpy(). Uses of
object->comm do not depend on the padding side-effect.

Link: https://github.com/KSPP/linux/issues/90 [1]
Signed-off-by: Kees Cook <kees@kernel.org>
---
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-mm@kvack.org
---
 mm/kmemleak.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/mm/kmemleak.c b/mm/kmemleak.c
index d5b6fba44fc9..764b08100570 100644
--- a/mm/kmemleak.c
+++ b/mm/kmemleak.c
@@ -657,10 +657,10 @@ static struct kmemleak_object *__alloc_object(gfp_t gfp)
 	/* task information */
 	if (in_hardirq()) {
 		object->pid = 0;
-		strncpy(object->comm, "hardirq", sizeof(object->comm));
+		strscpy(object->comm, "hardirq");
 	} else if (in_serving_softirq()) {
 		object->pid = 0;
-		strncpy(object->comm, "softirq", sizeof(object->comm));
+		strscpy(object->comm, "softirq");
 	} else {
 		object->pid = current->pid;
 		/*
@@ -669,7 +669,7 @@ static struct kmemleak_object *__alloc_object(gfp_t gfp)
 		 * dependency issues with current->alloc_lock. In the worst
 		 * case, the command line is not correct.
 		 */
-		strncpy(object->comm, current->comm, sizeof(object->comm));
+		strscpy(object->comm, current->comm);
 	}
 
 	/* kernel backtrace */
-- 
2.34.1

.

References: <20240710000942.623704-1-rtummala@nvidia.com>
 <Zo3SN_qlYUWLAlyR@casper.infradead.org>
From: Alistair Popple <apopple@nvidia.com>
To: Matthew Wilcox <willy@infradead.org>
Cc: Ram Tummala <rtummala@nvidia.com>, akpm@linux-foundation.org,
 fengwei.yin@intel.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org,
 stable@vger.kernel.org
Subject: Re: [PATCH] mm: Fix PTE_AF handling in fault path on architectures
 with HW AF support
Date: Wed, 10 Jul 2024 11:02:03 +1000
In-reply-to: <Zo3SN_qlYUWLAlyR@casper.infradead.org>
Message-ID: <875xtevyw6.fsf@nvdebian.thelocal>
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272944 org.kvack.linux-mm:203175
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.stable,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail


Matthew Wilcox <willy@infradead.org> writes:

> On Tue, Jul 09, 2024 at 05:09:42PM -0700, Ram Tummala wrote:
>> Commit 3bd786f76de2 ("mm: convert do_set_pte() to set_pte_range()")
>> replaced do_set_pte() with set_pte_range() and that introduced a regression
>> in the following faulting path of non-anonymous vmas on CPUs with HW AF
>
> At no point in this do you say what "AF" stands for.

It stands for "Access Flag", but that is specific to ARM64. As the fix
is in generic architecture independent code it would be better to use
that terminology (ie. old/young).
.

From: Ram Tummala <rtummala@nvidia.com>
To: akpm@linux-foundation.org,
	fengwei.yin@intel.com
Cc: willy@infradead.org,
	linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	apopple@nvidia.com,
	rtummala@nvidia.com,
	stable@vger.kernel.org
Subject: [PATCH v2] mm: Fix old/young bit handling in the faulting path
Date: Tue,  9 Jul 2024 18:45:39 -0700
Message-Id: <20240710014539.746200-1-rtummala@nvidia.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272956 org.kvack.linux-mm:203177
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.stable,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Commit 3bd786f76de2 ("mm: convert do_set_pte() to set_pte_range()")
replaced do_set_pte() with set_pte_range() and that introduced a regression
in the following faulting path of non-anonymous vmas which caused the PTE
for the faulting address to be marked as old instead of young.

handle_pte_fault()
  do_pte_missing()
    do_fault()
      do_read_fault() || do_cow_fault() || do_shared_fault()
        finish_fault()
          set_pte_range()

The polarity of prefault calculation is incorrect. This leads to prefault
being incorrectly set for the faulting address. The following check will
incorrectly mark the PTE old rather than young. On some architectures this
will cause a double fault to mark it young when the access is retried.

    if (prefault && arch_wants_old_prefaulted_pte())
        entry = pte_mkold(entry);

On a subsequent fault on the same address, the faulting path will see a non
NULL vmf->pte and instead of reaching the do_pte_missing() path, PTE
will then be correctly marked young in handle_pte_fault() itself.

Due to this bug, performance degradation in the fault handling path will be
observed due to unnecessary double faulting.

Cc: stable@vger.kernel.org
Fixes: 3bd786f76de2 ("mm: convert do_set_pte() to set_pte_range()")
Signed-off-by: Ram Tummala <rtummala@nvidia.com>
Reviewed-by: Yin Fengwei <fengwei.yin@intel.com>
---
 mm/memory.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/memory.c b/mm/memory.c
index 0a769f34bbb2..03263034a040 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -4781,7 +4781,7 @@ void set_pte_range(struct vm_fault *vmf, struct folio *folio,
 {
 	struct vm_area_struct *vma = vmf->vma;
 	bool write = vmf->flags & FAULT_FLAG_WRITE;
-	bool prefault = in_range(vmf->address, addr, nr * PAGE_SIZE);
+	bool prefault = !in_range(vmf->address, addr, nr * PAGE_SIZE);
 	pte_t entry;
 
 	flush_icache_pages(vma, page, nr);
-- 
2.34.1

.

From: alexs@kernel.org
To: Christoph Lameter <cl@linux.com>,
	Pekka Enberg <penberg@kernel.org>,
	David Rientjes <rientjes@google.com>,
	Joonsoo Kim <iamjoonsoo.kim@lge.com>,
	Vlastimil Babka <vbabka@suse.cz>,
	Roman Gushchin <roman.gushchin@linux.dev>,
	Hyeonggon Yoo <42.hyeyoo@gmail.com>,
	"Gustavo A . R . Silva" <gustavoars@kernel.org>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	linux-mm@kvack.org,
	linux-kernel@vger.kernel.org
Cc: Petr Mladek <pmladek@suse.com>,
	Masahiro Yamada <masahiroy@kernel.org>,
	Randy Dunlap <rdunlap@infradead.org>,
	Yoann Congal <yoann.congal@smile.fr>,
	"Alex Shi (Tencent)" <alexs@kernel.org>,
	Suren Baghdasaryan <surenb@google.com>
Subject: [PATCH v2] mm/memcg: alignment memcg_data define condition
Date: Wed, 10 Jul 2024 09:56:08 +0800
Message-ID: <20240710015608.100801-1-alexs@kernel.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272962 org.kvack.linux-mm:203179
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: "Alex Shi (Tencent)" <alexs@kernel.org>

commit 21c690a349ba ("mm: introduce slabobj_ext to support slab object
extensions") changed the folio/page->memcg_data define condition from
MEMCG to SLAB_OBJ_EXT. And selected SLAB_OBJ_EXT for MEMCG, just for
SLAB_MATCH(memcg_data, obj_exts), even no other relationship between them.

Above action make memcg_data exposed and include SLAB_OBJ_EXT for
!MEMCG. That's incorrect in logcial and pay on code size.

So let's remove SLAB_OBJ_EXT from MEMCG and as Vlastimil Babka suggested,
add _unused_slab_obj_ext for SLAB_MATCH for slab.obj_exts while !MEMCG.
That could resolve the match issue, clean up the feature logical and
save the unnessary code adding.

Signed-off-by: Alex Shi (Tencent) <alexs@kernel.org>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Yoann Congal <yoann.congal@smile.fr>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Petr Mladek <pmladek@suse.com>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
---
 include/linux/mm_types.h | 8 ++++++--
 init/Kconfig             | 1 -
 mm/slab.h                | 4 ++++
 3 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index ef09c4eef6d3..4ac3abc673d3 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -180,8 +180,10 @@ struct page {
 	/* Usage count. *DO NOT USE DIRECTLY*. See page_ref.h */
 	atomic_t _refcount;
 
-#ifdef CONFIG_SLAB_OBJ_EXT
+#ifdef CONFIG_MEMCG
 	unsigned long memcg_data;
+#elif defined(CONFIG_SLAB_OBJ_EXT)
+	unsigned long _unused_slab_obj_ext;
 #endif
 
 	/*
@@ -343,8 +345,10 @@ struct folio {
 			};
 			atomic_t _mapcount;
 			atomic_t _refcount;
-#ifdef CONFIG_SLAB_OBJ_EXT
+#ifdef CONFIG_MEMCG
 			unsigned long memcg_data;
+#elif defined(CONFIG_SLAB_OBJ_EXT)
+			unsigned long _unused_slab_obj_ext;
 #endif
 #if defined(WANT_PAGE_VIRTUAL)
 			void *virtual;
diff --git a/init/Kconfig b/init/Kconfig
index 26bf8bb0a7ce..61e43ac9fe75 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -965,7 +965,6 @@ config MEMCG
 	bool "Memory controller"
 	select PAGE_COUNTER
 	select EVENTFD
-	select SLAB_OBJ_EXT
 	help
 	  Provides control over the memory footprint of tasks in a cgroup.
 
diff --git a/mm/slab.h b/mm/slab.h
index 3586e6183224..8ffdd4f315f8 100644
--- a/mm/slab.h
+++ b/mm/slab.h
@@ -98,7 +98,11 @@ SLAB_MATCH(flags, __page_flags);
 SLAB_MATCH(compound_head, slab_cache);	/* Ensure bit 0 is clear */
 SLAB_MATCH(_refcount, __page_refcount);
 #ifdef CONFIG_SLAB_OBJ_EXT
+#ifdef CONFIG_MEMCG
 SLAB_MATCH(memcg_data, obj_exts);
+#else
+SLAB_MATCH(_unused_slab_obj_ext, obj_exts);
+#endif
 #endif
 #undef SLAB_MATCH
 static_assert(sizeof(struct slab) <= sizeof(struct page));
-- 
2.43.0

.

Return-Path: <owner-linux-mm@kvack.org>
From: Qu Wenruo <wqu@suse.com>
To: linux-btrfs@vger.kernel.org,
	linux-mm@kvack.org,
	linux-fsdevel@vger.kernel.org
Subject: [PATCH 0/2] mm: skip memcg for certain address space
Date: Wed, 10 Jul 2024 10:37:45 +0930
Message-ID: <cover.1720572937.git.wqu@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: owner-linux-mm@kvack.org
X-Loop: owner-majordomo@kvack.org
List-ID: <linux-mm.kvack.org>
List-Subscribe: <mailto:majordomo@kvack.org>
List-Unsubscribe: <mailto:majordomo@kvack.org>
Xref: photonic.trudheim.com org.kvack.linux-mm:203181
Newsgroups: org.kvack.linux-mm,org.kernel.vger.linux-btrfs,org.kernel.vger.linux-fsdevel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Recently I'm hitting soft lockup if adding an order 2 folio to a
filemap using GFP_NOFS | __GFP_NOFAIL. The softlockup happens at memcg
charge code, and I guess that's exactly what __GFP_NOFAIL is expected to
do, wait indefinitely until the request can be met.

On the other hand, if we do not use __GFP_NOFAIL, we can be limited by
memcg at a lot of critical location, and lead to unnecessary transaction
abort just due to memcg limit.

However for that specific btrfs call site, there is really no need charge
the memcg, as that address space belongs to btree inode, which is not
accessible to any end user, and that btree inode is a shared pool for
all metadata of a btrfs.

So this patchset introduces a new address space flag, AS_NO_MEMCG, so
that folios added to that address space will not trigger any memcg
charge.

This would be the basis for future btrfs changes, like removing
__GFP_NOFAIL completely and larger metadata folios.

Qu Wenruo (2):
  mm: make lru_gen_eviction() to handle folios without memcg info
  mm: allow certain address space to be not accounted by memcg

 fs/btrfs/disk-io.c      |  1 +
 include/linux/pagemap.h |  1 +
 mm/filemap.c            | 12 +++++++++---
 mm/workingset.c         |  2 +-
 4 files changed, 12 insertions(+), 4 deletions(-)

-- 
2.45.2


.

Return-Path: <owner-linux-mm@kvack.org>
Date: Wed, 10 Jul 2024 09:13:52 +0800
From: kernel test robot <lkp@intel.com>
To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
	Linux Memory Management List <linux-mm@kvack.org>,
	Sebastian Reichel <sebastian.reichel@collabora.com>,
	Ilpo =?iso-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>
Subject: [linux-next:master 7643/11980] ERROR: modpost:
 "__auxiliary_driver_register"
 [drivers/power/supply/lenovo_yoga_c630_battery.ko] undefined!
Message-ID: <202407100953.a1cvUHEW-lkp@intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Sender: owner-linux-mm@kvack.org
X-Loop: owner-majordomo@kvack.org
List-ID: <linux-mm.kvack.org>
List-Subscribe: <mailto:majordomo@kvack.org>
List-Unsubscribe: <mailto:majordomo@kvack.org>
Xref: photonic.trudheim.com org.kvack.linux-mm:203184
Newsgroups: org.kvack.linux-mm,dev.linux.lists.llvm,dev.linux.lists.oe-kbuild-all
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi Dmitry,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   82d01fe6ee52086035b201cfa1410a3b04384257
commit: db9cc848128eb174b24a5dff82fc3e7589a3bf25 [7643/11980] power: supply: lenovo_yoga_c630_battery: add Lenovo C630 driver
config: powerpc-randconfig-002-20240710 (https://download.01.org/0day-ci/archive/20240710/202407100953.a1cvUHEW-lkp@intel.com/config)
compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project a0c6b8aef853eedaa0980f07c0a502a5a8a9740e)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240710/202407100953.a1cvUHEW-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407100953.a1cvUHEW-lkp@intel.com/

Note: the linux-next/master HEAD 82d01fe6ee52086035b201cfa1410a3b04384257 builds fine.
      It may have been fixed somewhere.

All errors (new ones prefixed by >>, old ones prefixed by <<):

WARNING: modpost: missing MODULE_DESCRIPTION() in fs/nls/nls_iso8859-5.o
WARNING: modpost: missing MODULE_DESCRIPTION() in fs/nls/nls_iso8859-6.o
WARNING: modpost: missing MODULE_DESCRIPTION() in fs/nls/nls_cp1255.o
WARNING: modpost: missing MODULE_DESCRIPTION() in fs/nls/nls_iso8859-9.o
WARNING: modpost: missing MODULE_DESCRIPTION() in fs/nls/nls_iso8859-13.o
WARNING: modpost: missing MODULE_DESCRIPTION() in fs/nls/nls_iso8859-15.o
WARNING: modpost: missing MODULE_DESCRIPTION() in fs/nls/nls_koi8-r.o
WARNING: modpost: missing MODULE_DESCRIPTION() in fs/nls/mac-cyrillic.o
WARNING: modpost: missing MODULE_DESCRIPTION() in fs/nls/mac-gaelic.o
WARNING: modpost: missing MODULE_DESCRIPTION() in fs/nls/mac-greek.o
WARNING: modpost: missing MODULE_DESCRIPTION() in fs/nls/mac-romanian.o
WARNING: modpost: missing MODULE_DESCRIPTION() in fs/nls/nls_ucs2_utils.o
WARNING: modpost: missing MODULE_DESCRIPTION() in fs/binfmt_misc.o
WARNING: modpost: missing MODULE_DESCRIPTION() in fs/fat/fat.o
WARNING: modpost: missing MODULE_DESCRIPTION() in fs/hfs/hfs.o
WARNING: modpost: missing MODULE_DESCRIPTION() in fs/sysv/sysv.o
WARNING: modpost: missing MODULE_DESCRIPTION() in fs/efs/efs.o
WARNING: modpost: missing MODULE_DESCRIPTION() in fs/adfs/adfs.o
WARNING: modpost: missing MODULE_DESCRIPTION() in crypto/xor.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/kunit/kunit.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/math/prime_numbers.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/crypto/libchacha.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/crypto/libdes.o
WARNING: modpost: missing MODULE_DESCRIPTION() in lib/zlib_deflate/zlib_deflate.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/gpio/gpio-gw-pld.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/gpio/gpio-pcf857x.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/pwm/pwm-imx1.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/pwm/pwm-intel-lgm.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/pwm/pwm-pxa.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/pwm/pwm-visconti.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/pci/controller/pcie-mediatek-gen3.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/pci/pci-stub.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/video/fbdev/macmodes.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/video/fbdev/via/viafb.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/video/fbdev/kyro/kyrofb.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/video/fbdev/offb.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/soc/imx/soc-imx8m.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/soc/ixp4xx/ixp4xx-npe.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/soc/amlogic/meson-clk-measure.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/soc/qcom/spm.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/regulator/da9121-regulator.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/regulator/max20411-regulator.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/regulator/tps6286x-regulator.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/char/hw_random/omap-rng.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/char/nvram.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/base/regmap/regmap-kunit.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/base/regmap/regmap-i2c.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/base/regmap/regmap-ram.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/base/regmap/regmap-raw-ram.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/base/regmap/regmap-spmi.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/base/regmap/regmap-spi-avmm.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/block/floppy.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/misc/fastrpc.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mfd/rt4831.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mfd/qcom-pm8008.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/cxl/cxl_pci.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/cxl/cxl_mem.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/cxl/cxl_pmem.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mtd/parsers/tplink_safeloader.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mtd/chips/cfi_util.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/spi/spi-altera-core.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/spi/spi-fsl-lib.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/spi/spi-omap2-mcspi.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/firewire/uapi-test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/cdrom/cdrom.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/input/matrix-keymap.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/rtc/rtc-goldfish.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/i2c/busses/i2c-ccgx-ucsi.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/i2c/busses/i2c-ali1563.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/i2c/busses/i2c-pxa.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/watchdog/omap_wdt.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/watchdog/menz69_wdt.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mmc/host/of_mmc_spi.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mmc/host/tmio_mmc_core.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mmc/host/renesas_sdhi_core.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mmc/core/mmc_core.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/firmware/google/framebuffer-coreboot.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-cherry.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-cypress.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-emsff.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-petalynx.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-redragon.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-saitek.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-sjoy.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-tivo.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-topseed.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-twinhan.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-waltop.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/of/of_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/devfreq/governor_simpleondemand.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/devfreq/governor_powersave.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/perf/arm-ccn.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/perf/fsl_imx8_ddr_perf.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/nvmem/nvmem-apple-efuses.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/siox/siox-bus-gpio.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/pcmcia/pcmcia_rsrc.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/iio/adc/ingenic-adc.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/iio/adc/xilinx-ams.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/iio/buffer/kfifo_buf.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/counter/ftm-quaddec.o
>> ERROR: modpost: "__auxiliary_driver_register" [drivers/power/supply/lenovo_yoga_c630_battery.ko] undefined!
>> ERROR: modpost: "auxiliary_driver_unregister" [drivers/power/supply/lenovo_yoga_c630_battery.ko] undefined!
ERROR: modpost: "auxiliary_device_init" [drivers/platform/arm64/lenovo-yoga-c630.ko] undefined!
ERROR: modpost: "__auxiliary_device_add" [drivers/platform/arm64/lenovo-yoga-c630.ko] undefined!

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

.

From: Zhiguo Jiang <justinjiang@vivo.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	Barry Song <baohua@kernel.org>,
	David Hildenbrand <david@redhat.com>,
	Matthew Wilcox <willy@infradead.org>
Cc: opensource.kernel@vivo.com,
	Zhiguo Jiang <justinjiang@vivo.com>
Subject: [PATCH v8] mm: shrink skip folio mapped by an exiting process
Date: Wed, 10 Jul 2024 10:39:01 +0800
Message-ID: <20240710023901.1624-1-justinjiang@vivo.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272992 org.kvack.linux-mm:203189
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The releasing process of the non-shared anonymous folio mapped solely by
an exiting process may go through two flows: 1) the anonymous folio is
firstly is swaped-out into swapspace and transformed into a swp_entry
in shrink_folio_list; 2) then the swp_entry is released in the process
exiting flow. This will result in the high cpu load of releasing a
non-shared anonymous folio mapped solely by an exiting process.

When the low system memory and the exiting process exist at the same
time, it will be likely to happen, because the non-shared anonymous
folio mapped solely by an exiting process may be reclaimed by
shrink_folio_list.

This patch is that shrink skips the non-shared anonymous folio solely
mapped by an exting process and this folio is only released directly in
the process exiting flow, which will save swap-out time and alleviate
the load of the process exiting. 

Reviewed-by: Matthew Wilcox <willy@infradead.org>
Reviewed-by: David Hildenbrand <david@redhat.com>
Acked-by: Barry Song <baohua@kernel.org>
Signed-off-by: Zhiguo Jiang <justinjiang@vivo.com>
---

Change log:
v7->v8:
1.Add tags of Reviewed-by and Acked-by.
2.Add #include <linux/oom.h> to solve compilation issue.
v6->v7:
1.Modify tab indentation to space indentation of the continuation
lines of the condition.
v5->v6:
1.Move folio_likely_mapped_shared() under the PTL.
2.Add check_stable_address_space() to replace MMF_OOM_SKIP.
3.Remove folio_test_anon(folio).
v4->v5:
1.Further modify to skip non-shared anonymous folio only.
2.Update comments for pra->referenced = -1.
v3->v4:
1.Modify to skip only the non-shared anonymous folio mapped solely
by an exiting process.
v2->v3:
Nothing.
v1->v2:
1.The VM_EXITING added in v1 patch is removed, because it will fail
to compile in 32-bit system.

Comments from participants and my responses:
[v7->v8]:
1.Barry Song <baohua@kernel.org>
You should have collected tags such as reviewed-by, acked-by you got in
v6 while sending v7.
-->
Added in patch v8.

You didn't even pass the compilation stage because you're missing
'linux/oom.h'. It's quite disappointing because I believe in your idea,
but you didn't even build it before sending.
-->
Sorry, I overlooked the compilation of folio_likely_mapped_shared() added
in patch v5. Compiled and Updated have been compeleted in patch v8.

[v6->v7]:
1.Matthew Wilcox <willy@infradead.org>
You told me you'd fix the indentation.  You cannot indent both the
continuation lines of the condition and the body of the if by one tab
each!
-->
Modify tab indentation to space indentation of the continuation
lines of the condition.

[v5->v6]:
1.David Hildenbrand <david@redhat.com>
I'm currently working on moving all folio_likely_mapped_shared() under
the PTL, where we are then sure that the folio is actually mapped by
this process (e.g., no concurrent unmapping poisslbe). Can we do the
same here directly? 
-->
You are right. we might use page_vma_mapped_walk_done() to bail out.
(Barry Song)

2.Barry Song <baohua@kernel.org>
By the way, I am not convinced that using test_bit(MMF_OOM_SKIP,
&vma->vm_mm->flags) is correct (I think it is wrong). And exit_mmap()
automatically has MMF_OOM_SKIP. What is the purpose of this check?
Is there a better way to determine if a process is an OOM target?
What about check_stable_address_space() ?
-->
Sorry, I overlook the situation with if (is_global_init(p)),
MMF_OOM_SKIP is indeed not suitable. It seems feasible for
check_stable_address_space() replacing MMF_OOM_SKIP.
check_stable_address_space() can indicate oom kill, and
!atomic_read(&vma->vm_mm->mm_users) can indicate the normal
process exiting. 

I also think we actually can remove "folio_test_anon(folio)".
-->
Yes, update in patch v6.

[v4->v5]:
1.Barry Song <baohua@kernel.org>
I don't think this is correct. folio_likely_mapped_shared() is almost
"correct" but not always.
Please explain why you set  pra->referenced =  -1. Please address all
comments before you send a new version.
-->
Update in patch v5.

2.Matthew Wilcox <willy@infradead.org>
How is the file folio similar?  File folios are never written to swap,
and they'll be written back from the page cache whenever the filesystem
decides it's a good time to do so.
-->
What do you mean is that the file folio will not have any relevant
identifier left in memory after it is reclamed in the shrink flow,
and it will not be released again during an exiting process? If that's
the case, I think we only need the anon folio is skipped here. 

[v3->v4]:
1.Barry Song <baohua@kernel.org>
This is clearly version 3, as you previously sent version 2, correct?
-->
Yes.

Could you please describe the specific impact on users, including user
experience and power consumption? How serious is this problem?
-->
At present, I do not have a suitable method to accurately measure the
optimization benefit datas of this modifications, but I believe it
theoretically has some benefits.
Launching large memory app (for example, starting the camera) in multiple
backend scenes may result in the high cpu load of the exiting processes. 

Applications?
-->
Yes, when system is low memory, it more likely to occur.

I'm not completely convinced this patch is correct, but it appears to be
heading in the right direction. Therefore, I expect to see new versions
rather than it being dead.
You changed the file mode to 755, which is incorrect.
-->
Solved.

Why use -1? Is this meant to simulate lock contention to keep the folio
without activating it? Please do have some comments to explain why.
I'm not convinced this change is appropriate for shared folios. It seems
more suitable for exclusive folios used solely by the exiting process.
-->
The skiped folios are FOLIOREF_KEEP and added into inactive lru, beacase
the folios will be freed soon in the exiting process flow.
Yes, the shared folios can not be simply skipped. I have made relevant
modifications in patch v4 and please help to further review.
https://lore.kernel.org/linux-mm/20240708031517.856-1-justinjiang@vivo.com/

2.David Hildenbrand <david@redhat.com>
but what if it is shared among multiple processes and only one of them
is exiting?
-->
Modify to skip only the non-shared anonymous folio mapped solely
by an exiting process in next version v4.

[v2->v3:]
Nothing.

[v1->v2]:
1.Matthew Wilcox <willy@infradead.org>
What testing have you done of this patch?  How often does it happen?
Are there particular workloads that benefit from this?  (I'm not sure
what "mutil backed-applications" are?)
And I do mean specifically of this patch, because to my eyes it
shouldn't even compile. Except on 32-bit where it'll say "warning:
integer constant out of range".
-->
Yes, I have tested. When the low system memory and the exiting process
exist at the same time, it will happen. This modification can alleviate
the load of the exiting process. 
"mutil backed-applications" means that there are a large number of
the backend applications in the system.
The VM_EXITING added in v1 patch is removed, because it will fail
to compile in 32-bit system.

 mm/rmap.c   | 15 +++++++++++++++
 mm/vmscan.c |  7 ++++++-
 2 files changed, 21 insertions(+), 1 deletion(-)
 mode change 100644 => 100755 mm/rmap.c

diff --git a/mm/rmap.c b/mm/rmap.c
index 26806b49a86f..5b92c3dadcc2 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -75,6 +75,7 @@
 #include <linux/memremap.h>
 #include <linux/userfaultfd_k.h>
 #include <linux/mm_inline.h>
+#include <linux/oom.h>
 
 #include <asm/tlbflush.h>
 
@@ -870,6 +871,20 @@ static bool folio_referenced_one(struct folio *folio,
 			continue;
 		}
 
+		/*
+		 * Skip the non-shared swapbacked folio mapped solely by
+		 * the exiting or OOM-reaped process. This avoids redundant
+		 * swap-out followed by an immediate unmap.
+		 */
+		if ((!atomic_read(&vma->vm_mm->mm_users) ||
+		    check_stable_address_space(vma->vm_mm)) &&
+		    folio_test_swapbacked(folio) &&
+		    !folio_likely_mapped_shared(folio)) {
+			pra->referenced = -1;
+			page_vma_mapped_walk_done(&pvmw);
+			return false;
+		}
+
 		if (pvmw.pte) {
 			if (lru_gen_enabled() &&
 			    pte_young(ptep_get(pvmw.pte))) {
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 80f9a486cf27..1d5f78a3dbeb 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -863,7 +863,12 @@ static enum folio_references folio_check_references(struct folio *folio,
 	if (vm_flags & VM_LOCKED)
 		return FOLIOREF_ACTIVATE;
 
-	/* rmap lock contention: rotate */
+	/*
+	 * There are two cases to consider.
+	 * 1) Rmap lock contention: rotate.
+	 * 2) Skip the non-shared swapbacked folio mapped solely by
+	 *    the exiting or OOM-reaped process.
+	 */
 	if (referenced_ptes == -1)
 		return FOLIOREF_KEEP;
 
-- 
2.39.0

.

Date: Wed, 10 Jul 2024 10:51:29 +0800
From: kernel test robot <oliver.sang@intel.com>
To: Usama Arif <usamaarif642@gmail.com>
CC: <oe-lkp@lists.linux.dev>, <lkp@intel.com>, Linux Memory Management List
	<linux-mm@kvack.org>, Andrew Morton <akpm@linux-foundation.org>, "Chengming
 Zhou" <chengming.zhou@linux.dev>, Yosry Ahmed <yosryahmed@google.com>, "Nhat
 Pham" <nphamcs@gmail.com>, Johannes Weiner <hannes@cmpxchg.org>, "David
 Hildenbrand" <david@redhat.com>, "Huang, Ying" <ying.huang@intel.com>, "Hugh
 Dickins" <hughd@google.com>, Matthew Wilcox <willy@infradead.org>, "Shakeel
 Butt" <shakeel.butt@linux.dev>, Andi Kleen <ak@linux.intel.com>,
	<linux-kernel@vger.kernel.org>, <ltp@lists.linux.it>, <oliver.sang@intel.com>
Subject: [linux-next:master] [mm]  47325a5c88:
 WARNING:at_mm/slub.c:#free_large_kmalloc
Message-ID: <202407101031.c6c3c651-lkp@intel.com>
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272998 org.kvack.linux-mm:203192
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.oe-lkp,it.linux.lists.ltp,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail



Hello,

kernel test robot noticed "WARNING:at_mm/slub.c:#free_large_kmalloc" on:

commit: 47325a5c88c5ee373c973e47c27c7dadcfe88a32 ("mm-store-zero-pages-to-be-swapped-out-in-a-bitmap-v8")
https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git master

[test failed on linux-next/master 82d01fe6ee52086035b201cfa1410a3b04384257]

in testcase: ltp
version: ltp-x86_64-14c1f76-1_20240706
with following parameters:

	test: commands



compiler: gcc-13
test machine: 8 threads 1 sockets Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz (Ivy Bridge) with 16G memory

(please refer to attached dmesg/kmsg for entire log/backtrace)



If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <oliver.sang@intel.com>
| Closes: https://lore.kernel.org/oe-lkp/202407101031.c6c3c651-lkp@intel.com


The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20240710/202407101031.c6c3c651-lkp@intel.com



kern  :warn  : [  455.633948] Swap area shorter than signature indicates
kern  :warn  : [  455.634133] ------------[ cut here ]------------
kern  :warn  : [  455.634268] WARNING: CPU: 3 PID: 8129 at mm/slub.c:4538 free_large_kmalloc+0x93/0xe0
kern  :warn  : [  455.635173] Modules linked in: msdos minix vfat fat xfs ext2 netconsole btrfs blake2b_generic xor zstd_compress raid6_pq libcrc32c intel_rapl_msr intel_rapl_common sd_mod x86_pkg_temp_thermal t10_pi intel_powerclamp coretemp crc64_rocksoft_generic crc64_rocksoft crc64 kvm_intel sg ipmi_devintf ipmi_msghandler i915 kvm crct10dif_pclmul crc32_pclmul crc32c_intel ghash_clmulni_intel sha512_ssse3 drm_buddy intel_gtt firewire_ohci rapl mxm_wmi intel_cstate drm_display_helper firewire_core ahci libahci crc_itu_t i2c_i801 intel_uncore ttm libata drm_kms_helper i2c_smbus lpc_ich video wmi binfmt_misc drm loop fuse dm_mod ip_tables
kern  :warn  : [  455.636742] CPU: 3 PID: 8129 Comm: swapon Not tainted 6.10.0-rc6-00357-g47325a5c88c5 #1
kern  :warn  : [  455.636935] Hardware name:  /DZ77BH-55K, BIOS BHZ7710H.86A.0097.2012.1228.1346 12/28/2012
kern  :warn  : [  455.637127] RIP: 0010:free_large_kmalloc+0x93/0xe0
kern  :warn  : [  455.637267] Code: 00 41 f7 c4 00 02 00 00 74 01 fb f0 ff 4b 34 74 0b 5b 5d 41 5c 41 5d c3 cc cc cc cc 48 89 df 5b 5d 41 5c 41 5d e9 8d 3f eb ff <0f> 0b 80 3d 14 d8 06 04 00 74 1c 48 89 ef e8 ea b0 1d 02 48 8b 74
kern  :warn  : [  455.637951] RSP: 0018:ffffc9000247fdd8 EFLAGS: 00010246
kern  :warn  : [  455.638098] RAX: 0017ffffc0000000 RBX: ffffea00055cf900 RCX: 0000000000000000
kern  :warn  : [  455.638273] RDX: ffffea0005bb6508 RSI: ffff8881573e4000 RDI: ffffea00055cf900
kern  :warn  : [  455.638505] RBP: ffff8881573e4000 R08: 0000000000000001 R09: fffff5200048ffb5
kern  :warn  : [  455.638679] R10: 0000000000000003 R11: 0000000000000001 R12: ffff8881ee6b2c28
kern  :warn  : [  455.638853] R13: ffff8881393c7890 R14: 00000000ffffffea R15: ffff8881393c7800
kern  :warn  : [  455.639028] FS:  00007fa00e70c840(0000) GS:ffff88833c580000(0000) knlGS:0000000000000000
kern  :warn  : [  455.639218] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
kern  :warn  : [  455.639424] CR2: 00005624b13e8000 CR3: 00000003df01e002 CR4: 00000000001706f0
kern  :warn  : [  455.639600] Call Trace:
kern  :warn  : [  455.639695]  <TASK>
kern  :warn  : [  455.639787]  ? __warn+0xcc/0x260
kern  :warn  : [  455.639900]  ? free_large_kmalloc+0x93/0xe0
kern  :warn  : [  455.640025]  ? report_bug+0x261/0x2c0
kern  :warn  : [  455.640141]  ? handle_bug+0x6d/0x90
kern  :warn  : [  455.640254]  ? exc_invalid_op+0x17/0x40
kern  :warn  : [  455.640428]  ? asm_exc_invalid_op+0x1a/0x20
kern  :warn  : [  455.640555]  ? free_large_kmalloc+0x93/0xe0
kern  :warn  : [  455.640679]  __do_sys_swapon+0xaf3/0x1ea0
kern  :warn  : [  455.640806]  ? poison_slab_object+0xc5/0x170
kern  :warn  : [  455.640934]  ? __pfx___do_sys_swapon+0x10/0x10
kern  :warn  : [  455.641063]  ? __x64_sys_close+0x7c/0xd0
kern  :warn  : [  455.641184]  ? kmem_cache_free+0xd5/0x3e0
kern  :warn  : [  455.641307]  do_syscall_64+0x5f/0x170
kern  :warn  : [  455.641489]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
kern  :warn  : [  455.641629] RIP: 0033:0x7fa00e8d7f97
kern  :warn  : [  455.641746] Code: 73 01 c3 48 8b 0d 69 2e 0d 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 b8 a7 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 39 2e 0d 00 f7 d8 64 89 01 48
kern  :warn  : [  455.642117] RSP: 002b:00007ffc063cb6e8 EFLAGS: 00000246 ORIG_RAX: 00000000000000a7
kern  :warn  : [  455.642302] RAX: ffffffffffffffda RBX: 00005624b13d89a0 RCX: 00007fa00e8d7f97
kern  :warn  : [  455.642535] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 00005624b13d89a0
kern  :warn  : [  455.642709] RBP: 0000000000000000 R08: 0000000000000ff6 R09: 0000000000001000
kern  :warn  : [  455.642882] R10: 4e45505355533253 R11: 0000000000000246 R12: 00007ffc063cb91c
kern  :warn  : [  455.643056] R13: 00000000ffffffff R14: 0000000012c00000 R15: 00005624b13d95d0
kern  :warn  : [  455.643231]  </TASK>
kern  :warn  : [  455.643321] ---[ end trace 0000000000000000 ]---
kern  :warn  : [  455.643507] object pointer: 0x000000003fde23f4
kern  :err   : [  455.643635] ==================================================================
kern  :err   : [  455.643807] BUG: KASAN: double-free in __do_sys_swapon+0xaf3/0x1ea0
kern  :err   : [  455.643978] Free of addr ffff8881573e4000 by task swapon/8129

kern  :err   : [  455.644198] CPU: 3 PID: 8129 Comm: swapon Tainted: G        W          6.10.0-rc6-00357-g47325a5c88c5 #1
kern  :err   : [  455.644406] Hardware name:  /DZ77BH-55K, BIOS BHZ7710H.86A.0097.2012.1228.1346 12/28/2012
kern  :err   : [  455.644590] Call Trace:
kern  :err   : [  455.644681]  <TASK>
kern  :err   : [  455.644768]  dump_stack_lvl+0x53/0x70
kern  :err   : [  455.644883]  print_address_description+0x30/0x410
kern  :err   : [  455.645033]  ? __do_sys_swapon+0xaf3/0x1ea0
kern  :err   : [  455.645158]  print_report+0xb9/0x2b0
kern  :err   : [  455.645275]  ? __do_sys_swapon+0xaf3/0x1ea0
kern  :err   : [  455.645397]  ? kasan_addr_to_slab+0xd/0xb0
kern  :err   : [  455.645516]  ? __do_sys_swapon+0xaf3/0x1ea0
kern  :err   : [  455.645639]  kasan_report_invalid_free+0x94/0xc0
kern  :err   : [  455.645769]  ? __do_sys_swapon+0xaf3/0x1ea0
kern  :err   : [  455.645891]  free_large_kmalloc+0xb8/0xe0
kern  :err   : [  455.646010]  __do_sys_swapon+0xaf3/0x1ea0
kern  :err   : [  455.646130]  ? poison_slab_object+0xc5/0x170
kern  :err   : [  455.646254]  ? __pfx___do_sys_swapon+0x10/0x10
kern  :err   : [  455.646379]  ? __x64_sys_close+0x7c/0xd0
kern  :err   : [  455.646498]  ? kmem_cache_free+0xd5/0x3e0
kern  :err   : [  455.646619]  do_syscall_64+0x5f/0x170
kern  :err   : [  455.646735]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
kern  :err   : [  455.646871] RIP: 0033:0x7fa00e8d7f97
kern  :err   : [  455.646985] Code: 73 01 c3 48 8b 0d 69 2e 0d 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 b8 a7 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 39 2e 0d 00 f7 d8 64 89 01 48
kern  :err   : [  455.647343] RSP: 002b:00007ffc063cb6e8 EFLAGS: 00000246 ORIG_RAX: 00000000000000a7
kern  :err   : [  455.647521] RAX: ffffffffffffffda RBX: 00005624b13d89a0 RCX: 00007fa00e8d7f97
kern  :err   : [  455.647692] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 00005624b13d89a0
kern  :err   : [  455.647863] RBP: 0000000000000000 R08: 0000000000000ff6 R09: 0000000000001000
kern  :err   : [  455.648036] R10: 4e45505355533253 R11: 0000000000000246 R12: 00007ffc063cb91c
kern  :err   : [  455.648208] R13: 00000000ffffffff R14: 0000000012c00000 R15: 00005624b13d95d0
kern  :err   : [  455.648387]  </TASK>

kern  :err   : [  455.648549] The buggy address belongs to the physical page:
kern  :warn  : [  455.648692] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0xffff8881573e5b30 pfn:0x1573e4
kern  :warn  : [  455.648902] flags: 0x17ffffc0000000(node=0|zone=2|lastcpupid=0x1fffff)
kern  :warn  : [  455.649065] raw: 0017ffffc0000000 ffffea0005bb6508 ffff88833c7cb600 0000000000000000
kern  :warn  : [  455.649249] raw: ffff8881573e5b30 0000000000000000 00000000ffffffff 0000000000000000
kern  :warn  : [  455.649430] page dumped because: kasan: bad access detected

kern  :err   : [  455.649647] Memory state around the buggy address:
kern  :err   : [  455.649777]  ffff8881573e3f00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
kern  :err   : [  455.649945]  ffff8881573e3f80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
kern  :err   : [  455.650115] >ffff8881573e4000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
kern  :err   : [  455.650286]                    ^
kern  :err   : [  455.650392]  ffff8881573e4080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
kern  :err   : [  455.650563]  ffff8881573e4100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
kern  :err   : [  455.650733] ==================================================================
kern  :warn  : [  455.650954] Disabling lock debugging due to kernel taint
user  :notice: [  455.655806] mkswap01 3 TINFO: Can not do swapon on /dev/loop0.



-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

.

From: sxwjean@me.com
To: vbabka@suse.cz,
	surenb@google.com
Cc: cl@linux.co,
	penberg@kernel.org,
	rientjes@google.com,
	iamjoonsoo.kim@lge.com,
	akpm@linux-foundation.org,
	roman.gushchin@linux.dev,
	42.hyeyoo@gmail.com,
	xiongwei.song@linux.dev,
	linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	kernel test robot <lkp@intel.com>
Subject: [PATCH] mm/slub: quiet the clang warning with -Wunused-function enabled
Date: Wed, 10 Jul 2024 10:54:18 +0800
Message-Id: <20240710025418.394321-1-sxwjean@me.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272999 org.kvack.linux-mm:203193
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: Xiongwei Song <xiongwei.song@linux.dev>

The only user of prepare_slab_obj_exts_hook() is
alloc_tagging_slab_alloc_hook(), which can build with
CONFIG_MEM_ALLOC_PROFILING enabled. So, the warning was triggerred
when disabling CONFIG_MEM_ALLOC_PROFILING. Let's add "__maybe_unused"
for prepare_slab_obj_exts_hook().

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202407050845.zNONqauD-lkp@intel.com/
Signed-off-by: Xiongwei Song <xiongwei.song@linux.dev>
---
 mm/slub.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/mm/slub.c b/mm/slub.c
index ce39544acf7c..2e26f20759c0 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -2027,7 +2027,7 @@ static inline bool need_slab_obj_ext(void)
 	return false;
 }
 
-static inline struct slabobj_ext *
+static inline struct slabobj_ext * __maybe_unused
 prepare_slab_obj_exts_hook(struct kmem_cache *s, gfp_t flags, void *p)
 {
 	struct slab *slab;
@@ -2068,7 +2068,7 @@ static inline bool need_slab_obj_ext(void)
 	return false;
 }
 
-static inline struct slabobj_ext *
+static inline struct slabobj_ext * __maybe_unused
 prepare_slab_obj_exts_hook(struct kmem_cache *s, gfp_t flags, void *p)
 {
 	return NULL;
-- 
2.34.1

.

Return-Path: <owner-linux-mm@kvack.org>
From: Zhiguo Jiang <justinjiang@vivo.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	Barry Song <baohua@kernel.org>,
	David Hildenbrand <david@redhat.com>,
	Matthew Wilcox <willy@infradead.org>
Cc: opensource.kernel@vivo.com,
	Zhiguo Jiang <justinjiang@vivo.com>
Subject: [PATCH v9] mm: shrink skip folio mapped by an exiting process
Date: Wed, 10 Jul 2024 11:00:21 +0800
Message-ID: <20240710030021.1657-1-justinjiang@vivo.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
MIME-Version: 1.0
Sender: owner-linux-mm@kvack.org
X-Loop: owner-majordomo@kvack.org
List-ID: <linux-mm.kvack.org>
List-Subscribe: <mailto:majordomo@kvack.org>
List-Unsubscribe: <mailto:majordomo@kvack.org>
Xref: photonic.trudheim.com org.kvack.linux-mm:203196
Newsgroups: org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The releasing process of the non-shared anonymous folio mapped solely by
an exiting process may go through two flows: 1) the anonymous folio is
firstly is swaped-out into swapspace and transformed into a swp_entry
in shrink_folio_list; 2) then the swp_entry is released in the process
exiting flow. This will result in the high cpu load of releasing a
non-shared anonymous folio mapped solely by an exiting process.

When the low system memory and the exiting process exist at the same
time, it will be likely to happen, because the non-shared anonymous
folio mapped solely by an exiting process may be reclaimed by
shrink_folio_list.

This patch is that shrink skips the non-shared anonymous folio solely
mapped by an exting process and this folio is only released directly in
the process exiting flow, which will save swap-out time and alleviate
the load of the process exiting. 

Acked-by: Barry Song <baohua@kernel.org>
Signed-off-by: Zhiguo Jiang <justinjiang@vivo.com>
---

Change log:
v8->v9:
1.Update Reviewed-by tag information.
v7->v8:
1.Add tags of Reviewed-by and Acked-by.
2.Add #include <linux/oom.h> to solve compilation issue.
v6->v7:
1.Modify tab indentation to space indentation of the continuation
lines of the condition.
v5->v6:
1.Move folio_likely_mapped_shared() under the PTL.
2.Add check_stable_address_space() to replace MMF_OOM_SKIP.
3.Remove folio_test_anon(folio).
v4->v5:
1.Further modify to skip non-shared anonymous folio only.
2.Update comments for pra->referenced = -1.
v3->v4:
1.Modify to skip only the non-shared anonymous folio mapped solely
by an exiting process.
v2->v3:
Nothing.
v1->v2:
1.The VM_EXITING added in v1 patch is removed, because it will fail
to compile in 32-bit system.

Comments from participants and my responses:
[v8->v9]:
1.Barry Song <baohua@kernel.org>
No, this is a disaster. Please ask someone for help before you send it.
Neither Willy nor David has ever posted any Reviewed-by tags.
Please do get someone to help you. Stop posting like this!
-->
Update Reviewed-by tag information in v9.

[v7->v8]:
1.Barry Song <baohua@kernel.org>
You should have collected tags such as reviewed-by, acked-by you got in
v6 while sending v7.
-->
Added in patch v8.

You didn't even pass the compilation stage because you're missing
'linux/oom.h'. It's quite disappointing because I believe in your idea,
but you didn't even build it before sending.
-->
Sorry, I overlooked the compilation of folio_likely_mapped_shared() added
in patch v5. Compiled and Updated have been compeleted in patch v8.

[v6->v7]:
1.Matthew Wilcox <willy@infradead.org>
You told me you'd fix the indentation.  You cannot indent both the
continuation lines of the condition and the body of the if by one tab
each!
-->
Modify tab indentation to space indentation of the continuation
lines of the condition.

[v5->v6]:
1.David Hildenbrand <david@redhat.com>
I'm currently working on moving all folio_likely_mapped_shared() under
the PTL, where we are then sure that the folio is actually mapped by
this process (e.g., no concurrent unmapping poisslbe). Can we do the
same here directly? 
-->
You are right. we might use page_vma_mapped_walk_done() to bail out.
(Barry Song)

2.Barry Song <baohua@kernel.org>
By the way, I am not convinced that using test_bit(MMF_OOM_SKIP,
&vma->vm_mm->flags) is correct (I think it is wrong). And exit_mmap()
automatically has MMF_OOM_SKIP. What is the purpose of this check?
Is there a better way to determine if a process is an OOM target?
What about check_stable_address_space() ?
-->
Sorry, I overlook the situation with if (is_global_init(p)),
MMF_OOM_SKIP is indeed not suitable. It seems feasible for
check_stable_address_space() replacing MMF_OOM_SKIP.
check_stable_address_space() can indicate oom kill, and
!atomic_read(&vma->vm_mm->mm_users) can indicate the normal
process exiting. 

I also think we actually can remove "folio_test_anon(folio)".
-->
Yes, update in patch v6.

[v4->v5]:
1.Barry Song <baohua@kernel.org>
I don't think this is correct. folio_likely_mapped_shared() is almost
"correct" but not always.
Please explain why you set  pra->referenced =  -1. Please address all
comments before you send a new version.
-->
Update in patch v5.

2.Matthew Wilcox <willy@infradead.org>
How is the file folio similar?  File folios are never written to swap,
and they'll be written back from the page cache whenever the filesystem
decides it's a good time to do so.
-->
What do you mean is that the file folio will not have any relevant
identifier left in memory after it is reclamed in the shrink flow,
and it will not be released again during an exiting process? If that's
the case, I think we only need the anon folio is skipped here. 

[v3->v4]:
1.Barry Song <baohua@kernel.org>
This is clearly version 3, as you previously sent version 2, correct?
-->
Yes.

Could you please describe the specific impact on users, including user
experience and power consumption? How serious is this problem?
-->
At present, I do not have a suitable method to accurately measure the
optimization benefit datas of this modifications, but I believe it
theoretically has some benefits.
Launching large memory app (for example, starting the camera) in multiple
backend scenes may result in the high cpu load of the exiting processes. 

Applications?
-->
Yes, when system is low memory, it more likely to occur.

I'm not completely convinced this patch is correct, but it appears to be
heading in the right direction. Therefore, I expect to see new versions
rather than it being dead.
You changed the file mode to 755, which is incorrect.
-->
Solved.

Why use -1? Is this meant to simulate lock contention to keep the folio
without activating it? Please do have some comments to explain why.
I'm not convinced this change is appropriate for shared folios. It seems
more suitable for exclusive folios used solely by the exiting process.
-->
The skiped folios are FOLIOREF_KEEP and added into inactive lru, beacase
the folios will be freed soon in the exiting process flow.
Yes, the shared folios can not be simply skipped. I have made relevant
modifications in patch v4 and please help to further review.
https://lore.kernel.org/linux-mm/20240708031517.856-1-justinjiang@vivo.com/

2.David Hildenbrand <david@redhat.com>
but what if it is shared among multiple processes and only one of them
is exiting?
-->
Modify to skip only the non-shared anonymous folio mapped solely
by an exiting process in next version v4.

[v2->v3:]
Nothing.

[v1->v2]:
1.Matthew Wilcox <willy@infradead.org>
What testing have you done of this patch?  How often does it happen?
Are there particular workloads that benefit from this?  (I'm not sure
what "mutil backed-applications" are?)
And I do mean specifically of this patch, because to my eyes it
shouldn't even compile. Except on 32-bit where it'll say "warning:
integer constant out of range".
-->
Yes, I have tested. When the low system memory and the exiting process
exist at the same time, it will happen. This modification can alleviate
the load of the exiting process. 
"mutil backed-applications" means that there are a large number of
the backend applications in the system.
The VM_EXITING added in v1 patch is removed, because it will fail
to compile in 32-bit system.

 mm/rmap.c   | 15 +++++++++++++++
 mm/vmscan.c |  7 ++++++-
 2 files changed, 21 insertions(+), 1 deletion(-)
 mode change 100644 => 100755 mm/rmap.c

diff --git a/mm/rmap.c b/mm/rmap.c
index 26806b49a86f..5b92c3dadcc2 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -75,6 +75,7 @@
 #include <linux/memremap.h>
 #include <linux/userfaultfd_k.h>
 #include <linux/mm_inline.h>
+#include <linux/oom.h>
 
 #include <asm/tlbflush.h>
 
@@ -870,6 +871,20 @@ static bool folio_referenced_one(struct folio *folio,
 			continue;
 		}
 
+		/*
+		 * Skip the non-shared swapbacked folio mapped solely by
+		 * the exiting or OOM-reaped process. This avoids redundant
+		 * swap-out followed by an immediate unmap.
+		 */
+		if ((!atomic_read(&vma->vm_mm->mm_users) ||
+		    check_stable_address_space(vma->vm_mm)) &&
+		    folio_test_swapbacked(folio) &&
+		    !folio_likely_mapped_shared(folio)) {
+			pra->referenced = -1;
+			page_vma_mapped_walk_done(&pvmw);
+			return false;
+		}
+
 		if (pvmw.pte) {
 			if (lru_gen_enabled() &&
 			    pte_young(ptep_get(pvmw.pte))) {
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 80f9a486cf27..1d5f78a3dbeb 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -863,7 +863,12 @@ static enum folio_references folio_check_references(struct folio *folio,
 	if (vm_flags & VM_LOCKED)
 		return FOLIOREF_ACTIVATE;
 
-	/* rmap lock contention: rotate */
+	/*
+	 * There are two cases to consider.
+	 * 1) Rmap lock contention: rotate.
+	 * 2) Skip the non-shared swapbacked folio mapped solely by
+	 *    the exiting or OOM-reaped process.
+	 */
 	if (referenced_ptes == -1)
 		return FOLIOREF_KEEP;
 
-- 
2.39.0


.

From: Zhiguo Jiang <justinjiang@vivo.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	Barry Song <baohua@kernel.org>,
	David Hildenbrand <david@redhat.com>,
	Matthew Wilcox <willy@infradead.org>
Cc: opensource.kernel@vivo.com,
	Zhiguo Jiang <justinjiang@vivo.com>
Subject: [PATCH v9] mm: shrink skip folio mapped by an exiting process
Date: Wed, 10 Jul 2024 11:10:20 +0800
Message-ID: <20240710031020.1681-1-justinjiang@vivo.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273013 org.kvack.linux-mm:203201
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The releasing process of the non-shared anonymous folio mapped solely by
an exiting process may go through two flows: 1) the anonymous folio is
firstly is swaped-out into swapspace and transformed into a swp_entry
in shrink_folio_list; 2) then the swp_entry is released in the process
exiting flow. This will result in the high cpu load of releasing a
non-shared anonymous folio mapped solely by an exiting process.

When the low system memory and the exiting process exist at the same
time, it will be likely to happen, because the non-shared anonymous
folio mapped solely by an exiting process may be reclaimed by
shrink_folio_list.

This patch is that shrink skips the non-shared anonymous folio solely
mapped by an exting process and this folio is only released directly in
the process exiting flow, which will save swap-out time and alleviate
the load of the process exiting. 

Acked-by: Barry Song <baohua@kernel.org>
Signed-off-by: Zhiguo Jiang <justinjiang@vivo.com>
---

Change log:
v8->v9:
1.Update Reviewed-by tag information.
v7->v8:
1.Add tags of Reviewed-by and Acked-by.
2.Add #include <linux/oom.h> to solve compilation issue.
v6->v7:
1.Modify tab indentation to space indentation of the continuation
lines of the condition.
v5->v6:
1.Move folio_likely_mapped_shared() under the PTL.
2.Add check_stable_address_space() to replace MMF_OOM_SKIP.
3.Remove folio_test_anon(folio).
v4->v5:
1.Further modify to skip non-shared anonymous folio only.
2.Update comments for pra->referenced = -1.
v3->v4:
1.Modify to skip only the non-shared anonymous folio mapped solely
by an exiting process.
v2->v3:
Nothing.
v1->v2:
1.The VM_EXITING added in v1 patch is removed, because it will fail
to compile in 32-bit system.

Comments from participants and my responses:
[v8->v9]:
1.Barry Song <baohua@kernel.org>
No, this is a disaster. Please ask someone for help before you send it.
Neither Willy nor David has ever posted any Reviewed-by tags.
Please do get someone to help you. Stop posting like this!
-->
Update Reviewed-by tag information in v9.

[v7->v8]:
1.Barry Song <baohua@kernel.org>
You should have collected tags such as reviewed-by, acked-by you got in
v6 while sending v7.
-->
Added in patch v8.

You didn't even pass the compilation stage because you're missing
'linux/oom.h'. It's quite disappointing because I believe in your idea,
but you didn't even build it before sending.
-->
Sorry, I overlooked the compilation of folio_likely_mapped_shared() added
in patch v5. Compiled and Updated have been compeleted in patch v8.

[v6->v7]:
1.Matthew Wilcox <willy@infradead.org>
You told me you'd fix the indentation.  You cannot indent both the
continuation lines of the condition and the body of the if by one tab
each!
-->
Modify tab indentation to space indentation of the continuation
lines of the condition.

[v5->v6]:
1.David Hildenbrand <david@redhat.com>
I'm currently working on moving all folio_likely_mapped_shared() under
the PTL, where we are then sure that the folio is actually mapped by
this process (e.g., no concurrent unmapping poisslbe). Can we do the
same here directly? 
-->
You are right. we might use page_vma_mapped_walk_done() to bail out.
(Barry Song)

2.Barry Song <baohua@kernel.org>
By the way, I am not convinced that using test_bit(MMF_OOM_SKIP,
&vma->vm_mm->flags) is correct (I think it is wrong). And exit_mmap()
automatically has MMF_OOM_SKIP. What is the purpose of this check?
Is there a better way to determine if a process is an OOM target?
What about check_stable_address_space() ?
-->
Sorry, I overlook the situation with if (is_global_init(p)),
MMF_OOM_SKIP is indeed not suitable. It seems feasible for
check_stable_address_space() replacing MMF_OOM_SKIP.
check_stable_address_space() can indicate oom kill, and
!atomic_read(&vma->vm_mm->mm_users) can indicate the normal
process exiting. 

I also think we actually can remove "folio_test_anon(folio)".
-->
Yes, update in patch v6.

[v4->v5]:
1.Barry Song <baohua@kernel.org>
I don't think this is correct. folio_likely_mapped_shared() is almost
"correct" but not always.
Please explain why you set  pra->referenced =  -1. Please address all
comments before you send a new version.
-->
Update in patch v5.

2.Matthew Wilcox <willy@infradead.org>
How is the file folio similar?  File folios are never written to swap,
and they'll be written back from the page cache whenever the filesystem
decides it's a good time to do so.
-->
What do you mean is that the file folio will not have any relevant
identifier left in memory after it is reclamed in the shrink flow,
and it will not be released again during an exiting process? If that's
the case, I think we only need the anon folio is skipped here. 

[v3->v4]:
1.Barry Song <baohua@kernel.org>
This is clearly version 3, as you previously sent version 2, correct?
-->
Yes.

Could you please describe the specific impact on users, including user
experience and power consumption? How serious is this problem?
-->
At present, I do not have a suitable method to accurately measure the
optimization benefit datas of this modifications, but I believe it
theoretically has some benefits.
Launching large memory app (for example, starting the camera) in multiple
backend scenes may result in the high cpu load of the exiting processes. 

Applications?
-->
Yes, when system is low memory, it more likely to occur.

I'm not completely convinced this patch is correct, but it appears to be
heading in the right direction. Therefore, I expect to see new versions
rather than it being dead.
You changed the file mode to 755, which is incorrect.
-->
Solved.

Why use -1? Is this meant to simulate lock contention to keep the folio
without activating it? Please do have some comments to explain why.
I'm not convinced this change is appropriate for shared folios. It seems
more suitable for exclusive folios used solely by the exiting process.
-->
The skiped folios are FOLIOREF_KEEP and added into inactive lru, beacase
the folios will be freed soon in the exiting process flow.
Yes, the shared folios can not be simply skipped. I have made relevant
modifications in patch v4 and please help to further review.
https://lore.kernel.org/linux-mm/20240708031517.856-1-justinjiang@vivo.com/

2.David Hildenbrand <david@redhat.com>
but what if it is shared among multiple processes and only one of them
is exiting?
-->
Modify to skip only the non-shared anonymous folio mapped solely
by an exiting process in next version v4.

[v2->v3:]
Nothing.

[v1->v2]:
1.Matthew Wilcox <willy@infradead.org>
What testing have you done of this patch?  How often does it happen?
Are there particular workloads that benefit from this?  (I'm not sure
what "mutil backed-applications" are?)
And I do mean specifically of this patch, because to my eyes it
shouldn't even compile. Except on 32-bit where it'll say "warning:
integer constant out of range".
-->
Yes, I have tested. When the low system memory and the exiting process
exist at the same time, it will happen. This modification can alleviate
the load of the exiting process. 
"mutil backed-applications" means that there are a large number of
the backend applications in the system.
The VM_EXITING added in v1 patch is removed, because it will fail
to compile in 32-bit system.

 mm/rmap.c   | 15 +++++++++++++++
 mm/vmscan.c |  7 ++++++-
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/mm/rmap.c b/mm/rmap.c
index 26806b49a86f..5b92c3dadcc2 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -75,6 +75,7 @@
 #include <linux/memremap.h>
 #include <linux/userfaultfd_k.h>
 #include <linux/mm_inline.h>
+#include <linux/oom.h>
 
 #include <asm/tlbflush.h>
 
@@ -870,6 +871,20 @@ static bool folio_referenced_one(struct folio *folio,
 			continue;
 		}
 
+		/*
+		 * Skip the non-shared swapbacked folio mapped solely by
+		 * the exiting or OOM-reaped process. This avoids redundant
+		 * swap-out followed by an immediate unmap.
+		 */
+		if ((!atomic_read(&vma->vm_mm->mm_users) ||
+		    check_stable_address_space(vma->vm_mm)) &&
+		    folio_test_swapbacked(folio) &&
+		    !folio_likely_mapped_shared(folio)) {
+			pra->referenced = -1;
+			page_vma_mapped_walk_done(&pvmw);
+			return false;
+		}
+
 		if (pvmw.pte) {
 			if (lru_gen_enabled() &&
 			    pte_young(ptep_get(pvmw.pte))) {
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 80f9a486cf27..1d5f78a3dbeb 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -863,7 +863,12 @@ static enum folio_references folio_check_references(struct folio *folio,
 	if (vm_flags & VM_LOCKED)
 		return FOLIOREF_ACTIVATE;
 
-	/* rmap lock contention: rotate */
+	/*
+	 * There are two cases to consider.
+	 * 1) Rmap lock contention: rotate.
+	 * 2) Skip the non-shared swapbacked folio mapped solely by
+	 *    the exiting or OOM-reaped process.
+	 */
 	if (referenced_ptes == -1)
 		return FOLIOREF_KEEP;
 
-- 
2.39.0

.

Date: Wed, 10 Jul 2024 12:59:22 +0800
From: kernel test robot <oliver.sang@intel.com>
To: Ian Rogers <irogers@google.com>
CC: <oe-lkp@lists.linux.dev>, <lkp@intel.com>, Linux Memory Management List
	<linux-mm@kvack.org>, Namhyung Kim <namhyung@kernel.org>, Weilin Wang
	<weilin.wang@intel.com>, Caleb Biggers <caleb.biggers@intel.com>, Kan Liang
	<kan.liang@linux.intel.com>, Alexandre Torgue <alexandre.torgue@foss.st.com>,
	Maxime Coquelin <mcoquelin.stm32@gmail.com>,
	<linux-perf-users@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<oliver.sang@intel.com>
Subject: [linux-next:master] [perf vendor events]  e2641db83f:
 perf-sanity-tests.perf_all_PMU_test.fail
Message-ID: <202407101021.2c8baddb-oliver.sang@intel.com>
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273094 org.kvack.linux-mm:203219
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.oe-lkp,org.kernel.vger.linux-perf-users,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail



Hello,

kernel test robot noticed "perf-sanity-tests.perf_all_PMU_test.fail" on:

commit: e2641db83f18782f57a0e107c50d2d1731960fb8 ("perf vendor events: Add/update skylake events/metrics")
https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git master

[test failed on linux-next/master 82d01fe6ee52086035b201cfa1410a3b04384257]

in testcase: perf-sanity-tests
version: 
with following parameters:

	perf_compiler: gcc



compiler: gcc-13
test machine: 16 threads 1 sockets Intel(R) Xeon(R) E-2278G CPU @ 3.40GHz (Coffee Lake) with 32G memory

(please refer to attached dmesg/kmsg for entire log/backtrace)


we also observed two cases which also failed on parent can pass on this commit.
FYI.


caccae3ce7b988b6 e2641db83f18782f57a0e107c50
---------------- ---------------------------
       fail:runs  %reproduction    fail:runs
           |             |             |
           :6          100%           6:6     perf-sanity-tests.perf_all_PMU_test.fail
           :6          100%           6:6     perf-sanity-tests.perf_all_metricgroups_test.pass
           :6          100%           6:6     perf-sanity-tests.perf_all_metrics_test.pass





If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <oliver.sang@intel.com>
| Closes: https://lore.kernel.org/oe-lkp/202407101021.2c8baddb-oliver.sang@intel.com



2024-07-09 07:09:53 sudo /usr/src/linux-perf-x86_64-rhel-8.3-bpf-e2641db83f18782f57a0e107c50d2d1731960fb8/tools/perf/perf test 105
105: perf all metricgroups test                                      : Ok
2024-07-09 07:10:11 sudo /usr/src/linux-perf-x86_64-rhel-8.3-bpf-e2641db83f18782f57a0e107c50d2d1731960fb8/tools/perf/perf test 106
106: perf all metrics test                                           : Ok
2024-07-09 07:10:23 sudo /usr/src/linux-perf-x86_64-rhel-8.3-bpf-e2641db83f18782f57a0e107c50d2d1731960fb8/tools/perf/perf test 107
107: perf all libpfm4 events test                                    : Ok
2024-07-09 07:10:47 sudo /usr/src/linux-perf-x86_64-rhel-8.3-bpf-e2641db83f18782f57a0e107c50d2d1731960fb8/tools/perf/perf test 108
108: perf all PMU test                                               : FAILED!



The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20240710/202407101021.2c8baddb-oliver.sang@intel.com



-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

.

From: alexs@kernel.org
To: Andrew Morton <akpm@linux-foundation.org>,
	Christoph Lameter <cl@linux.com>,
	Pekka Enberg <penberg@kernel.org>,
	David Rientjes <rientjes@google.com>,
	Joonsoo Kim <iamjoonsoo.kim@lge.com>,
	Vlastimil Babka <vbabka@suse.cz>,
	Roman Gushchin <roman.gushchin@linux.dev>,
	Hyeonggon Yoo <42.hyeyoo@gmail.com>,
	linux-mm@kvack.org,
	linux-kernel@vger.kernel.org
Cc: "Alex Shi (Tencent)" <alexs@kernel.org>,
	Randy Dunlap <rdunlap@infradead.org>,
	Yoann Congal <yoann.congal@smile.fr>,
	Masahiro Yamada <masahiroy@kernel.org>,
	Petr Mladek <pmladek@suse.com>,
	Suren Baghdasaryan <surenb@google.com>
Subject: [PATCH v3 1/2] mm/memcg: alignment memcg_data define condition
Date: Wed, 10 Jul 2024 13:43:35 +0800
Message-ID: <20240710054336.190410-1-alexs@kernel.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273107 org.kvack.linux-mm:203220
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: "Alex Shi (Tencent)" <alexs@kernel.org>

commit 21c690a349ba ("mm: introduce slabobj_ext to support slab object
extensions") changed the folio/page->memcg_data define condition from
MEMCG to SLAB_OBJ_EXT. And selected SLAB_OBJ_EXT for MEMCG, just for
SLAB_MATCH(memcg_data, obj_exts), even no other relationship between them.

Above action make memcg_data exposed and include SLAB_OBJ_EXT for
!MEMCG. That's incorrect in logcial and pay on code size.

As Vlastimil Babka suggested, let's add _unused_slab_obj_ext for
SLAB_MATCH for slab.obj_exts while !MEMCG. That could resolve the match
issue, clean up the feature logical. And decouple the SLAB_OBJ_EXT from
MEMCG in next patch.

Signed-off-by: Alex Shi (Tencent) <alexs@kernel.org>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Yoann Congal <yoann.congal@smile.fr>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Petr Mladek <pmladek@suse.com>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
---
v1->v3: take Vlastimil's suggestion and move SLAB_OBJ_EXT/MEMCG decouple
to 2nd patch.
---
 include/linux/mm_types.h | 8 ++++++--
 mm/slab.h                | 4 ++++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index ef09c4eef6d3..4ac3abc673d3 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -180,8 +180,10 @@ struct page {
 	/* Usage count. *DO NOT USE DIRECTLY*. See page_ref.h */
 	atomic_t _refcount;
 
-#ifdef CONFIG_SLAB_OBJ_EXT
+#ifdef CONFIG_MEMCG
 	unsigned long memcg_data;
+#elif defined(CONFIG_SLAB_OBJ_EXT)
+	unsigned long _unused_slab_obj_ext;
 #endif
 
 	/*
@@ -343,8 +345,10 @@ struct folio {
 			};
 			atomic_t _mapcount;
 			atomic_t _refcount;
-#ifdef CONFIG_SLAB_OBJ_EXT
+#ifdef CONFIG_MEMCG
 			unsigned long memcg_data;
+#elif defined(CONFIG_SLAB_OBJ_EXT)
+			unsigned long _unused_slab_obj_ext;
 #endif
 #if defined(WANT_PAGE_VIRTUAL)
 			void *virtual;
diff --git a/mm/slab.h b/mm/slab.h
index 3586e6183224..8ffdd4f315f8 100644
--- a/mm/slab.h
+++ b/mm/slab.h
@@ -98,7 +98,11 @@ SLAB_MATCH(flags, __page_flags);
 SLAB_MATCH(compound_head, slab_cache);	/* Ensure bit 0 is clear */
 SLAB_MATCH(_refcount, __page_refcount);
 #ifdef CONFIG_SLAB_OBJ_EXT
+#ifdef CONFIG_MEMCG
 SLAB_MATCH(memcg_data, obj_exts);
+#else
+SLAB_MATCH(_unused_slab_obj_ext, obj_exts);
+#endif
 #endif
 #undef SLAB_MATCH
 static_assert(sizeof(struct slab) <= sizeof(struct page));
-- 
2.43.0

.

X-CID-CACHE: Type:Local,Time:202407101339+08,HitQuantity:1
X-ns-mid: postfix-668E2019-6054441873
From: Haoran Jang <jianghaoran@kylinos.cn>
To: linux-mm@kvack.org
Cc: linux-kernel@vger.kernel.org,
	lstoakes@gmail.com,
	vbabka@suse.cz,
	Liam.Howlett@oracle.com,
	akpm@linux-foundation.org,
	Haoran Jiang <jianghaoran@kylinos.cn>
Subject: [PATCH] mm/mmap: Align the length parameter of munmap with hugepage size
Date: Wed, 10 Jul 2024 13:45:58 +0800
Message-ID: <20240710054558.1959243-1-jianghaoran@kylinos.cn>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273115 org.kvack.linux-mm:203222
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: Haoran Jiang <jianghaoran@kylinos.cn>

munmap hugepge mappings, if the length of the range to munmap
is not aligned with hugepage size,munmap will fail.
In the hugetlb_vm_op_split function, an error will be returned
if startaddr+len is not hugepage size aligned.

before this patch:
in "tools/testing/selftests/mm/hugepage-mremap.c"
modify DEFAULT_LENGTH_MB to 3M,compile and run,
the following error message is displayed

-------------------------
running ./hugepage-mremap
-------------------------
TAP version 13
1..1
Map haddr: Returned address is 0x7eaa40000000
Map daddr: Returned address is 0x7daa40000000
Map vaddr: Returned address is 0x7faa40000000
Address returned by mmap() =3D 0x7cb34b000000
Mremap: Returned address is 0x7faa40000000
First hex is 0
First hex is 3020100
Bail out! mremap: Expected failure, but call succeeded

Signed-off-by: Haoran Jiang <jianghaoran@kylinos.cn>
---
 mm/mmap.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/mm/mmap.c b/mm/mmap.c
index 83b4682ec85c..0b3a60bf9b6f 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -2733,7 +2733,15 @@ int do_vmi_munmap(struct vma_iterator *vmi, struct=
 mm_struct *mm,
 	if ((offset_in_page(start)) || start > TASK_SIZE || len > TASK_SIZE-sta=
rt)
 		return -EINVAL;
=20
-	end =3D start + PAGE_ALIGN(len);
+	vma =3D find_vma(mm, start);
+	if (!vma) {
+		if (unlock)
+			mmap_write_unlock(mm);
+		return 0;
+	}
+
+	end =3D start + ALIGN(len, vma_kernel_pagesize(vma));
+
 	if (end =3D=3D start)
 		return -EINVAL;
=20
--=20
2.43.0

.

Return-Path: <owner-linux-mm@kvack.org>
Date: Wed, 10 Jul 2024 13:27:08 +0800
From: kernel test robot <lkp@intel.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Linux Memory Management List <linux-mm@kvack.org>
Subject: [linux-next:fs-next] BUILD SUCCESS
 2528528feafcbc0e3c5f13087d5cc873a9ee584f
Message-ID: <202407101305.R6VKQPeZ-lkp@intel.com>
Sender: owner-linux-mm@kvack.org
X-Loop: owner-majordomo@kvack.org
List-ID: <linux-mm.kvack.org>
List-Subscribe: <mailto:majordomo@kvack.org>
List-Unsubscribe: <mailto:majordomo@kvack.org>
Xref: photonic.trudheim.com org.kvack.linux-mm:203223
Newsgroups: org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git fs-next
branch HEAD: 2528528feafcbc0e3c5f13087d5cc873a9ee584f  Merge branch 'vfs.all' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git

elapsed time: 1165m

configs tested: 164
configs skipped: 3

The following configs have been built successfully.
More configs may be tested in the coming days.

tested configs:
alpha                             allnoconfig   gcc-13.2.0
alpha                            allyesconfig   gcc-13.2.0
alpha                               defconfig   gcc-13.2.0
arc                              allmodconfig   gcc-13.2.0
arc                               allnoconfig   gcc-13.2.0
arc                              allyesconfig   gcc-13.2.0
arc                                 defconfig   gcc-13.2.0
arc                   randconfig-001-20240709   gcc-13.2.0
arc                   randconfig-002-20240709   gcc-13.2.0
arm                              allmodconfig   gcc-13.2.0
arm                               allnoconfig   clang-19
arm                              allyesconfig   gcc-13.2.0
arm                                 defconfig   clang-14
arm                         lpc18xx_defconfig   clang-19
arm                         lpc32xx_defconfig   clang-19
arm                          moxart_defconfig   gcc-13.2.0
arm                        multi_v5_defconfig   gcc-13.2.0
arm                         mv78xx0_defconfig   clang-19
arm                   randconfig-001-20240709   gcc-13.2.0
arm                   randconfig-002-20240709   clang-19
arm                   randconfig-003-20240709   clang-19
arm                   randconfig-004-20240709   gcc-13.2.0
arm                             rpc_defconfig   clang-19
arm                          sp7021_defconfig   gcc-13.2.0
arm64                            allmodconfig   clang-19
arm64                             allnoconfig   gcc-13.2.0
arm64                               defconfig   gcc-13.2.0
arm64                 randconfig-001-20240709   clang-19
arm64                 randconfig-002-20240709   clang-17
arm64                 randconfig-003-20240709   clang-19
arm64                 randconfig-004-20240709   clang-19
csky                              allnoconfig   gcc-13.2.0
csky                                defconfig   gcc-13.2.0
csky                  randconfig-001-20240709   gcc-13.2.0
csky                  randconfig-002-20240709   gcc-13.2.0
hexagon                          allmodconfig   clang-19
hexagon                           allnoconfig   clang-19
hexagon                          allyesconfig   clang-19
hexagon                             defconfig   clang-19
hexagon               randconfig-001-20240709   clang-19
hexagon               randconfig-002-20240709   clang-19
i386                             allmodconfig   gcc-13
i386                              allnoconfig   gcc-13
i386                             allyesconfig   gcc-13
i386         buildonly-randconfig-001-20240709   gcc-11
i386         buildonly-randconfig-002-20240709   gcc-13
i386         buildonly-randconfig-003-20240709   clang-18
i386         buildonly-randconfig-004-20240709   clang-18
i386         buildonly-randconfig-005-20240709   clang-18
i386         buildonly-randconfig-006-20240709   clang-18
i386                                defconfig   clang-18
i386                  randconfig-001-20240709   gcc-13
i386                  randconfig-002-20240709   clang-18
i386                  randconfig-003-20240709   gcc-11
i386                  randconfig-004-20240709   gcc-13
i386                  randconfig-005-20240709   gcc-13
i386                  randconfig-006-20240709   gcc-13
i386                  randconfig-011-20240709   clang-18
i386                  randconfig-012-20240709   gcc-13
i386                  randconfig-013-20240709   gcc-12
i386                  randconfig-014-20240709   clang-18
i386                  randconfig-015-20240709   clang-18
i386                  randconfig-016-20240709   gcc-10
loongarch                        allmodconfig   gcc-13.2.0
loongarch                         allnoconfig   gcc-13.2.0
loongarch             randconfig-001-20240709   gcc-13.2.0
loongarch             randconfig-002-20240709   gcc-13.2.0
m68k                             allmodconfig   gcc-13.2.0
m68k                              allnoconfig   gcc-13.2.0
m68k                             allyesconfig   gcc-13.2.0
microblaze                       allmodconfig   gcc-13.2.0
microblaze                        allnoconfig   gcc-13.2.0
microblaze                       allyesconfig   gcc-13.2.0
mips                              allnoconfig   gcc-13.2.0
mips                     loongson1c_defconfig   gcc-13.2.0
mips                       rbtx49xx_defconfig   gcc-13.2.0
nios2                             allnoconfig   gcc-13.2.0
nios2                 randconfig-001-20240709   gcc-13.2.0
nios2                 randconfig-002-20240709   gcc-13.2.0
openrisc                          allnoconfig   gcc-13.2.0
openrisc                         allyesconfig   gcc-13.2.0
openrisc                            defconfig   gcc-13.2.0
parisc                           allmodconfig   gcc-13.2.0
parisc                            allnoconfig   gcc-13.2.0
parisc                           allyesconfig   gcc-13.2.0
parisc                              defconfig   gcc-13.2.0
parisc                randconfig-001-20240709   gcc-13.2.0
parisc                randconfig-002-20240709   gcc-13.2.0
powerpc                           allnoconfig   gcc-13.2.0
powerpc                          allyesconfig   clang-19
powerpc                      cm5200_defconfig   clang-19
powerpc                  mpc885_ads_defconfig   clang-19
powerpc                      pcm030_defconfig   clang-19
powerpc               randconfig-001-20240709   clang-19
powerpc               randconfig-002-20240709   gcc-13.2.0
powerpc               randconfig-003-20240709   clang-15
powerpc                 xes_mpc85xx_defconfig   gcc-13.2.0
powerpc64             randconfig-001-20240709   gcc-13.2.0
powerpc64             randconfig-002-20240709   gcc-13.2.0
powerpc64             randconfig-003-20240709   clang-19
riscv                            allmodconfig   clang-19
riscv                             allnoconfig   gcc-13.2.0
riscv                            allyesconfig   clang-19
riscv                               defconfig   clang-19
riscv                    nommu_k210_defconfig   clang-19
riscv                 randconfig-001-20240709   clang-17
riscv                 randconfig-002-20240709   gcc-13.2.0
s390                             allmodconfig   clang-19
s390                              allnoconfig   clang-19
s390                             allyesconfig   gcc-13.2.0
s390                                defconfig   clang-19
s390                  randconfig-001-20240709   gcc-13.2.0
s390                  randconfig-002-20240709   clang-19
sh                               allmodconfig   gcc-13.2.0
sh                                allnoconfig   gcc-13.2.0
sh                               allyesconfig   gcc-13.2.0
sh                                  defconfig   gcc-13.2.0
sh                            migor_defconfig   gcc-13.2.0
sh                    randconfig-001-20240709   gcc-13.2.0
sh                    randconfig-002-20240709   gcc-13.2.0
sh                           se7712_defconfig   gcc-13.2.0
sparc                            allmodconfig   gcc-13.2.0
sparc64                             defconfig   gcc-13.2.0
sparc64               randconfig-001-20240709   gcc-13.2.0
sparc64               randconfig-002-20240709   gcc-13.2.0
um                               allmodconfig   clang-19
um                                allnoconfig   clang-17
um                               allyesconfig   gcc-13
um                                  defconfig   clang-19
um                             i386_defconfig   gcc-13
um                    randconfig-001-20240709   gcc-13
um                    randconfig-002-20240709   gcc-11
um                           x86_64_defconfig   clang-15
x86_64                            allnoconfig   clang-18
x86_64                           allyesconfig   clang-18
x86_64       buildonly-randconfig-001-20240709   gcc-11
x86_64       buildonly-randconfig-002-20240709   clang-18
x86_64       buildonly-randconfig-003-20240709   clang-18
x86_64       buildonly-randconfig-004-20240709   gcc-9
x86_64       buildonly-randconfig-005-20240709   gcc-13
x86_64       buildonly-randconfig-006-20240709   clang-18
x86_64                              defconfig   gcc-13
x86_64                randconfig-001-20240709   clang-18
x86_64                randconfig-002-20240709   gcc-10
x86_64                randconfig-003-20240709   clang-18
x86_64                randconfig-004-20240709   gcc-12
x86_64                randconfig-005-20240709   gcc-13
x86_64                randconfig-006-20240709   gcc-8
x86_64                randconfig-011-20240709   clang-18
x86_64                randconfig-012-20240709   clang-18
x86_64                randconfig-013-20240709   clang-18
x86_64                randconfig-014-20240709   clang-18
x86_64                randconfig-015-20240709   clang-18
x86_64                randconfig-016-20240709   clang-18
x86_64                randconfig-071-20240709   gcc-7
x86_64                randconfig-072-20240709   clang-18
x86_64                randconfig-073-20240709   gcc-13
x86_64                randconfig-074-20240709   gcc-13
x86_64                randconfig-075-20240709   gcc-11
x86_64                randconfig-076-20240709   gcc-13
x86_64                          rhel-8.3-rust   clang-18
xtensa                            allnoconfig   gcc-13.2.0
xtensa                randconfig-001-20240709   gcc-13.2.0
xtensa                randconfig-002-20240709   gcc-13.2.0

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

.

Date: Wed, 10 Jul 2024 00:09:33 -0600
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
Mime-Version: 1.0
Message-ID: <20240710060933.3979380-1-yuzhao@google.com>
Subject: [PATCH mm-unstable v2] mm/truncate: batch-clear shadow entries
From: Yu Zhao <yuzhao@google.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Bharata B Rao <bharata@amd.com>, "Matthew Wilcox (Oracle)" <willy@infradead.org>, linux-mm@kvack.org, 
	linux-kernel@vger.kernel.org, Yu Zhao <yuzhao@google.com>
Content-Type: text/plain; charset="UTF-8"
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273130 org.kvack.linux-mm:203224
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Make clear_shadow_entry() clear shadow entries in `struct folio_batch`
so that it can reduce contention on i_lock and i_pages locks, e.g.,

  watchdog: BUG: soft lockup - CPU#29 stuck for 11s! [fio:2701649]
    clear_shadow_entry+0x3d/0x100
    mapping_try_invalidate+0x117/0x1d0
    invalidate_mapping_pages+0x10/0x20
    invalidate_bdev+0x3c/0x50
    blkdev_common_ioctl+0x5f7/0xa90
    blkdev_ioctl+0x109/0x270

Also, rename clear_shadow_entry() to clear_shadow_entries() accordingly.

Reported-by: Bharata B Rao <bharata@amd.com>
Closes: https://lore.kernel.org/d2841226-e27b-4d3d-a578-63587a3aa4f3@amd.com/
Tested-by: Bharata B Rao <bharata@amd.com>
Signed-off-by: Yu Zhao <yuzhao@google.com>
---
 mm/truncate.c | 68 +++++++++++++++++++++++----------------------------
 1 file changed, 31 insertions(+), 37 deletions(-)

diff --git a/mm/truncate.c b/mm/truncate.c
index 5ce62a939e55..dfb3d1f4d456 100644
--- a/mm/truncate.c
+++ b/mm/truncate.c
@@ -39,12 +39,25 @@ static inline void __clear_shadow_entry(struct address_space *mapping,
 	xas_store(&xas, NULL);
 }
 
-static void clear_shadow_entry(struct address_space *mapping, pgoff_t index,
-			       void *entry)
+static void clear_shadow_entries(struct address_space *mapping,
+				 struct folio_batch *fbatch, pgoff_t *indices)
 {
+	int i;
+
+	/* Handled by shmem itself, or for DAX we do nothing. */
+	if (shmem_mapping(mapping) || dax_mapping(mapping))
+		return;
+
 	spin_lock(&mapping->host->i_lock);
 	xa_lock_irq(&mapping->i_pages);
-	__clear_shadow_entry(mapping, index, entry);
+
+	for (i = 0; i < folio_batch_count(fbatch); i++) {
+		struct folio *folio = fbatch->folios[i];
+
+		if (xa_is_value(folio))
+			__clear_shadow_entry(mapping, indices[i], folio);
+	}
+
 	xa_unlock_irq(&mapping->i_pages);
 	if (mapping_shrinkable(mapping))
 		inode_add_lru(mapping->host);
@@ -105,36 +118,6 @@ static void truncate_folio_batch_exceptionals(struct address_space *mapping,
 	fbatch->nr = j;
 }
 
-/*
- * Invalidate exceptional entry if easily possible. This handles exceptional
- * entries for invalidate_inode_pages().
- */
-static int invalidate_exceptional_entry(struct address_space *mapping,
-					pgoff_t index, void *entry)
-{
-	/* Handled by shmem itself, or for DAX we do nothing. */
-	if (shmem_mapping(mapping) || dax_mapping(mapping))
-		return 1;
-	clear_shadow_entry(mapping, index, entry);
-	return 1;
-}
-
-/*
- * Invalidate exceptional entry if clean. This handles exceptional entries for
- * invalidate_inode_pages2() so for DAX it evicts only clean entries.
- */
-static int invalidate_exceptional_entry2(struct address_space *mapping,
-					 pgoff_t index, void *entry)
-{
-	/* Handled by shmem itself */
-	if (shmem_mapping(mapping))
-		return 1;
-	if (dax_mapping(mapping))
-		return dax_invalidate_mapping_entry_sync(mapping, index);
-	clear_shadow_entry(mapping, index, entry);
-	return 1;
-}
-
 /**
  * folio_invalidate - Invalidate part or all of a folio.
  * @folio: The folio which is affected.
@@ -494,6 +477,7 @@ unsigned long mapping_try_invalidate(struct address_space *mapping,
 	unsigned long ret;
 	unsigned long count = 0;
 	int i;
+	bool xa_has_values = false;
 
 	folio_batch_init(&fbatch);
 	while (find_lock_entries(mapping, &index, end, &fbatch, indices)) {
@@ -503,8 +487,8 @@ unsigned long mapping_try_invalidate(struct address_space *mapping,
 			/* We rely upon deletion not changing folio->index */
 
 			if (xa_is_value(folio)) {
-				count += invalidate_exceptional_entry(mapping,
-							     indices[i], folio);
+				xa_has_values = true;
+				count++;
 				continue;
 			}
 
@@ -522,6 +506,10 @@ unsigned long mapping_try_invalidate(struct address_space *mapping,
 			}
 			count += ret;
 		}
+
+		if (xa_has_values)
+			clear_shadow_entries(mapping, &fbatch, indices);
+
 		folio_batch_remove_exceptionals(&fbatch);
 		folio_batch_release(&fbatch);
 		cond_resched();
@@ -616,6 +604,7 @@ int invalidate_inode_pages2_range(struct address_space *mapping,
 	int ret = 0;
 	int ret2 = 0;
 	int did_range_unmap = 0;
+	bool xa_has_values = false;
 
 	if (mapping_empty(mapping))
 		return 0;
@@ -629,8 +618,9 @@ int invalidate_inode_pages2_range(struct address_space *mapping,
 			/* We rely upon deletion not changing folio->index */
 
 			if (xa_is_value(folio)) {
-				if (!invalidate_exceptional_entry2(mapping,
-						indices[i], folio))
+				xa_has_values = true;
+				if (dax_mapping(mapping) &&
+				    !dax_invalidate_mapping_entry_sync(mapping, indices[i]))
 					ret = -EBUSY;
 				continue;
 			}
@@ -666,6 +656,10 @@ int invalidate_inode_pages2_range(struct address_space *mapping,
 				ret = ret2;
 			folio_unlock(folio);
 		}
+
+		if (xa_has_values)
+			clear_shadow_entries(mapping, &fbatch, indices);
+
 		folio_batch_remove_exceptionals(&fbatch);
 		folio_batch_release(&fbatch);
 		cond_resched();
-- 
2.45.2.803.g4e1b14247a-goog

.

From: zhangchun <zhang.chuna@h3c.com>
To: <akpm@linux-foundation.org>
CC: <linux-mm@kvack.org>, <linux-kernel@vger.kernel.org>, <jiaoxupo@h3c.com>,
        <zhang.zhengming@h3c.com>, <zhang.zhansheng@h3c.com>,
        <shaohaojize@126.com>, zhangchun <zhang.chuna@h3c.com>
Subject: [PATCH] =?UTF-8?q?mm:=20Give=20kmap=5Flock=20before=20call=20flus?= =?UTF-8?q?h=5Ftlb=5Fkernel=5Frang=EF=BC=8Cavoid=20kmap=5Fhigh=20deadlock?= =?UTF-8?q?=20V2.?=
Date: Wed, 10 Jul 2024 14:26:12 +0800
Message-ID: <1720592772-19904-1-git-send-email-zhang.chuna@h3c.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-DNSRBL: 
X-SPAM-SOURCE-CHECK: pass
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273154 org.kvack.linux-mm:203227
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use kmap_high and kmap_XXX or kumap_xxx among differt cores at the same
time may cause deadlock. The issue is like this：

 CPU 0:                                                 CPU 1:
 kmap_high(){                                           kmap_xxx() {
               ...                                        irq_disable();
        spin_lock(&kmap_lock)
               ...
        map_new_virtual                                     ...
           flush_all_zero_pkmaps
              flush_tlb_kernel_range         /* CPU0 holds the kmap_lock */
                      smp_call_function_many         spin_lock(&kmap_lock)
                      ...                                   ....
        spin_unlock(&kmap_lock)
               ...

CPU 0 holds the kmap_lock, waiting for CPU 1 respond to IPI. But CPU 1
has disabled irqs, waiting for kmap_lock, cannot answer the IPI. Fix
this by releasing  kmap_lock before call flush_tlb_kernel_range,
avoid kmap_lock deadlock.

Fixes: 3297e760776a ("highmem: atomic highmem kmap page pinning")
Signed-off-by: zhangchun <zhang.chuna@h3c.com>
Co-developed-by: zhangzhansheng <zhang.zhansheng@h3c.com>
Signed-off-by: zhangzhansheng <zhang.zhansheng@h3c.com>
Suggested-by: Matthew Wilcox <willy@infradead.org>
Reviewed-by: zhangzhengming <zhang.zhengming@h3c.com>
---
 mm/highmem.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/mm/highmem.c b/mm/highmem.c
index bd48ba4..841b370 100644
--- a/mm/highmem.c
+++ b/mm/highmem.c
@@ -220,8 +220,11 @@ static void flush_all_zero_pkmaps(void)
 		set_page_address(page, NULL);
 		need_flush = 1;
 	}
-	if (need_flush)
+	if (need_flush) {
+		unlock_kmap();
 		flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP));
+		lock_kmap();
+	}
 }
 
 void __kmap_flush_unused(void)
-- 
1.8.3.1

.

Return-Path: <linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org>
From: Christophe Leroy <christophe.leroy@csgroup.eu>
To: Andrew Morton <akpm@linux-foundation.org>,
	Arnd Bergmann <arnd@arndb.de>
Cc: Christophe Leroy <christophe.leroy@csgroup.eu>,
	linux-kernel@vger.kernel.org,
	linux-mm@kvack.org,
	x86@kernel.org,
	linux-riscv@lists.infradead.org,
	Oscar Salvador <osalvador@suse.de>,
	Peter Xu <peterx@redhat.com>
Subject: [PATCH v2 1/3] arch/x86: Drop own definition of pgd,p4d_leaf
Date: Wed, 10 Jul 2024 09:51:20 +0200
Message-ID: <bcd6ab8246348f18fdc77694e321ee6458f05781.1720597744.git.christophe.leroy@csgroup.eu>
MIME-Version: 1.0
X-BeenThere: linux-riscv@lists.infradead.org
X-Mailman-Version: 2.1.34
List-Id: <linux-riscv.lists.infradead.org>
List-Unsubscribe: <http://lists.infradead.org/mailman/options/linux-riscv>,
 <mailto:linux-riscv-request@lists.infradead.org?subject=unsubscribe>
List-Archive: <http://lists.infradead.org/pipermail/linux-riscv/>
List-Post: <mailto:linux-riscv@lists.infradead.org>
List-Help: <mailto:linux-riscv-request@lists.infradead.org?subject=help>
List-Subscribe: <http://lists.infradead.org/mailman/listinfo/linux-riscv>,
 <mailto:linux-riscv-request@lists.infradead.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: "linux-riscv" <linux-riscv-bounces@lists.infradead.org>
Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org
Xref: photonic.trudheim.com org.infradead.lists.linux-riscv:79559 org.kernel.vger.linux-kernel:1273184 org.kvack.linux-mm:203229
Newsgroups: org.infradead.lists.linux-riscv,org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: Oscar Salvador <osalvador@suse.de>

We provide generic definitions of pXd_leaf in pgtable.h when the arch
do not define their own, where the generic pXd_leaf always return false.

Although x86 defines {pgd,p4d}_leaf, they end up being a no-op, so drop them
and make them fallback to the generic one.

Signed-off-by: Oscar Salvador <osalvador@suse.de>
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
---
 arch/x86/include/asm/pgtable.h | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
index 65b8e5bb902c..772f778bac06 100644
--- a/arch/x86/include/asm/pgtable.h
+++ b/arch/x86/include/asm/pgtable.h
@@ -252,13 +252,6 @@ static inline unsigned long pgd_pfn(pgd_t pgd)
 	return (pgd_val(pgd) & PTE_PFN_MASK) >> PAGE_SHIFT;
 }
 
-#define p4d_leaf p4d_leaf
-static inline bool p4d_leaf(p4d_t p4d)
-{
-	/* No 512 GiB pages yet */
-	return 0;
-}
-
 #define pte_page(pte)	pfn_to_page(pte_pfn(pte))
 
 #define pmd_leaf pmd_leaf
@@ -1396,9 +1389,6 @@ static inline bool pgdp_maps_userspace(void *__ptr)
 	return (((ptr & ~PAGE_MASK) / sizeof(pgd_t)) < PGD_KERNEL_START);
 }
 
-#define pgd_leaf	pgd_leaf
-static inline bool pgd_leaf(pgd_t pgd) { return false; }
-
 #ifdef CONFIG_MITIGATION_PAGE_TABLE_ISOLATION
 /*
  * All top-level MITIGATION_PAGE_TABLE_ISOLATION page tables are order-1 pages
-- 
2.44.0


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
.

From: zhangchun <zhang.chuna@h3c.com>
To: <akpm@linux-foundation.org>
CC: <linux-mm@kvack.org>, <linux-kernel@vger.kernel.org>, <jiaoxupo@h3c.com>,
        <zhang.zhengming@h3c.com>, <zhang.zhansheng@h3c.com>,
        <shaohaojize@126.com>, zhangchun <zhang.chuna@h3c.com>
Subject: [PATCH v2] =?UTF-8?q?mm:=20Give=20kmap=5Flock=20before=20call=20flus?= =?UTF-8?q?h=5Ftlb=5Fkernel=5Frang=EF=BC=8Cavoid=20kmap=5Fhigh=20deadlock.?=
Date: Wed, 10 Jul 2024 15:20:13 +0800
Message-ID: <1720596013-56862-1-git-send-email-zhang.chuna@h3c.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-DNSRBL: 
X-SPAM-SOURCE-CHECK: pass
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273210 org.kvack.linux-mm:203233
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use kmap_high and kmap_XXX or kumap_xxx among differt cores at the same
time may cause deadlock. The issue is like this：

 CPU 0:                                                 CPU 1:
 kmap_high(){                                           kmap_xxx() {
               ...                                        irq_disable();
        spin_lock(&kmap_lock)
               ...
        map_new_virtual                                     ...
           flush_all_zero_pkmaps
              flush_tlb_kernel_range         /* CPU0 holds the kmap_lock */
                      smp_call_function_many         spin_lock(&kmap_lock)
                      ...                                   ....
        spin_unlock(&kmap_lock)
               ...

CPU 0 holds the kmap_lock, waiting for CPU 1 respond to IPI. But CPU 1
has disabled irqs, waiting for kmap_lock, cannot answer the IPI. Fix
this by releasing  kmap_lock before call flush_tlb_kernel_range,
avoid kmap_lock deadlock.

Fixes: 3297e760776a ("highmem: atomic highmem kmap page pinning")
Signed-off-by: zhangchun <zhang.chuna@h3c.com>
Co-developed-by: zhangzhansheng <zhang.zhansheng@h3c.com>
Suggested-by: Matthew Wilcox <willy@infradead.org>
Signed-off-by: zhangzhansheng <zhang.zhansheng@h3c.com>
Reviewed-by: zhangzhengming <zhang.zhengming@h3c.com>
---
 mm/highmem.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/mm/highmem.c b/mm/highmem.c
index bd48ba4..841b370 100644
--- a/mm/highmem.c
+++ b/mm/highmem.c
@@ -220,8 +220,11 @@ static void flush_all_zero_pkmaps(void)
 		set_page_address(page, NULL);
 		need_flush = 1;
 	}
-	if (need_flush)
+	if (need_flush) {
+		unlock_kmap();
 		flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP));
+		lock_kmap();
+	}
 }
 
 void __kmap_flush_unused(void)
-- 
1.8.3.1

.

From: Miaohe Lin <linmiaohe@huawei.com>
To: <akpm@linux-foundation.org>, <muchun.song@linux.dev>
CC: <linmiaohe@huawei.com>, <linux-mm@kvack.org>,
	<linux-kernel@vger.kernel.org>
Subject: [PATCH] mm/hugetlb: fix potential race with try_memory_failure_hugetlb()
Date: Wed, 10 Jul 2024 16:14:45 +0800
Message-ID: <20240710081445.3307355-1-linmiaohe@huawei.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273267 org.kvack.linux-mm:203236
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

There is a potential race between __update_and_free_hugetlb_folio() and
try_memory_failure_hugetlb():

 CPU1					CPU2
 __update_and_free_hugetlb_folio	try_memory_failure_hugetlb
  					 spin_lock_irq(&hugetlb_lock);
					 __get_huge_page_for_hwpoison
					  folio_test_hugetlb
					  -- It's still hugetlb folio.
  folio_test_hugetlb_raw_hwp_unreliable
  -- raw_hwp_unreliable flag is not set yet.
					  folio_set_hugetlb_hwpoison
					  -- raw_hwp_unreliable flag might
					     be set.
					 spin_unlock_irq(&hugetlb_lock);
  spin_lock_irq(&hugetlb_lock);
  __folio_clear_hugetlb(folio);
   -- Hugetlb flag is cleared but too late!
  spin_unlock_irq(&hugetlb_lock);

When above race occurs, raw error pages will hit pcplists/buddy. Fix
this issue by deferring folio_test_hugetlb_raw_hwp_unreliable() until
__folio_clear_hugetlb() is done. The raw_hwp_unreliable flag cannot be
set after hugetlb folio flag is cleared.

Fixes: 32c877191e02 ("hugetlb: do not clear hugetlb dtor until allocating vmemmap")
Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
Cc: <stable@vger.kernel.org>
---
 mm/hugetlb.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 9155144a654c..3d65b68cf78f 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -1705,13 +1705,6 @@ static void __update_and_free_hugetlb_folio(struct hstate *h,
 	if (hstate_is_gigantic(h) && !gigantic_page_runtime_supported())
 		return;
 
-	/*
-	 * If we don't know which subpages are hwpoisoned, we can't free
-	 * the hugepage, so it's leaked intentionally.
-	 */
-	if (folio_test_hugetlb_raw_hwp_unreliable(folio))
-		return;
-
 	/*
 	 * If folio is not vmemmap optimized (!clear_flag), then the folio
 	 * is no longer identified as a hugetlb page.  hugetlb_vmemmap_restore_folio
@@ -1739,6 +1732,13 @@ static void __update_and_free_hugetlb_folio(struct hstate *h,
 		spin_unlock_irq(&hugetlb_lock);
 	}
 
+	/*
+	 * If we don't know which subpages are hwpoisoned, we can't free
+	 * the hugepage, so it's leaked intentionally.
+	 */
+	if (folio_test_hugetlb_raw_hwp_unreliable(folio))
+		return;
+
 	/*
 	 * Move PageHWPoison flag from head page to the raw error pages,
 	 * which makes any healthy subpages reusable.
-- 
2.33.0

.

From: Zhiguo Jiang <justinjiang@vivo.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	linux-mm@kvack.org,
	linux-kernel@vger.kernel.org,
	Barry Song <baohua@kernel.org>,
	David Hildenbrand <david@redhat.com>,
	Matthew Wilcox <willy@infradead.org>
Cc: opensource.kernel@vivo.com,
	Zhiguo Jiang <justinjiang@vivo.com>
Subject: [PATCH v10] mm: shrink skip folio mapped by an exiting process
Date: Wed, 10 Jul 2024 16:36:41 +0800
Message-ID: <20240710083641.546-1-justinjiang@vivo.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273295 org.kvack.linux-mm:203239
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The releasing process of the non-shared anonymous folio mapped solely by
an exiting process may go through two flows: 1) the anonymous folio is
firstly is swaped-out into swapspace and transformed into a swp_entry
in shrink_folio_list; 2) then the swp_entry is released in the process
exiting flow. This will result in the high cpu load of releasing a
non-shared anonymous folio mapped solely by an exiting process.

When the low system memory and the exiting process exist at the same
time, it will be likely to happen, because the non-shared anonymous
folio mapped solely by an exiting process may be reclaimed by
shrink_folio_list.

This patch is that shrink skips the non-shared anonymous folio solely
mapped by an exting process and this folio is only released directly in
the process exiting flow, which will save swap-out time and alleviate
the load of the process exiting. 

Acked-by: Barry Song <baohua@kernel.org>
Signed-off-by: Zhiguo Jiang <justinjiang@vivo.com>
---

Change log:
v9->v10:
1.Add folio_test_anon(folio) condition.
v8->v9:
1.Update Reviewed-by tag information.
v7->v8:
1.Add tags of Reviewed-by and Acked-by.
2.Add #include <linux/oom.h> to solve compilation issue.
v6->v7:
1.Modify tab indentation to space indentation of the continuation
lines of the condition.
v5->v6:
1.Move folio_likely_mapped_shared() under the PTL.
2.Add check_stable_address_space() to replace MMF_OOM_SKIP.
3.Remove folio_test_anon(folio).
v4->v5:
1.Further modify to skip non-shared anonymous folio only.
2.Update comments for pra->referenced = -1.
v3->v4:
1.Modify to skip only the non-shared anonymous folio mapped solely
by an exiting process.
v2->v3:
Nothing.
v1->v2:
1.The VM_EXITING added in v1 patch is removed, because it will fail
to compile in 32-bit system.

Comments from participants and my responses:
[v9->v10]:
1.David Hildenbrand <david@redhat.com> && Barry Song <baohua@kernel.org>
BTW, we dropped the folio_test_anon() check, but what about shmem? They
also do __folio_set_swapbacked()?
Even though anon_shmem behaves similarly to anonymous memory when
releasing memory, it doesn't seem worth the added complexity?
-->
Take folio_test_anon() back.

[v8->v9]:
1.Barry Song <baohua@kernel.org>
No, this is a disaster. Please ask someone for help before you send it.
Neither Willy nor David has ever posted any Reviewed-by tags.
Please do get someone to help you. Stop posting like this!
-->
Update Reviewed-by tag information in v9.

[v7->v8]:
1.Barry Song <baohua@kernel.org>
You should have collected tags such as reviewed-by, acked-by you got in
v6 while sending v7.
-->
Added in patch v8.

You didn't even pass the compilation stage because you're missing
'linux/oom.h'. It's quite disappointing because I believe in your idea,
but you didn't even build it before sending.
-->
Sorry, I overlooked the compilation of folio_likely_mapped_shared() added
in patch v5. Compiled and Updated have been compeleted in patch v8.

[v6->v7]:
1.Matthew Wilcox <willy@infradead.org>
You told me you'd fix the indentation.  You cannot indent both the
continuation lines of the condition and the body of the if by one tab
each!
-->
Modify tab indentation to space indentation of the continuation
lines of the condition.

[v5->v6]:
1.David Hildenbrand <david@redhat.com>
I'm currently working on moving all folio_likely_mapped_shared() under
the PTL, where we are then sure that the folio is actually mapped by
this process (e.g., no concurrent unmapping poisslbe). Can we do the
same here directly? 
-->
You are right. we might use page_vma_mapped_walk_done() to bail out.
(Barry Song)

2.Barry Song <baohua@kernel.org>
By the way, I am not convinced that using test_bit(MMF_OOM_SKIP,
&vma->vm_mm->flags) is correct (I think it is wrong). And exit_mmap()
automatically has MMF_OOM_SKIP. What is the purpose of this check?
Is there a better way to determine if a process is an OOM target?
What about check_stable_address_space() ?
-->
Sorry, I overlook the situation with if (is_global_init(p)),
MMF_OOM_SKIP is indeed not suitable. It seems feasible for
check_stable_address_space() replacing MMF_OOM_SKIP.
check_stable_address_space() can indicate oom kill, and
!atomic_read(&vma->vm_mm->mm_users) can indicate the normal
process exiting. 

I also think we actually can remove "folio_test_anon(folio)".
-->
Yes, update in patch v6.

[v4->v5]:
1.Barry Song <baohua@kernel.org>
I don't think this is correct. folio_likely_mapped_shared() is almost
"correct" but not always.
Please explain why you set  pra->referenced =  -1. Please address all
comments before you send a new version.
-->
Update in patch v5.

2.Matthew Wilcox <willy@infradead.org>
How is the file folio similar?  File folios are never written to swap,
and they'll be written back from the page cache whenever the filesystem
decides it's a good time to do so.
-->
What do you mean is that the file folio will not have any relevant
identifier left in memory after it is reclamed in the shrink flow,
and it will not be released again during an exiting process? If that's
the case, I think we only need the anon folio is skipped here. 

[v3->v4]:
1.Barry Song <baohua@kernel.org>
This is clearly version 3, as you previously sent version 2, correct?
-->
Yes.

Could you please describe the specific impact on users, including user
experience and power consumption? How serious is this problem?
-->
At present, I do not have a suitable method to accurately measure the
optimization benefit datas of this modifications, but I believe it
theoretically has some benefits.
Launching large memory app (for example, starting the camera) in multiple
backend scenes may result in the high cpu load of the exiting processes. 

Applications?
-->
Yes, when system is low memory, it more likely to occur.

I'm not completely convinced this patch is correct, but it appears to be
heading in the right direction. Therefore, I expect to see new versions
rather than it being dead.
You changed the file mode to 755, which is incorrect.
-->
Solved.

Why use -1? Is this meant to simulate lock contention to keep the folio
without activating it? Please do have some comments to explain why.
I'm not convinced this change is appropriate for shared folios. It seems
more suitable for exclusive folios used solely by the exiting process.
-->
The skiped folios are FOLIOREF_KEEP and added into inactive lru, beacase
the folios will be freed soon in the exiting process flow.
Yes, the shared folios can not be simply skipped. I have made relevant
modifications in patch v4 and please help to further review.
https://lore.kernel.org/linux-mm/20240708031517.856-1-justinjiang@vivo.com/

2.David Hildenbrand <david@redhat.com>
but what if it is shared among multiple processes and only one of them
is exiting?
-->
Modify to skip only the non-shared anonymous folio mapped solely
by an exiting process in next version v4.

[v2->v3:]
Nothing.

[v1->v2]:
1.Matthew Wilcox <willy@infradead.org>
What testing have you done of this patch?  How often does it happen?
Are there particular workloads that benefit from this?  (I'm not sure
what "mutil backed-applications" are?)
And I do mean specifically of this patch, because to my eyes it
shouldn't even compile. Except on 32-bit where it'll say "warning:
integer constant out of range".
-->
Yes, I have tested. When the low system memory and the exiting process
exist at the same time, it will happen. This modification can alleviate
the load of the exiting process. 
"mutil backed-applications" means that there are a large number of
the backend applications in the system.
The VM_EXITING added in v1 patch is removed, because it will fail
to compile in 32-bit system.

 mm/rmap.c   | 15 +++++++++++++++
 mm/vmscan.c |  7 ++++++-
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/mm/rmap.c b/mm/rmap.c
index 86787df6e212..316a6bb9747b 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -75,6 +75,7 @@
 #include <linux/memremap.h>
 #include <linux/userfaultfd_k.h>
 #include <linux/mm_inline.h>
+#include <linux/oom.h>
 
 #include <asm/tlbflush.h>
 
@@ -870,6 +871,20 @@ static bool folio_referenced_one(struct folio *folio,
 			continue;
 		}
 
+		/*
+		 * Skip the non-shared swapbacked folio mapped solely by
+		 * the exiting or OOM-reaped process. This avoids redundant
+		 * swap-out followed by an immediate unmap.
+		 */
+		if ((!atomic_read(&vma->vm_mm->mm_users) ||
+		    check_stable_address_space(vma->vm_mm)) &&
+		    folio_test_anon(folio) && folio_test_swapbacked(folio) &&
+		    !folio_likely_mapped_shared(folio)) {
+			pra->referenced = -1;
+			page_vma_mapped_walk_done(&pvmw);
+			return false;
+		}
+
 		if (pvmw.pte) {
 			if (lru_gen_enabled() &&
 			    pte_young(ptep_get(pvmw.pte))) {
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 0761f91b407f..9afe4bb5ba87 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -863,7 +863,12 @@ static enum folio_references folio_check_references(struct folio *folio,
 	if (vm_flags & VM_LOCKED)
 		return FOLIOREF_ACTIVATE;
 
-	/* rmap lock contention: rotate */
+	/*
+	 * There are two cases to consider.
+	 * 1) Rmap lock contention: rotate.
+	 * 2) Skip the non-shared swapbacked folio mapped solely by
+	 *    the exiting or OOM-reaped process.
+	 */
 	if (referenced_ptes == -1)
 		return FOLIOREF_KEEP;
 
-- 
2.39.0

.

From: Ryan Roberts <ryan.roberts@arm.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	Hugh Dickins <hughd@google.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Barry Song <baohua@kernel.org>,
	David Hildenbrand <david@redhat.com>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	Lance Yang <ioworker0@gmail.com>,
	Matthew Wilcox <willy@infradead.org>,
	Zi Yan <ziy@nvidia.com>,
	Daniel Gomez <da.gomez@samsung.com>
Cc: Ryan Roberts <ryan.roberts@arm.com>,
	linux-kernel@vger.kernel.org,
	linux-mm@kvack.org
Subject: [PATCH v2] mm: shmem: Rename mTHP shmem counters
Date: Wed, 10 Jul 2024 10:55:01 +0100
Message-ID: <20240710095503.3193901-1-ryan.roberts@arm.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273409 org.kvack.linux-mm:203245
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The legacy PMD-sized THP counters at /proc/vmstat include
thp_file_alloc, thp_file_fallback and thp_file_fallback_charge, which
rather confusingly refer to shmem THP and do not include any other types
of file pages. This is inconsistent since in most other places in the
kernel, THP counters are explicitly separated for anon, shmem and file
flavours. However, we are stuck with it since it constitutes a user ABI.

Recently, commit 66f44583f9b6 ("mm: shmem: add mTHP counters for
anonymous shmem") added equivalent mTHP stats for shmem, keeping the
same "file_" prefix in the names. But in future, we may want to add
extra stats to cover actual file pages, at which point, it would all
become very confusing.

So let's take the opportunity to rename these new counters "shmem_"
before the change makes it upstream and the ABI becomes immutable. While
we are at it, let's improve the documentation for the legacy counters to
make it clear that they count shmem pages only.

Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com>
Reviewed-by: Lance Yang <ioworker0@gmail.com>
---

Hi All,

Applies on top of yesterday's mm-unstable (2073cda629a4) and tested with mm
selftests; no regressions observed.

The backstory here is that I'd like to introduce some counters for regular file
folio allocations to observe how often large folio allocation succeeds, but
these shmem counters are named "file" which is going to make things confusing.
So hoping to solve that before commit 66f44583f9b6 ("mm: shmem: add mTHP
counters for anonymous shmem") goes upstream (it is currently in mm-stable).

Changes since v1 [1]
====================
  - Updated documentation for existing legacy "file_" counters to make it clear
    they only count shmem pages.

[1] https://lore.kernel.org/linux-mm/20240708112445.2690631-1-ryan.roberts@arm.com/

Thanks,
Ryan

 Documentation/admin-guide/mm/transhuge.rst | 29 ++++++++++++----------
 include/linux/huge_mm.h                    |  6 ++---
 mm/huge_memory.c                           | 12 ++++-----
 mm/shmem.c                                 |  8 +++---
 4 files changed, 29 insertions(+), 26 deletions(-)

diff --git a/Documentation/admin-guide/mm/transhuge.rst b/Documentation/admin-guide/mm/transhuge.rst
index 747c811ee8f1..3528daa1f239 100644
--- a/Documentation/admin-guide/mm/transhuge.rst
+++ b/Documentation/admin-guide/mm/transhuge.rst
@@ -412,20 +412,23 @@ thp_collapse_alloc_failed
 	the allocation.

 thp_file_alloc
-	is incremented every time a file huge page is successfully
-	allocated.
+	is incremented every time a shmem huge page is successfully
+	allocated (Note that despite being named after "file", the counter
+	measures only shmem).

 thp_file_fallback
-	is incremented if a file huge page is attempted to be allocated
-	but fails and instead falls back to using small pages.
+	is incremented if a shmem huge page is attempted to be allocated
+	but fails and instead falls back to using small pages. (Note that
+	despite being named after "file", the counter measures only shmem).

 thp_file_fallback_charge
-	is incremented if a file huge page cannot be charged and instead
+	is incremented if a shmem huge page cannot be charged and instead
 	falls back to using small pages even though the allocation was
-	successful.
+	successful. (Note that despite being named after "file", the
+	counter measures only shmem).

 thp_file_mapped
-	is incremented every time a file huge page is mapped into
+	is incremented every time a file or shmem huge page is mapped into
 	user address space.

 thp_split_page
@@ -496,16 +499,16 @@ swpout_fallback
 	Usually because failed to allocate some continuous swap space
 	for the huge page.

-file_alloc
-	is incremented every time a file huge page is successfully
+shmem_alloc
+	is incremented every time a shmem huge page is successfully
 	allocated.

-file_fallback
-	is incremented if a file huge page is attempted to be allocated
+shmem_fallback
+	is incremented if a shmem huge page is attempted to be allocated
 	but fails and instead falls back to using small pages.

-file_fallback_charge
-	is incremented if a file huge page cannot be charged and instead
+shmem_fallback_charge
+	is incremented if a shmem huge page cannot be charged and instead
 	falls back to using small pages even though the allocation was
 	successful.

diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
index acb6ac24a07e..cff002be83eb 100644
--- a/include/linux/huge_mm.h
+++ b/include/linux/huge_mm.h
@@ -269,9 +269,9 @@ enum mthp_stat_item {
 	MTHP_STAT_ANON_FAULT_FALLBACK_CHARGE,
 	MTHP_STAT_SWPOUT,
 	MTHP_STAT_SWPOUT_FALLBACK,
-	MTHP_STAT_FILE_ALLOC,
-	MTHP_STAT_FILE_FALLBACK,
-	MTHP_STAT_FILE_FALLBACK_CHARGE,
+	MTHP_STAT_SHMEM_ALLOC,
+	MTHP_STAT_SHMEM_FALLBACK,
+	MTHP_STAT_SHMEM_FALLBACK_CHARGE,
 	MTHP_STAT_SPLIT,
 	MTHP_STAT_SPLIT_FAILED,
 	MTHP_STAT_SPLIT_DEFERRED,
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 9ec64aa2be94..f9696c94e211 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -568,9 +568,9 @@ DEFINE_MTHP_STAT_ATTR(anon_fault_fallback, MTHP_STAT_ANON_FAULT_FALLBACK);
 DEFINE_MTHP_STAT_ATTR(anon_fault_fallback_charge, MTHP_STAT_ANON_FAULT_FALLBACK_CHARGE);
 DEFINE_MTHP_STAT_ATTR(swpout, MTHP_STAT_SWPOUT);
 DEFINE_MTHP_STAT_ATTR(swpout_fallback, MTHP_STAT_SWPOUT_FALLBACK);
-DEFINE_MTHP_STAT_ATTR(file_alloc, MTHP_STAT_FILE_ALLOC);
-DEFINE_MTHP_STAT_ATTR(file_fallback, MTHP_STAT_FILE_FALLBACK);
-DEFINE_MTHP_STAT_ATTR(file_fallback_charge, MTHP_STAT_FILE_FALLBACK_CHARGE);
+DEFINE_MTHP_STAT_ATTR(shmem_alloc, MTHP_STAT_SHMEM_ALLOC);
+DEFINE_MTHP_STAT_ATTR(shmem_fallback, MTHP_STAT_SHMEM_FALLBACK);
+DEFINE_MTHP_STAT_ATTR(shmem_fallback_charge, MTHP_STAT_SHMEM_FALLBACK_CHARGE);
 DEFINE_MTHP_STAT_ATTR(split, MTHP_STAT_SPLIT);
 DEFINE_MTHP_STAT_ATTR(split_failed, MTHP_STAT_SPLIT_FAILED);
 DEFINE_MTHP_STAT_ATTR(split_deferred, MTHP_STAT_SPLIT_DEFERRED);
@@ -581,9 +581,9 @@ static struct attribute *stats_attrs[] = {
 	&anon_fault_fallback_charge_attr.attr,
 	&swpout_attr.attr,
 	&swpout_fallback_attr.attr,
-	&file_alloc_attr.attr,
-	&file_fallback_attr.attr,
-	&file_fallback_charge_attr.attr,
+	&shmem_alloc_attr.attr,
+	&shmem_fallback_attr.attr,
+	&shmem_fallback_charge_attr.attr,
 	&split_attr.attr,
 	&split_failed_attr.attr,
 	&split_deferred_attr.attr,
diff --git a/mm/shmem.c b/mm/shmem.c
index 921d59c3d669..f24dfbd387ba 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -1777,7 +1777,7 @@ static struct folio *shmem_alloc_and_add_folio(struct vm_fault *vmf,
 			if (pages == HPAGE_PMD_NR)
 				count_vm_event(THP_FILE_FALLBACK);
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-			count_mthp_stat(order, MTHP_STAT_FILE_FALLBACK);
+			count_mthp_stat(order, MTHP_STAT_SHMEM_FALLBACK);
 #endif
 			order = next_order(&suitable_orders, order);
 		}
@@ -1804,8 +1804,8 @@ static struct folio *shmem_alloc_and_add_folio(struct vm_fault *vmf,
 				count_vm_event(THP_FILE_FALLBACK_CHARGE);
 			}
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-			count_mthp_stat(folio_order(folio), MTHP_STAT_FILE_FALLBACK);
-			count_mthp_stat(folio_order(folio), MTHP_STAT_FILE_FALLBACK_CHARGE);
+			count_mthp_stat(folio_order(folio), MTHP_STAT_SHMEM_FALLBACK);
+			count_mthp_stat(folio_order(folio), MTHP_STAT_SHMEM_FALLBACK_CHARGE);
 #endif
 		}
 		goto unlock;
@@ -2181,7 +2181,7 @@ static int shmem_get_folio_gfp(struct inode *inode, pgoff_t index,
 			if (folio_test_pmd_mappable(folio))
 				count_vm_event(THP_FILE_ALLOC);
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-			count_mthp_stat(folio_order(folio), MTHP_STAT_FILE_ALLOC);
+			count_mthp_stat(folio_order(folio), MTHP_STAT_SHMEM_ALLOC);
 #endif
 			goto alloced;
 		}
--
2.43.0

.

From: Oscar Salvador <osalvador@suse.de>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org,
	linux-mm@kvack.org,
	Muchun Song <muchun.song@linux.dev>,
	David Hildenbrand <david@redhat.com>,
	Michal Hocko <mhocko@suse.com>,
	Donet Tom <donettom@linux.ibm.com>,
	"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>,
	Matthew Wilcox <willy@infradead.org>,
	Vlastimil Babka <vbabka@suse.cz>,
	Oscar Salvador <osalvador@suse.de>
Subject: [RFC PATCH 0/8] Unify hugetlb into arch_get_unmapped_area functions
Date: Wed, 10 Jul 2024 12:50:34 +0200
Message-ID: <20240710105042.30165-1-osalvador@suse.de>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273491 org.kvack.linux-mm:203251
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi all,

this is a first attempt to get rid of a fair amount of duplicated code
wrt. hugetlb and *get_unmapped_area* functions.

HugeTLB registers a .get_unmapped_area function which gets called from
__get_unmapped_area().
hugetlb_get_unmapped_area() is defined by a bunch of architectures and
it also has a generic definition for those that do not define it.
Short-long story is that there is a ton of duplicated code between
specific hugetlb *_get_unmapped_area_* functions and mm-core functions,
so we can do better by teaching arch_get_unmapped_area* functions how
to deal with hugetlb mappings.

Note that not a lot of things need to be taught though.
hugetlb_mmap_check_and_align(), that gets called for hugetlb mappings
prior to call mm_get_unmapped_area_vmflags(), runs some sanity checks
and aligns the addr to huge_page_size(), so we do not need to that
down the road in the respective {generic,arch}_get_unmapped_area*
functions.

More information can be found in the respective patches.

LTP mmapstress and hugemmap testcases were ran on arm64, powerpc64le and
x86_64 without raising any issue.

Oscar Salvador (8):
  mm/mmap: Teach generic_get_unmapped_area{_topdown} to handle hugetlb
    mappings
  arch/s390: Teach arch_get_unmapped_area{_topdown} to handle hugetlb
    mappings
  arch/x86: Teach arch_get_unmapped_area_vmflags to handle hugetlb
    mappings
  arch/sparc: Teach arch_get_unmapped_area{_topdown} to handle hugetlb
    mappings
  arch/powerpc: Teach book3s64 arch_get_unmapped_area{_topdown} to
    handle hugetlb mappings
  mm: Make hugetlb mappings go through mm_get_unmapped_area_vmflags
  mm: Drop hugetlb_get_unmapped_area{_*} functions
  mm: Consolidate common checks in hugetlb_mmap_check_and_align

 arch/loongarch/include/asm/hugetlb.h |   4 -
 arch/mips/include/asm/hugetlb.h      |   4 -
 arch/parisc/include/asm/hugetlb.h    |  15 ----
 arch/parisc/mm/hugetlbpage.c         |  23 ------
 arch/powerpc/mm/book3s64/slice.c     |  49 +++++++-----
 arch/s390/include/asm/hugetlb.h      |  16 ----
 arch/s390/mm/hugetlbpage.c           |  84 ---------------------
 arch/s390/mm/mmap.c                  |   8 +-
 arch/sh/include/asm/hugetlb.h        |  15 ----
 arch/sparc/kernel/sys_sparc_32.c     |  16 +++-
 arch/sparc/kernel/sys_sparc_64.c     |  36 +++++++--
 arch/sparc/mm/hugetlbpage.c          | 108 ---------------------------
 arch/x86/kernel/sys_x86_64.c         |  24 ++++--
 arch/x86/mm/hugetlbpage.c            | 100 -------------------------
 fs/hugetlbfs/inode.c                 |  92 ++---------------------
 include/asm-generic/hugetlb.h        |   7 --
 include/linux/hugetlb.h              |  21 +++---
 mm/mmap.c                            |  19 ++++-
 18 files changed, 129 insertions(+), 512 deletions(-)

-- 
2.45.2

.

From: zhangchun <zhang.chuna@h3c.com>
To: <akpm@linux-foundation.org>
CC: <linux-mm@kvack.org>, <linux-kernel@vger.kernel.org>, <jiaoxupo@h3c.com>,
        <zhang.zhengming@h3c.com>, <zhang.zhansheng@h3c.com>,
        <shaohaojize@126.com>, zhangchun <zhang.chuna@h3c.com>
Subject: [PATCH v2] =?UTF-8?q?mm:=20Give=20kmap=5Flock=20before=20call=20flus?= =?UTF-8?q?h=5Ftlb=5Fkernel=5Frang=EF=BC=8Cavoid=20kmap=5Fhigh=20deadlock.?=
Date: Wed, 10 Jul 2024 20:20:28 +0800
Message-ID: <1720614028-2260-1-git-send-email-zhang.chuna@h3c.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-DNSRBL: 
X-SPAM-SOURCE-CHECK: pass
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273595 org.kvack.linux-mm:203262
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use kmap_high and kmap_XXX or kumap_xxx among differt cores at the same
time may cause deadlock. The issue is like this：

 CPU 0:                                                 CPU 1:
 kmap_high(){                                           kmap_xxx() {
               ...                                        irq_disable();
        spin_lock(&kmap_lock)
               ...
        map_new_virtual                                     ...
           flush_all_zero_pkmaps
              flush_tlb_kernel_range         /* CPU0 holds the kmap_lock */
                      smp_call_function_many         spin_lock(&kmap_lock)
                      ...                                   ....
        spin_unlock(&kmap_lock)
               ...

CPU 0 holds the kmap_lock, waiting for CPU 1 respond to IPI. But CPU 1
has disabled irqs, waiting for kmap_lock, cannot answer the IPI. Fix
this by releasing  kmap_lock before call flush_tlb_kernel_range,
avoid kmap_lock deadlock.

Fixes: 3297e760776a ("highmem: atomic highmem kmap page pinning")
Signed-off-by: zhangchun <zhang.chuna@h3c.com>
Co-developed-by: zhangzhansheng <zhang.zhansheng@h3c.com>
Signed-off-by: zhangzhansheng <zhang.zhansheng@h3c.com>
Suggested-by: Matthew Wilcox <willy@infradead.org>
Reviewed-by: zhangzhengming <zhang.zhengming@h3c.com>
---
 mm/highmem.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/mm/highmem.c b/mm/highmem.c
index bd48ba4..841b370 100644
--- a/mm/highmem.c
+++ b/mm/highmem.c
@@ -220,8 +220,11 @@ static void flush_all_zero_pkmaps(void)
 		set_page_address(page, NULL);
 		need_flush = 1;
 	}
-	if (need_flush)
+	if (need_flush) {
+		unlock_kmap();
 		flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP));
+		lock_kmap();
+	}
 }
 
 void __kmap_flush_unused(void)
-- 
1.8.3.1

.

Return-Path: <owner-linux-mm@kvack.org>
From: Andrew Zaborowski <andrew.zaborowski@intel.com>
To: linux-edac@vger.kernel.org,
	linux-mm@kvack.org
Cc: Kees Cook <keescook@chromium.org>,
	Tony Luck <tony.luck@intel.com>,
	Eric Biederman <ebiederm@xmission.com>,
	Borislav Petkov <bp@alien8.de>
Subject: [PATCH 1/3] x86: Add task_struct flag to force SIGBUS on MCE
Date: Wed, 10 Jul 2024 05:54:43 -0700
Message-ID: <20240710125445.564245-1-andrew.zaborowski@intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: owner-linux-mm@kvack.org
X-Loop: owner-majordomo@kvack.org
List-ID: <linux-mm.kvack.org>
List-Subscribe: <mailto:majordomo@kvack.org>
List-Unsubscribe: <mailto:majordomo@kvack.org>
Xref: photonic.trudheim.com org.kvack.linux-mm:203267
Newsgroups: org.kvack.linux-mm,org.kernel.vger.linux-edac
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Uncorrected memory errors for user pages are signaled to processes
using SIGBUS or, if the error happens in a syscall, an error retval
from the syscall.  The SIGBUS is documented in
Documentation/mm/hwpoison.rst#failure-recovery-modes

But there are corner cases where we cannot or don't want to return a
plain error from the syscall.  Subsequent commits covers two such cases:
execve and rseq.  Current code, in both places, will kill the task with a
SIGSEGV on error.  While not explicitly stated, it can be argued that it
should be a SIGBUS, for consistency and for the benefit of the userspace
signal handlers.  Even if the process cannot handle the signal, perhaps
the parent process can.  This was the case in the scenario that
motivated this patch.

In both cases, the architecture's exception handler (MCE handler on x86)
will queue a call to memory_failure.  This doesn't work because the
syscall-specific code sees the -EFAULT and terminates the task before
the queued work runs.

To fix this: 1. let pending work run in the error cases in both places.

And 2. on MCE, ensure memory_failure() is passed MF_ACTION_REQUIRED so
that the SIGBUS is queued.  Normally when the MCE is in a syscall,
a fixup of return IP and a call to kill_me_never() are what we want.
But in this case it's necessary to queue kill_me_maybe() which will set
MF_ACTION_REQUIRED which is checked by memory_failure().

To do this the syscall code will set current->kill_on_efault, a new
task_struct flag.  Check that flag in
arch/x86/kernel/cpu/mce/core.c:do_machine_check()

Note: the flag is not x86 specific even if only x86 handling is being
added here.  The definition could be guarded by #ifdef
CONFIG_MEMORY_FAILURE, but it would then need set/clear utilities.

Signed-off-by: Andrew Zaborowski <andrew.zaborowski@intel.com>
---
This is a v2 of
https://lore.kernel.org/linux-mm/20240501015340.3014724-1-andrew.zaborowski@intel.com/
In the v1 the existing flag current->in_execve was being reused instead
of adding a new one.  Kees Cook commented in
https://lore.kernel.org/linux-mm/202405010915.465AF19@keescook/ that
current->in_execve is going away.  Lacking a better idea and seeing
that execve() and rseq() would benefit from using a common mechanism, I
decided to add this new flag.

Perhaps with a better name current->kill_on_efault could replace
brpm->point_of_no_return to offset the pain of having this extra flag.
---
 arch/x86/kernel/cpu/mce/core.c | 18 +++++++++++++++++-
 include/linux/sched.h          |  2 ++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c
index ad0623b65..13f2ace3d 100644
--- a/arch/x86/kernel/cpu/mce/core.c
+++ b/arch/x86/kernel/cpu/mce/core.c
@@ -1611,7 +1611,7 @@ noinstr void do_machine_check(struct pt_regs *regs)
 			if (p)
 				SetPageHWPoison(p);
 		}
-	} else {
+	} else if (!current->kill_on_efault) {
 		/*
 		 * Handle an MCE which has happened in kernel space but from
 		 * which the kernel can recover: ex_has_fault_handler() has
@@ -1628,6 +1628,22 @@ noinstr void do_machine_check(struct pt_regs *regs)
 
 		if (m.kflags & MCE_IN_KERNEL_COPYIN)
 			queue_task_work(&m, msg, kill_me_never);
+	} else {
+		/*
+		 * Even with recovery code extra handling is required when
+		 * we're not returning to userspace after error (e.g. in
+		 * execve() beyond the point of no return) to ensure that
+		 * a SIGBUS is delivered.
+		 */
+		if (m.kflags & MCE_IN_KERNEL_RECOV) {
+			if (!fixup_exception(regs, X86_TRAP_MC, 0, 0))
+				mce_panic("Failed kernel mode recovery", &m, msg);
+		}
+
+		if (!mce_usable_address(&m))
+			queue_task_work(&m, msg, kill_me_now);
+		else
+			queue_task_work(&m, msg, kill_me_maybe);
 	}
 
 out:
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 61591ac6e..0cde1ba11 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -975,6 +975,8 @@ struct task_struct {
 	/* delay due to memory thrashing */
 	unsigned                        in_thrashing:1;
 #endif
+	/* Kill task on user memory access error */
+	unsigned                        kill_on_efault:1;
 
 	unsigned long			atomic_flags; /* Flags requiring atomic access. */
 
-- 
2.43.0

-----------------------------------------------------------
 Intel Corporation Iberia S.A, Martinez Villergas, 49, Bloque V, Planta 1, Oficina 134, Martinez Villergas Business Park, 28027, Madrid, Spain

Este mensaje se dirige exclusivamente a su destinatario y puede 
contener informacion privilegiada o confidencial. Si no es vd. 
el destinatario indicado, queda notificado de que la lectura, 
utilizacion, divulgacion y,o copia sin autorizacion esta prohibida 
en virtud de la legislacion vigente. Si ha recibido este mensaje por 
error, le rogamos que nos lo communique inmediatamente por 
esta misma via y proceda a su destruccion.

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.


.

From: Lei Liu <liulei.rjpt@vivo.com>
To: Sumit Semwal <sumit.semwal@linaro.org>,
	Benjamin Gaignard <benjamin.gaignard@collabora.com>,
	Brian Starkey <Brian.Starkey@arm.com>,
	John Stultz <jstultz@google.com>,
	"T.J. Mercier" <tjmercier@google.com>,
	=?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	David Hildenbrand <david@redhat.com>,
	Matthew Wilcox <willy@infradead.org>,
	Muhammad Usama Anjum <usama.anjum@collabora.com>,
	Andrei Vagin <avagin@google.com>,
	Ryan Roberts <ryan.roberts@arm.com>,
	Kefeng Wang <wangkefeng.wang@huawei.com>,
	linux-media@vger.kernel.org,
	dri-devel@lists.freedesktop.org,
	linaro-mm-sig@lists.linaro.org,
	linux-kernel@vger.kernel.org,
	linux-fsdevel@vger.kernel.org,
	linux-mm@kvack.org
Cc: opensource.kernel@vivo.com,
	Lei Liu <liulei.rjpt@vivo.com>
Subject: [PATCH 0/2] Support direct I/O read and write for memory allocated by dmabuf
Date: Wed, 10 Jul 2024 21:57:52 +0800
Message-Id: <20240710135757.25786-1-liulei.rjpt@vivo.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273719 org.kvack.linux-mm:203271
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-media,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use vm_insert_page to establish a mapping for the memory allocated
by dmabuf, thus supporting direct I/O read and write; and fix the
issue of incorrect memory statistics after mapping dmabuf memory.

Lei Liu (2):
  mm: dmabuf_direct_io: Support direct_io for memory allocated by dmabuf
  mm: dmabuf_direct_io: Fix memory statistics error for dmabuf allocated
    memory with direct_io support

 drivers/dma-buf/heaps/system_heap.c |  5 +++--
 fs/proc/task_mmu.c                  |  8 +++++++-
 include/linux/mm.h                  |  1 +
 mm/memory.c                         | 15 ++++++++++-----
 mm/rmap.c                           |  9 +++++----
 5 files changed, 26 insertions(+), 12 deletions(-)

-- 
2.34.1

.

From: Lei Liu <liulei.rjpt@vivo.com>
To: Sumit Semwal <sumit.semwal@linaro.org>,
	Benjamin Gaignard <benjamin.gaignard@collabora.com>,
	Brian Starkey <Brian.Starkey@arm.com>,
	John Stultz <jstultz@google.com>,
	"T.J. Mercier" <tjmercier@google.com>,
	=?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	David Hildenbrand <david@redhat.com>,
	Matthew Wilcox <willy@infradead.org>,
	Muhammad Usama Anjum <usama.anjum@collabora.com>,
	Andrei Vagin <avagin@google.com>,
	Ryan Roberts <ryan.roberts@arm.com>,
	Peter Xu <peterx@redhat.com>,
	Kefeng Wang <wangkefeng.wang@huawei.com>,
	linux-media@vger.kernel.org,
	dri-devel@lists.freedesktop.org,
	linaro-mm-sig@lists.linaro.org,
	linux-kernel@vger.kernel.org,
	linux-fsdevel@vger.kernel.org,
	linux-mm@kvack.org
Cc: opensource.kernel@vivo.com,
	Lei Liu <liulei.rjpt@vivo.com>
Subject: [PATCH 0/2] Support direct I/O read and write for memory allocated by dmabuf
Date: Wed, 10 Jul 2024 22:09:42 +0800
Message-Id: <20240710140948.25870-1-liulei.rjpt@vivo.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1273744 org.kvack.linux-mm:203277
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-media,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use vm_insert_page to establish a mapping for the memory allocated
by dmabuf, thus supporting direct I/O read and write; and fix the
issue of incorrect memory statistics after mapping dmabuf memory.

Lei Liu (2):
  mm: dmabuf_direct_io: Support direct_io for memory allocated by dmabuf
  mm: dmabuf_direct_io: Fix memory statistics error for dmabuf allocated
    memory with direct_io support

 drivers/dma-buf/heaps/system_heap.c |  5 +++--
 fs/proc/task_mmu.c                  |  8 +++++++-
 include/linux/mm.h                  |  1 +
 mm/memory.c                         | 15 ++++++++++-----
 mm/rmap.c                           |  9 +++++----
 5 files changed, 26 insertions(+), 12 deletions(-)

-- 
2.34.1

.

From: "Liam R. Howlett" <Liam.Howlett@oracle.com>
To: linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>
Cc: Suren Baghdasaryan <surenb@google.com>, Vlastimil Babka <vbabka@suse.cz>,
        Lorenzo Stoakes <lstoakes@gmail.com>,
        Matthew Wilcox <willy@infradead.org>, sidhartha.kumar@oracle.com,
        "Paul E . McKenney" <paulmck@kernel.org>,
        Bert Karwatzki <spasswolf@web.de>, Jiri Olsa <olsajiri@gmail.com>,
        linux-kernel@vger.kernel.org, Kees Cook <kees@kernel.org>,
        "Liam R. Howlett" <Liam.Howlett@oracle.com>
Subject: [PATCH v4 00/21] Avoid MAP_FIXED gap exposure
Date: Wed, 10 Jul 2024 15:22:29 -0400
Message-ID: <20240710192250.4114783-1-Liam.Howlett@oracle.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274122 org.kvack.linux-mm:203331
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

It is now possible to walk the vma tree using the rcu read locks and is
beneficial to do so to reduce lock contention.  Doing so while a
MAP_FIXED mapping is executing means that a reader may see a gap in the
vma tree that should never logically exist - and does not when using the
mmap lock in read mode.  The temporal gap exists because mmap_region()
calls munmap() prior to installing the new mapping.

This patch set stops rcu readers from seeing the temporal gap by
splitting up the munmap() function into two parts.  The first part
prepares the vma tree for modifications by doing the necessary splits
and tracks the vmas marked for removal in a side tree.  The second part
completes the munmapping of the vmas after the vma tree has been
overwritten (either by a MAP_FIXED replacement vma or by a NULL in the
munmap() case).

Please note that rcu walkers will still be able to see a temporary state
of split vmas that may be in the process of being removed, but the
temporal gap will not be exposed.  vma_start_write() are called on both
parts of the split vma, so this state is detectable.

RFC: https://lore.kernel.org/linux-mm/20240531163217.1584450-1-Liam.Howlett@oracle.com/
v1: https://lore.kernel.org/linux-mm/20240611180200.711239-1-Liam.Howlett@oracle.com/
v2: https://lore.kernel.org/all/20240625191145.3382793-1-Liam.Howlett@oracle.com/
v3: https://lore.kernel.org/linux-mm/20240704182718.2653918-1-Liam.Howlett@oracle.com/

Changes since v3:
 - Completely removing arch_unmap() from the kernel.  PPC doesn't need
   it and no one else uses it.
 - Relocated checks for mseal'ed vmas so it is only checked when
   necessary.
 - Remove do_vma_munmap() and use do_vmi_align_munmap() in its place
 - Added inclusive/exclusive comments for start/end of munmap
 - Added comments for unmap_start/unmap_end to specify it is for PTEs
 - Renamed "cleared_ptes" to "clear_ptes" and reversed the logic so that
   it is now a flag to indicate that the ptes need to be cleared vs it
   was done.
 - Set the "clear_ptes" flag after a successful vms_gather_munmap_vmas()
 - Rename vms_complete_pte_clear() to vms_clear_ptes() since it may
   happen before the completion of the vms in the case of a driver
   mmap'ing in mmap_region().
 - Fixed comment around vms_clear_ptes() in mmap_region().
 - Call init_vma_munmap() unconditionally in the mmap_region() case so
   that all defaults are set in the struct, which means
   init_vma_munmap() must support a NULL vma.
 - Use ULONG_MAX as the limit in abort_munmap_vmas() for clarity
 - Added a comment highlighting that the free_pgtables() call may use a
   different start/end based on if there was a prev/next vma
 - Removed incorrect comment about VM_ACCOUNT and mremap's move_vma()
 - Relocated to mas_store_gfp() call in vms_gather_munmap_vmas() so that
   it is clear that the accounting is okay.
 - Skip validate_mm() in do_vmi_align_munmap() on gather failure as
   vms_gather_munmap_vmas() already validates.
 - Added R-b from Lorenzo, Suren, and Kees - Thanks!


Liam R. Howlett (21):
  mm/mmap: Correctly position vma_iterator in __split_vma()
  mm/mmap: Introduce abort_munmap_vmas()
  mm/mmap: Introduce vmi_complete_munmap_vmas()
  mm/mmap: Extract the gathering of vmas from do_vmi_align_munmap()
  mm/mmap: Introduce vma_munmap_struct for use in munmap operations
  mm/mmap: Change munmap to use vma_munmap_struct() for accounting and
    surrounding vmas
  mm/mmap: Extract validate_mm() from vma_complete()
  mm/mmap: Inline munmap operation in mmap_region()
  mm/mmap: Expand mmap_region() munmap call
  mm/mmap: Support vma == NULL in init_vma_munmap()
  mm/mmap: Reposition vma iterator in mmap_region()
  mm/mmap: Track start and end of munmap in vma_munmap_struct
  mm/mmap: Clean up unmap_region() argument list
  mm/mmap: Avoid zeroing vma tree in mmap_region()
  mm/mmap: Use PHYS_PFN in mmap_region()
  mm/mmap: Use vms accounted pages in mmap_region()
  mm/mmap: Drop arch_unmap() call from all archs
  mm/mmap: Move can_modify_mm() check down the stack
  ipc/shm, mm: Drop do_vma_munmap()
  mm/mmap: Move may_expand_vm() check in mmap_region()
  mm/mmap: Drop incorrect comment from vms_gather_munmap_vmas()

 arch/powerpc/include/asm/mmu_context.h |   9 -
 arch/x86/include/asm/mmu_context.h     |   5 -
 include/asm-generic/mm_hooks.h         |  11 +-
 include/linux/mm.h                     |   6 +-
 ipc/shm.c                              |   8 +-
 mm/internal.h                          |  25 ++
 mm/mmap.c                              | 545 ++++++++++++++-----------
 7 files changed, 345 insertions(+), 264 deletions(-)

-- 
2.43.0

.

Return-Path: <owner-linux-mm@kvack.org>
Date: Thu, 11 Jul 2024 03:38:20 +0800
From: kernel test robot <lkp@intel.com>
To: Eddie James <eajames@linux.ibm.com>
Cc: oe-kbuild-all@lists.linux.dev,
	Linux Memory Management List <linux-mm@kvack.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Ninad Palsule <ninad@linux.ibm.com>
Subject: [linux-next:master 2666/12309]
 arch/arm/boot/dts/aspeed/aspeed-bmc-ibm-blueridge.dtb: i2c-mux: idle-state:
 [0] is not of type 'integer'
Message-ID: <202407110350.zTjARSrB-lkp@intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Sender: owner-linux-mm@kvack.org
X-Loop: owner-majordomo@kvack.org
List-ID: <linux-mm.kvack.org>
List-Subscribe: <mailto:majordomo@kvack.org>
List-Unsubscribe: <mailto:majordomo@kvack.org>
Xref: photonic.trudheim.com org.kvack.linux-mm:203344
Newsgroups: org.kvack.linux-mm,dev.linux.lists.oe-kbuild-all
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   523b23f0bee3014a7a752c9bb9f5c54f0eddae88
commit: 26e67f6ba292b41c6cf297194a3f2941688cad0f [2666/12309] ARM: dts: aspeed: Add IBM P11 Blueridge BMC system
config: arm-randconfig-051-20240711 (https://download.01.org/0day-ci/archive/20240711/202407110350.zTjARSrB-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 13.3.0
dtschema version: 2024.6.dev4+g23441a4
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240711/202407110350.zTjARSrB-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407110350.zTjARSrB-lkp@intel.com/

dtcheck warnings: (new ones prefixed by >>)
   arch/arm/boot/dts/aspeed/aspeed-bmc-ibm-blueridge.dtb: /ahb/apb/fsi@1e79b000/cfam@0,0/fsi@3400/cfam@3,0/fsi2spi@1c00/spi@0: failed to match any schema with compatible: ['ibm,spi-fsi']
   arch/arm/boot/dts/aspeed/aspeed-bmc-ibm-blueridge.dtb: /ahb/apb/fsi@1e79b000/cfam@0,0/fsi@3400/cfam@3,0/fsi2spi@1c00/spi@20: failed to match any schema with compatible: ['ibm,spi-fsi']
   arch/arm/boot/dts/aspeed/aspeed-bmc-ibm-blueridge.dtb: /ahb/apb/fsi@1e79b000/cfam@0,0/fsi@3400/cfam@3,0/fsi2spi@1c00/spi@40: failed to match any schema with compatible: ['ibm,spi-fsi']
   arch/arm/boot/dts/aspeed/aspeed-bmc-ibm-blueridge.dtb: /ahb/apb/fsi@1e79b000/cfam@0,0/fsi@3400/cfam@3,0/fsi2spi@1c00/spi@60: failed to match any schema with compatible: ['ibm,spi-fsi']
   arch/arm/boot/dts/aspeed/aspeed-bmc-ibm-blueridge.dtb: /ahb/apb/fsi@1e79b000/cfam@0,0/fsi@3400/cfam@3,0/sbefifo@2400: failed to match any schema with compatible: ['ibm,p9-sbefifo']
   arch/arm/boot/dts/aspeed/aspeed-bmc-ibm-blueridge.dtb: /ahb/apb/fsi@1e79b000/cfam@0,0/fsi@3400/cfam@3,0/sbefifo@2400/occ: failed to match any schema with compatible: ['ibm,p10-occ']
   arch/arm/boot/dts/aspeed/aspeed-bmc-ibm-blueridge.dtb: /ahb/apb/fsi@1e79b000/cfam@0,0/fsi@3400/cfam@3,0/fsi@3400: failed to match any schema with compatible: ['ibm,p9-fsi-controller']
   arch/arm/boot/dts/aspeed/aspeed-bmc-ibm-blueridge.dtb: /ahb/apb/fsi@1e79b100: failed to match any schema with compatible: ['aspeed,ast2600-fsi-master', 'fsi-master']
   arch/arm/boot/dts/aspeed/aspeed-bmc-ibm-blueridge.dtb: /ahb/apb/fsi@1e79b100: failed to match any schema with compatible: ['aspeed,ast2600-fsi-master', 'fsi-master']
   arch/arm/boot/dts/aspeed/aspeed-bmc-ibm-blueridge.dtb: /ahb/apb/dma-controller@1e79e000: failed to match any schema with compatible: ['aspeed,ast2600-udma']
>> arch/arm/boot/dts/aspeed/aspeed-bmc-ibm-blueridge.dtb: i2c-mux: idle-state: [0] is not of type 'integer'
   	from schema $id: http://devicetree.org/schemas/i2c/i2c-mux-gpio.yaml#
>> arch/arm/boot/dts/aspeed/aspeed-bmc-ibm-blueridge.dtb: i2c-mux: Unevaluated properties are not allowed ('idle-state' was unexpected)
   	from schema $id: http://devicetree.org/schemas/i2c/i2c-mux-gpio.yaml#

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

.

Date: Wed, 10 Jul 2024 13:23:33 -0700
From: Andrew Morton <akpm@linux-foundation.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
 mm-commits@vger.kernel.org
Subject: [GIT PULL] hotfixes against 6.10-rc7
Message-Id: <20240710132333.0ef20b0442ffd813429ec240@linux-foundation.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274161 org.kvack.linux-mm:203345
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.mm-commits,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail


Linus, please merge this batch of hotfixes, thanks.



The following changes since commit 93aef9eda1cea9e84ab2453fcceb8addad0e46f1:

  nilfs2: fix incorrect inode allocation from reserved inodes (2024-07-03 12:29:25 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm tags/mm-hotfixes-stable-2024-07-10-13-19

for you to fetch changes up to f708f6970cc9d6bac71da45c129482092e710537:

  mm/hugetlb: fix kernel NULL pointer dereference when migrating hugetlb folio (2024-07-09 15:41:11 -0700)

----------------------------------------------------------------
21 hotfixes, 15 of which are cc:stable.

No identifiable theme here - all are singleton patches, 19 are for MM.

----------------------------------------------------------------
Audra Mitchell (1):
      Fix userfaultfd_api to return EINVAL as expected

Gavin Shan (4):
      mm/filemap: make MAX_PAGECACHE_ORDER acceptable to xarray
      mm/readahead: limit page cache size in page_cache_ra_order()
      mm/filemap: skip to create PMD-sized page cache if needed
      mm/shmem: disable PMD-sized page cache if needed

Hugh Dickins (1):
      mm: fix crashes from deferred split racing folio migration

Lorenzo Stoakes (1):
      MAINTAINERS: mailmap: update Lorenzo Stoakes's email address

Miaohe Lin (2):
      mm/hugetlb: fix potential race in __update_and_free_hugetlb_folio()
      mm/hugetlb: fix kernel NULL pointer dereference when migrating hugetlb folio

Nhat Pham (1):
      cachestat: do not flush stats in recency check

Paul Menzel (1):
      lib/build_OID_registry: avoid non-destructive substitution for Perl < 5.13.2 compat

Ryusuke Konishi (1):
      nilfs2: fix kernel bug on rename operation of broken directory

SeongJae Park (1):
      mm/damon/core: merge regions aggressively when max_nr_regions is unmet

Suren Baghdasaryan (2):
      sched.h: always_inline alloc_tag_{save|restore} to fix modpost warnings
      arch/xtensa: always_inline get_current() and current_thread_info()

Uladzislau Rezki (Sony) (1):
      mm: vmalloc: check if a hash-index is in cpu_possible_mask

Waiman Long (1):
      mm: prevent derefencing NULL ptr in pfn_section_valid()

Yang Shi (2):
      mm: page_ref: remove folio_try_get_rcu()
      mm: gup: stop abusing try_grab_folio

Yu Zhao (1):
      mm/hugetlb_vmemmap: fix race with speculative PFN walkers

ZhangPeng (1):
      filemap: replace pte_offset_map() with pte_offset_map_nolock()

 .mailmap                              |   1 +
 MAINTAINERS                           |   2 +-
 arch/xtensa/include/asm/current.h     |   2 +-
 arch/xtensa/include/asm/thread_info.h |   2 +-
 fs/nilfs2/dir.c                       |  32 +++-
 fs/userfaultfd.c                      |   7 +-
 include/linux/mmzone.h                |   3 +-
 include/linux/page_ref.h              |  57 ++-----
 include/linux/pagemap.h               |  11 +-
 include/linux/sched.h                 |   4 +-
 include/linux/swap.h                  |   3 +-
 lib/build_OID_registry                |   4 +-
 mm/damon/core.c                       |  23 ++-
 mm/filemap.c                          |  20 ++-
 mm/gup.c                              | 291 ++++++++++++++++++----------------
 mm/huge_memory.c                      |   2 +-
 mm/hugetlb.c                          |  70 ++------
 mm/hugetlb_vmemmap.c                  |  16 ++
 mm/internal.h                         |   4 +-
 mm/memcontrol.c                       |  11 --
 mm/migrate.c                          |  13 ++
 mm/readahead.c                        |   8 +-
 mm/shmem.c                            |  15 +-
 mm/vmalloc.c                          |  10 +-
 mm/workingset.c                       |  14 +-
 25 files changed, 339 insertions(+), 286 deletions(-)

.

X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Date: Wed, 10 Jul 2024 13:34:20 -0700
Message-ID: <0000000000002b7de9061cea92b7@google.com>
Subject: [syzbot] [mm?] BUG: corrupted list in __folio_undo_large_rmappable
From: syzbot <syzbot+a2cc273ad0e5a4c15302@syzkaller.appspotmail.com>
To: akpm@linux-foundation.org, linux-kernel@vger.kernel.org, 
	linux-mm@kvack.org, syzkaller-bugs@googlegroups.com
Content-Type: text/plain; charset="UTF-8"
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1274166 org.kvack.linux-mm:203346
Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hello,

syzbot found the following issue on:

HEAD commit:    82d01fe6ee52 Add linux-next specific files for 20240709
git tree:       linux-next
console+strace: https://syzkaller.appspot.com/x/log.txt?x=14904441980000
kernel config:  https://syzkaller.appspot.com/x/.config?x=95a20e7acf357998
dashboard link: https://syzkaller.appspot.com/bug?extid=a2cc273ad0e5a4c15302
compiler:       Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
syz repro:      https://syzkaller.appspot.com/x/repro.syz?x=15882a49980000
C reproducer:   https://syzkaller.appspot.com/x/repro.c?x=172aba49980000

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/12dcacb06142/disk-82d01fe6.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/6ef954821378/vmlinux-82d01fe6.xz
kernel image: https://storage.googleapis.com/syzbot-assets/9ebf01d42887/bzImage-82d01fe6.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+a2cc273ad0e5a4c15302@syzkaller.appspotmail.com

list_del corruption, ffffea0001eb8090->next is NULL
------------[ cut here ]------------
kernel BUG at lib/list_debug.c:53!
Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI
CPU: 0 UID: 0 PID: 5105 Comm: syz-executor331 Not tainted 6.10.0-rc7-next-20240709-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024
RIP: 0010:__list_del_entry_valid_or_report+0xd0/0x140 lib/list_debug.c:52
Code: 06 e2 42 fd 48 8b 13 4c 39 fa 75 6b b0 01 5b 41 5c 41 5e 41 5f c3 cc cc cc cc 48 c7 c7 a0 9b 20 8c 4c 89 fe e8 71 e0 d7 06 90 <0f> 0b 48 c7 c7 00 9c 20 8c 4c 89 fe e8 5f e0 d7 06 90 0f 0b 48 c7
RSP: 0018:ffffc900034df410 EFLAGS: 00010046
RAX: 0000000000000033 RBX: ffff888140e81000 RCX: f885dda17ff31200
RDX: 0000000000000000 RSI: 0000000080000001 RDI: 0000000000000000
RBP: ffffea0001eb8090 R08: ffffffff8173a779 R09: 1ffff9200069be1c
R10: dffffc0000000000 R11: fffff5200069be1d R12: dffffc0000000000
R13: dffffc0000000000 R14: 0000000000000000 R15: ffffea0001eb8090
FS:  00007fe27183f6c0(0000) GS:ffff8880b9400000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00000000200d1a00 CR3: 0000000021fbe000 CR4: 00000000003506f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 <TASK>
 __list_del_entry_valid include/linux/list.h:124 [inline]
 __list_del_entry include/linux/list.h:215 [inline]
 list_del_init include/linux/list.h:287 [inline]
 __folio_undo_large_rmappable+0x104/0x230 mm/huge_memory.c:3289
 __folio_migrate_mapping+0x6c1/0x3490 mm/migrate.c:418
 __migrate_folio mm/migrate.c:693 [inline]
 migrate_folio+0x111/0x260 mm/migrate.c:720
 move_to_new_folio+0x306/0x12e0
 unmap_and_move_huge_page mm/migrate.c:1444 [inline]
 migrate_hugetlbs mm/migrate.c:1563 [inline]
 migrate_pages+0xb74/0x3460 mm/migrate.c:1960
 do_mbind mm/mempolicy.c:1388 [inline]
 kernel_mbind mm/mempolicy.c:1531 [inline]
 __do_sys_mbind mm/mempolicy.c:1605 [inline]
 __se_sys_mbind+0x1490/0x19f0 mm/mempolicy.c:1601
 do_syscall_x64 arch/x86/entry/common.c:52 [inline]
 do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7fe2718a4d39
Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 c1 17 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007fe27183f208 EFLAGS: 00000246 ORIG_RAX: 00000000000000ed
RAX: ffffffffffffffda RBX: 00007fe27192f338 RCX: 00007fe2718a4d39
RDX: 0000000000000000 RSI: 0000000000004000 RDI: 0000000020199000
RBP: 00007fe27192f330 R08: 0000000000000000 R09: 0000000000000003
R10: 0000000000000000 R11: 0000000000000246 R12: 00007fe2718fc604
R13: 00007fe2718fc008 R14: 7277682f7665642f R15: 00000000ffffff1f
 </TASK>
Modules linked in:
---[ end trace 0000000000000000 ]---
RIP: 0010:__list_del_entry_valid_or_report+0xd0/0x140 lib/list_debug.c:52
Code: 06 e2 42 fd 48 8b 13 4c 39 fa 75 6b b0 01 5b 41 5c 41 5e 41 5f c3 cc cc cc cc 48 c7 c7 a0 9b 20 8c 4c 89 fe e8 71 e0 d7 06 90 <0f> 0b 48 c7 c7 00 9c 20 8c 4c 89 fe e8 5f e0 d7 06 90 0f 0b 48 c7
RSP: 0018:ffffc900034df410 EFLAGS: 00010046
RAX: 0000000000000033 RBX: ffff888140e81000 RCX: f885dda17ff31200
RDX: 0000000000000000 RSI: 0000000080000001 RDI: 0000000000000000
RBP: ffffea0001eb8090 R08: ffffffff8173a779 R09: 1ffff9200069be1c
R10: dffffc0000000000 R11: fffff5200069be1d R12: dffffc0000000000
R13: dffffc0000000000 R14: 0000000000000000 R15: ffffea0001eb8090
FS:  00007fe27183f6c0(0000) GS:ffff8880b9400000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00000000200d1a00 CR3: 0000000021fbe000 CR4: 00000000003506f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@googlegroups.com.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup
.

Return-Path: <owner-linux-mm@kvack.org>
Date: Thu, 11 Jul 2024 04:09:35 +0800
From: kernel test robot <lkp@intel.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Linux Memory Management List <linux-mm@kvack.org>
Subject: [linux-next:fs-current] BUILD SUCCESS
 e8ee69b5fe5da2c0afa42eb13514dc8d1bb4a566
Message-ID: <202407110432.LkgJzBoy-lkp@intel.com>
Sender: owner-linux-mm@kvack.org
X-Loop: owner-majordomo@kvack.org
List-ID: <linux-mm.kvack.org>
List-Subscribe: <mailto:majordomo@kvack.org>
List-Unsubscribe: <mailto:majordomo@kvack.org>
Xref: photonic.trudheim.com org.kvack.linux-mm:203347
Newsgroups: org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git fs-current
branch HEAD: e8ee69b5fe5da2c0afa42eb13514dc8d1bb4a566  Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git

elapsed time: 1206m

configs tested: 174
configs skipped: 5

The following configs have been built successfully.
More configs may be tested in the coming days.

tested configs:
alpha                             allnoconfig   gcc-13.2.0
alpha                            allyesconfig   gcc-13.3.0
alpha                               defconfig   gcc-13.2.0
arc                              allmodconfig   gcc-13.2.0
arc                               allnoconfig   gcc-13.2.0
arc                              allyesconfig   gcc-13.2.0
arc                                 defconfig   gcc-13.2.0
arc                   randconfig-001-20240710   gcc-13.2.0
arc                   randconfig-002-20240710   gcc-13.2.0
arm                              allmodconfig   gcc-13.2.0
arm                              allmodconfig   gcc-13.3.0
arm                               allnoconfig   gcc-13.2.0
arm                              allyesconfig   gcc-13.2.0
arm                              allyesconfig   gcc-13.3.0
arm                        clps711x_defconfig   clang-19
arm                          collie_defconfig   gcc-13.3.0
arm                                 defconfig   gcc-13.2.0
arm                            dove_defconfig   gcc-13.3.0
arm                           imxrt_defconfig   gcc-13.3.0
arm                            mmp2_defconfig   clang-19
arm                        multi_v5_defconfig   clang-19
arm                       omap2plus_defconfig   clang-19
arm                   randconfig-001-20240710   gcc-13.2.0
arm                   randconfig-002-20240710   gcc-13.2.0
arm                   randconfig-003-20240710   gcc-13.2.0
arm                   randconfig-004-20240710   gcc-13.2.0
arm                           sama7_defconfig   gcc-13.3.0
arm                       versatile_defconfig   clang-19
arm64                            allmodconfig   clang-19
arm64                            allmodconfig   gcc-13.2.0
arm64                             allnoconfig   gcc-13.2.0
arm64                               defconfig   gcc-13.2.0
arm64                 randconfig-001-20240710   gcc-13.2.0
arm64                 randconfig-002-20240710   gcc-13.2.0
arm64                 randconfig-003-20240710   gcc-13.2.0
arm64                 randconfig-004-20240710   gcc-13.2.0
csky                              allnoconfig   gcc-13.2.0
csky                                defconfig   gcc-13.2.0
csky                                defconfig   gcc-13.3.0
csky                  randconfig-001-20240710   gcc-13.2.0
csky                  randconfig-002-20240710   gcc-13.2.0
hexagon                          allmodconfig   clang-19
hexagon                          allyesconfig   clang-19
i386                             allmodconfig   clang-18
i386                             allmodconfig   gcc-13
i386                              allnoconfig   clang-18
i386                              allnoconfig   gcc-13
i386                             allyesconfig   clang-18
i386                             allyesconfig   gcc-13
i386         buildonly-randconfig-001-20240710   clang-18
i386         buildonly-randconfig-002-20240710   clang-18
i386         buildonly-randconfig-003-20240710   clang-18
i386         buildonly-randconfig-004-20240710   clang-18
i386         buildonly-randconfig-005-20240710   clang-18
i386         buildonly-randconfig-006-20240710   clang-18
i386                                defconfig   clang-18
i386                  randconfig-001-20240710   clang-18
i386                  randconfig-002-20240710   clang-18
i386                  randconfig-003-20240710   clang-18
i386                  randconfig-004-20240710   clang-18
i386                  randconfig-005-20240710   clang-18
i386                  randconfig-006-20240710   clang-18
i386                  randconfig-011-20240710   clang-18
i386                  randconfig-012-20240710   clang-18
i386                  randconfig-013-20240710   clang-18
i386                  randconfig-014-20240710   clang-18
i386                  randconfig-015-20240710   clang-18
i386                  randconfig-016-20240710   clang-18
loongarch                        allmodconfig   gcc-13.2.0
loongarch                        allmodconfig   gcc-13.3.0
loongarch                         allnoconfig   gcc-13.2.0
loongarch                           defconfig   gcc-13.2.0
loongarch             randconfig-001-20240710   gcc-13.2.0
loongarch             randconfig-002-20240710   gcc-13.2.0
m68k                             allmodconfig   gcc-13.2.0
m68k                             allmodconfig   gcc-13.3.0
m68k                              allnoconfig   gcc-13.2.0
m68k                             allyesconfig   gcc-13.2.0
m68k                             allyesconfig   gcc-13.3.0
m68k                          amiga_defconfig   gcc-13.3.0
m68k                                defconfig   gcc-13.2.0
m68k                            q40_defconfig   gcc-13.3.0
microblaze                       alldefconfig   gcc-13.3.0
microblaze                       allmodconfig   gcc-13.2.0
microblaze                       allmodconfig   gcc-13.3.0
microblaze                        allnoconfig   gcc-13.2.0
microblaze                       allyesconfig   gcc-13.2.0
microblaze                       allyesconfig   gcc-13.3.0
microblaze                          defconfig   gcc-13.2.0
mips                              allnoconfig   gcc-13.2.0
mips                          eyeq5_defconfig   clang-19
mips                      malta_kvm_defconfig   clang-19
mips                           mtx1_defconfig   gcc-13.3.0
mips                        qi_lb60_defconfig   clang-19
nios2                             allnoconfig   gcc-13.2.0
nios2                               defconfig   gcc-13.2.0
nios2                 randconfig-001-20240710   gcc-13.2.0
nios2                 randconfig-002-20240710   gcc-13.2.0
openrisc                          allnoconfig   gcc-13.2.0
openrisc                          allnoconfig   gcc-13.3.0
openrisc                         allyesconfig   gcc-13.3.0
openrisc                            defconfig   gcc-13.2.0
parisc                           allmodconfig   gcc-13.3.0
parisc                            allnoconfig   gcc-13.2.0
parisc                            allnoconfig   gcc-13.3.0
parisc                           allyesconfig   gcc-13.3.0
parisc                              defconfig   gcc-13.2.0
parisc                randconfig-001-20240710   gcc-13.2.0
parisc                randconfig-002-20240710   gcc-13.2.0
parisc64                            defconfig   gcc-13.2.0
powerpc                     akebono_defconfig   clang-19
powerpc                          allmodconfig   gcc-13.3.0
powerpc                           allnoconfig   gcc-13.2.0
powerpc                           allnoconfig   gcc-13.3.0
powerpc                          allyesconfig   gcc-13.3.0
powerpc                     asp8347_defconfig   clang-19
powerpc                          g5_defconfig   gcc-13.3.0
powerpc                        icon_defconfig   gcc-13.3.0
powerpc                       maple_defconfig   clang-19
powerpc                       maple_defconfig   gcc-13.3.0
powerpc                   microwatt_defconfig   clang-19
powerpc                     mpc512x_defconfig   gcc-13.3.0
powerpc                      ppc44x_defconfig   gcc-13.3.0
powerpc               randconfig-001-20240710   gcc-13.2.0
powerpc               randconfig-002-20240710   gcc-13.2.0
powerpc               randconfig-003-20240710   gcc-13.2.0
powerpc                         wii_defconfig   gcc-13.3.0
powerpc64             randconfig-001-20240710   gcc-13.2.0
powerpc64             randconfig-002-20240710   gcc-13.2.0
powerpc64             randconfig-003-20240710   gcc-13.2.0
riscv                            allmodconfig   gcc-13.3.0
riscv                             allnoconfig   gcc-13.2.0
riscv                             allnoconfig   gcc-13.3.0
riscv                            allyesconfig   gcc-13.3.0
riscv                               defconfig   gcc-13.2.0
riscv                 randconfig-001-20240710   gcc-13.2.0
riscv                 randconfig-002-20240710   gcc-13.2.0
s390                             allmodconfig   clang-19
s390                              allnoconfig   clang-19
s390                              allnoconfig   gcc-13.2.0
s390                             allyesconfig   clang-19
s390                             allyesconfig   gcc-13.2.0
s390                                defconfig   gcc-13.2.0
s390                  randconfig-001-20240710   gcc-13.2.0
s390                  randconfig-002-20240710   gcc-13.2.0
sh                               allmodconfig   gcc-13.3.0
sh                                allnoconfig   gcc-13.2.0
sh                               allyesconfig   gcc-13.3.0
sh                                  defconfig   gcc-13.2.0
sh                    randconfig-001-20240710   gcc-13.2.0
sh                    randconfig-002-20240710   gcc-13.2.0
sparc                            allmodconfig   gcc-13.3.0
sparc64                             defconfig   gcc-13.2.0
sparc64               randconfig-001-20240710   gcc-13.2.0
sparc64               randconfig-002-20240710   gcc-13.2.0
um                               allmodconfig   clang-19
um                               allmodconfig   gcc-13.3.0
um                                allnoconfig   clang-17
um                                allnoconfig   gcc-13.2.0
um                               allyesconfig   gcc-13
um                               allyesconfig   gcc-13.3.0
um                                  defconfig   gcc-13.2.0
um                             i386_defconfig   gcc-13.2.0
um                    randconfig-001-20240710   gcc-13.2.0
um                    randconfig-002-20240710   gcc-13.2.0
um                           x86_64_defconfig   gcc-13.2.0
x86_64                            allnoconfig   clang-18
x86_64                           allyesconfig   clang-18
x86_64                              defconfig   clang-18
x86_64                              defconfig   gcc-13
x86_64                          rhel-8.3-rust   clang-18
xtensa                            allnoconfig   gcc-13.2.0
xtensa                randconfig-001-20240710   gcc-13.2.0
xtensa                randconfig-002-20240710   gcc-13.2.0

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

.

