]> Git Repo - J-linux.git/commitdiff
Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64...
authorLinus Torvalds <[email protected]>
Tue, 19 Nov 2024 02:10:37 +0000 (18:10 -0800)
committerLinus Torvalds <[email protected]>
Tue, 19 Nov 2024 02:10:37 +0000 (18:10 -0800)
Pull arm64 updates from Catalin Marinas:

 - Support for running Linux in a protected VM under the Arm
   Confidential Compute Architecture (CCA)

 - Guarded Control Stack user-space support. Current patches follow the
   x86 ABI of implicitly creating a shadow stack on clone(). Subsequent
   patches (already on the list) will add support for clone3() allowing
   finer-grained control of the shadow stack size and placement from
   libc

 - AT_HWCAP3 support (not running out of HWCAP2 bits yet but we are
   getting close with the upcoming dpISA support)

 - Other arch features:

     - In-kernel use of the memcpy instructions, FEAT_MOPS (previously
       only exposed to user; uaccess support not merged yet)

     - MTE: hugetlbfs support and the corresponding kselftests

     - Optimise CRC32 using the PMULL instructions

     - Support for FEAT_HAFT enabling ARCH_HAS_NONLEAF_PMD_YOUNG

     - Optimise the kernel TLB flushing to use the range operations

     - POE/pkey (permission overlays): further cleanups after bringing
       the signal handler in line with the x86 behaviour for 6.12

 - arm64 perf updates:

     - Support for the NXP i.MX91 PMU in the existing IMX driver

     - Support for Ampere SoCs in the Designware PCIe PMU driver

     - Support for Marvell's 'PEM' PCIe PMU present in the 'Odyssey' SoC

     - Support for Samsung's 'Mongoose' CPU PMU

     - Support for PMUv3.9 finer-grained userspace counter access
       control

     - Switch back to platform_driver::remove() now that it returns
       'void'

     - Add some missing events for the CXL PMU driver

 - Miscellaneous arm64 fixes/cleanups:

     - Page table accessors cleanup: type updates, drop unused macros,
       reorganise arch_make_huge_pte() and clean up pte_mkcont(), sanity
       check addresses before runtime P4D/PUD folding

     - Command line override for ID_AA64MMFR0_EL1.ECV (advertising the
       FEAT_ECV for the generic timers) allowing Linux to boot with
       firmware deployments that don't set SCTLR_EL3.ECVEn

     - ACPI/arm64: tighten the check for the array of platform timer
       structures and adjust the error handling procedure in
       gtdt_parse_timer_block()

     - Optimise the cache flush for the uprobes xol slot (skip if no
       change) and other uprobes/kprobes cleanups

     - Fix the context switching of tpidrro_el0 when kpti is enabled

     - Dynamic shadow call stack fixes

     - Sysreg updates

     - Various arm64 kselftest improvements

* tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (168 commits)
  arm64: tls: Fix context-switching of tpidrro_el0 when kpti is enabled
  kselftest/arm64: Try harder to generate different keys during PAC tests
  kselftest/arm64: Don't leak pipe fds in pac.exec_sign_all()
  arm64/ptrace: Clarify documentation of VL configuration via ptrace
  kselftest/arm64: Corrupt P0 in the irritator when testing SSVE
  acpi/arm64: remove unnecessary cast
  arm64/mm: Change protval as 'pteval_t' in map_range()
  kselftest/arm64: Fix missing printf() argument in gcs/gcs-stress.c
  kselftest/arm64: Add FPMR coverage to fp-ptrace
  kselftest/arm64: Expand the set of ZA writes fp-ptrace does
  kselftets/arm64: Use flag bits for features in fp-ptrace assembler code
  kselftest/arm64: Enable build of PAC tests with LLVM=1
  kselftest/arm64: Check that SVCR is 0 in signal handlers
  selftests/mm: Fix unused function warning for aarch64_write_signal_pkey()
  kselftest/arm64: Fix printf() compiler warnings in the arm64 syscall-abi.c tests
  kselftest/arm64: Fix printf() warning in the arm64 MTE prctl() test
  kselftest/arm64: Fix printf() compiler warnings in the arm64 fp tests
  kselftest/arm64: Fix build with stricter assemblers
  arm64/scs: Drop unused prototype __pi_scs_patch_vmlinux()
  arm64/scs: Deal with 64-bit relative offsets in FDE frames
  ...

13 files changed:
1  2 
Documentation/admin-guide/kernel-parameters.txt
MAINTAINERS
arch/arm64/Kconfig
arch/arm64/include/asm/mman.h
arch/arm64/kernel/asm-offsets.c
arch/arm64/kernel/fpsimd.c
arch/arm64/kvm/mmu.c
arch/x86/Kconfig
fs/hugetlbfs/inode.c
fs/proc/task_mmu.c
include/linux/mm.h
kernel/sys.c
mm/Kconfig

index d401577b5a6ace87d250d9b1cc200691c6a0ed4e,c1b00f70973437c0575b7543df9be25eff4b4958..f2875484795a0914f9fba320b53da8403dd1cd83
        arm64.nobti     [ARM64] Unconditionally disable Branch Target
                        Identification support
  
+       arm64.nogcs     [ARM64] Unconditionally disable Guarded Control Stack
+                       support
        arm64.nomops    [ARM64] Unconditionally disable Memory Copy and Memory
                        Set instructions support
  
                        0: no polling (default)
  
        thp_anon=       [KNL]
 -                      Format: <size>,<size>[KMG]:<state>;<size>-<size>[KMG]:<state>
 +                      Format: <size>[KMG],<size>[KMG]:<state>;<size>[KMG]-<size>[KMG]:<state>
                        state is one of "always", "madvise", "never" or "inherit".
                        Control the default behavior of the system with respect
                        to anonymous transparent hugepages.
        torture.verbose_sleep_duration= [KNL]
                        Duration of each verbose-printk() sleep in jiffies.
  
 +      tpm.disable_pcr_integrity= [HW,TPM]
 +                      Do not protect PCR registers from unintended physical
 +                      access, or interposers in the bus by the means of
 +                      having an integrity protected session wrapped around
 +                      TPM2_PCR_Extend command. Consider this in a situation
 +                      where TPM is heavily utilized by IMA, thus protection
 +                      causing a major performance hit, and the space where
 +                      machines are deployed is by other means guarded.
 +
        tpm_suspend_pcr=[HW,TPM]
                        Format: integer pcr id
                        Specify that at suspend time, the tpm driver
diff --combined MAINTAINERS
index c58ec9f1ec2db3af7350e4eab592133d1b1a0ec7,aaf2cfbf1d7c67e1d7120e979e6bf93c8c36e1ea..82161bc70b51e597204f139199c77f7d05767e5f
@@@ -258,6 -258,12 +258,6 @@@ L:        [email protected]
  S:    Maintained
  F:    drivers/net/ethernet/alteon/acenic*
  
 -ACER ASPIRE 1 EMBEDDED CONTROLLER DRIVER
 -M:    Nikita Travkin <[email protected]>
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/platform/acer,aspire1-ec.yaml
 -F:    drivers/platform/arm64/acer-aspire1-ec.c
 -
  ACER ASPIRE ONE TEMPERATURE AND FAN DRIVER
  M:    Peter Kaestle <[email protected]>
  L:    [email protected]
@@@ -882,6 -888,7 +882,6 @@@ F: drivers/staging/media/sunxi/cedrus
  
  ALPHA PORT
  M:    Richard Henderson <[email protected]>
 -M:    Ivan Kokshaysky <[email protected]>
  M:    Matt Turner <[email protected]>
  L:    [email protected]
  S:    Odd Fixes
@@@ -1174,9 -1181,8 +1174,9 @@@ F:      Documentation/hid/amd-sfh
  F:    drivers/hid/amd-sfh-hid/
  
  AMD SPI DRIVER
 -M:    Sanjay R Mehta <[email protected]>
 -S:    Maintained
 +M:    Raju Rangoju <[email protected]>
 +L:    [email protected]
 +S:    Supported
  F:    drivers/spi/spi-amd.c
  
  AMD XGBE DRIVER
@@@ -1755,8 -1761,8 +1755,8 @@@ F:      include/uapi/linux/if_arcnet.
  ARM AND ARM64 SoC SUB-ARCHITECTURES (COMMON PARTS)
  M:    Arnd Bergmann <[email protected]>
  M:    Olof Johansson <[email protected]>
 -M:    [email protected]
  L:    [email protected] (moderated for non-subscribers)
 +L:    [email protected]
  S:    Maintained
  P:    Documentation/process/maintainer-soc.rst
  C:    irc://irc.libera.chat/armlinux
  S:    Maintained
  F:    arch/arm/mach-ep93xx/ts72xx.c
  
 -ARM/CIRRUS LOGIC CLPS711X ARM ARCHITECTURE
 -M:    Alexander Shiyan <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Odd Fixes
 -N:    clps711x
 -
  ARM/CIRRUS LOGIC EP93XX ARM ARCHITECTURE
  M:    Hartley Sweeten <[email protected]>
  M:    Alexander Sverdlin <[email protected]>
@@@ -2853,7 -2865,7 +2853,7 @@@ F:      Documentation/devicetree/bindings/ar
  F:    Documentation/devicetree/bindings/bus/qcom*
  F:    Documentation/devicetree/bindings/cache/qcom,llcc.yaml
  F:    Documentation/devicetree/bindings/firmware/qcom,scm.yaml
 -F:    Documentation/devicetree/bindings/reserved-memory/qcom
 +F:    Documentation/devicetree/bindings/reserved-memory/qcom*
  F:    Documentation/devicetree/bindings/soc/qcom/
  F:    arch/arm/boot/dts/qcom/
  F:    arch/arm/configs/qcom_defconfig
@@@ -3746,7 -3758,6 +3746,7 @@@ F:      drivers/spi/spi-axi-spi-engine.
  AXI PWM GENERATOR
  M:    Michael Hennerich <[email protected]>
  M:    Nuno Sá <[email protected]>
 +R:    Trevor Gamblin <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    https://ez.analog.com/linux-software-drivers
@@@ -3804,6 -3815,14 +3804,6 @@@ F:     drivers/video/backlight
  F:    include/linux/backlight.h
  F:    include/linux/pwm_backlight.h
  
 -BAIKAL-T1 PVT HARDWARE MONITOR DRIVER
 -M:    Serge Semin <[email protected]>
 -L:    [email protected]
 -S:    Supported
 -F:    Documentation/devicetree/bindings/hwmon/baikal,bt1-pvt.yaml
 -F:    Documentation/hwmon/bt1-pvt.rst
 -F:    drivers/hwmon/bt1-pvt.[ch]
 -
  BARCO P50 GPIO DRIVER
  M:    Santosh Kumar Yadav <[email protected]>
  M:    Peter Korsgaard <[email protected]>
@@@ -6301,6 -6320,7 +6301,6 @@@ DECSTATION PLATFORM SUPPOR
  M:    "Maciej W. Rozycki" <[email protected]>
  L:    [email protected]
  S:    Maintained
 -W:    http://www.linux-mips.org/wiki/DECstation
  F:    arch/mips/dec/
  F:    arch/mips/include/asm/dec/
  F:    arch/mips/include/asm/mach-dec/
@@@ -6456,6 -6476,7 +6456,6 @@@ F:      drivers/mtd/nand/raw/denali
  
  DESIGNWARE EDMA CORE IP DRIVER
  M:    Manivannan Sadhasivam <[email protected]>
 -R:    Serge Semin <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/dma/dw-edma/
@@@ -8060,10 -8081,10 +8060,10 @@@ S:   Maintaine
  F:    drivers/edac/highbank*
  
  EDAC-CAVIUM OCTEON
 -M:    Ralf Baechle <[email protected]>
 +M:    Thomas Bogendoerfer <[email protected]>
  L:    [email protected]
  L:    [email protected]
 -S:    Supported
 +S:    Maintained
  F:    drivers/edac/octeon_edac*
  
  EDAC-CAVIUM THUNDERX
@@@ -9724,7 -9745,6 +9724,7 @@@ F:      include/dt-bindings/gpio
  F:    include/linux/gpio.h
  F:    include/linux/gpio/
  F:    include/linux/of_gpio.h
 +K:    (devm_)?gpio_(request|free|direction|get|set)
  
  GPIO UAPI
  M:    Bartosz Golaszewski <[email protected]>
@@@ -9739,6 -9759,14 +9739,6 @@@ F:     drivers/gpio/gpiolib-cdev.
  F:    include/uapi/linux/gpio.h
  F:    tools/gpio/
  
 -GRE DEMULTIPLEXER DRIVER
 -M:    Dmitry Kozlov <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    include/net/gre.h
 -F:    net/ipv4/gre_demux.c
 -F:    net/ipv4/gre_offload.c
 -
  GRETH 10/100/1G Ethernet MAC device driver
  M:    Andreas Larsson <[email protected]>
  L:    [email protected]
@@@ -10492,7 -10520,6 +10492,7 @@@ F:   Documentation/mm/hugetlbfs_reserv.rs
  F:    Documentation/mm/vmemmap_dedup.rst
  F:    fs/hugetlbfs/
  F:    include/linux/hugetlb.h
 +F:    include/trace/events/hugetlbfs.h
  F:    mm/hugetlb.c
  F:    mm/hugetlb_vmemmap.c
  F:    mm/hugetlb_vmemmap.h
@@@ -11256,10 -11283,10 +11256,10 @@@ F:        security/integrity
  F:    security/integrity/ima/
  
  INTEGRITY POLICY ENFORCEMENT (IPE)
 -M:    Fan Wu <wufan@linux.microsoft.com>
 +M:    Fan Wu <wufan@kernel.org>
  L:    [email protected]
  S:    Supported
 -T:    git https://github.com/microsoft/ipe.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/wufan/ipe.git
  F:    Documentation/admin-guide/LSM/ipe.rst
  F:    Documentation/security/ipe.rst
  F:    scripts/ipe/
@@@ -11577,16 -11604,6 +11577,16 @@@ F: drivers/crypto/intel/keembay/keembay
  F:    drivers/crypto/intel/keembay/ocs-hcu.c
  F:    drivers/crypto/intel/keembay/ocs-hcu.h
  
 +INTEL LA JOLLA COVE ADAPTER (LJCA) USB I/O EXPANDER DRIVERS
 +M:    Wentong Wu <[email protected]>
 +M:    Sakari Ailus <[email protected]>
 +S:    Maintained
 +F:    drivers/gpio/gpio-ljca.c
 +F:    drivers/i2c/busses/i2c-ljca.c
 +F:    drivers/spi/spi-ljca.c
 +F:    drivers/usb/misc/usb-ljca.c
 +F:    include/linux/usb/ljca.h
 +
  INTEL MANAGEMENT ENGINE (mei)
  M:    Tomas Winkler <[email protected]>
  L:    [email protected]
@@@ -11885,7 -11902,7 +11885,7 @@@ F:   Documentation/devicetree/bindings/ii
  F:    drivers/iio/gyro/mpu3050*
  
  IOC3 ETHERNET DRIVER
 -M:    Ralf Baechle <[email protected]>
 +M:    Thomas Bogendoerfer <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/net/ethernet/sgi/ioc3-eth.c
@@@ -12225,7 -12242,6 +12225,7 @@@ R:   Dmitry Vyukov <[email protected]
  R:    Vincenzo Frascino <[email protected]>
  L:    [email protected]
  S:    Maintained
 +B:    https://bugzilla.kernel.org/buglist.cgi?component=Sanitizers&product=Memory%20Management
  F:    Documentation/dev-tools/kasan.rst
  F:    arch/*/include/asm/*kasan.h
  F:    arch/*/mm/kasan_init*
@@@ -12249,7 -12265,6 +12249,7 @@@ R:   Dmitry Vyukov <[email protected]
  R:    Andrey Konovalov <[email protected]>
  L:    [email protected]
  S:    Maintained
 +B:    https://bugzilla.kernel.org/buglist.cgi?component=Sanitizers&product=Memory%20Management
  F:    Documentation/dev-tools/kcov.rst
  F:    include/linux/kcov.h
  F:    include/uapi/linux/kcov.h
@@@ -12932,6 -12947,12 +12932,6 @@@ S:  Maintaine
  F:    drivers/ata/pata_arasan_cf.c
  F:    include/linux/pata_arasan_cf_data.h
  
 -LIBATA PATA DRIVERS
 -R:    Sergey Shtylyov <[email protected]>
 -L:    [email protected]
 -F:    drivers/ata/ata_*.c
 -F:    drivers/ata/pata_*.c
 -
  LIBATA PATA FARADAY FTIDE010 AND GEMINI SATA BRIDGE DRIVERS
  M:    Linus Walleij <[email protected]>
  L:    [email protected]
@@@ -12948,6 -12969,14 +12948,6 @@@ F:  drivers/ata/ahci_platform.
  F:    drivers/ata/libahci_platform.c
  F:    include/linux/ahci_platform.h
  
 -LIBATA SATA AHCI SYNOPSYS DWC CONTROLLER DRIVER
 -M:    Serge Semin <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/ata/baikal,bt1-ahci.yaml
 -F:    Documentation/devicetree/bindings/ata/snps,dwc-ahci.yaml
 -F:    drivers/ata/ahci_dwc.c
 -
  LIBATA SATA PROMISE TX2/TX4 CONTROLLER DRIVER
  M:    Mikael Pettersson <[email protected]>
  L:    [email protected]
@@@ -13816,6 -13845,12 +13816,12 @@@ S: Supporte
  F:    Documentation/networking/device_drivers/ethernet/marvell/octeontx2.rst
  F:    drivers/net/ethernet/marvell/octeontx2/af/
  
+ MARVELL PEM PMU DRIVER
+ M:    Linu Cherian <[email protected]>
+ M:    Gowthami Thiagarajan <[email protected]>
+ S:    Supported
+ F:    drivers/perf/marvell_pem_pmu.c
  MARVELL PRESTERA ETHERNET SWITCH DRIVER
  M:    Taras Chornyi <[email protected]>
  S:    Supported
@@@ -14144,7 -14179,8 +14150,7 @@@ T:   git git://linuxtv.org/media_tree.gi
  F:    drivers/media/platform/nxp/imx-pxp.[ch]
  
  MEDIA DRIVERS FOR ASCOT2E
 -M:    Sergey Kozlov <[email protected]>
 -M:    Abylay Ospan <[email protected]>
 +M:    Abylay Ospan <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    https://linuxtv.org
@@@ -14161,7 -14197,8 +14167,7 @@@ T:   git git://linuxtv.org/media_tree.gi
  F:    drivers/media/dvb-frontends/cxd2099*
  
  MEDIA DRIVERS FOR CXD2841ER
 -M:    Sergey Kozlov <[email protected]>
 -M:    Abylay Ospan <[email protected]>
 +M:    Abylay Ospan <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    https://linuxtv.org
@@@ -14214,7 -14251,7 +14220,7 @@@ F:   drivers/media/platform/nxp/imx7-medi
  F:    drivers/media/platform/nxp/imx8mq-mipi-csi2.c
  
  MEDIA DRIVERS FOR HELENE
 -M:    Abylay Ospan <aospan@netup.ru>
 +M:    Abylay Ospan <aospan@amazon.com>
  L:    [email protected]
  S:    Supported
  W:    https://linuxtv.org
@@@ -14223,7 -14260,8 +14229,7 @@@ T:   git git://linuxtv.org/media_tree.gi
  F:    drivers/media/dvb-frontends/helene*
  
  MEDIA DRIVERS FOR HORUS3A
 -M:    Sergey Kozlov <[email protected]>
 -M:    Abylay Ospan <[email protected]>
 +M:    Abylay Ospan <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    https://linuxtv.org
@@@ -14232,7 -14270,8 +14238,7 @@@ T:   git git://linuxtv.org/media_tree.gi
  F:    drivers/media/dvb-frontends/horus3a*
  
  MEDIA DRIVERS FOR LNBH25
 -M:    Sergey Kozlov <[email protected]>
 -M:    Abylay Ospan <[email protected]>
 +M:    Abylay Ospan <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    https://linuxtv.org
@@@ -14248,7 -14287,8 +14254,7 @@@ T:   git git://linuxtv.org/media_tree.gi
  F:    drivers/media/dvb-frontends/mxl5xx*
  
  MEDIA DRIVERS FOR NETUP PCI UNIVERSAL DVB devices
 -M:    Sergey Kozlov <[email protected]>
 -M:    Abylay Ospan <[email protected]>
 +M:    Abylay Ospan <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    https://linuxtv.org
@@@ -14873,10 -14913,9 +14879,10 @@@ N: include/linux/page[-_]
  
  MEMORY MAPPING
  M:    Andrew Morton <[email protected]>
 -R:    Liam R. Howlett <[email protected]>
 +M:    Liam R. Howlett <[email protected]>
 +M:    Lorenzo Stoakes <[email protected]>
  R:    Vlastimil Babka <[email protected]>
 -R:    Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
 +R:    Jann Horn <jannh@google.com>
  L:    [email protected]
  S:    Maintained
  W:    http://www.linux-mm.org
@@@ -14899,6 -14938,13 +14905,6 @@@ F:  drivers/mtd
  F:    include/linux/mtd/
  F:    include/uapi/mtd/
  
 -MEMSENSING MICROSYSTEMS MSA311 DRIVER
 -M:    Dmitry Rokosov <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/iio/accel/memsensing,msa311.yaml
 -F:    drivers/iio/accel/msa311.c
 -
  MEN A21 WATCHDOG DRIVER
  M:    Johannes Thumshirn <[email protected]>
  L:    [email protected]
@@@ -15043,7 -15089,6 +15049,7 @@@ F:   drivers/spi/spi-at91-usart.
  
  MICROCHIP AUDIO ASOC DRIVERS
  M:    Claudiu Beznea <[email protected]>
 +M:    Andrei Simion <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    Documentation/devicetree/bindings/sound/atmel*
@@@ -15152,7 -15197,6 +15158,7 @@@ F:   include/video/atmel_lcdc.
  
  MICROCHIP MCP16502 PMIC DRIVER
  M:    Claudiu Beznea <[email protected]>
 +M:    Andrei Simion <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
  F:    Documentation/devicetree/bindings/regulator/microchip,mcp16502.yaml
@@@ -15234,6 -15278,7 +15240,6 @@@ F:   drivers/tty/serial/8250/8250_pci1xxx
  
  MICROCHIP POLARFIRE FPGA DRIVERS
  M:    Conor Dooley <[email protected]>
 -R:    Vladimir Georgiev <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    Documentation/devicetree/bindings/fpga/microchip,mpf-spi-fpga-mgr.yaml
@@@ -15283,7 -15328,6 +15289,7 @@@ F:   drivers/spi/spi-atmel.
  
  MICROCHIP SSC DRIVER
  M:    Claudiu Beznea <[email protected]>
 +M:    Andrei Simion <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
  F:    Documentation/devicetree/bindings/misc/atmel-ssc.txt
  M:    Thomas Bogendoerfer <[email protected]>
  L:    [email protected]
  S:    Maintained
 -W:    http://www.linux-mips.org/
  Q:    https://patchwork.kernel.org/project/linux-mips/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git
  F:    Documentation/devicetree/bindings/mips/
@@@ -15488,6 -15533,17 +15494,6 @@@ F:  arch/mips
  F:    drivers/platform/mips/
  F:    include/dt-bindings/mips/
  
 -MIPS BAIKAL-T1 PLATFORM
 -M:    Serge Semin <[email protected]>
 -L:    [email protected]
 -S:    Supported
 -F:    Documentation/devicetree/bindings/bus/baikal,bt1-*.yaml
 -F:    Documentation/devicetree/bindings/clock/baikal,bt1-*.yaml
 -F:    drivers/bus/bt1-*.c
 -F:    drivers/clk/baikal-t1/
 -F:    drivers/memory/bt1-l2-ctl.c
 -F:    drivers/mtd/maps/physmap-bt1-rom.[ch]
 -
  MIPS BOSTON DEVELOPMENT BOARD
  M:    Paul Burton <[email protected]>
  L:    [email protected]
@@@ -15500,6 -15556,7 +15506,6 @@@ F:   include/dt-bindings/clock/boston-clo
  
  MIPS CORE DRIVERS
  M:    Thomas Bogendoerfer <[email protected]>
 -M:    Serge Semin <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    drivers/bus/mips_cdmm.c
@@@ -15992,8 -16049,9 +15998,8 @@@ F:   net/netfilter
  F:    tools/testing/selftests/net/netfilter/
  
  NETROM NETWORK LAYER
 -M:    Ralf Baechle <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Orphan
  W:    https://linux-ax25.in-berlin.de
  F:    include/net/netrom.h
  F:    include/uapi/linux/netrom.h
@@@ -16034,7 -16092,6 +16040,7 @@@ F:   include/uapi/linux/net_dropmon.
  F:    net/core/drop_monitor.c
  
  NETWORKING DRIVERS
 +M:    Andrew Lunn <[email protected]>
  M:    "David S. Miller" <[email protected]>
  M:    Eric Dumazet <[email protected]>
  M:    Jakub Kicinski <[email protected]>
@@@ -16082,6 -16139,7 +16088,6 @@@ F:   drivers/net/wireless
  
  NETWORKING [DSA]
  M:    Andrew Lunn <[email protected]>
 -M:    Florian Fainelli <[email protected]>
  M:    Vladimir Oltean <[email protected]>
  S:    Maintained
  F:    Documentation/devicetree/bindings/net/dsa/
@@@ -16099,7 -16157,6 +16105,7 @@@ M:   "David S. Miller" <[email protected]
  M:    Eric Dumazet <[email protected]>
  M:    Jakub Kicinski <[email protected]>
  M:    Paolo Abeni <[email protected]>
 +R:    Simon Horman <[email protected]>
  L:    [email protected]
  S:    Maintained
  P:    Documentation/process/maintainer-netdev.rst
@@@ -16142,7 -16199,6 +16148,7 @@@ F:   include/uapi/linux/rtnetlink.
  F:    lib/net_utils.c
  F:    lib/random32.c
  F:    net/
 +F:    samples/pktgen/
  F:    tools/net/
  F:    tools/testing/selftests/net/
  X:    Documentation/networking/mac80211-injection.rst
@@@ -16467,6 -16523,12 +16473,6 @@@ F:  include/linux/ntb.
  F:    include/linux/ntb_transport.h
  F:    tools/testing/selftests/ntb/
  
 -NTB IDT DRIVER
 -M:    Serge Semin <[email protected]>
 -L:    [email protected]
 -S:    Supported
 -F:    drivers/ntb/hw/idt/
 -
  NTB INTEL DRIVER
  M:    Dave Jiang <[email protected]>
  L:    [email protected]
@@@ -18487,6 -18549,13 +18493,6 @@@ F:  drivers/pps
  F:    include/linux/pps*.h
  F:    include/uapi/linux/pps.h
  
 -PPTP DRIVER
 -M:    Dmitry Kozlov <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -W:    http://sourceforge.net/projects/accel-pptp
 -F:    drivers/net/ppp/pptp.c
 -
  PRESSURE STALL INFORMATION (PSI)
  M:    Johannes Weiner <[email protected]>
  M:    Suren Baghdasaryan <[email protected]>
@@@ -19460,14 -19529,6 +19466,14 @@@ S: Maintaine
  F:    Documentation/tools/rtla/
  F:    tools/tracing/rtla/
  
 +Real-time Linux (PREEMPT_RT)
 +M:    Sebastian Andrzej Siewior <[email protected]>
 +M:    Clark Williams <[email protected]>
 +M:    Steven Rostedt <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +K:    PREEMPT_RT
 +
  REALTEK AUDIO CODECS
  M:    Oder Chiou <[email protected]>
  S:    Maintained
@@@ -19578,11 -19639,9 +19584,11 @@@ F: Documentation/devicetree/bindings/i2
  F:    drivers/i2c/busses/i2c-emev2.c
  
  RENESAS ETHERNET AVB DRIVER
 -R:    Sergey Shtylyov <[email protected]>
 +M:    Paul Barker <[email protected]>
 +M:    Niklas Söderlund <[email protected]>
  L:    [email protected]
  L:    [email protected]
 +S:    Supported
  F:    Documentation/devicetree/bindings/net/renesas,etheravb.yaml
  F:    drivers/net/ethernet/renesas/Kconfig
  F:    drivers/net/ethernet/renesas/Makefile
@@@ -19638,7 -19697,7 +19644,7 @@@ F:   drivers/i2c/busses/i2c-rcar.
  F:    drivers/i2c/busses/i2c-sh_mobile.c
  
  RENESAS R-CAR SATA DRIVER
 -R:    Sergey Shtylyov <[email protected]>
 +M:    Geert Uytterhoeven <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Supported
@@@ -19721,10 -19780,9 +19727,10 @@@ F: Documentation/devicetree/bindings/i2
  F:    drivers/i2c/busses/i2c-rzv2m.c
  
  RENESAS SUPERH ETHERNET DRIVER
 -R:    Sergey Shtylyov <[email protected]>
 +M:    Niklas Söderlund <[email protected]>
  L:    [email protected]
  L:    [email protected]
 +S:    Supported
  F:    Documentation/devicetree/bindings/net/renesas,ether.yaml
  F:    drivers/net/ethernet/renesas/Kconfig
  F:    drivers/net/ethernet/renesas/Makefile
@@@ -19875,10 -19933,12 +19881,10 @@@ L:        [email protected]
  S:    Maintained
  Q:    https://patchwork.kernel.org/project/linux-riscv/list/
  T:    git https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/
 -F:    Documentation/devicetree/bindings/riscv/
 -F:    arch/riscv/boot/dts/
 -X:    arch/riscv/boot/dts/allwinner/
 -X:    arch/riscv/boot/dts/renesas/
 -X:    arch/riscv/boot/dts/sophgo/
 -X:    arch/riscv/boot/dts/thead/
 +F:    arch/riscv/boot/dts/canaan/
 +F:    arch/riscv/boot/dts/microchip/
 +F:    arch/riscv/boot/dts/sifive/
 +F:    arch/riscv/boot/dts/starfive/
  
  RISC-V PMU DRIVERS
  M:    Atish Patra <[email protected]>
@@@ -20063,8 -20123,9 +20069,8 @@@ F:   include/linux/mfd/rohm-generic.
  F:    include/linux/mfd/rohm-shared.h
  
  ROSE NETWORK LAYER
 -M:    Ralf Baechle <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Orphan
  W:    https://linux-ax25.in-berlin.de
  F:    include/net/rose.h
  F:    include/uapi/linux/rose.h
  S:    Supported
  F:    drivers/s390/cio/
  
 +S390 CRYPTO MODULES, PRNG DRIVER, ARCH RANDOM
 +M:    Harald Freudenberger <[email protected]>
 +M:    Holger Dengler <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +F:    arch/s390/crypto/
 +F:    arch/s390/include/asm/archrandom.h
 +F:    arch/s390/include/asm/cpacf.h
 +
  S390 DASD DRIVER
  M:    Stefan Haberland <[email protected]>
  M:    Jan Hoeppner <[email protected]>
@@@ -20239,14 -20290,6 +20245,14 @@@ F: block/partitions/ibm.
  F:    drivers/s390/block/dasd*
  F:    include/linux/dasd_mod.h
  
 +S390 HWRANDOM TRNG DRIVER
 +M:    Harald Freudenberger <[email protected]>
 +M:    Holger Dengler <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/char/hw_random/s390-trng.c
 +
  S390 IOMMU (PCI)
  M:    Niklas Schnelle <[email protected]>
  M:    Matthew Rosato <[email protected]>
@@@ -20328,16 -20371,10 +20334,16 @@@ F:        arch/s390/kvm/pci
  F:    drivers/vfio/pci/vfio_pci_zdev.c
  F:    include/uapi/linux/vfio_zdev.h
  
 -S390 ZCRYPT DRIVER
 +S390 ZCRYPT AND PKEY DRIVER AND AP BUS
  M:    Harald Freudenberger <[email protected]>
 +M:    Holger Dengler <[email protected]>
  L:    [email protected]
  S:    Supported
 +F:    arch/s390/include/asm/ap.h
 +F:    arch/s390/include/asm/pkey.h
 +F:    arch/s390/include/asm/trace/zcrypt.h
 +F:    arch/s390/include/uapi/asm/pkey.h
 +F:    arch/s390/include/uapi/asm/zcrypt.h
  F:    drivers/s390/crypto/
  
  S390 ZFCP DRIVER
@@@ -20824,7 -20861,6 +20830,7 @@@ Q:   https://patchwork.kernel.org/project
  B:    mailto:[email protected]
  P:    https://github.com/LinuxSecurityModule/kernel/blob/main/README.md
  T:    git https://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/lsm.git
 +F:    include/linux/lsm/
  F:    include/linux/lsm_audit.h
  F:    include/linux/lsm_hook_defs.h
  F:    include/linux/lsm_hooks.h
@@@ -21414,11 -21450,11 +21420,11 @@@ F:        include/linux/property.
  
  SOFTWARE RAID (Multiple Disks) SUPPORT
  M:    Song Liu <[email protected]>
 -R:    Yu Kuai <[email protected]>
 +M:    Yu Kuai <[email protected]>
  L:    [email protected]
  S:    Supported
  Q:    https://patchwork.kernel.org/project/linux-raid/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/song/md.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mdraid/linux.git
  F:    drivers/md/Kconfig
  F:    drivers/md/Makefile
  F:    drivers/md/md*
@@@ -21669,15 -21705,6 +21675,15 @@@ S: Supporte
  W:    https://github.com/thesofproject/linux/
  F:    sound/soc/sof/
  
 +SOUND - GENERIC SOUND CARD (Simple-Audio-Card, Audio-Graph-Card)
 +M:    Kuninori Morimoto <[email protected]>
 +S:    Supported
 +L:    [email protected]
 +F:    sound/soc/generic/
 +F:    include/sound/simple_card*
 +F:    Documentation/devicetree/bindings/sound/simple-card.yaml
 +F:    Documentation/devicetree/bindings/sound/audio-graph*.yaml
 +
  SOUNDWIRE SUBSYSTEM
  M:    Vinod Koul <[email protected]>
  M:    Bard Liao <[email protected]>
@@@ -21756,8 -21783,8 +21762,8 @@@ F:   drivers/accessibility/speakup
  SPEAR PLATFORM/CLOCK/PINCTRL SUPPORT
  M:    Viresh Kumar <[email protected]>
  M:    Shiraz Hashim <[email protected]>
 -M:    [email protected]
  L:    [email protected] (moderated for non-subscribers)
 +L:    [email protected]
  S:    Maintained
  W:    http://www.st.com/spear
  F:    arch/arm/boot/dts/st/spear*
@@@ -22415,11 -22442,19 +22421,11 @@@ F:        drivers/tty/serial/8250/8250_lpss.
  
  SYNOPSYS DESIGNWARE APB GPIO DRIVER
  M:    Hoan Tran <[email protected]>
 -M:    Serge Semin <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/gpio/snps,dw-apb-gpio.yaml
  F:    drivers/gpio/gpio-dwapb.c
  
 -SYNOPSYS DESIGNWARE APB SSI DRIVER
 -M:    Serge Semin <[email protected]>
 -L:    [email protected]
 -S:    Supported
 -F:    Documentation/devicetree/bindings/spi/snps,dw-apb-ssi.yaml
 -F:    drivers/spi/spi-dw*
 -
  SYNOPSYS DESIGNWARE AXI DMAC DRIVER
  M:    Eugeniy Paltsev <[email protected]>
  S:    Maintained
@@@ -23263,7 -23298,7 +23269,7 @@@ F:   Documentation/devicetree/bindings/ii
  F:    drivers/iio/adc/ti-lmp92064.c
  
  TI PCM3060 ASoC CODEC DRIVER
 -M:    Kirill Marinushkin <kmarinushkin@birdec.com>
 +M:    Kirill Marinushkin <k.marinushkin@gmail.com>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/sound/pcm3060.txt
@@@ -23607,9 -23642,10 +23613,9 @@@ F:  drivers/net/tun.
  
  TURBOCHANNEL SUBSYSTEM
  M:    "Maciej W. Rozycki" <[email protected]>
 -M:    Ralf Baechle <[email protected]>
  L:    [email protected]
  S:    Maintained
 -Q:    http://patchwork.linux-mips.org/project/linux-mips/list/
 +Q:    https://patchwork.kernel.org/project/linux-mips/list/
  F:    drivers/tc/
  F:    include/linux/tc.h
  
  S:    Maintained
  F:    drivers/hid/hid-udraw-ps3.c
  
 -UFS FILESYSTEM
 -M:    Evgeniy Dushistov <[email protected]>
 -S:    Maintained
 -F:    Documentation/admin-guide/ufs.rst
 -F:    fs/ufs/
 -
  UHID USERSPACE HID IO DRIVER
  M:    David Rheinsberg <[email protected]>
  L:    [email protected]
@@@ -24030,7 -24072,6 +24036,7 @@@ USB RAW GADGET DRIVE
  R:    Andrey Konovalov <[email protected]>
  L:    [email protected]
  S:    Maintained
 +B:    https://github.com/xairy/raw-gadget/issues
  F:    Documentation/usb/raw-gadget.rst
  F:    drivers/usb/gadget/legacy/raw_gadget.c
  F:    include/uapi/linux/usb/raw_gadget.h
@@@ -24702,10 -24743,9 +24708,10 @@@ F: tools/testing/vsock
  
  VMA
  M:    Andrew Morton <[email protected]>
 -R:    Liam R. Howlett <[email protected]>
 +M:    Liam R. Howlett <[email protected]>
 +M:    Lorenzo Stoakes <[email protected]>
  R:    Vlastimil Babka <[email protected]>
 -R:    Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
 +R:    Jann Horn <jannh@google.com>
  L:    [email protected]
  S:    Maintained
  W:    https://www.linux-mm.org
diff --combined arch/arm64/Kconfig
index 22f8a7bca6d21cf62bb02a558a03c4af02453d57,cd900e640b10d125ed50a301ad1829991f064da6..d743737bf9ce9d9813ca307fd8ab3477ee502911
@@@ -21,6 -21,7 +21,7 @@@ config ARM6
        select ARCH_ENABLE_SPLIT_PMD_PTLOCK if PGTABLE_LEVELS > 2
        select ARCH_ENABLE_THP_MIGRATION if TRANSPARENT_HUGEPAGE
        select ARCH_HAS_CACHE_LINE_SIZE
+       select ARCH_HAS_CC_PLATFORM
        select ARCH_HAS_CURRENT_STACK_POINTER
        select ARCH_HAS_DEBUG_VIRTUAL
        select ARCH_HAS_DEBUG_VM_PGTABLE
        select ARCH_HAS_MEM_ENCRYPT
        select ARCH_HAS_NMI_SAFE_THIS_CPU_OPS
        select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
+       select ARCH_HAS_NONLEAF_PMD_YOUNG if ARM64_HAFT
        select ARCH_HAS_PTE_DEVMAP
        select ARCH_HAS_PTE_SPECIAL
        select ARCH_HAS_HW_PTE_YOUNG
        select ARCH_HAS_SETUP_DMA_OPS
        select ARCH_HAS_SET_DIRECT_MAP
        select ARCH_HAS_SET_MEMORY
+       select ARCH_HAS_MEM_ENCRYPT
+       select ARCH_HAS_FORCE_DMA_UNENCRYPTED
        select ARCH_STACKWALK
        select ARCH_HAS_STRICT_KERNEL_RWX
        select ARCH_HAS_STRICT_MODULE_RWX
@@@ -1576,9 -1580,6 +1580,9 @@@ config ARCH_DEFAULT_KEXEC_IMAGE_VERIFY_
  config ARCH_SUPPORTS_CRASH_DUMP
        def_bool y
  
 +config ARCH_DEFAULT_CRASH_DUMP
 +      def_bool y
 +
  config ARCH_HAS_GENERIC_CRASHKERNEL_RESERVATION
        def_bool CRASH_RESERVE
  
@@@ -2159,6 -2160,9 +2163,9 @@@ config ARM64_EPA
          if the cpu does not implement the feature.
  endmenu # "ARMv8.7 architectural features"
  
+ config AS_HAS_MOPS
+       def_bool $(as-instr,.arch_extension mops)
  menu "ARMv8.9 architectural features"
  
  config ARM64_POE
@@@ -2180,8 -2184,44 +2187,44 @@@ config ARCH_PKEY_BIT
        int
        default 3
  
+ config ARM64_HAFT
+       bool "Support for Hardware managed Access Flag for Table Descriptors"
+       depends on ARM64_HW_AFDBM
+       default y
+       help
+         The ARMv8.9/ARMv9.5 introduces the feature Hardware managed Access
+         Flag for Table descriptors. When enabled an architectural executed
+         memory access will update the Access Flag in each Table descriptor
+         which is accessed during the translation table walk and for which
+         the Access Flag is 0. The Access Flag of the Table descriptor use
+         the same bit of PTE_AF.
+         The feature will only be enabled if all the CPUs in the system
+         support this feature. If unsure, say Y.
  endmenu # "ARMv8.9 architectural features"
  
+ menu "v9.4 architectural features"
+ config ARM64_GCS
+       bool "Enable support for Guarded Control Stack (GCS)"
+       default y
+       select ARCH_HAS_USER_SHADOW_STACK
+       select ARCH_USES_HIGH_VMA_FLAGS
+       depends on !UPROBES
+       help
+         Guarded Control Stack (GCS) provides support for a separate
+         stack with restricted access which contains only return
+         addresses.  This can be used to harden against some attacks
+         by comparing return address used by the program with what is
+         stored in the GCS, and may also be used to efficiently obtain
+         the call stack for applications such as profiling.
+         The feature is detected at runtime, and will remain disabled
+         if the system does not implement the feature.
+ endmenu # "v9.4 architectural features"
  config ARM64_SVE
        bool "ARM Scalable Vector Extension support"
        default y
@@@ -2217,7 -2257,6 +2260,7 @@@ config ARM64_SM
        bool "ARM Scalable Matrix Extension support"
        default y
        depends on ARM64_SVE
 +      depends on BROKEN
        help
          The Scalable Matrix Extension (SME) is an extension to the AArch64
          execution state which utilises a substantial subset of the SVE
index 798d965760d43467163cdc35560e1b88e50c3deb,1dbfb56cb313f9996e73b39059de048f5837f5af..1d53022fc7e1f96719bea342d0f3b6c08421158b
@@@ -6,8 -6,6 +6,8 @@@
  
  #ifndef BUILD_VDSO
  #include <linux/compiler.h>
 +#include <linux/fs.h>
 +#include <linux/shmem_fs.h>
  #include <linux/types.h>
  
  static inline unsigned long arch_calc_vm_prot_bits(unsigned long prot,
  }
  #define arch_calc_vm_prot_bits(prot, pkey) arch_calc_vm_prot_bits(prot, pkey)
  
 -static inline unsigned long arch_calc_vm_flag_bits(unsigned long flags)
 +static inline unsigned long arch_calc_vm_flag_bits(struct file *file,
 +                                                 unsigned long flags)
  {
        /*
         * Only allow MTE on anonymous mappings as these are guaranteed to be
         * backed by tags-capable memory. The vm_flags may be overridden by a
         * filesystem supporting MTE (RAM-based).
         */
--      if (system_supports_mte() &&
-           ((flags & MAP_ANONYMOUS) || shmem_file(file)))
 -          (flags & (MAP_ANONYMOUS | MAP_HUGETLB)))
--              return VM_MTE_ALLOWED;
++      if (system_supports_mte()) {
++              if (flags & (MAP_ANONYMOUS | MAP_HUGETLB))
++                      return VM_MTE_ALLOWED;
++              if (shmem_file(file))
++                      return VM_MTE_ALLOWED;
++      }
  
        return 0;
  }
 -#define arch_calc_vm_flag_bits(flags) arch_calc_vm_flag_bits(flags)
 +#define arch_calc_vm_flag_bits(file, flags) arch_calc_vm_flag_bits(file, flags)
  
  static inline bool arch_validate_prot(unsigned long prot,
        unsigned long addr __always_unused)
  
  static inline bool arch_validate_flags(unsigned long vm_flags)
  {
-       if (!system_supports_mte())
-               return true;
+       if (system_supports_mte()) {
+               /*
+                * only allow VM_MTE if VM_MTE_ALLOWED has been set
+                * previously
+                */
+               if ((vm_flags & VM_MTE) && !(vm_flags & VM_MTE_ALLOWED))
+                       return false;
+       }
+       if (system_supports_gcs() && (vm_flags & VM_SHADOW_STACK)) {
+               /* An executable GCS isn't a good idea. */
+               if (vm_flags & VM_EXEC)
+                       return false;
+               /* The memory management core should prevent this */
+               VM_WARN_ON(vm_flags & VM_SHARED);
+       }
+       return true;
  
-       /* only allow VM_MTE if VM_MTE_ALLOWED has been set previously */
-       return !(vm_flags & VM_MTE) || (vm_flags & VM_MTE_ALLOWED);
  }
  #define arch_validate_flags(vm_flags) arch_validate_flags(vm_flags)
  
index b21dd24b8efc3b07a8f05e4a4651031600e63e4b,8cad28ea977c211b864576b2903a4936b40b92da..f89df36ca4bdbec57c5b12b44f30131ff818de80
  #include <linux/ftrace.h>
  #include <linux/kexec.h>
  #include <linux/mm.h>
- #include <linux/dma-mapping.h>
  #include <linux/kvm_host.h>
- #include <linux/preempt.h>
  #include <linux/suspend.h>
  #include <asm/cpufeature.h>
  #include <asm/fixmap.h>
  #include <asm/thread_info.h>
  #include <asm/memory.h>
- #include <asm/signal32.h>
  #include <asm/smp_plat.h>
  #include <asm/suspend.h>
  #include <linux/kbuild.h>
@@@ -28,8 -25,6 +25,6 @@@
  
  int main(void)
  {
-   DEFINE(TSK_ACTIVE_MM,               offsetof(struct task_struct, active_mm));
-   BLANK();
    DEFINE(TSK_TI_CPU,          offsetof(struct task_struct, thread_info.cpu));
    DEFINE(TSK_TI_FLAGS,                offsetof(struct task_struct, thread_info.flags));
    DEFINE(TSK_TI_PREEMPT,      offsetof(struct task_struct, thread_info.preempt_count));
@@@ -79,8 -74,9 +74,9 @@@
    DEFINE(S_PSTATE,            offsetof(struct pt_regs, pstate));
    DEFINE(S_SYSCALLNO,         offsetof(struct pt_regs, syscallno));
    DEFINE(S_SDEI_TTBR1,                offsetof(struct pt_regs, sdei_ttbr1));
-   DEFINE(S_PMR_SAVE,          offsetof(struct pt_regs, pmr_save));
+   DEFINE(S_PMR,                       offsetof(struct pt_regs, pmr));
    DEFINE(S_STACKFRAME,                offsetof(struct pt_regs, stackframe));
+   DEFINE(S_STACKFRAME_TYPE,   offsetof(struct pt_regs, stackframe.type));
    DEFINE(PT_REGS_SIZE,                sizeof(struct pt_regs));
    BLANK();
  #ifdef CONFIG_DYNAMIC_FTRACE_WITH_ARGS
    DEFINE(FREGS_SIZE,          sizeof(struct ftrace_regs));
    BLANK();
  #endif
- #ifdef CONFIG_COMPAT
-   DEFINE(COMPAT_SIGFRAME_REGS_OFFSET,         offsetof(struct compat_sigframe, uc.uc_mcontext.arm_r0));
-   DEFINE(COMPAT_RT_SIGFRAME_REGS_OFFSET,      offsetof(struct compat_rt_sigframe, sig.uc.uc_mcontext.arm_r0));
-   BLANK();
- #endif
-   DEFINE(MM_CONTEXT_ID,               offsetof(struct mm_struct, context.id.counter));
-   BLANK();
-   DEFINE(VMA_VM_MM,           offsetof(struct vm_area_struct, vm_mm));
-   DEFINE(VMA_VM_FLAGS,                offsetof(struct vm_area_struct, vm_flags));
-   BLANK();
-   DEFINE(VM_EXEC,             VM_EXEC);
-   BLANK();
-   DEFINE(PAGE_SZ,             PAGE_SIZE);
-   BLANK();
-   DEFINE(DMA_TO_DEVICE,               DMA_TO_DEVICE);
-   DEFINE(DMA_FROM_DEVICE,     DMA_FROM_DEVICE);
-   BLANK();
-   DEFINE(PREEMPT_DISABLE_OFFSET, PREEMPT_DISABLE_OFFSET);
-   BLANK();
    DEFINE(CPU_BOOT_TASK,               offsetof(struct secondary_data, task));
    BLANK();
    DEFINE(FTR_OVR_VAL_OFFSET,  offsetof(struct arm64_ftr_override, val));
    DEFINE(NVHE_INIT_HCR_EL2,   offsetof(struct kvm_nvhe_init_params, hcr_el2));
    DEFINE(NVHE_INIT_VTTBR,     offsetof(struct kvm_nvhe_init_params, vttbr));
    DEFINE(NVHE_INIT_VTCR,      offsetof(struct kvm_nvhe_init_params, vtcr));
 +  DEFINE(NVHE_INIT_TMP,               offsetof(struct kvm_nvhe_init_params, tmp));
  #endif
  #ifdef CONFIG_CPU_PM
    DEFINE(CPU_CTX_SP,          offsetof(struct cpu_suspend_ctx, sp));
index 6d21971ae5594f32947480cfa168db400a69a283,cd7d71fe1fdac213405a76514615ac567ebf3a05..8c4c1a2186cc510a7826d15ec36225857c07ed71
@@@ -386,7 -386,7 +386,7 @@@ static void task_fpsimd_load(void
                         * fpsimd_save_user_state() or memory corruption, we
                         * should always record an explicit format
                         * when we save. We always at least have the
-                        * memory allocated for FPSMID registers so
+                        * memory allocated for FPSIMD registers so
                         * try that and hope for the best.
                         */
                        WARN_ON_ONCE(1);
@@@ -1367,7 -1367,6 +1367,7 @@@ static void sve_init_regs(void
        } else {
                fpsimd_to_sve(current);
                current->thread.fp_type = FP_STATE_SVE;
 +              fpsimd_flush_task_state(current);
        }
  }
  
diff --combined arch/arm64/kvm/mmu.c
index 0f7658aefa1a3ddb0ee5a5e6a6cc25857d80b9c6,962449f9ac2f94055104fc061fa3d66ccd361bf5..56d9a7f414fe15a7e8eab87550ee98058996c52e
@@@ -328,10 -328,9 +328,10 @@@ static void __unmap_stage2_range(struc
                                   may_block));
  }
  
 -void kvm_stage2_unmap_range(struct kvm_s2_mmu *mmu, phys_addr_t start, u64 size)
 +void kvm_stage2_unmap_range(struct kvm_s2_mmu *mmu, phys_addr_t start,
 +                          u64 size, bool may_block)
  {
 -      __unmap_stage2_range(mmu, start, size, true);
 +      __unmap_stage2_range(mmu, start, size, may_block);
  }
  
  void kvm_stage2_flush_range(struct kvm_s2_mmu *mmu, phys_addr_t addr, phys_addr_t end)
@@@ -1016,7 -1015,7 +1016,7 @@@ static void stage2_unmap_memslot(struc
  
                if (!(vma->vm_flags & VM_PFNMAP)) {
                        gpa_t gpa = addr + (vm_start - memslot->userspace_addr);
 -                      kvm_stage2_unmap_range(&kvm->arch.mmu, gpa, vm_end - vm_start);
 +                      kvm_stage2_unmap_range(&kvm->arch.mmu, gpa, vm_end - vm_start, true);
                }
                hva = vm_end;
        } while (hva < reg_end);
@@@ -1043,7 -1042,7 +1043,7 @@@ void stage2_unmap_vm(struct kvm *kvm
        kvm_for_each_memslot(memslot, bkt, slots)
                stage2_unmap_memslot(kvm, memslot);
  
 -      kvm_nested_s2_unmap(kvm);
 +      kvm_nested_s2_unmap(kvm, true);
  
        write_unlock(&kvm->mmu_lock);
        mmap_read_unlock(current->mm);
@@@ -1402,10 -1401,21 +1402,21 @@@ static void sanitise_mte_tags(struct kv
  {
        unsigned long i, nr_pages = size >> PAGE_SHIFT;
        struct page *page = pfn_to_page(pfn);
+       struct folio *folio = page_folio(page);
  
        if (!kvm_has_mte(kvm))
                return;
  
+       if (folio_test_hugetlb(folio)) {
+               /* Hugetlb has MTE flags set on head page only */
+               if (folio_try_hugetlb_mte_tagging(folio)) {
+                       for (i = 0; i < nr_pages; i++, page++)
+                               mte_clear_page_tags(page_address(page));
+                       folio_set_hugetlb_mte_tagged(folio);
+               }
+               return;
+       }
        for (i = 0; i < nr_pages; i++, page++) {
                if (try_page_mte_tagging(page)) {
                        mte_clear_page_tags(page_address(page));
@@@ -1913,7 -1923,7 +1924,7 @@@ bool kvm_unmap_gfn_range(struct kvm *kv
                             (range->end - range->start) << PAGE_SHIFT,
                             range->may_block);
  
 -      kvm_nested_s2_unmap(kvm);
 +      kvm_nested_s2_unmap(kvm, range->may_block);
        return false;
  }
  
@@@ -2180,8 -2190,8 +2191,8 @@@ void kvm_arch_flush_shadow_memslot(stru
        phys_addr_t size = slot->npages << PAGE_SHIFT;
  
        write_lock(&kvm->mmu_lock);
 -      kvm_stage2_unmap_range(&kvm->arch.mmu, gpa, size);
 -      kvm_nested_s2_unmap(kvm);
 +      kvm_stage2_unmap_range(&kvm->arch.mmu, gpa, size, true);
 +      kvm_nested_s2_unmap(kvm, true);
        write_unlock(&kvm->mmu_lock);
  }
  
diff --combined arch/x86/Kconfig
index 7b9a7e8f39acc8e9aeb7d4213e87d71047865f5c,8ccae77d40f7706bed76f4872a01e553a4ebb8ea..ffa2bd12a78afbb88047aa61c789a51f993130ff
@@@ -1954,6 -1954,7 +1954,7 @@@ config X86_USER_SHADOW_STAC
        depends on AS_WRUSS
        depends on X86_64
        select ARCH_USES_HIGH_VMA_FLAGS
+       select ARCH_HAS_USER_SHADOW_STACK
        select X86_CET
        help
          Shadow stack protection is a hardware feature that detects function
@@@ -2084,9 -2085,6 +2085,9 @@@ config ARCH_SUPPORTS_KEXEC_JUM
  config ARCH_SUPPORTS_CRASH_DUMP
        def_bool X86_64 || (X86_32 && HIGHMEM)
  
 +config ARCH_DEFAULT_CRASH_DUMP
 +      def_bool y
 +
  config ARCH_SUPPORTS_CRASH_HOTPLUG
        def_bool y
  
@@@ -2260,7 -2258,6 +2261,7 @@@ config RANDOMIZE_MEMORY_PHYSICAL_PADDIN
  config ADDRESS_MASKING
        bool "Linear Address Masking support"
        depends on X86_64
 +      depends on COMPILE_TEST || !CPU_MITIGATIONS # wait for LASS
        help
          Linear Address Masking (LAM) modifies the checking that is applied
          to 64-bit linear addresses, allowing software to use of the
diff --combined fs/hugetlbfs/inode.c
index 2dea122e5b93e4467bce6bf1cd5a88f09d77d824,f26b3b53d7de44b0a1e4cebbbabd84daf8fd3601..1bbf783b244a23bf526adda6c88325d9e2a486dd
@@@ -39,9 -39,6 +39,9 @@@
  #include <linux/uaccess.h>
  #include <linux/sched/mm.h>
  
 +#define CREATE_TRACE_POINTS
 +#include <trace/events/hugetlbfs.h>
 +
  static const struct address_space_operations hugetlbfs_aops;
  static const struct file_operations hugetlbfs_file_operations;
  static const struct inode_operations hugetlbfs_dir_inode_operations;
@@@ -113,7 -110,7 +113,7 @@@ static int hugetlbfs_file_mmap(struct f
         * way when do_mmap unwinds (may be important on powerpc
         * and ia64).
         */
-       vm_flags_set(vma, VM_HUGETLB | VM_DONTEXPAND);
+       vm_flags_set(vma, VM_HUGETLB | VM_DONTEXPAND | VM_MTE_ALLOWED);
        vma->vm_ops = &hugetlb_vm_ops;
  
        ret = seal_check_write(info->seals, vma);
@@@ -690,7 -687,6 +690,7 @@@ static void hugetlbfs_evict_inode(struc
  {
        struct resv_map *resv_map;
  
 +      trace_hugetlbfs_evict_inode(inode);
        remove_inode_hugepages(inode, 0, LLONG_MAX);
  
        /*
@@@ -818,10 -814,8 +818,10 @@@ static long hugetlbfs_fallocate(struct 
        if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE))
                return -EOPNOTSUPP;
  
 -      if (mode & FALLOC_FL_PUNCH_HOLE)
 -              return hugetlbfs_punch_hole(inode, offset, len);
 +      if (mode & FALLOC_FL_PUNCH_HOLE) {
 +              error = hugetlbfs_punch_hole(inode, offset, len);
 +              goto out_nolock;
 +      }
  
        /*
         * Default preallocate case.
        inode_set_ctime_current(inode);
  out:
        inode_unlock(inode);
 +
 +out_nolock:
 +      trace_hugetlbfs_fallocate(inode, mode, offset, len, error);
        return error;
  }
  
@@@ -944,8 -935,6 +944,8 @@@ static int hugetlbfs_setattr(struct mnt
        if (error)
                return error;
  
 +      trace_hugetlbfs_setattr(inode, dentry, attr);
 +
        if (ia_valid & ATTR_SIZE) {
                loff_t oldsize = inode->i_size;
                loff_t newsize = attr->ia_size;
@@@ -1044,7 -1033,6 +1044,7 @@@ static struct inode *hugetlbfs_get_inod
                        break;
                }
                lockdep_annotate_inode_mutex_key(inode);
 +              trace_hugetlbfs_alloc_inode(inode, dir, mode);
        } else {
                if (resv_map)
                        kref_put(&resv_map->refs, resv_map_release);
@@@ -1284,7 -1272,6 +1284,7 @@@ static struct inode *hugetlbfs_alloc_in
  
  static void hugetlbfs_free_inode(struct inode *inode)
  {
 +      trace_hugetlbfs_free_inode(inode);
        kmem_cache_free(hugetlbfs_inode_cachep, HUGETLBFS_I(inode));
  }
  
diff --combined fs/proc/task_mmu.c
index 7eb010de39fe2632e502ec56880cef4ac9c672bc,23f875e78eae830e3c2c750b8edf17d214b84125..38a5a3e9cba2090bd129f12ca2f079c019bfdfdc
@@@ -909,15 -909,8 +909,15 @@@ static void show_smap_vma_flags(struct 
  {
        /*
         * Don't forget to update Documentation/ on changes.
 +       *
 +       * The length of the second argument of mnemonics[]
 +       * needs to be 3 instead of previously set 2
 +       * (i.e. from [BITS_PER_LONG][2] to [BITS_PER_LONG][3])
 +       * to avoid spurious
 +       * -Werror=unterminated-string-initialization warning
 +       *  with GCC 15
         */
 -      static const char mnemonics[BITS_PER_LONG][2] = {
 +      static const char mnemonics[BITS_PER_LONG][3] = {
                /*
                 * In case if we meet a flag we don't know about.
                 */
  #ifdef CONFIG_HAVE_ARCH_USERFAULTFD_MINOR
                [ilog2(VM_UFFD_MINOR)]  = "ui",
  #endif /* CONFIG_HAVE_ARCH_USERFAULTFD_MINOR */
- #ifdef CONFIG_X86_USER_SHADOW_STACK
+ #ifdef CONFIG_ARCH_HAS_USER_SHADOW_STACK
                [ilog2(VM_SHADOW_STACK)] = "ss",
  #endif
  #if defined(CONFIG_64BIT) || defined(CONFIG_PPC32)
        for (i = 0; i < BITS_PER_LONG; i++) {
                if (!mnemonics[i][0])
                        continue;
 -              if (vma->vm_flags & (1UL << i)) {
 -                      seq_putc(m, mnemonics[i][0]);
 -                      seq_putc(m, mnemonics[i][1]);
 -                      seq_putc(m, ' ');
 -              }
 +              if (vma->vm_flags & (1UL << i))
 +                      seq_printf(m, "%s ", mnemonics[i]);
        }
        seq_putc(m, '\n');
  }
@@@ -2665,10 -2661,8 +2665,10 @@@ static int pagemap_scan_get_args(struc
                return -EFAULT;
        if (!arg->vec && arg->vec_len)
                return -EINVAL;
 +      if (UINT_MAX == SIZE_MAX && arg->vec_len > SIZE_MAX)
 +              return -EINVAL;
        if (arg->vec && !access_ok((void __user *)(long)arg->vec,
 -                            arg->vec_len * sizeof(struct page_region)))
 +                                 size_mul(arg->vec_len, sizeof(struct page_region))))
                return -EFAULT;
  
        /* Fixup default values */
diff --combined include/linux/mm.h
index 61fff5d34ed532fe03144208aee618e0dd0a18ec,8852c39c7695c3ac083f457cd25cc288cbc7eb68..feb5c8021befdec0c0894eb789671640dbc104b9
@@@ -329,12 -329,14 +329,14 @@@ extern unsigned int kobjsize(const voi
  #define VM_HIGH_ARCH_BIT_3    35      /* bit only usable on 64-bit architectures */
  #define VM_HIGH_ARCH_BIT_4    36      /* bit only usable on 64-bit architectures */
  #define VM_HIGH_ARCH_BIT_5    37      /* bit only usable on 64-bit architectures */
+ #define VM_HIGH_ARCH_BIT_6    38      /* bit only usable on 64-bit architectures */
  #define VM_HIGH_ARCH_0        BIT(VM_HIGH_ARCH_BIT_0)
  #define VM_HIGH_ARCH_1        BIT(VM_HIGH_ARCH_BIT_1)
  #define VM_HIGH_ARCH_2        BIT(VM_HIGH_ARCH_BIT_2)
  #define VM_HIGH_ARCH_3        BIT(VM_HIGH_ARCH_BIT_3)
  #define VM_HIGH_ARCH_4        BIT(VM_HIGH_ARCH_BIT_4)
  #define VM_HIGH_ARCH_5        BIT(VM_HIGH_ARCH_BIT_5)
+ #define VM_HIGH_ARCH_6        BIT(VM_HIGH_ARCH_BIT_6)
  #endif /* CONFIG_ARCH_USES_HIGH_VMA_FLAGS */
  
  #ifdef CONFIG_ARCH_HAS_PKEYS
   * for more details on the guard size.
   */
  # define VM_SHADOW_STACK      VM_HIGH_ARCH_5
- #else
+ #endif
+ #if defined(CONFIG_ARM64_GCS)
+ /*
+  * arm64's Guarded Control Stack implements similar functionality and
+  * has similar constraints to shadow stacks.
+  */
+ # define VM_SHADOW_STACK      VM_HIGH_ARCH_6
+ #endif
+ #ifndef VM_SHADOW_STACK
  # define VM_SHADOW_STACK      VM_NONE
  #endif
  
@@@ -3818,9 -3830,8 +3830,9 @@@ void *sparse_buffer_alloc(unsigned lon
  struct page * __populate_section_memmap(unsigned long pfn,
                unsigned long nr_pages, int nid, struct vmem_altmap *altmap,
                struct dev_pagemap *pgmap);
 -void pmd_init(void *addr);
  void pud_init(void *addr);
 +void pmd_init(void *addr);
 +void kernel_pte_init(void *addr);
  pgd_t *vmemmap_pgd_populate(unsigned long addr, int node);
  p4d_t *vmemmap_p4d_populate(pgd_t *pgd, unsigned long addr, int node);
  pud_t *vmemmap_pud_populate(p4d_t *p4d, unsigned long addr, int node);
@@@ -4220,4 -4231,8 +4232,8 @@@ static inline void pgalloc_tag_copy(str
  }
  #endif /* CONFIG_MEM_ALLOC_PROFILING */
  
+ int arch_get_shadow_stack_status(struct task_struct *t, unsigned long __user *status);
+ int arch_set_shadow_stack_status(struct task_struct *t, unsigned long status);
+ int arch_lock_shadow_stack_status(struct task_struct *t, unsigned long status);
  #endif /* _LINUX_MM_H */
diff --combined kernel/sys.c
index ebe10c27a9f4ecd9f037336e9da6f6822d33ab65,3d38a9c7c5c9340024a88531e90819601ff5c205..c4c701c6f0b4de24b3add87d7a9f45a372fa4a62
@@@ -1911,11 -1911,12 +1911,11 @@@ SYSCALL_DEFINE1(umask, int, mask
  
  static int prctl_set_mm_exe_file(struct mm_struct *mm, unsigned int fd)
  {
 -      struct fd exe;
 +      CLASS(fd, exe)(fd);
        struct inode *inode;
        int err;
  
 -      exe = fdget(fd);
 -      if (!fd_file(exe))
 +      if (fd_empty(exe))
                return -EBADF;
  
        inode = file_inode(fd_file(exe));
         * sure that this one is executable as well, to avoid breaking an
         * overall picture.
         */
 -      err = -EACCES;
        if (!S_ISREG(inode->i_mode) || path_noexec(&fd_file(exe)->f_path))
 -              goto exit;
 +              return -EACCES;
  
        err = file_permission(fd_file(exe), MAY_EXEC);
        if (err)
 -              goto exit;
 +              return err;
  
 -      err = replace_mm_exe_file(mm, fd_file(exe));
 -exit:
 -      fdput(exe);
 -      return err;
 +      return replace_mm_exe_file(mm, fd_file(exe));
  }
  
  /*
@@@ -2319,6 -2324,21 +2319,21 @@@ int __weak arch_prctl_spec_ctrl_set(str
        return -EINVAL;
  }
  
+ int __weak arch_get_shadow_stack_status(struct task_struct *t, unsigned long __user *status)
+ {
+       return -EINVAL;
+ }
+ int __weak arch_set_shadow_stack_status(struct task_struct *t, unsigned long status)
+ {
+       return -EINVAL;
+ }
+ int __weak arch_lock_shadow_stack_status(struct task_struct *t, unsigned long status)
+ {
+       return -EINVAL;
+ }
  #define PR_IO_FLUSHER (PF_MEMALLOC_NOIO | PF_LOCAL_THROTTLE)
  
  #ifdef CONFIG_ANON_VMA_NAME
@@@ -2779,6 -2799,21 +2794,21 @@@ SYSCALL_DEFINE5(prctl, int, option, uns
        case PR_RISCV_SET_ICACHE_FLUSH_CTX:
                error = RISCV_SET_ICACHE_FLUSH_CTX(arg2, arg3);
                break;
+       case PR_GET_SHADOW_STACK_STATUS:
+               if (arg3 || arg4 || arg5)
+                       return -EINVAL;
+               error = arch_get_shadow_stack_status(me, (unsigned long __user *) arg2);
+               break;
+       case PR_SET_SHADOW_STACK_STATUS:
+               if (arg3 || arg4 || arg5)
+                       return -EINVAL;
+               error = arch_set_shadow_stack_status(me, arg2);
+               break;
+       case PR_LOCK_SHADOW_STACK_STATUS:
+               if (arg3 || arg4 || arg5)
+                       return -EINVAL;
+               error = arch_lock_shadow_stack_status(me, arg2);
+               break;
        default:
                error = -EINVAL;
                break;
diff --combined mm/Kconfig
index 33fa51d608dc517490c47790ad053816a1baf57a,4b2a1ef9a161cb8642c83c240c434c1e6073f0f3..84000b01680869801a10f56f06d0c43d6521a8d2
@@@ -1085,6 -1085,7 +1085,6 @@@ config HMM_MIRRO
        depends on MMU
  
  config GET_FREE_REGION
 -      depends on SPARSEMEM
        bool
  
  config DEVICE_PRIVATE
@@@ -1295,6 -1296,12 +1295,12 @@@ config NUMA_EM
          into virtual nodes when booted with "numa=fake=N", where N is the
          number of nodes. This is only useful for debugging.
  
+ config ARCH_HAS_USER_SHADOW_STACK
+       bool
+       help
+         The architecture has hardware support for userspace shadow call
+           stacks (eg, x86 CET, arm64 GCS or RISC-V Zicfiss).
  source "mm/damon/Kconfig"
  
  endmenu
This page took 0.214117 seconds and 4 git commands to generate.