]> Git Repo - linux.git/commitdiff
Merge tag 'core-rcu-2020-10-12' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <[email protected]>
Sun, 18 Oct 2020 21:34:50 +0000 (14:34 -0700)
committerLinus Torvalds <[email protected]>
Sun, 18 Oct 2020 21:34:50 +0000 (14:34 -0700)
Pull RCU changes from Ingo Molnar:

 - Debugging for smp_call_function()

 - RT raw/non-raw lock ordering fixes

 - Strict grace periods for KASAN

 - New smp_call_function() torture test

 - Torture-test updates

 - Documentation updates

 - Miscellaneous fixes

[ This doesn't actually pull the tag - I've dropped the last merge from
  the RCU branch due to questions about the series.   - Linus ]

* tag 'core-rcu-2020-10-12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (77 commits)
  smp: Make symbol 'csd_bug_count' static
  kernel/smp: Provide CSD lock timeout diagnostics
  smp: Add source and destination CPUs to __call_single_data
  rcu: Shrink each possible cpu krcp
  rcu/segcblist: Prevent useless GP start if no CBs to accelerate
  torture: Add gdb support
  rcutorture: Allow pointer leaks to test diagnostic code
  rcutorture: Hoist OOM registry up one level
  refperf: Avoid null pointer dereference when buf fails to allocate
  rcutorture: Properly synchronize with OOM notifier
  rcutorture: Properly set rcu_fwds for OOM handling
  torture: Add kvm.sh --help and update help message
  rcutorture: Add CONFIG_PROVE_RCU_LIST to TREE05
  torture: Update initrd documentation
  rcutorture: Replace HTTP links with HTTPS ones
  locktorture: Make function torture_percpu_rwsem_init() static
  torture: document --allcpus argument added to the kvm.sh script
  rcutorture: Output number of elapsed grace periods
  rcutorture: Remove KCSAN stubs
  rcu: Remove unused "cpu" parameter from rcu_report_qs_rdp()
  ...

1  2 
Documentation/admin-guide/kernel-parameters.txt
MAINTAINERS
kernel/Makefile
kernel/entry/common.c
kernel/rcu/tree.c
kernel/rcu/update.c
kernel/smp.c
lib/Kconfig.debug

index d246ad46d845f7c5b6dac9f8025d47e8afca9c04,68fee5e034ca03f070602693c58708c53faebf50..f1eeba73d9313bb44f9a42ebbd3ec751ff99e1ab
                        loops can be debugged more effectively on production
                        systems.
  
 -      clearcpuid=BITNUM [X86]
 +      clearcpuid=BITNUM[,BITNUM...] [X86]
                        Disable CPUID feature X for the kernel. See
                        arch/x86/include/asm/cpufeatures.h for the valid bit
                        numbers. Note the Linux specific bits are not necessarily
                        some critical bits.
  
        cma=nn[MG]@[start[MG][-end[MG]]]
 -                      [ARM,X86,KNL]
 +                      [KNL,CMA]
                        Sets the size of kernel global memory area for
                        contiguous memory allocations and optionally the
                        placement constraint by the physical address range of
                        memory allocations. A value of 0 disables CMA
                        altogether. For more information, see
 -                      include/linux/dma-contiguous.h
 +                      kernel/dma/contiguous.c
 +
 +      cma_pernuma=nn[MG]
 +                      [ARM64,KNL]
 +                      Sets the size of kernel per-numa memory area for
 +                      contiguous memory allocations. A value of 0 disables
 +                      per-numa CMA altogether. And If this option is not
 +                      specificed, the default value is 0.
 +                      With per-numa CMA enabled, DMA users on node nid will
 +                      first try to allocate buffer from the pernuma area
 +                      which is located in node nid, if the allocation fails,
 +                      they will fallback to the global default memory area.
  
        cmo_free_hint=  [PPC] Format: { yes | no }
                        Specify whether pages are marked as being inactive
                        Arch Perfmon v4 (Skylake and newer).
  
        disable_ddw     [PPC/PSERIES]
 -                      Disable Dynamic DMA Window support. Use this if
 +                      Disable Dynamic DMA Window support. Use this
                        to workaround buggy firmware.
  
        disable_ipv6=   [IPV6]
                        what data is available or for reverse-engineering.
  
        dyndbg[="val"]          [KNL,DYNAMIC_DEBUG]
 -      module.dyndbg[="val"]
 +      <module>.dyndbg[="val"]
                        Enable debug messages at boot time.  See
                        Documentation/admin-guide/dynamic-debug-howto.rst
                        for details.
        nopku           [X86] Disable Memory Protection Keys CPU feature found
                        in some Intel CPUs.
  
 -      module.async_probe [KNL]
 +      <module>.async_probe [KNL]
                        Enable asynchronous probe on this module.
  
        early_ioremap_debug [KNL]
                        current integrity status.
  
        failslab=
 +      fail_usercopy=
        fail_page_alloc=
        fail_make_request=[KNL]
                        General fault injection mechanism.
                        Format: <interval>,<probability>,<space>,<times>
                        See also Documentation/fault-injection/.
  
 +      fb_tunnels=     [NET]
 +                      Format: { initns | none }
 +                      See Documentation/admin-guide/sysctl/net.rst for
 +                      fb_tunnels_only_for_init_ns
 +
        floppy=         [HW]
                        See Documentation/admin-guide/blockdev/floppy.rst.
  
                        1 - Bypass the IOMMU for DMA.
                        unset - Use value of CONFIG_IOMMU_DEFAULT_PASSTHROUGH.
  
 -      io7=            [HW] IO7 for Marvel based alpha systems
 +      io7=            [HW] IO7 for Marvel-based Alpha systems
                        See comment before marvel_specify_io7 in
                        arch/alpha/kernel/core_marvel.c.
  
        kgdbwait        [KGDB] Stop kernel execution and enter the
                        kernel debugger at the earliest opportunity.
  
 -      kmac=           [MIPS] korina ethernet MAC address.
 +      kmac=           [MIPS] Korina ethernet MAC address.
                        Configure the RouterBoard 532 series on-chip
                        Ethernet adapter MAC address.
  
                        [KVM,ARM] Allow use of GICv4 for direct injection of
                        LPIs.
  
 +      kvm_cma_resv_ratio=n [PPC]
 +                      Reserves given percentage from system memory area for
 +                      contiguous memory allocation for KVM hash pagetable
 +                      allocation.
 +                      By default it reserves 5% of total system memory.
 +                      Format: <integer>
 +                      Default: 5
 +
        kvm-intel.ept=  [KVM,Intel] Disable extended page tables
                        (virtualized MMU) support on capable Intel chips.
                        Default is 1 (enabled)
        lapic           [X86-32,APIC] Enable the local APIC even if BIOS
                        disabled it.
  
 -      lapic=          [X86,APIC] "notscdeadline" Do not use TSC deadline
 +      lapic=          [X86,APIC] Do not use TSC deadline
                        value for LAPIC timer one-shot implementation. Default
                        back to the programmable timer unit in the LAPIC.
 +                      Format: notscdeadline
  
        lapic_timer_c2_ok       [X86,APIC] trust the local apic timer
                        in C2 power state.
  
        memblock=debug  [KNL] Enable memblock debug messages.
  
 -      load_ramdisk=   [RAM] List of ramdisks to load from floppy
 -                      See Documentation/admin-guide/blockdev/ramdisk.rst.
 +      load_ramdisk=   [RAM] [Deprecated]
  
        lockd.nlm_grace_period=P  [NFS] Assign grace period.
                        Format: <integer>
                        (machvec) in a generic kernel.
                        Example: machvec=hpzx1
  
 -      machtype=       [Loongson] Share the same kernel image file between different
 -                       yeeloong laptop.
 +      machtype=       [Loongson] Share the same kernel image file between
 +                      different yeeloong laptops.
                        Example: machtype=lemote-yeeloong-2f-7inch
  
        max_addr=nn[KMG]        [KNL,BOOT,ia64] All physical memory greater
                        and gids from such clients.  This is intended to ease
                        migration from NFSv2/v3.
  
+       nmi_backtrace.backtrace_idle [KNL]
+                       Dump stacks even of idle CPUs in response to an
+                       NMI stack-backtrace request.
        nmi_debug=      [KNL,SH] Specify one or more actions to take
                        when a NMI is triggered.
                        Format: [state][,regs][,debounce][,die]
                        register save and restore. The kernel will only save
                        legacy floating-point registers on task switch.
  
 -      nohugeiomap     [KNL,X86,PPC] Disable kernel huge I/O mappings.
 +      nohugeiomap     [KNL,X86,PPC,ARM64] Disable kernel huge I/O mappings.
  
        nosmt           [KNL,S390] Disable symmetric multithreading (SMT).
                        Equivalent to smt=1.
                        Param: <number> - step/bucket size as a power of 2 for
                                statistical time based profiling.
  
 -      prompt_ramdisk= [RAM] List of RAM disks to prompt for floppy disk
 -                      before loading.
 -                      See Documentation/admin-guide/blockdev/ramdisk.rst.
 +      prompt_ramdisk= [RAM] [Deprecated]
  
        prot_virt=      [S390] enable hosting protected virtual machines
                        isolated from the hypervisor (if hardware supports
        ramdisk_size=   [RAM] Sizes of RAM disks in kilobytes
                        See Documentation/admin-guide/blockdev/ramdisk.rst.
  
 +      ramdisk_start=  [RAM] RAM disk image start address
 +
        random.trust_cpu={on,off}
                        [KNL] Enable or disable trusting the use of the
                        CPU's random number generator (if available) to
                        This wake_up() will be accompanied by a
                        WARN_ONCE() splat and an ftrace_dump().
  
+       rcutree.rcu_unlock_delay= [KNL]
+                       In CONFIG_RCU_STRICT_GRACE_PERIOD=y kernels,
+                       this specifies an rcu_read_unlock()-time delay
+                       in microseconds.  This defaults to zero.
+                       Larger delays increase the probability of
+                       catching RCU pointer leaks, that is, buggy use
+                       of RCU-protected pointers after the relevant
+                       rcu_read_unlock() has completed.
        rcutree.sysrq_rcu= [KNL]
                        Commandeer a sysrq key to dump out Tree RCU's
                        rcu_node tree with an eye towards determining
                        why a new grace period has not yet started.
  
-       rcuperf.gp_async= [KNL]
+       rcuscale.gp_async= [KNL]
                        Measure performance of asynchronous
                        grace-period primitives such as call_rcu().
  
-       rcuperf.gp_async_max= [KNL]
+       rcuscale.gp_async_max= [KNL]
                        Specify the maximum number of outstanding
                        callbacks per writer thread.  When a writer
                        thread exceeds this limit, it invokes the
                        corresponding flavor of rcu_barrier() to allow
                        previously posted callbacks to drain.
  
-       rcuperf.gp_exp= [KNL]
+       rcuscale.gp_exp= [KNL]
                        Measure performance of expedited synchronous
                        grace-period primitives.
  
-       rcuperf.holdoff= [KNL]
+       rcuscale.holdoff= [KNL]
                        Set test-start holdoff period.  The purpose of
                        this parameter is to delay the start of the
                        test until boot completes in order to avoid
                        interference.
  
-       rcuperf.kfree_rcu_test= [KNL]
+       rcuscale.kfree_rcu_test= [KNL]
                        Set to measure performance of kfree_rcu() flooding.
  
-       rcuperf.kfree_nthreads= [KNL]
+       rcuscale.kfree_nthreads= [KNL]
                        The number of threads running loops of kfree_rcu().
  
-       rcuperf.kfree_alloc_num= [KNL]
+       rcuscale.kfree_alloc_num= [KNL]
                        Number of allocations and frees done in an iteration.
  
-       rcuperf.kfree_loops= [KNL]
-                       Number of loops doing rcuperf.kfree_alloc_num number
+       rcuscale.kfree_loops= [KNL]
+                       Number of loops doing rcuscale.kfree_alloc_num number
                        of allocations and frees.
  
-       rcuperf.nreaders= [KNL]
+       rcuscale.nreaders= [KNL]
                        Set number of RCU readers.  The value -1 selects
                        N, where N is the number of CPUs.  A value
                        "n" less than -1 selects N-n+1, where N is again
                        A value of "n" less than or equal to -N selects
                        a single reader.
  
-       rcuperf.nwriters= [KNL]
+       rcuscale.nwriters= [KNL]
                        Set number of RCU writers.  The values operate
-                       the same as for rcuperf.nreaders.
+                       the same as for rcuscale.nreaders.
                        N, where N is the number of CPUs
  
-       rcuperf.perf_type= [KNL]
+       rcuscale.perf_type= [KNL]
                        Specify the RCU implementation to test.
  
-       rcuperf.shutdown= [KNL]
+       rcuscale.shutdown= [KNL]
                        Shut the system down after performance tests
                        complete.  This is useful for hands-off automated
                        testing.
  
-       rcuperf.verbose= [KNL]
+       rcuscale.verbose= [KNL]
                        Enable additional printk() statements.
  
-       rcuperf.writer_holdoff= [KNL]
+       rcuscale.writer_holdoff= [KNL]
                        Write-side holdoff between grace periods,
                        in microseconds.  The default of zero says
                        no holdoff.
                        are zero, rcutorture acts as if is interpreted
                        they are all non-zero.
  
+       rcutorture.irqreader= [KNL]
+                       Run RCU readers from irq handlers, or, more
+                       accurately, from a timer handler.  Not all RCU
+                       flavors take kindly to this sort of thing.
+       rcutorture.leakpointer= [KNL]
+                       Leak an RCU-protected pointer out of the reader.
+                       This can of course result in splats, and is
+                       intended to test the ability of things like
+                       CONFIG_RCU_STRICT_GRACE_PERIOD=y to detect
+                       such leaks.
        rcutorture.n_barrier_cbs= [KNL]
                        Set callbacks/threads for rcu_barrier() testing.
  
        refscale.shutdown= [KNL]
                        Shut down the system at the end of the performance
                        test.  This defaults to 1 (shut it down) when
-                       rcuperf is built into the kernel and to 0 (leave
-                       it running) when rcuperf is built as a module.
+                       refscale is built into the kernel and to 0 (leave
+                       it running) when refscale is built as a module.
  
        refscale.verbose= [KNL]
                        Enable additional printk() statements.
                        Format: integer between 0 and 10
                        Default is 0.
  
+       scftorture.holdoff= [KNL]
+                       Number of seconds to hold off before starting
+                       test.  Defaults to zero for module insertion and
+                       to 10 seconds for built-in smp_call_function()
+                       tests.
+       scftorture.longwait= [KNL]
+                       Request ridiculously long waits randomly selected
+                       up to the chosen limit in seconds.  Zero (the
+                       default) disables this feature.  Please note
+                       that requesting even small non-zero numbers of
+                       seconds can result in RCU CPU stall warnings,
+                       softlockup complaints, and so on.
+       scftorture.nthreads= [KNL]
+                       Number of kthreads to spawn to invoke the
+                       smp_call_function() family of functions.
+                       The default of -1 specifies a number of kthreads
+                       equal to the number of CPUs.
+       scftorture.onoff_holdoff= [KNL]
+                       Number seconds to wait after the start of the
+                       test before initiating CPU-hotplug operations.
+       scftorture.onoff_interval= [KNL]
+                       Number seconds to wait between successive
+                       CPU-hotplug operations.  Specifying zero (which
+                       is the default) disables CPU-hotplug operations.
+       scftorture.shutdown_secs= [KNL]
+                       The number of seconds following the start of the
+                       test after which to shut down the system.  The
+                       default of zero avoids shutting down the system.
+                       Non-zero values are useful for automated tests.
+       scftorture.stat_interval= [KNL]
+                       The number of seconds between outputting the
+                       current test statistics to the console.  A value
+                       of zero disables statistics output.
+       scftorture.stutter_cpus= [KNL]
+                       The number of jiffies to wait between each change
+                       to the set of CPUs under test.
+       scftorture.use_cpus_read_lock= [KNL]
+                       Use use_cpus_read_lock() instead of the default
+                       preempt_disable() to disable CPU hotplug
+                       while invoking one of the smp_call_function*()
+                       functions.
+       scftorture.verbose= [KNL]
+                       Enable additional printk() statements.
+       scftorture.weight_single= [KNL]
+                       The probability weighting to use for the
+                       smp_call_function_single() function with a zero
+                       "wait" parameter.  A value of -1 selects the
+                       default if all other weights are -1.  However,
+                       if at least one weight has some other value, a
+                       value of -1 will instead select a weight of zero.
+       scftorture.weight_single_wait= [KNL]
+                       The probability weighting to use for the
+                       smp_call_function_single() function with a
+                       non-zero "wait" parameter.  See weight_single.
+       scftorture.weight_many= [KNL]
+                       The probability weighting to use for the
+                       smp_call_function_many() function with a zero
+                       "wait" parameter.  See weight_single.
+                       Note well that setting a high probability for
+                       this weighting can place serious IPI load
+                       on the system.
+       scftorture.weight_many_wait= [KNL]
+                       The probability weighting to use for the
+                       smp_call_function_many() function with a
+                       non-zero "wait" parameter.  See weight_single
+                       and weight_many.
+       scftorture.weight_all= [KNL]
+                       The probability weighting to use for the
+                       smp_call_function_all() function with a zero
+                       "wait" parameter.  See weight_single and
+                       weight_many.
+       scftorture.weight_all_wait= [KNL]
+                       The probability weighting to use for the
+                       smp_call_function_all() function with a
+                       non-zero "wait" parameter.  See weight_single
+                       and weight_many.
        skew_tick=      [KNL] Offset the periodic timer tick per cpu to mitigate
                        xtime_lock contention on larger systems, and/or RCU lock
                        contention on all systems with CONFIG_MAXSMP set.
diff --combined MAINTAINERS
index e2a8ad69c2629f9d00273f8d45d9985c128f2b5b,a622d780e18691a856f0a8c5363590070e5c6650..5919b758c7084229ed937489e719a68a1a1843f3
@@@ -405,7 -405,7 +405,7 @@@ F: drivers/platform/x86/i2c-multi-insta
  ACPI PMIC DRIVERS
  M:    "Rafael J. Wysocki" <[email protected]>
  M:    Len Brown <[email protected]>
 -R:    Andy Shevchenko <and[email protected]>
 +R:    Andy Shevchenko <and[email protected]>
  R:    Mika Westerberg <[email protected]>
  L:    [email protected]
  S:    Supported
@@@ -802,13 -802,6 +802,13 @@@ S:       Maintaine
  F:    Documentation/devicetree/bindings/interrupt-controller/amazon,al-fic.txt
  F:    drivers/irqchip/irq-al-fic.c
  
 +AMAZON ANNAPURNA LABS MEMORY CONTROLLER EDAC
 +M:    Talel Shenhar <[email protected]>
 +M:    Talel Shenhar <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/edac/amazon,al-mc-edac.yaml
 +F:    drivers/edac/al_mc_edac.c
 +
  AMAZON ANNAPURNA LABS THERMAL MMIO DRIVER
  M:    Talel Shenhar <[email protected]>
  S:    Maintained
@@@ -950,12 -943,37 +950,12 @@@ S:      Supporte
  F:    arch/arm64/boot/dts/amd/amd-seattle-xgbe*.dtsi
  F:    drivers/net/ethernet/amd/xgbe/
  
 -ANALOG DEVICES INC AD5686 DRIVER
 -M:    Michael Hennerich <[email protected]>
 -L:    [email protected]
 -S:    Supported
 -W:    http://ez.analog.com/community/linux-device-drivers
 -F:    drivers/iio/dac/ad5686*
 -F:    drivers/iio/dac/ad5696*
 -
 -ANALOG DEVICES INC AD5758 DRIVER
 -M:    Michael Hennerich <[email protected]>
 +AMS AS73211 DRIVER
 +M:    Christian Eggers <[email protected]>
  L:    [email protected]
 -S:    Supported
 -W:    http://ez.analog.com/community/linux-device-drivers
 -F:    Documentation/devicetree/bindings/iio/dac/ad5758.txt
 -F:    drivers/iio/dac/ad5758.c
 -
 -ANALOG DEVICES INC AD7091R5 DRIVER
 -M:    Beniamin Bia <[email protected]>
 -L:    [email protected]
 -S:    Supported
 -W:    http://ez.analog.com/community/linux-device-drivers
 -F:    Documentation/devicetree/bindings/iio/adc/adi,ad7091r5.yaml
 -F:    drivers/iio/adc/ad7091r5.c
 -
 -ANALOG DEVICES INC AD7124 DRIVER
 -M:    Michael Hennerich <[email protected]>
 -L:    [email protected]
 -S:    Supported
 -W:    http://ez.analog.com/community/linux-device-drivers
 -F:    Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml
 -F:    drivers/iio/adc/ad7124.c
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/iio/light/ams,as73211.yaml
 +F:    drivers/iio/light/as73211.c
  
  ANALOG DEVICES INC AD7192 DRIVER
  M:    Alexandru Tachici <[email protected]>
@@@ -973,6 -991,15 +973,6 @@@ W:        http://ez.analog.com/community/linux
  F:    Documentation/devicetree/bindings/iio/adc/adi,ad7292.yaml
  F:    drivers/iio/adc/ad7292.c
  
 -ANALOG DEVICES INC AD7606 DRIVER
 -M:    Michael Hennerich <[email protected]>
 -M:    Beniamin Bia <[email protected]>
 -L:    [email protected]
 -S:    Supported
 -W:    http://ez.analog.com/community/linux-device-drivers
 -F:    Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml
 -F:    drivers/iio/adc/ad7606.c
 -
  ANALOG DEVICES INC AD7768-1 DRIVER
  M:    Michael Hennerich <[email protected]>
  L:    [email protected]
@@@ -1034,6 -1061,7 +1034,6 @@@ F:      drivers/iio/imu/adis16475.
  F:    Documentation/devicetree/bindings/iio/imu/adi,adis16475.yaml
  
  ANALOG DEVICES INC ADM1177 DRIVER
 -M:    Beniamin Bia <[email protected]>
  M:    Michael Hennerich <[email protected]>
  L:    [email protected]
  S:    Supported
  S:    Maintained
  F:    drivers/media/i2c/adv7842*
  
 +ANALOG DEVICES INC ADXRS290 DRIVER
 +M:    Nishant Malpani <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/iio/gyro/adxrs290.c
 +F:    Documentation/devicetree/bindings/iio/gyroscope/adi,adxrs290.yaml
 +
  ANALOG DEVICES INC ASOC CODEC DRIVERS
  M:    Lars-Peter Clausen <[email protected]>
  M:    Nuno Sá <[email protected]>
@@@ -1107,6 -1128,15 +1107,6 @@@ S:     Supporte
  W:    http://ez.analog.com/community/linux-device-drivers
  F:    drivers/dma/dma-axi-dmac.c
  
 -ANALOG DEVICES INC HMC425A DRIVER
 -M:    Beniamin Bia <[email protected]>
 -M:    Michael Hennerich <[email protected]>
 -L:    [email protected]
 -S:    Supported
 -W:    http://ez.analog.com/community/linux-device-drivers
 -F:    Documentation/devicetree/bindings/iio/amplifiers/adi,hmc425a.yaml
 -F:    drivers/iio/amplifiers/hmc425a.c
 -
  ANALOG DEVICES INC IIO DRIVERS
  M:    Lars-Peter Clausen <[email protected]>
  M:    Michael Hennerich <[email protected]>
@@@ -1115,11 -1145,8 +1115,11 @@@ W:    http://wiki.analog.com
  W:    http://ez.analog.com/community/linux-device-drivers
  F:    Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9523
  F:    Documentation/ABI/testing/sysfs-bus-iio-frequency-adf4350
 +F:    Documentation/devicetree/bindings/iio/*/adi,*
 +F:    Documentation/devicetree/bindings/iio/dac/ad5758.txt
  F:    drivers/iio/*/ad*
  F:    drivers/iio/adc/ltc249*
 +F:    drivers/iio/amplifiers/hmc425a.c
  F:    drivers/staging/iio/*/ad*
  X:    drivers/iio/*/adjd*
  
@@@ -1259,7 -1286,7 +1259,7 @@@ S:      Supporte
  F:    Documentation/devicetree/bindings/net/apm-xgene-enet.txt
  F:    Documentation/devicetree/bindings/net/apm-xgene-mdio.txt
  F:    drivers/net/ethernet/apm/xgene/
 -F:    drivers/net/phy/mdio-xgene.c
 +F:    drivers/net/mdio/mdio-xgene.c
  
  APPLIED MICRO (APM) X-GENE SOC PMU
  M:    Khuong Dinh <[email protected]>
@@@ -1484,7 -1511,8 +1484,7 @@@ L:      [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/iommu/arm,smmu*
  F:    drivers/iommu/arm/
 -F:    drivers/iommu/io-pgtable-arm-v7s.c
 -F:    drivers/iommu/io-pgtable-arm.c
 +F:    drivers/iommu/io-pgtable-arm*
  
  ARM SUB-ARCHITECTURES
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/devicetree/bindings/arm/actions.yaml
  F:    Documentation/devicetree/bindings/clock/actions,owl-cmu.txt
 -F:    Documentation/devicetree/bindings/dma/owl-dma.txt
 +F:    Documentation/devicetree/bindings/dma/owl-dma.yaml
  F:    Documentation/devicetree/bindings/i2c/i2c-owl.txt
 +F:    Documentation/devicetree/bindings/interrupt-controller/actions,owl-sirq.yaml
  F:    Documentation/devicetree/bindings/mmc/owl-mmc.yaml
 -F:    Documentation/devicetree/bindings/pinctrl/actions,s900-pinctrl.txt
 +F:    Documentation/devicetree/bindings/pinctrl/actions,*
  F:    Documentation/devicetree/bindings/power/actions,owl-sps.txt
  F:    Documentation/devicetree/bindings/timer/actions,owl-timer.txt
  F:    arch/arm/boot/dts/owl-*
@@@ -1514,7 -1541,6 +1514,7 @@@ F:      drivers/clk/actions
  F:    drivers/clocksource/timer-owl*
  F:    drivers/dma/owl-dma.c
  F:    drivers/i2c/busses/i2c-owl.c
 +F:    drivers/irqchip/irq-owl-sirq.c
  F:    drivers/mmc/host/owl-mmc.c
  F:    drivers/pinctrl/actions/*
  F:    drivers/soc/actions/
@@@ -1602,7 -1628,7 +1602,7 @@@ N:      meso
  
  ARM/Annapurna Labs ALPINE ARCHITECTURE
  M:    Tsahee Zidenberg <[email protected]>
 -M:    Antoine Tenart <a[email protected]>
 +M:    Antoine Tenart <a[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/boot/dts/alpine*
@@@ -1725,7 -1751,6 +1725,7 @@@ ARM/CORESIGHT FRAMEWORK AND DRIVER
  M:    Mathieu Poirier <[email protected]>
  R:    Suzuki K Poulose <[email protected]>
  R:    Mike Leach <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-bus-coresight-devices-*
@@@ -2425,7 -2450,7 +2425,7 @@@ L:      [email protected] (m
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/media/s5p-cec.txt
 -F:    drivers/media/platform/s5p-cec/
 +F:    drivers/media/cec/platform/s5p/
  
  ARM/SAMSUNG S5P SERIES JPEG CODEC SUPPORT
  M:    Andrzej Pietrasiewicz <[email protected]>
@@@ -2484,7 -2509,7 +2484,7 @@@ S:      Maintaine
  F:    drivers/clk/socfpga/
  
  ARM/SOCFPGA EDAC SUPPORT
 -M:    Thor Thayer <[email protected]>
 +M:    Dinh Nguyen <[email protected]>
  S:    Maintained
  F:    drivers/edac/altera_edac.
  
@@@ -2570,7 -2595,7 +2570,7 @@@ L:      [email protected]
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/media/tegra-cec.txt
 -F:    drivers/media/platform/tegra-cec/
 +F:    drivers/media/cec/platform/tegra/
  
  ARM/TETON BGA MACHINE SUPPORT
  M:    "Mark F. Brown" <[email protected]>
@@@ -3238,7 -3263,7 +3238,7 @@@ M:      Daniel Borkmann <[email protected]
  R:    Martin KaFai Lau <[email protected]>
  R:    Song Liu <[email protected]>
  R:    Yonghong Song <[email protected]>
 -R:    Andrii Nakryiko <andrii[email protected]>
 +R:    Andrii Nakryiko <andrii@kernel.org>
  R:    John Fastabend <[email protected]>
  R:    KP Singh <[email protected]>
  L:    [email protected]
@@@ -3455,14 -3480,6 +3455,14 @@@ F:    drivers/bus/brcmstb_gisb.
  F:    drivers/pci/controller/pcie-brcmstb.c
  N:    brcmstb
  
 +BROADCOM BDC DRIVER
 +M:    Al Cooper <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/usb/brcm,bdc.txt
 +F:    drivers/usb/gadget/udc/bdc/
 +
  BROADCOM BMIPS CPUFREQ DRIVER
  M:    Markus Mayer <[email protected]>
  M:    [email protected]
@@@ -3495,17 -3512,13 +3495,17 @@@ F:   drivers/net/ethernet/broadcom/bnx2.
  F:    drivers/net/ethernet/broadcom/bnx2_*
  
  BROADCOM BNX2FC 10 GIGABIT FCOE DRIVER
 -M:    [email protected]
 +M:    Saurav Kashyap <[email protected]>
 +M:    Javed Hasan <[email protected]>
 +M:    [email protected]
  L:    [email protected]
  S:    Supported
  F:    drivers/scsi/bnx2fc/
  
  BROADCOM BNX2I 1/10 GIGABIT iSCSI DRIVER
 -M:    [email protected]
 +M:    Nilesh Javali <[email protected]>
 +M:    Manish Rangankar <[email protected]>
 +M:    [email protected]
  L:    [email protected]
  S:    Supported
  F:    drivers/scsi/bnx2i/
@@@ -3840,16 -3853,6 +3840,16 @@@ S:    Orpha
  F:    Documentation/devicetree/bindings/mtd/cadence-nand-controller.txt
  F:    drivers/mtd/nand/raw/cadence-nand-controller.c
  
 +CADENCE USB3 DRD IP DRIVER
 +M:    Peter Chen <[email protected]>
 +M:    Pawel Laszczak <[email protected]>
 +M:    Roger Quadros <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb.git
 +F:    Documentation/devicetree/bindings/usb/cdns-usb3.txt
 +F:    drivers/usb/cdns3/
 +
  CADET FM/AM RADIO RECEIVER DRIVER
  M:    Hans Verkuil <[email protected]>
  L:    [email protected]
@@@ -3914,7 -3917,6 +3914,7 @@@ F:      include/net/netns/can.
  F:    include/uapi/linux/can.h
  F:    include/uapi/linux/can/bcm.h
  F:    include/uapi/linux/can/gw.h
 +F:    include/uapi/linux/can/isotp.h
  F:    include/uapi/linux/can/raw.h
  F:    net/can/
  
@@@ -4033,7 -4035,7 +4033,7 @@@ S:      Supporte
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
  F:    Documentation/devicetree/bindings/media/cec-gpio.txt
 -F:    drivers/media/platform/cec-gpio/
 +F:    drivers/media/cec/platform/cec-gpio/
  
  CELL BROADBAND ENGINE ARCHITECTURE
  M:    Arnd Bergmann <[email protected]>
@@@ -4103,11 -4105,6 +4103,11 @@@ T:    git git://git.kernel.org/pub/scm/lin
  F:    drivers/char/
  F:    drivers/misc/
  F:    include/linux/miscdevice.h
 +X:    drivers/char/agp/
 +X:    drivers/char/hw_random/
 +X:    drivers/char/ipmi/
 +X:    drivers/char/random.c
 +X:    drivers/char/tpm/
  
  CHECKPATCH
  M:    Andy Whitcroft <[email protected]>
@@@ -4178,7 -4175,6 +4178,7 @@@ CIRRUS LOGIC AUDIO CODEC DRIVER
  M:    James Schulman <[email protected]>
  M:    David Rhodes <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
 +L:    [email protected]
  S:    Maintained
  F:    sound/soc/codecs/cs*
  
@@@ -4256,6 -4252,7 +4256,6 @@@ F:      drivers/net/ethernet/cisco/enic
  CISCO VIC LOW LATENCY NIC DRIVER
  M:    Christian Benvenuti <[email protected]>
  M:    Nelson Escobar <[email protected]>
 -M:    Parvi Kaustubhi <[email protected]>
  S:    Supported
  F:    drivers/infiniband/hw/usnic/
  
@@@ -4415,7 -4412,6 +4415,7 @@@ S:      Supporte
  T:    git git://git.infradead.org/users/hch/configfs.git
  F:    fs/configfs/
  F:    include/linux/configfs.h
 +F:    samples/configfs/
  
  CONSOLE SUBSYSTEM
  M:    Greg Kroah-Hartman <[email protected]>
@@@ -4713,15 -4709,6 +4713,15 @@@ S:    Supporte
  W:    http://www.chelsio.com
  F:    drivers/crypto/chelsio
  
 +CXGB4 INLINE CRYPTO DRIVER
 +M:    Ayush Sawal <[email protected]>
 +M:    Vinay Kumar Yadav <[email protected]>
 +M:    Rohit Maheshwari <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +W:    http://www.chelsio.com
 +F:    drivers/net/ethernet/chelsio/inline_crypto/
 +
  CXGB4 ETHERNET DRIVER (CXGB4)
  M:    Vishal Kulkarni <[email protected]>
  L:    [email protected]
@@@ -5024,12 -5011,6 +5024,12 @@@ S:    Maintaine
  F:    drivers/base/devcoredump.c
  F:    include/linux/devcoredump.h
  
 +DEVICE DEPENDENCY HELPER SCRIPT
 +M:    Saravana Kannan <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    scripts/dev-needs.sh
 +
  DEVICE DIRECT ACCESS (DAX)
  M:    Dan Williams <[email protected]>
  M:    Vishal Verma <[email protected]>
@@@ -5226,7 -5207,7 +5226,7 @@@ T:      git git://git.infradead.org/users/hc
  F:    include/asm-generic/dma-mapping.h
  F:    include/linux/dma-direct.h
  F:    include/linux/dma-mapping.h
 -F:    include/linux/dma-noncoherent.h
 +F:    include/linux/dma-map-ops.h
  F:    kernel/dma/
  
  DMA-BUF HEAPS FRAMEWORK
@@@ -5398,6 -5379,7 +5398,6 @@@ F:      include/linux/kobj
  F:    lib/kobj*
  
  DRIVERS FOR ADAPTIVE VOLTAGE SCALING (AVS)
 -M:    Kevin Hilman <[email protected]>
  M:    Nishanth Menon <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -5428,7 -5410,7 +5428,7 @@@ F:      drivers/gpu/drm/panel/panel-arm-vers
  
  DRM DRIVER FOR ASPEED BMC GFX
  M:    Joel Stanley <[email protected]>
 -L:    [email protected]
 +L:    [email protected] (moderated for non-subscribers)
  S:    Supported
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  F:    Documentation/devicetree/bindings/gpu/aspeed-gfx.txt
@@@ -5436,10 -5418,7 +5436,10 @@@ F:    drivers/gpu/drm/aspeed
  
  DRM DRIVER FOR AST SERVER GRAPHICS CHIPS
  M:    Dave Airlie <[email protected]>
 -S:    Odd Fixes
 +R:    Thomas Zimmermann <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  F:    drivers/gpu/drm/ast/
  
  DRM DRIVER FOR BOCHS VIRTUAL GPU
@@@ -5513,24 -5492,14 +5513,24 @@@ S:   Maintaine
  F:    drivers/gpu/drm/panel/panel-lvds.c
  F:    Documentation/devicetree/bindings/display/panel/lvds.yaml
  
 +DRM DRIVER FOR MANTIX MLAF057WE51 PANELS
 +M:    Guido Günther <[email protected]>
 +R:    Purism Kernel Team <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/display/panel/mantix,mlaf057we51-x.yaml
 +F:    drivers/gpu/drm/panel/panel-mantix-mlaf057we51.c
 +
  DRM DRIVER FOR MATROX G200/G400 GRAPHICS CARDS
  S:    Orphan / Obsolete
  F:    drivers/gpu/drm/mga/
  F:    include/uapi/drm/mga_drm.h
  
 -DRM DRIVER FOR MGA G200 SERVER GRAPHICS CHIPS
 +DRM DRIVER FOR MGA G200 GRAPHICS CHIPS
  M:    Dave Airlie <[email protected]>
 -S:    Odd Fixes
 +R:    Thomas Zimmermann <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  F:    drivers/gpu/drm/mgag200/
  
  DRM DRIVER FOR MI0283QT
@@@ -5611,13 -5580,12 +5611,13 @@@ S:   Maintaine
  F:    Documentation/devicetree/bindings/display/panel/raydium,rm67191.yaml
  F:    drivers/gpu/drm/panel/panel-raydium-rm67191.c
  
 -DRM DRIVER FOR ROCKTECH JH057N00900 PANELS
 +DRM DRIVER FOR SITRONIX ST7703 PANELS
  M:    Guido Günther <[email protected]>
  R:    Purism Kernel Team <[email protected]>
 +R:    Ondrej Jirman <[email protected]>
  S:    Maintained
 -F:    Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.txt
 -F:    drivers/gpu/drm/panel/panel-rocktech-jh057n00900.c
 +F:    Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.yaml
 +F:    drivers/gpu/drm/panel/panel-sitronix-st7703.c
  
  DRM DRIVER FOR SAVAGE VIDEO CARDS
  S:    Orphan / Obsolete
@@@ -5676,15 -5644,13 +5676,15 @@@ F:   drivers/gpu/drm/panel/panel-tpo-tpg1
  DRM DRIVER FOR USB DISPLAYLINK VIDEO ADAPTERS
  M:    Dave Airlie <[email protected]>
  R:    Sean Paul <[email protected]>
 +R:    Thomas Zimmermann <[email protected]>
  L:    [email protected]
 -S:    Odd Fixes
 +S:    Supported
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  F:    drivers/gpu/drm/udl/
  
  DRM DRIVER FOR VIRTUAL KERNEL MODESETTING (VKMS)
  M:    Rodrigo Siqueira <[email protected]>
 +M:    Melissa Wen <[email protected]>
  R:    Haneen Mohammed <[email protected]>
  R:    Daniel Vetter <[email protected]>
  L:    [email protected]
@@@ -5819,7 -5785,7 +5819,7 @@@ F:      drivers/gpu/drm/gma500
  
  DRM DRIVERS FOR HISILICON
  M:    Xinliang Liu <[email protected]>
 -M:    Rongrong Zou <zourongrong@gmail.com>
 +M:    Tian Tao  <tiantao6@hisilicon.com>
  R:    John Stultz <[email protected]>
  R:    Xinwei Kong <[email protected]>
  R:    Chen Feng <[email protected]>
@@@ -5845,7 -5811,6 +5845,7 @@@ L:      [email protected]
  S:    Supported
  F:    Documentation/devicetree/bindings/display/mediatek/
  F:    drivers/gpu/drm/mediatek/
 +F:    drivers/phy/mediatek/phy-mtk-hdmi*
  
  DRM DRIVERS FOR NVIDIA TEGRA
  M:    Thierry Reding <[email protected]>
@@@ -5867,7 -5832,7 +5867,7 @@@ L:      [email protected]
  S:    Supported
  T:    git git://linuxtv.org/pinchartl/media drm/du/next
  F:    Documentation/devicetree/bindings/display/bridge/renesas,dw-hdmi.txt
 -F:    Documentation/devicetree/bindings/display/bridge/renesas,lvds.txt
 +F:    Documentation/devicetree/bindings/display/bridge/renesas,lvds.yaml
  F:    Documentation/devicetree/bindings/display/renesas,du.txt
  F:    drivers/gpu/drm/rcar-du/
  F:    drivers/gpu/drm/shmobile/
@@@ -6219,7 -6184,7 +6219,7 @@@ S:      Supporte
  F:    drivers/edac/bluefield_edac.c
  
  EDAC-CALXEDA
 -M:    Robert Richter <[email protected]>
 +M:    Andre Przywara <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/edac/highbank*
@@@ -6555,14 -6520,11 +6555,14 @@@ F:   Documentation/devicetree/bindings/ne
  F:    Documentation/devicetree/bindings/net/mdio*
  F:    Documentation/devicetree/bindings/net/qca,ar803x.yaml
  F:    Documentation/networking/phy.rst
 +F:    drivers/net/mdio/
 +F:    drivers/net/mdio/of_mdio.c
 +F:    drivers/net/pcs/
  F:    drivers/net/phy/
 -F:    drivers/of/of_mdio.c
  F:    drivers/of/of_net.c
  F:    include/dt-bindings/net/qca-ar803x.h
  F:    include/linux/*mdio*.h
 +F:    include/linux/mdio/*.h
  F:    include/linux/of_net.h
  F:    include/linux/phy.h
  F:    include/linux/phy_fixed.h
@@@ -6638,7 -6600,6 +6638,7 @@@ F:      fs/proc/bootconfig.
  F:    include/linux/bootconfig.h
  F:    lib/bootconfig.c
  F:    tools/bootconfig/*
 +F:    tools/bootconfig/scripts/*
  
  EXYNOS DP DRIVER
  M:    Jingoo Han <[email protected]>
@@@ -6866,17 -6827,14 +6866,17 @@@ F:   drivers/net/ethernet/nvidia/
  
  FPGA DFL DRIVERS
  M:    Wu Hao <[email protected]>
 +R:    Tom Rix <[email protected]>
  L:    [email protected]
  S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-bus-dfl
  F:    Documentation/fpga/dfl.rst
  F:    drivers/fpga/dfl*
  F:    include/uapi/linux/fpga-dfl.h
  
  FPGA MANAGER FRAMEWORK
  M:    Moritz Fischer <[email protected]>
 +R:    Tom Rix <[email protected]>
  L:    [email protected]
  S:    Maintained
  W:    http://www.rocketboards.org
@@@ -6999,7 -6957,7 +6999,7 @@@ M:      Frank Li <[email protected]
  L:    [email protected]
  S:    Maintained
  F:    Documentation/admin-guide/perf/imx-ddr.rst
 -F:    Documentation/devicetree/bindings/perf/fsl-imx-ddr.txt
 +F:    Documentation/devicetree/bindings/perf/fsl-imx-ddr.yaml
  F:    drivers/perf/fsl_imx8_ddr_perf.c
  
  FREESCALE IMX I2C DRIVER
@@@ -7007,7 -6965,7 +7007,7 @@@ M:      Oleksij Rempel <o.rempel@pengutronix
  R:    Pengutronix Kernel Team <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/i2c/i2c-imx.txt
 +F:    Documentation/devicetree/bindings/i2c/i2c-imx.yaml
  F:    drivers/i2c/busses/i2c-imx.c
  
  FREESCALE IMX LPI2C DRIVER
@@@ -7015,7 -6973,7 +7015,7 @@@ M:      Dong Aisheng <[email protected]
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/i2c/i2c-imx-lpi2c.txt
 +F:    Documentation/devicetree/bindings/i2c/i2c-imx-lpi2c.yaml
  F:    drivers/i2c/busses/i2c-imx-lpi2c.c
  
  FREESCALE QORIQ DPAA ETHERNET DRIVER
@@@ -7282,7 -7240,7 +7282,7 @@@ F:      drivers/staging/gasket
  GCC PLUGINS
  M:    Kees Cook <[email protected]>
  R:    Emese Revfy <[email protected]>
 -L:    [email protected]
 +L:    [email protected]
  S:    Maintained
  F:    Documentation/kbuild/gcc-plugins.rst
  F:    scripts/Makefile.gcc-plugins
@@@ -7782,8 -7740,8 +7782,8 @@@ F:      Documentation/watchdog/hpwdt.rs
  F:    drivers/watchdog/hpwdt.c
  
  HEWLETT-PACKARD SMART ARRAY RAID DRIVER (hpsa)
 -M:    Don Brace <don.brace@microsemi.com>
 -L:    esc.storagedev@microsemi.com
 +M:    Don Brace <don.brace@microchip.com>
 +L:    storagedev@microchip.com
  L:    [email protected]
  S:    Supported
  F:    Documentation/scsi/hpsa.rst
@@@ -7792,8 -7750,8 +7792,8 @@@ F:      include/linux/cciss*.
  F:    include/uapi/linux/cciss*.h
  
  HFI1 DRIVER
 -M:    Mike Marciniszyn <mike.marciniszyn@intel.com>
 -M:    Dennis Dalessandro <dennis.dalessandro@intel.com>
 +M:    Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
 +M:    Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
  L:    [email protected]
  S:    Supported
  F:    drivers/infiniband/hw/hfi1
@@@ -7926,13 -7884,6 +7926,13 @@@ W:    http://www.hisilicon.co
  F:    Documentation/devicetree/bindings/net/hisilicon*.txt
  F:    drivers/net/ethernet/hisilicon/
  
 +HIKEY960 ONBOARD USB GPIO HUB DRIVER
 +M:    John Stultz <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/misc/hisi_hikey_usb.c
 +F:    Documentation/devicetree/bindings/misc/hisilicon-hikey-usb.yaml
 +
  HISILICON PMU DRIVER
  M:    Shaokun Zhang <[email protected]>
  S:    Supported
@@@ -7976,12 -7927,6 +7976,12 @@@ F:    drivers/crypto/hisilicon/sec2/sec_cr
  F:    drivers/crypto/hisilicon/sec2/sec_crypto.h
  F:    drivers/crypto/hisilicon/sec2/sec_main.c
  
 +HISILICON STAGING DRIVERS FOR HIKEY 960/970
 +M:    Mauro Carvalho Chehab <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/staging/hikey9xx/
 +
  HISILICON TRUE RANDOM NUMBER GENERATOR V2 SUPPORT
  M:    Zaibo Xu <[email protected]>
  S:    Maintained
@@@ -8559,6 -8504,7 +8559,6 @@@ F:      drivers/iio/multiplexer/iio-mux.
  
  IIO SUBSYSTEM AND DRIVERS
  M:    Jonathan Cameron <[email protected]>
 -R:    Hartmut Knaack <[email protected]>
  R:    Lars-Peter Clausen <[email protected]>
  R:    Peter Meerwald-Stadler <[email protected]>
  L:    [email protected]
@@@ -8674,9 -8620,8 +8674,9 @@@ INGENIC JZ47xx SoC
  M:    Paul Cercueil <[email protected]>
  S:    Maintained
  F:    arch/mips/boot/dts/ingenic/
 -F:    arch/mips/include/asm/mach-jz4740/
 -F:    arch/mips/jz4740/
 +F:    arch/mips/generic/board-ingenic.c
 +F:    arch/mips/include/asm/mach-ingenic/
 +F:    arch/mips/ingenic/Kconfig
  F:    drivers/clk/ingenic/
  F:    drivers/dma/dma-jz4780.c
  F:    drivers/gpu/drm/ingenic/
@@@ -8733,7 -8678,7 +8733,7 @@@ F:      drivers/input/input-mt.
  K:    \b(ABS|SYN)_MT_
  
  INSIDE SECURE CRYPTO DRIVER
 -M:    Antoine Tenart <a[email protected]>
 +M:    Antoine Tenart <a[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/crypto/inside-secure/
@@@ -8912,7 -8857,7 +8912,7 @@@ INTEL IPU3 CSI-2 CIO2 DRIVE
  M:    Yong Zhi <[email protected]>
  M:    Sakari Ailus <[email protected]>
  M:    Bingbu Cao <[email protected]>
 -R:    Tian Shu Qiu <[email protected]>
 +R:    Tianshu Qiu <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/userspace-api/media/v4l/pixfmt-srggb10-ipu3.rst
@@@ -8921,7 -8866,7 +8921,7 @@@ F:      drivers/media/pci/intel/ipu3
  INTEL IPU3 CSI-2 IMGU DRIVER
  M:    Sakari Ailus <[email protected]>
  R:    Bingbu Cao <[email protected]>
 -R:    Tian Shu Qiu <[email protected]>
 +R:    Tianshu Qiu <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/admin-guide/media/ipu3.rst
@@@ -8986,8 -8931,8 +8986,8 @@@ F:      arch/x86/include/asm/intel_punit_ipc
  F:    drivers/platform/x86/intel_punit_ipc.c
  
  INTEL PMC CORE DRIVER
 -M:    Rajneesh Bhardwaj <rajneesh.bhardwaj@intel.com>
 -M:    Vishwanath Somayaji <vishwanath.somayaji@intel.com>
 +M:    Rajneesh Bhardwaj <irenic.rajneesh@gmail.com>
 +M:    David E Box <david.e.box@intel.com>
  L:    [email protected]
  S:    Maintained
  F:    drivers/platform/x86/intel_pmc_core*
@@@ -9000,7 -8945,7 +9000,7 @@@ F:      drivers/gpio/gpio-*cove.
  F:    drivers/gpio/gpio-msic.c
  
  INTEL PMIC MULTIFUNCTION DEVICE DRIVERS
 -R:    Andy Shevchenko <[email protected]>
 +M:    Andy Shevchenko <[email protected]>
  S:    Maintained
  F:    drivers/mfd/intel_msic.c
  F:    drivers/mfd/intel_soc_pmic*
@@@ -9181,7 -9126,6 +9181,7 @@@ L:      [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
  F:    Documentation/devicetree/bindings/iommu/
 +F:    Documentation/userspace-api/iommu.rst
  F:    drivers/iommu/
  F:    include/linux/iommu.h
  F:    include/linux/iova.h
@@@ -9715,7 -9659,7 +9715,7 @@@ F:      security/keys/encrypted-keys
  
  KEYS-TRUSTED
  M:    James Bottomley <[email protected]>
 -M:    Jarkko Sakkinen <jarkko[email protected]>
 +M:    Jarkko Sakkinen <jarkko@kernel.org>
  M:    Mimi Zohar <[email protected]>
  L:    [email protected]
  L:    [email protected]
@@@ -9727,7 -9671,7 +9727,7 @@@ F:      security/keys/trusted-keys
  
  KEYS/KEYRINGS
  M:    David Howells <[email protected]>
 -M:    Jarkko Sakkinen <jarkko[email protected]>
 +M:    Jarkko Sakkinen <jarkko@kernel.org>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/security/keys/core.rst
@@@ -9774,8 -9718,8 +9774,8 @@@ M:      Catalin Marinas <catalin.marinas@arm
  S:    Maintained
  F:    Documentation/dev-tools/kmemleak.rst
  F:    include/linux/kmemleak.h
 -F:    mm/kmemleak-test.c
  F:    mm/kmemleak.c
 +F:    samples/kmemleak/kmemleak-test.c
  
  KMOD KERNEL MODULE LOADER - USERMODE HELPER
  M:    Luis Chamberlain <[email protected]>
@@@ -9804,12 -9748,6 +9804,12 @@@ F:    Documentation/admin-guide/auxdisplay
  F:    drivers/auxdisplay/ks0108.c
  F:    include/linux/ks0108.h
  
 +KTD253 BACKLIGHT DRIVER
 +M:    Linus Walleij <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/leds/backlight/kinetic,ktd253.yaml
 +F:    drivers/video/backlight/ktd253-backlight.c
 +
  L3MDEV
  M:    David Ahern <[email protected]>
  L:    [email protected]
@@@ -9864,7 -9802,7 +9864,7 @@@ F:      drivers/scsi/53c700
  LEAKING_ADDRESSES
  M:    Tobin C. Harding <[email protected]>
  M:    Tycho Andersen <[email protected]>
 -L:    [email protected]
 +L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tobin/leaks.git
  F:    scripts/leaking_addresses.pl
@@@ -9935,6 -9873,15 +9935,6 @@@ T:     git git://git.kernel.org/pub/scm/lin
  F:    drivers/ata/pata_arasan_cf.c
  F:    include/linux/pata_arasan_cf_data.h
  
 -LIBATA PATA DRIVERS
 -M:    Bartlomiej Zolnierkiewicz <[email protected]>
 -M:    Jens Axboe <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git
 -F:    drivers/ata/ata_generic.c
 -F:    drivers/ata/pata_*.c
 -
  LIBATA PATA FARADAY FTIDE010 AND GEMINI SATA BRIDGE DRIVERS
  M:    Linus Walleij <[email protected]>
  L:    [email protected]
@@@ -10360,13 -10307,6 +10360,13 @@@ S: Maintaine
  W:    http://linux-test-project.github.io/
  T:    git git://github.com/linux-test-project/ltp.git
  
 +LYNX PCS MODULE
 +M:    Ioana Ciornei <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/net/pcs/pcs-lynx.c
 +F:    include/linux/pcs-lynx.h
 +
  M68K ARCHITECTURE
  M:    Geert Uytterhoeven <[email protected]>
  L:    [email protected]
@@@ -10574,7 -10514,7 +10574,7 @@@ M:   Tobias Waldekranz <tobias@waldekranz
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/net/marvell,mvusb.yaml
 -F:    drivers/net/phy/mdio-mvusb.c
 +F:    drivers/net/mdio/mdio-mvusb.c
  
  MARVELL XENON MMC/SD/SDIO HOST CONTROLLER DRIVER
  M:    Hu Ziji <[email protected]>
  S:    Maintained
  F:    drivers/hid/hid-mcp2221.c
  
 +MCP251XFD SPI-CAN NETWORK DRIVER
 +M:    Marc Kleine-Budde <[email protected]>
 +M:    Manivannan Sadhasivam <[email protected]>
 +R:    Thomas Kopp <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/net/can/microchip,mcp251xfd.yaml
 +F:    drivers/net/can/spi/mcp251xfd/
 +
  MCP4018 AND MCP4531 MICROCHIP DIGITAL POTENTIOMETER DRIVERS
  M:    Peter Rosin <[email protected]>
  L:    [email protected]
@@@ -11120,7 -11051,7 +11120,7 @@@ F:   net/dsa/tag_mtk.
  
  MEDIATEK USB3 DRD IP DRIVER
  M:    Chunfeng Yun <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 +L:    [email protected]
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
@@@ -11388,8 -11319,8 +11388,8 @@@ S:   Supporte
  W:    http://linux-meson.com/
  T:    git git://linuxtv.org/media_tree.git
  F:    Documentation/devicetree/bindings/media/amlogic,meson-gx-ao-cec.yaml
 -F:    drivers/media/platform/meson/ao-cec-g12a.c
 -F:    drivers/media/platform/meson/ao-cec.c
 +F:    drivers/media/cec/platform/meson/ao-cec-g12a.c
 +F:    drivers/media/cec/platform/meson/ao-cec.c
  
  MESON NAND CONTROLLER DRIVER FOR AMLOGIC SOCS
  M:    Liang Yang <[email protected]>
@@@ -11399,6 -11330,7 +11399,6 @@@ F:   Documentation/devicetree/bindings/mt
  F:    drivers/mtd/nand/raw/meson_*
  
  MESON VIDEO DECODER DRIVER FOR AMLOGIC SOCS
 -M:    Maxime Jourdan <[email protected]>
  M:    Neil Armstrong <[email protected]>
  L:    [email protected]
  L:    [email protected]
@@@ -11418,7 -11350,6 +11418,7 @@@ M:   Hemant Kumar <[email protected]
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mani/mhi.git
 +F:    Documentation/ABI/stable/sysfs-bus-mhi
  F:    Documentation/mhi/
  F:    drivers/bus/mhi/
  F:    include/linux/mhi.h
@@@ -11617,8 -11548,8 +11617,8 @@@ F:   arch/mips/configs/generic/board-ocel
  F:    arch/mips/generic/board-ocelot.c
  
  MICROSEMI SMART ARRAY SMARTPQI DRIVER (smartpqi)
 -M:    Don Brace <don.brace@microsemi.com>
 -L:    esc.storagedev@microsemi.com
 +M:    Don Brace <don.brace@microchip.com>
 +L:    storagedev@microchip.com
  L:    [email protected]
  S:    Supported
  F:    Documentation/scsi/smartpqi.rst
@@@ -11676,7 -11607,7 +11676,7 @@@ MIPS GENERIC PLATFOR
  M:    Paul Burton <[email protected]>
  L:    [email protected]
  S:    Supported
 -F:    Documentation/devicetree/bindings/power/mti,mips-cpc.txt
 +F:    Documentation/devicetree/bindings/power/mti,mips-cpc.yaml
  F:    arch/mips/generic/
  F:    arch/mips/tools/generic-board-config.sh
  
@@@ -11732,7 -11663,7 +11732,7 @@@ S:   Odd Fixe
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lkundrak/linux-mmp.git
  F:    arch/arm/boot/dts/mmp*
  F:    arch/arm/mach-mmp/
 -F:    linux/soc/mmp/
 +F:    include/linux/soc/mmp/
  
  MMP USB PHY DRIVERS
  R:    Lubomir Rintel <[email protected]>
@@@ -11850,13 -11781,6 +11850,13 @@@ Q: http://patchwork.linuxtv.org/project
  T:    git git://linuxtv.org/anttip/media_tree.git
  F:    drivers/media/usb/msi2500/
  
 +MSTAR INTERRUPT CONTROLLER DRIVER
 +M:    Mark-PK Tsai <[email protected]>
 +M:    Daniel Palmer <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/interrupt-controller/mstar,mst-intc.yaml
 +F:    drivers/irqchip/irq-mst-intc.c
 +
  MSYSTEMS DISKONCHIP G3 MTD DRIVER
  M:    Robert Jarzmik <[email protected]>
  L:    [email protected]
@@@ -12119,6 -12043,7 +12119,6 @@@ M:   Neil Horman <[email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://fedorahosted.org/dropwatch/
 -F:    include/net/drop_monitor.h
  F:    include/uapi/linux/net_dropmon.h
  F:    net/core/drop_monitor.c
  
@@@ -12213,7 -12138,6 +12213,7 @@@ F:   net/ipv6/ipcomp6.
  F:    net/ipv6/xfrm*
  F:    net/key/
  F:    net/xfrm/
 +F:    tools/testing/selftests/net/ipsec.c
  
  NETWORKING [IPv4/IPv6]
  M:    "David S. Miller" <[email protected]>
@@@ -12373,19 -12297,6 +12373,19 @@@ S: Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lftan/nios2.git
  F:    arch/nios2/
  
 +NITRO ENCLAVES (NE)
 +M:    Andra Paraschiv <[email protected]>
 +M:    Alexandru Vasile <[email protected]>
 +M:    Alexandru Ciobotaru <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +W:    https://aws.amazon.com/ec2/nitro/nitro-enclaves/
 +F:    Documentation/virt/ne_overview.rst
 +F:    drivers/virt/nitro_enclaves/
 +F:    include/linux/nitro_enclaves.h
 +F:    include/uapi/linux/nitro_enclaves.h
 +F:    samples/nitro_enclaves/
 +
  NOHZ, DYNTICKS SUPPORT
  M:    Frederic Weisbecker <[email protected]>
  M:    Thomas Gleixner <[email protected]>
@@@ -12548,26 -12459,11 +12548,26 @@@ F:        drivers/iio/gyro/fxas21002c_core.
  F:    drivers/iio/gyro/fxas21002c_i2c.c
  F:    drivers/iio/gyro/fxas21002c_spi.c
  
 +NXP i.MX 8MQ DCSS DRIVER
 +M:    Laurentiu Palcu <[email protected]>
 +R:    Lucas Stach <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml
 +F:    drivers/gpu/drm/imx/dcss/
 +
 +NXP PTN5150A CC LOGIC AND EXTCON DRIVER
 +M:    Krzysztof Kozlowski <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/extcon/extcon-ptn5150.yaml
 +F:    drivers/extcon/extcon-ptn5150.c
 +
  NXP SGTL5000 DRIVER
  M:    Fabio Estevam <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
 -F:    Documentation/devicetree/bindings/sound/sgtl5000.txt
 +F:    Documentation/devicetree/bindings/sound/sgtl5000.yaml
  F:    sound/soc/codecs/sgtl5000*
  
  NXP SJA1105 ETHERNET SWITCH DRIVER
@@@ -12613,7 -12509,6 +12613,7 @@@ M:   Josh Poimboeuf <[email protected]
  M:    Peter Zijlstra <[email protected]>
  S:    Supported
  F:    tools/objtool/
 +F:    include/linux/objtool.h
  
  OCELOT ETHERNET SWITCH DRIVER
  M:    Microchip Linux Driver Support <[email protected]>
@@@ -12626,7 -12521,6 +12626,7 @@@ F:   drivers/net/dsa/ocelot/
  F:    drivers/net/ethernet/mscc/
  F:    include/soc/mscc/ocelot*
  F:    net/dsa/tag_ocelot.c
 +F:    tools/testing/selftests/drivers/net/ocelot/*
  
  OCXL (Open Coherent Accelerator Processor Interface OpenCAPI) DRIVER
  M:    Frederic Barrat <[email protected]>
@@@ -12876,7 -12770,7 +12876,7 @@@ T:   git git://linuxtv.org/media_tree.gi
  F:    drivers/media/i2c/ov2685.c
  
  OMNIVISION OV2740 SENSOR DRIVER
 -M:    Tianshu Qiu <tian.shu.qiua@intel.com>
 +M:    Tianshu Qiu <[email protected]>
  R:    Shawn Tu <[email protected]>
  R:    Bingbu Cao <[email protected]>
  L:    [email protected]
@@@ -12892,12 -12786,10 +12892,12 @@@ T:        git git://linuxtv.org/media_tree.gi
  F:    drivers/media/i2c/ov5640.c
  
  OMNIVISION OV5647 SENSOR DRIVER
 -M:    Luis Oliveira <[email protected]>
 +M:    Dave Stevenson <[email protected]>
 +M:    Jacopo Mondi <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/devicetree/bindings/media/i2c/ov5647.yaml
  F:    drivers/media/i2c/ov5647.c
  
  OMNIVISION OV5670 SENSOR DRIVER
@@@ -12998,8 -12890,8 +12998,8 @@@ S:   Maintaine
  F:    drivers/char/hw_random/optee-rng.c
  
  OPA-VNIC DRIVER
 -M:    Dennis Dalessandro <dennis.dalessandro@intel.com>
 -M:    Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
 +M:    Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
 +M:    Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
  L:    [email protected]
  S:    Supported
  F:    drivers/infiniband/ulp/opa_vnic
@@@ -13160,9 -13052,7 +13160,9 @@@ F:   lib/packing.
  
  PADATA PARALLEL EXECUTION MECHANISM
  M:    Steffen Klassert <[email protected]>
 +M:    Daniel Jordan <[email protected]>
  L:    [email protected]
 +L:    [email protected]
  S:    Maintained
  F:    Documentation/core-api/padata.rst
  F:    include/linux/padata.h
@@@ -13834,9 -13724,10 +13834,9 @@@ PIN CONTROLLER - RENESA
  M:    Geert Uytterhoeven <[email protected]>
  L:    [email protected]
  S:    Supported
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git sh-pfc
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git renesas-pinctrl
  F:    Documentation/devicetree/bindings/pinctrl/renesas,*
 -F:    drivers/pinctrl/pinctrl-rz*
 -F:    drivers/pinctrl/sh-pfc/
 +F:    drivers/pinctrl/renesas/
  
  PIN CONTROLLER - SAMSUNG
  M:    Tomasz Figa <[email protected]>
@@@ -14069,7 -13960,6 +14069,7 @@@ PRINT
  M:    Petr Mladek <[email protected]>
  M:    Sergey Senozhatsky <[email protected]>
  R:    Steven Rostedt <[email protected]>
 +R:    John Ogness <[email protected]>
  S:    Maintained
  F:    include/linux/printk.h
  F:    kernel/printk/
@@@ -14300,24 -14190,20 +14300,24 @@@ F:        drivers/firmware/qemu_fw_cfg.
  F:    include/uapi/linux/qemu_fw_cfg.h
  
  QIB DRIVER
 -M:    Dennis Dalessandro <dennis.dalessandro@intel.com>
 -M:    Mike Marciniszyn <mike.marciniszyn@intel.com>
 +M:    Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
 +M:    Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
  L:    [email protected]
  S:    Supported
  F:    drivers/infiniband/hw/qib/
  
  QLOGIC QL41xxx FCOE DRIVER
 -M:    [email protected]
 +M:    Saurav Kashyap <[email protected]>
 +M:    Javed Hasan <[email protected]>
 +M:    [email protected]
  L:    [email protected]
  S:    Supported
  F:    drivers/scsi/qedf/
  
  QLOGIC QL41xxx ISCSI DRIVER
 -M:    [email protected]
 +M:    Nilesh Javali <[email protected]>
 +M:    Manish Rangankar <[email protected]>
 +M:    [email protected]
  L:    [email protected]
  S:    Supported
  F:    drivers/scsi/qedi/
@@@ -14350,20 -14236,21 +14350,20 @@@ M:        Nilesh Javali <[email protected]
  M:    [email protected]
  L:    [email protected]
  S:    Supported
 -F:    Documentation/scsi/LICENSE.qla2xxx
  F:    drivers/scsi/qla2xxx/
  
  QLOGIC QLA3XXX NETWORK DRIVER
  M:    [email protected]
  L:    [email protected]
  S:    Supported
 -F:    Documentation/networking/device_drivers/ethernet/qlogic/LICENSE.qla3xxx
  F:    drivers/net/ethernet/qlogic/qla3xxx.*
  
  QLOGIC QLA4XXX iSCSI DRIVER
 -M:    [email protected]
 +M:    Nilesh Javali <[email protected]>
 +M:    Manish Rangankar <[email protected]>
 +M:    [email protected]
  L:    [email protected]
  S:    Supported
 -F:    Documentation/scsi/LICENSE.qla4xxx
  F:    drivers/scsi/qla4xxx/
  
  QLOGIC QLCNIC (1/10)Gb ETHERNET DRIVER
@@@ -14711,9 -14598,9 +14711,9 @@@ M:   Niklas Söderlund <niklas.soderlund+
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml
 -F:    drivers/media/i2c/rdacm20.c
  F:    drivers/media/i2c/max9271.c
  F:    drivers/media/i2c/max9271.h
 +F:    drivers/media/i2c/rdacm20.c
  
  RDC R-321X SoC
  M:    Florian Fainelli <[email protected]>
@@@ -14726,8 -14613,8 +14726,8 @@@ S:   Maintaine
  F:    drivers/net/ethernet/rdc/r6040.c
  
  RDMAVT - RDMA verbs software
 -M:    Dennis Dalessandro <dennis.dalessandro@intel.com>
 -M:    Mike Marciniszyn <mike.marciniszyn@intel.com>
 +M:    Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
 +M:    Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
  L:    [email protected]
  S:    Supported
  F:    drivers/infiniband/sw/rdmavt
@@@ -15007,11 -14894,8 +15007,11 @@@ F: include/linux/hid-roccat
  
  ROCKCHIP ISP V1 DRIVER
  M:    Helen Koike <[email protected]>
 +M:    Dafna Hirschfeld <[email protected]>
  L:    [email protected]
  S:    Maintained
 +F:    Documentation/admin-guide/media/rkisp1.rst
 +F:    Documentation/userspace-api/media/v4l/pixfmt-meta-rkisp1.rst
  F:    drivers/staging/media/rkisp1/
  
  ROCKCHIP RASTER 2D GRAPHIC ACCELERATION UNIT DRIVER
@@@ -15402,11 -15286,10 +15402,11 @@@ F:        drivers/media/platform/s3c-camif
  F:    include/media/drv-intf/s3c_camif.h
  
  SAMSUNG S3FWRN5 NFC DRIVER
 -M:    Robert Baldyga <[email protected]>
 +M:    Krzysztof Kozlowski <[email protected]>
  M:    Krzysztof Opasiak <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
 -S:    Supported
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/net/nfc/samsung,s3fwrn5.yaml
  F:    drivers/nfc/s3fwrn5
  
  SAMSUNG S5C73M3 CAMERA DRIVER
@@@ -15508,7 -15391,6 +15508,7 @@@ R:   Dietmar Eggemann <dietmar.eggemann@a
  R:    Steven Rostedt <[email protected]> (SCHED_FIFO/SCHED_RR)
  R:    Ben Segall <[email protected]> (CONFIG_CFS_BANDWIDTH)
  R:    Mel Gorman <[email protected]> (CONFIG_NUMA_BALANCING)
 +R:    Daniel Bristot de Oliveira <[email protected]> (SCHED_DEADLINE)
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched/core
@@@ -15630,8 -15512,8 +15630,8 @@@ F:   drivers/mmc/host/sdricoh_cs.
  SECO BOARDS CEC DRIVER
  M:    Ettore Chimenti <[email protected]>
  S:    Maintained
 -F:    drivers/media/platform/seco-cec/seco-cec.c
 -F:    drivers/media/platform/seco-cec/seco-cec.h
 +F:    drivers/media/cec/platform/seco/seco-cec.c
 +F:    drivers/media/cec/platform/seco/seco-cec.h
  
  SECURE COMPUTING
  M:    Kees Cook <[email protected]>
@@@ -15724,7 -15606,6 +15724,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    Documentation/ABI/obsolete/sysfs-selinux-checkreqprot
  F:    Documentation/ABI/obsolete/sysfs-selinux-disable
  F:    Documentation/admin-guide/LSM/SELinux.rst
 +F:    include/trace/events/avc.h
  F:    include/uapi/linux/selinux_netlink.h
  F:    scripts/selinux/
  F:    security/selinux/
  S:    Maintained
  F:    drivers/net/phy/phylink.c
  F:    drivers/net/phy/sfp*
 +F:    include/linux/mdio/mdio-i2c.h
  F:    include/linux/phylink.h
  F:    include/linux/sfp.h
  K:    phylink\.h|struct\s+phylink|\.phylink|>phylink_|phylink_(autoneg|clear|connect|create|destroy|disconnect|ethtool|helper|mac|mii|of|set|start|stop|test|validate)
@@@ -16200,6 -16080,7 +16200,6 @@@ F:   include/uapi/rdma/rdma_user_rxe.
  SOFTLOGIC 6x10 MPEG CODEC
  M:    Bluecherry Maintainers <[email protected]>
  M:    Anton Sviridenko <[email protected]>
 -M:    Andrey Utkin <[email protected]>
  M:    Andrey Utkin <[email protected]>
  M:    Ismael Luceno <[email protected]>
  L:    [email protected]
@@@ -16619,6 -16500,7 +16619,6 @@@ F:   drivers/staging/rtl8712
  
  STAGING - SEPS525 LCD CONTROLLER DRIVERS
  M:    Michael Hennerich <[email protected]>
 -M:    Beniamin Bia <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml
@@@ -16666,7 -16548,7 +16666,7 @@@ STI CEC DRIVE
  M:    Benjamin Gaignard <[email protected]>
  S:    Maintained
  F:    Documentation/devicetree/bindings/media/stih-cec.txt
 -F:    drivers/media/platform/sti/cec/
 +F:    drivers/media/cec/platform/sti/
  
  STK1160 USB VIDEO CAPTURE DRIVER
  M:    Ezequiel Garcia <[email protected]>
@@@ -16850,13 -16732,6 +16850,13 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/gpio/snps,dw-apb-gpio.yaml
  F:    drivers/gpio/gpio-dwapb.c
  
 +SYNOPSYS DESIGNWARE APB SSI DRIVER
 +M:    Serge Semin <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    Documentation/devicetree/bindings/spi/snps,dw-apb-ssi.yaml
 +F:    drivers/spi/spi-dw*
 +
  SYNOPSYS DESIGNWARE AXI DMAC DRIVER
  M:    Eugeniy Paltsev <[email protected]>
  S:    Maintained
@@@ -16867,7 -16742,7 +16867,7 @@@ SYNOPSYS DESIGNWARE DMAC DRIVE
  M:    Viresh Kumar <[email protected]>
  R:    Andy Shevchenko <[email protected]>
  S:    Maintained
 -F:    Documentation/devicetree/bindings/dma/snps-dma.txt
 +F:    Documentation/devicetree/bindings/dma/snps,dma-spear1340.yaml
  F:    drivers/dma/dw/
  F:    include/dt-bindings/dma/dw-dmac.h
  F:    include/linux/dma/dw.h
@@@ -16883,8 -16758,8 +16883,8 @@@ SYNOPSYS DESIGNWARE ETHERNET XPCS DRIVE
  M:    Jose Abreu <[email protected]>
  L:    [email protected]
  S:    Supported
 -F:    drivers/net/phy/mdio-xpcs.c
 -F:    include/linux/mdio-xpcs.h
 +F:    drivers/net/pcs/pcs-xpcs.c
 +F:    include/linux/pcs/pcs-xpcs.h
  
  SYNOPSYS DESIGNWARE I2C DRIVER
  M:    Jarkko Nikula <[email protected]>
@@@ -17672,8 -17547,9 +17672,9 @@@ S:   Supporte
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev
  F:    Documentation/RCU/torture.rst
  F:    kernel/locking/locktorture.c
- F:    kernel/rcu/rcuperf.c
+ F:    kernel/rcu/rcuscale.c
  F:    kernel/rcu/rcutorture.c
+ F:    kernel/rcu/refscale.c
  F:    kernel/torture.c
  
  TOSHIBA ACPI EXTRAS DRIVER
@@@ -17717,13 -17593,13 +17718,13 @@@ F:        drivers/platform/x86/toshiba-wmi.
  
  TPM DEVICE DRIVER
  M:    Peter Huewe <[email protected]>
 -M:    Jarkko Sakkinen <jarkko[email protected]>
 +M:    Jarkko Sakkinen <jarkko@kernel.org>
  R:    Jason Gunthorpe <[email protected]>
  L:    [email protected]
  S:    Maintained
  W:    https://kernsec.org/wiki/index.php/Linux_Kernel_Integrity
  Q:    https://patchwork.kernel.org/project/linux-integrity/list/
 -T:    git git://git.infradead.org/users/jjs/linux-tpmdd.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd.git
  F:    drivers/char/tpm/
  
  TRACING
@@@ -17860,7 -17736,6 +17861,7 @@@ S:   Supporte
  W:    http://www.linux-mtd.infradead.org/doc/ubifs.html
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs.git next
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs.git fixes
 +F:    Documentation/filesystems/ubifs-authentication.rst
  F:    Documentation/filesystems/ubifs.rst
  F:    fs/ubifs/
  
@@@ -18254,6 -18129,14 +18255,6 @@@ T:  git git://linuxtv.org/media_tree.gi
  F:    drivers/media/usb/uvc/
  F:    include/uapi/linux/uvcvideo.h
  
 -USB VISION DRIVER
 -M:    Hans Verkuil <[email protected]>
 -L:    [email protected]
 -S:    Odd Fixes
 -W:    https://linuxtv.org
 -T:    git git://linuxtv.org/media_tree.git
 -F:    drivers/staging/media/usbvision/
 -
  USB WEBCAM GADGET
  M:    Laurent Pinchart <[email protected]>
  L:    [email protected]
@@@ -18453,8 -18336,10 +18454,8 @@@ S:  Maintaine
  F:    drivers/media/platform/video-mux.c
  
  VIDEOBUF2 FRAMEWORK
 -M:    Pawel Osciak <[email protected]>
 +M:    Tomasz Figa <[email protected]>
  M:    Marek Szyprowski <[email protected]>
 -M:    Kyungmin Park <[email protected]>
 -R:    Tomasz Figa <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/media/common/videobuf2/*
@@@ -18644,14 -18529,6 +18645,14 @@@ W: https://linuxtv.or
  T:    git git://linuxtv.org/media_tree.git
  F:    drivers/media/test-drivers/vivid/*
  
 +VIDTV VIRTUAL DIGITAL TV DRIVER
 +M:    Daniel W. S. Almeida <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +W:    https://linuxtv.org
 +T:    git git://linuxtv.org/media_tree.git
 +F:    drivers/media/test-drivers/vidtv/*
 +
  VLYNQ BUS
  M:    Florian Fainelli <[email protected]>
  L:    [email protected] (subscribers-only)
@@@ -19023,7 -18900,7 +19024,7 @@@ M:   Hans de Goede <[email protected]
  M:    Mark Gross <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://git.infradead.org/linux-platform-drivers-x86.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git
  F:    drivers/platform/olpc/
  F:    drivers/platform/x86/
  
@@@ -19372,16 -19249,6 +19373,16 @@@ T: git git://git.kernel.org/pub/scm/lin
  F:    Documentation/filesystems/zonefs.rst
  F:    fs/zonefs/
  
 +ZR36067 VIDEO FOR LINUX DRIVER
 +M:    Corentin Labbe <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +W:    http://mjpeg.sourceforge.net/driver-zoran/
 +Q:    https://patchwork.linuxtv.org/project/linux-media/list/
 +F:    Documentation/driver-api/media/drivers/zoran.rst
 +F:    drivers/staging/media/zoran/
 +
  ZPOOL COMPRESSED PAGE STORAGE API
  M:    Dan Streetman <[email protected]>
  L:    [email protected]
diff --combined kernel/Makefile
index e5bc66a94b707d691d1e0958b613944417dd34c4,c45f551deaaa30119be57092d0860141416d6c4f..2044ef02763b16a4b4d4f3b6cfc0347576c46af6
@@@ -12,7 -12,7 +12,7 @@@ obj-y     = fork.o exec_domain.o panic.
            notifier.o ksysfs.o cred.o reboot.o \
            async.o range.o smpboot.o ucount.o regset.o
  
 -obj-$(CONFIG_BPFILTER) += usermode_driver.o
 +obj-$(CONFIG_USERMODE_DRIVER) += usermode_driver.o
  obj-$(CONFIG_MODULES) += kmod.o
  obj-$(CONFIG_MULTIUSER) += groups.o
  
@@@ -111,7 -111,6 +111,7 @@@ obj-$(CONFIG_CPU_PM) += cpu_pm.
  obj-$(CONFIG_BPF) += bpf/
  obj-$(CONFIG_KCSAN) += kcsan/
  obj-$(CONFIG_SHADOW_CALL_STACK) += scs.o
 +obj-$(CONFIG_HAVE_STATIC_CALL_INLINE) += static_call.o
  
  obj-$(CONFIG_PERF_EVENTS) += events/
  
@@@ -134,6 -133,8 +134,8 @@@ KASAN_SANITIZE_stackleak.o := 
  KCSAN_SANITIZE_stackleak.o := n
  KCOV_INSTRUMENT_stackleak.o := n
  
+ obj-$(CONFIG_SCF_TORTURE_TEST) += scftorture.o
  $(obj)/configs.o: $(obj)/config_data.gz
  
  targets += config_data.gz
diff --combined kernel/entry/common.c
index 145ab11b83183b55a5f5b27ef6dcbd082a16fd12,7f80fe1d4f0ce068a79440e989bafcaef79447e8..0a1e20f8d4e8743252c7bd831756c68a47ef930f
@@@ -208,7 -208,7 +208,7 @@@ static inline bool report_single_step(u
  /*
   * If TIF_SYSCALL_EMU is set, then the only reason to report is when
   * TIF_SINGLESTEP is set (i.e. PTRACE_SYSEMU_SINGLESTEP).  This syscall
 - * instruction has been already reported in syscall_enter_from_usermode().
 + * instruction has been already reported in syscall_enter_from_user_mode().
   */
  #define SYSEMU_STEP   (_TIF_SINGLESTEP | _TIF_SYSCALL_EMU)
  
@@@ -304,7 -304,7 +304,7 @@@ noinstr irqentry_state_t irqentry_enter
         * terminate a grace period, if and only if the timer interrupt is
         * not nested into another interrupt.
         *
-        * Checking for __rcu_is_watching() here would prevent the nesting
+        * Checking for rcu_is_watching() here would prevent the nesting
         * interrupt to invoke rcu_irq_enter(). If that nested interrupt is
         * the tick then rcu_flavor_sched_clock_irq() would wrongfully
         * assume that it is the first interupt and eventually claim
diff --combined kernel/rcu/tree.c
index 03c54c3478b7c78975325157488d80e7ddcad9b1,a71c0799bd3412eac01250edebcb91ce4140aa56..06895ef85d6926ec746bffff70933478a5db4049
  #endif
  #define MODULE_PARAM_PREFIX "rcutree."
  
- #ifndef data_race
- #define data_race(expr)                                                       \
-       ({                                                              \
-               expr;                                                   \
-       })
- #endif
- #ifndef ASSERT_EXCLUSIVE_WRITER
- #define ASSERT_EXCLUSIVE_WRITER(var) do { } while (0)
- #endif
- #ifndef ASSERT_EXCLUSIVE_ACCESS
- #define ASSERT_EXCLUSIVE_ACCESS(var) do { } while (0)
- #endif
  /* Data structures. */
  
  /*
@@@ -178,6 -165,12 +165,12 @@@ module_param(gp_init_delay, int, 0444)
  static int gp_cleanup_delay;
  module_param(gp_cleanup_delay, int, 0444);
  
+ // Add delay to rcu_read_unlock() for strict grace periods.
+ static int rcu_unlock_delay;
+ #ifdef CONFIG_RCU_STRICT_GRACE_PERIOD
+ module_param(rcu_unlock_delay, int, 0444);
+ #endif
  /*
   * This rcu parameter is runtime-read-only. It reflects
   * a minimum allowed number of objects which can be cached
@@@ -468,24 -461,25 +461,25 @@@ static int rcu_is_cpu_rrupt_from_idle(v
        return __this_cpu_read(rcu_data.dynticks_nesting) == 0;
  }
  
- #define DEFAULT_RCU_BLIMIT 10     /* Maximum callbacks per rcu_do_batch ... */
- #define DEFAULT_MAX_RCU_BLIMIT 10000 /* ... even during callback flood. */
+ #define DEFAULT_RCU_BLIMIT (IS_ENABLED(CONFIG_RCU_STRICT_GRACE_PERIOD) ? 1000 : 10)
+                               // Maximum callbacks per rcu_do_batch ...
+ #define DEFAULT_MAX_RCU_BLIMIT 10000 // ... even during callback flood.
  static long blimit = DEFAULT_RCU_BLIMIT;
- #define DEFAULT_RCU_QHIMARK 10000 /* If this many pending, ignore blimit. */
+ #define DEFAULT_RCU_QHIMARK 10000 // If this many pending, ignore blimit.
  static long qhimark = DEFAULT_RCU_QHIMARK;
- #define DEFAULT_RCU_QLOMARK 100   /* Once only this many pending, use blimit. */
+ #define DEFAULT_RCU_QLOMARK 100   // Once only this many pending, use blimit.
  static long qlowmark = DEFAULT_RCU_QLOMARK;
  #define DEFAULT_RCU_QOVLD_MULT 2
  #define DEFAULT_RCU_QOVLD (DEFAULT_RCU_QOVLD_MULT * DEFAULT_RCU_QHIMARK)
- static long qovld = DEFAULT_RCU_QOVLD; /* If this many pending, hammer QS. */
- static long qovld_calc = -1;    /* No pre-initialization lock acquisitions! */
+ static long qovld = DEFAULT_RCU_QOVLD; // If this many pending, hammer QS.
+ static long qovld_calc = -1;    // No pre-initialization lock acquisitions!
  
  module_param(blimit, long, 0444);
  module_param(qhimark, long, 0444);
  module_param(qlowmark, long, 0444);
  module_param(qovld, long, 0444);
  
- static ulong jiffies_till_first_fqs = ULONG_MAX;
+ static ulong jiffies_till_first_fqs = IS_ENABLED(CONFIG_RCU_STRICT_GRACE_PERIOD) ? 0 : ULONG_MAX;
  static ulong jiffies_till_next_fqs = ULONG_MAX;
  static bool rcu_kick_kthreads;
  static int rcu_divisor = 7;
@@@ -1092,11 -1086,6 +1086,6 @@@ static void rcu_disable_urgency_upon_qs
        }
  }
  
- noinstr bool __rcu_is_watching(void)
- {
-       return !rcu_dynticks_curr_cpu_in_eqs();
- }
  /**
   * rcu_is_watching - see if RCU thinks that the current CPU is not idle
   *
@@@ -1229,13 -1218,28 +1218,28 @@@ static int rcu_implicit_dynticks_qs(str
                return 1;
        }
  
-       /* If waiting too long on an offline CPU, complain. */
-       if (!(rdp->grpmask & rcu_rnp_online_cpus(rnp)) &&
-           time_after(jiffies, rcu_state.gp_start + HZ)) {
+       /*
+        * Complain if a CPU that is considered to be offline from RCU's
+        * perspective has not yet reported a quiescent state.  After all,
+        * the offline CPU should have reported a quiescent state during
+        * the CPU-offline process, or, failing that, by rcu_gp_init()
+        * if it ran concurrently with either the CPU going offline or the
+        * last task on a leaf rcu_node structure exiting its RCU read-side
+        * critical section while all CPUs corresponding to that structure
+        * are offline.  This added warning detects bugs in any of these
+        * code paths.
+        *
+        * The rcu_node structure's ->lock is held here, which excludes
+        * the relevant portions the CPU-hotplug code, the grace-period
+        * initialization code, and the rcu_read_unlock() code paths.
+        *
+        * For more detail, please refer to the "Hotplug CPU" section
+        * of RCU's Requirements documentation.
+        */
+       if (WARN_ON_ONCE(!(rdp->grpmask & rcu_rnp_online_cpus(rnp)))) {
                bool onl;
                struct rcu_node *rnp1;
  
-               WARN_ON(1);  /* Offline CPUs are supposed to report QS! */
                pr_info("%s: grp: %d-%d level: %d ->gp_seq %ld ->completedqs %ld\n",
                        __func__, rnp->grplo, rnp->grphi, rnp->level,
                        (long)rnp->gp_seq, (long)rnp->completedqs);
@@@ -1498,9 -1502,10 +1502,10 @@@ static bool rcu_accelerate_cbs(struct r
  
        /* Trace depending on how much we were able to accelerate. */
        if (rcu_segcblist_restempty(&rdp->cblist, RCU_WAIT_TAIL))
-               trace_rcu_grace_period(rcu_state.name, rdp->gp_seq, TPS("AccWaitCB"));
+               trace_rcu_grace_period(rcu_state.name, gp_seq_req, TPS("AccWaitCB"));
        else
-               trace_rcu_grace_period(rcu_state.name, rdp->gp_seq, TPS("AccReadyCB"));
+               trace_rcu_grace_period(rcu_state.name, gp_seq_req, TPS("AccReadyCB"));
        return ret;
  }
  
@@@ -1575,6 -1580,19 +1580,19 @@@ static void __maybe_unused rcu_advance_
        raw_spin_unlock_rcu_node(rnp);
  }
  
+ /*
+  * In CONFIG_RCU_STRICT_GRACE_PERIOD=y kernels, attempt to generate a
+  * quiescent state.  This is intended to be invoked when the CPU notices
+  * a new grace period.
+  */
+ static void rcu_strict_gp_check_qs(void)
+ {
+       if (IS_ENABLED(CONFIG_RCU_STRICT_GRACE_PERIOD)) {
+               rcu_read_lock();
+               rcu_read_unlock();
+       }
+ }
  /*
   * Update CPU-local rcu_data state to record the beginnings and ends of
   * grace periods.  The caller must hold the ->lock of the leaf rcu_node
@@@ -1645,6 -1663,7 +1663,7 @@@ static void note_gp_changes(struct rcu_
        }
        needwake = __note_gp_changes(rnp, rdp);
        raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
+       rcu_strict_gp_check_qs();
        if (needwake)
                rcu_gp_kthread_wake();
  }
@@@ -1682,6 -1701,15 +1701,15 @@@ static void rcu_gp_torture_wait(void
        }
  }
  
+ /*
+  * Handler for on_each_cpu() to invoke the target CPU's RCU core
+  * processing.
+  */
+ static void rcu_strict_gp_boundary(void *unused)
+ {
+       invoke_rcu_core();
+ }
  /*
   * Initialize a new grace period.  Return false if no grace period required.
   */
@@@ -1720,10 -1748,13 +1748,13 @@@ static bool rcu_gp_init(void
        raw_spin_unlock_irq_rcu_node(rnp);
  
        /*
-        * Apply per-leaf buffered online and offline operations to the
-        * rcu_node tree.  Note that this new grace period need not wait
-        * for subsequent online CPUs, and that quiescent-state forcing
-        * will handle subsequent offline CPUs.
+        * Apply per-leaf buffered online and offline operations to
+        * the rcu_node tree. Note that this new grace period need not
+        * wait for subsequent online CPUs, and that RCU hooks in the CPU
+        * offlining path, when combined with checks in this function,
+        * will handle CPUs that are currently going offline or that will
+        * go offline later.  Please also refer to "Hotplug CPU" section
+        * of RCU's Requirements documentation.
         */
        rcu_state.gp_state = RCU_GP_ONOFF;
        rcu_for_each_leaf_node(rnp) {
                WRITE_ONCE(rcu_state.gp_activity, jiffies);
        }
  
+       // If strict, make all CPUs aware of new grace period.
+       if (IS_ENABLED(CONFIG_RCU_STRICT_GRACE_PERIOD))
+               on_each_cpu(rcu_strict_gp_boundary, NULL, 0);
        return true;
  }
  
@@@ -1898,7 -1933,7 +1933,7 @@@ static void rcu_gp_fqs_loop(void
                        break;
                /* If time for quiescent-state forcing, do it. */
                if (!time_after(rcu_state.jiffies_force_qs, jiffies) ||
-                   (gf & RCU_GP_FLAG_FQS)) {
+                   (gf & (RCU_GP_FLAG_FQS | RCU_GP_FLAG_OVLD))) {
                        trace_rcu_grace_period(rcu_state.name, rcu_state.gp_seq,
                                               TPS("fqsstart"));
                        rcu_gp_fqs(first_gp_fqs);
@@@ -2026,6 -2061,10 +2061,10 @@@ static void rcu_gp_cleanup(void
                           rcu_state.gp_flags & RCU_GP_FLAG_INIT);
        }
        raw_spin_unlock_irq_rcu_node(rnp);
+       // If strict, make all CPUs aware of the end of the old grace period.
+       if (IS_ENABLED(CONFIG_RCU_STRICT_GRACE_PERIOD))
+               on_each_cpu(rcu_strict_gp_boundary, NULL, 0);
  }
  
  /*
@@@ -2204,7 -2243,7 +2243,7 @@@ rcu_report_unblock_qs_rnp(struct rcu_no
   * structure.  This must be called from the specified CPU.
   */
  static void
- rcu_report_qs_rdp(int cpu, struct rcu_data *rdp)
+ rcu_report_qs_rdp(struct rcu_data *rdp)
  {
        unsigned long flags;
        unsigned long mask;
                               rcu_segcblist_is_offloaded(&rdp->cblist);
        struct rcu_node *rnp;
  
+       WARN_ON_ONCE(rdp->cpu != smp_processor_id());
        rnp = rdp->mynode;
        raw_spin_lock_irqsave_rcu_node(rnp, flags);
        if (rdp->cpu_no_qs.b.norm || rdp->gp_seq != rnp->gp_seq ||
                return;
        }
        mask = rdp->grpmask;
-       if (rdp->cpu == smp_processor_id())
-               rdp->core_needs_qs = false;
+       rdp->core_needs_qs = false;
        if ((rnp->qsmask & mask) == 0) {
                raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
        } else {
@@@ -2279,7 -2318,7 +2318,7 @@@ rcu_check_quiescent_state(struct rcu_da
         * Tell RCU we are done (but rcu_report_qs_rdp() will be the
         * judge of that).
         */
-       rcu_report_qs_rdp(rdp->cpu, rdp);
+       rcu_report_qs_rdp(rdp);
  }
  
  /*
@@@ -2376,6 -2415,7 +2415,7 @@@ int rcutree_dead_cpu(unsigned int cpu
   */
  static void rcu_do_batch(struct rcu_data *rdp)
  {
+       int div;
        unsigned long flags;
        const bool offloaded = IS_ENABLED(CONFIG_RCU_NOCB_CPU) &&
                               rcu_segcblist_is_offloaded(&rdp->cblist);
        rcu_nocb_lock(rdp);
        WARN_ON_ONCE(cpu_is_offline(smp_processor_id()));
        pending = rcu_segcblist_n_cbs(&rdp->cblist);
-       bl = max(rdp->blimit, pending >> rcu_divisor);
-       if (unlikely(bl > 100))
-               tlimit = local_clock() + rcu_resched_ns;
+       div = READ_ONCE(rcu_divisor);
+       div = div < 0 ? 7 : div > sizeof(long) * 8 - 2 ? sizeof(long) * 8 - 2 : div;
+       bl = max(rdp->blimit, pending >> div);
+       if (unlikely(bl > 100)) {
+               long rrn = READ_ONCE(rcu_resched_ns);
+               rrn = rrn < NSEC_PER_MSEC ? NSEC_PER_MSEC : rrn > NSEC_PER_SEC ? NSEC_PER_SEC : rrn;
+               tlimit = local_clock() + rrn;
+       }
        trace_rcu_batch_start(rcu_state.name,
                              rcu_segcblist_n_cbs(&rdp->cblist), bl);
        rcu_segcblist_extract_done_cbs(&rdp->cblist, &rcl);
@@@ -2547,8 -2593,7 +2593,7 @@@ static void force_qs_rnp(int (*f)(struc
                raw_spin_lock_irqsave_rcu_node(rnp, flags);
                rcu_state.cbovldnext |= !!rnp->cbovldmask;
                if (rnp->qsmask == 0) {
-                       if (!IS_ENABLED(CONFIG_PREEMPT_RCU) ||
-                           rcu_preempt_blocked_readers_cgp(rnp)) {
+                       if (rcu_preempt_blocked_readers_cgp(rnp)) {
                                /*
                                 * No point in scanning bits because they
                                 * are all zero.  But we might need to
@@@ -2616,6 -2661,14 +2661,14 @@@ void rcu_force_quiescent_state(void
  }
  EXPORT_SYMBOL_GPL(rcu_force_quiescent_state);
  
+ // Workqueue handler for an RCU reader for kernels enforcing struct RCU
+ // grace periods.
+ static void strict_work_handler(struct work_struct *work)
+ {
+       rcu_read_lock();
+       rcu_read_unlock();
+ }
  /* Perform RCU core processing work for the current CPU.  */
  static __latent_entropy void rcu_core(void)
  {
        /* Do any needed deferred wakeups of rcuo kthreads. */
        do_nocb_deferred_wakeup(rdp);
        trace_rcu_utilization(TPS("End RCU core"));
+       // If strict GPs, schedule an RCU reader in a clean environment.
+       if (IS_ENABLED(CONFIG_RCU_STRICT_GRACE_PERIOD))
+               queue_work_on(rdp->cpu, rcu_gp_wq, &rdp->strict_work);
  }
  
  static void rcu_core_si(struct softirq_action *h)
@@@ -3022,12 -3079,6 +3079,12 @@@ struct kfree_rcu_cpu_work 
   * @monitor_todo: Tracks whether a @monitor_work delayed work is pending
   * @initialized: The @rcu_work fields have been initialized
   * @count: Number of objects for which GP not started
 + * @bkvcache:
 + *    A simple cache list that contains objects for reuse purpose.
 + *    In order to save some per-cpu space the list is singular.
 + *    Even though it is lockless an access has to be protected by the
 + *    per-cpu lock.
 + * @nr_bkv_objs: number of allocated objects at @bkvcache.
   *
   * This is a per-CPU structure.  The reason that it is not included in
   * the rcu_data structure is to permit this code to be extracted from
@@@ -3043,6 -3094,14 +3100,6 @@@ struct kfree_rcu_cpu 
        bool monitor_todo;
        bool initialized;
        int count;
 -
 -      /*
 -       * A simple cache list that contains objects for
 -       * reuse purpose. In order to save some per-cpu
 -       * space the list is singular. Even though it is
 -       * lockless an access has to be protected by the
 -       * per-cpu lock.
 -       */
        struct llist_head bkvcache;
        int nr_bkv_objs;
  };
@@@ -3443,7 -3502,7 +3500,7 @@@ kfree_rcu_shrink_count(struct shrinker 
        unsigned long count = 0;
  
        /* Snapshot count of all CPUs */
-       for_each_online_cpu(cpu) {
+       for_each_possible_cpu(cpu) {
                struct kfree_rcu_cpu *krcp = per_cpu_ptr(&krc, cpu);
  
                count += READ_ONCE(krcp->count);
@@@ -3458,7 -3517,7 +3515,7 @@@ kfree_rcu_shrink_scan(struct shrinker *
        int cpu, freed = 0;
        unsigned long flags;
  
-       for_each_online_cpu(cpu) {
+       for_each_possible_cpu(cpu) {
                int count;
                struct kfree_rcu_cpu *krcp = per_cpu_ptr(&krc, cpu);
  
@@@ -3491,7 -3550,7 +3548,7 @@@ void __init kfree_rcu_scheduler_running
        int cpu;
        unsigned long flags;
  
-       for_each_online_cpu(cpu) {
+       for_each_possible_cpu(cpu) {
                struct kfree_rcu_cpu *krcp = per_cpu_ptr(&krc, cpu);
  
                raw_spin_lock_irqsave(&krcp->lock, flags);
@@@ -3855,6 -3914,7 +3912,7 @@@ rcu_boot_init_percpu_data(int cpu
  
        /* Set up local state, ensuring consistent view of global state. */
        rdp->grpmask = leaf_node_cpu_bit(rdp->mynode, cpu);
+       INIT_WORK(&rdp->strict_work, strict_work_handler);
        WARN_ON_ONCE(rdp->dynticks_nesting != 1);
        WARN_ON_ONCE(rcu_dynticks_in_eqs(rcu_dynticks_snap(rdp)));
        rdp->rcu_ofl_gp_seq = rcu_state.gp_seq;
@@@ -3973,8 -4033,6 +4031,6 @@@ int rcutree_offline_cpu(unsigned int cp
        return 0;
  }
  
- static DEFINE_PER_CPU(int, rcu_cpu_started);
  /*
   * Mark the specified CPU as being online so that subsequent grace periods
   * (both expedited and normal) will wait on it.  Note that this means that
@@@ -3994,12 -4052,11 +4050,11 @@@ void rcu_cpu_starting(unsigned int cpu
        struct rcu_node *rnp;
        bool newcpu;
  
-       if (per_cpu(rcu_cpu_started, cpu))
+       rdp = per_cpu_ptr(&rcu_data, cpu);
+       if (rdp->cpu_started)
                return;
+       rdp->cpu_started = true;
  
-       per_cpu(rcu_cpu_started, cpu) = 1;
-       rdp = per_cpu_ptr(&rcu_data, cpu);
        rnp = rdp->mynode;
        mask = rdp->grpmask;
        raw_spin_lock_irqsave_rcu_node(rnp, flags);
@@@ -4059,7 -4116,7 +4114,7 @@@ void rcu_report_dead(unsigned int cpu
        raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
        raw_spin_unlock(&rcu_state.ofl_lock);
  
-       per_cpu(rcu_cpu_started, cpu) = 0;
+       rdp->cpu_started = false;
  }
  
  /*
diff --combined kernel/rcu/update.c
index 3e0f4bcb558fd7be7c967177b217aa2a3f147c00,5f7713a27dbb29af7a5c5b3ee0828720750789cd..39334d2d2b37991f1801a9ee8bf179db21d7fb0e
  #endif
  #define MODULE_PARAM_PREFIX "rcupdate."
  
- #ifndef data_race
- #define data_race(expr)                                                       \
-       ({                                                              \
-               expr;                                                   \
-       })
- #endif
- #ifndef ASSERT_EXCLUSIVE_WRITER
- #define ASSERT_EXCLUSIVE_WRITER(var) do { } while (0)
- #endif
- #ifndef ASSERT_EXCLUSIVE_ACCESS
- #define ASSERT_EXCLUSIVE_ACCESS(var) do { } while (0)
- #endif
  #ifndef CONFIG_TINY_RCU
  module_param(rcu_expedited, int, 0);
  module_param(rcu_normal, int, 0);
@@@ -469,7 -456,7 +456,7 @@@ void destroy_rcu_head_on_stack(struct r
  }
  EXPORT_SYMBOL_GPL(destroy_rcu_head_on_stack);
  
 -struct debug_obj_descr rcuhead_debug_descr = {
 +const struct debug_obj_descr rcuhead_debug_descr = {
        .name = "rcu_head",
        .is_static_object = rcuhead_is_static_object,
  };
diff --combined kernel/smp.c
index d9832a17104690c92755b4fa262ae99f2d60e9f6,b25383d16e8e9899ec5d66681c29e7437d788d2b..4d17501433be7fe2a3c70f889dc9c40a4ddc857b
@@@ -20,6 -20,9 +20,9 @@@
  #include <linux/sched.h>
  #include <linux/sched/idle.h>
  #include <linux/hypervisor.h>
+ #include <linux/sched/clock.h>
+ #include <linux/nmi.h>
+ #include <linux/sched/debug.h>
  
  #include "smpboot.h"
  #include "sched/smp.h"
@@@ -96,6 -99,103 +99,103 @@@ void __init call_function_init(void
        smpcfd_prepare_cpu(smp_processor_id());
  }
  
+ #ifdef CONFIG_CSD_LOCK_WAIT_DEBUG
+ static DEFINE_PER_CPU(call_single_data_t *, cur_csd);
+ static DEFINE_PER_CPU(smp_call_func_t, cur_csd_func);
+ static DEFINE_PER_CPU(void *, cur_csd_info);
+ #define CSD_LOCK_TIMEOUT (5ULL * NSEC_PER_SEC)
+ static atomic_t csd_bug_count = ATOMIC_INIT(0);
+ /* Record current CSD work for current CPU, NULL to erase. */
+ static void csd_lock_record(call_single_data_t *csd)
+ {
+       if (!csd) {
+               smp_mb(); /* NULL cur_csd after unlock. */
+               __this_cpu_write(cur_csd, NULL);
+               return;
+       }
+       __this_cpu_write(cur_csd_func, csd->func);
+       __this_cpu_write(cur_csd_info, csd->info);
+       smp_wmb(); /* func and info before csd. */
+       __this_cpu_write(cur_csd, csd);
+       smp_mb(); /* Update cur_csd before function call. */
+                 /* Or before unlock, as the case may be. */
+ }
+ static __always_inline int csd_lock_wait_getcpu(call_single_data_t *csd)
+ {
+       unsigned int csd_type;
+       csd_type = CSD_TYPE(csd);
+       if (csd_type == CSD_TYPE_ASYNC || csd_type == CSD_TYPE_SYNC)
+               return csd->dst; /* Other CSD_TYPE_ values might not have ->dst. */
+       return -1;
+ }
+ /*
+  * Complain if too much time spent waiting.  Note that only
+  * the CSD_TYPE_SYNC/ASYNC types provide the destination CPU,
+  * so waiting on other types gets much less information.
+  */
+ static __always_inline bool csd_lock_wait_toolong(call_single_data_t *csd, u64 ts0, u64 *ts1, int *bug_id)
+ {
+       int cpu = -1;
+       int cpux;
+       bool firsttime;
+       u64 ts2, ts_delta;
+       call_single_data_t *cpu_cur_csd;
+       unsigned int flags = READ_ONCE(csd->flags);
+       if (!(flags & CSD_FLAG_LOCK)) {
+               if (!unlikely(*bug_id))
+                       return true;
+               cpu = csd_lock_wait_getcpu(csd);
+               pr_alert("csd: CSD lock (#%d) got unstuck on CPU#%02d, CPU#%02d released the lock.\n",
+                        *bug_id, raw_smp_processor_id(), cpu);
+               return true;
+       }
+       ts2 = sched_clock();
+       ts_delta = ts2 - *ts1;
+       if (likely(ts_delta <= CSD_LOCK_TIMEOUT))
+               return false;
+       firsttime = !*bug_id;
+       if (firsttime)
+               *bug_id = atomic_inc_return(&csd_bug_count);
+       cpu = csd_lock_wait_getcpu(csd);
+       if (WARN_ONCE(cpu < 0 || cpu >= nr_cpu_ids, "%s: cpu = %d\n", __func__, cpu))
+               cpux = 0;
+       else
+               cpux = cpu;
+       cpu_cur_csd = smp_load_acquire(&per_cpu(cur_csd, cpux)); /* Before func and info. */
+       pr_alert("csd: %s non-responsive CSD lock (#%d) on CPU#%d, waiting %llu ns for CPU#%02d %pS(%ps).\n",
+                firsttime ? "Detected" : "Continued", *bug_id, raw_smp_processor_id(), ts2 - ts0,
+                cpu, csd->func, csd->info);
+       if (cpu_cur_csd && csd != cpu_cur_csd) {
+               pr_alert("\tcsd: CSD lock (#%d) handling prior %pS(%ps) request.\n",
+                        *bug_id, READ_ONCE(per_cpu(cur_csd_func, cpux)),
+                        READ_ONCE(per_cpu(cur_csd_info, cpux)));
+       } else {
+               pr_alert("\tcsd: CSD lock (#%d) %s.\n",
+                        *bug_id, !cpu_cur_csd ? "unresponsive" : "handling this request");
+       }
+       if (cpu >= 0) {
+               if (!trigger_single_cpu_backtrace(cpu))
+                       dump_cpu_task(cpu);
+               if (!cpu_cur_csd) {
+                       pr_alert("csd: Re-sending CSD lock (#%d) IPI from CPU#%02d to CPU#%02d\n", *bug_id, raw_smp_processor_id(), cpu);
+                       arch_send_call_function_single_ipi(cpu);
+               }
+       }
+       dump_stack();
+       *ts1 = ts2;
+       return false;
+ }
  /*
   * csd_lock/csd_unlock used to serialize access to per-cpu csd resources
   *
   * previous function call. For multi-cpu calls its even more interesting
   * as we'll have to ensure no other cpu is observing our csd.
   */
+ static __always_inline void csd_lock_wait(call_single_data_t *csd)
+ {
+       int bug_id = 0;
+       u64 ts0, ts1;
+       ts1 = ts0 = sched_clock();
+       for (;;) {
+               if (csd_lock_wait_toolong(csd, ts0, &ts1, &bug_id))
+                       break;
+               cpu_relax();
+       }
+       smp_acquire__after_ctrl_dep();
+ }
+ #else
+ static void csd_lock_record(call_single_data_t *csd)
+ {
+ }
  static __always_inline void csd_lock_wait(call_single_data_t *csd)
  {
        smp_cond_load_acquire(&csd->flags, !(VAL & CSD_FLAG_LOCK));
  }
+ #endif
  
  static __always_inline void csd_lock(call_single_data_t *csd)
  {
@@@ -166,9 -286,11 +286,11 @@@ static int generic_exec_single(int cpu
                 * We can unlock early even for the synchronous on-stack case,
                 * since we're doing this from the same CPU..
                 */
+               csd_lock_record(csd);
                csd_unlock(csd);
                local_irq_save(flags);
                func(info);
+               csd_lock_record(NULL);
                local_irq_restore(flags);
                return 0;
        }
@@@ -268,8 -390,10 +390,10 @@@ static void flush_smp_call_function_que
                                entry = &csd_next->llist;
                        }
  
+                       csd_lock_record(csd);
                        func(info);
                        csd_unlock(csd);
+                       csd_lock_record(NULL);
                } else {
                        prev = &csd->llist;
                }
                                smp_call_func_t func = csd->func;
                                void *info = csd->info;
  
+                               csd_lock_record(csd);
                                csd_unlock(csd);
                                func(info);
+                               csd_lock_record(NULL);
                        } else if (type == CSD_TYPE_IRQ_WORK) {
                                irq_work_single(csd);
                        }
@@@ -375,6 -501,10 +501,10 @@@ int smp_call_function_single(int cpu, s
  
        csd->func = func;
        csd->info = info;
+ #ifdef CONFIG_CSD_LOCK_WAIT_DEBUG
+       csd->src = smp_processor_id();
+       csd->dst = cpu;
+ #endif
  
        err = generic_exec_single(cpu, csd);
  
@@@ -540,6 -670,10 +670,10 @@@ static void smp_call_function_many_cond
                        csd->flags |= CSD_TYPE_SYNC;
                csd->func = func;
                csd->info = info;
+ #ifdef CONFIG_CSD_LOCK_WAIT_DEBUG
+               csd->src = smp_processor_id();
+               csd->dst = cpu;
+ #endif
                if (llist_add(&csd->llist, &per_cpu(call_single_queue, cpu)))
                        __cpumask_set_cpu(cpu, cfd->cpumask_ipi);
        }
@@@ -741,7 -875,7 +875,7 @@@ EXPORT_SYMBOL(on_each_cpu_mask)
   * for all the required CPUs to finish. This may include the local
   * processor.
   * @cond_func:        A callback function that is passed a cpu id and
 - *            the the info parameter. The function is called
 + *            the info parameter. The function is called
   *            with preemption disabled. The function should
   *            return a blooean value indicating whether to IPI
   *            the specified CPU.
diff --combined lib/Kconfig.debug
index ebe5ab111e65ac2a689024bb3963eebe821672e4,a28850bf9747f19f5fef10c9f54004c90b97089b..279926f5f843e61b837433175a8067077308f9de
@@@ -1367,6 -1367,27 +1367,27 @@@ config WW_MUTEX_SELFTES
          Say M if you want these self tests to build as a module.
          Say N if you are unsure.
  
+ config SCF_TORTURE_TEST
+       tristate "torture tests for smp_call_function*()"
+       depends on DEBUG_KERNEL
+       select TORTURE_TEST
+       help
+         This option provides a kernel module that runs torture tests
+         on the smp_call_function() family of primitives.  The kernel
+         module may be built after the fact on the running kernel to
+         be tested, if desired.
+ config CSD_LOCK_WAIT_DEBUG
+       bool "Debugging for csd_lock_wait(), called from smp_call_function*()"
+       depends on DEBUG_KERNEL
+       depends on 64BIT
+       default n
+       help
+         This option enables debug prints when CPUs are slow to respond
+         to the smp_call_function*() IPI wrappers.  These debug prints
+         include the IPI handler function currently executing (if any)
+         and relevant stack traces.
  endmenu # lock debugging
  
  config TRACE_IRQFLAGS
@@@ -1768,13 -1789,6 +1789,13 @@@ config FAIL_PAGE_ALLO
        help
          Provide fault-injection capability for alloc_pages().
  
 +config FAULT_INJECTION_USERCOPY
 +      bool "Fault injection capability for usercopy functions"
 +      depends on FAULT_INJECTION
 +      help
 +        Provides fault-injection capability to inject failures
 +        in usercopy functions (copy_from_user(), get_user(), ...).
 +
  config FAIL_MAKE_REQUEST
        bool "Fault-injection capability for disk IO"
        depends on FAULT_INJECTION && BLOCK
@@@ -2374,15 -2388,6 +2395,15 @@@ config TEST_HM
  
          If unsure, say N.
  
 +config TEST_FREE_PAGES
 +      tristate "Test freeing pages"
 +      help
 +        Test that a memory leak does not occur due to a race between
 +        freeing a block of pages and a speculative page reference.
 +        Loading this module is safe if your kernel has the bug fixed.
 +        If the bug is not fixed, it will leak gigabytes of memory and
 +        probably OOM your system.
 +
  config TEST_FPU
        tristate "Test floating point operations in kernel space"
        depends on X86 && !KCOV_INSTRUMENT_ALL
This page took 0.182839 seconds and 4 git commands to generate.