]> Git Repo - J-linux.git/commitdiff
Merge tag 'docs-6.0' of git://git.lwn.net/linux
authorLinus Torvalds <[email protected]>
Wed, 3 Aug 2022 02:24:24 +0000 (19:24 -0700)
committerLinus Torvalds <[email protected]>
Wed, 3 Aug 2022 02:24:24 +0000 (19:24 -0700)
Pull documentation updates from Jonathan Corbet:
 "This was a moderately busy cycle for documentation, but nothing
  all that earth-shaking:

   - More Chinese translations, and an update to the Italian
     translations.

     The Japanese, Korean, and traditional Chinese translations
     are more-or-less unmaintained at this point, instead.

   - Some build-system performance improvements.

   - The removal of the archaic submitting-drivers.rst document,
     with the movement of what useful material that remained into
     other docs.

   - Improvements to sphinx-pre-install to, hopefully, give more
     useful suggestions.

   - A number of build-warning fixes

  Plus the usual collection of typo fixes, updates, and more"

* tag 'docs-6.0' of git://git.lwn.net/linux: (92 commits)
  docs: efi-stub: Fix paths for x86 / arm stubs
  Docs/zh_CN: Update the translation of sched-stats to 5.19-rc8
  Docs/zh_CN: Update the translation of pci to 5.19-rc8
  Docs/zh_CN: Update the translation of pci-iov-howto to 5.19-rc8
  Docs/zh_CN: Update the translation of usage to 5.19-rc8
  Docs/zh_CN: Update the translation of testing-overview to 5.19-rc8
  Docs/zh_CN: Update the translation of sparse to 5.19-rc8
  Docs/zh_CN: Update the translation of kasan to 5.19-rc8
  Docs/zh_CN: Update the translation of iio_configfs to 5.19-rc8
  doc:it_IT: align Italian documentation
  docs: Remove spurious tag from admin-guide/mm/overcommit-accounting.rst
  Documentation: process: Update email client instructions for Thunderbird
  docs: ABI: correct QEMU fw_cfg spec path
  doc/zh_CN: remove submitting-driver reference from docs
  docs: zh_TW: align to submitting-drivers removal
  docs: zh_CN: align to submitting-drivers removal
  docs: ko_KR: howto: remove reference to removed submitting-drivers
  docs: ja_JP: howto: remove reference to removed submitting-drivers
  docs: it_IT: align to submitting-drivers removal
  docs: process: remove outdated submitting-drivers.rst
  ...

12 files changed:
1  2 
Documentation/admin-guide/kernel-parameters.txt
Documentation/arm64/elf_hwcaps.rst
Documentation/driver-api/gpio/consumer.rst
Documentation/translations/zh_CN/core-api/kernel-api.rst
Documentation/virt/kvm/api.rst
MAINTAINERS
include/linux/fscache.h
include/linux/objtool.h
init/Kconfig
kernel/watch_queue.c
tools/include/linux/objtool.h
tools/objtool/check.c

index df9a5b60ee46204f4bce998f11f47f7c90122494,5ef0b2998af7e51a1ec3789eb094f84ec7d1e0c6..0e990f7c2aa30e689de3cdae272b4e7197b8cfdd
        arm64.nomte     [ARM64] Unconditionally disable Memory Tagging Extension
                        support
  
 +      arm64.nosve     [ARM64] Unconditionally disable Scalable Vector
 +                      Extension support
 +
 +      arm64.nosme     [ARM64] Unconditionally disable Scalable Matrix
 +                      Extension support
 +
        ataflop=        [HW,M68k]
  
        atarimouse=     [HW,MOUSE] Atari Mouse
                        nosocket -- Disable socket memory accounting.
                        nokmem -- Disable kernel memory accounting.
  
 -      checkreqprot    [SELINUX] Set initial checkreqprot flag value.
 +      checkreqprot=   [SELINUX] Set initial checkreqprot flag value.
                        Format: { "0" | "1" }
                        See security/selinux/Kconfig help text.
                        0 -- check protection applied by kernel (includes
                        (in particular on some ATI chipsets).
                        The kernel tries to set a reasonable default.
  
 -      enforcing       [SELINUX] Set initial enforcing status.
 +      enforcing=      [SELINUX] Set initial enforcing status.
                        Format: {"0" | "1"}
                        See security/selinux/Kconfig help text.
                        0 -- permissive (log only, no denials).
  
                        protected: nVHE-based mode with support for guests whose
                                   state is kept private from the host.
 -                                 Not valid if the kernel is running in EL2.
  
                        Defaults to VHE/nVHE based on hardware support. Setting
                        mode to "protected" will disable kexec and hibernation
                        mem_encrypt=on:         Activate SME
                        mem_encrypt=off:        Do not activate SME
  
-                       Refer to Documentation/virt/kvm/amd-memory-encryption.rst
+                       Refer to Documentation/virt/kvm/x86/amd-memory-encryption.rst
                        for details on when memory encryption can be activated.
  
        mem_sleep_default=      [SUSPEND] Default system suspend mode:
                                improves system performance, but it may also
                                expose users to several CPU vulnerabilities.
                                Equivalent to: nopti [X86,PPC]
 -                                             kpti=0 [ARM64]
 +                                             if nokaslr then kpti=0 [ARM64]
                                               nospectre_v1 [X86,PPC]
                                               nobp=0 [S390]
                                               nospectre_v2 [X86,PPC,S390,ARM64]
                                               srbds=off [X86,INTEL]
                                               no_entry_flush [PPC]
                                               no_uaccess_flush [PPC]
 +                                             mmio_stale_data=off [X86]
 +                                             retbleed=off [X86]
  
                                Exceptions:
                                               This does not have any effect on
                                Equivalent to: l1tf=flush,nosmt [X86]
                                               mds=full,nosmt [X86]
                                               tsx_async_abort=full,nosmt [X86]
 +                                             mmio_stale_data=full,nosmt [X86]
 +                                             retbleed=auto,nosmt [X86]
  
        mminit_loglevel=
                        [KNL] When CONFIG_DEBUG_MEMORY_INIT is set, this
                        log everything. Information is printed at KERN_DEBUG
                        so loglevel=8 may also need to be specified.
  
 +      mmio_stale_data=
 +                      [X86,INTEL] Control mitigation for the Processor
 +                      MMIO Stale Data vulnerabilities.
 +
 +                      Processor MMIO Stale Data is a class of
 +                      vulnerabilities that may expose data after an MMIO
 +                      operation. Exposed data could originate or end in
 +                      the same CPU buffers as affected by MDS and TAA.
 +                      Therefore, similar to MDS and TAA, the mitigation
 +                      is to clear the affected CPU buffers.
 +
 +                      This parameter controls the mitigation. The
 +                      options are:
 +
 +                      full       - Enable mitigation on vulnerable CPUs
 +
 +                      full,nosmt - Enable mitigation and disable SMT on
 +                                   vulnerable CPUs.
 +
 +                      off        - Unconditionally disable mitigation
 +
 +                      On MDS or TAA affected machines,
 +                      mmio_stale_data=off can be prevented by an active
 +                      MDS or TAA mitigation as these vulnerabilities are
 +                      mitigated with the same mechanism so in order to
 +                      disable this mitigation, you need to specify
 +                      mds=off and tsx_async_abort=off too.
 +
 +                      Not specifying this option is equivalent to
 +                      mmio_stale_data=full.
 +
 +                      For details see:
 +                      Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst
 +
        module.sig_enforce
                        [KNL] When CONFIG_MODULE_SIG is set, this means that
                        modules without (valid) signatures will fail to load.
                        just as if they had also been called out in the
                        rcu_nocbs= boot parameter.
  
 +                      Note that this argument takes precedence over
 +                      the CONFIG_RCU_NOCB_CPU_DEFAULT_ALL option.
 +
        noiotrap        [SH] Disables trapped I/O port accesses.
  
        noirqdebug      [X86-32] Disables the code which attempts to detect and
        noreplace-smp   [X86-32,SMP] Don't replace SMP instructions
                        with UP alternatives
  
 -      nordrand        [X86] Disable kernel use of the RDRAND and
 -                      RDSEED instructions even if they are supported
 -                      by the processor.  RDRAND and RDSEED are still
 -                      available to user space applications.
 -
        noresume        [SWSUSP] Disables resume and restores original swap
                        space.
  
                        no-callback mode from boot but the mode may be
                        toggled at runtime via cpusets.
  
 +                      Note that this argument takes precedence over
 +                      the CONFIG_RCU_NOCB_CPU_DEFAULT_ALL option.
 +
        rcu_nocb_poll   [KNL]
                        Rather than requiring that offloaded CPUs
                        (specified by rcu_nocbs= above) explicitly
                        When RCU_NOCB_CPU is set, also adjust the
                        priority of NOCB callback kthreads.
  
 +      rcutree.rcu_divisor= [KNL]
 +                      Set the shift-right count to use to compute
 +                      the callback-invocation batch limit bl from
 +                      the number of callbacks queued on this CPU.
 +                      The result will be bounded below by the value of
 +                      the rcutree.blimit kernel parameter.  Every bl
 +                      callbacks, the softirq handler will exit in
 +                      order to allow the CPU to do other work.
 +
 +                      Please note that this callback-invocation batch
 +                      limit applies only to non-offloaded callback
 +                      invocation.  Offloaded callbacks are instead
 +                      invoked in the context of an rcuoc kthread, which
 +                      scheduler will preempt as it does any other task.
 +
 +      rcutree.nocb_nobypass_lim_per_jiffy= [KNL]
 +                      On callback-offloaded (rcu_nocbs) CPUs,
 +                      RCU reduces the lock contention that would
 +                      otherwise be caused by callback floods through
 +                      use of the ->nocb_bypass list.  However, in the
 +                      common non-flooded case, RCU queues directly to
 +                      the main ->cblist in order to avoid the extra
 +                      overhead of the ->nocb_bypass list and its lock.
 +                      But if there are too many callbacks queued during
 +                      a single jiffy, RCU pre-queues the callbacks into
 +                      the ->nocb_bypass queue.  The definition of "too
 +                      many" is supplied by this kernel boot parameter.
 +
        rcutree.rcu_nocb_gp_stride= [KNL]
                        Set the number of NOCB callback kthreads in
                        each group, which defaults to the square root
  
        retain_initrd   [RAM] Keep initrd memory after extraction
  
 +      retbleed=       [X86] Control mitigation of RETBleed (Arbitrary
 +                      Speculative Code Execution with Return Instructions)
 +                      vulnerability.
 +
 +                      off          - no mitigation
 +                      auto         - automatically select a migitation
 +                      auto,nosmt   - automatically select a mitigation,
 +                                     disabling SMT if necessary for
 +                                     the full mitigation (only on Zen1
 +                                     and older without STIBP).
 +                      ibpb         - mitigate short speculation windows on
 +                                     basic block boundaries too. Safe, highest
 +                                     perf impact.
 +                      unret        - force enable untrained return thunks,
 +                                     only effective on AMD f15h-f17h
 +                                     based systems.
 +                      unret,nosmt  - like unret, will disable SMT when STIBP
 +                                     is not available.
 +
 +                      Selecting 'auto' will choose a mitigation method at run
 +                      time according to the CPU.
 +
 +                      Not specifying this option is equivalent to retbleed=auto.
 +
        rfkill.default_state=
                0       "airplane mode".  All wifi, bluetooth, wimax, gps, fm,
                        etc. communication is blocked by default.
                        eibrs             - enhanced IBRS
                        eibrs,retpoline   - enhanced IBRS + Retpolines
                        eibrs,lfence      - enhanced IBRS + LFENCE
 +                      ibrs              - use IBRS to protect kernel
  
                        Not specifying this option is equivalent to
                        spectre_v2=auto.
                        expediting.  Set to zero to disable automatic
                        expediting.
  
 +      srcutree.srcu_max_nodelay [KNL]
 +                      Specifies the number of no-delay instances
 +                      per jiffy for which the SRCU grace period
 +                      worker thread will be rescheduled with zero
 +                      delay. Beyond this limit, worker thread will
 +                      be rescheduled with a sleep delay of one jiffy.
 +
 +      srcutree.srcu_max_nodelay_phase [KNL]
 +                      Specifies the per-grace-period phase, number of
 +                      non-sleeping polls of readers. Beyond this limit,
 +                      grace period worker thread will be rescheduled
 +                      with a sleep delay of one jiffy, between each
 +                      rescan of the readers, for a grace period phase.
 +
 +      srcutree.srcu_retry_check_delay [KNL]
 +                      Specifies number of microseconds of non-sleeping
 +                      delay between each non-sleeping poll of readers.
 +
        srcutree.small_contention_lim [KNL]
                        Specifies the number of update-side contention
                        events per jiffy will be tolerated before
index 31fc10b833dd06eb61c6b8b3801cda9b8cd9ddba,37f0116c39fa85688cd7bc10f7158c810af8c3a1..52b75a25c20541bd056d83872d25cbcffbf9606c
@@@ -171,96 -171,73 +171,73 @@@ HWCAP_PAC
      Documentation/arm64/pointer-authentication.rst.
  
  HWCAP2_DCPODP
      Functionality implied by ID_AA64ISAR1_EL1.DPB == 0b0010.
  
  HWCAP2_SVE2
      Functionality implied by ID_AA64ZFR0_EL1.SVEVer == 0b0001.
  
  HWCAP2_SVEAES
      Functionality implied by ID_AA64ZFR0_EL1.AES == 0b0001.
  
  HWCAP2_SVEPMULL
      Functionality implied by ID_AA64ZFR0_EL1.AES == 0b0010.
  
  HWCAP2_SVEBITPERM
      Functionality implied by ID_AA64ZFR0_EL1.BitPerm == 0b0001.
  
  HWCAP2_SVESHA3
      Functionality implied by ID_AA64ZFR0_EL1.SHA3 == 0b0001.
  
  HWCAP2_SVESM4
      Functionality implied by ID_AA64ZFR0_EL1.SM4 == 0b0001.
  
  HWCAP2_FLAGM2
      Functionality implied by ID_AA64ISAR0_EL1.TS == 0b0010.
  
  HWCAP2_FRINT
      Functionality implied by ID_AA64ISAR1_EL1.FRINTTS == 0b0001.
  
  HWCAP2_SVEI8MM
      Functionality implied by ID_AA64ZFR0_EL1.I8MM == 0b0001.
  
  HWCAP2_SVEF32MM
      Functionality implied by ID_AA64ZFR0_EL1.F32MM == 0b0001.
  
  HWCAP2_SVEF64MM
      Functionality implied by ID_AA64ZFR0_EL1.F64MM == 0b0001.
  
  HWCAP2_SVEBF16
      Functionality implied by ID_AA64ZFR0_EL1.BF16 == 0b0001.
  
  HWCAP2_I8MM
      Functionality implied by ID_AA64ISAR1_EL1.I8MM == 0b0001.
  
  HWCAP2_BF16
      Functionality implied by ID_AA64ISAR1_EL1.BF16 == 0b0001.
  
  HWCAP2_DGH
      Functionality implied by ID_AA64ISAR1_EL1.DGH == 0b0001.
  
  HWCAP2_RNG
      Functionality implied by ID_AA64ISAR0_EL1.RNDR == 0b0001.
  
  HWCAP2_BTI
      Functionality implied by ID_AA64PFR0_EL1.BT == 0b0001.
  
  HWCAP2_MTE
      Functionality implied by ID_AA64PFR1_EL1.MTE == 0b0010, as described
      by Documentation/arm64/memory-tagging-extension.rst.
  
  HWCAP2_ECV
      Functionality implied by ID_AA64MMFR0_EL1.ECV == 0b0001.
  
  HWCAP2_AFP
      Functionality implied by ID_AA64MFR1_EL1.AFP == 0b0001.
  
  HWCAP2_RPRES
      Functionality implied by ID_AA64ISAR2_EL1.RPRES == 0b0001.
  
  HWCAP2_MTE3
      Functionality implied by ID_AA64PFR1_EL1.MTE == 0b0011, as described
      by Documentation/arm64/memory-tagging-extension.rst.
  
@@@ -301,10 -278,6 +278,10 @@@ HWCAP2_WFX
  
      Functionality implied by ID_AA64ISAR2_EL1.WFXT == 0b0010.
  
 +HWCAP2_EBF16
 +
 +    Functionality implied by ID_AA64ISAR1_EL1.BF16 == 0b0010.
 +
  4. Unused AT_HWCAP bits
  -----------------------
  
index 72bcf5f5e3a21715d17e8cbeef0f15e3d19ab148,083afa1a4189fc2923090588f8769fdca455796e..de6fc79ad6f03d67ab144fcd4fb3963cf1a5a3e3
@@@ -4,7 -4,7 +4,7 @@@ GPIO Descriptor Consumer Interfac
  
  This document describes the consumer interface of the GPIO framework. Note that
  it describes the new descriptor-based interface. For a description of the
 -deprecated integer-based GPIO interface please refer to gpio-legacy.txt.
 +deprecated integer-based GPIO interface please refer to legacy.rst.
  
  
  Guidelines for GPIOs consumers
@@@ -78,7 -78,7 +78,7 @@@ whether the line is configured active h
  
  The two last flags are used for use cases where open drain is mandatory, such
  as I2C: if the line is not already configured as open drain in the mappings
 -(see board.txt), then open drain will be enforced anyway and a warning will be
 +(see board.rst), then open drain will be enforced anyway and a warning will be
  printed that the board configuration needs to be updated to match the use case.
  
  Both functions return either a valid GPIO descriptor, or an error code checkable
@@@ -114,7 -114,7 +114,7 @@@ For a function using multiple GPIOs al
  
  This function returns a struct gpio_descs which contains an array of
  descriptors.  It also contains a pointer to a gpiolib private structure which,
- if passed back to get/set array functions, may speed up I/O proocessing::
+ if passed back to get/set array functions, may speed up I/O processing::
  
        struct gpio_descs {
                struct gpio_array *info;
@@@ -270,7 -270,7 +270,7 @@@ driven
  The same is applicable for open drain or open source output lines: those do not
  actively drive their output high (open drain) or low (open source), they just
  switch their output to a high impedance value. The consumer should not need to
 -care. (For details read about open drain in driver.txt.)
 +care. (For details read about open drain in driver.rst.)
  
  With this, all the gpiod_set_(array)_value_xxx() functions interpret the
  parameter "value" as "asserted" ("1") or "de-asserted" ("0"). The physical line
index 962d31d019d74331cda09e55e557306f0a52b0dc,120c051f6fcbd1d7e98b679c2dacbe79f4c4e300..c226626790658590611a2a4fbfca77f7f5afc95e
@@@ -5,6 -5,7 +5,7 @@@
  :翻译:
  
   司延腾 Yanteng Si <[email protected]>
+  周彬彬 Binbin Zhou <[email protected]>
  
  .. _cn_kernel-api.rst:
  
@@@ -224,7 -225,7 +225,7 @@@ kernel/kmod.
  模块接口支持
  ------------
  
 -更多信息请参考文件kernel/module.c
 +更多信息请参阅kernel/module/目录下的文件
  
  硬件接口
  ========
@@@ -282,6 -283,8 +283,8 @@@ kernel/acct.
  
  该API在以下内核代码中:
  
+ include/linux/bio.h
  block/blk-core.c
  
  block/blk-core.c
index 98a2839303071188de011d79a05d3d226a0125f9,9cc6981f5a348ebec089dded7f2940b388902e23..dca926762f1f7755ad4c1be7e6f942844581abc1
@@@ -4667,7 -4667,7 +4667,7 @@@ encrypted VMs
  
  Currently, this ioctl is used for issuing Secure Encrypted Virtualization
  (SEV) commands on AMD Processors. The SEV commands are defined in
- Documentation/virt/kvm/amd-memory-encryption.rst.
+ Documentation/virt/kvm/x86/amd-memory-encryption.rst.
  
  4.111 KVM_MEMORY_ENCRYPT_REG_REGION
  -----------------------------------
@@@ -5657,8 -5657,7 +5657,8 @@@ by a string of size ``name_size``
        #define KVM_STATS_UNIT_BYTES            (0x1 << KVM_STATS_UNIT_SHIFT)
        #define KVM_STATS_UNIT_SECONDS          (0x2 << KVM_STATS_UNIT_SHIFT)
        #define KVM_STATS_UNIT_CYCLES           (0x3 << KVM_STATS_UNIT_SHIFT)
 -      #define KVM_STATS_UNIT_MAX              KVM_STATS_UNIT_CYCLES
 +      #define KVM_STATS_UNIT_BOOLEAN          (0x4 << KVM_STATS_UNIT_SHIFT)
 +      #define KVM_STATS_UNIT_MAX              KVM_STATS_UNIT_BOOLEAN
  
        #define KVM_STATS_BASE_SHIFT            8
        #define KVM_STATS_BASE_MASK             (0xF << KVM_STATS_BASE_SHIFT)
@@@ -5703,13 -5702,14 +5703,13 @@@ Bits 0-3 of ``flags`` encode the type
      by the ``hist_param`` field. The range of the Nth bucket (1 <= N < ``size``)
      is [``hist_param``*(N-1), ``hist_param``*N), while the range of the last
      bucket is [``hist_param``*(``size``-1), +INF). (+INF means positive infinity
 -    value.) The bucket value indicates how many samples fell in the bucket's range.
 +    value.)
    * ``KVM_STATS_TYPE_LOG_HIST``
      The statistic is reported as a logarithmic histogram. The number of
      buckets is specified by the ``size`` field. The range of the first bucket is
      [0, 1), while the range of the last bucket is [pow(2, ``size``-2), +INF).
      Otherwise, The Nth bucket (1 < N < ``size``) covers
 -    [pow(2, N-2), pow(2, N-1)). The bucket value indicates how many samples fell
 -    in the bucket's range.
 +    [pow(2, N-2), pow(2, N-1)).
  
  Bits 4-7 of ``flags`` encode the unit:
  
      It indicates that the statistics data is used to measure time or latency.
    * ``KVM_STATS_UNIT_CYCLES``
      It indicates that the statistics data is used to measure CPU clock cycles.
 +  * ``KVM_STATS_UNIT_BOOLEAN``
 +    It indicates that the statistic will always be either 0 or 1.  Boolean
 +    statistics of "peak" type will never go back from 1 to 0.  Boolean
 +    statistics can be linear histograms (with two buckets) but not logarithmic
 +    histograms.
 +
 +Note that, in the case of histograms, the unit applies to the bucket
 +ranges, while the bucket value indicates how many samples fell in the
 +bucket's range.
  
  Bits 8-11 of ``flags``, together with ``exponent``, encode the scale of the
  unit:
@@@ -5755,7 -5746,7 +5755,7 @@@ the corresponding statistics data
  
  The ``bucket_size`` field is used as a parameter for histogram statistics data.
  It is only used by linear histogram statistics data, specifying the size of a
 -bucket.
 +bucket in the unit expressed by bits 4-11 of ``flags`` together with ``exponent``.
  
  The ``name`` field is the name string of the statistics data. The name string
  starts at the end of ``struct kvm_stats_desc``.  The maximum length including
@@@ -7679,7 -7670,7 +7679,7 @@@ architecture-specific interfaces.  Thi
  specific interfaces must be consistent, i.e. if one says the feature
  is supported, than the other should as well and vice versa.  For arm64
  see Documentation/virt/kvm/devices/vcpu.rst "KVM_ARM_VCPU_PVTIME_CTRL".
- For x86 see Documentation/virt/kvm/msr.rst "MSR_KVM_STEAL_TIME".
+ For x86 see Documentation/virt/kvm/x86/msr.rst "MSR_KVM_STEAL_TIME".
  
  8.25 KVM_CAP_S390_DIAG318
  -------------------------
diff --combined MAINTAINERS
index dfe5052aac910d1442ca1a27d284f313783fecec,6eecd51c93a251e3570445a534cea08529a6c73b..bd82078d10bd6c6cdfd489a0b1ecf743c83afb5a
@@@ -242,11 -242,6 +242,11 @@@ F:       include/trace/events/9p.
  F:    include/uapi/linux/virtio_9p.h
  F:    net/9p/
  
 +A64FX DIAG DRIVER
 +M:    Hitomi Hasegawa <[email protected]>
 +S:    Supported
 +F:    drivers/soc/fujitsu/a64fx-diag.c
 +
  A8293 MEDIA DRIVER
  M:    Antti Palosaari <[email protected]>
  L:    [email protected]
@@@ -431,7 -426,7 +431,7 @@@ F: drivers/acpi/*thermal
  ACPI VIOT DRIVER
  M:    Jean-Philippe Brucker <[email protected]>
  L:    [email protected]
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  S:    Maintained
  F:    drivers/acpi/viot.c
  F:    include/linux/acpi_viot.h
@@@ -964,7 -959,7 +964,7 @@@ F: drivers/video/fbdev/geode
  AMD IOMMU (AMD-VI)
  M:    Joerg Roedel <[email protected]>
  R:    Suravee Suthikulpanit <[email protected]>
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
  F:    drivers/iommu/amd/
@@@ -1043,7 -1038,6 +1043,7 @@@ F:      arch/arm64/boot/dts/amd
  
  AMD XGBE DRIVER
  M:    Tom Lendacky <[email protected]>
 +M:    "Shyam Sundar S K" <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    arch/arm64/boot/dts/amd/amd-seattle-xgbe*.dtsi
@@@ -1899,7 -1893,6 +1899,7 @@@ L:      [email protected] (moder
  S:    Supported
  Q:    https://patchwork.ozlabs.org/project/linux-aspeed/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joel/aspeed.git
 +F:    Documentation/devicetree/bindings/arm/aspeed/
  F:    arch/arm/boot/dts/aspeed-*
  F:    arch/arm/mach-aspeed/
  N:    aspeed
@@@ -2147,13 -2140,11 +2147,13 @@@ M:   Jean-Marie Verdun <[email protected]
  M:    Nick Hawkins <[email protected]>
  S:    Maintained
  F:    Documentation/devicetree/bindings/arm/hpe,gxp.yaml
 +F:    Documentation/devicetree/bindings/spi/hpe,gxp-spi.yaml
  F:    Documentation/devicetree/bindings/timer/hpe,gxp-timer.yaml
  F:    arch/arm/boot/dts/hpe-bmc*
  F:    arch/arm/boot/dts/hpe-gxp*
  F:    arch/arm/mach-hpe/
  F:    drivers/clocksource/timer-gxp.c
 +F:    drivers/spi/spi-gxp.c
  F:    drivers/watchdog/gxp-wdt.c
  
  ARM/IGEP MACHINE SUPPORT
@@@ -2457,11 -2448,9 +2457,11 @@@ F:    Documentation/devicetree/bindings/*/
  F:    Documentation/devicetree/bindings/arm/npcm/*
  F:    arch/arm/boot/dts/nuvoton-npcm*
  F:    arch/arm/mach-npcm/
 +F:    arch/arm64/boot/dts/nuvoton/
  F:    drivers/*/*npcm*
  F:    drivers/*/*/*npcm*
  F:    include/dt-bindings/clock/nuvoton,npcm7xx-clock.h
 +F:    include/dt-bindings/clock/nuvoton,npcm845-clk.h
  
  ARM/NUVOTON WPCM450 ARCHITECTURE
  M:    Jonathan Neuschäfer <[email protected]>
@@@ -2478,7 -2467,6 +2478,7 @@@ ARM/NXP S32G ARCHITECTUR
  M:    Chester Lin <[email protected]>
  R:    Andreas Färber <[email protected]>
  R:    Matthias Brugger <[email protected]>
 +R:    NXP S32 Linux Team <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm64/boot/dts/freescale/s32g*.dts*
@@@ -2508,8 -2496,10 +2508,8 @@@ F:     drivers/power/reset/oxnas-restart.
  N:    oxnas
  
  ARM/PALM TREO SUPPORT
 -M:    Tomas Cech <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -W:    http://hackndev.com
 +S:    Orphan
  F:    arch/arm/mach-pxa/palmtreo.*
  
  ARM/PALMTX,PALMT5,PALMLD,PALMTE2,PALMTC SUPPORT
@@@ -2547,7 -2537,6 +2547,7 @@@ W:      http://www.armlinux.org.uk
  ARM/QUALCOMM SUPPORT
  M:    Andy Gross <[email protected]>
  M:    Bjorn Andersson <[email protected]>
 +R:    Konrad Dybcio <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git
@@@ -2626,8 -2615,6 +2626,8 @@@ Q:      http://patchwork.kernel.org/project/
  C:    irc://irc.libera.chat/renesas-soc
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git next
  F:    Documentation/devicetree/bindings/arm/renesas.yaml
 +F:    Documentation/devicetree/bindings/hwinfo/renesas,prr.yaml
 +F:    Documentation/devicetree/bindings/soc/renesas/
  F:    arch/arm64/boot/dts/renesas/
  F:    drivers/soc/renesas/
  F:    include/linux/soc/renesas/
@@@ -2746,7 -2733,6 +2746,7 @@@ Q:      http://patchwork.kernel.org/project/
  C:    irc://irc.libera.chat/renesas-soc
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git next
  F:    Documentation/devicetree/bindings/arm/renesas.yaml
 +F:    Documentation/devicetree/bindings/soc/renesas/
  F:    arch/arm/boot/dts/emev2*
  F:    arch/arm/boot/dts/gr-peach*
  F:    arch/arm/boot/dts/iwg20d-q7*
@@@ -2836,23 -2822,6 +2836,23 @@@ F:    drivers/clocksource/armv7m_systick.
  N:    stm32
  N:    stm
  
 +ARM/SUNPLUS SP7021 SOC SUPPORT
 +M:    Qin Jian <[email protected]>
 +L:    [email protected] (moderated for mon-subscribers)
 +S:    Maintained
 +W:    https://sunplus-tibbo.atlassian.net/wiki/spaces/doc/overview
 +F:    Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml
 +F:    Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml
 +F:    Documentation/devicetree/bindings/interrupt-controller/sunplus,sp7021-intc.yaml
 +F:    Documentation/devicetree/bindings/reset/sunplus,reset.yaml
 +F:    arch/arm/boot/dts/sunplus-sp7021*.dts*
 +F:    arch/arm/configs/sp7021_*defconfig
 +F:    arch/arm/mach-sunplus/
 +F:    drivers/irqchip/irq-sp7021-intc.c
 +F:    drivers/reset/reset-sunplus.c
 +F:    include/dt-bindings/clock/sunplus,sp7021-clkc.h
 +F:    include/dt-bindings/reset/sunplus,sp7021-reset.h
 +
  ARM/Synaptics SoC support
  M:    Jisheng Zhang <[email protected]>
  M:    Sebastian Hesselbarth <[email protected]>
@@@ -3645,18 -3614,16 +3645,18 @@@ S:   Maintaine
  F:    Documentation/devicetree/bindings/iio/accel/bosch,bma400.yaml
  F:    drivers/iio/accel/bma400*
  
 -BPF (Safe dynamic programs and tools)
 +BPF [GENERAL] (Safe Dynamic Programs and Tools)
  M:    Alexei Starovoitov <[email protected]>
  M:    Daniel Borkmann <[email protected]>
  M:    Andrii Nakryiko <[email protected]>
 -R:    Martin KaFai Lau <[email protected]>
 -R:    Song Liu <song[email protected]>
 +R:    Martin KaFai Lau <[email protected]>
 +R:    Song Liu <song@kernel.org>
  R:    Yonghong Song <[email protected]>
  R:    John Fastabend <[email protected]>
  R:    KP Singh <[email protected]>
 -L:    [email protected]
 +R:    Stanislav Fomichev <[email protected]>
 +R:    Hao Luo <[email protected]>
 +R:    Jiri Olsa <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    https://bpf.io/
@@@ -3688,17 -3655,21 +3688,17 @@@ F:   scripts/pahole-version.s
  F:    tools/bpf/
  F:    tools/lib/bpf/
  F:    tools/testing/selftests/bpf/
 -N:    bpf
 -K:    bpf
  
  BPF JIT for ARM
  M:    Shubham Bansal <[email protected]>
 -L:    [email protected]
  L:    [email protected]
 -S:    Maintained
 +S:    Odd Fixes
  F:    arch/arm/net/
  
  BPF JIT for ARM64
  M:    Daniel Borkmann <[email protected]>
  M:    Alexei Starovoitov <[email protected]>
  M:    Zi Shen Lim <[email protected]>
 -L:    [email protected]
  L:    [email protected]
  S:    Supported
  F:    arch/arm64/net/
  BPF JIT for MIPS (32-BIT AND 64-BIT)
  M:    Johan Almbladh <[email protected]>
  M:    Paul Burton <[email protected]>
 -L:    [email protected]
  L:    [email protected]
  S:    Maintained
  F:    arch/mips/net/
  
  BPF JIT for NFP NICs
  M:    Jakub Kicinski <[email protected]>
 -L:    [email protected]
  L:    [email protected]
 -S:    Supported
 +S:    Odd Fixes
  F:    drivers/net/ethernet/netronome/nfp/bpf/
  
  BPF JIT for POWERPC (32-BIT AND 64-BIT)
  M:    Naveen N. Rao <[email protected]>
 -L:    [email protected]
 +M:    Michael Ellerman <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Supported
  F:    arch/powerpc/net/
  
  BPF JIT for RISC-V (32-bit)
  M:    Luke Nelson <[email protected]>
  M:    Xi Wang <[email protected]>
 -L:    [email protected]
  L:    [email protected]
  S:    Maintained
  F:    arch/riscv/net/
@@@ -3733,6 -3707,7 +3733,6 @@@ X:      arch/riscv/net/bpf_jit_comp64.
  
  BPF JIT for RISC-V (64-bit)
  M:    Björn Töpel <[email protected]>
 -L:    [email protected]
  L:    [email protected]
  S:    Maintained
  F:    arch/riscv/net/
@@@ -3742,80 -3717,36 +3742,80 @@@ BPF JIT for S39
  M:    Ilya Leoshkevich <[email protected]>
  M:    Heiko Carstens <[email protected]>
  M:    Vasily Gorbik <[email protected]>
 -L:    [email protected]
  L:    [email protected]
 -S:    Maintained
 +S:    Supported
  F:    arch/s390/net/
  X:    arch/s390/net/pnet.c
  
  BPF JIT for SPARC (32-BIT AND 64-BIT)
  M:    David S. Miller <[email protected]>
 -L:    [email protected]
  L:    [email protected]
 -S:    Maintained
 +S:    Odd Fixes
  F:    arch/sparc/net/
  
  BPF JIT for X86 32-BIT
  M:    Wang YanQing <[email protected]>
 -L:    [email protected]
  L:    [email protected]
 -S:    Maintained
 +S:    Odd Fixes
  F:    arch/x86/net/bpf_jit_comp32.c
  
  BPF JIT for X86 64-BIT
  M:    Alexei Starovoitov <[email protected]>
  M:    Daniel Borkmann <[email protected]>
 -L:    [email protected]
  L:    [email protected]
  S:    Supported
  F:    arch/x86/net/
  X:    arch/x86/net/bpf_jit_comp32.c
  
 -BPF LSM (Security Audit and Enforcement using BPF)
 +BPF [CORE]
 +M:    Alexei Starovoitov <[email protected]>
 +M:    Daniel Borkmann <[email protected]>
 +R:    John Fastabend <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    kernel/bpf/verifier.c
 +F:    kernel/bpf/tnum.c
 +F:    kernel/bpf/core.c
 +F:    kernel/bpf/syscall.c
 +F:    kernel/bpf/dispatcher.c
 +F:    kernel/bpf/trampoline.c
 +F:    include/linux/bpf*
 +F:    include/linux/filter.h
 +
 +BPF [BTF]
 +M:    Martin KaFai Lau <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    kernel/bpf/btf.c
 +F:    include/linux/btf*
 +
 +BPF [TRACING]
 +M:    Song Liu <[email protected]>
 +R:    Jiri Olsa <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    kernel/trace/bpf_trace.c
 +F:    kernel/bpf/stackmap.c
 +
 +BPF [NETWORKING] (tc BPF, sock_addr)
 +M:    Martin KaFai Lau <[email protected]>
 +M:    Daniel Borkmann <[email protected]>
 +R:    John Fastabend <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    net/core/filter.c
 +F:    net/sched/act_bpf.c
 +F:    net/sched/cls_bpf.c
 +
 +BPF [NETWORKING] (struct_ops, reuseport)
 +M:    Martin KaFai Lau <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    kernel/bpf/bpf_struct*
 +
 +BPF [SECURITY & LSM] (Security Audit and Enforcement using BPF)
  M:    KP Singh <[email protected]>
  R:    Florent Revest <[email protected]>
  R:    Brendan Jackman <[email protected]>
@@@ -3826,64 -3757,13 +3826,64 @@@ F:   include/linux/bpf_lsm.
  F:    kernel/bpf/bpf_lsm.c
  F:    security/bpf/
  
 -BPFTOOL
 +BPF [STORAGE & CGROUPS]
 +M:    Martin KaFai Lau <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    kernel/bpf/cgroup.c
 +F:    kernel/bpf/*storage.c
 +F:    kernel/bpf/bpf_lru*
 +
 +BPF [RINGBUF]
 +M:    Andrii Nakryiko <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    kernel/bpf/ringbuf.c
 +
 +BPF [ITERATOR]
 +M:    Yonghong Song <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    kernel/bpf/*iter.c
 +
 +BPF [L7 FRAMEWORK] (sockmap)
 +M:    John Fastabend <[email protected]>
 +M:    Jakub Sitnicki <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    include/linux/skmsg.h
 +F:    net/core/skmsg.c
 +F:    net/core/sock_map.c
 +F:    net/ipv4/tcp_bpf.c
 +F:    net/ipv4/udp_bpf.c
 +F:    net/unix/unix_bpf.c
 +
 +BPF [LIBRARY] (libbpf)
 +M:    Andrii Nakryiko <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    tools/lib/bpf/
 +
 +BPF [TOOLING] (bpftool)
  M:    Quentin Monnet <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    kernel/bpf/disasm.*
  F:    tools/bpf/bpftool/
  
 +BPF [SELFTESTS] (Test Runners & Infrastructure)
 +M:    Andrii Nakryiko <[email protected]>
 +R:    Mykola Lysenko <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    tools/testing/selftests/bpf/
 +
 +BPF [MISC]
 +L:    [email protected]
 +S:    Odd Fixes
 +K:    (?:\b|_)bpf(?:\b|_)
 +
  BROADCOM B44 10/100 ETHERNET DRIVER
  M:    Michael Chan <[email protected]>
  L:    [email protected]
@@@ -3905,36 -3785,23 +3905,36 @@@ BROADCOM BCMBCA ARM ARCHITECTUR
  M:    William Zhang <[email protected]>
  M:    Anand Gore <[email protected]>
  M:    Kursad Oney <[email protected]>
 +M:    Florian Fainelli <[email protected]>
  R:    Broadcom internal kernel review list <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  T:    git git://github.com/broadcom/stblinux.git
  F:    Documentation/devicetree/bindings/arm/bcm/brcm,bcmbca.yaml
 -F:    arch/arm/boot/dts/bcm47622.dtsi
 -F:    arch/arm/boot/dts/bcm947622.dts
 +F:    arch/arm64/boot/dts/broadcom/bcmbca/*
  N:    bcmbca
  N:    bcm[9]?47622
 +N:    bcm[9]?4912
 +N:    bcm[9]?63138
 +N:    bcm[9]?63146
 +N:    bcm[9]?63148
 +N:    bcm[9]?63158
 +N:    bcm[9]?63178
 +N:    bcm[9]?6756
 +N:    bcm[9]?6813
 +N:    bcm[9]?6846
 +N:    bcm[9]?6855
 +N:    bcm[9]?6856
 +N:    bcm[9]?6858
 +N:    bcm[9]?6878
  
  BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE
 -M:    Nicolas Saenz Julienne <[email protected]>
 +M:    Florian Fainelli <[email protected]>
  R:    Broadcom internal kernel review list <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/nsaenz/linux-rpi.git
 +T:    git git://github.com/broadcom/stblinux.git
  F:    Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
  F:    drivers/pci/controller/pcie-brcmstb.c
  F:    drivers/staging/vc04_services
@@@ -4002,6 -3869,14 +4002,6 @@@ S:     Maintaine
  F:    arch/arm/boot/dts/bcm47189*
  F:    arch/arm/boot/dts/bcm53573*
  
 -BROADCOM BCM63XX ARM ARCHITECTURE
 -M:    Florian Fainelli <[email protected]>
 -R:    Broadcom internal kernel review list <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -T:    git git://github.com/broadcom/stblinux.git
 -N:    bcm63xx
 -
  BROADCOM BCM63XX/BCM33XX UDC DRIVER
  M:    Kevin Cernekee <[email protected]>
  L:    [email protected]
@@@ -4408,7 -4283,7 +4408,7 @@@ L:      [email protected]
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git
 -F:    Documentation/devicetree/bindings/devfreq/exynos-bus.txt
 +F:    Documentation/devicetree/bindings/interconnect/samsung,exynos-bus.yaml
  F:    drivers/devfreq/exynos-bus.c
  
  BUSLOGIC SCSI DRIVER
@@@ -4998,7 -4873,7 +4998,7 @@@ R:      Nick Desaulniers <ndesaulniers@googl
  L:    [email protected]
  S:    Supported
  B:    https://github.com/ClangBuiltLinux/linux/issues
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/clang/features
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    include/linux/cfi.h
  F:    kernel/cfi.c
  
@@@ -5084,7 -4959,6 +5084,7 @@@ Q:      http://patchwork.kernel.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git
  F:    Documentation/devicetree/bindings/clock/
  F:    drivers/clk/
 +F:    include/dt-bindings/clock/
  F:    include/linux/clk-pr*
  F:    include/linux/clk/
  F:    include/linux/of_clk.h
@@@ -5135,7 -5009,7 +5135,7 @@@ COMPUTE EXPRESS LINK (CXL
  M:    Alison Schofield <[email protected]>
  M:    Vishal Verma <[email protected]>
  M:    Ira Weiny <[email protected]>
 -M:    Ben Widawsky <b[email protected]>
 +M:    Ben Widawsky <b[email protected]>
  M:    Dan Williams <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -5165,7 -5039,6 +5165,7 @@@ F:      include/linux/console
  
  CONTEXT TRACKING
  M:    Frederic Weisbecker <[email protected]>
 +M:    "Paul E. McKenney" <[email protected]>
  S:    Maintained
  F:    kernel/context_tracking.c
  F:    include/linux/context_tracking*
@@@ -5891,7 -5764,6 +5891,7 @@@ L:      [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git
  F:    Documentation/devicetree/bindings/devfreq/
 +F:    Documentation/devicetree/bindings/interconnect/mediatek,cci.yaml
  F:    drivers/devfreq/
  F:    include/linux/devfreq.h
  F:    include/trace/events/devfreq.h
@@@ -6089,7 -5961,7 +6089,7 @@@ DMA MAPPING HELPER
  M:    Christoph Hellwig <[email protected]>
  M:    Marek Szyprowski <[email protected]>
  R:    Robin Murphy <[email protected]>
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  S:    Supported
  W:    http://git.infradead.org/users/hch/dma-mapping.git
  T:    git git://git.infradead.org/users/hch/dma-mapping.git
@@@ -6101,7 -5973,7 +6101,7 @@@ F:      kernel/dma
  
  DMA MAPPING BENCHMARK
  M:    Xiang Chen <[email protected]>
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  F:    kernel/dma/map_benchmark.c
  F:    tools/testing/selftests/dma/
  
@@@ -6842,7 -6714,7 +6842,7 @@@ L:      [email protected]
  L:    [email protected]
  S:    Supported
  T:    git git://anongit.freedesktop.org/tegra/linux.git
- F:    Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt
+ F:    Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.yaml
  F:    Documentation/devicetree/bindings/gpu/host1x/
  F:    drivers/gpu/drm/tegra/
  F:    drivers/gpu/host1x/
@@@ -7522,8 -7394,6 +7522,8 @@@ F:      include/video/s1d13xxxfb.
  EROFS FILE SYSTEM
  M:    Gao Xiang <[email protected]>
  M:    Chao Yu <[email protected]>
 +R:    Yue Hu <[email protected]>
 +R:    Jeffle Xu <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
@@@ -7687,7 -7557,7 +7687,7 @@@ F:      drivers/gpu/drm/exynos/exynos_dp
  
  EXYNOS SYSMMU (IOMMU) driver
  M:    Marek Szyprowski <[email protected]>
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  S:    Maintained
  F:    drivers/iommu/exynos-iommu.c
  
@@@ -7812,6 -7682,9 +7812,6 @@@ F:      include/linux/fs.
  F:    include/linux/fs_types.h
  F:    include/uapi/linux/fs.h
  F:    include/uapi/linux/openat2.h
 -X:    fs/io-wq.c
 -X:    fs/io-wq.h
 -X:    fs/io_uring.c
  
  FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER
  M:    Riku Voipio <[email protected]>
@@@ -7910,7 -7783,6 +7910,7 @@@ FORTIFY_SOURC
  M:    Kees Cook <[email protected]>
  L:    [email protected]
  S:    Supported
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    include/linux/fortify-string.h
  F:    lib/test_fortify/*
  F:    scripts/test_fortify.sh
@@@ -8353,7 -8225,6 +8353,7 @@@ GCC PLUGIN
  M:    Kees Cook <[email protected]>
  L:    [email protected]
  S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    Documentation/kbuild/gcc-plugins.rst
  F:    scripts/Makefile.gcc-plugins
  F:    scripts/gcc-plugins/
@@@ -8608,7 -8479,6 +8608,7 @@@ F:      Documentation/devicetree/bindings/gp
  F:    Documentation/driver-api/gpio/
  F:    drivers/gpio/
  F:    include/asm-generic/gpio.h
 +F:    include/dt-bindings/gpio/
  F:    include/linux/gpio.h
  F:    include/linux/gpio/
  F:    include/linux/of_gpio.h
@@@ -9074,31 -8944,16 +9074,31 @@@ F:   Documentation/admin-guide/perf/hisi-
  F:    Documentation/admin-guide/perf/hisi-pmu.rst
  F:    drivers/perf/hisilicon
  
 -HISILICON QM AND ZIP Controller DRIVER
 +HISILICON HNS3 PMU DRIVER
 +M:    Guangbin Huang <[email protected]>
 +S:    Supported
 +F:    Documentation/admin-guide/perf/hns3-pmu.rst
 +F:    drivers/perf/hisilicon/hns3_pmu.c
 +
 +HISILICON QM DRIVER
 +M:    Weili Qian <[email protected]>
  M:    Zhou Wang <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/ABI/testing/debugfs-hisi-zip
 +F:    drivers/crypto/hisilicon/Kconfig
 +F:    drivers/crypto/hisilicon/Makefile
  F:    drivers/crypto/hisilicon/qm.c
  F:    drivers/crypto/hisilicon/sgl.c
 -F:    drivers/crypto/hisilicon/zip/
  F:    include/linux/hisi_acc_qm.h
  
 +HISILICON ZIP Controller DRIVER
 +M:    Yang Shen <[email protected]>
 +M:    Zhou Wang <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/ABI/testing/debugfs-hisi-zip
 +F:    drivers/crypto/hisilicon/zip/
 +
  HISILICON ROCE DRIVER
  M:    Wenpeng Liang <[email protected]>
  M:    Weihang Li <[email protected]>
@@@ -9277,7 -9132,6 +9277,7 @@@ F:      drivers/media/platform/st/sti/hv
  
  HWPOISON MEMORY FAILURE HANDLING
  M:    Naoya Horiguchi <[email protected]>
 +R:    Miaohe Lin <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    mm/hwpoison-inject.c
@@@ -9326,6 -9180,7 +9326,7 @@@ S:      Supporte
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux.git
  F:    Documentation/ABI/stable/sysfs-bus-vmbus
  F:    Documentation/ABI/testing/debugfs-hyperv
+ F:    Documentation/virt/hyperv
  F:    Documentation/networking/device_drivers/ethernet/microsoft/netvsc.rst
  F:    arch/arm64/hyperv
  F:    arch/arm64/include/asm/hyperv-tlfs.h
@@@ -9422,7 -9277,6 +9423,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/i2c/i2c.txt
  F:    Documentation/i2c/
  F:    drivers/i2c/*
 +F:    include/dt-bindings/i2c/i2c.h
  F:    include/linux/i2c-dev.h
  F:    include/linux/i2c-smbus.h
  F:    include/linux/i2c.h
@@@ -9438,7 -9292,6 +9439,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/i2c/
  F:    drivers/i2c/algos/
  F:    drivers/i2c/busses/
 +F:    include/dt-bindings/i2c/
  
  I2C-TAOS-EVM DRIVER
  M:    Jean Delvare <[email protected]>
@@@ -9671,7 -9524,6 +9672,7 @@@ F:      drivers/input/misc/ideapad_slidebar.
  
  IDMAPPED MOUNTS
  M:    Christian Brauner <[email protected]>
 +M:    Seth Forshee <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux.git
@@@ -9960,10 -9812,7 +9961,10 @@@ INTEL ASoC DRIVER
  M:    Cezary Rojewski <[email protected]>
  M:    Pierre-Louis Bossart <[email protected]>
  M:    Liam Girdwood <[email protected]>
 -M:    Jie Yang <[email protected]>
 +M:    Peter Ujfalusi <[email protected]>
 +M:    Bard Liao <[email protected]>
 +M:    Ranjani Sridharan <[email protected]>
 +M:    Kai Vehmanen <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
  F:    sound/soc/intel/
@@@ -10126,7 -9975,7 +10127,7 @@@ F:    drivers/hid/intel-ish-hid
  INTEL IOMMU (VT-d)
  M:    David Woodhouse <[email protected]>
  M:    Lu Baolu <[email protected]>
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
  F:    drivers/iommu/intel/
@@@ -10505,7 -10354,7 +10506,7 @@@ F:   include/linux/iomap.
  IOMMU DRIVERS
  M:    Joerg Roedel <[email protected]>
  M:    Will Deacon <[email protected]>
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
  F:    Documentation/devicetree/bindings/iommu/
  S:    Maintained
  T:    git git://git.kernel.dk/linux-block
  T:    git git://git.kernel.dk/liburing
 -F:    fs/io-wq.c
 -F:    fs/io-wq.h
 -F:    fs/io_uring.c
 +F:    io_uring/
  F:    include/linux/io_uring.h
  F:    include/uapi/linux/io_uring.h
  F:    tools/io_uring/
@@@ -10890,17 -10741,6 +10891,17 @@@ F: scripts/mk
  F:    scripts/mod/
  F:    scripts/package/
  
 +KERNEL HARDENING (not covered by other areas)
 +M:    Kees Cook <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
 +F:    include/linux/overflow.h
 +F:    include/linux/randomize_kstack.h
 +F:    mm/usercopy.c
 +K:    \b(add|choose)_random_kstack_offset\b
 +K:    \b__check_(object_size|heap_object)\b
 +
  KERNEL JANITORS
  L:    [email protected]
  S:    Odd Fixes
@@@ -10991,7 -10831,6 +10992,7 @@@ M:   Marc Zyngier <[email protected]
  R:    James Morse <[email protected]>
  R:    Alexandru Elisei <[email protected]>
  R:    Suzuki K Poulose <[email protected]>
 +R:    Oliver Upton <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
@@@ -11034,6 -10873,7 +11035,6 @@@ F:   arch/riscv/include/asm/kvm
  F:    arch/riscv/include/uapi/asm/kvm*
  F:    arch/riscv/kvm/
  F:    tools/testing/selftests/kvm/*/riscv/
 -F:    tools/testing/selftests/kvm/riscv/
  
  KERNEL VIRTUAL MACHINE for s390 (KVM/s390)
  M:    Christian Borntraeger <[email protected]>
@@@ -11058,51 -10898,28 +11059,51 @@@ F:        tools/testing/selftests/kvm/*/s390x
  F:    tools/testing/selftests/kvm/s390x/
  
  KERNEL VIRTUAL MACHINE FOR X86 (KVM/x86)
 +M:    Sean Christopherson <[email protected]>
  M:    Paolo Bonzini <[email protected]>
 -R:    Sean Christopherson <[email protected]>
 -R:    Vitaly Kuznetsov <[email protected]>
 -R:    Wanpeng Li <[email protected]>
 -R:    Jim Mattson <[email protected]>
 -R:    Joerg Roedel <[email protected]>
  L:    [email protected]
  S:    Supported
 -W:    http://www.linux-kvm.org
  T:    git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
  F:    arch/x86/include/asm/kvm*
 -F:    arch/x86/include/asm/pvclock-abi.h
  F:    arch/x86/include/asm/svm.h
  F:    arch/x86/include/asm/vmx*.h
  F:    arch/x86/include/uapi/asm/kvm*
  F:    arch/x86/include/uapi/asm/svm.h
  F:    arch/x86/include/uapi/asm/vmx.h
 -F:    arch/x86/kernel/kvm.c
 -F:    arch/x86/kernel/kvmclock.c
  F:    arch/x86/kvm/
  F:    arch/x86/kvm/*/
  
 +KVM PARAVIRT (KVM/paravirt)
 +M:    Paolo Bonzini <[email protected]>
 +R:    Wanpeng Li <[email protected]>
 +R:    Vitaly Kuznetsov <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
 +F:    arch/x86/kernel/kvm.c
 +F:    arch/x86/kernel/kvmclock.c
 +F:    arch/x86/include/asm/pvclock-abi.h
 +F:    include/linux/kvm_para.h
 +F:    include/uapi/linux/kvm_para.h
 +F:    include/uapi/asm-generic/kvm_para.h
 +F:    include/asm-generic/kvm_para.h
 +F:    arch/um/include/asm/kvm_para.h
 +F:    arch/x86/include/asm/kvm_para.h
 +F:    arch/x86/include/uapi/asm/kvm_para.h
 +
 +KVM X86 HYPER-V (KVM/hyper-v)
 +M:    Vitaly Kuznetsov <[email protected]>
 +M:    Sean Christopherson <[email protected]>
 +M:    Paolo Bonzini <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
 +F:    arch/x86/kvm/hyperv.*
 +F:    arch/x86/kvm/kvm_onhyperv.*
 +F:    arch/x86/kvm/svm/hyperv.*
 +F:    arch/x86/kvm/svm/svm_onhyperv.*
 +F:    arch/x86/kvm/vmx/evmcs.*
 +
  KERNFS
  M:    Greg Kroah-Hartman <[email protected]>
  M:    Tejun Heo <[email protected]>
@@@ -11281,6 -11098,20 +11282,6 @@@ S:  Maintaine
  F:    include/net/l3mdev.h
  F:    net/l3mdev
  
 -L7 BPF FRAMEWORK
 -M:    John Fastabend <[email protected]>
 -M:    Daniel Borkmann <[email protected]>
 -M:    Jakub Sitnicki <[email protected]>
 -L:    [email protected]
 -L:    [email protected]
 -S:    Maintained
 -F:    include/linux/skmsg.h
 -F:    net/core/skmsg.c
 -F:    net/core/sock_map.c
 -F:    net/ipv4/tcp_bpf.c
 -F:    net/ipv4/udp_bpf.c
 -F:    net/unix/unix_bpf.c
 -
  LANDLOCK SECURITY MODULE
  M:    Mickaël Salaün <[email protected]>
  L:    [email protected]
@@@ -11711,7 -11542,7 +11712,7 @@@ F:   drivers/media/usb/dvb-usb-v2/lmedm04
  LOADPIN SECURITY MODULE
  M:    Kees Cook <[email protected]>
  S:    Supported
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git lsm/loadpin
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    Documentation/admin-guide/LSM/LoadPin.rst
  F:    security/loadpin/
  
@@@ -11760,7 -11591,6 +11761,7 @@@ F:   drivers/gpu/drm/bridge/lontium-lt891
  LOONGARCH
  M:    Huacai Chen <[email protected]>
  R:    WANG Xuerui <[email protected]>
 +L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson.git
  F:    arch/loongarch/
@@@ -12673,7 -12503,7 +12674,7 @@@ F:   drivers/i2c/busses/i2c-mt65xx.
  
  MEDIATEK IOMMU DRIVER
  M:    Yong Wu <[email protected]>
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
  F:    Documentation/devicetree/bindings/iommu/mediatek*
@@@ -13016,8 -12846,9 +13017,8 @@@ M:   Andrew Morton <akpm@linux-foundation
  L:    [email protected]
  S:    Maintained
  W:    http://www.linux-mm.org
 -T:    quilt https://ozlabs.org/~akpm/mmotm/
 -T:    quilt https://ozlabs.org/~akpm/mmots/
 -T:    git git://github.com/hnaz/linux-mm.git
 +T:    git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
 +T:    quilt git://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new
  F:    include/linux/gfp.h
  F:    include/linux/memory_hotplug.h
  F:    include/linux/mm.h
@@@ -13027,18 -12858,6 +13028,18 @@@ F: include/linux/vmalloc.
  F:    mm/
  F:    tools/testing/selftests/vm/
  
 +MEMORY HOT(UN)PLUG
 +M:    David Hildenbrand <[email protected]>
 +M:    Oscar Salvador <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/admin-guide/mm/memory-hotplug.rst
 +F:    Documentation/core-api/memory-hotplug.rst
 +F:    drivers/base/memory.c
 +F:    include/linux/memory_hotplug.h
 +F:    mm/memory_hotplug.c
 +F:    tools/testing/selftests/memory-hotplug/
 +
  MEMORY TECHNOLOGY DEVICES (MTD)
  M:    Miquel Raynal <[email protected]>
  M:    Richard Weinberger <[email protected]>
@@@ -13983,7 -13802,6 +13984,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/net/
  F:    drivers/connector/
  F:    drivers/net/
 +F:    include/dt-bindings/net/
  F:    include/linux/etherdevice.h
  F:    include/linux/fcdevice.h
  F:    include/linux/fddidevice.h
@@@ -14135,6 -13953,7 +14136,6 @@@ F:   net/ipv6/tcp*.
  NETWORKING [TLS]
  M:    Boris Pismenny <[email protected]>
  M:    John Fastabend <[email protected]>
 -M:    Daniel Borkmann <[email protected]>
  M:    Jakub Kicinski <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -14425,8 -14244,7 +14426,8 @@@ S:   Maintaine
  F:    drivers/net/phy/nxp-c45-tja11xx.c
  
  NXP FSPI DRIVER
 -M:    Ashish Kumar <[email protected]>
 +M:    Han Xu <[email protected]>
 +M:    Haibo Chen <[email protected]>
  R:    Yogesh Gaur <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -14444,7 -14262,7 +14445,7 @@@ F:   drivers/iio/gyro/fxas21002c_i2c.
  F:    drivers/iio/gyro/fxas21002c_spi.c
  
  NXP i.MX CLOCK DRIVERS
 -M:    Abel Vesa <abel[email protected]>
 +M:    Abel Vesa <abel[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -14532,8 -14350,9 +14533,8 @@@ F:   Documentation/devicetree/bindings/so
  F:    sound/soc/codecs/tfa989x.c
  
  NXP-NCI NFC DRIVER
 -R:    Charles Gorand <[email protected]>
  L:    [email protected] (subscribers-only)
 -S:    Supported
 +S:    Orphan
  F:    Documentation/devicetree/bindings/net/nfc/nxp,nci.yaml
  F:    drivers/nfc/nxp-nci
  
@@@ -15051,7 -14870,6 +15052,7 @@@ F:   include/dt-bindings
  
  OPENCOMPUTE PTP CLOCK DRIVER
  M:    Jonathan Lemon <[email protected]>
 +M:    Vadim Fedorenko <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/ptp/ptp_ocp.c
@@@ -15912,7 -15730,7 +15913,7 @@@ PIN CONTROLLER - FREESCAL
  M:    Dong Aisheng <[email protected]>
  M:    Fabio Estevam <[email protected]>
  M:    Shawn Guo <[email protected]>
 -M:    Stefan Agner <[email protected]>
 +M:    Jacky Bai <[email protected]>
  R:    Pengutronix Kernel Team <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -15922,7 -15740,7 +15923,7 @@@ F:   drivers/pinctrl/freescale
  PIN CONTROLLER - INTEL
  M:    Mika Westerberg <[email protected]>
  M:    Andy Shevchenko <[email protected]>
 -S:    Maintained
 +S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/intel.git
  F:    drivers/pinctrl/intel/
  
@@@ -16388,6 -16206,7 +16389,6 @@@ F:   drivers/media/rc/pwm-ir-tx.
  PWM SUBSYSTEM
  M:    Thierry Reding <[email protected]>
  R:    Uwe Kleine-König <[email protected]>
 -M:    Lee Jones <[email protected]>
  L:    [email protected]
  S:    Maintained
  Q:    https://patchwork.ozlabs.org/project/linux-pwm/list/
@@@ -16398,7 -16217,6 +16399,7 @@@ F:   Documentation/driver-api/pwm.rs
  F:    drivers/gpio/gpio-mvebu.c
  F:    drivers/pwm/
  F:    drivers/video/backlight/pwm_bl.c
 +F:    include/dt-bindings/pwm/
  F:    include/linux/pwm.h
  F:    include/linux/pwm_backlight.h
  K:    pwm_(config|apply_state|ops)
@@@ -16444,7 -16262,7 +16445,7 @@@ F:   drivers/crypto/qat
  
  QCOM AUDIO (ASoC) DRIVERS
  M:    Srinivas Kandagatla <[email protected]>
 -M:    Banajit Goswami <bgoswami@codeaurora.org>
 +M:    Banajit Goswami <bgoswami@quicinc.com>
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
  F:    sound/soc/codecs/lpass-va-macro.c
@@@ -16671,7 -16489,7 +16672,7 @@@ F:   Documentation/devicetree/bindings/op
  F:    drivers/cpufreq/qcom-cpufreq-nvmem.c
  
  QUALCOMM CRYPTO DRIVERS
 -M:    Thara Gopinath <thara.gopinath@linaro.org>
 +M:    Thara Gopinath <thara.gopinath@gmail.com>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -16723,16 -16541,9 +16724,16 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/i2c/i2c-qcom-cci.txt
  F:    drivers/i2c/busses/i2c-qcom-cci.c
  
 +QUALCOMM INTERCONNECT BWMON DRIVER
 +M:    Krzysztof Kozlowski <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/interconnect/qcom,msm8998-bwmon.yaml
 +F:    drivers/soc/qcom/icc-bwmon.c
 +
  QUALCOMM IOMMU
  M:    Rob Clark <[email protected]>
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  L:    [email protected]
  S:    Maintained
  F:    drivers/iommu/arm/arm-smmu/qcom_iommu.c
@@@ -16788,7 -16599,7 +16789,7 @@@ F:   include/linux/if_rmnet.
  
  QUALCOMM TSENS THERMAL DRIVER
  M:    Amit Kucheria <[email protected]>
 -M:    Thara Gopinath <thara.gopinath@linaro.org>
 +M:    Thara Gopinath <thara.gopinath@gmail.com>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -17343,17 -17154,13 +17344,17 @@@ N:        risc
  K:    riscv
  
  RISC-V/MICROCHIP POLARFIRE SOC SUPPORT
 -M:    Lewis Hanly <[email protected]>
  M:    Conor Dooley <[email protected]>
 +M:    Daire McNamara <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    arch/riscv/boot/dts/microchip/
 +F:    drivers/char/hw_random/mpfs-rng.c
 +F:    drivers/clk/microchip/clk-mpfs.c
  F:    drivers/mailbox/mailbox-mpfs.c
 +F:    drivers/pci/controller/pcie-microchip-host.c
  F:    drivers/soc/microchip/
 +F:    drivers/spi/spi-microchip-core.c
  F:    include/soc/microchip/mpfs.h
  
  RNBD BLOCK DRIVERS
@@@ -18049,7 -17856,7 +18050,7 @@@ M:   Kees Cook <[email protected]
  R:    Andy Lutomirski <[email protected]>
  R:    Will Drewry <[email protected]>
  S:    Supported
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git seccomp
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/seccomp
  F:    Documentation/userspace-api/seccomp_filter.rst
  F:    include/linux/seccomp.h
  F:    include/uapi/linux/seccomp.h
@@@ -18120,13 -17927,12 +18121,13 @@@ S:        Supporte
  F:    Documentation/admin-guide/security-bugs.rst
  
  SECURITY SUBSYSTEM
 +M:    Paul Moore <[email protected]>
  M:    James Morris <[email protected]>
  M:    "Serge E. Hallyn" <[email protected]>
  L:    [email protected] (suggested Cc:)
  S:    Supported
  W:    http://kernsec.org/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/lsm.git
  F:    security/
  X:    security/selinux/
  
@@@ -18250,7 -18056,6 +18251,7 @@@ F:   drivers/misc/sgi-xp
  
  SHARED MEMORY COMMUNICATIONS (SMC) SOCKETS
  M:    Karsten Graul <[email protected]>
 +M:    Wenjia Zhang <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    http://www.ibm.com/developerworks/linux/linux390/
@@@ -18883,10 -18688,8 +18884,10 @@@ F: sound/soc
  SOUND - SOUND OPEN FIRMWARE (SOF) DRIVERS
  M:    Pierre-Louis Bossart <[email protected]>
  M:    Liam Girdwood <[email protected]>
 +M:    Peter Ujfalusi <[email protected]>
 +M:    Bard Liao <[email protected]>
  M:    Ranjani Sridharan <[email protected]>
 -M:    Kai Vehmanen <[email protected]>
 +R:    Kai Vehmanen <[email protected]>
  M:    Daniel Baluta <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
@@@ -19365,7 -19168,7 +19366,7 @@@ F:   arch/x86/boot/video
  
  SWIOTLB SUBSYSTEM
  M:    Christoph Hellwig <[email protected]>
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  S:    Supported
  W:    http://git.infradead.org/users/hch/dma-mapping.git
  T:    git git://git.infradead.org/users/hch/dma-mapping.git
@@@ -19503,7 -19306,7 +19504,7 @@@ R:   Andy Shevchenko <andriy.shevchenko@l
  R:    Mika Westerberg <[email protected]>
  R:    Jan Dabros <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Supported
  F:    drivers/i2c/busses/i2c-designware-*
  
  SYNOPSYS DESIGNWARE MMC/SD/SDIO DRIVER
@@@ -19845,7 -19648,7 +19846,7 @@@ M:   Sowjanya Komatineni <skomatineni@nvi
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
- F:    Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt
+ F:    Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.yaml
  F:    drivers/staging/media/tegra-video/
  
  TEGRA XUSB PADCTL DRIVER
@@@ -19968,7 -19771,6 +19969,7 @@@ F:   Documentation/ABI/testing/sysfs-clas
  F:    Documentation/devicetree/bindings/thermal/
  F:    Documentation/driver-api/thermal/
  F:    drivers/thermal/
 +F:    include/dt-bindings/thermal/
  F:    include/linux/cpu_cooling.h
  F:    include/linux/thermal.h
  F:    include/uapi/linux/thermal.h
@@@ -20443,7 -20245,7 +20444,7 @@@ F:   tools/tracing/rtla
  
  TRADITIONAL CHINESE DOCUMENTATION
  M:    Hu Haowen <[email protected]>
- L:    [email protected]
+ L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  W:    https://github.com/srcres258/linux-doc
  T:    git git://github.com/srcres258/linux-doc.git doc-zh-tw
@@@ -20563,13 -20365,6 +20564,13 @@@ F: Documentation/filesystems/ubifs-auth
  F:    Documentation/filesystems/ubifs.rst
  F:    fs/ubifs/
  
 +UBLK USERSPACE BLOCK DRIVER
 +M:    Ming Lei <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/block/ublk_drv.c
 +F:    include/uapi/linux/ublk_cmd.h
 +
  UCLINUX (M68KNOMMU AND COLDFIRE)
  M:    Greg Ungerer <[email protected]>
  L:    [email protected]
@@@ -20918,7 -20713,6 +20919,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/usb/
  F:    Documentation/usb/
  F:    drivers/usb/
 +F:    include/dt-bindings/usb/
  F:    include/linux/usb.h
  F:    include/linux/usb/
  
@@@ -22048,7 -21842,7 +22049,7 @@@ XEN SWIOTLB SUBSYSTE
  M:    Juergen Gross <[email protected]>
  M:    Stefano Stabellini <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
 -L:    [email protected]-foundation.org
 +L:    [email protected].dev
  S:    Supported
  F:    arch/x86/xen/*swiotlb*
  F:    drivers/xen/*swiotlb*
@@@ -22198,7 -21992,7 +22199,7 @@@ F:   include/linux/yam.
  YAMA SECURITY MODULE
  M:    Kees Cook <[email protected]>
  S:    Supported
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git yama/tip
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    Documentation/admin-guide/LSM/Yama.rst
  F:    security/yama/
  
diff --combined include/linux/fscache.h
index b86265664879e9b1c2273d464572d18ce4e8d01d,2f82ea31d4c1346174aa1da9f1cca07ef05c8f06..720874e6ee947ec295b618f9709e4bedb414ec08
@@@ -130,7 -130,6 +130,7 @@@ struct fscache_cookie 
  #define FSCACHE_COOKIE_DO_PREP_TO_WRITE       12              /* T if cookie needs write preparation */
  #define FSCACHE_COOKIE_HAVE_DATA      13              /* T if this cookie has data stored */
  #define FSCACHE_COOKIE_IS_HASHED      14              /* T if this cookie is hashed */
 +#define FSCACHE_COOKIE_DO_INVALIDATE  15              /* T if cookie needs invalidation */
  
        enum fscache_cookie_state       state;
        u8                              advice;         /* FSCACHE_ADV_* */
@@@ -379,7 -378,7 +379,7 @@@ void fscache_update_cookie(struct fscac
   *
   * Request that the size of an object be changed.
   *
-  * See Documentation/filesystems/caching/netfs-api.txt for a complete
+  * See Documentation/filesystems/caching/netfs-api.rst for a complete
   * description.
   */
  static inline
diff --combined include/linux/objtool.h
index 10bc88cc3bf6b8bc4865baf006151a4a25383795,6f89471005ee6901f13841d87a92bbf622133720..62c54ffbeeaacc74aa9e52697ab11d7deec92d82
@@@ -32,16 -32,11 +32,16 @@@ struct unwind_hint 
   *
   * UNWIND_HINT_FUNC: Generate the unwind metadata of a callable function.
   * Useful for code which doesn't have an ELF function annotation.
 + *
 + * UNWIND_HINT_ENTRY: machine entry without stack, SYSCALL/SYSENTER etc.
   */
  #define UNWIND_HINT_TYPE_CALL         0
  #define UNWIND_HINT_TYPE_REGS         1
  #define UNWIND_HINT_TYPE_REGS_PARTIAL 2
  #define UNWIND_HINT_TYPE_FUNC         3
 +#define UNWIND_HINT_TYPE_ENTRY                4
 +#define UNWIND_HINT_TYPE_SAVE         5
 +#define UNWIND_HINT_TYPE_RESTORE      6
  
  #ifdef CONFIG_OBJTOOL
  
@@@ -67,7 -62,7 +67,7 @@@
   * It should only be used in special cases where you're 100% sure it won't
   * affect the reliability of frame pointers and kernel stack traces.
   *
-  * For more information, see tools/objtool/Documentation/stack-validation.txt.
+  * For more information, see tools/objtool/Documentation/objtool.txt.
   */
  #define STACK_FRAME_NON_STANDARD(func) \
        static void __used __section(".discard.func_stack_frame_non_standard") \
   * the debuginfo as necessary.  It will also warn if it sees any
   * inconsistencies.
   */
 -.macro UNWIND_HINT sp_reg:req sp_offset=0 type:req end=0
 +.macro UNWIND_HINT type:req sp_reg=0 sp_offset=0 end=0
  .Lunwind_hint_ip_\@:
        .pushsection .discard.unwind_hints
                /* struct unwind_hint */
        .popsection
  .endm
  
 +.macro STACK_FRAME_NON_STANDARD_FP func:req
 +#ifdef CONFIG_FRAME_POINTER
 +      STACK_FRAME_NON_STANDARD \func
 +#endif
 +.endm
 +
  .macro ANNOTATE_NOENDBR
  .Lhere_\@:
        .pushsection .discard.noendbr
  #define ASM_REACHABLE
  #else
  #define ANNOTATE_INTRA_FUNCTION_CALL
 -.macro UNWIND_HINT sp_reg:req sp_offset=0 type:req end=0
 +.macro UNWIND_HINT type:req sp_reg=0 sp_offset=0 end=0
  .endm
  .macro STACK_FRAME_NON_STANDARD func:req
  .endm
diff --combined init/Kconfig
index 7f75a61eb52edade562b762f913c637e46dd087c,6f1a5355dc61a654f549c7686ae187133ba7ce21..26a5441127327814c6137a37a8b402f7b5e7f6ca
@@@ -414,7 -414,7 +414,7 @@@ config WATCH_QUEU
          with watches for key/keyring change notifications and device
          notifications.
  
-         See Documentation/watch_queue.rst
+         See Documentation/core-api/watch_queue.rst
  
  config CROSS_MEMORY_ATTACH
        bool "Enable process_vm_readv/writev syscalls"
@@@ -494,11 -494,11 +494,11 @@@ config VIRT_CPU_ACCOUNTING_NATIV
  
  config VIRT_CPU_ACCOUNTING_GEN
        bool "Full dynticks CPU time accounting"
 -      depends on HAVE_CONTEXT_TRACKING
 +      depends on HAVE_CONTEXT_TRACKING_USER
        depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
        depends on GENERIC_CLOCKEVENTS
        select VIRT_CPU_ACCOUNTING
 -      select CONTEXT_TRACKING
 +      select CONTEXT_TRACKING_USER
        help
          Select this option to enable task and CPU time accounting on full
          dynticks systems. This accounting is implemented by watching every
@@@ -1481,7 -1481,6 +1481,7 @@@ config HAVE_PCSPKR_PLATFOR
  # interpreter that classic socket filters depend on
  config BPF
        bool
 +      select CRYPTO_LIB_SHA1
  
  menuconfig EXPERT
        bool "Configure standard kernel features (expert users)"
diff --combined kernel/watch_queue.c
index 59ddb00d6944778e7210c5ad70584b7e04ec2fa9,869fea4fe26b67b17a4fdad8692d39f43c9a164d..a6f9bdd956c39d2fabbb5932441965672c747aa2
@@@ -4,7 -4,7 +4,7 @@@
   * Copyright (C) 2020 Red Hat, Inc. All Rights Reserved.
   * Written by David Howells ([email protected])
   *
-  * See Documentation/watch_queue.rst
+  * See Documentation/core-api/watch_queue.rst
   */
  
  #define pr_fmt(fmt) "watchq: " fmt
@@@ -34,27 -34,6 +34,27 @@@ MODULE_LICENSE("GPL")
  #define WATCH_QUEUE_NOTE_SIZE 128
  #define WATCH_QUEUE_NOTES_PER_PAGE (PAGE_SIZE / WATCH_QUEUE_NOTE_SIZE)
  
 +/*
 + * This must be called under the RCU read-lock, which makes
 + * sure that the wqueue still exists. It can then take the lock,
 + * and check that the wqueue hasn't been destroyed, which in
 + * turn makes sure that the notification pipe still exists.
 + */
 +static inline bool lock_wqueue(struct watch_queue *wqueue)
 +{
 +      spin_lock_bh(&wqueue->lock);
 +      if (unlikely(wqueue->defunct)) {
 +              spin_unlock_bh(&wqueue->lock);
 +              return false;
 +      }
 +      return true;
 +}
 +
 +static inline void unlock_wqueue(struct watch_queue *wqueue)
 +{
 +      spin_unlock_bh(&wqueue->lock);
 +}
 +
  static void watch_queue_pipe_buf_release(struct pipe_inode_info *pipe,
                                         struct pipe_buffer *buf)
  {
@@@ -90,10 -69,6 +90,10 @@@ static const struct pipe_buf_operation
  
  /*
   * Post a notification to a watch queue.
 + *
 + * Must be called with the RCU lock for reading, and the
 + * watch_queue lock held, which guarantees that the pipe
 + * hasn't been released.
   */
  static bool post_one_notification(struct watch_queue *wqueue,
                                  struct watch_notification *n)
  
        spin_lock_irq(&pipe->rd_wait.lock);
  
 -      if (wqueue->defunct)
 -              goto out;
 -
        mask = pipe->ring_size - 1;
        head = pipe->head;
        tail = pipe->tail;
@@@ -225,10 -203,7 +225,10 @@@ void __post_watch_notification(struct w
                if (security_post_notification(watch->cred, cred, n) < 0)
                        continue;
  
 -              post_one_notification(wqueue, n);
 +              if (lock_wqueue(wqueue)) {
 +                      post_one_notification(wqueue, n);
 +                      unlock_wqueue(wqueue);
 +              }
        }
  
        rcu_read_unlock();
@@@ -454,33 -429,6 +454,33 @@@ void init_watch(struct watch *watch, st
        rcu_assign_pointer(watch->queue, wqueue);
  }
  
 +static int add_one_watch(struct watch *watch, struct watch_list *wlist, struct watch_queue *wqueue)
 +{
 +      const struct cred *cred;
 +      struct watch *w;
 +
 +      hlist_for_each_entry(w, &wlist->watchers, list_node) {
 +              struct watch_queue *wq = rcu_access_pointer(w->queue);
 +              if (wqueue == wq && watch->id == w->id)
 +                      return -EBUSY;
 +      }
 +
 +      cred = current_cred();
 +      if (atomic_inc_return(&cred->user->nr_watches) > task_rlimit(current, RLIMIT_NOFILE)) {
 +              atomic_dec(&cred->user->nr_watches);
 +              return -EAGAIN;
 +      }
 +
 +      watch->cred = get_cred(cred);
 +      rcu_assign_pointer(watch->watch_list, wlist);
 +
 +      kref_get(&wqueue->usage);
 +      kref_get(&watch->usage);
 +      hlist_add_head(&watch->queue_node, &wqueue->watches);
 +      hlist_add_head_rcu(&watch->list_node, &wlist->watchers);
 +      return 0;
 +}
 +
  /**
   * add_watch_to_object - Add a watch on an object to a watch list
   * @watch: The watch to add
   */
  int add_watch_to_object(struct watch *watch, struct watch_list *wlist)
  {
 -      struct watch_queue *wqueue = rcu_access_pointer(watch->queue);
 -      struct watch *w;
 -
 -      hlist_for_each_entry(w, &wlist->watchers, list_node) {
 -              struct watch_queue *wq = rcu_access_pointer(w->queue);
 -              if (wqueue == wq && watch->id == w->id)
 -                      return -EBUSY;
 -      }
 +      struct watch_queue *wqueue;
 +      int ret = -ENOENT;
  
 -      watch->cred = get_current_cred();
 -      rcu_assign_pointer(watch->watch_list, wlist);
 +      rcu_read_lock();
  
 -      if (atomic_inc_return(&watch->cred->user->nr_watches) >
 -          task_rlimit(current, RLIMIT_NOFILE)) {
 -              atomic_dec(&watch->cred->user->nr_watches);
 -              put_cred(watch->cred);
 -              return -EAGAIN;
 +      wqueue = rcu_access_pointer(watch->queue);
 +      if (lock_wqueue(wqueue)) {
 +              spin_lock(&wlist->lock);
 +              ret = add_one_watch(watch, wlist, wqueue);
 +              spin_unlock(&wlist->lock);
 +              unlock_wqueue(wqueue);
        }
  
 -      spin_lock_bh(&wqueue->lock);
 -      kref_get(&wqueue->usage);
 -      kref_get(&watch->usage);
 -      hlist_add_head(&watch->queue_node, &wqueue->watches);
 -      spin_unlock_bh(&wqueue->lock);
 -
 -      hlist_add_head(&watch->list_node, &wlist->watchers);
 -      return 0;
 +      rcu_read_unlock();
 +      return ret;
  }
  EXPORT_SYMBOL(add_watch_to_object);
  
@@@ -560,15 -520,20 +560,15 @@@ found
  
        wqueue = rcu_dereference(watch->queue);
  
 -      /* We don't need the watch list lock for the next bit as RCU is
 -       * protecting *wqueue from deallocation.
 -       */
 -      if (wqueue) {
 +      if (lock_wqueue(wqueue)) {
                post_one_notification(wqueue, &n.watch);
  
 -              spin_lock_bh(&wqueue->lock);
 -
                if (!hlist_unhashed(&watch->queue_node)) {
                        hlist_del_init_rcu(&watch->queue_node);
                        put_watch(watch);
                }
  
 -              spin_unlock_bh(&wqueue->lock);
 +              unlock_wqueue(wqueue);
        }
  
        if (wlist->release_watch) {
index 10bc88cc3bf6b8bc4865baf006151a4a25383795,6f89471005ee6901f13841d87a92bbf622133720..62c54ffbeeaacc74aa9e52697ab11d7deec92d82
@@@ -32,16 -32,11 +32,16 @@@ struct unwind_hint 
   *
   * UNWIND_HINT_FUNC: Generate the unwind metadata of a callable function.
   * Useful for code which doesn't have an ELF function annotation.
 + *
 + * UNWIND_HINT_ENTRY: machine entry without stack, SYSCALL/SYSENTER etc.
   */
  #define UNWIND_HINT_TYPE_CALL         0
  #define UNWIND_HINT_TYPE_REGS         1
  #define UNWIND_HINT_TYPE_REGS_PARTIAL 2
  #define UNWIND_HINT_TYPE_FUNC         3
 +#define UNWIND_HINT_TYPE_ENTRY                4
 +#define UNWIND_HINT_TYPE_SAVE         5
 +#define UNWIND_HINT_TYPE_RESTORE      6
  
  #ifdef CONFIG_OBJTOOL
  
@@@ -67,7 -62,7 +67,7 @@@
   * It should only be used in special cases where you're 100% sure it won't
   * affect the reliability of frame pointers and kernel stack traces.
   *
-  * For more information, see tools/objtool/Documentation/stack-validation.txt.
+  * For more information, see tools/objtool/Documentation/objtool.txt.
   */
  #define STACK_FRAME_NON_STANDARD(func) \
        static void __used __section(".discard.func_stack_frame_non_standard") \
   * the debuginfo as necessary.  It will also warn if it sees any
   * inconsistencies.
   */
 -.macro UNWIND_HINT sp_reg:req sp_offset=0 type:req end=0
 +.macro UNWIND_HINT type:req sp_reg=0 sp_offset=0 end=0
  .Lunwind_hint_ip_\@:
        .pushsection .discard.unwind_hints
                /* struct unwind_hint */
        .popsection
  .endm
  
 +.macro STACK_FRAME_NON_STANDARD_FP func:req
 +#ifdef CONFIG_FRAME_POINTER
 +      STACK_FRAME_NON_STANDARD \func
 +#endif
 +.endm
 +
  .macro ANNOTATE_NOENDBR
  .Lhere_\@:
        .pushsection .discard.noendbr
  #define ASM_REACHABLE
  #else
  #define ANNOTATE_INTRA_FUNCTION_CALL
 -.macro UNWIND_HINT sp_reg:req sp_offset=0 type:req end=0
 +.macro UNWIND_HINT type:req sp_reg=0 sp_offset=0 end=0
  .endm
  .macro STACK_FRAME_NON_STANDARD func:req
  .endm
diff --combined tools/objtool/check.c
index b341f8a8c7c56d606fc002163fd53fc1ec7f1a91,970844ceecdceeff9faf360ce67f3299455c9ed0..0cec74da7ffea42da25d5423207995e1a0579ad0
@@@ -376,8 -376,7 +376,8 @@@ static int decode_instructions(struct o
                        sec->text = true;
  
                if (!strcmp(sec->name, ".noinstr.text") ||
 -                  !strcmp(sec->name, ".entry.text"))
 +                  !strcmp(sec->name, ".entry.text") ||
 +                  !strncmp(sec->name, ".text.__x86.", 12))
                        sec->noinstr = true;
  
                for (offset = 0; offset < sec->sh.sh_size; offset += insn->len) {
@@@ -750,52 -749,6 +750,52 @@@ static int create_retpoline_sites_secti
        return 0;
  }
  
 +static int create_return_sites_sections(struct objtool_file *file)
 +{
 +      struct instruction *insn;
 +      struct section *sec;
 +      int idx;
 +
 +      sec = find_section_by_name(file->elf, ".return_sites");
 +      if (sec) {
 +              WARN("file already has .return_sites, skipping");
 +              return 0;
 +      }
 +
 +      idx = 0;
 +      list_for_each_entry(insn, &file->return_thunk_list, call_node)
 +              idx++;
 +
 +      if (!idx)
 +              return 0;
 +
 +      sec = elf_create_section(file->elf, ".return_sites", 0,
 +                               sizeof(int), idx);
 +      if (!sec) {
 +              WARN("elf_create_section: .return_sites");
 +              return -1;
 +      }
 +
 +      idx = 0;
 +      list_for_each_entry(insn, &file->return_thunk_list, call_node) {
 +
 +              int *site = (int *)sec->data->d_buf + idx;
 +              *site = 0;
 +
 +              if (elf_add_reloc_to_insn(file->elf, sec,
 +                                        idx * sizeof(int),
 +                                        R_X86_64_PC32,
 +                                        insn->sec, insn->offset)) {
 +                      WARN("elf_add_reloc_to_insn: .return_sites");
 +                      return -1;
 +              }
 +
 +              idx++;
 +      }
 +
 +      return 0;
 +}
 +
  static int create_ibt_endbr_seal_sections(struct objtool_file *file)
  {
        struct instruction *insn;
@@@ -1130,11 -1083,6 +1130,11 @@@ __weak bool arch_is_retpoline(struct sy
        return false;
  }
  
 +__weak bool arch_is_rethunk(struct symbol *sym)
 +{
 +      return false;
 +}
 +
  #define NEGATIVE_RELOC        ((void *)-1L)
  
  static struct reloc *insn_reloc(struct objtool_file *file, struct instruction *insn)
@@@ -1302,19 -1250,6 +1302,19 @@@ static void add_retpoline_call(struct o
        annotate_call_site(file, insn, false);
  }
  
 +static void add_return_call(struct objtool_file *file, struct instruction *insn, bool add)
 +{
 +      /*
 +       * Return thunk tail calls are really just returns in disguise,
 +       * so convert them accordingly.
 +       */
 +      insn->type = INSN_RETURN;
 +      insn->retpoline_safe = true;
 +
 +      if (add)
 +              list_add_tail(&insn->call_node, &file->return_thunk_list);
 +}
 +
  static bool same_function(struct instruction *insn1, struct instruction *insn2)
  {
        return insn1->func->pfunc == insn2->func->pfunc;
@@@ -1367,9 -1302,6 +1367,9 @@@ static int add_jump_destinations(struc
                } else if (reloc->sym->retpoline_thunk) {
                        add_retpoline_call(file, insn);
                        continue;
 +              } else if (reloc->sym->return_thunk) {
 +                      add_return_call(file, insn, true);
 +                      continue;
                } else if (insn->func) {
                        /*
                         * External sibling call or internal sibling call with
  
                jump_dest = find_insn(file, dest_sec, dest_off);
                if (!jump_dest) {
 +                      struct symbol *sym = find_symbol_by_offset(dest_sec, dest_off);
 +
 +                      /*
 +                       * This is a special case for zen_untrain_ret().
 +                       * It jumps to __x86_return_thunk(), but objtool
 +                       * can't find the thunk's starting RET
 +                       * instruction, because the RET is also in the
 +                       * middle of another instruction.  Objtool only
 +                       * knows about the outer instruction.
 +                       */
 +                      if (sym && sym->return_thunk) {
 +                              add_return_call(file, insn, false);
 +                              continue;
 +                      }
 +
                        WARN_FUNC("can't find jump dest instruction at %s+0x%lx",
                                  insn->sec, insn->offset, dest_sec->name,
                                  dest_off);
@@@ -2032,35 -1949,16 +2032,35 @@@ static int read_unwind_hints(struct obj
  
                insn->hint = true;
  
 -              if (opts.ibt && hint->type == UNWIND_HINT_TYPE_REGS_PARTIAL) {
 +              if (hint->type == UNWIND_HINT_TYPE_SAVE) {
 +                      insn->hint = false;
 +                      insn->save = true;
 +                      continue;
 +              }
 +
 +              if (hint->type == UNWIND_HINT_TYPE_RESTORE) {
 +                      insn->restore = true;
 +                      continue;
 +              }
 +
 +              if (hint->type == UNWIND_HINT_TYPE_REGS_PARTIAL) {
                        struct symbol *sym = find_symbol_by_offset(insn->sec, insn->offset);
  
 -                      if (sym && sym->bind == STB_GLOBAL &&
 -                          insn->type != INSN_ENDBR && !insn->noendbr) {
 -                              WARN_FUNC("UNWIND_HINT_IRET_REGS without ENDBR",
 -                                        insn->sec, insn->offset);
 +                      if (sym && sym->bind == STB_GLOBAL) {
 +                              if (opts.ibt && insn->type != INSN_ENDBR && !insn->noendbr) {
 +                                      WARN_FUNC("UNWIND_HINT_IRET_REGS without ENDBR",
 +                                                insn->sec, insn->offset);
 +                              }
 +
 +                              insn->entry = 1;
                        }
                }
  
 +              if (hint->type == UNWIND_HINT_TYPE_ENTRY) {
 +                      hint->type = UNWIND_HINT_TYPE_CALL;
 +                      insn->entry = 1;
 +              }
 +
                if (hint->type == UNWIND_HINT_TYPE_FUNC) {
                        insn->cfi = &func_cfi;
                        continue;
@@@ -2134,10 -2032,8 +2134,10 @@@ static int read_retpoline_hints(struct 
                }
  
                if (insn->type != INSN_JUMP_DYNAMIC &&
 -                  insn->type != INSN_CALL_DYNAMIC) {
 -                      WARN_FUNC("retpoline_safe hint not an indirect jump/call",
 +                  insn->type != INSN_CALL_DYNAMIC &&
 +                  insn->type != INSN_RETURN &&
 +                  insn->type != INSN_NOP) {
 +                      WARN_FUNC("retpoline_safe hint not an indirect jump/call/ret/nop",
                                  insn->sec, insn->offset);
                        return -1;
                }
@@@ -2288,9 -2184,6 +2288,9 @@@ static int classify_symbols(struct objt
                        if (arch_is_retpoline(func))
                                func->retpoline_thunk = true;
  
 +                      if (arch_is_rethunk(func))
 +                              func->return_thunk = true;
 +
                        if (!strcmp(func->name, "__fentry__"))
                                func->fentry = true;
  
@@@ -3297,7 -3190,7 +3297,7 @@@ static struct instruction *next_insn_to
   * Follow the branch starting at the given instruction, and recursively follow
   * any other branches (jumps).  Meanwhile, track the frame pointer state at
   * each instruction and validate all the rules described in
-  * tools/objtool/Documentation/stack-validation.txt.
+  * tools/objtool/Documentation/objtool.txt.
   */
  static int validate_branch(struct objtool_file *file, struct symbol *func,
                           struct instruction *insn, struct insn_state state)
                        return 1;
                }
  
 -              visited = 1 << state.uaccess;
 -              if (insn->visited) {
 +              visited = VISITED_BRANCH << state.uaccess;
 +              if (insn->visited & VISITED_BRANCH_MASK) {
                        if (!insn->hint && !insn_cfi_match(insn, &state.cfi))
                                return 1;
  
                        state.instr += insn->instr;
  
                if (insn->hint) {
 +                      if (insn->restore) {
 +                              struct instruction *save_insn, *i;
 +
 +                              i = insn;
 +                              save_insn = NULL;
 +
 +                              sym_for_each_insn_continue_reverse(file, func, i) {
 +                                      if (i->save) {
 +                                              save_insn = i;
 +                                              break;
 +                                      }
 +                              }
 +
 +                              if (!save_insn) {
 +                                      WARN_FUNC("no corresponding CFI save for CFI restore",
 +                                                sec, insn->offset);
 +                                      return 1;
 +                              }
 +
 +                              if (!save_insn->visited) {
 +                                      WARN_FUNC("objtool isn't smart enough to handle this CFI save/restore combo",
 +                                                sec, insn->offset);
 +                                      return 1;
 +                              }
 +
 +                              insn->cfi = save_insn->cfi;
 +                              nr_cfi_reused++;
 +                      }
 +
                        state.cfi = *insn->cfi;
                } else {
                        /* XXX track if we actually changed state.cfi */
@@@ -3569,145 -3433,6 +3569,145 @@@ static int validate_unwind_hints(struc
        return warnings;
  }
  
 +/*
 + * Validate rethunk entry constraint: must untrain RET before the first RET.
 + *
 + * Follow every branch (intra-function) and ensure ANNOTATE_UNRET_END comes
 + * before an actual RET instruction.
 + */
 +static int validate_entry(struct objtool_file *file, struct instruction *insn)
 +{
 +      struct instruction *next, *dest;
 +      int ret, warnings = 0;
 +
 +      for (;;) {
 +              next = next_insn_to_validate(file, insn);
 +
 +              if (insn->visited & VISITED_ENTRY)
 +                      return 0;
 +
 +              insn->visited |= VISITED_ENTRY;
 +
 +              if (!insn->ignore_alts && !list_empty(&insn->alts)) {
 +                      struct alternative *alt;
 +                      bool skip_orig = false;
 +
 +                      list_for_each_entry(alt, &insn->alts, list) {
 +                              if (alt->skip_orig)
 +                                      skip_orig = true;
 +
 +                              ret = validate_entry(file, alt->insn);
 +                              if (ret) {
 +                                      if (opts.backtrace)
 +                                              BT_FUNC("(alt)", insn);
 +                                      return ret;
 +                              }
 +                      }
 +
 +                      if (skip_orig)
 +                              return 0;
 +              }
 +
 +              switch (insn->type) {
 +
 +              case INSN_CALL_DYNAMIC:
 +              case INSN_JUMP_DYNAMIC:
 +              case INSN_JUMP_DYNAMIC_CONDITIONAL:
 +                      WARN_FUNC("early indirect call", insn->sec, insn->offset);
 +                      return 1;
 +
 +              case INSN_JUMP_UNCONDITIONAL:
 +              case INSN_JUMP_CONDITIONAL:
 +                      if (!is_sibling_call(insn)) {
 +                              if (!insn->jump_dest) {
 +                                      WARN_FUNC("unresolved jump target after linking?!?",
 +                                                insn->sec, insn->offset);
 +                                      return -1;
 +                              }
 +                              ret = validate_entry(file, insn->jump_dest);
 +                              if (ret) {
 +                                      if (opts.backtrace) {
 +                                              BT_FUNC("(branch%s)", insn,
 +                                                      insn->type == INSN_JUMP_CONDITIONAL ? "-cond" : "");
 +                                      }
 +                                      return ret;
 +                              }
 +
 +                              if (insn->type == INSN_JUMP_UNCONDITIONAL)
 +                                      return 0;
 +
 +                              break;
 +                      }
 +
 +                      /* fallthrough */
 +              case INSN_CALL:
 +                      dest = find_insn(file, insn->call_dest->sec,
 +                                       insn->call_dest->offset);
 +                      if (!dest) {
 +                              WARN("Unresolved function after linking!?: %s",
 +                                   insn->call_dest->name);
 +                              return -1;
 +                      }
 +
 +                      ret = validate_entry(file, dest);
 +                      if (ret) {
 +                              if (opts.backtrace)
 +                                      BT_FUNC("(call)", insn);
 +                              return ret;
 +                      }
 +                      /*
 +                       * If a call returns without error, it must have seen UNTRAIN_RET.
 +                       * Therefore any non-error return is a success.
 +                       */
 +                      return 0;
 +
 +              case INSN_RETURN:
 +                      WARN_FUNC("RET before UNTRAIN", insn->sec, insn->offset);
 +                      return 1;
 +
 +              case INSN_NOP:
 +                      if (insn->retpoline_safe)
 +                              return 0;
 +                      break;
 +
 +              default:
 +                      break;
 +              }
 +
 +              if (!next) {
 +                      WARN_FUNC("teh end!", insn->sec, insn->offset);
 +                      return -1;
 +              }
 +              insn = next;
 +      }
 +
 +      return warnings;
 +}
 +
 +/*
 + * Validate that all branches starting at 'insn->entry' encounter UNRET_END
 + * before RET.
 + */
 +static int validate_unret(struct objtool_file *file)
 +{
 +      struct instruction *insn;
 +      int ret, warnings = 0;
 +
 +      for_each_insn(file, insn) {
 +              if (!insn->entry)
 +                      continue;
 +
 +              ret = validate_entry(file, insn);
 +              if (ret < 0) {
 +                      WARN_FUNC("Failed UNRET validation", insn->sec, insn->offset);
 +                      return ret;
 +              }
 +              warnings += ret;
 +      }
 +
 +      return warnings;
 +}
 +
  static int validate_retpoline(struct objtool_file *file)
  {
        struct instruction *insn;
  
        for_each_insn(file, insn) {
                if (insn->type != INSN_JUMP_DYNAMIC &&
 -                  insn->type != INSN_CALL_DYNAMIC)
 +                  insn->type != INSN_CALL_DYNAMIC &&
 +                  insn->type != INSN_RETURN)
                        continue;
  
                if (insn->retpoline_safe)
                if (!strcmp(insn->sec->name, ".init.text") && !opts.module)
                        continue;
  
 -              WARN_FUNC("indirect %s found in RETPOLINE build",
 -                        insn->sec, insn->offset,
 -                        insn->type == INSN_JUMP_DYNAMIC ? "jump" : "call");
 +              if (insn->type == INSN_RETURN) {
 +                      if (opts.rethunk) {
 +                              WARN_FUNC("'naked' return found in RETHUNK build",
 +                                        insn->sec, insn->offset);
 +                      } else
 +                              continue;
 +              } else {
 +                      WARN_FUNC("indirect %s found in RETPOLINE build",
 +                                insn->sec, insn->offset,
 +                                insn->type == INSN_JUMP_DYNAMIC ? "jump" : "call");
 +              }
  
                warnings++;
        }
@@@ -4110,7 -3826,8 +4110,7 @@@ static int validate_ibt(struct objtool_
                    !strcmp(sec->name, "__bug_table")                   ||
                    !strcmp(sec->name, "__ex_table")                    ||
                    !strcmp(sec->name, "__jump_table")                  ||
 -                  !strcmp(sec->name, "__mcount_loc")                  ||
 -                  !strcmp(sec->name, "__tracepoints"))
 +                  !strcmp(sec->name, "__mcount_loc"))
                        continue;
  
                list_for_each_entry(reloc, &sec->reloc->reloc_list, list)
@@@ -4229,17 -3946,6 +4229,17 @@@ int check(struct objtool_file *file
                warnings += ret;
        }
  
 +      if (opts.unret) {
 +              /*
 +               * Must be after validate_branch() and friends, it plays
 +               * further games with insn->visited.
 +               */
 +              ret = validate_unret(file);
 +              if (ret < 0)
 +                      return ret;
 +              warnings += ret;
 +      }
 +
        if (opts.ibt) {
                ret = validate_ibt(file);
                if (ret < 0)
                warnings += ret;
        }
  
 +      if (opts.rethunk) {
 +              ret = create_return_sites_sections(file);
 +              if (ret < 0)
 +                      goto out;
 +              warnings += ret;
 +      }
 +
        if (opts.mcount) {
                ret = create_mcount_loc_sections(file);
                if (ret < 0)
This page took 0.218624 seconds and 4 git commands to generate.