Merge tag 'mm-nonmm-stable-2024-03-14-09-36' of git://git.kernel.org/pub/scm/linux...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 15 Mar 2024 01:03:09 +0000 (18:03 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 15 Mar 2024 01:03:09 +0000 (18:03 -0700)
Pull non-MM updates from Andrew Morton:

 - Kuan-Wei Chiu has developed the well-named series "lib min_heap: Min
   heap optimizations".

 - Kuan-Wei Chiu has also sped up the library sorting code in the series
   "lib/sort: Optimize the number of swaps and comparisons".

 - Alexey Gladkov has added the ability for code running within an IPC
   namespace to alter its IPC and MQ limits. The series is "Allow to
   change ipc/mq sysctls inside ipc namespace".

 - Geert Uytterhoeven has contributed some dhrystone maintenance work in
   the series "lib: dhry: miscellaneous cleanups".

 - Ryusuke Konishi continues nilfs2 maintenance work in the series

"nilfs2: eliminate kmap and kmap_atomic calls"
"nilfs2: fix kernel bug at submit_bh_wbc()"

 - Nathan Chancellor has updated our build tools requirements in the
   series "Bump the minimum supported version of LLVM to 13.0.1".

 - Muhammad Usama Anjum continues with the selftests maintenance work in
   the series "selftests/mm: Improve run_vmtests.sh".

 - Oleg Nesterov has done some maintenance work against the signal code
   in the series "get_signal: minor cleanups and fix".

Plus the usual shower of singleton patches in various parts of the tree.
Please see the individual changelogs for details.

* tag 'mm-nonmm-stable-2024-03-14-09-36' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm: (77 commits)
  nilfs2: prevent kernel bug at submit_bh_wbc()
  nilfs2: fix failure to detect DAT corruption in btree and direct mappings
  ocfs2: enable ocfs2_listxattr for special files
  ocfs2: remove SLAB_MEM_SPREAD flag usage
  assoc_array: fix the return value in assoc_array_insert_mid_shortcut()
  buildid: use kmap_local_page()
  watchdog/core: remove sysctl handlers from public header
  nilfs2: use div64_ul() instead of do_div()
  mul_u64_u64_div_u64: increase precision by conditionally swapping a and b
  kexec: copy only happens before uchunk goes to zero
  get_signal: don't initialize ksig->info if SIGNAL_GROUP_EXIT/group_exec_task
  get_signal: hide_si_addr_tag_bits: fix the usage of uninitialized ksig
  get_signal: don't abuse ksig->info.si_signo and ksig->sig
  const_structs.checkpatch: add device_type
  Normalise "name (ad@dr)" MODULE_AUTHORs to "name <ad@dr>"
  dyndbg: replace kstrdup() + strchr() with kstrdup_and_replace()
  list: leverage list_is_head() for list_entry_is_head()
  nilfs2: MAINTAINERS: drop unreachable project mirror site
  smp: make __smp_processor_id() 0-argument macro
  fat: fix uninitialized field in nostale filehandles
  ...

32 files changed:
1  2 
Documentation/admin-guide/kernel-parameters.txt
Documentation/process/changes.rst
MAINTAINERS
Makefile
arch/arm64/Kconfig
arch/powerpc/Kconfig
arch/riscv/Kconfig
arch/riscv/include/asm/ftrace.h
arch/x86/Makefile
drivers/block/sunvdc.c
drivers/char/tpm/tpm_tis.c
drivers/char/tpm/tpm_tis_core.c
drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c
drivers/hwmon/dell-smm-hwmon.c
drivers/net/ethernet/broadcom/tg3.c
drivers/net/ethernet/sun/sunvnet_common.c
fs/ocfs2/super.c
init/main.c
kernel/kexec_core.c
kernel/panic.c
kernel/signal.c
lib/Kconfig.debug
lib/buildid.c
lib/stackinit_kunit.c
mm/slab_common.c
net/ipv6/ip6_gre.c
net/iucv/iucv.c
net/mpls/mpls_gso.c
scripts/min-tool-version.sh
tools/objtool/noreturns.h
tools/testing/selftests/mm/Makefile
tools/testing/selftests/mm/run_vmtests.sh

@@@ -9,7 -9,7 +9,7 @@@
                        accept_memory=eager can be used to accept all memory
                        at once during boot.
  
 -      acpi=           [HW,ACPI,X86,ARM64,RISCV64]
 +      acpi=           [HW,ACPI,X86,ARM64,RISCV64,EARLY]
                        Advanced Configuration and Power Interface
                        Format: { force | on | off | strict | noirq | rsdt |
                                  copy_dsdt }
@@@ -26,7 -26,7 +26,7 @@@
  
                        See also Documentation/power/runtime_pm.rst, pci=noacpi
  
 -      acpi_apic_instance=     [ACPI, IOAPIC]
 +      acpi_apic_instance=     [ACPI,IOAPIC,EARLY]
                        Format: <int>
                        2: use 2nd APIC table, if available
                        1,0: use 1st APIC table
@@@ -41,7 -41,7 +41,7 @@@
                        If set to native, use the device's native backlight mode.
                        If set to none, disable the ACPI backlight interface.
  
 -      acpi_force_32bit_fadt_addr
 +      acpi_force_32bit_fadt_addr [ACPI,EARLY]
                        force FADT to use 32 bit addresses rather than the
                        64 bit X_* addresses. Some firmware have broken 64
                        bit addresses for force ACPI ignore these and use
@@@ -97,7 -97,7 +97,7 @@@
                        no: ACPI OperationRegions are not marked as reserved,
                        no further checks are performed.
  
 -      acpi_force_table_verification   [HW,ACPI]
 +      acpi_force_table_verification   [HW,ACPI,EARLY]
                        Enable table checksum verification during early stage.
                        By default, this is disabled due to x86 early mapping
                        size limitation.
        acpi_no_memhotplug [ACPI] Disable memory hotplug.  Useful for kdump
                           kernels.
  
 -      acpi_no_static_ssdt     [HW,ACPI]
 +      acpi_no_static_ssdt     [HW,ACPI,EARLY]
                        Disable installation of static SSDTs at early boot time
                        By default, SSDTs contained in the RSDT/XSDT will be
                        installed automatically and they will appear under
                        Ignore the ACPI-based watchdog interface (WDAT) and let
                        a native driver control the watchdog device instead.
  
 -      acpi_rsdp=      [ACPI,EFI,KEXEC]
 +      acpi_rsdp=      [ACPI,EFI,KEXEC,EARLY]
                        Pass the RSDP address to the kernel, mostly used
                        on machines running EFI runtime service to boot the
                        second kernel for kdump.
                        to assume that this machine's pmtimer latches its value
                        and always returns good values.
  
 -      acpi_sci=       [HW,ACPI] ACPI System Control Interrupt trigger mode
 +      acpi_sci=       [HW,ACPI,EARLY] ACPI System Control Interrupt trigger mode
                        Format: { level | edge | high | low }
  
 -      acpi_skip_timer_override [HW,ACPI]
 +      acpi_skip_timer_override [HW,ACPI,EARLY]
                        Recognize and ignore IRQ0/pin2 Interrupt Override.
                        For broken nForce2 BIOS resulting in XT-PIC timer.
  
                        behave incorrectly in some ways with respect to system
                        suspend and resume to be ignored (use wisely).
  
 -      acpi_use_timer_override [HW,ACPI]
 +      acpi_use_timer_override [HW,ACPI,EARLY]
                        Use timer override. For some broken Nvidia NF5 boards
                        that require a timer override, but don't have HPET
  
 -      add_efi_memmap  [EFI; X86] Include EFI memory map in
 +      add_efi_memmap  [EFI,X86,EARLY] Include EFI memory map in
                        kernel's map of available physical RAM.
  
        agp=            [AGP]
                        do not want to use tracing_snapshot_alloc() as it needs
                        to be done where GFP_KERNEL allocations are allowed.
  
 -      allow_mismatched_32bit_el0 [ARM64]
 +      allow_mismatched_32bit_el0 [ARM64,EARLY]
                        Allow execve() of 32-bit applications and setting of the
                        PER_LINUX32 personality on systems where only a strict
                        subset of the CPUs support 32-bit EL0. When this
                                     This mode requires kvm-amd.avic=1.
                                     (Default when IOMMU HW support is present.)
  
 -      amd_pstate=     [X86]
 +      amd_pstate=     [X86,EARLY]
                        disable
                          Do not enable amd_pstate as the default
                          scaling driver for the supported processors
                          selects a performance level in this range and appropriate
                          to the current workload.
  
 +      amd_prefcore=
 +                      [X86]
 +                      disable
 +                        Disable amd-pstate preferred core.
 +
        amijoy.map=     [HW,JOY] Amiga joystick support
                        Map of devices attached to JOY0DAT and JOY1DAT
                        Format: <a>,<b>
                        not play well with APC CPU idle - disable it if you have
                        APC and your system crashes randomly.
  
 -      apic=           [APIC,X86] Advanced Programmable Interrupt Controller
 +      apic=           [APIC,X86,EARLY] Advanced Programmable Interrupt Controller
                        Change the output verbosity while booting
                        Format: { quiet (default) | verbose | debug }
                        Change the amount of debugging information output
                        Format: apic=driver_name
                        Examples: apic=bigsmp
  
 -      apic_extnmi=    [APIC,X86] External NMI delivery setting
 +      apic_extnmi=    [APIC,X86,EARLY] External NMI delivery setting
                        Format: { bsp (default) | all | none }
                        bsp:  External NMI is delivered only to CPU 0
                        all:  External NMIs are broadcast to all CPUs as a
        bert_disable    [ACPI]
                        Disable BERT OS support on buggy BIOSes.
  
 -      bgrt_disable    [ACPI][X86]
 +      bgrt_disable    [ACPI,X86,EARLY]
                        Disable BGRT to avoid flickering OEM logo.
  
        blkdevparts=    Manual partition parsing of block device(s) for
                        embedded devices based on command line input.
                        See Documentation/block/cmdline-partition.rst
  
 -      boot_delay=     Milliseconds to delay each printk during boot.
 +      boot_delay=     [KNL,EARLY]
 +                      Milliseconds to delay each printk during boot.
                        Only works if CONFIG_BOOT_PRINTK_DELAY is enabled,
                        and you may also have to specify "lpj=".  Boot_delay
                        values larger than 10 seconds (10000) are assumed
                        erroneous and ignored.
                        Format: integer
  
 -      bootconfig      [KNL]
 +      bootconfig      [KNL,EARLY]
                        Extended command line options can be added to an initrd
                        and this will cause the kernel to look for it.
  
                        trust validation.
                        format: { id:<keyid> | builtin }
  
 -      cca=            [MIPS] Override the kernel pages' cache coherency
 +      cca=            [MIPS,EARLY] Override the kernel pages' cache coherency
                        algorithm.  Accepted values range from 0 to 7
                        inclusive. See arch/mips/include/asm/pgtable-bits.h
                        for platform specific values (SB1, Loongson3 and
                        [X86-64] hpet,tsc
  
        clocksource.arm_arch_timer.evtstrm=
 -                      [ARM,ARM64]
 +                      [ARM,ARM64,EARLY]
                        Format: <bool>
                        Enable/disable the eventstream feature of the ARM
                        architected timer so that code using WFE-based polling
                        loops can be debugged more effectively on production
                        systems.
  
 -      clocksource.max_cswd_read_retries= [KNL]
 -                      Number of clocksource_watchdog() retries due to
 -                      external delays before the clock will be marked
 -                      unstable.  Defaults to two retries, that is,
 -                      three attempts to read the clock under test.
 -
        clocksource.verify_n_cpus= [KNL]
                        Limit the number of CPUs checked for clocksources
                        marked with CLOCK_SOURCE_VERIFY_PERCPU that
                        10 seconds when built into the kernel.
  
        cma=nn[MG]@[start[MG][-end[MG]]]
 -                      [KNL,CMA]
 +                      [KNL,CMA,EARLY]
                        Sets the size of kernel global memory area for
                        contiguous memory allocations and optionally the
                        placement constraint by the physical address range of
                        kernel/dma/contiguous.c
  
        cma_pernuma=nn[MG]
 -                      [KNL,CMA]
 +                      [KNL,CMA,EARLY]
                        Sets the size of kernel per-numa memory area for
                        contiguous memory allocations. A value of 0 disables
                        per-numa CMA altogether. And If this option is not
                        they will fallback to the global default memory area.
  
        numa_cma=<node>:nn[MG][,<node>:nn[MG]]
 -                      [KNL,CMA]
 +                      [KNL,CMA,EARLY]
                        Sets the size of kernel numa memory area for
                        contiguous memory allocations. It will reserve CMA
                        area for the specified node.
                        a hypervisor.
                        Default: yes
  
 -      coherent_pool=nn[KMG]   [ARM,KNL]
 +      coherent_pool=nn[KMG]   [ARM,KNL,EARLY]
                        Sets the size of memory pool for coherent, atomic dma
                        allocations, by default set to 256K.
  
        condev=         [HW,S390] console device
        conmode=
  
 -      con3215_drop=   [S390] 3215 console drop mode.
 +      con3215_drop=   [S390,EARLY] 3215 console drop mode.
                        Format: y|n|Y|N|1|0
                        When set to true, drop data on the 3215 console when
                        the console buffer is full. In this case the
                        kernel before the cpufreq driver probes.
  
        cpu_init_udelay=N
 -                      [X86] Delay for N microsec between assert and de-assert
 +                      [X86,EARLY] Delay for N microsec between assert and de-assert
                        of APIC INIT to start processors.  This delay occurs
                        on every CPU online, such as boot, and resume from suspend.
                        Default: 10000
                        kernel more unstable.
  
        crashkernel=size[KMG][@offset[KMG]]
 -                      [KNL] Using kexec, Linux can switch to a 'crash kernel'
 +                      [KNL,EARLY] Using kexec, Linux can switch to a 'crash kernel'
                        upon panic. This parameter reserves the physical
                        memory region [offset, offset + size] for that kernel
                        image. If '@offset' is omitted, then a suitable offset
                        Format: <port#>,<type>
                        See also Documentation/input/devices/joystick-parport.rst
  
 -      debug           [KNL] Enable kernel debugging (events log level).
 +      debug           [KNL,EARLY] Enable kernel debugging (events log level).
  
        debug_boot_weak_hash
 -                      [KNL] Enable printing [hashed] pointers early in the
 +                      [KNL,EARLY] Enable printing [hashed] pointers early in the
                        boot sequence.  If enabled, we use a weak hash instead
                        of siphash to hash pointers.  Use this option if you are
                        seeing instances of '(___ptrval___)') and need to see a
                        will print _a_lot_ more information - normally only
                        useful to lockdep developers.
  
 -      debug_objects   [KNL] Enable object debugging
 +      debug_objects   [KNL,EARLY] Enable object debugging
  
        debug_guardpage_minorder=
 -                      [KNL] When CONFIG_DEBUG_PAGEALLOC is set, this
 +                      [KNL,EARLY] When CONFIG_DEBUG_PAGEALLOC is set, this
                        parameter allows control of the order of pages that will
                        be intentionally kept free (and hence protected) by the
                        buddy allocator. Bigger value increase the probability
                        help tracking down these problems.
  
        debug_pagealloc=
 -                      [KNL] When CONFIG_DEBUG_PAGEALLOC is set, this parameter
 +                      [KNL,EARLY] When CONFIG_DEBUG_PAGEALLOC is set, this parameter
                        enables the feature at boot time. By default, it is
                        disabled and the system will work mostly the same as a
                        kernel built without CONFIG_DEBUG_PAGEALLOC.
                        useful to also enable the page_owner functionality.
                        on: enable the feature
  
 -      debugfs=        [KNL] This parameter enables what is exposed to userspace
 -                      and debugfs internal clients.
 +      debugfs=        [KNL,EARLY] This parameter enables what is exposed to
 +                      userspace and debugfs internal clients.
                        Format: { on, no-mount, off }
                        on:     All functions are enabled.
                        no-mount:
        dhash_entries=  [KNL]
                        Set number of hash buckets for dentry cache.
  
 -      disable_1tb_segments [PPC]
 +      disable_1tb_segments [PPC,EARLY]
                        Disables the use of 1TB hash page table segments. This
                        causes the kernel to fall back to 256MB segments which
                        can be useful when debugging issues that require an SLB
        disable=        [IPV6]
                        See Documentation/networking/ipv6.rst.
  
 -      disable_radix   [PPC]
 +      disable_radix   [PPC,EARLY]
                        Disable RADIX MMU mode on POWER9
  
        disable_tlbie   [PPC]
                        Disable TLBIE instruction. Currently does not work
                        with KVM, with HASH MMU, or with coherent accelerators.
  
 -      disable_cpu_apicid= [X86,APIC,SMP]
 -                      Format: <int>
 -                      The number of initial APIC ID for the
 -                      corresponding CPU to be disabled at boot,
 -                      mostly used for the kdump 2nd kernel to
 -                      disable BSP to wake up multiple CPUs without
 -                      causing system reset or hang due to sending
 -                      INIT from AP to BSP.
 -
 -      disable_ddw     [PPC/PSERIES]
 +      disable_ddw     [PPC/PSERIES,EARLY]
                        Disable Dynamic DMA Window support. Use this
                        to workaround buggy firmware.
  
        disable_ipv6=   [IPV6]
                        See Documentation/networking/ipv6.rst.
  
 -      disable_mtrr_cleanup [X86]
 +      disable_mtrr_cleanup [X86,EARLY]
                        The kernel tries to adjust MTRR layout from continuous
                        to discrete, to make X server driver able to add WB
                        entry later. This parameter disables that.
  
 -      disable_mtrr_trim [X86, Intel and AMD only]
 +      disable_mtrr_trim [X86, Intel and AMD only,EARLY]
                        By default the kernel will trim any uncacheable
                        memory out of your available memory pool based on
                        MTRR settings.  This parameter disables that behavior,
                        possibly causing your machine to run very slowly.
  
 -      disable_timer_pin_1 [X86]
 +      disable_timer_pin_1 [X86,EARLY]
                        Disable PIN 1 of APIC timer
                        Can be useful to work around chipset bugs.
  
                        The filter can be disabled or changed to another
                        driver later using sysfs.
  
 +      reg_file_data_sampling=
 +                      [X86] Controls mitigation for Register File Data
 +                      Sampling (RFDS) vulnerability. RFDS is a CPU
 +                      vulnerability which may allow userspace to infer
 +                      kernel data values previously stored in floating point
 +                      registers, vector registers, or integer registers.
 +                      RFDS only affects Intel Atom processors.
 +
 +                      on:     Turns ON the mitigation.
 +                      off:    Turns OFF the mitigation.
 +
 +                      This parameter overrides the compile time default set
 +                      by CONFIG_MITIGATION_RFDS. Mitigation cannot be
 +                      disabled when other VERW based mitigations (like MDS)
 +                      are enabled. In order to disable RFDS mitigation all
 +                      VERW based mitigations need to be disabled.
 +
 +                      For details see:
 +                      Documentation/admin-guide/hw-vuln/reg-file-data-sampling.rst
 +
        driver_async_probe=  [KNL]
                        List of driver names to be probed asynchronously. *
                        matches with all driver names. If * is specified, the
                        panels may send no or incorrect EDID data sets.
                        This parameter allows to specify an EDID data sets
                        in the /lib/firmware directory that are used instead.
 -                      Generic built-in EDID data sets are used, if one of
 -                      edid/1024x768.bin, edid/1280x1024.bin,
 -                      edid/1680x1050.bin, or edid/1920x1080.bin is given
 -                      and no file with the same name exists. Details and
 -                      instructions how to build your own EDID data are
 -                      available in Documentation/admin-guide/edid.rst. An EDID
 -                      data set will only be used for a particular connector,
 -                      if its name and a colon are prepended to the EDID
 -                      name. Each connector may use a unique EDID data
 -                      set by separating the files with a comma.  An EDID
 +                      An EDID data set will only be used for a particular
 +                      connector, if its name and a colon are prepended to
 +                      the EDID name. Each connector may use a unique EDID
 +                      data set by separating the files with a comma. An EDID
                        data set with no connector name will be used for
                        any connectors not explicitly specified.
  
        dscc4.setup=    [NET]
  
 -      dt_cpu_ftrs=    [PPC]
 +      dt_cpu_ftrs=    [PPC,EARLY]
                        Format: {"off" | "known"}
                        Control how the dt_cpu_ftrs device-tree binding is
                        used for CPU feature discovery and setup (if it
                        Documentation/admin-guide/dynamic-debug-howto.rst
                        for details.
  
 -      early_ioremap_debug [KNL]
 +      early_ioremap_debug [KNL,EARLY]
                        Enable debug messages in early_ioremap support. This
                        is useful for tracking down temporary early mappings
                        which are not unmapped.
  
 -      earlycon=       [KNL] Output early console device and options.
 +      earlycon=       [KNL,EARLY] Output early console device and options.
  
                        When used with no options, the early console is
                        determined by stdout-path property in device tree's
                        address must be provided, and the serial port must
                        already be setup and configured.
  
 -      earlyprintk=    [X86,SH,ARM,M68k,S390]
 +      earlyprintk=    [X86,SH,ARM,M68k,S390,UM,EARLY]
                        earlyprintk=vga
                        earlyprintk=sclp
                        earlyprintk=xen
        edd=            [EDD]
                        Format: {"off" | "on" | "skip[mbr]"}
  
 -      efi=            [EFI]
 +      efi=            [EFI,EARLY]
                        Format: { "debug", "disable_early_pci_dma",
                                  "nochunk", "noruntime", "nosoftreserve",
                                  "novamap", "no_disable_early_pci_dma" }
                        no_disable_early_pci_dma: Leave the busmaster bit set
                        on all PCI bridges while in the EFI boot stub
  
 -      efi_no_storage_paranoia [EFI; X86]
 +      efi_no_storage_paranoia [EFI,X86,EARLY]
                        Using this parameter you can use more than 50% of
                        your efi variable storage. Use this parameter only if
                        you are really sure that your UEFI does sane gc and
                        fulfills the spec otherwise your board may brick.
  
 -      efi_fake_mem=   nn[KMG]@ss[KMG]:aa[,nn[KMG]@ss[KMG]:aa,..] [EFI; X86]
 +      efi_fake_mem=   nn[KMG]@ss[KMG]:aa[,nn[KMG]@ss[KMG]:aa,..] [EFI,X86,EARLY]
                        Add arbitrary attribute to specific memory range by
                        updating original EFI memory map.
                        Region of memory which aa attribute is added to is
        eisa_irq_edge=  [PARISC,HW]
                        See header of drivers/parisc/eisa.c.
  
 -      ekgdboc=        [X86,KGDB] Allow early kernel console debugging
 +      ekgdboc=        [X86,KGDB,EARLY] Allow early kernel console debugging
                        Format: ekgdboc=kbd
  
                        This is designed to be used in conjunction with
                        See comment before function elanfreq_setup() in
                        arch/x86/kernel/cpu/cpufreq/elanfreq.c.
  
 -      elfcorehdr=[size[KMG]@]offset[KMG] [PPC,SH,X86,S390]
 +      elfcorehdr=[size[KMG]@]offset[KMG] [PPC,SH,X86,S390,EARLY]
                        Specifies physical address of start of kernel core
                        image elf header and optionally the size. Generally
                        kexec loader will pass this option to capture kernel.
                        See Documentation/admin-guide/kdump/kdump.rst for details.
  
 -      enable_mtrr_cleanup [X86]
 +      enable_mtrr_cleanup [X86,EARLY]
                        The kernel tries to adjust MTRR layout from continuous
                        to discrete, to make X server driver able to add WB
                        entry later. This parameter enables that.
                        Permit 'security.evm' to be updated regardless of
                        current integrity status.
  
 -      early_page_ext [KNL] Enforces page_ext initialization to earlier
 +      early_page_ext [KNL,EARLY] Enforces page_ext initialization to earlier
                        stages so cover more early boot allocations.
                        Please note that as side effect some optimizations
                        might be disabled to achieve that (e.g. parallelized
                        Warning: use of this parameter will taint the kernel
                        and may cause unknown problems.
  
 +      fred=           [X86-64]
 +                      Enable/disable Flexible Return and Event Delivery.
 +                      Format: { on | off }
 +                      on: enable FRED when it's present.
 +                      off: disable FRED, the default setting.
 +
        ftrace=[tracer]
                        [FTRACE] will set and start the specified tracer
                        as early as possible in order to facilitate early
                        can be changed at run time by the max_graph_depth file
                        in the tracefs tracing directory. default: 0 (no limit)
  
 -      fw_devlink=     [KNL] Create device links between consumer and supplier
 +      fw_devlink=     [KNL,EARLY] Create device links between consumer and supplier
                        devices by scanning the firmware to infer the
                        consumer/supplier relationships. This feature is
                        especially useful when drivers are loaded as modules as
                        rpm --  Like "on", but also use to order runtime PM.
  
        fw_devlink.strict=<bool>
 -                      [KNL] Treat all inferred dependencies as mandatory
 +                      [KNL,EARLY] Treat all inferred dependencies as mandatory
                        dependencies. This only applies for fw_devlink=on|rpm.
                        Format: <bool>
  
        fw_devlink.sync_state =
 -                      [KNL] When all devices that could probe have finished
 +                      [KNL,EARLY] When all devices that could probe have finished
                        probing, this parameter controls what to do with
                        devices that haven't yet received their sync_state()
                        calls.
  
        gamma=          [HW,DRM]
  
 -      gart_fix_e820=  [X86-64] disable the fix e820 for K8 GART
 +      gart_fix_e820=  [X86-64,EARLY] disable the fix e820 for K8 GART
                        Format: off | on
                        default: on
  
        gather_data_sampling=
 -                      [X86,INTEL] Control the Gather Data Sampling (GDS)
 +                      [X86,INTEL,EARLY] Control the Gather Data Sampling (GDS)
                        mitigation.
  
                        Gather Data Sampling is a hardware vulnerability which
                                (that will set all pages holding image data
                                during restoration read-only).
  
 -      highmem=nn[KMG] [KNL,BOOT] forces the highmem zone to have an exact
 +      hibernate.compressor=   [HIBERNATION] Compression algorithm to be
 +                              used with hibernation.
 +                              Format: { lzo | lz4 }
 +                              Default: lzo
 +
 +                              lzo: Select LZO compression algorithm to
 +                              compress/decompress hibernation image.
 +
 +                              lz4: Select LZ4 compression algorithm to
 +                              compress/decompress hibernation image.
 +
 +      highmem=nn[KMG] [KNL,BOOT,EARLY] forces the highmem zone to have an exact
                        size of <nn>. This works even on boxes that have no
                        highmem otherwise. This also works to reduce highmem
                        size on bigger boxes.
  
        hlt             [BUGS=ARM,SH]
  
 -      hostname=       [KNL] Set the hostname (aka UTS nodename).
 +      hostname=       [KNL,EARLY] Set the hostname (aka UTS nodename).
                        Format: <string>
                        This allows setting the system's hostname during early
                        startup. This sets the name returned by gethostname.
                        Documentation/admin-guide/mm/hugetlbpage.rst.
                        Format: size[KMG]
  
 -      hugetlb_cma=    [HW,CMA] The size of a CMA area used for allocation
 +      hugetlb_cma=    [HW,CMA,EARLY] The size of a CMA area used for allocation
                        of gigantic hugepages. Or using node format, the size
                        of a CMA area per node can be specified.
                        Format: nn[KMGTPE] or (node format)
                                If specified, z/VM IUCV HVC accepts connections
                                from listed z/VM user IDs only.
  
 -      hv_nopvspin     [X86,HYPER_V] Disables the paravirt spinlock optimizations
 -                                    which allow the hypervisor to 'idle' the
 -                                    guest on lock contention.
 +      hv_nopvspin     [X86,HYPER_V,EARLY]
 +                      Disables the paravirt spinlock optimizations
 +                      which allow the hypervisor to 'idle' the guest
 +                      on lock contention.
  
        i2c_bus=        [HW]    Override the default board specific I2C bus speed
                                or register an additional I2C bus that is not
                        Format: <io>[,<membase>[,<icn_id>[,<icn_id2>]]]
  
  
 -      idle=           [X86]
 +      idle=           [X86,EARLY]
                        Format: idle=poll, idle=halt, idle=nomwait
                        Poll forces a polling idle loop that can slightly
                        improve the performance of waking up a idle CPU, but
                        mode generally follows that for the NaN encoding,
                        except where unsupported by hardware.
  
 -      ignore_loglevel [KNL]
 +      ignore_loglevel [KNL,EARLY]
                        Ignore loglevel setting - this will print /all/
                        kernel messages to the console. Useful for debugging.
                        We also add it as printk module parameter, so users
                        unpacking being completed before device_ and
                        late_ initcalls.
  
 -      initrd=         [BOOT] Specify the location of the initial ramdisk
 +      initrd=         [BOOT,EARLY] Specify the location of the initial ramdisk
  
 -      initrdmem=      [KNL] Specify a physical address and size from which to
 +      initrdmem=      [KNL,EARLY] Specify a physical address and size from which to
                        load the initrd. If an initrd is compiled in or
                        specified in the bootparams, it takes priority over this
                        setting.
                        Format: ss[KMG],nn[KMG]
                        Default is 0, 0
  
 -      init_on_alloc=  [MM] Fill newly allocated pages and heap objects with
 +      init_on_alloc=  [MM,EARLY] Fill newly allocated pages and heap objects with
                        zeroes.
                        Format: 0 | 1
                        Default set by CONFIG_INIT_ON_ALLOC_DEFAULT_ON.
  
 -      init_on_free=   [MM] Fill freed pages and heap objects with zeroes.
 +      init_on_free=   [MM,EARLY] Fill freed pages and heap objects with zeroes.
                        Format: 0 | 1
                        Default set by CONFIG_INIT_ON_FREE_DEFAULT_ON.
  
                        0       disables intel_idle and fall back on acpi_idle.
                        1 to 9  specify maximum depth of C-state.
  
 -      intel_pstate=   [X86]
 +      intel_pstate=   [X86,EARLY]
                        disable
                          Do not enable intel_pstate as the default
                          scaling driver for the supported processors
                          Allow per-logical-CPU P-State performance control limits using
                          cpufreq sysfs interface
  
 -      intremap=       [X86-64, Intel-IOMMU]
 +      intremap=       [X86-64,Intel-IOMMU,EARLY]
                        on      enable Interrupt Remapping (default)
                        off     disable Interrupt Remapping
                        nosid   disable Source ID checking
                strict  regions from userspace.
                relaxed
  
 -      iommu=          [X86]
 +      iommu=          [X86,EARLY]
                off
                force
                noforce
                nobypass        [PPC/POWERNV]
                        Disable IOMMU bypass, using IOMMU for PCI devices.
  
 -      iommu.forcedac= [ARM64, X86] Control IOVA allocation for PCI devices.
 +      iommu.forcedac= [ARM64,X86,EARLY] Control IOVA allocation for PCI devices.
                        Format: { "0" | "1" }
                        0 - Try to allocate a 32-bit DMA address first, before
                          falling back to the full range if needed.
                          forcing Dual Address Cycle for PCI cards supporting
                          greater than 32-bit addressing.
  
 -      iommu.strict=   [ARM64, X86, S390] Configure TLB invalidation behaviour
 +      iommu.strict=   [ARM64,X86,S390,EARLY] Configure TLB invalidation behaviour
                        Format: { "0" | "1" }
                        0 - Lazy mode.
                          Request that DMA unmap operations use deferred
                        legacy driver-specific options takes precedence.
  
        iommu.passthrough=
 -                      [ARM64, X86] Configure DMA to bypass the IOMMU by default.
 +                      [ARM64,X86,EARLY] Configure DMA to bypass the IOMMU by default.
                        Format: { "0" | "1" }
                        0 - Use IOMMU translation for DMA.
                        1 - Bypass the IOMMU for DMA.
                        See comment before marvel_specify_io7 in
                        arch/alpha/kernel/core_marvel.c.
  
 -      io_delay=       [X86] I/O delay method
 +      io_delay=       [X86,EARLY] I/O delay method
                0x80
                        Standard port 0x80 based delay
                0xed
        ip=             [IP_PNP]
                        See Documentation/admin-guide/nfs/nfsroot.rst.
  
 -      ipcmni_extend   [KNL] Extend the maximum number of unique System V
 +      ipcmni_extend   [KNL,EARLY] Extend the maximum number of unique System V
                        IPC identifiers from 32,768 to 16,777,216.
  
        irqaffinity=    [SMP] Set the default irq affinity mask
                        The argument is a cpu list, as described above.
  
        irqchip.gicv2_force_probe=
 -                      [ARM, ARM64]
 +                      [ARM,ARM64,EARLY]
                        Format: <bool>
                        Force the kernel to look for the second 4kB page
                        of a GICv2 controller even if the memory range
                        exposed by the device tree is too small.
  
        irqchip.gicv3_nolpi=
 -                      [ARM, ARM64]
 +                      [ARM,ARM64,EARLY]
                        Force the kernel to ignore the availability of
                        LPIs (and by consequence ITSs). Intended for system
                        that use the kernel as a bootloader, and thus want
                        to let secondary kernels in charge of setting up
                        LPIs.
  
 -      irqchip.gicv3_pseudo_nmi= [ARM64]
 +      irqchip.gicv3_pseudo_nmi= [ARM64,EARLY]
                        Enables support for pseudo-NMIs in the kernel. This
                        requires the kernel to be built with
                        CONFIG_ARM64_PSEUDO_NMI.
                        parameter KASAN will print report only for the first
                        invalid access.
  
 -      keep_bootcon    [KNL]
 +      keep_bootcon    [KNL,EARLY]
                        Do not unregister boot console at start. This is only
                        useful for debugging when something happens in the window
                        between unregistering the boot console and initializing
  
        keepinitrd      [HW,ARM] See retain_initrd.
  
 -      kernelcore=     [KNL,X86,IA-64,PPC]
 +      kernelcore=     [KNL,X86,IA-64,PPC,EARLY]
                        Format: nn[KMGTPE] | nn% | "mirror"
                        This parameter specifies the amount of memory usable by
                        the kernel for non-movable allocations.  The requested
                        for Movable pages.  "nn[KMGTPE]", "nn%", and "mirror"
                        are exclusive, so you cannot specify multiple forms.
  
 -      kgdbdbgp=       [KGDB,HW] kgdb over EHCI usb debug port.
 +      kgdbdbgp=       [KGDB,HW,EARLY] kgdb over EHCI usb debug port.
                        Format: <Controller#>[,poll interval]
                        The controller # is the number of the ehci usb debug
                        port as it is probed via PCI.  The poll interval is
                         kms, kbd format: kms,kbd
                         kms, kbd and serial format: kms,kbd,<ser_dev>[,baud]
  
 -      kgdboc_earlycon=        [KGDB,HW]
 +      kgdboc_earlycon=        [KGDB,HW,EARLY]
                        If the boot console provides the ability to read
                        characters and can work in polling mode, you can use
                        this parameter to tell kgdb to use it as a backend
                        blank and the first boot console that implements
                        read() will be picked.
  
 -      kgdbwait        [KGDB] Stop kernel execution and enter the
 +      kgdbwait        [KGDB,EARLY] Stop kernel execution and enter the
                        kernel debugger at the earliest opportunity.
  
        kmac=           [MIPS] Korina ethernet MAC address.
                        Configure the RouterBoard 532 series on-chip
                        Ethernet adapter MAC address.
  
 -      kmemleak=       [KNL] Boot-time kmemleak enable/disable
 +      kmemleak=       [KNL,EARLY] Boot-time kmemleak enable/disable
                        Valid arguments: on, off
                        Default: on
                        Built with CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y,
                        See also Documentation/trace/kprobetrace.rst "Kernel
                        Boot Parameter" section.
  
 -      kpti=           [ARM64] Control page table isolation of user
 -                      and kernel address spaces.
 +      kpti=           [ARM64,EARLY] Control page table isolation of
 +                      user and kernel address spaces.
                        Default: enabled on cores which need mitigation.
                        0: force disabled
                        1: force enabled
                        for NPT.
  
        kvm-arm.mode=
 -                      [KVM,ARM] Select one of KVM/arm64's modes of operation.
 +                      [KVM,ARM,EARLY] Select one of KVM/arm64's modes of
 +                      operation.
  
                        none: Forcefully disable KVM.
  
                        used with extreme caution.
  
        kvm-arm.vgic_v3_group0_trap=
 -                      [KVM,ARM] Trap guest accesses to GICv3 group-0
 +                      [KVM,ARM,EARLY] Trap guest accesses to GICv3 group-0
                        system registers
  
        kvm-arm.vgic_v3_group1_trap=
 -                      [KVM,ARM] Trap guest accesses to GICv3 group-1
 +                      [KVM,ARM,EARLY] Trap guest accesses to GICv3 group-1
                        system registers
  
        kvm-arm.vgic_v3_common_trap=
 -                      [KVM,ARM] Trap guest accesses to GICv3 common
 +                      [KVM,ARM,EARLY] Trap guest accesses to GICv3 common
                        system registers
  
        kvm-arm.vgic_v4_enable=
 -                      [KVM,ARM] Allow use of GICv4 for direct injection of
 -                      LPIs.
 +                      [KVM,ARM,EARLY] Allow use of GICv4 for direct
 +                      injection of LPIs.
  
 -      kvm_cma_resv_ratio=n [PPC]
 +      kvm_cma_resv_ratio=n [PPC,EARLY]
                        Reserves given percentage from system memory area for
                        contiguous memory allocation for KVM hash pagetable
                        allocation.
                        (enabled). Disable by KVM if hardware lacks support
                        for it.
  
 -      l1d_flush=      [X86,INTEL]
 +      l1d_flush=      [X86,INTEL,EARLY]
                        Control mitigation for L1D based snooping vulnerability.
  
                        Certain CPUs are vulnerable to an exploit against CPU
  
                        on         - enable the interface for the mitigation
  
 -      l1tf=           [X86] Control mitigation of the L1TF vulnerability on
 +      l1tf=           [X86,EARLY] Control mitigation of the L1TF vulnerability on
                              affected CPUs
  
                        The kernel PTE inversion protection is unconditionally
  
        l3cr=           [PPC]
  
 -      lapic           [X86-32,APIC] Enable the local APIC even if BIOS
 +      lapic           [X86-32,APIC,EARLY] Enable the local APIC even if BIOS
                        disabled it.
  
        lapic=          [X86,APIC] Do not use TSC deadline
                        back to the programmable timer unit in the LAPIC.
                        Format: notscdeadline
  
 -      lapic_timer_c2_ok       [X86,APIC] trust the local apic timer
 +      lapic_timer_c2_ok       [X86,APIC,EARLY] trust the local apic timer
                        in C2 power state.
  
        libata.dma=     [LIBATA] DMA control
        lockd.nlm_udpport=M     [NFS] Assign UDP port.
                        Format: <integer>
  
 -      lockdown=       [SECURITY]
 +      lockdown=       [SECURITY,EARLY]
                        { integrity | confidentiality }
                        Enable the kernel lockdown feature. If set to
                        integrity, kernel features that allow userland to
        logibm.irq=     [HW,MOUSE] Logitech Bus Mouse Driver
                        Format: <irq>
  
 -      loglevel=       All Kernel Messages with a loglevel smaller than the
 +      loglevel=       [KNL,EARLY]
 +                      All Kernel Messages with a loglevel smaller than the
                        console loglevel will be printed to the console. It can
                        also be changed with klogd or other programs. The
                        loglevels are defined as follows:
                        6 (KERN_INFO)           informational
                        7 (KERN_DEBUG)          debug-level messages
  
 -      log_buf_len=n[KMG]      Sets the size of the printk ring buffer,
 -                      in bytes.  n must be a power of two and greater
 -                      than the minimal size. The minimal size is defined
 -                      by LOG_BUF_SHIFT kernel config parameter. There is
 -                      also CONFIG_LOG_CPU_MAX_BUF_SHIFT config parameter
 -                      that allows to increase the default size depending on
 -                      the number of CPUs. See init/Kconfig for more details.
 +      log_buf_len=n[KMG] [KNL,EARLY]
 +                      Sets the size of the printk ring buffer, in bytes.
 +                      n must be a power of two and greater than the
 +                      minimal size. The minimal size is defined by
 +                      LOG_BUF_SHIFT kernel config parameter. There
 +                      is also CONFIG_LOG_CPU_MAX_BUF_SHIFT config
 +                      parameter that allows to increase the default size
 +                      depending on the number of CPUs. See init/Kconfig
 +                      for more details.
  
        logo.nologo     [FB] Disables display of the built-in Linux logo.
                        This may be used to provide more screen space for
        max_addr=nn[KMG]        [KNL,BOOT,IA-64] All physical memory greater
                        than or equal to this physical address is ignored.
  
 -      maxcpus=        [SMP] Maximum number of processors that an SMP kernel
 +      maxcpus=        [SMP,EARLY] Maximum number of processors that an SMP kernel
                        will bring up during bootup.  maxcpus=n : n >= 0 limits
                        the kernel to bring up 'n' processors. Surely after
                        bootup you can bring up the other plugged cpu by executing
                        Format: <first>,<last>
                        Specifies range of consoles to be captured by the MDA.
  
 -      mds=            [X86,INTEL]
 +      mds=            [X86,INTEL,EARLY]
                        Control mitigation for the Micro-architectural Data
                        Sampling (MDS) vulnerability.
  
  
                        For details see: Documentation/admin-guide/hw-vuln/mds.rst
  
 -      mem=nn[KMG]     [HEXAGON] Set the memory size.
 +      mem=nn[KMG]     [HEXAGON,EARLY] Set the memory size.
                        Must be specified, otherwise memory size will be 0.
  
 -      mem=nn[KMG]     [KNL,BOOT] Force usage of a specific amount of memory
 -                      Amount of memory to be used in cases as follows:
 +      mem=nn[KMG]     [KNL,BOOT,EARLY] Force usage of a specific amount
 +                      of memory Amount of memory to be used in cases
 +                      as follows:
  
                        1 for test;
                        2 when the kernel is not able to see the whole system memory;
                        if system memory of hypervisor is not sufficient.
  
        mem=nn[KMG]@ss[KMG]
 -                      [ARM,MIPS] - override the memory layout reported by
 -                      firmware.
 +                      [ARM,MIPS,EARLY] - override the memory layout
 +                      reported by firmware.
                        Define a memory region of size nn[KMG] starting at
                        ss[KMG].
                        Multiple different regions can be specified with
        mem=nopentium   [BUGS=X86-32] Disable usage of 4MB pages for kernel
                        memory.
  
 -      memblock=debug  [KNL] Enable memblock debug messages.
 +      memblock=debug  [KNL,EARLY] Enable memblock debug messages.
  
        memchunk=nn[KMG]
                        [KNL,SH] Allow user to override the default size for
                        option.
                        See Documentation/admin-guide/mm/memory-hotplug.rst.
  
 -      memmap=exactmap [KNL,X86] Enable setting of an exact
 +      memmap=exactmap [KNL,X86,EARLY] Enable setting of an exact
                        E820 memory map, as specified by the user.
                        Such memmap=exactmap lines can be constructed based on
                        BIOS output or other requirements. See the memmap=nn@ss
                        option description.
  
        memmap=nn[KMG]@ss[KMG]
 -                      [KNL, X86, MIPS, XTENSA] Force usage of a specific region of memory.
 +                      [KNL, X86,MIPS,XTENSA,EARLY] Force usage of a specific region of memory.
                        Region of memory to be used is from ss to ss+nn.
                        If @ss[KMG] is omitted, it is equivalent to mem=nn[KMG],
                        which limits max address to nn[KMG].
                                memmap=100M@2G,100M#3G,1G!1024G
  
        memmap=nn[KMG]#ss[KMG]
 -                      [KNL,ACPI] Mark specific memory as ACPI data.
 +                      [KNL,ACPI,EARLY] Mark specific memory as ACPI data.
                        Region of memory to be marked is from ss to ss+nn.
  
        memmap=nn[KMG]$ss[KMG]
 -                      [KNL,ACPI] Mark specific memory as reserved.
 +                      [KNL,ACPI,EARLY] Mark specific memory as reserved.
                        Region of memory to be reserved is from ss to ss+nn.
                        Example: Exclude memory from 0x18690000-0x1869ffff
                                 memmap=64K$0x18690000
                        like Grub2, otherwise '$' and the following number
                        will be eaten.
  
 -      memmap=nn[KMG]!ss[KMG]
 +      memmap=nn[KMG]!ss[KMG,EARLY]
                        [KNL,X86] Mark specific memory as protected.
                        Region of memory to be used, from ss to ss+nn.
                        The memory region may be marked as e820 type 12 (0xc)
                        and is NVDIMM or ADR memory.
  
        memmap=<size>%<offset>-<oldtype>+<newtype>
 -                      [KNL,ACPI] Convert memory within the specified region
 +                      [KNL,ACPI,EARLY] Convert memory within the specified region
                        from <oldtype> to <newtype>. If "-<oldtype>" is left
                        out, the whole region will be marked as <newtype>,
                        even if previously unavailable. If "+<newtype>" is left
                        specified as e820 types, e.g., 1 = RAM, 2 = reserved,
                        3 = ACPI, 12 = PRAM.
  
 -      memory_corruption_check=0/1 [X86]
 +      memory_corruption_check=0/1 [X86,EARLY]
                        Some BIOSes seem to corrupt the first 64k of
                        memory when doing things like suspend/resume.
                        Setting this option will scan the memory
                        affects the same memory, you can use memmap=
                        to prevent the kernel from using that memory.
  
 -      memory_corruption_check_size=size [X86]
 +      memory_corruption_check_size=size [X86,EARLY]
                        By default it checks for corruption in the low
                        64k, making this memory unavailable for normal
                        use.  Use this parameter to scan for
                        corruption in more or less memory.
  
 -      memory_corruption_check_period=seconds [X86]
 +      memory_corruption_check_period=seconds [X86,EARLY]
                        By default it checks for corruption every 60
                        seconds.  Use this parameter to check at some
                        other rate.  0 disables periodic checking.
                        Note that even when enabled, there are a few cases where
                        the feature is not effective.
  
 -      memtest=        [KNL,X86,ARM,M68K,PPC,RISCV] Enable memtest
 +      memtest=        [KNL,X86,ARM,M68K,PPC,RISCV,EARLY] Enable memtest
                        Format: <integer>
                        default : 0 <disable>
                        Specifies the number of memtest passes to be
  
        mem_encrypt=    [X86-64] AMD Secure Memory Encryption (SME) control
                        Valid arguments: on, off
 -                      Default (depends on kernel configuration option):
 -                        on  (CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT=y)
 -                        off (CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT=n)
 +                      Default: off
                        mem_encrypt=on:         Activate SME
                        mem_encrypt=off:        Do not activate SME
  
                        https://repo.or.cz/w/linux-2.6/mini2440.git
  
        mitigations=
 -                      [X86,PPC,S390,ARM64] Control optional mitigations for
 +                      [X86,PPC,S390,ARM64,EARLY] Control optional mitigations for
                        CPU vulnerabilities.  This is a set of curated,
                        arch-independent options, each of which is an
                        aggregation of existing arch-specific options.
                                               nospectre_bhb [ARM64]
                                               nospectre_v1 [X86,PPC]
                                               nospectre_v2 [X86,PPC,S390,ARM64]
 +                                             reg_file_data_sampling=off [X86]
                                               retbleed=off [X86]
 +                                             spec_rstack_overflow=off [X86]
                                               spec_store_bypass_disable=off [X86,PPC]
                                               spectre_v2_user=off [X86]
                                               srbds=off [X86,INTEL]
                                               retbleed=auto,nosmt [X86]
  
        mminit_loglevel=
 -                      [KNL] When CONFIG_DEBUG_MEMORY_INIT is set, this
 +                      [KNL,EARLY] When CONFIG_DEBUG_MEMORY_INIT is set, this
                        parameter allows control of the logging verbosity for
                        the additional memory initialisation checks. A value
                        of 0 disables mminit logging and a level of 4 will
                        so loglevel=8 may also need to be specified.
  
        mmio_stale_data=
 -                      [X86,INTEL] Control mitigation for the Processor
 +                      [X86,INTEL,EARLY] Control mitigation for the Processor
                        MMIO Stale Data vulnerabilities.
  
                        Processor MMIO Stale Data is a class of
        mousedev.yres=  [MOUSE] Vertical screen resolution, used for devices
                        reporting absolute coordinates, such as tablets
  
 -      movablecore=    [KNL,X86,IA-64,PPC]
 +      movablecore=    [KNL,X86,IA-64,PPC,EARLY]
                        Format: nn[KMGTPE] | nn%
                        This parameter is the complement to kernelcore=, it
                        specifies the amount of memory used for migratable
                        that the amount of memory usable for all allocations
                        is not too small.
  
 -      movable_node    [KNL] Boot-time switch to make hotplugable memory
 +      movable_node    [KNL,EARLY] Boot-time switch to make hotplugable memory
                        NUMA nodes to be movable. This means that the memory
                        of such nodes will be usable only for movable
                        allocations which rules out almost all kernel
                        [HW] Make the MicroTouch USB driver use raw coordinates
                        ('y', default) or cooked coordinates ('n')
  
 -      mtrr=debug      [X86]
 +      mtrr=debug      [X86,EARLY]
                        Enable printing debug information related to MTRR
                        registers at boot time.
  
 -      mtrr_chunk_size=nn[KMG] [X86]
 +      mtrr_chunk_size=nn[KMG,X86,EARLY]
                        used for mtrr cleanup. It is largest continuous chunk
                        that could hold holes aka. UC entries.
  
 -      mtrr_gran_size=nn[KMG] [X86]
 +      mtrr_gran_size=nn[KMG,X86,EARLY]
                        Used for mtrr cleanup. It is granularity of mtrr block.
                        Default is 1.
                        Large value could prevent small alignment from
                        using up MTRRs.
  
 -      mtrr_spare_reg_nr=n [X86]
 +      mtrr_spare_reg_nr=n [X86,EARLY]
                        Format: <integer>
                        Range: 0,7 : spare reg number
                        Default : 1
                        emulation library even if a 387 maths coprocessor
                        is present.
  
 -      no4lvl          [RISCV] Disable 4-level and 5-level paging modes. Forces
 -                      kernel to use 3-level paging instead.
 +      no4lvl          [RISCV,EARLY] Disable 4-level and 5-level paging modes.
 +                      Forces kernel to use 3-level paging instead.
  
 -      no5lvl          [X86-64,RISCV] Disable 5-level paging mode. Forces
 +      no5lvl          [X86-64,RISCV,EARLY] Disable 5-level paging mode. Forces
                        kernel to use 4-level paging instead.
  
 -      noaliencache    [MM, NUMA, SLAB] Disables the allocation of alien
 -                      caches in the slab allocator.  Saves per-node memory,
 -                      but will impact performance.
 -
        noalign         [KNL,ARM]
  
 -      noaltinstr      [S390] Disables alternative instructions patching
 -                      (CPU alternatives feature).
 +      noaltinstr      [S390,EARLY] Disables alternative instructions
 +                      patching (CPU alternatives feature).
  
 -      noapic          [SMP,APIC] Tells the kernel to not make use of any
 +      noapic          [SMP,APIC,EARLY] Tells the kernel to not make use of any
                        IOAPICs that may be present in the system.
  
        noautogroup     Disable scheduler automatic task group creation.
  
 -      nocache         [ARM]
 +      nocache         [ARM,EARLY]
  
        no_console_suspend
                        [HW] Never suspend the console
                        turn on/off it dynamically.
  
        no_debug_objects
 -                      [KNL] Disable object debugging
 +                      [KNL,EARLY] Disable object debugging
  
        nodsp           [SH] Disable hardware DSP at boot time.
  
 -      noefi           Disable EFI runtime services support.
 +      noefi           [EFI,EARLY] Disable EFI runtime services support.
  
 -      no_entry_flush  [PPC] Don't flush the L1-D cache when entering the kernel.
 +      no_entry_flush  [PPC,EARLY] Don't flush the L1-D cache when entering the kernel.
  
        noexec          [IA-64]
  
                        real-time systems.
  
        no_hash_pointers
 +                      [KNL,EARLY]
                        Force pointers printed to the console or buffers to be
                        unhashed.  By default, when a pointer is printed via %p
                        format string, that pointer is "hashed", i.e. obscured
                        the impact of the sleep instructions. This is also
                        useful when using JTAG debugger.
  
 -      nohugeiomap     [KNL,X86,PPC,ARM64] Disable kernel huge I/O mappings.
 +      nohugeiomap     [KNL,X86,PPC,ARM64,EARLY] Disable kernel huge I/O mappings.
  
 -      nohugevmalloc   [KNL,X86,PPC,ARM64] Disable kernel huge vmalloc mappings.
 +      nohugevmalloc   [KNL,X86,PPC,ARM64,EARLY] Disable kernel huge vmalloc mappings.
  
        nohz=           [KNL] Boottime enable/disable dynamic ticks
                        Valid arguments: on, off
        noinitrd        [RAM] Tells the kernel not to load any configured
                        initial RAM disk.
  
 -      nointremap      [X86-64, Intel-IOMMU] Do not enable interrupt
 +      nointremap      [X86-64,Intel-IOMMU,EARLY] Do not enable interrupt
                        remapping.
                        [Deprecated - use intremap=off]
  
        nointroute      [IA-64]
  
 -      noinvpcid       [X86] Disable the INVPCID cpu feature.
 +      noinvpcid       [X86,EARLY] Disable the INVPCID cpu feature.
  
        noiotrap        [SH] Disables trapped I/O port accesses.
  
  
        nojitter        [IA-64] Disables jitter checking for ITC timers.
  
 -      nokaslr         [KNL]
 +      nokaslr         [KNL,EARLY]
                        When CONFIG_RANDOMIZE_BASE is set, this disables
                        kernel and module base offset ASLR (Address Space
                        Layout Randomization).
  
 -      no-kvmapf       [X86,KVM] Disable paravirtualized asynchronous page
 +      no-kvmapf       [X86,KVM,EARLY] Disable paravirtualized asynchronous page
                        fault handling.
  
 -      no-kvmclock     [X86,KVM] Disable paravirtualized KVM clock driver
 +      no-kvmclock     [X86,KVM,EARLY] Disable paravirtualized KVM clock driver
  
 -      nolapic         [X86-32,APIC] Do not enable or use the local APIC.
 +      nolapic         [X86-32,APIC,EARLY] Do not enable or use the local APIC.
  
 -      nolapic_timer   [X86-32,APIC] Do not use the local APIC timer.
 +      nolapic_timer   [X86-32,APIC,EARLY] Do not use the local APIC timer.
  
        nomca           [IA-64] Disable machine check abort handling
  
                        shutdown the other cpus.  Instead use the REBOOT_VECTOR
                        irq.
  
 -      nopat           [X86] Disable PAT (page attribute table extension of
 +      nopat           [X86,EARLY] Disable PAT (page attribute table extension of
                        pagetables) support.
  
 -      nopcid          [X86-64] Disable the PCID cpu feature.
 +      nopcid          [X86-64,EARLY] Disable the PCID cpu feature.
  
        nopku           [X86] Disable Memory Protection Keys CPU feature found
                        in some Intel CPUs.
  
 -      nopti           [X86-64]
 +      nopti           [X86-64,EARLY]
                        Equivalent to pti=off
  
 -      nopv=           [X86,XEN,KVM,HYPER_V,VMWARE]
 +      nopv=           [X86,XEN,KVM,HYPER_V,VMWARE,EARLY]
                        Disables the PV optimizations forcing the guest to run
                        as generic guest with no PV drivers. Currently support
                        XEN HVM, KVM, HYPER_V and VMWARE guest.
  
 -      nopvspin        [X86,XEN,KVM]
 +      nopvspin        [X86,XEN,KVM,EARLY]
                        Disables the qspinlock slow path using PV optimizations
                        which allow the hypervisor to 'idle' the guest on lock
                        contention.
                        This is required for the Braillex ib80-piezo Braille
                        reader made by F.H. Papenmeier (Germany).
  
 -      nosgx           [X86-64,SGX] Disables Intel SGX kernel support.
 +      nosgx           [X86-64,SGX,EARLY] Disables Intel SGX kernel support.
  
 -      nosmap          [PPC]
 +      nosmap          [PPC,EARLY]
                        Disable SMAP (Supervisor Mode Access Prevention)
                        even if it is supported by processor.
  
 -      nosmep          [PPC64s]
 +      nosmep          [PPC64s,EARLY]
                        Disable SMEP (Supervisor Mode Execution Prevention)
                        even if it is supported by processor.
  
 -      nosmp           [SMP] Tells an SMP kernel to act as a UP kernel,
 +      nosmp           [SMP,EARLY] Tells an SMP kernel to act as a UP kernel,
                        and disable the IO APIC.  legacy for "maxcpus=0".
  
 -      nosmt           [KNL,MIPS,PPC,S390] Disable symmetric multithreading (SMT).
 +      nosmt           [KNL,MIPS,PPC,S390,EARLY] Disable symmetric multithreading (SMT).
                        Equivalent to smt=1.
  
                        [KNL,X86,PPC] Disable symmetric multithreading (SMT).
        nosoftlockup    [KNL] Disable the soft-lockup detector.
  
        nospec_store_bypass_disable
 -                      [HW] Disable all mitigations for the Speculative Store Bypass vulnerability
 +                      [HW,EARLY] Disable all mitigations for the Speculative
 +                      Store Bypass vulnerability
  
 -      nospectre_bhb   [ARM64] Disable all mitigations for Spectre-BHB (branch
 +      nospectre_bhb   [ARM64,EARLY] Disable all mitigations for Spectre-BHB (branch
                        history injection) vulnerability. System may allow data leaks
                        with this option.
  
 -      nospectre_v1    [X86,PPC] Disable mitigations for Spectre Variant 1
 +      nospectre_v1    [X86,PPC,EARLY] Disable mitigations for Spectre Variant 1
                        (bounds check bypass). With this option data leaks are
                        possible in the system.
  
 -      nospectre_v2    [X86,PPC_E500,ARM64] Disable all mitigations for
 -                      the Spectre variant 2 (indirect branch prediction)
 -                      vulnerability. System may allow data leaks with this
 -                      option.
 +      nospectre_v2    [X86,PPC_E500,ARM64,EARLY] Disable all mitigations
 +                      for the Spectre variant 2 (indirect branch
 +                      prediction) vulnerability. System may allow data
 +                      leaks with this option.
  
 -      no-steal-acc    [X86,PV_OPS,ARM64,PPC/PSERIES,RISCV] Disable
 +      no-steal-acc    [X86,PV_OPS,ARM64,PPC/PSERIES,RISCV,EARLY] Disable
                        paravirtualized steal time accounting. steal time is
                        computed, but won't influence scheduler behaviour
  
                        broken timer IRQ sources.
  
        no_uaccess_flush
 -                      [PPC] Don't flush the L1-D cache after accessing user data.
 +                      [PPC,EARLY] Don't flush the L1-D cache after accessing user data.
  
        novmcoredd      [KNL,KDUMP]
                        Disable device dump. Device dump allows drivers to
                        is set.
  
        no-vmw-sched-clock
 -                      [X86,PV_OPS] Disable paravirtualized VMware scheduler
 -                      clock and use the default one.
 +                      [X86,PV_OPS,EARLY] Disable paravirtualized VMware
 +                      scheduler clock and use the default one.
  
        nowatchdog      [KNL] Disable both lockup detectors, i.e.
                        soft-lockup and NMI watchdog (hard-lockup).
  
 -      nowb            [ARM]
 +      nowb            [ARM,EARLY]
  
 -      nox2apic        [X86-64,APIC] Do not enable x2APIC mode.
 +      nox2apic        [X86-64,APIC,EARLY] Do not enable x2APIC mode.
  
                        NOTE: this parameter will be ignored on systems with the
                        LEGACY_XAPIC_DISABLED bit set in the
                        purges which is reported from either PAL_VM_SUMMARY or
                        SAL PALO.
  
 -      nr_cpus=        [SMP] Maximum number of processors that an SMP kernel
 +      nr_cpus=        [SMP,EARLY] Maximum number of processors that an SMP kernel
                        could support.  nr_cpus=n : n >= 1 limits the kernel to
                        support 'n' processors. It could be larger than the
                        number of already plugged CPU during bootup, later in
  
        nr_uarts=       [SERIAL] maximum number of UARTs to be registered.
  
 -      numa=off        [KNL, ARM64, PPC, RISCV, SPARC, X86] Disable NUMA, Only
 -                      set up a single NUMA node spanning all memory.
 +      numa=off        [KNL, ARM64, PPC, RISCV, SPARC, X86, EARLY]
 +                      Disable NUMA, Only set up a single NUMA node
 +                      spanning all memory.
  
        numa_balancing= [KNL,ARM64,PPC,RISCV,S390,X86] Enable or disable automatic
                        NUMA balancing.
                        This can be set from sysctl after boot.
                        See Documentation/admin-guide/sysctl/vm.rst for details.
  
 -      ohci1394_dma=early      [HW] enable debugging via the ohci1394 driver.
 +      ohci1394_dma=early      [HW,EARLY] enable debugging via the ohci1394 driver.
                        See Documentation/core-api/debugging-via-ohci1394.rst for more
                        info.
  
                                   Once locked, the boundary cannot be changed.
                                   1 indicates lock status, 0 indicates unlock status.
  
 -      oops=panic      Always panic on oopses. Default is to just kill the
 +      oops=panic      [KNL,EARLY]
 +                      Always panic on oopses. Default is to just kill the
                        process, but there is a small probability of
                        deadlocking the machine.
                        This will also cause panics on machine check exceptions.
                        can be read from sysfs at:
                        /sys/module/page_alloc/parameters/shuffle.
  
 -      page_owner=     [KNL] Boot-time page_owner enabling option.
 +      page_owner=     [KNL,EARLY] Boot-time page_owner enabling option.
                        Storage of the information about who allocated
                        each page is disabled in default. With this switch,
                        we can turn it on.
                        on: enable the feature
  
 -      page_poison=    [KNL] Boot-time parameter changing the state of
 +      page_poison=    [KNL,EARLY] Boot-time parameter changing the state of
                        poisoning on the buddy allocator, available with
                        CONFIG_PAGE_POISONING=y.
                        off: turn off poisoning (default)
                        timeout < 0: reboot immediately
                        Format: <timeout>
  
 -      panic_on_taint= Bitmask for conditionally calling panic() in add_taint()
 +      panic_on_taint= [KNL,EARLY]
 +                      Bitmask for conditionally calling panic() in add_taint()
                        Format: <hex>[,nousertaint]
                        Hexadecimal bitmask representing the set of TAINT flags
                        that will cause the kernel to panic when add_taint() is
                        bit 4: print ftrace buffer
                        bit 5: print all printk messages in buffer
                        bit 6: print all CPUs backtrace (if available in the arch)
+                       bit 7: print only tasks in uninterruptible (blocked) state
                        *Be aware* that this option may print a _lot_ of lines,
                        so there are risks of losing older messages in the log.
                        Use this option carefully, maybe worth to setup a
  
        pcbit=          [HW,ISDN]
  
 -      pci=option[,option...]  [PCI] various PCI subsystem options.
 +      pci=option[,option...]  [PCI,EARLY] various PCI subsystem options.
  
                                Some options herein operate on a specific device
                                or a set of devices (<pci_dev>). These are
                        Format: { 0 | 1 }
                        See arch/parisc/kernel/pdc_chassis.c
  
 -      percpu_alloc=   Select which percpu first chunk allocator to use.
 +      percpu_alloc=   [MM,EARLY]
 +                      Select which percpu first chunk allocator to use.
                        Currently supported values are "embed" and "page".
                        Archs may support subset or none of the selections.
                        See comments in mm/percpu.c for details on each
                        may be specified.
                        Format: <port>,<port>....
  
 +      possible_cpus=  [SMP,S390,X86]
 +                      Format: <unsigned int>
 +                      Set the number of possible CPUs, overriding the
 +                      regular discovery mechanisms (such as ACPI/FW, etc).
 +
        powersave=off   [PPC] This option disables power saving features.
                        It specifically disables cpuidle and sets the
                        platform machine description specific power_save
                        execution priority.
  
        ppc_strict_facility_enable
 -                      [PPC] This option catches any kernel floating point,
 +                      [PPC,ENABLE] This option catches any kernel floating point,
                        Altivec, VSX and SPE outside of regions specifically
                        allowed (eg kernel_enable_fpu()/kernel_disable_fpu()).
                        There is some performance impact when enabling this.
  
 -      ppc_tm=         [PPC]
 +      ppc_tm=         [PPC,EARLY]
                        Format: {"off"}
                        Disable Hardware Transactional Memory
  
                        [KNL] Number of legacy pty's. Overwrites compiled-in
                        default number.
  
 -      quiet           [KNL] Disable most log messages
 +      quiet           [KNL,EARLY] Disable most log messages
  
        r128=           [HW,DRM]
  
        ramdisk_start=  [RAM] RAM disk image start address
  
        random.trust_cpu=off
 -                      [KNL] Disable trusting the use of the CPU's
 +                      [KNL,EARLY] Disable trusting the use of the CPU's
                        random number generator (if available) to
                        initialize the kernel's RNG.
  
        random.trust_bootloader=off
 -                      [KNL] Disable trusting the use of the a seed
 +                      [KNL,EARLY] Disable trusting the use of the a seed
                        passed by the bootloader (if available) to
                        initialize the kernel's RNG.
  
        randomize_kstack_offset=
 -                      [KNL] Enable or disable kernel stack offset
 +                      [KNL,EARLY] Enable or disable kernel stack offset
                        randomization, which provides roughly 5 bits of
                        entropy, frustrating memory corruption attacks
                        that depend on stack address determinism or
                        this kernel boot parameter, forcibly setting it
                        to zero.
  
 +      rcutree.enable_rcu_lazy= [KNL]
 +                      To save power, batch RCU callbacks and flush after
 +                      delay, memory pressure or callback list growing too
 +                      big.
 +
        rcuscale.gp_async= [KNL]
                        Measure performance of asynchronous
                        grace-period primitives such as call_rcu().
                        Run specified binary instead of /init from the ramdisk,
                        used for early userspace startup. See initrd.
  
 -      rdrand=         [X86]
 +      rdrand=         [X86,EARLY]
                        force - Override the decision by the kernel to hide the
                                advertisement of RDRAND support (this affects
                                certain AMD processors because of buggy BIOS
                        them.  If <base> is less than 0x10000, the region
                        is assumed to be I/O ports; otherwise it is memory.
  
 -      reservetop=     [X86-32]
 +      reservetop=     [X86-32,EARLY]
                        Format: nn[KMG]
                        Reserves a hole at the top of the kernel virtual
                        address space.
                        [KNL] Disable ring 3 MONITOR/MWAIT feature on supported
                        CPUs.
  
 -      riscv_isa_fallback [RISCV]
 +      riscv_isa_fallback [RISCV,EARLY]
                        When CONFIG_RISCV_ISA_FALLBACK is not enabled, permit
                        falling back to detecting extension support by parsing
                        "riscv,isa" property on devicetree systems when the
  
        ro              [KNL] Mount root device read-only on boot
  
 -      rodata=         [KNL]
 +      rodata=         [KNL,EARLY]
                on      Mark read-only kernel memory as read-only (default).
                off     Leave read-only kernel memory writable for debugging.
                full    Mark read-only kernel memory and aliases as read-only
                        [arm64]
  
        rockchip.usb_uart
 +                      [EARLY]
                        Enable the uart passthrough on the designated usb port
                        on Rockchip SoCs. When active, the signals of the
                        debug-uart get routed to the D+ and D- pins of the usb
        sa1100ir        [NET]
                        See drivers/net/irda/sa1100_ir.c.
  
 -      sched_verbose   [KNL] Enables verbose scheduler debug messages.
 +      sched_verbose   [KNL,EARLY] Enables verbose scheduler debug messages.
  
        schedstats=     [KNL,X86] Enable or disable scheduled statistics.
                        Allowed values are enable and disable. This feature
                        non-zero "wait" parameter.  See weight_single
                        and weight_many.
  
 -      skew_tick=      [KNL] Offset the periodic timer tick per cpu to mitigate
 +      skew_tick=      [KNL,EARLY] Offset the periodic timer tick per cpu to mitigate
                        xtime_lock contention on larger systems, and/or RCU lock
                        contention on all systems with CONFIG_MAXSMP set.
                        Format: { "0" | "1" }
        simeth=         [IA-64]
        simscsi=
  
 -      slram=          [HW,MTD]
 -
 -      slab_merge      [MM]
 -                      Enable merging of slabs with similar size when the
 -                      kernel is built without CONFIG_SLAB_MERGE_DEFAULT.
 -
 -      slab_nomerge    [MM]
 -                      Disable merging of slabs with similar size. May be
 -                      necessary if there is some reason to distinguish
 -                      allocs to different slabs, especially in hardened
 -                      environments where the risk of heap overflows and
 -                      layout control by attackers can usually be
 -                      frustrated by disabling merging. This will reduce
 -                      most of the exposure of a heap attack to a single
 -                      cache (risks via metadata attacks are mostly
 -                      unchanged). Debug options disable merging on their
 -                      own.
 -                      For more information see Documentation/mm/slub.rst.
 -
 -      slab_max_order= [MM, SLAB]
 -                      Determines the maximum allowed order for slabs.
 -                      A high setting may cause OOMs due to memory
 -                      fragmentation.  Defaults to 1 for systems with
 -                      more than 32MB of RAM, 0 otherwise.
 -
 -      slub_debug[=options[,slabs][;[options[,slabs]]...]      [MM, SLUB]
 -                      Enabling slub_debug allows one to determine the
 +      slab_debug[=options[,slabs][;[options[,slabs]]...]      [MM]
 +                      Enabling slab_debug allows one to determine the
                        culprit if slab objects become corrupted. Enabling
 -                      slub_debug can create guard zones around objects and
 +                      slab_debug can create guard zones around objects and
                        may poison objects when not in use. Also tracks the
                        last alloc / free. For more information see
                        Documentation/mm/slub.rst.
 +                      (slub_debug legacy name also accepted for now)
  
 -      slub_max_order= [MM, SLUB]
 +      slab_max_order= [MM]
                        Determines the maximum allowed order for slabs.
                        A high setting may cause OOMs due to memory
                        fragmentation. For more information see
                        Documentation/mm/slub.rst.
 +                      (slub_max_order legacy name also accepted for now)
 +
 +      slab_merge      [MM]
 +                      Enable merging of slabs with similar size when the
 +                      kernel is built without CONFIG_SLAB_MERGE_DEFAULT.
 +                      (slub_merge legacy name also accepted for now)
  
 -      slub_min_objects=       [MM, SLUB]
 +      slab_min_objects=       [MM]
                        The minimum number of objects per slab. SLUB will
 -                      increase the slab order up to slub_max_order to
 +                      increase the slab order up to slab_max_order to
                        generate a sufficiently large slab able to contain
                        the number of objects indicated. The higher the number
                        of objects the smaller the overhead of tracking slabs
                        and the less frequently locks need to be acquired.
                        For more information see Documentation/mm/slub.rst.
 +                      (slub_min_objects legacy name also accepted for now)
  
 -      slub_min_order= [MM, SLUB]
 +      slab_min_order= [MM]
                        Determines the minimum page order for slabs. Must be
 -                      lower than slub_max_order.
 -                      For more information see Documentation/mm/slub.rst.
 +                      lower or equal to slab_max_order. For more information see
 +                      Documentation/mm/slub.rst.
 +                      (slub_min_order legacy name also accepted for now)
  
 -      slub_merge      [MM, SLUB]
 -                      Same with slab_merge.
 +      slab_nomerge    [MM]
 +                      Disable merging of slabs with similar size. May be
 +                      necessary if there is some reason to distinguish
 +                      allocs to different slabs, especially in hardened
 +                      environments where the risk of heap overflows and
 +                      layout control by attackers can usually be
 +                      frustrated by disabling merging. This will reduce
 +                      most of the exposure of a heap attack to a single
 +                      cache (risks via metadata attacks are mostly
 +                      unchanged). Debug options disable merging on their
 +                      own.
 +                      For more information see Documentation/mm/slub.rst.
 +                      (slub_nomerge legacy name also accepted for now)
  
 -      slub_nomerge    [MM, SLUB]
 -                      Same with slab_nomerge. This is supported for legacy.
 -                      See slab_nomerge for more information.
 +      slram=          [HW,MTD]
  
        smart2=         [HW]
                        Format: <io1>[,<io2>[,...,<io8>]]
                                1: Fast pin select (default)
                                2: ATC IRMode
  
 -      smt=            [KNL,MIPS,S390] Set the maximum number of threads (logical
 -                      CPUs) to use per physical CPU on systems capable of
 -                      symmetric multithreading (SMT). Will be capped to the
 -                      actual hardware limit.
 +      smt=            [KNL,MIPS,S390,EARLY] Set the maximum number of threads
 +                      (logical CPUs) to use per physical CPU on systems
 +                      capable of symmetric multithreading (SMT). Will
 +                      be capped to the actual hardware limit.
                        Format: <integer>
                        Default: -1 (no limit)
  
        sonypi.*=       [HW] Sony Programmable I/O Control Device driver
                        See Documentation/admin-guide/laptops/sonypi.rst
  
 -      spectre_v2=     [X86] Control mitigation of Spectre variant 2
 +      spectre_v2=     [X86,EARLY] Control mitigation of Spectre variant 2
                        (indirect branch speculation) vulnerability.
                        The default operation protects the kernel from
                        user space attacks.
                        Selecting 'on' will, and 'auto' may, choose a
                        mitigation method at run time according to the
                        CPU, the available microcode, the setting of the
 -                      CONFIG_RETPOLINE configuration option, and the
 -                      compiler with which the kernel was built.
 +                      CONFIG_MITIGATION_RETPOLINE configuration option,
 +                      and the compiler with which the kernel was built.
  
                        Selecting 'on' will also enable the mitigation
                        against user space to user space task attacks.
                        spectre_v2_user=auto.
  
        spec_rstack_overflow=
 -                      [X86] Control RAS overflow mitigation on AMD Zen CPUs
 +                      [X86,EARLY] Control RAS overflow mitigation on AMD Zen CPUs
  
                        off             - Disable mitigation
                        microcode       - Enable microcode mitigation only
                                          (cloud-specific mitigation)
  
        spec_store_bypass_disable=
 -                      [HW] Control Speculative Store Bypass (SSB) Disable mitigation
 +                      [HW,EARLY] Control Speculative Store Bypass (SSB) Disable mitigation
                        (Speculative Store Bypass vulnerability)
  
                        Certain CPUs are vulnerable to an exploit against a
                        #DB exception for bus lock is triggered only when
                        CPL > 0.
  
 -      srbds=          [X86,INTEL]
 +      srbds=          [X86,INTEL,EARLY]
                        Control the Special Register Buffer Data Sampling
                        (SRBDS) mitigation.
  
                        srcutree.convert_to_big must have the 0x10 bit
                        set for contention-based conversions to occur.
  
 -      ssbd=           [ARM64,HW]
 +      ssbd=           [ARM64,HW,EARLY]
                        Speculative Store Bypass Disable control
  
                        On CPUs that are vulnerable to the Speculative
                        growing up) the main stack are reserved for no other
                        mapping. Default value is 256 pages.
  
 -      stack_depot_disable= [KNL]
 +      stack_depot_disable= [KNL,EARLY]
                        Setting this to true through kernel command line will
                        disable the stack depot thereby saving the static memory
                        consumed by the stack hash table. By default this is set
                        be used to filter out binaries which have
                        not yet been made aware of AT_MINSIGSTKSZ.
  
 -      stress_hpt      [PPC]
 +      stress_hpt      [PPC,EARLY]
                        Limits the number of kernel HPT entries in the hash
                        page table to increase the rate of hash page table
                        faults on kernel addresses.
  
 -      stress_slb      [PPC]
 +      stress_slb      [PPC,EARLY]
                        Limits the number of kernel SLB entries, and flushes
                        them frequently to increase the rate of SLB faults
                        on kernel addresses.
                        This parameter controls use of the Protected
                        Execution Facility on pSeries.
  
 -      swiotlb=        [ARM,IA-64,PPC,MIPS,X86]
 +      swiotlb=        [ARM,IA-64,PPC,MIPS,X86,EARLY]
                        Format: { <int> [,<int>] | force | noforce }
                        <int> -- Number of I/O TLB slabs
                        <int> -- Second integer after comma. Number of swiotlb
                                 wouldn't be automatically used by the kernel
                        noforce -- Never use bounce buffers (for debugging)
  
 -      switches=       [HW,M68k]
 +      switches=       [HW,M68k,EARLY]
  
        sysctl.*=       [KNL]
                        Set a sysctl parameter, right before loading the init
                        <deci-seconds>: poll all this frequency
                        0: no polling (default)
  
 -      threadirqs      [KNL]
 +      threadirqs      [KNL,EARLY]
                        Force threading of all interrupt handlers except those
                        marked explicitly IRQF_NO_THREAD.
  
 -      topology=       [S390]
 +      topology=       [S390,EARLY]
                        Format: {off | on}
                        Specify if the kernel should make use of the cpu
                        topology information if the hardware supports this.
                        can be overridden by a later tsc=nowatchdog.  A console
                        message will flag any such suppression or overriding.
  
 -      tsc_early_khz=  [X86] Skip early TSC calibration and use the given
 +      tsc_early_khz=  [X86,EARLY] Skip early TSC calibration and use the given
                        value instead. Useful when the early TSC frequency discovery
                        procedure is not reliable, such as on overclocked systems
                        with CPUID.16h support and partial CPUID.15h support.
                        See Documentation/admin-guide/hw-vuln/tsx_async_abort.rst
                        for more details.
  
 -      tsx_async_abort= [X86,INTEL] Control mitigation for the TSX Async
 +      tsx_async_abort= [X86,INTEL,EARLY] Control mitigation for the TSX Async
                        Abort (TAA) vulnerability.
  
                        Similar to Micro-architectural Data Sampling (MDS)
        unknown_nmi_panic
                        [X86] Cause panic on unknown NMI.
  
 -      unwind_debug    [X86-64]
 +      unwind_debug    [X86-64,EARLY]
                        Enable unwinder debug output.  This can be
                        useful for debugging certain unwinder error
                        conditions, including corrupt stacks and
                        Example: user_debug=31
  
        userpte=
 -                      [X86] Flags controlling user PTE allocations.
 +                      [X86,EARLY] Flags controlling user PTE allocations.
  
                                nohigh = do not allocate PTE pages in
                                        HIGHMEM regardless of setting
        vector=         [IA-64,SMP]
                        vector=percpu: enable percpu vector domain
  
 -      video=          [FB] Frame buffer configuration
 +      video=          [FB,EARLY] Frame buffer configuration
                        See Documentation/fb/modedb.rst.
  
        video.brightness_switch_enabled= [ACPI]
                          P     Enable page structure init time poisoning
                          -     Disable all of the above options
  
 -      vmalloc=nn[KMG] [KNL,BOOT] Forces the vmalloc area to have an exact
 -                      size of <nn>. This can be used to increase the
 -                      minimum size (128MB on x86). It can also be used to
 -                      decrease the size and leave more room for directly
 -                      mapped kernel RAM.
 +      vmalloc=nn[KMG] [KNL,BOOT,EARLY] Forces the vmalloc area to have an
 +                      exact size of <nn>. This can be used to increase
 +                      the minimum size (128MB on x86). It can also be
 +                      used to decrease the size and leave more room
 +                      for directly mapped kernel RAM.
  
 -      vmcp_cma=nn[MG] [KNL,S390]
 +      vmcp_cma=nn[MG] [KNL,S390,EARLY]
                        Sets the memory size reserved for contiguous memory
                        allocations for the vmcp device driver.
  
        vmpoff=         [KNL,S390] Perform z/VM CP command after power off.
                        Format: <command>
  
 -      vsyscall=       [X86-64]
 +      vsyscall=       [X86-64,EARLY]
                        Controls the behavior of vsyscalls (i.e. calls to
                        fixed addresses of 0xffffffffff600x00 from legacy
                        code).  Most statically-linked binaries and older
                        threshold repeatedly. They are likely good
                        candidates for using WQ_UNBOUND workqueues instead.
  
 +      workqueue.cpu_intensive_warning_thresh=<uint>
 +                      If CONFIG_WQ_CPU_INTENSIVE_REPORT is set, the kernel
 +                      will report the work functions which violate the
 +                      intensive_threshold_us repeatedly. In order to prevent
 +                      spurious warnings, start printing only after a work
 +                      function has violated this threshold number of times.
 +
 +                      The default is 4 times. 0 disables the warning.
 +
        workqueue.power_efficient
                        Per-cpu workqueues are generally preferred because
                        they show better performance thanks to cache
                        When enabled, memory and cache locality will be
                        impacted.
  
 -      writecombine=   [LOONGARCH] Control the MAT (Memory Access Type) of
 -                      ioremap_wc().
 +      writecombine=   [LOONGARCH,EARLY] Control the MAT (Memory Access
 +                      Type) of ioremap_wc().
  
                        on   - Enable writecombine, use WUC for ioremap_wc()
                        off  - Disable writecombine, use SUC for ioremap_wc()
  
 -      x2apic_phys     [X86-64,APIC] Use x2apic physical mode instead of
 +      x2apic_phys     [X86-64,APIC,EARLY] Use x2apic physical mode instead of
                        default x2apic cluster mode on platforms
                        supporting x2apic.
  
                        save/restore/migration must be enabled to handle larger
                        domains.
  
 -      xen_emul_unplug=                [HW,X86,XEN]
 +      xen_emul_unplug=                [HW,X86,XEN,EARLY]
                        Unplug Xen emulated devices
                        Format: [unplug0,][unplug1]
                        ide-disks -- unplug primary master IDE devices
                                the unplug protocol
                        never -- do not unplug even if version check succeeds
  
 -      xen_legacy_crash        [X86,XEN]
 +      xen_legacy_crash        [X86,XEN,EARLY]
                        Crash from Xen panic notifier, without executing late
                        panic() code such as dumping handler.
  
 -      xen_msr_safe=   [X86,XEN]
 +      xen_msr_safe=   [X86,XEN,EARLY]
                        Format: <bool>
                        Select whether to always use non-faulting (safe) MSR
                        access functions when running as Xen PV guest. The
                        default value is controlled by CONFIG_XEN_PV_MSR_SAFE.
  
 -      xen_nopvspin    [X86,XEN]
 +      xen_nopvspin    [X86,XEN,EARLY]
                        Disables the qspinlock slowpath using Xen PV optimizations.
                        This parameter is obsoleted by "nopvspin" parameter, which
                        has equivalent effect for XEN platform.
                        has equivalent effect for XEN platform.
  
        xen_no_vector_callback
 -                      [KNL,X86,XEN] Disable the vector callback for Xen
 +                      [KNL,X86,XEN,EARLY] Disable the vector callback for Xen
                        event channel interrupts.
  
        xen_scrub_pages=        [XEN]
                        with /sys/devices/system/xen_memory/xen_memory0/scrub_pages.
                        Default value controlled with CONFIG_XEN_SCRUB_PAGES_DEFAULT.
  
 -      xen_timer_slop= [X86-64,XEN]
 +      xen_timer_slop= [X86-64,XEN,EARLY]
                        Set the timer slop (in nanoseconds) for the virtual Xen
                        timers (default is 100000). This adjusts the minimum
                        delta of virtualized Xen timers, where lower values
                        host controller quirks. Meaning of each bit can be
                        consulted in header drivers/usb/host/xhci.h.
  
 -      xmon            [PPC]
 +      xmon            [PPC,EARLY]
                        Format: { early | on | rw | ro | off }
                        Controls if xmon debugger is enabled. Default is off.
                        Passing only "xmon" is equivalent to "xmon=early".
@@@ -30,8 -30,8 +30,8 @@@ you probably needn't concern yourself w
          Program        Minimal version       Command to check the version
  ====================== ===============  ========================================
  GNU C                  5.1              gcc --version
- Clang/LLVM (optional)  11.0.0           clang --version
+ Clang/LLVM (optional)  13.0.1           clang --version
 -Rust (optional)        1.74.1           rustc --version
 +Rust (optional)        1.76.0           rustc --version
  bindgen (optional)     0.65.1           bindgen --version
  GNU make               3.82             make --version
  bash                   4.2              bash --version
@@@ -144,8 -144,8 +144,8 @@@ Biso
  Since Linux 4.16, the build system generates parsers
  during build.  This requires bison 2.0 or later.
  
 -pahole:
 --------
 +pahole
 +------
  
  Since Linux 5.2, if CONFIG_DEBUG_INFO_BTF is selected, the build system
  generates BTF (BPF Type Format) from DWARF in vmlinux, a bit later from kernel
diff --combined MAINTAINERS
@@@ -24,7 -24,7 +24,7 @@@ Descriptions of section entries and pre
           filing info, a direct bug tracker link, or a mailto: URI.
        C: URI for *chat* protocol, server and channel where developers
           usually hang out, for example irc://server/channel.
 -      P: Subsystem Profile document for more details submitting
 +      P: *Subsystem Profile* document for more details submitting
           patches to the given subsystem. This is either an in-tree file,
           or a URI. See Documentation/maintainer/maintainer-entry-profile.rst
           for details.
@@@ -614,7 -614,7 +614,7 @@@ AGPGART DRIVE
  M:    David Airlie <airlied@redhat.com>
  L:    dri-devel@lists.freedesktop.org
  S:    Maintained
 -T:    git git://anongit.freedesktop.org/drm/drm
 +T:    git https://gitlab.freedesktop.org/drm/kernel.git
  F:    drivers/char/agp/
  F:    include/linux/agp*
  F:    include/uapi/linux/agp*
@@@ -897,12 -897,6 +897,12 @@@ Q:       https://patchwork.kernel.org/project
  F:    drivers/infiniband/hw/efa/
  F:    include/uapi/rdma/efa-abi.h
  
 +AMD ADDRESS TRANSLATION LIBRARY (ATL)
 +M:    Yazen Ghannam <Yazen.Ghannam@amd.com>
 +L:    linux-edac@vger.kernel.org
 +S:    Supported
 +F:    drivers/ras/amd/atl/*
 +
  AMD AXI W1 DRIVER
  M:    Kris Chaplin <kris.chaplin@amd.com>
  R:    Thomas Delev <thomas.delev@amd.com>
@@@ -1104,14 -1098,6 +1104,14 @@@ F:    Documentation/devicetree/bindings/pe
  F:    drivers/perf/amlogic/
  F:    include/soc/amlogic/
  
 +AMPHENOL CHIPCAP 2 HUMIDITY-TEMPERATURE IIO DRIVER
 +M:    Javier Carrasco <javier.carrasco.cruz@gmail.com>
 +L:    linux-hwmon@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/hwmon/amphenol,chipcap2.yaml
 +F:    Documentation/hwmon/chipcap2.rst
 +F:    drivers/hwmon/chipcap2.c
 +
  AMPHION VPU CODEC V4L2 DRIVER
  M:    Ming Qian <ming.qian@nxp.com>
  M:    Zhou Peng <eagle.zhou@nxp.com>
@@@ -1398,9 -1384,17 +1398,9 @@@ F:     drivers/iio/amplifiers/hmc425a.
  F:    drivers/staging/iio/*/ad*
  X:    drivers/iio/*/adjd*
  
 -ANALOG DEVICES INC MAX31760 DRIVER
 -M:    Ibrahim Tilki <Ibrahim.Tilki@analog.com>
 -S:    Maintained
 -W:    http://wiki.analog.com/
 -W:    https://ez.analog.com/linux-software-drivers
 -F:    Documentation/devicetree/bindings/hwmon/adi,max31760.yaml
 -F:    Documentation/hwmon/max31760.rst
 -F:    drivers/hwmon/max31760.c
 -
  ANALOGBITS PLL LIBRARIES
  M:    Paul Walmsley <paul.walmsley@sifive.com>
 +M:    Samuel Holland <samuel.holland@sifive.com>
  S:    Supported
  F:    drivers/clk/analogbits/*
  F:    include/linux/clk/analogbits*
@@@ -2162,7 -2156,7 +2162,7 @@@ M:      Shawn Guo <shawnguo@kernel.org
  M:    Sascha Hauer <s.hauer@pengutronix.de>
  R:    Pengutronix Kernel Team <kernel@pengutronix.de>
  R:    Fabio Estevam <festevam@gmail.com>
 -R:    NXP Linux Team <linux-imx@nxp.com>
 +L:    imx@lists.linux.dev
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git
@@@ -2471,7 -2465,6 +2471,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/arm/ste-*
  F:    Documentation/devicetree/bindings/arm/ux500.yaml
  F:    Documentation/devicetree/bindings/arm/ux500/
 +F:    Documentation/devicetree/bindings/gpio/st,nomadik-gpio.yaml
  F:    Documentation/devicetree/bindings/i2c/st,nomadik-i2c.yaml
  F:    arch/arm/boot/dts/st/ste-*
  F:    arch/arm/mach-nomadik/
@@@ -2480,7 -2473,6 +2480,7 @@@ F:      drivers/clk/clk-nomadik.
  F:    drivers/clocksource/clksrc-dbx500-prcmu.c
  F:    drivers/dma/ste_dma40*
  F:    drivers/pmdomain/st/ste-ux500-pm-domain.c
 +F:    drivers/gpio/gpio-nomadik.c
  F:    drivers/hwspinlock/u8500_hsem.c
  F:    drivers/i2c/busses/i2c-nomadik.c
  F:    drivers/iio/adc/ab8500-gpadc.c
@@@ -2550,14 -2542,13 +2550,14 @@@ F:   drivers/*/*/*wpcm
  F:    drivers/*/*wpcm*
  
  ARM/NXP S32G ARCHITECTURE
 -M:    Chester Lin <chester62515@gmail.com>
 -R:    Andreas Färber <afaerber@suse.de>
 +R:    Chester Lin <chester62515@gmail.com>
  R:    Matthias Brugger <mbrugger@suse.com>
 -R:    NXP S32 Linux Team <s32@nxp.com>
 +R:    Ghennadi Procopciuc <ghennadi.procopciuc@oss.nxp.com>
 +L:    NXP S32 Linux Team <s32@nxp.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm64/boot/dts/freescale/s32g*.dts*
 +F:    drivers/pinctrl/nxp/
  
  ARM/Orion SoC/Technologic Systems TS-78xx platform support
  M:    Alexander Clouter <alex@digriz.org.uk>
@@@ -3191,12 -3182,6 +3191,12 @@@ S:    Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git
  F:    drivers/platform/x86/asus-tf103c-dock.c
  
 +ASUS ROG RYUJIN AIO HARDWARE MONITOR DRIVER
 +M:    Aleksa Savic <savicaleksa83@gmail.com>
 +L:    linux-hwmon@vger.kernel.org
 +S:    Maintained
 +F:    drivers/hwmon/asus_rog_ryujin.c
 +
  ASUS WIRELESS RADIO CONTROL DRIVER
  M:    João Paulo Rechi Vita <jprvita@gmail.com>
  L:    platform-driver-x86@vger.kernel.org
@@@ -3391,15 -3376,11 +3391,15 @@@ F:   drivers/base/auxiliary.
  F:    include/linux/auxiliary_bus.h
  
  AUXILIARY DISPLAY DRIVERS
 -M:    Miguel Ojeda <ojeda@kernel.org>
 -S:    Maintained
 +M:    Andy Shevchenko <andy@kernel.org>
 +R:    Geert Uytterhoeven <geert@linux-m68k.org>
 +S:    Odd Fixes
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-auxdisplay.git
  F:    Documentation/devicetree/bindings/auxdisplay/
  F:    drivers/auxdisplay/
  F:    include/linux/cfag12864b.h
 +F:    include/uapi/linux/map_to_14segment.h
 +F:    include/uapi/linux/map_to_7segment.h
  
  AVIA HX711 ANALOG DIGITAL CONVERTER IIO DRIVER
  M:    Andreas Klinger <ak@it-klinger.de>
@@@ -3818,7 -3799,6 +3818,7 @@@ M:      Alexei Starovoitov <ast@kernel.org
  M:    Daniel Borkmann <daniel@iogearbox.net>
  M:    Andrii Nakryiko <andrii@kernel.org>
  R:    Martin KaFai Lau <martin.lau@linux.dev>
 +R:    Eduard Zingerman <eddyz87@gmail.com>
  R:    Song Liu <song@kernel.org>
  R:    Yonghong Song <yonghong.song@linux.dev>
  R:    John Fastabend <john.fastabend@gmail.com>
@@@ -3879,7 -3859,6 +3879,7 @@@ F:      net/unix/unix_bpf.
  
  BPF [LIBRARY] (libbpf)
  M:    Andrii Nakryiko <andrii@kernel.org>
 +M:    Eduard Zingerman <eddyz87@gmail.com>
  L:    bpf@vger.kernel.org
  S:    Maintained
  F:    tools/lib/bpf/
@@@ -3937,7 -3916,6 +3937,7 @@@ F:      security/bpf
  
  BPF [SELFTESTS] (Test Runners & Infrastructure)
  M:    Andrii Nakryiko <andrii@kernel.org>
 +M:    Eduard Zingerman <eddyz87@gmail.com>
  R:    Mykola Lysenko <mykolal@fb.com>
  L:    bpf@vger.kernel.org
  S:    Maintained
@@@ -4651,8 -4629,8 +4651,8 @@@ S:      Maintaine
  F:    net/sched/sch_cake.c
  
  CAN NETWORK DRIVERS
 -M:    Wolfgang Grandegger <wg@grandegger.com>
  M:    Marc Kleine-Budde <mkl@pengutronix.de>
 +M:    Vincent Mailhol <mailhol.vincent@wanadoo.fr>
  L:    linux-can@vger.kernel.org
  S:    Maintained
  W:    https://github.com/linux-can
@@@ -5012,12 -4990,6 +5012,12 @@@ R:    Sami Kyöstilä <skyostil@chromium.o
  S:    Maintained
  F:    drivers/platform/chrome/cros_hps_i2c.c
  
 +CHROMEOS EC WATCHDOG
 +M:    Lukasz Majczak <lma@chromium.org>
 +L:    chrome-platform@lists.linux.dev
 +S:    Maintained
 +F:    drivers/watchdog/cros_ec_wdt.c
 +
  CHRONTEL CH7322 CEC DRIVER
  M:    Joe Tessler <jrt@google.com>
  L:    linux-media@vger.kernel.org
@@@ -5042,7 -5014,6 +5042,7 @@@ F:      include/linux/mfd/cs42l43
  F:    include/sound/cs*
  F:    sound/pci/hda/cirrus*
  F:    sound/pci/hda/cs*
 +F:    sound/pci/hda/hda_component*
  F:    sound/pci/hda/hda_cs_dsp_ctl.*
  F:    sound/soc/codecs/cs*
  
@@@ -5268,7 -5239,6 +5268,7 @@@ R:      Paulo Alcantara <pc@manguebit.com> (
  R:    Ronnie Sahlberg <ronniesahlberg@gmail.com> (directory leases, sparse files)
  R:    Shyam Prasad N <sprasad@microsoft.com> (multichannel)
  R:    Tom Talpey <tom@talpey.com> (RDMA, smbdirect)
 +R:    Bharath SM <bharathsm@microsoft.com> (deferred close, directory leases)
  L:    linux-cifs@vger.kernel.org
  L:    samba-technical@lists.samba.org (moderated for non-subscribers)
  S:    Supported
@@@ -5408,12 -5378,11 +5408,12 @@@ CONTROL GROUP - MEMORY RESOURCE CONTROL
  M:    Johannes Weiner <hannes@cmpxchg.org>
  M:    Michal Hocko <mhocko@kernel.org>
  M:    Roman Gushchin <roman.gushchin@linux.dev>
 -M:    Shakeel Butt <shakeelb@google.com>
 +M:    Shakeel Butt <shakeel.butt@linux.dev>
  R:    Muchun Song <muchun.song@linux.dev>
  L:    cgroups@vger.kernel.org
  L:    linux-mm@kvack.org
  S:    Maintained
 +F:    include/linux/memcontrol.h
  F:    mm/memcontrol.c
  F:    mm/swap_cgroup.c
  F:    samples/cgroup/*
@@@ -6154,14 -6123,6 +6154,14 @@@ F:    include/linux/device-mapper.
  F:    include/linux/dm-*.h
  F:    include/uapi/linux/dm-*.h
  
 +DEVICE-MAPPER VDO TARGET
 +M:    Matthew Sakai <msakai@redhat.com>
 +M:    dm-devel@lists.linux.dev
 +L:    dm-devel@lists.linux.dev
 +S:    Maintained
 +F:    Documentation/admin-guide/device-mapper/vdo*.rst
 +F:    drivers/md/dm-vdo/
 +
  DEVLINK
  M:    Jiri Pirko <jiri@resnulli.us>
  L:    netdev@vger.kernel.org
@@@ -6189,16 -6150,16 +6189,16 @@@ DIALOG SEMICONDUCTOR DRIVER
  M:    Support Opensource <support.opensource@diasemi.com>
  S:    Supported
  W:    http://www.dialog-semiconductor.com/products
 -F:    Documentation/devicetree/bindings/input/da90??-onkey.txt
  F:    Documentation/devicetree/bindings/input/dlg,da72??.txt
 +F:    Documentation/devicetree/bindings/input/dlg,da9062-onkey.yaml
  F:    Documentation/devicetree/bindings/mfd/da90*.txt
  F:    Documentation/devicetree/bindings/mfd/dlg,da90*.yaml
  F:    Documentation/devicetree/bindings/regulator/da92*.txt
  F:    Documentation/devicetree/bindings/regulator/dlg,da9*.yaml
  F:    Documentation/devicetree/bindings/regulator/dlg,slg51000.yaml
  F:    Documentation/devicetree/bindings/sound/da[79]*.txt
 -F:    Documentation/devicetree/bindings/thermal/da90??-thermal.txt
 -F:    Documentation/devicetree/bindings/watchdog/dlg,da90??-watchdog.yaml
 +F:    Documentation/devicetree/bindings/thermal/dlg,da9062-thermal.yaml
 +F:    Documentation/devicetree/bindings/watchdog/dlg,da9062-watchdog.yaml
  F:    Documentation/hwmon/da90??.rst
  F:    drivers/gpio/gpio-da90??.c
  F:    drivers/hwmon/da90??-hwmon.c
@@@ -6416,7 -6377,6 +6416,7 @@@ L:      linux-doc@vger.kernel.or
  S:    Maintained
  F:    Documentation/admin-guide/quickly-build-trimmed-linux.rst
  F:    Documentation/admin-guide/reporting-issues.rst
 +F:    Documentation/admin-guide/verify-bugs-and-bisect-regressions.rst
  
  DOCUMENTATION SCRIPTS
  M:    Mauro Carvalho Chehab <mchehab@kernel.org>
@@@ -7036,7 -6996,7 +7036,7 @@@ L:      dri-devel@lists.freedesktop.or
  S:    Maintained
  B:    https://gitlab.freedesktop.org/drm
  C:    irc://irc.oftc.net/dri-devel
 -T:    git git://anongit.freedesktop.org/drm/drm
 +T:    git https://gitlab.freedesktop.org/drm/kernel.git
  F:    Documentation/devicetree/bindings/display/
  F:    Documentation/devicetree/bindings/gpu/
  F:    Documentation/gpu/
@@@ -7070,7 -7030,7 +7070,7 @@@ X:      drivers/gpu/drm/mediatek
  X:    drivers/gpu/drm/msm/
  X:    drivers/gpu/drm/nouveau/
  X:    drivers/gpu/drm/radeon/
 -X:    drivers/gpu/drm/renesas/
 +X:    drivers/gpu/drm/renesas/rcar-du/
  X:    drivers/gpu/drm/tegra/
  
  DRM DRIVERS FOR ALLWINNER A10
@@@ -7238,22 -7198,12 +7238,22 @@@ F:   Documentation/devicetree/bindings/di
  F:    Documentation/devicetree/bindings/display/renesas,du.yaml
  F:    drivers/gpu/drm/renesas/rcar-du/
  
 +DRM DRIVERS FOR RENESAS RZ
 +M:    Biju Das <biju.das.jz@bp.renesas.com>
 +L:    dri-devel@lists.freedesktop.org
 +L:    linux-renesas-soc@vger.kernel.org
 +S:    Maintained
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    Documentation/devicetree/bindings/display/renesas,rzg2l-du.yaml
 +F:    drivers/gpu/drm/renesas/rz-du/
 +
  DRM DRIVERS FOR RENESAS SHMOBILE
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
  M:    Geert Uytterhoeven <geert+renesas@glider.be>
  L:    dri-devel@lists.freedesktop.org
  L:    linux-renesas-soc@vger.kernel.org
  S:    Supported
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  F:    Documentation/devicetree/bindings/display/renesas,shmobile-lcdc.yaml
  F:    drivers/gpu/drm/renesas/shmobile/
  F:    include/linux/platform_data/shmob_drm.h
@@@ -7363,7 -7313,6 +7363,7 @@@ F:      drivers/gpu/drm/xlnx
  
  DRM GPU SCHEDULER
  M:    Luben Tuikov <ltuikov89@gmail.com>
 +M:    Matthew Brost <matthew.brost@intel.com>
  L:    dri-devel@lists.freedesktop.org
  S:    Maintained
  T:    git git://anongit.freedesktop.org/drm/drm-misc
@@@ -7633,6 -7582,7 +7633,6 @@@ R:      Robert Richter <rric@kernel.org
  L:    linux-edac@vger.kernel.org
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras.git edac-for-next
 -F:    Documentation/admin-guide/ras.rst
  F:    Documentation/driver-api/edac.rst
  F:    drivers/edac/
  F:    include/linux/edac.h
@@@ -7840,8 -7790,8 +7840,8 @@@ F:      drivers/media/usb/em28xx
  
  EMMC CMDQ HOST CONTROLLER INTERFACE (CQHCI) DRIVER
  M:    Adrian Hunter <adrian.hunter@intel.com>
 -M:    Ritesh Harjani <riteshh@codeaurora.org>
 -M:    Asutosh Das <asutoshd@codeaurora.org>
 +M:    Asutosh Das <quic_asutoshd@quicinc.com>
 +R:    Ritesh Harjani <ritesh.list@gmail.com>
  L:    linux-mmc@vger.kernel.org
  S:    Supported
  F:    drivers/mmc/host/cqhci*
@@@ -7939,13 -7889,6 +7939,13 @@@ S:    Maintaine
  F:    include/linux/errseq.h
  F:    lib/errseq.c
  
 +ESD CAN NETWORK DRIVERS
 +M:    Stefan Mätje <stefan.maetje@esd.eu>
 +R:    socketcan@esd.eu
 +L:    linux-can@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/can/esd/
 +
  ESD CAN/USB DRIVERS
  M:    Frank Jungclaus <frank.jungclaus@esd.eu>
  R:    socketcan@esd.eu
@@@ -8041,19 -7984,11 +8041,19 @@@ S:   Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat.git
  F:    fs/exfat/
  
 +EXPRESSWIRE PROTOCOL LIBRARY
 +M:    Duje Mihanović <duje.mihanovic@skole.hr>
 +L:    linux-leds@vger.kernel.org
 +S:    Maintained
 +F:    drivers/leds/leds-expresswire.c
 +F:    include/linux/leds-expresswire.h
 +
  EXT2 FILE SYSTEM
  M:    Jan Kara <jack@suse.com>
  L:    linux-ext4@vger.kernel.org
  S:    Maintained
  F:    Documentation/filesystems/ext2.rst
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs.git
  F:    fs/ext2/
  F:    include/linux/ext2*
  
@@@ -8230,7 -8165,6 +8230,7 @@@ F:      include/uapi/scsi/fc
  FILE LOCKING (flock() and fcntl()/lockf())
  M:    Jeff Layton <jlayton@kernel.org>
  M:    Chuck Lever <chuck.lever@oracle.com>
 +R:    Alexander Aring <alex.aring@gmail.com>
  L:    linux-fsdevel@vger.kernel.org
  S:    Maintained
  F:    fs/fcntl.c
@@@ -8561,7 -8495,7 +8561,7 @@@ FREESCALE IMX / MXC FEC DRIVE
  M:    Wei Fang <wei.fang@nxp.com>
  R:    Shenwei Wang <shenwei.wang@nxp.com>
  R:    Clark Wang <xiaoning.wang@nxp.com>
 -R:    NXP Linux Team <linux-imx@nxp.com>
 +L:    imx@lists.linux.dev
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/net/fsl,fec.yaml
@@@ -8596,7 -8530,7 +8596,7 @@@ F:      drivers/i2c/busses/i2c-imx.
  FREESCALE IMX LPI2C DRIVER
  M:    Dong Aisheng <aisheng.dong@nxp.com>
  L:    linux-i2c@vger.kernel.org
 -L:    linux-imx@nxp.com
 +L:    imx@lists.linux.dev
  S:    Maintained
  F:    Documentation/devicetree/bindings/i2c/i2c-imx-lpi2c.yaml
  F:    drivers/i2c/busses/i2c-imx-lpi2c.c
@@@ -8656,13 -8590,6 +8656,13 @@@ F:    Documentation/devicetree/bindings/so
  F:    drivers/soc/fsl/qe/qmc.c
  F:    include/soc/fsl/qe/qmc.h
  
 +FREESCALE QUICC ENGINE QMC HDLC DRIVER
 +M:    Herve Codina <herve.codina@bootlin.com>
 +L:    netdev@vger.kernel.org
 +L:    linuxppc-dev@lists.ozlabs.org
 +S:    Maintained
 +F:    drivers/net/wan/fsl_qmc_hdlc.c
 +
  FREESCALE QUICC ENGINE TSA DRIVER
  M:    Herve Codina <herve.codina@bootlin.com>
  L:    linuxppc-dev@lists.ozlabs.org
@@@ -9054,10 -8981,9 +9054,10 @@@ F:    include/linux/string.
  F:    include/linux/string_choices.h
  F:    include/linux/string_helpers.h
  F:    lib/string.c
 +F:    lib/string_kunit.c
  F:    lib/string_helpers.c
 -F:    lib/test-string_helpers.c
 -F:    lib/test_string.c
 +F:    lib/string_helpers_kunit.c
 +F:    scripts/coccinelle/api/string_choices.cocci
  
  GENERIC UIO DRIVER FOR PCI DEVICES
  M:    "Michael S. Tsirkin" <mst@redhat.com>
@@@ -9159,7 -9085,6 +9159,7 @@@ F:      Documentation/devicetree/bindings/cl
  F:    arch/arm64/boot/dts/exynos/google/
  F:    drivers/clk/samsung/clk-gs101.c
  F:    include/dt-bindings/clock/google,gs101.h
 +K:    [gG]oogle.?[tT]ensor
  
  GPD POCKET FAN DRIVER
  M:    Hans de Goede <hdegoede@redhat.com>
@@@ -9229,7 -9154,6 +9229,7 @@@ S:      Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git
  F:    Documentation/ABI/obsolete/sysfs-gpio
  F:    Documentation/ABI/testing/gpio-cdev
 +F:    Documentation/userspace-api/gpio/
  F:    drivers/gpio/gpiolib-cdev.c
  F:    include/uapi/linux/gpio.h
  F:    tools/gpio/
@@@ -10548,11 -10472,11 +10548,11 @@@ F:        drivers/media/rc/img-ir
  
  IMGTEC POWERVR DRM DRIVER
  M:    Frank Binns <frank.binns@imgtec.com>
 -M:    Donald Robson <donald.robson@imgtec.com>
  M:    Matt Coster <matt.coster@imgtec.com>
  S:    Supported
  T:    git git://anongit.freedesktop.org/drm/drm-misc
 -F:    Documentation/devicetree/bindings/gpu/img,powervr.yaml
 +F:    Documentation/devicetree/bindings/gpu/img,powervr-rogue.yaml
 +F:    Documentation/devicetree/bindings/gpu/img,powervr-sgx.yaml
  F:    Documentation/gpu/imagination/
  F:    drivers/gpu/drm/imagination/
  F:    include/uapi/drm/pvr_drm.h
@@@ -10569,6 -10493,22 +10569,6 @@@ L:  linux-fbdev@vger.kernel.or
  S:    Orphan
  F:    drivers/video/fbdev/imsttfb.c
  
 -INA209 HARDWARE MONITOR DRIVER
 -M:    Guenter Roeck <linux@roeck-us.net>
 -L:    linux-hwmon@vger.kernel.org
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/hwmon/ti,ina2xx.yaml
 -F:    Documentation/hwmon/ina209.rst
 -F:    drivers/hwmon/ina209.c
 -
 -INA2XX HARDWARE MONITOR DRIVER
 -M:    Guenter Roeck <linux@roeck-us.net>
 -L:    linux-hwmon@vger.kernel.org
 -S:    Maintained
 -F:    Documentation/hwmon/ina2xx.rst
 -F:    drivers/hwmon/ina2xx.c
 -F:    include/linux/platform_data/ina2xx.h
 -
  INDEX OF FURTHER KERNEL DOCUMENTATION
  M:    Carlos Bilbao <carlos.bilbao@amd.com>
  S:    Maintained
@@@ -10794,7 -10734,7 +10794,7 @@@ INTEL DRM I915 DRIVER (Meteor Lake, DG
  M:    Jani Nikula <jani.nikula@linux.intel.com>
  M:    Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
  M:    Rodrigo Vivi <rodrigo.vivi@intel.com>
 -M:    Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
 +M:    Tvrtko Ursulin <tursulin@ursulin.net>
  L:    intel-gfx@lists.freedesktop.org
  S:    Supported
  W:    https://drm.pages.freedesktop.org/intel-docs/
@@@ -11216,16 -11156,6 +11216,16 @@@ L: netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/wwan/iosm/
  
 +INTEL(R) FLEXIBLE RETURN AND EVENT DELIVERY
 +M:    Xin Li <xin@zytor.com>
 +M:    "H. Peter Anvin" <hpa@zytor.com>
 +S:    Supported
 +F:    Documentation/arch/x86/x86_64/fred.rst
 +F:    arch/x86/entry/entry_64_fred.S
 +F:    arch/x86/entry/entry_fred.c
 +F:    arch/x86/include/asm/fred.h
 +F:    arch/x86/kernel/fred.c
 +
  INTEL(R) TRACE HUB
  M:    Alexander Shishkin <alexander.shishkin@linux.intel.com>
  S:    Supported
@@@ -11314,6 -11244,7 +11314,6 @@@ F:   drivers/iommu
  F:    include/linux/iommu.h
  F:    include/linux/iova.h
  F:    include/linux/of_iommu.h
 -F:    include/uapi/linux/iommu.h
  
  IOMMUFD
  M:    Jason Gunthorpe <jgg@nvidia.com>
@@@ -11553,6 -11484,14 +11553,6 @@@ S:  Maintaine
  F:    arch/x86/include/asm/jailhouse_para.h
  F:    arch/x86/kernel/jailhouse.c
  
 -JC42.4 TEMPERATURE SENSOR DRIVER
 -M:    Guenter Roeck <linux@roeck-us.net>
 -L:    linux-hwmon@vger.kernel.org
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/hwmon/jedec,jc42.yaml
 -F:    Documentation/hwmon/jc42.rst
 -F:    drivers/hwmon/jc42.c
 -
  JFS FILESYSTEM
  M:    Dave Kleikamp <shaggy@kernel.org>
  L:    jfs-discussion@lists.sourceforge.net
@@@ -12112,12 -12051,6 +12112,12 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/leds/backlight/kinetic,ktd253.yaml
  F:    drivers/video/backlight/ktd253-backlight.c
  
 +KTD2801 BACKLIGHT DRIVER
 +M:    Duje Mihanović <duje.mihanovic@skole.hr>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/leds/backlight/kinetic,ktd2801.yaml
 +F:    drivers/video/backlight/ktd2801-backlight.c
 +
  KTEST
  M:    Steven Rostedt <rostedt@goodmis.org>
  M:    John Hawley <warthog9@eaglescrag.net>
@@@ -12225,11 -12158,11 +12225,11 @@@ F:        Documentation/scsi/53c700.rs
  F:    drivers/scsi/53c700*
  
  LEAKING_ADDRESSES
 -M:    Tobin C. Harding <me@tobin.cc>
  M:    Tycho Andersen <tycho@tycho.pizza>
 +R:    Kees Cook <keescook@chromium.org>
  L:    linux-hardening@vger.kernel.org
  S:    Maintained
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tobin/leaks.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    scripts/leaking_addresses.pl
  
  LED SUBSYSTEM
@@@ -12583,6 -12516,7 +12583,6 @@@ F:   arch/powerpc/include/asm/livepatch.
  F:    include/linux/livepatch.h
  F:    kernel/livepatch/
  F:    kernel/module/livepatch.c
 -F:    lib/livepatch/
  F:    samples/livepatch/
  F:    tools/testing/selftests/livepatch/
  
@@@ -12623,6 -12557,13 +12623,6 @@@ F:  Documentation/hwmon/lm90.rs
  F:    drivers/hwmon/lm90.c
  F:    include/dt-bindings/thermal/lm90.h
  
 -LM95234 HARDWARE MONITOR DRIVER
 -M:    Guenter Roeck <linux@roeck-us.net>
 -L:    linux-hwmon@vger.kernel.org
 -S:    Maintained
 -F:    Documentation/hwmon/lm95234.rst
 -F:    drivers/hwmon/lm95234.c
 -
  LME2510 MEDIA DRIVER
  M:    Malcolm Priestley <tvboxspy@gmail.com>
  L:    linux-media@vger.kernel.org
@@@ -12826,13 -12767,12 +12826,13 @@@ W:        https://ez.analog.com/linux-software
  F:    Documentation/devicetree/bindings/iio/temperature/adi,ltc2983.yaml
  F:    drivers/iio/temperature/ltc2983.c
  
 -LTC4261 HARDWARE MONITOR DRIVER
 -M:    Guenter Roeck <linux@roeck-us.net>
 +LTC4282 HARDWARE MONITOR DRIVER
 +M:    Nuno Sa <nuno.sa@analog.com>
  L:    linux-hwmon@vger.kernel.org
 -S:    Maintained
 -F:    Documentation/hwmon/ltc4261.rst
 -F:    drivers/hwmon/ltc4261.c
 +S:    Supported
 +F:    Documentation/devicetree/bindings/hwmon/adi,ltc4282.yaml
 +F:    Documentation/hwmon/ltc4282.rst
 +F:    drivers/hwmon/ltc4282.c
  
  LTC4286 HARDWARE MONITOR DRIVER
  M:    Delphine CC Chiu <Delphine_CC_Chiu@Wiwynn.com>
@@@ -13121,15 -13061,6 +13121,15 @@@ L: netdev@vger.kernel.or
  S:    Supported
  F:    drivers/net/ethernet/marvell/octeon_ep
  
 +MARVELL OCTEON ENDPOINT VF DRIVER
 +M:    Veerasenareddy Burru <vburru@marvell.com>
 +M:    Sathesh Edara <sedara@marvell.com>
 +M:    Shinas Rasheed <srasheed@marvell.com>
 +M:    Satananda Burla <sburla@marvell.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/ethernet/marvell/octeon_ep_vf
 +
  MARVELL OCTEONTX2 PHYSICAL FUNCTION DRIVER
  M:    Sunil Goutham <sgoutham@marvell.com>
  M:    Geetha sowjanya <gakula@marvell.com>
@@@ -13190,6 -13121,13 +13190,6 @@@ S:  Maintaine
  F:    Documentation/hwmon/max15301.rst
  F:    drivers/hwmon/pmbus/max15301.c
  
 -MAX16065 HARDWARE MONITOR DRIVER
 -M:    Guenter Roeck <linux@roeck-us.net>
 -L:    linux-hwmon@vger.kernel.org
 -S:    Maintained
 -F:    Documentation/hwmon/max16065.rst
 -F:    drivers/hwmon/max16065.c
 -
  MAX2175 SDR TUNER DRIVER
  M:    Ramesh Shanmugasundaram <rashanmu@gmail.com>
  L:    linux-media@vger.kernel.org
@@@ -13200,6 -13138,15 +13200,6 @@@ F:  Documentation/userspace-api/media/dr
  F:    drivers/media/i2c/max2175*
  F:    include/uapi/linux/max2175.h
  
 -MAX31827 TEMPERATURE SWITCH DRIVER
 -M:    Daniel Matyas <daniel.matyas@analog.com>
 -L:    linux-hwmon@vger.kernel.org
 -S:    Supported
 -W:    https://ez.analog.com/linux-software-drivers
 -F:    Documentation/devicetree/bindings/hwmon/adi,max31827.yaml
 -F:    Documentation/hwmon/max31827.rst
 -F:    drivers/hwmon/max31827.c
 -
  MAX31335 RTC DRIVER
  M:    Antoniu Miclaus <antoniu.miclaus@analog.com>
  L:    linux-rtc@vger.kernel.org
@@@ -13214,6 -13161,15 +13214,6 @@@ S:  Orpha
  F:    Documentation/hwmon/max6650.rst
  F:    drivers/hwmon/max6650.c
  
 -MAX6697 HARDWARE MONITOR DRIVER
 -M:    Guenter Roeck <linux@roeck-us.net>
 -L:    linux-hwmon@vger.kernel.org
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/hwmon/max6697.txt
 -F:    Documentation/hwmon/max6697.rst
 -F:    drivers/hwmon/max6697.c
 -F:    include/linux/platform_data/max6697.h
 -
  MAX9286 QUAD GMSL DESERIALIZER DRIVER
  M:    Jacopo Mondi <jacopo+renesas@jmondi.org>
  M:    Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
@@@ -14059,7 -14015,7 +14059,7 @@@ F:   include/uapi/rdma/mlx5-abi.
  
  MELLANOX MLX5 VDPA DRIVER
  M:    Dragos Tatulea <dtatulea@nvidia.com>
 -L:    virtualization@lists.linux-foundation.org
 +L:    virtualization@lists.linux.dev
  S:    Supported
  F:    drivers/vdpa/mlx5/
  
@@@ -14145,35 -14101,15 +14145,35 @@@ T:        git git://git.kernel.org/pub/scm/lin
  T:    quilt git://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new
  F:    include/linux/gfp.h
  F:    include/linux/gfp_types.h
 +F:    include/linux/memfd.h
 +F:    include/linux/memory.h
  F:    include/linux/memory_hotplug.h
 +F:    include/linux/memory-tiers.h
 +F:    include/linux/mempolicy.h
 +F:    include/linux/mempool.h
 +F:    include/linux/memremap.h
  F:    include/linux/mm.h
 +F:    include/linux/mm_*.h
  F:    include/linux/mmzone.h
 +F:    include/linux/mmu_notifier.h
  F:    include/linux/pagewalk.h
  F:    include/linux/rmap.h
  F:    include/trace/events/ksm.h
  F:    mm/
  F:    tools/mm/
  F:    tools/testing/selftests/mm/
 +N:    include/linux/page[-_]*
 +
 +MEMORY MAPPING
 +M:    Andrew Morton <akpm@linux-foundation.org>
 +R:    Liam R. Howlett <Liam.Howlett@oracle.com>
 +R:    Vlastimil Babka <vbabka@suse.cz>
 +R:    Lorenzo Stoakes <lstoakes@gmail.com>
 +L:    linux-mm@kvack.org
 +S:    Maintained
 +W:    http://www.linux-mm.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
 +F:    mm/mmap.c
  
  MEMORY TECHNOLOGY DEVICES (MTD)
  M:    Miquel Raynal <miquel.raynal@bootlin.com>
@@@ -14433,7 -14369,7 +14433,7 @@@ MICROCHIP MCP16502 PMIC DRIVE
  M:    Claudiu Beznea <claudiu.beznea@tuxon.dev>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Supported
 -F:    Documentation/devicetree/bindings/regulator/mcp16502-regulator.txt
 +F:    Documentation/devicetree/bindings/regulator/microchip,mcp16502.yaml
  F:    drivers/regulator/mcp16502.c
  
  MICROCHIP MCP3564 ADC DRIVER
@@@ -14628,14 -14564,6 +14628,14 @@@ F: Documentation/driver-api/surface_agg
  F:    drivers/platform/surface/surface_dtx.c
  F:    include/uapi/linux/surface_aggregator/dtx.h
  
 +MICROSOFT SURFACE SENSOR FAN DRIVER
 +M:    Maximilian Luz <luzmaximilian@gmail.com>
 +M:    Ivor Wanders <ivor@iwanders.net>
 +L:    linux-hwmon@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/hwmon/surface_fan.rst
 +F:    drivers/hwmon/surface_fan.c
 +
  MICROSOFT SURFACE GPE LID SUPPORT DRIVER
  M:    Maximilian Luz <luzmaximilian@gmail.com>
  L:    platform-driver-x86@vger.kernel.org
@@@ -15140,6 -15068,15 +15140,6 @@@ M:  Samuel Mendoza-Jonas <sam@mendozajon
  S:    Maintained
  F:    net/ncsi/
  
 -NCT6775 HARDWARE MONITOR DRIVER - CORE & PLATFORM DRIVER
 -M:    Guenter Roeck <linux@roeck-us.net>
 -L:    linux-hwmon@vger.kernel.org
 -S:    Maintained
 -F:    Documentation/hwmon/nct6775.rst
 -F:    drivers/hwmon/nct6775-core.c
 -F:    drivers/hwmon/nct6775-platform.c
 -F:    drivers/hwmon/nct6775.h
 -
  NCT6775 HARDWARE MONITOR DRIVER - I2C DRIVER
  M:    Zev Weiss <zev@bewilderbeest.net>
  L:    linux-hwmon@vger.kernel.org
@@@ -15151,7 -15088,6 +15151,7 @@@ NETDEVSI
  M:    Jakub Kicinski <kuba@kernel.org>
  S:    Maintained
  F:    drivers/net/netdevsim/*
 +F:    tools/testing/selftests/drivers/net/netdevsim/*
  
  NETEM NETWORK EMULATOR
  M:    Stephen Hemminger <stephen@networkplumber.org>
@@@ -15306,8 -15242,6 +15306,8 @@@ F:   Documentation/networking
  F:    Documentation/networking/net_cachelines/
  F:    Documentation/process/maintainer-netdev.rst
  F:    Documentation/userspace-api/netlink/
 +F:    include/linux/framer/framer-provider.h
 +F:    include/linux/framer/framer.h
  F:    include/linux/in.h
  F:    include/linux/indirect_call_wrapper.h
  F:    include/linux/net.h
@@@ -15501,7 -15435,6 +15501,6 @@@ M:   Ryusuke Konishi <konishi.ryusuke@gma
  L:    linux-nilfs@vger.kernel.org
  S:    Supported
  W:    https://nilfs.sourceforge.io/
- W:    https://nilfs.osdn.jp/
  T:    git https://github.com/konis/nilfs2.git
  F:    Documentation/filesystems/nilfs2.rst
  F:    fs/nilfs2/
@@@ -15642,6 -15575,16 +15641,6 @@@ W:  https://github.com/davejiang/linux/w
  T:    git https://github.com/davejiang/linux.git
  F:    drivers/ntb/hw/intel/
  
 -NTFS FILESYSTEM
 -M:    Anton Altaparmakov <anton@tuxera.com>
 -R:    Namjae Jeon <linkinjeon@kernel.org>
 -L:    linux-ntfs-dev@lists.sourceforge.net
 -S:    Supported
 -W:    http://www.tuxera.com/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/aia21/ntfs.git
 -F:    Documentation/filesystems/ntfs.rst
 -F:    fs/ntfs/
 -
  NTFS3 FILESYSTEM
  M:    Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
  L:    ntfs3@lists.linux.dev
@@@ -15770,7 -15713,7 +15769,7 @@@ F:   drivers/iio/gyro/fxas21002c_spi.
  NXP i.MX 7D/6SX/6UL/93 AND VF610 ADC DRIVER
  M:    Haibo Chen <haibo.chen@nxp.com>
  L:    linux-iio@vger.kernel.org
 -L:    linux-imx@nxp.com
 +L:    imx@lists.linux.dev
  S:    Maintained
  F:    Documentation/devicetree/bindings/iio/adc/fsl,imx7d-adc.yaml
  F:    Documentation/devicetree/bindings/iio/adc/fsl,vf610-adc.yaml
@@@ -15807,7 -15750,7 +15806,7 @@@ F:   drivers/gpu/drm/imx/dcss
  NXP i.MX 8QXP ADC DRIVER
  M:    Cai Huoqing <cai.huoqing@linux.dev>
  M:    Haibo Chen <haibo.chen@nxp.com>
 -L:    linux-imx@nxp.com
 +L:    imx@lists.linux.dev
  L:    linux-iio@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/iio/adc/nxp,imx8qxp-adc.yaml
@@@ -15815,7 -15758,7 +15814,7 @@@ F:   drivers/iio/adc/imx8qxp-adc.
  
  NXP i.MX 8QXP/8QM JPEG V4L2 DRIVER
  M:    Mirela Rabulea <mirela.rabulea@nxp.com>
 -R:    NXP Linux Team <linux-imx@nxp.com>
 +L:    imx@lists.linux.dev
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/media/nxp,imx8-jpeg.yaml
@@@ -15825,7 -15768,7 +15824,7 @@@ NXP i.MX CLOCK DRIVER
  M:    Abel Vesa <abelvesa@kernel.org>
  R:    Peng Fan <peng.fan@nxp.com>
  L:    linux-clk@vger.kernel.org
 -L:    linux-imx@nxp.com
 +L:    imx@lists.linux.dev
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/abelvesa/linux.git clk/imx
  F:    Documentation/devicetree/bindings/clock/imx*
@@@ -15895,14 -15838,6 +15894,14 @@@ S: Maintaine
  F:    Documentation/hwmon/nzxt-kraken2.rst
  F:    drivers/hwmon/nzxt-kraken2.c
  
 +NZXT-KRAKEN3 HARDWARE MONITORING DRIVER
 +M:    Jonas Malaco <jonas@protocubo.io>
 +M:    Aleksa Savic <savicaleksa83@gmail.com>
 +L:    linux-hwmon@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/hwmon/nzxt-kraken3.rst
 +F:    drivers/hwmon/nzxt-kraken3.c
 +
  NZXT-SMART2 HARDWARE MONITORING DRIVER
  M:    Aleksandr Mezin <mezin.alexander@gmail.com>
  L:    linux-hwmon@vger.kernel.org
@@@ -16794,7 -16729,6 +16793,7 @@@ F:   drivers/pci/controller/dwc/*layersca
  PCI DRIVER FOR FU740
  M:    Paul Walmsley <paul.walmsley@sifive.com>
  M:    Greentime Hu <greentime.hu@sifive.com>
 +M:    Samuel Holland <samuel.holland@sifive.com>
  L:    linux-pci@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/pci/sifive,fu740-pcie.yaml
@@@ -17029,6 -16963,7 +17028,6 @@@ F:   include/asm-generic/pci
  F:    include/linux/of_pci.h
  F:    include/linux/pci*
  F:    include/uapi/linux/pci*
 -F:    lib/pci*
  
  PCIE DRIVER FOR AMAZON ANNAPURNA LABS
  M:    Jonathan Chocron <jonnyc@amazon.com>
@@@ -17333,12 -17268,9 +17332,12 @@@ M: Shawn Guo <shawnguo@kernel.org
  M:    Jacky Bai <ping.bai@nxp.com>
  R:    Pengutronix Kernel Team <kernel@pengutronix.de>
  L:    linux-gpio@vger.kernel.org
 +L:    NXP S32 Linux Team <s32@nxp.com>
  S:    Maintained
  F:    Documentation/devicetree/bindings/pinctrl/fsl,*
 +F:    Documentation/devicetree/bindings/pinctrl/nxp,s32*
  F:    drivers/pinctrl/freescale/
 +F:    drivers/pinctrl/nxp/
  
  PIN CONTROLLER - INTEL
  M:    Mika Westerberg <mika.westerberg@linux.intel.com>
@@@ -17392,6 -17324,14 +17391,6 @@@ S:  Supporte
  F:    drivers/gpio/gpio-sama5d2-piobu.c
  F:    drivers/pinctrl/pinctrl-at91*
  
 -PIN CONTROLLER - NXP S32
 -M:    Chester Lin <clin@suse.com>
 -R:    NXP S32 Linux Team <s32@nxp.com>
 -L:    linux-gpio@vger.kernel.org
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/pinctrl/nxp,s32*
 -F:    drivers/pinctrl/nxp/
 -
  PIN CONTROLLER - QUALCOMM
  M:    Bjorn Andersson <andersson@kernel.org>
  L:    linux-arm-msm@vger.kernel.org
@@@ -17408,6 -17348,7 +17407,6 @@@ F:   Documentation/devicetree/bindings/pi
  F:    drivers/pinctrl/renesas/
  
  PIN CONTROLLER - SAMSUNG
 -M:    Tomasz Figa <tomasz.figa@gmail.com>
  M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
  R:    Alim Akhtar <alim.akhtar@samsung.com>
@@@ -17494,6 -17435,35 +17493,6 @@@ S:  Maintaine
  F:    Documentation/hwmon/pm6764tr.rst
  F:    drivers/hwmon/pmbus/pm6764tr.c
  
 -PMBUS HARDWARE MONITORING DRIVERS
 -M:    Guenter Roeck <linux@roeck-us.net>
 -L:    linux-hwmon@vger.kernel.org
 -S:    Maintained
 -W:    http://hwmon.wiki.kernel.org/
 -W:    http://www.roeck-us.net/linux/drivers/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git
 -F:    Documentation/devicetree/bindings/hwmon/ltc2978.txt
 -F:    Documentation/devicetree/bindings/hwmon/max31785.txt
 -F:    Documentation/hwmon/adm1275.rst
 -F:    Documentation/hwmon/ibm-cffps.rst
 -F:    Documentation/hwmon/ir35221.rst
 -F:    Documentation/hwmon/lm25066.rst
 -F:    Documentation/hwmon/ltc2978.rst
 -F:    Documentation/hwmon/ltc3815.rst
 -F:    Documentation/hwmon/max16064.rst
 -F:    Documentation/hwmon/max20751.rst
 -F:    Documentation/hwmon/max31785.rst
 -F:    Documentation/hwmon/max34440.rst
 -F:    Documentation/hwmon/max8688.rst
 -F:    Documentation/hwmon/pmbus-core.rst
 -F:    Documentation/hwmon/pmbus.rst
 -F:    Documentation/hwmon/tps40422.rst
 -F:    Documentation/hwmon/ucd9000.rst
 -F:    Documentation/hwmon/ucd9200.rst
 -F:    Documentation/hwmon/zl6100.rst
 -F:    drivers/hwmon/pmbus/
 -F:    include/linux/pmbus.h
 -
  PMC SIERRA MaxRAID DRIVER
  L:    linux-scsi@vger.kernel.org
  S:    Orphan
@@@ -17528,7 -17498,6 +17527,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    fs/timerfd.c
  F:    include/linux/time_namespace.h
  F:    include/linux/timer*
 +F:    include/trace/events/timer*
  F:    kernel/time/*timer*
  F:    kernel/time/namespace.c
  
@@@ -17565,7 -17534,6 +17564,7 @@@ F:   Documentation/devicetree/bindings/po
  F:    drivers/power/supply/
  F:    include/linux/power/
  F:    include/linux/power_supply.h
 +F:    tools/testing/selftests/power_supply/
  
  POWERNV OPERATOR PANEL LCD DISPLAY DRIVER
  M:    Suraj Jitindar Singh <sjitindarsingh@gmail.com>
@@@ -17715,13 -17683,6 +17714,13 @@@ F: fs/pstore
  F:    include/linux/pstore*
  K:    \b(pstore|ramoops)
  
 +PT5161L HARDWARE MONITOR DRIVER
 +M:    Cosmo Chou <cosmo.chou@quantatw.com>
 +L:    linux-hwmon@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/hwmon/pt5161l.rst
 +F:    drivers/hwmon/pt5161l.c
 +
  PTP HARDWARE CLOCK SUPPORT
  M:    Richard Cochran <richardcochran@gmail.com>
  L:    netdev@vger.kernel.org
@@@ -18020,34 -17981,33 +18019,34 @@@ F:        drivers/media/tuners/qt1010
  
  QUALCOMM ATH12K WIRELESS DRIVER
  M:    Kalle Valo <kvalo@kernel.org>
 -M:    Jeff Johnson <quic_jjohnson@quicinc.com>
 +M:    Jeff Johnson <jjohnson@kernel.org>
  L:    ath12k@lists.infradead.org
  S:    Supported
  W:    https://wireless.wiki.kernel.org/en/users/Drivers/ath12k
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
  F:    drivers/net/wireless/ath/ath12k/
 +N:    ath12k
  
  QUALCOMM ATHEROS ATH10K WIRELESS DRIVER
  M:    Kalle Valo <kvalo@kernel.org>
 -M:    Jeff Johnson <quic_jjohnson@quicinc.com>
 +M:    Jeff Johnson <jjohnson@kernel.org>
  L:    ath10k@lists.infradead.org
  S:    Supported
  W:    https://wireless.wiki.kernel.org/en/users/Drivers/ath10k
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
 -F:    Documentation/devicetree/bindings/net/wireless/qcom,ath10k.yaml
  F:    drivers/net/wireless/ath/ath10k/
 +N:    ath10k
  
  QUALCOMM ATHEROS ATH11K WIRELESS DRIVER
  M:    Kalle Valo <kvalo@kernel.org>
 -M:    Jeff Johnson <quic_jjohnson@quicinc.com>
 +M:    Jeff Johnson <jjohnson@kernel.org>
  L:    ath11k@lists.infradead.org
  S:    Supported
  W:    https://wireless.wiki.kernel.org/en/users/Drivers/ath11k
  B:    https://wireless.wiki.kernel.org/en/users/Drivers/ath11k/bugreport
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
 -F:    Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml
  F:    drivers/net/wireless/ath/ath11k/
 +N:    ath11k
  
  QUALCOMM ATHEROS ATH9K WIRELESS DRIVER
  M:    Toke Høiland-Jørgensen <toke@toke.dk>
@@@ -18058,13 -18018,6 +18057,13 @@@ T: git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/net/wireless/qca,ath9k.yaml
  F:    drivers/net/wireless/ath/ath9k/
  
 +QUALCOMM ATHEROS QCA7K ETHERNET DRIVER
 +M:    Stefan Wahren <wahrenst@gmx.net>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/net/qca,qca7000.txt
 +F:    drivers/net/ethernet/qualcomm/qca*
 +
  QUALCOMM BAM-DMUX WWAN NETWORK DRIVER
  M:    Stephan Gerhold <stephan@gerhold.net>
  L:    netdev@vger.kernel.org
@@@ -18408,17 -18361,11 +18407,17 @@@ M:        Tony Luck <tony.luck@intel.com
  M:    Borislav Petkov <bp@alien8.de>
  L:    linux-edac@vger.kernel.org
  S:    Maintained
 -F:    Documentation/admin-guide/ras.rst
 +F:    Documentation/admin-guide/RAS
  F:    drivers/ras/
  F:    include/linux/ras.h
  F:    include/ras/ras_event.h
  
 +RAS FRU MEMORY POISON MANAGER (FMPM)
 +M:    Yazen Ghannam <Yazen.Ghannam@amd.com>
 +L:    linux-edac@vger.kernel.org
 +S:    Maintained
 +F:    drivers/ras/amd/fmpm.c
 +
  RC-CORE / LIRC FRAMEWORK
  M:    Sean Young <sean@mess.org>
  L:    linux-media@vger.kernel.org
@@@ -18908,7 -18855,6 +18907,7 @@@ F:   Documentation/devicetree/bindings/ri
  F:    arch/riscv/boot/dts/
  X:    arch/riscv/boot/dts/allwinner/
  X:    arch/riscv/boot/dts/renesas/
 +X:    arch/riscv/boot/dts/sophgo/
  
  RISC-V PMU DRIVERS
  M:    Atish Patra <atishp@atishpatra.org>
@@@ -19157,7 -19103,6 +19156,7 @@@ F:   Documentation/rust
  F:    rust/
  F:    samples/rust/
  F:    scripts/*rust*
 +F:    tools/testing/selftests/rust/
  K:    \b(?i:rust)\b
  
  RXRPC SOCKETS (AF_RXRPC)
@@@ -19451,6 -19396,7 +19450,6 @@@ F:   drivers/media/platform/samsung/exyno
  SAMSUNG SOC CLOCK DRIVERS
  M:    Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
 -M:    Tomasz Figa <tomasz.figa@gmail.com>
  M:    Chanwoo Choi <cw00.choi@samsung.com>
  R:    Alim Akhtar <alim.akhtar@samsung.com>
  L:    linux-samsung-soc@vger.kernel.org
@@@ -19692,7 -19638,7 +19691,7 @@@ F:   drivers/mmc/host/sdhci-of-at91.
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) NXP i.MX DRIVER
  M:    Haibo Chen <haibo.chen@nxp.com>
 -L:    linux-imx@nxp.com
 +L:    imx@lists.linux.dev
  L:    linux-mmc@vger.kernel.org
  S:    Maintained
  F:    drivers/mmc/host/sdhci-esdhc-imx.c
@@@ -20027,15 -19973,36 +20026,15 @@@ S:        Maintaine
  F:    drivers/watchdog/simatic-ipc-wdt.c
  
  SIFIVE DRIVERS
 -M:    Palmer Dabbelt <palmer@dabbelt.com>
  M:    Paul Walmsley <paul.walmsley@sifive.com>
 +M:    Samuel Holland <samuel.holland@sifive.com>
  L:    linux-riscv@lists.infradead.org
  S:    Supported
 +F:    drivers/dma/sf-pdma/
  N:    sifive
 +K:    fu[57]40
  K:    [^@]sifive
  
 -SIFIVE CACHE DRIVER
 -M:    Conor Dooley <conor@kernel.org>
 -L:    linux-riscv@lists.infradead.org
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/cache/sifive,ccache0.yaml
 -F:    drivers/cache/sifive_ccache.c
 -
 -SIFIVE FU540 SYSTEM-ON-CHIP
 -M:    Paul Walmsley <paul.walmsley@sifive.com>
 -M:    Palmer Dabbelt <palmer@dabbelt.com>
 -L:    linux-riscv@lists.infradead.org
 -S:    Supported
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pjw/sifive.git
 -N:    fu540
 -K:    fu540
 -
 -SIFIVE PDMA DRIVER
 -M:    Green Wan <green.wan@sifive.com>
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/dma/sifive,fu540-c000-pdma.yaml
 -F:    drivers/dma/sf-pdma/
 -
 -
  SILEAD TOUCHSCREEN DRIVER
  M:    Hans de Goede <hdegoede@redhat.com>
  L:    linux-input@vger.kernel.org
@@@ -20244,8 -20211,8 +20243,8 @@@ F:   Documentation/devicetree/bindings/ne
  F:    drivers/net/ethernet/socionext/sni_ave.c
  
  SOCIONEXT (SNI) NETSEC NETWORK DRIVER
 -M:    Jassi Brar <jaswinder.singh@linaro.org>
  M:    Ilias Apalodimas <ilias.apalodimas@linaro.org>
 +M:    Masahisa Kojima <kojima.masahisa@socionext.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/net/socionext,synquacer-netsec.yaml
@@@ -20486,13 -20453,12 +20485,13 @@@ F:        drivers/char/sonypi.
  F:    drivers/platform/x86/sony-laptop.c
  F:    include/linux/sony-laptop.h
  
 -SOPHGO DEVICETREES
 -M:    Chao Wei <chao.wei@sophgo.com>
 +SOPHGO DEVICETREES and DRIVERS
  M:    Chen Wang <unicorn_wang@outlook.com>
 +M:    Inochi Amaoto <inochiama@outlook.com>
 +T:    git https://github.com/sophgo/linux.git
  S:    Maintained
 -F:    arch/riscv/boot/dts/sophgo/
 -F:    Documentation/devicetree/bindings/riscv/sophgo.yaml
 +N:    sophgo
 +K:    sophgo
  
  SOUND
  M:    Jaroslav Kysela <perex@perex.cz>
@@@ -20526,12 -20492,6 +20525,12 @@@ F: include/uapi/sound/compress_
  F:    sound/core/compress_offload.c
  F:    sound/soc/soc-compress.c
  
 +SOUND - CORE KUNIT TEST
 +M:    Ivan Orlov <ivan.orlov0322@gmail.com>
 +L:    linux-sound@vger.kernel.org
 +S:    Supported
 +F:    sound/core/sound_kunit.c
 +
  SOUND - DMAENGINE HELPERS
  M:    Lars-Peter Clausen <lars@metafoo.de>
  S:    Supported
@@@ -20984,13 -20944,6 +20983,13 @@@ S: Maintaine
  T:    git https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/
  F:    Documentation/devicetree/bindings/soc/starfive/
  
 +STARFIVE STARLINK PMU DRIVER
 +M:    Ji Sheng Teoh <jisheng.teoh@starfivetech.com>
 +S:    Maintained
 +F:    Documentation/admin-guide/perf/starfive_starlink_pmu.rst
 +F:    Documentation/devicetree/bindings/perf/starfive,jh8100-starlink-pmu.yaml
 +F:    drivers/perf/starfive_starlink_pmu.c
 +
  STARFIVE TRNG DRIVER
  M:    Jia Jie Ho <jiajie.ho@starfivetech.com>
  S:    Supported
@@@ -21012,12 -20965,6 +21011,12 @@@ F: Documentation/devicetree/bindings/ph
  F:    drivers/phy/starfive/phy-jh7110-pcie.c
  F:    drivers/phy/starfive/phy-jh7110-usb.c
  
 +STARFIVE JH8100 EXTERNAL INTERRUPT CONTROLLER DRIVER
 +M:    Changhuang Liang <changhuang.liang@starfivetech.com>
 +S:    Supported
 +F:    Documentation/devicetree/bindings/interrupt-controller/starfive,jh8100-intc.yaml
 +F:    drivers/irqchip/irq-starfive-jh8100-intc.c
 +
  STATIC BRANCH/CALL
  M:    Peter Zijlstra <peterz@infradead.org>
  M:    Josh Poimboeuf <jpoimboe@kernel.org>
@@@ -21383,7 -21330,6 +21382,7 @@@ F:   drivers/clk/clk-sc[mp]i.
  F:    drivers/cpufreq/sc[mp]i-cpufreq.c
  F:    drivers/firmware/arm_scmi/
  F:    drivers/firmware/arm_scpi.c
 +F:    drivers/hwmon/scmi-hwmon.c
  F:    drivers/pmdomain/arm/
  F:    drivers/powercap/arm_scmi_powercap.c
  F:    drivers/regulator/scmi-regulator.c
@@@ -21578,7 -21524,7 +21577,7 @@@ F:   tools/testing/selftests/drivers/net/
  TECHNICAL ADVISORY BOARD PROCESS DOCS
  M:    "Theodore Ts'o" <tytso@mit.edu>
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 -L:    tech-board-discuss@lists.linux-foundation.org
 +L:    tech-board-discuss@lists.linux.dev
  S:    Maintained
  F:    Documentation/process/contribution-maturity-model.rst
  F:    Documentation/process/researcher-guidelines.rst
@@@ -22222,6 -22168,22 +22221,6 @@@ F:  drivers/mmc/host/renesas_sdhi
  F:    drivers/mmc/host/tmio_mmc*
  F:    include/linux/mfd/tmio.h
  
 -TMP401 HARDWARE MONITOR DRIVER
 -M:    Guenter Roeck <linux@roeck-us.net>
 -L:    linux-hwmon@vger.kernel.org
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml
 -F:    Documentation/hwmon/tmp401.rst
 -F:    drivers/hwmon/tmp401.c
 -
 -TMP464 HARDWARE MONITOR DRIVER
 -M:    Guenter Roeck <linux@roeck-us.net>
 -L:    linux-hwmon@vger.kernel.org
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/hwmon/ti,tmp464.yaml
 -F:    Documentation/hwmon/tmp464.rst
 -F:    drivers/hwmon/tmp464.c
 -
  TMP513 HARDWARE MONITOR DRIVER
  M:    Eric Tremblay <etremblay@distech-controls.com>
  L:    linux-hwmon@vger.kernel.org
@@@ -22526,23 -22488,6 +22525,23 @@@ F: Documentation/block/ublk.rs
  F:    drivers/block/ublk_drv.c
  F:    include/uapi/linux/ublk_cmd.h
  
 +UBSAN
 +M:    Kees Cook <keescook@chromium.org>
 +R:    Marco Elver <elver@google.com>
 +R:    Andrey Konovalov <andreyknvl@gmail.com>
 +R:    Andrey Ryabinin <ryabinin.a.a@gmail.com>
 +L:    kasan-dev@googlegroups.com
 +L:    linux-hardening@vger.kernel.org
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
 +F:    Documentation/dev-tools/ubsan.rst
 +F:    include/linux/ubsan.h
 +F:    lib/Kconfig.ubsan
 +F:    lib/test_ubsan.c
 +F:    lib/ubsan.c
 +F:    scripts/Makefile.ubsan
 +K:    \bARCH_HAS_UBSAN\b
 +
  UCLINUX (M68KNOMMU AND COLDFIRE)
  M:    Greg Ungerer <gerg@linux-m68k.org>
  L:    linux-m68k@lists.linux-m68k.org
@@@ -22932,8 -22877,9 +22931,8 @@@ S:   Maintaine
  F:    drivers/usb/typec/mux/pi3usb30532.c
  
  USB TYPEC PORT CONTROLLER DRIVERS
 -M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-usb@vger.kernel.org
 -S:    Maintained
 +S:    Orphan
  F:    drivers/usb/typec/tcpm/
  
  USB UHCI DRIVER
@@@ -23145,7 -23091,7 +23144,7 @@@ F:   drivers/vfio/pci/mlx5
  VFIO VIRTIO PCI DRIVER
  M:    Yishai Hadas <yishaih@nvidia.com>
  L:    kvm@vger.kernel.org
 -L:    virtualization@lists.linux-foundation.org
 +L:    virtualization@lists.linux.dev
  S:    Maintained
  F:    drivers/vfio/pci/virtio
  
@@@ -24189,13 -24135,14 +24188,13 @@@ F:        drivers/net/ethernet/xilinx/xilinx_a
  
  XILINX CAN DRIVER
  M:    Appana Durga Kedareswara rao <appana.durga.rao@xilinx.com>
 -R:    Naga Sureshkumar Relli <naga.sureshkumar.relli@xilinx.com>
  L:    linux-can@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/net/can/xilinx,can.yaml
  F:    drivers/net/can/xilinx_can.c
  
  XILINX EVENT MANAGEMENT DRIVER
 -M:    Abhyuday Godhasara <abhyuday.godhasara@xilinx.com>
 +M:    Michal Simek <michal.simek@amd.com>
  S:    Maintained
  F:    drivers/soc/xilinx/xlnx_event_manager.c
  F:    include/linux/firmware/xlnx-event-manager.h
@@@ -24457,7 -24404,6 +24456,7 @@@ ZSWAP COMPRESSED SWAP CACHIN
  M:    Johannes Weiner <hannes@cmpxchg.org>
  M:    Yosry Ahmed <yosryahmed@google.com>
  M:    Nhat Pham <nphamcs@gmail.com>
 +R:    Chengming Zhou <chengming.zhou@linux.dev>
  L:    linux-mm@kvack.org
  S:    Maintained
  F:    Documentation/admin-guide/mm/zswap.rst
@@@ -24465,7 -24411,6 +24464,7 @@@ F:   include/linux/zpool.
  F:    include/linux/zswap.h
  F:    mm/zpool.c
  F:    mm/zswap.c
 +F:    tools/testing/selftests/cgroup/test_zswap.c
  
  THE REST
  M:    Linus Torvalds <torvalds@linux-foundation.org>
diff --combined Makefile
+++ b/Makefile
@@@ -2,7 -2,7 +2,7 @@@
  VERSION = 6
  PATCHLEVEL = 8
  SUBLEVEL = 0
 -EXTRAVERSION = -rc5
 +EXTRAVERSION =
  NAME = Hurr durr I'ma ninja sloth
  
  # *DOCUMENTATION*
@@@ -561,6 -561,7 +561,6 @@@ KBUILD_CFLAGS += -fno-strict-aliasin
  
  KBUILD_CPPFLAGS := -D__KERNEL__
  KBUILD_RUSTFLAGS := $(rust_common_flags) \
 -                  --target=$(objtree)/scripts/target.json \
                    -Cpanic=abort -Cembed-bitcode=n -Clto=n \
                    -Cforce-unwind-tables=n -Ccodegen-units=1 \
                    -Csymbol-mangling-version=v0 \
@@@ -950,14 -951,6 +950,6 @@@ CC_FLAGS_LTO      += -fvisibility=hidde
  
  # Limit inlining across translation units to reduce binary size
  KBUILD_LDFLAGS += -mllvm -import-instr-limit=5
- # Check for frame size exceeding threshold during prolog/epilog insertion
- # when using lld < 13.0.0.
- ifneq ($(CONFIG_FRAME_WARN),0)
- ifeq ($(call test-lt, $(CONFIG_LLD_VERSION), 130000),y)
- KBUILD_LDFLAGS        += -plugin-opt=-warn-stack-size=$(CONFIG_FRAME_WARN)
- endif
- endif
  endif
  
  ifdef CONFIG_LTO
@@@ -1200,7 -1193,7 +1192,7 @@@ prepare0: archprepar
  # All the preparing..
  prepare: prepare0
  ifdef CONFIG_RUST
 -      $(Q)$(CONFIG_SHELL) $(srctree)/scripts/rust_is_available.sh
 +      +$(Q)$(CONFIG_SHELL) $(srctree)/scripts/rust_is_available.sh
        $(Q)$(MAKE) $(build)=rust
  endif
  
@@@ -1710,7 -1703,7 +1702,7 @@@ $(DOC_TARGETS)
  # "Is Rust available?" target
  PHONY += rustavailable
  rustavailable:
 -      $(Q)$(CONFIG_SHELL) $(srctree)/scripts/rust_is_available.sh && echo "Rust is available!"
 +      +$(Q)$(CONFIG_SHELL) $(srctree)/scripts/rust_is_available.sh && echo "Rust is available!"
  
  # Documentation target
  #
diff --combined arch/arm64/Kconfig
@@@ -107,7 -107,7 +107,7 @@@ config ARM6
        select ARCH_WANT_LD_ORPHAN_WARN
        select ARCH_WANTS_NO_INSTR
        select ARCH_WANTS_THP_SWAP if ARM64_4K_PAGES
 -      select ARCH_HAS_UBSAN_SANITIZE_ALL
 +      select ARCH_HAS_UBSAN
        select ARM_AMBA
        select ARM_ARCH_TIMER
        select ARM_GIC
        select HAVE_ARCH_HUGE_VMAP
        select HAVE_ARCH_JUMP_LABEL
        select HAVE_ARCH_JUMP_LABEL_RELATIVE
 -      select HAVE_ARCH_KASAN if !(ARM64_16K_PAGES && ARM64_VA_BITS_48)
 +      select HAVE_ARCH_KASAN
        select HAVE_ARCH_KASAN_VMALLOC if HAVE_ARCH_KASAN
        select HAVE_ARCH_KASAN_SW_TAGS if HAVE_ARCH_KASAN
        select HAVE_ARCH_KASAN_HW_TAGS if (HAVE_ARCH_KASAN && ARM64_MTE)
                if DYNAMIC_FTRACE_WITH_ARGS && DYNAMIC_FTRACE_WITH_CALL_OPS
        select HAVE_DYNAMIC_FTRACE_WITH_CALL_OPS \
                if (DYNAMIC_FTRACE_WITH_ARGS && !CFI_CLANG && \
 -                  !CC_OPTIMIZE_FOR_SIZE)
 +                  (CC_IS_CLANG || !CC_OPTIMIZE_FOR_SIZE))
        select FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY \
                if DYNAMIC_FTRACE_WITH_ARGS
        select HAVE_SAMPLE_FTRACE_DIRECT
        select HAVE_FUNCTION_ARG_ACCESS_API
        select MMU_GATHER_RCU_TABLE_FREE
        select HAVE_RSEQ
 +      select HAVE_RUST if CPU_LITTLE_ENDIAN
        select HAVE_STACKPROTECTOR
        select HAVE_SYSCALL_TRACEPOINTS
        select HAVE_KPROBES
@@@ -278,21 -277,27 +278,21 @@@ config 64BI
  config MMU
        def_bool y
  
 -config ARM64_PAGE_SHIFT
 -      int
 -      default 16 if ARM64_64K_PAGES
 -      default 14 if ARM64_16K_PAGES
 -      default 12
 -
  config ARM64_CONT_PTE_SHIFT
        int
 -      default 5 if ARM64_64K_PAGES
 -      default 7 if ARM64_16K_PAGES
 +      default 5 if PAGE_SIZE_64KB
 +      default 7 if PAGE_SIZE_16KB
        default 4
  
  config ARM64_CONT_PMD_SHIFT
        int
 -      default 5 if ARM64_64K_PAGES
 -      default 5 if ARM64_16K_PAGES
 +      default 5 if PAGE_SIZE_64KB
 +      default 5 if PAGE_SIZE_16KB
        default 4
  
  config ARCH_MMAP_RND_BITS_MIN
 -      default 14 if ARM64_64K_PAGES
 -      default 16 if ARM64_16K_PAGES
 +      default 14 if PAGE_SIZE_64KB
 +      default 16 if PAGE_SIZE_16KB
        default 18
  
  # max bits determined by the following formula:
@@@ -363,9 -368,7 +363,9 @@@ config PGTABLE_LEVEL
        default 3 if ARM64_64K_PAGES && (ARM64_VA_BITS_48 || ARM64_VA_BITS_52)
        default 3 if ARM64_4K_PAGES && ARM64_VA_BITS_39
        default 3 if ARM64_16K_PAGES && ARM64_VA_BITS_47
 +      default 4 if ARM64_16K_PAGES && (ARM64_VA_BITS_48 || ARM64_VA_BITS_52)
        default 4 if !ARM64_64K_PAGES && ARM64_VA_BITS_48
 +      default 5 if ARM64_4K_PAGES && ARM64_VA_BITS_52
  
  config ARCH_SUPPORTS_UPROBES
        def_bool y
@@@ -379,8 -382,8 +379,8 @@@ config BROKEN_GAS_INS
  config BUILTIN_RETURN_ADDRESS_STRIPS_PAC
        bool
        # Clang's __builtin_return_adddress() strips the PAC since 12.0.0
-       # https://reviews.llvm.org/D75044
-       default y if CC_IS_CLANG && (CLANG_VERSION >= 120000)
+       # https://github.com/llvm/llvm-project/commit/2a96f47c5ffca84cd774ad402cacd137f4bf45e2
+       default y if CC_IS_CLANG
        # GCC's __builtin_return_address() strips the PAC since 11.1.0,
        # and this was backported to 10.2.0, 9.4.0, 8.5.0, but not earlier
        # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94891
  config KASAN_SHADOW_OFFSET
        hex
        depends on KASAN_GENERIC || KASAN_SW_TAGS
 -      default 0xdfff800000000000 if (ARM64_VA_BITS_48 || ARM64_VA_BITS_52) && !KASAN_SW_TAGS
 -      default 0xdfffc00000000000 if ARM64_VA_BITS_47 && !KASAN_SW_TAGS
 +      default 0xdfff800000000000 if (ARM64_VA_BITS_48 || (ARM64_VA_BITS_52 && !ARM64_16K_PAGES)) && !KASAN_SW_TAGS
 +      default 0xdfffc00000000000 if (ARM64_VA_BITS_47 || ARM64_VA_BITS_52) && ARM64_16K_PAGES && !KASAN_SW_TAGS
        default 0xdffffe0000000000 if ARM64_VA_BITS_42 && !KASAN_SW_TAGS
        default 0xdfffffc000000000 if ARM64_VA_BITS_39 && !KASAN_SW_TAGS
        default 0xdffffff800000000 if ARM64_VA_BITS_36 && !KASAN_SW_TAGS
 -      default 0xefff800000000000 if (ARM64_VA_BITS_48 || ARM64_VA_BITS_52) && KASAN_SW_TAGS
 -      default 0xefffc00000000000 if ARM64_VA_BITS_47 && KASAN_SW_TAGS
 +      default 0xefff800000000000 if (ARM64_VA_BITS_48 || (ARM64_VA_BITS_52 && !ARM64_16K_PAGES)) && KASAN_SW_TAGS
 +      default 0xefffc00000000000 if (ARM64_VA_BITS_47 || ARM64_VA_BITS_52) && ARM64_16K_PAGES && KASAN_SW_TAGS
        default 0xeffffe0000000000 if ARM64_VA_BITS_42 && KASAN_SW_TAGS
        default 0xefffffc000000000 if ARM64_VA_BITS_39 && KASAN_SW_TAGS
        default 0xeffffff800000000 if ARM64_VA_BITS_36 && KASAN_SW_TAGS
@@@ -544,8 -547,9 +544,8 @@@ config ARM64_ERRATUM_83207
          If unsure, say Y.
  
  config ARM64_ERRATUM_834220
 -      bool "Cortex-A57: 834220: Stage 2 translation fault might be incorrectly reported in presence of a Stage 1 fault"
 +      bool "Cortex-A57: 834220: Stage 2 translation fault might be incorrectly reported in presence of a Stage 1 fault (rare)"
        depends on KVM
 -      default y
        help
          This option adds an alternative code sequence to work around ARM
          erratum 834220 on Cortex-A57 parts up to r1p2.
          as it depends on the alternative framework, which will only patch
          the kernel if an affected CPU is detected.
  
 -        If unsure, say Y.
 +        If unsure, say N.
  
  config ARM64_ERRATUM_1742098
        bool "Cortex-A57/A72: 1742098: ELR recorded incorrectly on interrupt taken between cryptographic instructions in a sequence"
@@@ -688,7 -692,8 +688,7 @@@ config ARM64_WORKAROUND_REPEAT_TLB
        bool
  
  config ARM64_ERRATUM_2441007
 -      bool "Cortex-A55: Completion of affected memory accesses might not be guaranteed by completion of a TLBI"
 -      default y
 +      bool "Cortex-A55: Completion of affected memory accesses might not be guaranteed by completion of a TLBI (rare)"
        select ARM64_WORKAROUND_REPEAT_TLBI
        help
          This option adds a workaround for ARM Cortex-A55 erratum #2441007.
          Work around this by adding the affected CPUs to the list that needs
          TLB sequences to be done twice.
  
 -        If unsure, say Y.
 +        If unsure, say N.
  
  config ARM64_ERRATUM_1286807
 -      bool "Cortex-A76: Modification of the translation table for a virtual address might lead to read-after-read ordering violation"
 -      default y
 +      bool "Cortex-A76: Modification of the translation table for a virtual address might lead to read-after-read ordering violation (rare)"
        select ARM64_WORKAROUND_REPEAT_TLBI
        help
          This option adds a workaround for ARM Cortex-A76 erratum 1286807.
          invalidated has been observed by other observers. The
          workaround repeats the TLBI+DSB operation.
  
 +        If unsure, say N.
 +
  config ARM64_ERRATUM_1463225
        bool "Cortex-A76: Software Step might prevent interrupt recognition"
        default y
          If unsure, say Y.
  
  config ARM64_ERRATUM_1542419
 -      bool "Neoverse-N1: workaround mis-ordering of instruction fetches"
 -      default y
 +      bool "Neoverse-N1: workaround mis-ordering of instruction fetches (rare)"
        help
          This option adds a workaround for ARM Neoverse-N1 erratum
          1542419.
          Workaround the issue by hiding the DIC feature from EL0. This
          forces user-space to perform cache maintenance.
  
 -        If unsure, say Y.
 +        If unsure, say N.
  
  config ARM64_ERRATUM_1508412
        bool "Cortex-A77: 1508412: workaround deadlock on sequence of NC/Device load and store exclusive or PAR read"
@@@ -926,7 -931,8 +926,7 @@@ config ARM64_ERRATUM_222448
          If unsure, say Y.
  
  config ARM64_ERRATUM_2441009
 -      bool "Cortex-A510: Completion of affected memory accesses might not be guaranteed by completion of a TLBI"
 -      default y
 +      bool "Cortex-A510: Completion of affected memory accesses might not be guaranteed by completion of a TLBI (rare)"
        select ARM64_WORKAROUND_REPEAT_TLBI
        help
          This option adds a workaround for ARM Cortex-A510 erratum #2441009.
          Work around this by adding the affected CPUs to the list that needs
          TLB sequences to be done twice.
  
 -        If unsure, say Y.
 +        If unsure, say N.
  
  config ARM64_ERRATUM_2064142
        bool "Cortex-A510: 2064142: workaround TRBE register writes while disabled"
@@@ -1253,13 -1259,11 +1253,13 @@@ choic
  
  config ARM64_4K_PAGES
        bool "4KB"
 +      select HAVE_PAGE_SIZE_4KB
        help
          This feature enables 4KB pages support.
  
  config ARM64_16K_PAGES
        bool "16KB"
 +      select HAVE_PAGE_SIZE_16KB
        help
          The system will use 16KB pages support. AArch32 emulation
          requires applications compiled with 16K (or a multiple of 16K)
  
  config ARM64_64K_PAGES
        bool "64KB"
 +      select HAVE_PAGE_SIZE_64KB
        help
          This feature enables 64KB pages support (4KB by default)
          allowing only two levels of page tables and faster TLB
@@@ -1278,7 -1281,9 +1278,7 @@@ endchoic
  
  choice
        prompt "Virtual address space size"
 -      default ARM64_VA_BITS_39 if ARM64_4K_PAGES
 -      default ARM64_VA_BITS_47 if ARM64_16K_PAGES
 -      default ARM64_VA_BITS_42 if ARM64_64K_PAGES
 +      default ARM64_VA_BITS_52
        help
          Allows choosing one of multiple possible virtual address
          space sizes. The level of translation table is determined by
  
  config ARM64_VA_BITS_36
        bool "36-bit" if EXPERT
 -      depends on ARM64_16K_PAGES
 +      depends on PAGE_SIZE_16KB
  
  config ARM64_VA_BITS_39
        bool "39-bit"
 -      depends on ARM64_4K_PAGES
 +      depends on PAGE_SIZE_4KB
  
  config ARM64_VA_BITS_42
        bool "42-bit"
 -      depends on ARM64_64K_PAGES
 +      depends on PAGE_SIZE_64KB
  
  config ARM64_VA_BITS_47
        bool "47-bit"
 -      depends on ARM64_16K_PAGES
 +      depends on PAGE_SIZE_16KB
  
  config ARM64_VA_BITS_48
        bool "48-bit"
  
  config ARM64_VA_BITS_52
        bool "52-bit"
 -      depends on ARM64_64K_PAGES && (ARM64_PAN || !ARM64_SW_TTBR0_PAN)
 +      depends on ARM64_PAN || !ARM64_SW_TTBR0_PAN
        help
          Enable 52-bit virtual addressing for userspace when explicitly
          requested via a hint to mmap(). The kernel will also use 52-bit
@@@ -1352,11 -1357,10 +1352,11 @@@ choic
  
  config ARM64_PA_BITS_48
        bool "48-bit"
 +      depends on ARM64_64K_PAGES || !ARM64_VA_BITS_52
  
  config ARM64_PA_BITS_52
 -      bool "52-bit (ARMv8.2)"
 -      depends on ARM64_64K_PAGES
 +      bool "52-bit"
 +      depends on ARM64_64K_PAGES || ARM64_VA_BITS_52
        depends on ARM64_PAN || !ARM64_SW_TTBR0_PAN
        help
          Enable support for a 52-bit physical address space, introduced as
@@@ -1373,10 -1377,6 +1373,10 @@@ config ARM64_PA_BIT
        default 48 if ARM64_PA_BITS_48
        default 52 if ARM64_PA_BITS_52
  
 +config ARM64_LPA2
 +      def_bool y
 +      depends on ARM64_PA_BITS_52 && !ARM64_64K_PAGES
 +
  choice
        prompt "Endianness"
        default CPU_LITTLE_ENDIAN
  
  config CPU_BIG_ENDIAN
        bool "Build big-endian kernel"
-       depends on !LD_IS_LLD || LLD_VERSION >= 130000
        # https://github.com/llvm/llvm-project/commit/1379b150991f70a5782e9a143c2ba5308da1161c
        depends on AS_IS_GNU || AS_VERSION >= 150000
        help
@@@ -1519,7 -1518,7 +1518,7 @@@ config ARCH_SUPPORTS_CRASH_DUM
        def_bool y
  
  config ARCH_HAS_GENERIC_CRASHKERNEL_RESERVATION
 -      def_bool CRASH_CORE
 +      def_bool CRASH_RESERVE
  
  config TRANS_TABLE
        def_bool y
@@@ -2018,8 -2017,6 +2017,6 @@@ config ARM64_BTI_KERNE
        depends on !CC_IS_GCC || GCC_VERSION >= 100100
        # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106671
        depends on !CC_IS_GCC
-       # https://github.com/llvm/llvm-project/commit/a88c722e687e6780dcd6a58718350dc76fcc4cc9
-       depends on !CC_IS_CLANG || CLANG_VERSION >= 120000
        depends on (!FUNCTION_GRAPH_TRACER || DYNAMIC_FTRACE_WITH_ARGS)
        help
          Build the kernel with Branch Target Identification annotations
@@@ -2222,22 -2219,13 +2219,22 @@@ config STACKPROTECTOR_PER_TAS
  
  config UNWIND_PATCH_PAC_INTO_SCS
        bool "Enable shadow call stack dynamically using code patching"
-       # needs Clang with https://reviews.llvm.org/D111780 incorporated
+       # needs Clang with https://github.com/llvm/llvm-project/commit/de07cde67b5d205d58690be012106022aea6d2b3 incorporated
        depends on CC_IS_CLANG && CLANG_VERSION >= 150000
        depends on ARM64_PTR_AUTH_KERNEL && CC_HAS_BRANCH_PROT_PAC_RET
        depends on SHADOW_CALL_STACK
        select UNWIND_TABLES
        select DYNAMIC_SCS
  
 +config ARM64_CONTPTE
 +      bool "Contiguous PTE mappings for user memory" if EXPERT
 +      depends on TRANSPARENT_HUGEPAGE
 +      default y
 +      help
 +        When enabled, user mappings are configured using the PTE contiguous
 +        bit, for any mappings that meet the size and alignment requirements.
 +        This reduces TLB pressure and improves performance.
 +
  endmenu # "Kernel Features"
  
  menu "Boot options"
diff --combined arch/powerpc/Kconfig
@@@ -154,7 -154,7 +154,7 @@@ config PP
        select ARCH_HAS_SYSCALL_WRAPPER         if !SPU_BASE && !COMPAT
        select ARCH_HAS_TICK_BROADCAST          if GENERIC_CLOCKEVENTS_BROADCAST
        select ARCH_HAS_UACCESS_FLUSHCACHE
 -      select ARCH_HAS_UBSAN_SANITIZE_ALL
 +      select ARCH_HAS_UBSAN
        select ARCH_HAVE_NMI_SAFE_CMPXCHG
        select ARCH_KEEP_MEMBLOCK
        select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE if PPC_RADIX_MMU
        select HAVE_ARCH_HUGE_VMAP              if PPC_RADIX_MMU || PPC_8xx
        select HAVE_ARCH_JUMP_LABEL
        select HAVE_ARCH_JUMP_LABEL_RELATIVE
 -      select HAVE_ARCH_KASAN                  if PPC32 && PPC_PAGE_SHIFT <= 14
 +      select HAVE_ARCH_KASAN                  if PPC32 && PAGE_SHIFT <= 14
        select HAVE_ARCH_KASAN                  if PPC_RADIX_MMU
        select HAVE_ARCH_KASAN                  if PPC_BOOK3E_64
        select HAVE_ARCH_KASAN_VMALLOC          if HAVE_ARCH_KASAN
@@@ -333,7 -333,6 +333,6 @@@ config PANIC_TIMEOU
  config COMPAT
        bool "Enable support for 32bit binaries"
        depends on PPC64
-       depends on !CC_IS_CLANG || CLANG_VERSION >= 120000
        default y if !CPU_LITTLE_ENDIAN
        select ARCH_WANT_OLD_COMPAT_IPC
        select COMPAT_OLD_SIGACTION
@@@ -608,11 -607,6 +607,11 @@@ config PPC64_SUPPORTS_MEMORY_FAILUR
  config ARCH_SUPPORTS_KEXEC
        def_bool PPC_BOOK3S || PPC_E500 || (44x && !SMP)
  
 +config ARCH_SELECTS_KEXEC
 +      def_bool y
 +      depends on KEXEC
 +      select CRASH_DUMP
 +
  config ARCH_SUPPORTS_KEXEC_FILE
        def_bool PPC64
  
@@@ -623,7 -617,6 +622,7 @@@ config ARCH_SELECTS_KEXEC_FIL
        def_bool y
        depends on KEXEC_FILE
        select KEXEC_ELF
 +      select CRASH_DUMP
        select HAVE_IMA_KEXEC if IMA
  
  config PPC64_BIG_ENDIAN_ELF_ABI_V2
@@@ -696,6 -689,7 +695,6 @@@ config ARCH_SELECTS_CRASH_DUM
  config FA_DUMP
        bool "Firmware-assisted dump"
        depends on PPC64 && (PPC_RTAS || PPC_POWERNV)
 -      select CRASH_CORE
        select CRASH_DUMP
        help
          A robust mechanism to get reliable kernel crash dump with
@@@ -814,23 -808,19 +813,23 @@@ choic
  config PPC_4K_PAGES
        bool "4k page size"
        select HAVE_ARCH_SOFT_DIRTY if PPC_BOOK3S_64
 +      select HAVE_PAGE_SIZE_4KB
  
  config PPC_16K_PAGES
        bool "16k page size"
        depends on 44x || PPC_8xx
 +      select HAVE_PAGE_SIZE_16KB
  
  config PPC_64K_PAGES
        bool "64k page size"
        depends on 44x || PPC_BOOK3S_64
        select HAVE_ARCH_SOFT_DIRTY if PPC_BOOK3S_64
 +      select HAVE_PAGE_SIZE_64KB
  
  config PPC_256K_PAGES
        bool "256k page size (Requires non-standard binutils settings)"
        depends on 44x && !PPC_47x
 +      select HAVE_PAGE_SIZE_256KB
        help
          Make the page size 256k.
  
  
  endchoice
  
 -config PAGE_SIZE_4KB
 -      def_bool y
 -      depends on PPC_4K_PAGES
 -
 -config PAGE_SIZE_16KB
 -      def_bool y
 -      depends on PPC_16K_PAGES
 -
 -config PAGE_SIZE_64KB
 -      def_bool y
 -      depends on PPC_64K_PAGES
 -
 -config PAGE_SIZE_256KB
 -      def_bool y
 -      depends on PPC_256K_PAGES
 -
 -config PPC_PAGE_SHIFT
 -      int
 -      default 18 if PPC_256K_PAGES
 -      default 16 if PPC_64K_PAGES
 -      default 14 if PPC_16K_PAGES
 -      default 12
 -
  config THREAD_SHIFT
        int "Thread shift" if EXPERT
        range 13 15
@@@ -877,7 -890,7 +876,7 @@@ config DATA_SHIF
        default 23 if (DEBUG_PAGEALLOC || KFENCE) && PPC_8xx && PIN_TLB_DATA
        default 19 if (DEBUG_PAGEALLOC || KFENCE) && PPC_8xx
        default 24 if STRICT_KERNEL_RWX && PPC_85xx
 -      default PPC_PAGE_SHIFT
 +      default PAGE_SHIFT
        help
          On Book3S 32 (603+), DBATs are used to map kernel text and rodata RO.
          Smaller is the alignment, greater is the number of necessary DBATs.
diff --combined arch/riscv/Kconfig
@@@ -37,7 -37,7 +37,7 @@@ config RISC
        select ARCH_HAS_STRICT_MODULE_RWX if MMU && !XIP_KERNEL
        select ARCH_HAS_SYSCALL_WRAPPER
        select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
 -      select ARCH_HAS_UBSAN_SANITIZE_ALL
 +      select ARCH_HAS_UBSAN
        select ARCH_HAS_VDSO_DATA
        select ARCH_KEEP_MEMBLOCK if ACPI
        select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
        select HAVE_LD_DEAD_CODE_DATA_ELIMINATION if !LD_IS_LLD
        select HAVE_MOVE_PMD
        select HAVE_MOVE_PUD
 +      select HAVE_PAGE_SIZE_4KB
        select HAVE_PCI
        select HAVE_PERF_EVENTS
        select HAVE_PERF_REGS
  
  config CLANG_SUPPORTS_DYNAMIC_FTRACE
        def_bool CC_IS_CLANG
-       # https://github.com/llvm/llvm-project/commit/6ab8927931851bb42b2c93a00801dc499d7d9b1e
-       depends on CLANG_VERSION >= 130000
        # https://github.com/ClangBuiltLinux/linux/issues/1817
        depends on AS_IS_GNU || (AS_IS_LLVM && (LD_IS_LLD || LD_VERSION >= 23600))
  
@@@ -313,9 -310,10 +311,9 @@@ config AS_HAS_INS
        def_bool $(as-instr,.insn r 51$(comma) 0$(comma) 0$(comma) t0$(comma) t0$(comma) zero)
  
  config AS_HAS_OPTION_ARCH
-       # https://reviews.llvm.org/D123515
+       # https://github.com/llvm/llvm-project/commit/9e8ed3403c191ab9c4903e8eeb8f732ff8a43cb4
        def_bool y
        depends on $(as-instr, .option arch$(comma) +m)
 -      depends on !$(as-instr, .option arch$(comma) -i)
  
  source "arch/riscv/Kconfig.socs"
  source "arch/riscv/Kconfig.errata"
@@@ -767,7 -765,7 +765,7 @@@ config ARCH_SUPPORTS_CRASH_DUM
        def_bool y
  
  config ARCH_HAS_GENERIC_CRASHKERNEL_RESERVATION
 -      def_bool CRASH_CORE
 +      def_bool CRASH_RESERVE
  
  config COMPAT
        bool "Kernel support for 32-bit U-mode"
@@@ -983,19 -981,7 +981,19 @@@ config RISCV_ISA_FALLBAC
  config BUILTIN_DTB
        bool "Built-in device tree"
        depends on OF && NONPORTABLE
 -      default y if XIP_KERNEL
 +      help
 +        Build a device tree into the Linux image.
 +        This option should be selected if no bootloader is being used.
 +        If unsure, say N.
 +
 +
 +config BUILTIN_DTB_SOURCE
 +      string "Built-in device tree source"
 +      depends on BUILTIN_DTB
 +      help
 +        DTS file path (without suffix, relative to arch/riscv/boot/dts)
 +        for the DTS file that will be used to produce the DTB linked into the
 +        kernel.
  
  endmenu # "Boot options"
  
  #endif
  #define HAVE_FUNCTION_GRAPH_RET_ADDR_PTR
  
- /*
-  * Clang prior to 13 had "mcount" instead of "_mcount":
-  * https://reviews.llvm.org/D98881
-  */
- #if defined(CONFIG_CC_IS_GCC) || CONFIG_CLANG_VERSION >= 130000
- #define MCOUNT_NAME _mcount
- #else
- #define MCOUNT_NAME mcount
- #endif
  #define ARCH_SUPPORTS_FTRACE_OPS 1
  #ifndef __ASSEMBLY__
- void MCOUNT_NAME(void);
 +
 +extern void *return_address(unsigned int level);
 +
 +#define ftrace_return_address(n) return_address(n)
 +
+ void _mcount(void);
  static inline unsigned long ftrace_call_adjust(unsigned long addr)
  {
        return addr;
@@@ -80,7 -65,7 +70,7 @@@ struct dyn_arch_ftrace 
   * both auipc and jalr at the same time.
   */
  
- #define MCOUNT_ADDR           ((unsigned long)MCOUNT_NAME)
+ #define MCOUNT_ADDR           ((unsigned long)_mcount)
  #define JALR_SIGN_MASK                (0x00000800)
  #define JALR_OFFSET_MASK      (0x00000fff)
  #define AUIPC_OFFSET_MASK     (0xfffff000)
diff --combined arch/x86/Makefile
@@@ -22,7 -22,7 +22,7 @@@ RETPOLINE_VDSO_CFLAGS := -mretpolin
  endif
  RETPOLINE_CFLAGS      += $(call cc-option,-mindirect-branch-cs-prefix)
  
 -ifdef CONFIG_RETHUNK
 +ifdef CONFIG_MITIGATION_RETHUNK
  RETHUNK_CFLAGS                := -mfunction-return=thunk-extern
  RETPOLINE_CFLAGS      += $(RETHUNK_CFLAGS)
  endif
@@@ -53,9 -53,6 +53,9 @@@ REALMODE_CFLAGS += -fno-stack-protecto
  REALMODE_CFLAGS += -Wno-address-of-packed-member
  REALMODE_CFLAGS += $(cc_stack_align4)
  REALMODE_CFLAGS += $(CLANG_FLAGS)
 +ifdef CONFIG_CC_IS_CLANG
 +REALMODE_CFLAGS += -Wno-gnu
 +endif
  export REALMODE_CFLAGS
  
  # BITS is used as extension for files which are available in a 32 bit
@@@ -71,7 -68,6 +71,7 @@@ export BIT
  #    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53383
  #
  KBUILD_CFLAGS += -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx
 +KBUILD_RUSTFLAGS += --target=$(objtree)/scripts/target.json
  KBUILD_RUSTFLAGS += -Ctarget-feature=-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-avx,-avx2
  
  ifeq ($(CONFIG_X86_KERNEL_IBT),y)
@@@ -196,7 -192,7 +196,7 @@@ KBUILD_CFLAGS += -Wno-sign-compar
  KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
  
  # Avoid indirect branches in kernel to deal with Spectre
 -ifdef CONFIG_RETPOLINE
 +ifdef CONFIG_MITIGATION_RETPOLINE
    KBUILD_CFLAGS += $(RETPOLINE_CFLAGS)
    # Additionally, avoid generating expensive indirect jumps which
    # are subject to retpolines for small number of switch cases.
    endif
  endif
  
 -ifdef CONFIG_SLS
 +ifdef CONFIG_MITIGATION_SLS
    KBUILD_CFLAGS += -mharden-sls=all
  endif
  
@@@ -221,12 -217,6 +221,6 @@@ endi
  
  KBUILD_LDFLAGS += -m elf_$(UTS_MACHINE)
  
- ifdef CONFIG_LTO_CLANG
- ifeq ($(call test-lt, $(CONFIG_LLD_VERSION), 130000),y)
- KBUILD_LDFLAGS        += -plugin-opt=-stack-alignment=$(if $(CONFIG_X86_32),4,8)
- endif
- endif
  ifdef CONFIG_X86_NEED_RELOCS
  LDFLAGS_vmlinux := --emit-relocs --discard-none
  else
@@@ -300,11 -290,12 +294,11 @@@ install
  
  vdso-install-$(CONFIG_X86_64)         += arch/x86/entry/vdso/vdso64.so.dbg
  vdso-install-$(CONFIG_X86_X32_ABI)    += arch/x86/entry/vdso/vdsox32.so.dbg
 -vdso-install-$(CONFIG_X86_32)         += arch/x86/entry/vdso/vdso32.so.dbg
 -vdso-install-$(CONFIG_IA32_EMULATION) += arch/x86/entry/vdso/vdso32.so.dbg
 +vdso-install-$(CONFIG_COMPAT_32)      += arch/x86/entry/vdso/vdso32.so.dbg
  
  archprepare: checkbin
  checkbin:
 -ifdef CONFIG_RETPOLINE
 +ifdef CONFIG_MITIGATION_RETPOLINE
  ifeq ($(RETPOLINE_CFLAGS),)
        @echo "You are building kernel with non-retpoline compiler." >&2
        @echo "Please update your compiler." >&2
diff --combined drivers/block/sunvdc.c
@@@ -28,7 -28,7 +28,7 @@@
  
  static char version[] =
        DRV_MODULE_NAME ".c:v" DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n";
- MODULE_AUTHOR("David S. Miller (davem@davemloft.net)");
+ MODULE_AUTHOR("David S. Miller <davem@davemloft.net>");
  MODULE_DESCRIPTION("Sun LDOM virtual disk client driver");
  MODULE_LICENSE("GPL");
  MODULE_VERSION(DRV_MODULE_VERSION);
@@@ -784,14 -784,6 +784,14 @@@ static const struct blk_mq_ops vdc_mq_o
  
  static int probe_disk(struct vdc_port *port)
  {
 +      struct queue_limits lim = {
 +              .physical_block_size            = port->vdisk_phys_blksz,
 +              .max_hw_sectors                 = port->max_xfer_size,
 +              /* Each segment in a request is up to an aligned page in size. */
 +              .seg_boundary_mask              = PAGE_SIZE - 1,
 +              .max_segment_size               = PAGE_SIZE,
 +              .max_segments                   = port->ring_cookies,
 +      };
        struct request_queue *q;
        struct gendisk *g;
        int err;
        if (err)
                return err;
  
 -      g = blk_mq_alloc_disk(&port->tag_set, port);
 +      g = blk_mq_alloc_disk(&port->tag_set, &lim, port);
        if (IS_ERR(g)) {
                printk(KERN_ERR PFX "%s: Could not allocate gendisk.\n",
                       port->vio.name);
        port->disk = g;
        q = g->queue;
  
 -      /* Each segment in a request is up to an aligned page in size. */
 -      blk_queue_segment_boundary(q, PAGE_SIZE - 1);
 -      blk_queue_max_segment_size(q, PAGE_SIZE);
 -
 -      blk_queue_max_segments(q, port->ring_cookies);
 -      blk_queue_max_hw_sectors(q, port->max_xfer_size);
        g->major = vdc_major;
        g->first_minor = port->vio.vdev->dev_no << PARTITION_SHIFT;
        g->minors = 1 << PARTITION_SHIFT;
                }
        }
  
 -      blk_queue_physical_block_size(q, port->vdisk_phys_blksz);
 -
        pr_info(PFX "%s: %u sectors (%u MB) protocol %d.%d\n",
               g->disk_name,
               port->vdisk_size, (port->vdisk_size >> (20 - 9)),
@@@ -347,7 -347,6 +347,7 @@@ static void tpm_tis_plat_remove(struct 
  
  #ifdef CONFIG_OF
  static const struct of_device_id tis_of_platform_match[] = {
 +      {.compatible = "atmel,at97sc3204"},
        {.compatible = "tcg,tpm-tis-mmio"},
        {},
  };
@@@ -429,7 -428,7 +429,7 @@@ static void __exit cleanup_tis(void
  
  module_init(init_tis);
  module_exit(cleanup_tis);
- MODULE_AUTHOR("Leendert van Doorn (leendert@watson.ibm.com)");
+ MODULE_AUTHOR("Leendert van Doorn <leendert@watson.ibm.com>");
  MODULE_DESCRIPTION("TPM Driver");
  MODULE_VERSION("2.0");
  MODULE_LICENSE("GPL");
@@@ -919,6 -919,8 +919,6 @@@ static int tpm_tis_probe_irq_single(str
        int rc;
        u32 int_status;
  
 -      INIT_WORK(&priv->free_irq_work, tpm_tis_free_irq_func);
 -
        rc = devm_request_threaded_irq(chip->dev.parent, irq, NULL,
                                       tis_int_handler, IRQF_ONESHOT | flags,
                                       dev_name(&chip->dev), chip);
@@@ -1130,7 -1132,6 +1130,7 @@@ int tpm_tis_core_init(struct device *de
        priv->phy_ops = phy_ops;
        priv->locality_count = 0;
        mutex_init(&priv->locality_count_mutex);
 +      INIT_WORK(&priv->free_irq_work, tpm_tis_free_irq_func);
  
        dev_set_drvdata(&chip->dev, priv);
  
@@@ -1360,7 -1361,7 +1360,7 @@@ int tpm_tis_resume(struct device *dev
  EXPORT_SYMBOL_GPL(tpm_tis_resume);
  #endif
  
- MODULE_AUTHOR("Leendert van Doorn (leendert@watson.ibm.com)");
+ MODULE_AUTHOR("Leendert van Doorn <leendert@watson.ibm.com>");
  MODULE_DESCRIPTION("TPM Driver");
  MODULE_VERSION("2.0");
  MODULE_LICENSE("GPL");
@@@ -45,8 -45,6 +45,8 @@@
  
  MODULE_FIRMWARE("amdgpu/sdma_4_4_2.bin");
  
 +#define mmSMNAID_AID0_MCA_SMU 0x03b30400
 +
  #define WREG32_SDMA(instance, offset, value) \
        WREG32(sdma_v4_4_2_get_reg_offset(adev, (instance), (offset)), value)
  #define RREG32_SDMA(instance, offset) \
@@@ -612,7 -610,7 +612,7 @@@ static uint32_t sdma_v4_4_2_rb_cntl(str
        /* Set ring buffer size in dwords */
        uint32_t rb_bufsz = order_base_2(ring->ring_size / 4);
  
-       barrier(); /* work around https://bugs.llvm.org/show_bug.cgi?id=42576 */
+       barrier(); /* work around https://llvm.org/pr42576 */
        rb_cntl = REG_SET_FIELD(rb_cntl, SDMA_GFX_RB_CNTL, RB_SIZE, rb_bufsz);
  #ifdef __BIG_ENDIAN
        rb_cntl = REG_SET_FIELD(rb_cntl, SDMA_GFX_RB_CNTL, RB_SWAP_ENABLE, 1);
@@@ -1644,7 -1642,7 +1644,7 @@@ static int sdma_v4_4_2_print_iv_entry(s
                                              struct amdgpu_iv_entry *entry)
  {
        int instance;
 -      struct amdgpu_task_info task_info;
 +      struct amdgpu_task_info *task_info;
        u64 addr;
  
        instance = sdma_v4_4_2_irq_id_to_seq(entry->client_id);
        addr = (u64)entry->src_data[0] << 12;
        addr |= ((u64)entry->src_data[1] & 0xf) << 44;
  
 -      memset(&task_info, 0, sizeof(struct amdgpu_task_info));
 -      amdgpu_vm_get_task_info(adev, entry->pasid, &task_info);
 -
        dev_dbg_ratelimited(adev->dev,
 -                 "[sdma%d] address:0x%016llx src_id:%u ring:%u vmid:%u "
 -                 "pasid:%u, for process %s pid %d thread %s pid %d\n",
 -                 instance, addr, entry->src_id, entry->ring_id, entry->vmid,
 -                 entry->pasid, task_info.process_name, task_info.tgid,
 -                 task_info.task_name, task_info.pid);
 +                          "[sdma%d] address:0x%016llx src_id:%u ring:%u vmid:%u pasid:%u\n",
 +                          instance, addr, entry->src_id, entry->ring_id, entry->vmid,
 +                          entry->pasid);
 +
 +      task_info = amdgpu_vm_get_task_info_pasid(adev, entry->pasid);
 +      if (task_info) {
 +              dev_dbg_ratelimited(adev->dev, " for process %s pid %d thread %s pid %d\n",
 +                                  task_info->process_name, task_info->tgid,
 +                                  task_info->task_name, task_info->pid);
 +              amdgpu_vm_put_task_info(task_info);
 +      }
 +
        return 0;
  }
  
@@@ -2210,79 -2204,9 +2210,79 @@@ static const struct amdgpu_ras_block_hw
        .reset_ras_error_count = sdma_v4_4_2_reset_ras_error_count,
  };
  
 +static int sdma_v4_4_2_aca_bank_generate_report(struct aca_handle *handle,
 +                                              struct aca_bank *bank, enum aca_error_type type,
 +                                              struct aca_bank_report *report, void *data)
 +{
 +      u64 status, misc0;
 +      int ret;
 +
 +      status = bank->regs[ACA_REG_IDX_STATUS];
 +      if ((type == ACA_ERROR_TYPE_UE &&
 +           ACA_REG__STATUS__ERRORCODEEXT(status) == ACA_EXTERROR_CODE_FAULT) ||
 +          (type == ACA_ERROR_TYPE_CE &&
 +           ACA_REG__STATUS__ERRORCODEEXT(status) == ACA_EXTERROR_CODE_CE)) {
 +
 +              ret = aca_bank_info_decode(bank, &report->info);
 +              if (ret)
 +                      return ret;
 +
 +              misc0 = bank->regs[ACA_REG_IDX_MISC0];
 +              report->count[type] = ACA_REG__MISC0__ERRCNT(misc0);
 +      }
 +
 +      return 0;
 +}
 +
 +/* CODE_SDMA0 - CODE_SDMA4, reference to smu driver if header file */
 +static int sdma_v4_4_2_err_codes[] = { 33, 34, 35, 36 };
 +
 +static bool sdma_v4_4_2_aca_bank_is_valid(struct aca_handle *handle, struct aca_bank *bank,
 +                                        enum aca_error_type type, void *data)
 +{
 +      u32 instlo;
 +
 +      instlo = ACA_REG__IPID__INSTANCEIDLO(bank->regs[ACA_REG_IDX_IPID]);
 +      instlo &= GENMASK(31, 1);
 +
 +      if (instlo != mmSMNAID_AID0_MCA_SMU)
 +              return false;
 +
 +      if (aca_bank_check_error_codes(handle->adev, bank,
 +                                     sdma_v4_4_2_err_codes,
 +                                     ARRAY_SIZE(sdma_v4_4_2_err_codes)))
 +              return false;
 +
 +      return true;
 +}
 +
 +static const struct aca_bank_ops sdma_v4_4_2_aca_bank_ops = {
 +      .aca_bank_generate_report = sdma_v4_4_2_aca_bank_generate_report,
 +      .aca_bank_is_valid = sdma_v4_4_2_aca_bank_is_valid,
 +};
 +
 +static const struct aca_info sdma_v4_4_2_aca_info = {
 +      .hwip = ACA_HWIP_TYPE_SMU,
 +      .mask = ACA_ERROR_UE_MASK,
 +      .bank_ops = &sdma_v4_4_2_aca_bank_ops,
 +};
 +
 +static int sdma_v4_4_2_ras_late_init(struct amdgpu_device *adev, struct ras_common_if *ras_block)
 +{
 +      int r;
 +
 +      r = amdgpu_sdma_ras_late_init(adev, ras_block);
 +      if (r)
 +              return r;
 +
 +      return amdgpu_ras_bind_aca(adev, AMDGPU_RAS_BLOCK__SDMA,
 +                                 &sdma_v4_4_2_aca_info, NULL);
 +}
 +
  static struct amdgpu_sdma_ras sdma_v4_4_2_ras = {
        .ras_block = {
                .hw_ops = &sdma_v4_4_2_ras_hw_ops,
 +              .ras_late_init = sdma_v4_4_2_ras_late_init,
        },
  };
  
@@@ -108,7 -108,7 +108,7 @@@ struct dell_smm_cooling_data 
        struct dell_smm_data *data;
  };
  
- MODULE_AUTHOR("Massimo Dal Zotto (dz@debian.org)");
+ MODULE_AUTHOR("Massimo Dal Zotto <dz@debian.org>");
  MODULE_AUTHOR("Pali Rohár <pali@kernel.org>");
  MODULE_DESCRIPTION("Dell laptop SMM BIOS hwmon driver");
  MODULE_LICENSE("GPL");
@@@ -1450,15 -1450,10 +1450,15 @@@ struct i8k_fan_control_data 
  };
  
  enum i8k_fan_controls {
 +      I8K_FAN_30A3_31A3,
        I8K_FAN_34A3_35A3,
  };
  
  static const struct i8k_fan_control_data i8k_fan_control_data[] __initconst = {
 +      [I8K_FAN_30A3_31A3] = {
 +              .manual_fan = 0x30a3,
 +              .auto_fan = 0x31a3,
 +      },
        [I8K_FAN_34A3_35A3] = {
                .manual_fan = 0x34a3,
                .auto_fan = 0x35a3,
@@@ -1522,14 -1517,6 +1522,14 @@@ static const struct dmi_system_id i8k_w
                },
                .driver_data = (void *)&i8k_fan_control_data[I8K_FAN_34A3_35A3],
        },
 +      {
 +              .ident = "Dell XPS 9315",
 +              .matches = {
 +                      DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
 +                      DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "XPS 9315"),
 +              },
 +              .driver_data = (void *)&i8k_fan_control_data[I8K_FAN_30A3_31A3],
 +      },
        { }
  };
  
@@@ -1600,7 -1587,6 +1600,7 @@@ static struct wmi_driver dell_smm_wmi_d
        },
        .id_table = dell_smm_wmi_id_table,
        .probe = dell_smm_wmi_probe,
 +      .no_singleton = true,
  };
  
  /*
@@@ -221,7 -221,7 +221,7 @@@ static inline void _tg3_flag_clear(enu
  #define FIRMWARE_TG3TSO               "tigon/tg3_tso.bin"
  #define FIRMWARE_TG3TSO5      "tigon/tg3_tso5.bin"
  
- MODULE_AUTHOR("David S. Miller (davem@redhat.com) and Jeff Garzik (jgarzik@pobox.com)");
+ MODULE_AUTHOR("David S. Miller <davem@redhat.com> and Jeff Garzik <jgarzik@pobox.com>");
  MODULE_DESCRIPTION("Broadcom Tigon3 ethernet driver");
  MODULE_LICENSE("GPL");
  MODULE_FIRMWARE(FIRMWARE_TG3);
@@@ -2338,10 -2338,10 +2338,10 @@@ static void tg3_phy_apply_otp(struct tg
        tg3_phy_toggle_auxctl_smdsp(tp, false);
  }
  
 -static void tg3_eee_pull_config(struct tg3 *tp, struct ethtool_eee *eee)
 +static void tg3_eee_pull_config(struct tg3 *tp, struct ethtool_keee *eee)
  {
        u32 val;
 -      struct ethtool_eee *dest = &tp->eee;
 +      struct ethtool_keee *dest = &tp->eee;
  
        if (!(tp->phy_flags & TG3_PHYFLG_EEE_CAP))
                return;
        /* Pull lp advertised settings */
        if (tg3_phy_cl45_read(tp, MDIO_MMD_AN, MDIO_AN_EEE_LPABLE, &val))
                return;
 -      dest->lp_advertised = mmd_eee_adv_to_ethtool_adv_t(val);
 +      mii_eee_cap1_mod_linkmode_t(dest->lp_advertised, val);
  
        /* Pull advertised and eee_enabled settings */
        if (tg3_phy_cl45_read(tp, MDIO_MMD_AN, MDIO_AN_EEE_ADV, &val))
                return;
        dest->eee_enabled = !!val;
 -      dest->advertised = mmd_eee_adv_to_ethtool_adv_t(val);
 +      mii_eee_cap1_mod_linkmode_t(dest->advertised, val);
  
        /* Pull tx_lpi_enabled */
        val = tr32(TG3_CPMU_EEE_MODE);
@@@ -4354,12 -4354,23 +4354,12 @@@ static int tg3_phy_autoneg_cfg(struct t
        if (!err) {
                u32 err2;
  
 -              val = 0;
 -              /* Advertise 100-BaseTX EEE ability */
 -              if (advertise & ADVERTISED_100baseT_Full)
 -                      val |= MDIO_AN_EEE_ADV_100TX;
 -              /* Advertise 1000-BaseT EEE ability */
 -              if (advertise & ADVERTISED_1000baseT_Full)
 -                      val |= MDIO_AN_EEE_ADV_1000T;
 -
 -              if (!tp->eee.eee_enabled) {
 +              if (!tp->eee.eee_enabled)
                        val = 0;
 -                      tp->eee.advertised = 0;
 -              } else {
 -                      tp->eee.advertised = advertise &
 -                                           (ADVERTISED_100baseT_Full |
 -                                            ADVERTISED_1000baseT_Full);
 -              }
 +              else
 +                      val = ethtool_adv_to_mmd_eee_adv_t(advertise);
  
 +              mii_eee_cap1_mod_linkmode_t(tp->eee.advertised, val);
                err = tg3_phy_cl45_write(tp, MDIO_MMD_AN, MDIO_AN_EEE_ADV, val);
                if (err)
                        val = 0;
@@@ -4607,7 -4618,7 +4607,7 @@@ static int tg3_init_5401phy_dsp(struct 
  
  static bool tg3_phy_eee_config_ok(struct tg3 *tp)
  {
 -      struct ethtool_eee eee;
 +      struct ethtool_keee eee = {};
  
        if (!(tp->phy_flags & TG3_PHYFLG_EEE_CAP))
                return true;
        tg3_eee_pull_config(tp, &eee);
  
        if (tp->eee.eee_enabled) {
 -              if (tp->eee.advertised != eee.advertised ||
 +              if (!linkmode_equal(tp->eee.advertised, eee.advertised) ||
                    tp->eee.tx_lpi_timer != eee.tx_lpi_timer ||
                    tp->eee.tx_lpi_enabled != eee.tx_lpi_enabled)
                        return false;
        } else {
                /* EEE is disabled but we're advertising */
 -              if (eee.advertised)
 +              if (!linkmode_empty(eee.advertised))
                        return false;
        }
  
@@@ -14169,7 -14180,7 +14169,7 @@@ static int tg3_set_coalesce(struct net_
        return 0;
  }
  
 -static int tg3_set_eee(struct net_device *dev, struct ethtool_eee *edata)
 +static int tg3_set_eee(struct net_device *dev, struct ethtool_keee *edata)
  {
        struct tg3 *tp = netdev_priv(dev);
  
                return -EOPNOTSUPP;
        }
  
 -      if (edata->advertised != tp->eee.advertised) {
 +      if (!linkmode_equal(edata->advertised, tp->eee.advertised)) {
                netdev_warn(tp->dev,
                            "Direct manipulation of EEE advertisement is not supported\n");
                return -EINVAL;
                return -EINVAL;
        }
  
 -      tp->eee = *edata;
 +      tp->eee.eee_enabled = edata->eee_enabled;
 +      tp->eee.tx_lpi_enabled = edata->tx_lpi_enabled;
 +      tp->eee.tx_lpi_timer = edata->tx_lpi_timer;
  
        tp->phy_flags |= TG3_PHYFLG_USER_CONFIGURED;
        tg3_warn_mgmt_link_flap(tp);
        return 0;
  }
  
 -static int tg3_get_eee(struct net_device *dev, struct ethtool_eee *edata)
 +static int tg3_get_eee(struct net_device *dev, struct ethtool_keee *edata)
  {
        struct tg3 *tp = netdev_priv(dev);
  
@@@ -15646,13 -15655,10 +15646,13 @@@ static int tg3_phy_probe(struct tg3 *tp
              tg3_chip_rev_id(tp) != CHIPREV_ID_57765_A0))) {
                tp->phy_flags |= TG3_PHYFLG_EEE_CAP;
  
 -              tp->eee.supported = SUPPORTED_100baseT_Full |
 -                                  SUPPORTED_1000baseT_Full;
 -              tp->eee.advertised = ADVERTISED_100baseT_Full |
 -                                   ADVERTISED_1000baseT_Full;
 +              linkmode_zero(tp->eee.supported);
 +              linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT,
 +                               tp->eee.supported);
 +              linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT,
 +                               tp->eee.supported);
 +              linkmode_copy(tp->eee.advertised, tp->eee.supported);
 +
                tp->eee.eee_enabled = 1;
                tp->eee.tx_lpi_enabled = 1;
                tp->eee.tx_lpi_timer = TG3_CPMU_DBTMR1_LNKIDLE_2047US;
@@@ -39,7 -39,7 +39,7 @@@
   */
  #define       VNET_MAX_RETRIES        10
  
- MODULE_AUTHOR("David S. Miller (davem@davemloft.net)");
+ MODULE_AUTHOR("David S. Miller <davem@davemloft.net>");
  MODULE_DESCRIPTION("Sun LDOM virtual network support library");
  MODULE_LICENSE("GPL");
  MODULE_VERSION("1.1");
@@@ -1144,9 -1144,9 +1144,9 @@@ static inline struct sk_buff *vnet_skb_
                nskb->protocol = skb->protocol;
                offset = skb_mac_header(skb) - skb->data;
                skb_set_mac_header(nskb, offset);
 -              offset = skb_network_header(skb) - skb->data;
 +              offset = skb_network_offset(skb);
                skb_set_network_header(nskb, offset);
 -              offset = skb_transport_header(skb) - skb->data;
 +              offset = skb_transport_offset(skb);
                skb_set_transport_header(nskb, offset);
  
                offset = 0;
diff --combined fs/ocfs2/super.c
@@@ -122,7 -122,7 +122,7 @@@ static int ocfs2_susp_quotas(struct ocf
  static int ocfs2_enable_quotas(struct ocfs2_super *osb);
  static void ocfs2_disable_quotas(struct ocfs2_super *osb);
  
 -static struct dquot **ocfs2_get_dquots(struct inode *inode)
 +static struct dquot __rcu **ocfs2_get_dquots(struct inode *inode)
  {
        return OCFS2_I(inode)->i_dquot;
  }
@@@ -1711,12 -1711,12 +1711,12 @@@ static int ocfs2_initialize_mem_caches(
        ocfs2_dquot_cachep = kmem_cache_create("ocfs2_dquot_cache",
                                        sizeof(struct ocfs2_dquot),
                                        0,
-                                       (SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT),
+                                       SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT,
                                        NULL);
        ocfs2_qf_chunk_cachep = kmem_cache_create("ocfs2_qf_chunk_cache",
                                        sizeof(struct ocfs2_quota_chunk),
                                        0,
-                                       (SLAB_RECLAIM_ACCOUNT),
+                                       SLAB_RECLAIM_ACCOUNT,
                                        NULL);
        if (!ocfs2_inode_cachep || !ocfs2_dquot_cachep ||
            !ocfs2_qf_chunk_cachep) {
@@@ -2026,8 -2026,8 +2026,8 @@@ static int ocfs2_initialize_super(struc
        cbits = le32_to_cpu(di->id2.i_super.s_clustersize_bits);
        bbits = le32_to_cpu(di->id2.i_super.s_blocksize_bits);
        sb->s_maxbytes = ocfs2_max_file_offset(bbits, cbits);
 -      memcpy(&sb->s_uuid, di->id2.i_super.s_uuid,
 -             sizeof(di->id2.i_super.s_uuid));
 +      super_set_uuid(sb, di->id2.i_super.s_uuid,
 +                     sizeof(di->id2.i_super.s_uuid));
  
        osb->osb_dx_mask = (1 << (cbits - bbits)) - 1;
  
diff --combined init/main.c
@@@ -88,7 -88,6 +88,7 @@@
  #include <linux/sched/task_stack.h>
  #include <linux/context_tracking.h>
  #include <linux/random.h>
 +#include <linux/moduleloader.h>
  #include <linux/list.h>
  #include <linux/integrity.h>
  #include <linux/proc_ns.h>
  #include <linux/init_syscalls.h>
  #include <linux/stackdepot.h>
  #include <linux/randomize_kstack.h>
 +#include <linux/pidfs.h>
 +#include <linux/ptdump.h>
  #include <net/net_namespace.h>
  
  #include <asm/io.h>
@@@ -606,6 -603,7 +606,6 @@@ static int __init rdinit_setup(char *st
  __setup("rdinit=", rdinit_setup);
  
  #ifndef CONFIG_SMP
 -static const unsigned int setup_max_cpus = NR_CPUS;
  static inline void setup_nr_cpu_ids(void) { }
  static inline void smp_prepare_cpus(unsigned int maxcpus) { }
  #endif
@@@ -683,7 -681,7 +683,7 @@@ static void __init setup_command_line(c
  
  static __initdata DECLARE_COMPLETION(kthreadd_done);
  
- noinline void __ref __noreturn rest_init(void)
static noinline void __ref __noreturn rest_init(void)
  {
        struct task_struct *tsk;
        int pid;
@@@ -778,10 -776,6 +778,10 @@@ void __init __weak smp_setup_processor_
  {
  }
  
 +void __init __weak smp_prepare_boot_cpu(void)
 +{
 +}
 +
  # if THREAD_SIZE >= PAGE_SIZE
  void __init __weak thread_stack_cache_init(void)
  {
@@@ -828,11 -822,6 +828,6 @@@ static int __init early_randomize_kstac
  early_param("randomize_kstack_offset", early_randomize_kstack_offset);
  #endif
  
- void __init __weak __noreturn arch_call_rest_init(void)
- {
-       rest_init();
- }
  static void __init print_unknown_bootoptions(void)
  {
        char *unknown_options;
@@@ -1065,7 -1054,6 +1060,7 @@@ void start_kernel(void
        seq_file_init();
        proc_root_init();
        nsfs_init();
 +      pidfs_init();
        cpuset_init();
        cgroup_init();
        taskstats_init_early();
        kcsan_init();
  
        /* Do the rest non-__init'ed, we're now alive */
-       arch_call_rest_init();
+       rest_init();
  
        /*
         * Avoid stack canaries in callers of boot_init_stack_canary for gcc-10
@@@ -1403,27 -1391,33 +1398,27 @@@ static int __init set_debug_rodata(cha
  early_param("rodata", set_debug_rodata);
  #endif
  
 -#ifdef CONFIG_STRICT_KERNEL_RWX
  static void mark_readonly(void)
  {
 -      if (rodata_enabled) {
 +      if (IS_ENABLED(CONFIG_STRICT_KERNEL_RWX) && rodata_enabled) {
                /*
                 * load_module() results in W+X mappings, which are cleaned
 -               * up with call_rcu().  Let's make sure that queued work is
 +               * up with init_free_wq. Let's make sure that queued work is
                 * flushed so that we don't hit false positives looking for
                 * insecure pages which are W+X.
                 */
 -              rcu_barrier();
 +              flush_module_init_free_work();
                mark_rodata_ro();
 +              debug_checkwx();
                rodata_test();
 -      } else
 +      } else if (IS_ENABLED(CONFIG_STRICT_KERNEL_RWX)) {
                pr_info("Kernel memory protection disabled.\n");
 +      } else if (IS_ENABLED(CONFIG_ARCH_HAS_STRICT_KERNEL_RWX)) {
 +              pr_warn("Kernel memory protection not selected by kernel config.\n");
 +      } else {
 +              pr_warn("This architecture does not have kernel memory protection.\n");
 +      }
  }
 -#elif defined(CONFIG_ARCH_HAS_STRICT_KERNEL_RWX)
 -static inline void mark_readonly(void)
 -{
 -      pr_warn("Kernel memory protection not selected by kernel config.\n");
 -}
 -#else
 -static inline void mark_readonly(void)
 -{
 -      pr_warn("This architecture does not have kernel memory protection.\n");
 -}
 -#endif
  
  void __weak free_initmem(void)
  {
@@@ -1546,7 -1540,6 +1541,7 @@@ static noinline void __init kernel_init
        sched_init_smp();
  
        workqueue_init_topology();
 +      async_init();
        padata_init();
        page_alloc_init_late();
  
diff --combined kernel/kexec_core.c
@@@ -54,6 -54,30 +54,6 @@@ bool kexec_in_progress = false
  
  bool kexec_file_dbg_print;
  
 -int kexec_should_crash(struct task_struct *p)
 -{
 -      /*
 -       * If crash_kexec_post_notifiers is enabled, don't run
 -       * crash_kexec() here yet, which must be run after panic
 -       * notifiers in panic().
 -       */
 -      if (crash_kexec_post_notifiers)
 -              return 0;
 -      /*
 -       * There are 4 panic() calls in make_task_dead() path, each of which
 -       * corresponds to each of these 4 conditions.
 -       */
 -      if (in_interrupt() || !p->pid || is_global_init(p) || panic_on_oops)
 -              return 1;
 -      return 0;
 -}
 -
 -int kexec_crash_loaded(void)
 -{
 -      return !!kexec_crash_image;
 -}
 -EXPORT_SYMBOL_GPL(kexec_crash_loaded);
 -
  /*
   * When kexec transitions to the new kernel there is a one-to-one
   * mapping between physical and virtual addresses.  On processors
@@@ -185,7 -209,6 +185,7 @@@ int sanity_check_segment_list(struct ki
        if (total_pages > nr_pages / 2)
                return -EINVAL;
  
 +#ifdef CONFIG_CRASH_DUMP
        /*
         * Verify we have good destination addresses.  Normally
         * the caller is responsible for making certain we don't
                                return -EADDRNOTAVAIL;
                }
        }
 +#endif
  
        return 0;
  }
@@@ -381,7 -403,6 +381,7 @@@ static struct page *kimage_alloc_normal
        return pages;
  }
  
 +#ifdef CONFIG_CRASH_DUMP
  static struct page *kimage_alloc_crash_control_pages(struct kimage *image,
                                                      unsigned int order)
  {
  
        return pages;
  }
 +#endif
  
  
  struct page *kimage_alloc_control_pages(struct kimage *image,
        case KEXEC_TYPE_DEFAULT:
                pages = kimage_alloc_normal_control_pages(image, order);
                break;
 +#ifdef CONFIG_CRASH_DUMP
        case KEXEC_TYPE_CRASH:
                pages = kimage_alloc_crash_control_pages(image, order);
                break;
 +#endif
        }
  
        return pages;
  }
  
 -int kimage_crash_copy_vmcoreinfo(struct kimage *image)
 -{
 -      struct page *vmcoreinfo_page;
 -      void *safecopy;
 -
 -      if (image->type != KEXEC_TYPE_CRASH)
 -              return 0;
 -
 -      /*
 -       * For kdump, allocate one vmcoreinfo safe copy from the
 -       * crash memory. as we have arch_kexec_protect_crashkres()
 -       * after kexec syscall, we naturally protect it from write
 -       * (even read) access under kernel direct mapping. But on
 -       * the other hand, we still need to operate it when crash
 -       * happens to generate vmcoreinfo note, hereby we rely on
 -       * vmap for this purpose.
 -       */
 -      vmcoreinfo_page = kimage_alloc_control_pages(image, 0);
 -      if (!vmcoreinfo_page) {
 -              pr_warn("Could not allocate vmcoreinfo buffer\n");
 -              return -ENOMEM;
 -      }
 -      safecopy = vmap(&vmcoreinfo_page, 1, VM_MAP, PAGE_KERNEL);
 -      if (!safecopy) {
 -              pr_warn("Could not vmap vmcoreinfo buffer\n");
 -              return -ENOMEM;
 -      }
 -
 -      image->vmcoreinfo_data_copy = safecopy;
 -      crash_update_vmcoreinfo_safecopy(safecopy);
 -
 -      return 0;
 -}
 -
  static int kimage_add_entry(struct kimage *image, kimage_entry_t entry)
  {
        if (*image->entry != 0)
@@@ -551,12 -603,10 +551,12 @@@ void kimage_free(struct kimage *image
        if (!image)
                return;
  
 +#ifdef CONFIG_CRASH_DUMP
        if (image->vmcoreinfo_data_copy) {
                crash_update_vmcoreinfo_safecopy(NULL);
                vunmap(image->vmcoreinfo_data_copy);
        }
 +#endif
  
        kimage_free_extra_pages(image);
        for_each_kimage_entry(image, ptr, entry) {
@@@ -750,22 -800,24 +750,24 @@@ static int kimage_load_normal_segment(s
                                PAGE_SIZE - (maddr & ~PAGE_MASK));
                uchunk = min(ubytes, mchunk);
  
-               /* For file based kexec, source pages are in kernel memory */
-               if (image->file_mode)
-                       memcpy(ptr, kbuf, uchunk);
-               else
-                       result = copy_from_user(ptr, buf, uchunk);
+               if (uchunk) {
+                       /* For file based kexec, source pages are in kernel memory */
+                       if (image->file_mode)
+                               memcpy(ptr, kbuf, uchunk);
+                       else
+                               result = copy_from_user(ptr, buf, uchunk);
+                       ubytes -= uchunk;
+                       if (image->file_mode)
+                               kbuf += uchunk;
+                       else
+                               buf += uchunk;
+               }
                kunmap_local(ptr);
                if (result) {
                        result = -EFAULT;
                        goto out;
                }
-               ubytes -= uchunk;
                maddr  += mchunk;
-               if (image->file_mode)
-                       kbuf += mchunk;
-               else
-                       buf += mchunk;
                mbytes -= mchunk;
  
                cond_resched();
@@@ -774,7 -826,6 +776,7 @@@ out
        return result;
  }
  
 +#ifdef CONFIG_CRASH_DUMP
  static int kimage_load_crash_segment(struct kimage *image,
                                        struct kexec_segment *segment)
  {
                        memset(ptr + uchunk, 0, mchunk - uchunk);
                }
  
-               /* For file based kexec, source pages are in kernel memory */
-               if (image->file_mode)
-                       memcpy(ptr, kbuf, uchunk);
-               else
-                       result = copy_from_user(ptr, buf, uchunk);
+               if (uchunk) {
+                       /* For file based kexec, source pages are in kernel memory */
+                       if (image->file_mode)
+                               memcpy(ptr, kbuf, uchunk);
+                       else
+                               result = copy_from_user(ptr, buf, uchunk);
+                       ubytes -= uchunk;
+                       if (image->file_mode)
+                               kbuf += uchunk;
+                       else
+                               buf += uchunk;
+               }
                kexec_flush_icache_page(page);
                kunmap_local(ptr);
                arch_kexec_pre_free_pages(page_address(page), 1);
                        result = -EFAULT;
                        goto out;
                }
-               ubytes -= uchunk;
                maddr  += mchunk;
-               if (image->file_mode)
-                       kbuf += mchunk;
-               else
-                       buf += mchunk;
                mbytes -= mchunk;
  
                cond_resched();
  out:
        return result;
  }
 +#endif
  
  int kimage_load_segment(struct kimage *image,
                                struct kexec_segment *segment)
        case KEXEC_TYPE_DEFAULT:
                result = kimage_load_normal_segment(image, segment);
                break;
 +#ifdef CONFIG_CRASH_DUMP
        case KEXEC_TYPE_CRASH:
                result = kimage_load_crash_segment(image, segment);
                break;
 +#endif
        }
  
        return result;
@@@ -981,6 -1031,186 +985,6 @@@ bool kexec_load_permitted(int kexec_ima
        return true;
  }
  
 -/*
 - * No panic_cpu check version of crash_kexec().  This function is called
 - * only when panic_cpu holds the current CPU number; this is the only CPU
 - * which processes crash_kexec routines.
 - */
 -void __noclone __crash_kexec(struct pt_regs *regs)
 -{
 -      /* Take the kexec_lock here to prevent sys_kexec_load
 -       * running on one cpu from replacing the crash kernel
 -       * we are using after a panic on a different cpu.
 -       *
 -       * If the crash kernel was not located in a fixed area
 -       * of memory the xchg(&kexec_crash_image) would be
 -       * sufficient.  But since I reuse the memory...
 -       */
 -      if (kexec_trylock()) {
 -              if (kexec_crash_image) {
 -                      struct pt_regs fixed_regs;
 -
 -                      crash_setup_regs(&fixed_regs, regs);
 -                      crash_save_vmcoreinfo();
 -                      machine_crash_shutdown(&fixed_regs);
 -                      machine_kexec(kexec_crash_image);
 -              }
 -              kexec_unlock();
 -      }
 -}
 -STACK_FRAME_NON_STANDARD(__crash_kexec);
 -
 -__bpf_kfunc void crash_kexec(struct pt_regs *regs)
 -{
 -      int old_cpu, this_cpu;
 -
 -      /*
 -       * Only one CPU is allowed to execute the crash_kexec() code as with
 -       * panic().  Otherwise parallel calls of panic() and crash_kexec()
 -       * may stop each other.  To exclude them, we use panic_cpu here too.
 -       */
 -      old_cpu = PANIC_CPU_INVALID;
 -      this_cpu = raw_smp_processor_id();
 -
 -      if (atomic_try_cmpxchg(&panic_cpu, &old_cpu, this_cpu)) {
 -              /* This is the 1st CPU which comes here, so go ahead. */
 -              __crash_kexec(regs);
 -
 -              /*
 -               * Reset panic_cpu to allow another panic()/crash_kexec()
 -               * call.
 -               */
 -              atomic_set(&panic_cpu, PANIC_CPU_INVALID);
 -      }
 -}
 -
 -static inline resource_size_t crash_resource_size(const struct resource *res)
 -{
 -      return !res->end ? 0 : resource_size(res);
 -}
 -
 -ssize_t crash_get_memory_size(void)
 -{
 -      ssize_t size = 0;
 -
 -      if (!kexec_trylock())
 -              return -EBUSY;
 -
 -      size += crash_resource_size(&crashk_res);
 -      size += crash_resource_size(&crashk_low_res);
 -
 -      kexec_unlock();
 -      return size;
 -}
 -
 -static int __crash_shrink_memory(struct resource *old_res,
 -                               unsigned long new_size)
 -{
 -      struct resource *ram_res;
 -
 -      ram_res = kzalloc(sizeof(*ram_res), GFP_KERNEL);
 -      if (!ram_res)
 -              return -ENOMEM;
 -
 -      ram_res->start = old_res->start + new_size;
 -      ram_res->end   = old_res->end;
 -      ram_res->flags = IORESOURCE_BUSY | IORESOURCE_SYSTEM_RAM;
 -      ram_res->name  = "System RAM";
 -
 -      if (!new_size) {
 -              release_resource(old_res);
 -              old_res->start = 0;
 -              old_res->end   = 0;
 -      } else {
 -              crashk_res.end = ram_res->start - 1;
 -      }
 -
 -      crash_free_reserved_phys_range(ram_res->start, ram_res->end);
 -      insert_resource(&iomem_resource, ram_res);
 -
 -      return 0;
 -}
 -
 -int crash_shrink_memory(unsigned long new_size)
 -{
 -      int ret = 0;
 -      unsigned long old_size, low_size;
 -
 -      if (!kexec_trylock())
 -              return -EBUSY;
 -
 -      if (kexec_crash_image) {
 -              ret = -ENOENT;
 -              goto unlock;
 -      }
 -
 -      low_size = crash_resource_size(&crashk_low_res);
 -      old_size = crash_resource_size(&crashk_res) + low_size;
 -      new_size = roundup(new_size, KEXEC_CRASH_MEM_ALIGN);
 -      if (new_size >= old_size) {
 -              ret = (new_size == old_size) ? 0 : -EINVAL;
 -              goto unlock;
 -      }
 -
 -      /*
 -       * (low_size > new_size) implies that low_size is greater than zero.
 -       * This also means that if low_size is zero, the else branch is taken.
 -       *
 -       * If low_size is greater than 0, (low_size > new_size) indicates that
 -       * crashk_low_res also needs to be shrunken. Otherwise, only crashk_res
 -       * needs to be shrunken.
 -       */
 -      if (low_size > new_size) {
 -              ret = __crash_shrink_memory(&crashk_res, 0);
 -              if (ret)
 -                      goto unlock;
 -
 -              ret = __crash_shrink_memory(&crashk_low_res, new_size);
 -      } else {
 -              ret = __crash_shrink_memory(&crashk_res, new_size - low_size);
 -      }
 -
 -      /* Swap crashk_res and crashk_low_res if needed */
 -      if (!crashk_res.end && crashk_low_res.end) {
 -              crashk_res.start = crashk_low_res.start;
 -              crashk_res.end   = crashk_low_res.end;
 -              release_resource(&crashk_low_res);
 -              crashk_low_res.start = 0;
 -              crashk_low_res.end   = 0;
 -              insert_resource(&iomem_resource, &crashk_res);
 -      }
 -
 -unlock:
 -      kexec_unlock();
 -      return ret;
 -}
 -
 -void crash_save_cpu(struct pt_regs *regs, int cpu)
 -{
 -      struct elf_prstatus prstatus;
 -      u32 *buf;
 -
 -      if ((cpu < 0) || (cpu >= nr_cpu_ids))
 -              return;
 -
 -      /* Using ELF notes here is opportunistic.
 -       * I need a well defined structure format
 -       * for the data I pass, and I need tags
 -       * on the data to indicate what information I have
 -       * squirrelled away.  ELF notes happen to provide
 -       * all of that, so there is no need to invent something new.
 -       */
 -      buf = (u32 *)per_cpu_ptr(crash_notes, cpu);
 -      if (!buf)
 -              return;
 -      memset(&prstatus, 0, sizeof(prstatus));
 -      prstatus.common.pr_pid = current->pid;
 -      elf_core_copy_regs(&prstatus.pr_reg, regs);
 -      buf = append_elf_note(buf, KEXEC_CORE_NOTE_NAME, NT_PRSTATUS,
 -                            &prstatus, sizeof(prstatus));
 -      final_note(buf);
 -}
 -
  /*
   * Move into place and start executing a preloaded standalone
   * executable.  If nothing was preloaded return an error.
diff --combined kernel/panic.c
@@@ -73,6 -73,7 +73,7 @@@ EXPORT_SYMBOL_GPL(panic_timeout)
  #define PANIC_PRINT_FTRACE_INFO               0x00000010
  #define PANIC_PRINT_ALL_PRINTK_MSG    0x00000020
  #define PANIC_PRINT_ALL_CPU_BT                0x00000040
+ #define PANIC_PRINT_BLOCKED_TASKS     0x00000080
  unsigned long panic_print;
  
  ATOMIC_NOTIFIER_HEAD(panic_notifier_list);
@@@ -227,6 -228,9 +228,9 @@@ static void panic_print_sys_info(bool c
  
        if (panic_print & PANIC_PRINT_FTRACE_INFO)
                ftrace_dump(DUMP_ALL);
+       if (panic_print & PANIC_PRINT_BLOCKED_TASKS)
+               show_state_filter(TASK_UNINTERRUPTIBLE);
  }
  
  void check_panic_on_warn(const char *origin)
@@@ -446,14 -450,6 +450,14 @@@ void panic(const char *fmt, ...
  
        /* Do not scroll important messages printed above */
        suppress_printk = 1;
 +
 +      /*
 +       * The final messages may not have been printed if in a context that
 +       * defers printing (such as NMI) and irq_work is not available.
 +       * Explicitly flush the kernel log buffer one last time.
 +       */
 +      console_flush_on_panic(CONSOLE_FLUSH_PENDING);
 +
        local_irq_enable();
        for (i = 0; ; i += PANIC_TIMER_STEP) {
                touch_softlockup_watchdog();
@@@ -674,8 -670,13 +678,13 @@@ void __warn(const char *file, int line
                pr_warn("WARNING: CPU: %d PID: %d at %pS\n",
                        raw_smp_processor_id(), current->pid, caller);
  
+ #pragma GCC diagnostic push
+ #ifndef __clang__
+ #pragma GCC diagnostic ignored "-Wsuggest-attribute=format"
+ #endif
        if (args)
                vprintk(args->fmt, args->args);
+ #pragma GCC diagnostic pop
  
        print_modules();
  
diff --combined kernel/signal.c
@@@ -47,7 -47,6 +47,7 @@@
  #include <linux/cgroup.h>
  #include <linux/audit.h>
  #include <linux/sysctl.h>
 +#include <uapi/linux/pidfd.h>
  
  #define CREATE_TRACE_POINTS
  #include <trace/events/signal.h>
@@@ -1437,8 -1436,7 +1437,8 @@@ void lockdep_assert_task_sighand_held(s
  #endif
  
  /*
 - * send signal info to all the members of a group
 + * send signal info to all the members of a thread group or to the
 + * individual thread if type == PIDTYPE_PID.
   */
  int group_send_sig_info(int sig, struct kernel_siginfo *info,
                        struct task_struct *p, enum pid_type type)
@@@ -1480,8 -1478,7 +1480,8 @@@ int __kill_pgrp_info(int sig, struct ke
        return ret;
  }
  
 -int kill_pid_info(int sig, struct kernel_siginfo *info, struct pid *pid)
 +static int kill_pid_info_type(int sig, struct kernel_siginfo *info,
 +                              struct pid *pid, enum pid_type type)
  {
        int error = -ESRCH;
        struct task_struct *p;
                rcu_read_lock();
                p = pid_task(pid, PIDTYPE_PID);
                if (p)
 -                      error = group_send_sig_info(sig, info, p, PIDTYPE_TGID);
 +                      error = group_send_sig_info(sig, info, p, type);
                rcu_read_unlock();
                if (likely(!p || error != -ESRCH))
                        return error;
 -
                /*
                 * The task was unhashed in between, try again.  If it
                 * is dead, pid_task() will return NULL, if we race with
        }
  }
  
 +int kill_pid_info(int sig, struct kernel_siginfo *info, struct pid *pid)
 +{
 +      return kill_pid_info_type(sig, info, pid, PIDTYPE_TGID);
 +}
 +
  static int kill_proc_info(int sig, struct kernel_siginfo *info, pid_t pid)
  {
        int error;
@@@ -1905,19 -1898,16 +1905,19 @@@ int send_sig_fault_trapno(int sig, int 
        return send_sig_info(info.si_signo, &info, t);
  }
  
 -int kill_pgrp(struct pid *pid, int sig, int priv)
 +static int kill_pgrp_info(int sig, struct kernel_siginfo *info, struct pid *pgrp)
  {
        int ret;
 -
        read_lock(&tasklist_lock);
 -      ret = __kill_pgrp_info(sig, __si_special(priv), pid);
 +      ret = __kill_pgrp_info(sig, info, pgrp);
        read_unlock(&tasklist_lock);
 -
        return ret;
  }
 +
 +int kill_pgrp(struct pid *pid, int sig, int priv)
 +{
 +      return kill_pgrp_info(sig, __si_special(priv), pid);
 +}
  EXPORT_SYMBOL(kill_pgrp);
  
  int kill_pid(struct pid *pid, int sig, int priv)
        return ret;
  }
  
 -static void do_notify_pidfd(struct task_struct *task)
 +void do_notify_pidfd(struct task_struct *task)
  {
 -      struct pid *pid;
 +      struct pid *pid = task_pid(task);
  
        WARN_ON(task->exit_state == 0);
 -      pid = task_pid(task);
 -      wake_up_all(&pid->wait_pidfd);
 +
 +      __wake_up(&pid->wait_pidfd, TASK_NORMAL, 0,
 +                      poll_to_key(EPOLLIN | EPOLLRDNORM));
  }
  
  /*
@@@ -2061,12 -2050,9 +2061,12 @@@ bool do_notify_parent(struct task_struc
  
        WARN_ON_ONCE(!tsk->ptrace &&
               (tsk->group_leader != tsk || !thread_group_empty(tsk)));
 -
 -      /* Wake up all pidfd waiters */
 -      do_notify_pidfd(tsk);
 +      /*
 +       * tsk is a group leader and has no threads, wake up the
 +       * non-PIDFD_THREAD waiters.
 +       */
 +      if (thread_group_empty(tsk))
 +              do_notify_pidfd(tsk);
  
        if (sig != SIGCHLD) {
                /*
@@@ -2741,12 -2727,15 +2741,15 @@@ relock
                /* Has this task already been marked for death? */
                if ((signal->flags & SIGNAL_GROUP_EXIT) ||
                     signal->group_exec_task) {
-                       clear_siginfo(&ksig->info);
-                       ksig->info.si_signo = signr = SIGKILL;
+                       signr = SIGKILL;
                        sigdelset(&current->pending.signal, SIGKILL);
                        trace_signal_deliver(SIGKILL, SEND_SIG_NOINFO,
-                               &sighand->action[SIGKILL - 1]);
+                                            &sighand->action[SIGKILL-1]);
                        recalc_sigpending();
+                       /*
+                        * implies do_group_exit() or return to PF_USER_WORKER,
+                        * no need to initialize ksig->info/etc.
+                        */
                        goto fatal;
                }
  
                                spin_lock_irq(&sighand->siglock);
                        }
  
-                       if (likely(do_signal_stop(ksig->info.si_signo))) {
+                       if (likely(do_signal_stop(signr))) {
                                /* It released the siglock.  */
                                goto relock;
                        }
  
                if (sig_kernel_coredump(signr)) {
                        if (print_fatal_signals)
-                               print_fatal_signal(ksig->info.si_signo);
+                               print_fatal_signal(signr);
                        proc_coredump_connector(current);
                        /*
                         * If it was able to dump core, this kills all
  
                /*
                 * PF_USER_WORKER threads will catch and exit on fatal signals
-                * themselves. They have cleanup that must be performed, so
-                * we cannot call do_exit() on their behalf.
+                * themselves. They have cleanup that must be performed, so we
+                * cannot call do_exit() on their behalf. Note that ksig won't
+                * be properly initialized, PF_USER_WORKER's shouldn't use it.
                 */
                if (current->flags & PF_USER_WORKER)
                        goto out;
                /*
                 * Death signals, no core dump.
                 */
-               do_group_exit(ksig->info.si_signo);
+               do_group_exit(signr);
                /* NOTREACHED */
        }
        spin_unlock_irq(&sighand->siglock);
- out:
        ksig->sig = signr;
  
-       if (!(ksig->ka.sa.sa_flags & SA_EXPOSE_TAGBITS))
+       if (signr && !(ksig->ka.sa.sa_flags & SA_EXPOSE_TAGBITS))
                hide_si_addr_tag_bits(ksig);
-       return ksig->sig > 0;
+ out:
+       return signr > 0;
  }
  
  /**
@@@ -3803,13 -3793,12 +3807,13 @@@ COMPAT_SYSCALL_DEFINE4(rt_sigtimedwait_
  #endif
  #endif
  
 -static inline void prepare_kill_siginfo(int sig, struct kernel_siginfo *info)
 +static void prepare_kill_siginfo(int sig, struct kernel_siginfo *info,
 +                               enum pid_type type)
  {
        clear_siginfo(info);
        info->si_signo = sig;
        info->si_errno = 0;
 -      info->si_code = SI_USER;
 +      info->si_code = (type == PIDTYPE_PID) ? SI_TKILL : SI_USER;
        info->si_pid = task_tgid_vnr(current);
        info->si_uid = from_kuid_munged(current_user_ns(), current_uid());
  }
@@@ -3823,7 -3812,7 +3827,7 @@@ SYSCALL_DEFINE2(kill, pid_t, pid, int, 
  {
        struct kernel_siginfo info;
  
 -      prepare_kill_siginfo(sig, &info);
 +      prepare_kill_siginfo(sig, &info, PIDTYPE_TGID);
  
        return kill_something_info(sig, &info, pid);
  }
@@@ -3876,10 -3865,6 +3880,10 @@@ static struct pid *pidfd_to_pid(const s
        return tgid_pidfd_to_pid(file);
  }
  
 +#define PIDFD_SEND_SIGNAL_FLAGS                            \
 +      (PIDFD_SIGNAL_THREAD | PIDFD_SIGNAL_THREAD_GROUP | \
 +       PIDFD_SIGNAL_PROCESS_GROUP)
 +
  /**
   * sys_pidfd_send_signal - Signal a process through a pidfd
   * @pidfd:  file descriptor of the process
   * @info:   signal info
   * @flags:  future flags
   *
 - * The syscall currently only signals via PIDTYPE_PID which covers
 - * kill(<positive-pid>, <signal>. It does not signal threads or process
 - * groups.
 - * In order to extend the syscall to threads and process groups the @flags
 - * argument should be used. In essence, the @flags argument will determine
 - * what is signaled and not the file descriptor itself. Put in other words,
 - * grouping is a property of the flags argument not a property of the file
 - * descriptor.
 + * Send the signal to the thread group or to the individual thread depending
 + * on PIDFD_THREAD.
 + * In the future extension to @flags may be used to override the default scope
 + * of @pidfd.
   *
   * Return: 0 on success, negative errno on failure
   */
@@@ -3901,14 -3890,9 +3905,14 @@@ SYSCALL_DEFINE4(pidfd_send_signal, int
        struct fd f;
        struct pid *pid;
        kernel_siginfo_t kinfo;
 +      enum pid_type type;
  
        /* Enforce flags be set to 0 until we add an extension. */
 -      if (flags)
 +      if (flags & ~PIDFD_SEND_SIGNAL_FLAGS)
 +              return -EINVAL;
 +
 +      /* Ensure that only a single signal scope determining flag is set. */
 +      if (hweight32(flags & PIDFD_SEND_SIGNAL_FLAGS) > 1)
                return -EINVAL;
  
        f = fdget(pidfd);
        if (!access_pidfd_pidns(pid))
                goto err;
  
 +      switch (flags) {
 +      case 0:
 +              /* Infer scope from the type of pidfd. */
 +              if (f.file->f_flags & PIDFD_THREAD)
 +                      type = PIDTYPE_PID;
 +              else
 +                      type = PIDTYPE_TGID;
 +              break;
 +      case PIDFD_SIGNAL_THREAD:
 +              type = PIDTYPE_PID;
 +              break;
 +      case PIDFD_SIGNAL_THREAD_GROUP:
 +              type = PIDTYPE_TGID;
 +              break;
 +      case PIDFD_SIGNAL_PROCESS_GROUP:
 +              type = PIDTYPE_PGID;
 +              break;
 +      }
 +
        if (info) {
                ret = copy_siginfo_from_user_any(&kinfo, info);
                if (unlikely(ret))
  
                /* Only allow sending arbitrary signals to yourself. */
                ret = -EPERM;
 -              if ((task_pid(current) != pid) &&
 +              if ((task_pid(current) != pid || type > PIDTYPE_TGID) &&
                    (kinfo.si_code >= 0 || kinfo.si_code == SI_TKILL))
                        goto err;
        } else {
 -              prepare_kill_siginfo(sig, &kinfo);
 +              prepare_kill_siginfo(sig, &kinfo, type);
        }
  
 -      ret = kill_pid_info(sig, &kinfo, pid);
 -
 +      if (type == PIDTYPE_PGID)
 +              ret = kill_pgrp_info(sig, &kinfo, pid);
 +      else
 +              ret = kill_pid_info_type(sig, &kinfo, pid, type);
  err:
        fdput(f);
        return ret;
@@@ -4006,7 -3969,12 +4010,7 @@@ static int do_tkill(pid_t tgid, pid_t p
  {
        struct kernel_siginfo info;
  
 -      clear_siginfo(&info);
 -      info.si_signo = sig;
 -      info.si_errno = 0;
 -      info.si_code = SI_TKILL;
 -      info.si_pid = task_tgid_vnr(current);
 -      info.si_uid = from_kuid_munged(current_user_ns(), current_uid());
 +      prepare_kill_siginfo(sig, &info, PIDTYPE_PID);
  
        return do_send_specific(tgid, pid, sig, &info);
  }
diff --combined lib/Kconfig.debug
@@@ -1303,7 -1303,7 +1303,7 @@@ config PROVE_LOCKIN
        select DEBUG_SPINLOCK
        select DEBUG_MUTEXES if !PREEMPT_RT
        select DEBUG_RT_MUTEXES if RT_MUTEXES
 -      select DEBUG_RWSEMS
 +      select DEBUG_RWSEMS if !PREEMPT_RT
        select DEBUG_WW_MUTEX_SLOWPATH
        select DEBUG_LOCK_ALLOC
        select PREEMPT_COUNT if !ARCH_NO_PREEMPT
@@@ -1426,7 -1426,7 +1426,7 @@@ config DEBUG_WW_MUTEX_SLOWPAT
  
  config DEBUG_RWSEMS
        bool "RW Semaphore debugging: basic checks"
 -      depends on DEBUG_KERNEL
 +      depends on DEBUG_KERNEL && !PREEMPT_RT
        help
          This debugging feature allows mismatched rw semaphore locks
          and unlocks to be detected and reported.
@@@ -2085,7 -2085,7 +2085,7 @@@ config KCO
        depends on ARCH_HAS_KCOV
        depends on CC_HAS_SANCOV_TRACE_PC || GCC_PLUGINS
        depends on !ARCH_WANTS_NO_INSTR || HAVE_NOINSTR_HACK || \
-                  GCC_VERSION >= 120000 || CLANG_VERSION >= 130000
+                  GCC_VERSION >= 120000 || CC_IS_CLANG
        select DEBUG_FS
        select GCC_PLUGIN_SANCOV if !CC_HAS_SANCOV_TRACE_PC
        select OBJTOOL if HAVE_NOINSTR_HACK
@@@ -2142,7 -2142,7 +2142,7 @@@ config TEST_DHR
  
          To run the benchmark, it needs to be enabled explicitly, either from
          the kernel command line (when built-in), or from userspace (when
-         built-in or modular.
+         built-in or modular).
  
          Run once during kernel boot:
  
@@@ -2235,7 -2235,6 +2235,7 @@@ config TEST_DIV6
  config TEST_IOV_ITER
        tristate "Test iov_iter operation" if !KUNIT_ALL_TESTS
        depends on KUNIT
 +      depends on MMU
        default KUNIT_ALL_TESTS
        help
          Enable this to turn on testing of the operation of the I/O iterator
@@@ -2353,15 -2352,11 +2353,15 @@@ config ASYNC_RAID6_TES
  config TEST_HEXDUMP
        tristate "Test functions located in the hexdump module at runtime"
  
 -config STRING_SELFTEST
 -      tristate "Test string functions at runtime"
 +config STRING_KUNIT_TEST
 +      tristate "KUnit test string functions at runtime" if !KUNIT_ALL_TESTS
 +      depends on KUNIT
 +      default KUNIT_ALL_TESTS
  
 -config TEST_STRING_HELPERS
 -      tristate "Test functions located in the string_helpers module at runtime"
 +config STRING_HELPERS_KUNIT_TEST
 +      tristate "KUnit test string helpers at runtime" if !KUNIT_ALL_TESTS
 +      depends on KUNIT
 +      default KUNIT_ALL_TESTS
  
  config TEST_KSTRTOX
        tristate "Test kstrto*() family of functions at runtime"
@@@ -2753,7 -2748,7 +2753,7 @@@ config STACKINIT_KUNIT_TES
  
  config FORTIFY_KUNIT_TEST
        tristate "Test fortified str*() and mem*() function internals at runtime" if !KUNIT_ALL_TESTS
 -      depends on KUNIT && FORTIFY_SOURCE
 +      depends on KUNIT
        default KUNIT_ALL_TESTS
        help
          Builds unit tests for checking internals of FORTIFY_SOURCE as used
@@@ -2862,6 -2857,28 +2862,6 @@@ config TEST_MEMCAT_
  
          If unsure, say N.
  
 -config TEST_LIVEPATCH
 -      tristate "Test livepatching"
 -      default n
 -      depends on DYNAMIC_DEBUG
 -      depends on LIVEPATCH
 -      depends on m
 -      help
 -        Test kernel livepatching features for correctness.  The tests will
 -        load test modules that will be livepatched in various scenarios.
 -
 -        To run all the livepatching tests:
 -
 -        make -C tools/testing/selftests TARGETS=livepatch run_tests
 -
 -        Alternatively, individual tests may be invoked:
 -
 -        tools/testing/selftests/livepatch/test-callbacks.sh
 -        tools/testing/selftests/livepatch/test-livepatch.sh
 -        tools/testing/selftests/livepatch/test-shadow-vars.sh
 -
 -        If unsure, say N.
 -
  config TEST_OBJAGG
        tristate "Perform selftest on object aggreration manager"
        default n
diff --combined lib/buildid.c
@@@ -140,7 -140,7 +140,7 @@@ int build_id_parse(struct vm_area_struc
                return -EFAULT; /* page not mapped */
  
        ret = -EINVAL;
-       page_addr = kmap_atomic(page);
+       page_addr = kmap_local_page(page);
        ehdr = (Elf32_Ehdr *)page_addr;
  
        /* compare magic x7f "ELF" */
        else if (ehdr->e_ident[EI_CLASS] == ELFCLASS64)
                ret = get_build_id_64(page_addr, build_id, size);
  out:
-       kunmap_atomic(page_addr);
+       kunmap_local(page_addr);
        put_page(page);
        return ret;
  }
@@@ -174,7 -174,7 +174,7 @@@ int build_id_parse_buf(const void *buf
        return parse_build_id_buf(build_id, NULL, buf, buf_size);
  }
  
 -#if IS_ENABLED(CONFIG_STACKTRACE_BUILD_ID) || IS_ENABLED(CONFIG_CRASH_CORE)
 +#if IS_ENABLED(CONFIG_STACKTRACE_BUILD_ID) || IS_ENABLED(CONFIG_VMCORE_INFO)
  unsigned char vmlinux_build_id[BUILD_ID_SIZE_MAX] __ro_after_init;
  
  /**
diff --combined lib/stackinit_kunit.c
@@@ -63,16 -63,7 +63,16 @@@ static bool stackinit_range_contains(ch
  #define FETCH_ARG_STRING(var)         var
  #define FETCH_ARG_STRUCT(var)         &var
  
 +/*
 + * On m68k, if the leaf function test variable is longer than 8 bytes,
 + * the start of the stack frame moves. 8 is sufficiently large to
 + * test m68k char arrays, but leave it at 16 for other architectures.
 + */
 +#ifdef CONFIG_M68K
 +#define FILL_SIZE_STRING              8
 +#else
  #define FILL_SIZE_STRING              16
 +#endif
  
  #define INIT_CLONE_SCALAR             /**/
  #define INIT_CLONE_STRING             [FILL_SIZE_STRING]
@@@ -174,23 -165,19 +174,23 @@@ static noinline void test_ ## name (str
        /* Verify all bytes overwritten with 0xFF. */           \
        for (sum = 0, i = 0; i < target_size; i++)              \
                sum += (check_buf[i] != 0xFF);                  \
 -      KUNIT_ASSERT_EQ_MSG(test, sum, 0,                       \
 -                          "leaf fill was not 0xFF!?\n");      \
        /* Clear entire check buffer for later bit tests. */    \
        memset(check_buf, 0x00, sizeof(check_buf));             \
        /* Extract stack-defined variable contents. */          \
        ignored = leaf_ ##name((unsigned long)&ignored, 0,      \
                                FETCH_ARG_ ## which(zero));     \
 +      /*                                                      \
 +       * Delay the sum test to here to do as little as        \
 +       * possible between the two leaf function calls.        \
 +       */                                                     \
 +      KUNIT_ASSERT_EQ_MSG(test, sum, 0,                       \
 +                          "leaf fill was not 0xFF!?\n");      \
                                                                \
        /* Validate that compiler lined up fill and target. */  \
        KUNIT_ASSERT_TRUE_MSG(test,                             \
                stackinit_range_contains(fill_start, fill_size, \
                            target_start, target_size),         \
 -              "stack fill missed target!? "                   \
 +              "stackframe was not the same between calls!? "  \
                "(fill %zu wide, target offset by %d)\n",       \
                fill_size,                                      \
                (int)((ssize_t)(uintptr_t)fill_start -          \
@@@ -417,7 -404,7 +417,7 @@@ static noinline int leaf_switch_2_none(
   * These are expected to fail for most configurations because neither
   * GCC nor Clang have a way to perform initialization of variables in
   * non-code areas (i.e. in a switch statement before the first "case").
-  * https://bugs.llvm.org/show_bug.cgi?id=44916
+  * https://llvm.org/pr44916
   */
  DEFINE_TEST_DRIVER(switch_1_none, uint64_t, SCALAR, ALWAYS_FAIL);
  DEFINE_TEST_DRIVER(switch_2_none, uint64_t, SCALAR, ALWAYS_FAIL);
diff --combined mm/slab_common.c
@@@ -50,7 -50,7 +50,7 @@@ static DECLARE_WORK(slab_caches_to_rcu_
   */
  #define SLAB_NEVER_MERGE (SLAB_RED_ZONE | SLAB_POISON | SLAB_STORE_USER | \
                SLAB_TRACE | SLAB_TYPESAFE_BY_RCU | SLAB_NOLEAKTRACE | \
 -              SLAB_FAILSLAB | SLAB_NO_MERGE | kasan_never_merge())
 +              SLAB_FAILSLAB | SLAB_NO_MERGE)
  
  #define SLAB_MERGE_SAME (SLAB_RECLAIM_ACCOUNT | SLAB_CACHE_DMA | \
                         SLAB_CACHE_DMA32 | SLAB_ACCOUNT)
@@@ -172,7 -172,7 +172,7 @@@ struct kmem_cache *find_mergeable(unsig
        size = ALIGN(size, sizeof(void *));
        align = calculate_alignment(flags, align, size);
        size = ALIGN(size, align);
 -      flags = kmem_cache_flags(size, flags, name);
 +      flags = kmem_cache_flags(flags, name);
  
        if (flags & SLAB_NEVER_MERGE)
                return NULL;
@@@ -282,7 -282,7 +282,7 @@@ kmem_cache_create_usercopy(const char *
  
  #ifdef CONFIG_SLUB_DEBUG
        /*
 -       * If no slub_debug was enabled globally, the static key is not yet
 +       * If no slab_debug was enabled globally, the static key is not yet
         * enabled by setup_slub_debug(). Enable it if the cache is being
         * created with any of the debugging flags passed explicitly.
         * It's also possible that this is the first cache created with
@@@ -404,12 -404,8 +404,12 @@@ EXPORT_SYMBOL(kmem_cache_create)
   */
  static void kmem_cache_release(struct kmem_cache *s)
  {
 -      sysfs_slab_unlink(s);
 -      sysfs_slab_release(s);
 +      if (slab_state >= FULL) {
 +              sysfs_slab_unlink(s);
 +              sysfs_slab_release(s);
 +      } else {
 +              slab_kmem_cache_release(s);
 +      }
  }
  #else
  static void kmem_cache_release(struct kmem_cache *s)
@@@ -655,7 -651,7 +655,7 @@@ static struct kmem_cache *__init create
  
  struct kmem_cache *
  kmalloc_caches[NR_KMALLOC_TYPES][KMALLOC_SHIFT_HIGH + 1] __ro_after_init =
- { /* initialization for https://bugs.llvm.org/show_bug.cgi?id=42570 */ };
+ { /* initialization for https://llvm.org/pr42570 */ };
  EXPORT_SYMBOL(kmalloc_caches);
  
  #ifdef CONFIG_RANDOM_KMALLOC_CACHES
@@@ -770,7 -766,7 +770,7 @@@ EXPORT_SYMBOL(kmalloc_size_roundup)
  }
  
  /*
 - * kmalloc_info[] is to make slub_debug=,kmalloc-xx option work at boot time.
 + * kmalloc_info[] is to make slab_debug=,kmalloc-xx option work at boot time.
   * kmalloc_index() supports up to 2^21=2MB, so the final entry of the table is
   * kmalloc-2M.
   */
@@@ -857,10 -853,9 +857,10 @@@ static unsigned int __kmalloc_minalign(
        return max(minalign, arch_slab_minalign());
  }
  
 -void __init
 -new_kmalloc_cache(int idx, enum kmalloc_cache_type type, slab_flags_t flags)
 +static void __init
 +new_kmalloc_cache(int idx, enum kmalloc_cache_type type)
  {
 +      slab_flags_t flags = 0;
        unsigned int minalign = __kmalloc_minalign();
        unsigned int aligned_size = kmalloc_info[idx].size;
        int aligned_idx = idx;
   * may already have been created because they were needed to
   * enable allocations for slab creation.
   */
 -void __init create_kmalloc_caches(slab_flags_t flags)
 +void __init create_kmalloc_caches(void)
  {
        int i;
        enum kmalloc_cache_type type;
        for (type = KMALLOC_NORMAL; type < NR_KMALLOC_TYPES; type++) {
                for (i = KMALLOC_SHIFT_LOW; i <= KMALLOC_SHIFT_HIGH; i++) {
                        if (!kmalloc_caches[type][i])
 -                              new_kmalloc_cache(i, type, flags);
 +                              new_kmalloc_cache(i, type);
  
                        /*
                         * Caches that are not of the two-to-the-power-of size.
                         */
                        if (KMALLOC_MIN_SIZE <= 32 && i == 6 &&
                                        !kmalloc_caches[type][1])
 -                              new_kmalloc_cache(1, type, flags);
 +                              new_kmalloc_cache(1, type);
                        if (KMALLOC_MIN_SIZE <= 64 && i == 7 &&
                                        !kmalloc_caches[type][2])
 -                              new_kmalloc_cache(2, type, flags);
 +                              new_kmalloc_cache(2, type);
                }
        }
  #ifdef CONFIG_RANDOM_KMALLOC_CACHES
diff --combined net/ipv6/ip6_gre.c
@@@ -1511,7 -1511,6 +1511,7 @@@ static int ip6gre_tunnel_init_common(st
        ip6gre_tnl_init_features(dev);
  
        netdev_hold(dev, &tunnel->dev_tracker, GFP_KERNEL);
 +      netdev_lockdep_set_classes(dev);
        return 0;
  
  cleanup_dst_cache_init:
@@@ -1633,19 -1632,21 +1633,19 @@@ err_alloc_dev
        return err;
  }
  
 -static void __net_exit ip6gre_exit_batch_net(struct list_head *net_list)
 +static void __net_exit ip6gre_exit_batch_rtnl(struct list_head *net_list,
 +                                            struct list_head *dev_to_kill)
  {
        struct net *net;
 -      LIST_HEAD(list);
  
 -      rtnl_lock();
 +      ASSERT_RTNL();
        list_for_each_entry(net, net_list, exit_list)
 -              ip6gre_destroy_tunnels(net, &list);
 -      unregister_netdevice_many(&list);
 -      rtnl_unlock();
 +              ip6gre_destroy_tunnels(net, dev_to_kill);
  }
  
  static struct pernet_operations ip6gre_net_ops = {
        .init = ip6gre_init_net,
 -      .exit_batch = ip6gre_exit_batch_net,
 +      .exit_batch_rtnl = ip6gre_exit_batch_rtnl,
        .id   = &ip6gre_net_id,
        .size = sizeof(struct ip6gre_net),
  };
@@@ -1902,7 -1903,6 +1902,7 @@@ static int ip6erspan_tap_init(struct ne
        ip6erspan_tnl_link_config(tunnel, 1);
  
        netdev_hold(dev, &tunnel->dev_tracker, GFP_KERNEL);
 +      netdev_lockdep_set_classes(dev);
        return 0;
  
  cleanup_dst_cache_init:
@@@ -2405,7 -2405,7 +2405,7 @@@ static void __exit ip6gre_fini(void
  module_init(ip6gre_init);
  module_exit(ip6gre_fini);
  MODULE_LICENSE("GPL");
- MODULE_AUTHOR("D. Kozlov (xeb@mail.ru)");
+ MODULE_AUTHOR("D. Kozlov <xeb@mail.ru>");
  MODULE_DESCRIPTION("GRE over IPv6 tunneling device");
  MODULE_ALIAS_RTNL_LINK("ip6gre");
  MODULE_ALIAS_RTNL_LINK("ip6gretap");
diff --combined net/iucv/iucv.c
@@@ -156,7 -156,7 +156,7 @@@ static char iucv_error_pathid[16] = "IN
  static LIST_HEAD(iucv_handler_list);
  
  /*
 - * iucv_path_table: an array of iucv_path structures.
 + * iucv_path_table: array of pointers to iucv_path structures.
   */
  static struct iucv_path **iucv_path_table;
  static unsigned long iucv_max_pathid;
@@@ -286,7 -286,6 +286,7 @@@ static union iucv_param *iucv_param_irq
   */
  static inline int __iucv_call_b2f0(int command, union iucv_param *parm)
  {
 +      unsigned long reg1 = virt_to_phys(parm);
        int cc;
  
        asm volatile(
                "       srl     %[cc],28\n"
                : [cc] "=&d" (cc), "+m" (*parm)
                : [reg0] "d" ((unsigned long)command),
 -                [reg1] "d" ((unsigned long)parm)
 +                [reg1] "d" (reg1)
                : "cc", "0", "1");
        return cc;
  }
@@@ -545,7 -544,7 +545,7 @@@ static int iucv_enable(void
  
        cpus_read_lock();
        rc = -ENOMEM;
 -      alloc_size = iucv_max_pathid * sizeof(struct iucv_path);
 +      alloc_size = iucv_max_pathid * sizeof(*iucv_path_table);
        iucv_path_table = kzalloc(alloc_size, GFP_KERNEL);
        if (!iucv_path_table)
                goto out;
@@@ -1124,7 -1123,7 +1124,7 @@@ int __iucv_message_receive(struct iucv_
  
        parm = iucv_param[smp_processor_id()];
        memset(parm, 0, sizeof(union iucv_param));
 -      parm->db.ipbfadr1 = (u32)(addr_t) buffer;
 +      parm->db.ipbfadr1 = (u32)virt_to_phys(buffer);
        parm->db.ipbfln1f = (u32) size;
        parm->db.ipmsgid = msg->id;
        parm->db.ippathid = path->pathid;
@@@ -1242,7 -1241,7 +1242,7 @@@ int iucv_message_reply(struct iucv_pat
                parm->dpl.iptrgcls = msg->class;
                memcpy(parm->dpl.iprmmsg, reply, min_t(size_t, size, 8));
        } else {
 -              parm->db.ipbfadr1 = (u32)(addr_t) reply;
 +              parm->db.ipbfadr1 = (u32)virt_to_phys(reply);
                parm->db.ipbfln1f = (u32) size;
                parm->db.ippathid = path->pathid;
                parm->db.ipflags1 = flags;
@@@ -1294,7 -1293,7 +1294,7 @@@ int __iucv_message_send(struct iucv_pat
                parm->dpl.ipmsgtag = msg->tag;
                memcpy(parm->dpl.iprmmsg, buffer, 8);
        } else {
 -              parm->db.ipbfadr1 = (u32)(addr_t) buffer;
 +              parm->db.ipbfadr1 = (u32)virt_to_phys(buffer);
                parm->db.ipbfln1f = (u32) size;
                parm->db.ippathid = path->pathid;
                parm->db.ipflags1 = flags | IUCV_IPNORPY;
@@@ -1379,7 -1378,7 +1379,7 @@@ int iucv_message_send2way(struct iucv_p
                parm->dpl.iptrgcls = msg->class;
                parm->dpl.ipsrccls = srccls;
                parm->dpl.ipmsgtag = msg->tag;
 -              parm->dpl.ipbfadr2 = (u32)(addr_t) answer;
 +              parm->dpl.ipbfadr2 = (u32)virt_to_phys(answer);
                parm->dpl.ipbfln2f = (u32) asize;
                memcpy(parm->dpl.iprmmsg, buffer, 8);
        } else {
                parm->db.iptrgcls = msg->class;
                parm->db.ipsrccls = srccls;
                parm->db.ipmsgtag = msg->tag;
 -              parm->db.ipbfadr1 = (u32)(addr_t) buffer;
 +              parm->db.ipbfadr1 = (u32)virt_to_phys(buffer);
                parm->db.ipbfln1f = (u32) size;
 -              parm->db.ipbfadr2 = (u32)(addr_t) answer;
 +              parm->db.ipbfadr2 = (u32)virt_to_phys(answer);
                parm->db.ipbfln2f = (u32) asize;
        }
        rc = iucv_call_b2f0(IUCV_SEND, parm);
@@@ -1904,6 -1903,6 +1904,6 @@@ static void __exit iucv_exit(void
  subsys_initcall(iucv_init);
  module_exit(iucv_exit);
  
- MODULE_AUTHOR("(C) 2001 IBM Corp. by Fritz Elfert (felfert@millenux.com)");
+ MODULE_AUTHOR("(C) 2001 IBM Corp. by Fritz Elfert <felfert@millenux.com>");
  MODULE_DESCRIPTION("Linux for S/390 IUCV lowlevel driver");
  MODULE_LICENSE("GPL");
diff --combined net/mpls/mpls_gso.c
@@@ -27,9 -27,6 +27,9 @@@ static struct sk_buff *mpls_gso_segment
        __be16 mpls_protocol;
        unsigned int mpls_hlen;
  
 +      if (!skb_inner_network_header_was_set(skb))
 +              goto out;
 +
        skb_reset_network_header(skb);
        mpls_hlen = skb_inner_network_header(skb) - skb_network_header(skb);
        if (unlikely(!mpls_hlen || mpls_hlen % MPLS_HLEN))
@@@ -109,5 -106,5 +109,5 @@@ module_init(mpls_gso_init)
  module_exit(mpls_gso_exit);
  
  MODULE_DESCRIPTION("MPLS GSO support");
- MODULE_AUTHOR("Simon Horman (horms@verge.net.au)");
+ MODULE_AUTHOR("Simon Horman <horms@verge.net.au>");
  MODULE_LICENSE("GPL");
@@@ -29,11 -29,11 +29,11 @@@ llvm
        elif [ "$SRCARCH" = loongarch ]; then
                echo 18.0.0
        else
-               echo 11.0.0
+               echo 13.0.1
        fi
        ;;
  rustc)
 -      echo 1.74.1
 +      echo 1.76.0
        ;;
  bindgen)
        echo 0.65.1
@@@ -6,14 -6,12 +6,13 @@@
   *
   * Yes, this is unfortunate.  A better solution is in the works.
   */
 +NORETURN(__fortify_panic)
  NORETURN(__kunit_abort)
  NORETURN(__module_put_and_kthread_exit)
  NORETURN(__reiserfs_panic)
  NORETURN(__stack_chk_fail)
  NORETURN(__tdx_hypercall_failed)
  NORETURN(__ubsan_handle_builtin_unreachable)
- NORETURN(arch_call_rest_init)
  NORETURN(arch_cpu_idle_dead)
  NORETURN(bch2_trans_in_restart_error)
  NORETURN(bch2_trans_restart_error)
@@@ -23,6 -21,7 +22,6 @@@ NORETURN(do_exit
  NORETURN(do_group_exit)
  NORETURN(do_task_dead)
  NORETURN(ex_handler_msr_mce)
 -NORETURN(fortify_panic)
  NORETURN(hlt_play_dead)
  NORETURN(hv_ghcb_terminate)
  NORETURN(kthread_complete_and_exit)
@@@ -70,7 -70,6 +70,7 @@@ TEST_GEN_FILES += ksm_test
  TEST_GEN_FILES += ksm_functional_tests
  TEST_GEN_FILES += mdwe_test
  TEST_GEN_FILES += hugetlb_fault_after_madv
 +TEST_GEN_FILES += hugetlb_madv_vs_map
  
  ifneq ($(ARCH),arm64)
  TEST_GEN_FILES += soft-dirty
@@@ -115,6 -114,11 +115,11 @@@ TEST_PROGS := run_vmtests.s
  TEST_FILES := test_vmalloc.sh
  TEST_FILES += test_hmm.sh
  TEST_FILES += va_high_addr_switch.sh
+ TEST_FILES += charge_reserved_hugetlb.sh
+ TEST_FILES += hugetlb_reparenting_test.sh
+ # required by charge_reserved_hugetlb.sh
+ TEST_FILES += write_hugetlb_memory.sh
  
  include ../lib.mk
  
@@@ -15,10 -15,11 +15,11 @@@ usage() 
        cat <<EOF
  usage: ${BASH_SOURCE[0]:-$0} [ options ]
  
-   -a: run all tests, including extra ones
+   -a: run all tests, including extra ones (other than destructive ones)
    -t: specify specific categories to tests to run
    -h: display this message
    -n: disable TAP output
+   -d: run destructive tests
  
  The default behavior is to run required tests only.  If -a is specified,
  will run all tests.
@@@ -64,8 -65,6 +65,8 @@@ separated by spaces
        test copy-on-write semantics
  - thp
        test transparent huge pages
 +- hugetlb
 +      test hugetlbfs huge pages
  - migration
        invoke move_pages(2) to exercise the migration entry code
        paths in the kernel
@@@ -81,6 -80,7 +82,7 @@@ EO
  }
  
  RUN_ALL=false
+ RUN_DESTRUCTIVE=false
  TAP_PREFIX="# "
  
  while getopts "aht:n" OPT; do
@@@ -89,6 -89,7 +91,7 @@@
                "h") usage ;;
                "t") VM_SELFTEST_ITEMS=${OPTARG} ;;
                "n") TAP_PREFIX= ;;
+               "d") RUN_DESTRUCTIVE=true ;;
        esac
  done
  shift $((OPTIND -1))
@@@ -175,6 -176,7 +178,6 @@@ if [ -n "$freepgs" ] && [ -n "$hpgsize_
        if [ "$freepgs" -lt "$needpgs" ]; then
                printf "Not enough huge pages available (%d < %d)\n" \
                       "$freepgs" "$needpgs"
 -              exit 1
        fi
  else
        echo "no hugetlbfs support in kernel?"
@@@ -207,15 -209,6 +210,15 @@@ pretty_name() 
  # Usage: run_test [test binary] [arbitrary test arguments...]
  run_test() {
        if test_selected ${CATEGORY}; then
 +              # On memory constrainted systems some tests can fail to allocate hugepages.
 +              # perform some cleanup before the test for a higher success rate.
 +              if [ ${CATEGORY} == "thp" ] | [ ${CATEGORY} == "hugetlb" ]; then
 +                      echo 3 > /proc/sys/vm/drop_caches
 +                      sleep 2
 +                      echo 1 > /proc/sys/vm/compact_memory
 +                      sleep 2
 +              fi
 +
                local test=$(pretty_name "$*")
                local title="running $*"
                local sep=$(echo -n "$title" | tr "[:graph:][:space:]" -)
@@@ -263,7 -256,6 +266,7 @@@ nr_hugepages_tmp=$(cat /proc/sys/vm/nr_
  # For this test, we need one and just one huge page
  echo 1 > /proc/sys/vm/nr_hugepages
  CATEGORY="hugetlb" run_test ./hugetlb_fault_after_madv
 +CATEGORY="hugetlb" run_test ./hugetlb_madv_vs_map
  # Restore the previous number of huge pages, since further tests rely on it
  echo "$nr_hugepages_tmp" > /proc/sys/vm/nr_hugepages
  
@@@ -302,7 -294,12 +305,12 @@@ echo "$nr_hugepgs" > /proc/sys/vm/nr_hu
  
  CATEGORY="compaction" run_test ./compaction_test
  
- CATEGORY="mlock" run_test sudo -u nobody ./on-fault-limit
+ if command -v sudo &> /dev/null;
+ then
+       CATEGORY="mlock" run_test sudo -u nobody ./on-fault-limit
+ else
+       echo "# SKIP ./on-fault-limit"
+ fi
  
  CATEGORY="mmap" run_test ./map_populate
  
@@@ -315,6 -312,11 +323,11 @@@ CATEGORY="process_mrelease" run_test ./
  CATEGORY="mremap" run_test ./mremap_test
  
  CATEGORY="hugetlb" run_test ./thuge-gen
+ CATEGORY="hugetlb" run_test ./charge_reserved_hugetlb.sh -cgroup-v2
+ CATEGORY="hugetlb" run_test ./hugetlb_reparenting_test.sh -cgroup-v2
+ if $RUN_DESTRUCTIVE; then
+ CATEGORY="hugetlb" run_test ./hugetlb-read-hwpoison
+ fi
  
  if [ $VADDR64 -ne 0 ]; then
  
@@@ -398,27 -400,7 +411,27 @@@ CATEGORY="thp" run_test ./khugepaged -
  
  CATEGORY="thp" run_test ./transhuge-stress -d 20
  
 -CATEGORY="thp" run_test ./split_huge_page_test
 +# Try to create XFS if not provided
 +if [ -z "${SPLIT_HUGE_PAGE_TEST_XFS_PATH}" ]; then
 +    if test_selected "thp"; then
 +        if grep xfs /proc/filesystems &>/dev/null; then
 +            XFS_IMG=$(mktemp /tmp/xfs_img_XXXXXX)
 +            SPLIT_HUGE_PAGE_TEST_XFS_PATH=$(mktemp -d /tmp/xfs_dir_XXXXXX)
 +            truncate -s 314572800 ${XFS_IMG}
 +            mkfs.xfs -q ${XFS_IMG}
 +            mount -o loop ${XFS_IMG} ${SPLIT_HUGE_PAGE_TEST_XFS_PATH}
 +            MOUNTED_XFS=1
 +        fi
 +    fi
 +fi
 +
 +CATEGORY="thp" run_test ./split_huge_page_test ${SPLIT_HUGE_PAGE_TEST_XFS_PATH}
 +
 +if [ -n "${MOUNTED_XFS}" ]; then
 +    umount ${SPLIT_HUGE_PAGE_TEST_XFS_PATH}
 +    rmdir ${SPLIT_HUGE_PAGE_TEST_XFS_PATH}
 +    rm -f ${XFS_IMG}
 +fi
  
  CATEGORY="migration" run_test ./migration